From 64f81e92d1ddd325f7f80508eb88590814c070a8 Mon Sep 17 00:00:00 2001 From: huseeiin <122984423+huseeiin@users.noreply.github.com> Date: Mon, 12 Aug 2024 09:03:26 -0400 Subject: [PATCH 01/18] Update astro.ts (#11665) --- packages/astro/src/@types/astro.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts index 64923d91c9..aeef4f0edf 100644 --- a/packages/astro/src/@types/astro.ts +++ b/packages/astro/src/@types/astro.ts @@ -2339,7 +2339,7 @@ export type GetDataEntryInfoReturnType = { data: Record; rawDat export interface AstroAdapterFeatures { /** - * Creates and edge function that will communiate with the Astro middleware + * Creates an edge function that will communiate with the Astro middleware */ edgeMiddleware: boolean; /** From 34da907f3b4fb411024e6d28fdb291fa78116950 Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Tue, 13 Aug 2024 11:20:12 +0100 Subject: [PATCH 02/18] fix: make semicolon optional when detecting `prerender` option (#11678) * fix: make semicolon optional when detecting `prerender` option * trim to remove possible carriage return * Apply suggestions from code review Co-authored-by: Bjorn Lu --------- Co-authored-by: Bjorn Lu --- .changeset/good-birds-clap.md | 5 +++++ packages/astro/src/vite-plugin-scanner/scan.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/good-birds-clap.md diff --git a/.changeset/good-birds-clap.md b/.changeset/good-birds-clap.md new file mode 100644 index 0000000000..1a05c065c6 --- /dev/null +++ b/.changeset/good-birds-clap.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixes a case where omitting a semicolon and line ending with carriage return - CRLF - in the `prerender` option could throw an error. diff --git a/packages/astro/src/vite-plugin-scanner/scan.ts b/packages/astro/src/vite-plugin-scanner/scan.ts index f447a1f28f..b9f61e3b83 100644 --- a/packages/astro/src/vite-plugin-scanner/scan.ts +++ b/packages/astro/src/vite-plugin-scanner/scan.ts @@ -65,7 +65,7 @@ export async function scan( .trim(); // For a given export, check the value of the first non-whitespace token. // Basically extract the `true` from the statement `export const prerender = true` - const suffix = code.slice(endOfLocalName).trim().replace(/=/, '').trim().split(/[;\n]/)[0]; + const suffix = code.slice(endOfLocalName).trim().replace(/=/, '').trim().split(/[;\n\r]/)[0].trim(); if (prefix !== 'const' || !(isTruthy(suffix) || isFalsy(suffix))) { throw new AstroError({ ...AstroErrorData.InvalidPrerenderExport, From 242be516183e689fd93d3f2596e8cc807ec0a6a2 Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Tue, 13 Aug 2024 10:21:00 +0000 Subject: [PATCH 03/18] [ci] format --- packages/astro/src/vite-plugin-scanner/scan.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/astro/src/vite-plugin-scanner/scan.ts b/packages/astro/src/vite-plugin-scanner/scan.ts index b9f61e3b83..52b2d6bd82 100644 --- a/packages/astro/src/vite-plugin-scanner/scan.ts +++ b/packages/astro/src/vite-plugin-scanner/scan.ts @@ -65,7 +65,13 @@ export async function scan( .trim(); // For a given export, check the value of the first non-whitespace token. // Basically extract the `true` from the statement `export const prerender = true` - const suffix = code.slice(endOfLocalName).trim().replace(/=/, '').trim().split(/[;\n\r]/)[0].trim(); + const suffix = code + .slice(endOfLocalName) + .trim() + .replace(/=/, '') + .trim() + .split(/[;\n\r]/)[0] + .trim(); if (prefix !== 'const' || !(isTruthy(suffix) || isFalsy(suffix))) { throw new AstroError({ ...AstroErrorData.InvalidPrerenderExport, From dc0a297e2a4bea3db8310cc98c51b2f94ede5fde Mon Sep 17 00:00:00 2001 From: Billy Le Date: Tue, 13 Aug 2024 18:21:12 +0800 Subject: [PATCH 04/18] Set action input default values from zod if FormData key is not present (#11655) * fix: remove duplicate while loop. use correct boolean values on validation * chore: rephrase changeset --- .changeset/nervous-garlics-beam.md | 5 ++ .../src/actions/runtime/virtual/server.ts | 16 +++++- .../units/actions/form-data-to-object.test.js | 57 +++++++++++++++++++ 3 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 .changeset/nervous-garlics-beam.md diff --git a/.changeset/nervous-garlics-beam.md b/.changeset/nervous-garlics-beam.md new file mode 100644 index 0000000000..2e5413d74c --- /dev/null +++ b/.changeset/nervous-garlics-beam.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixes Astro Actions `input` validation when using `default` values with a form input. diff --git a/packages/astro/src/actions/runtime/virtual/server.ts b/packages/astro/src/actions/runtime/virtual/server.ts index 7aea22b2fc..e334cb632c 100644 --- a/packages/astro/src/actions/runtime/virtual/server.ts +++ b/packages/astro/src/actions/runtime/virtual/server.ts @@ -134,11 +134,21 @@ export function formDataToObject( const obj: Record = {}; for (const [key, baseValidator] of Object.entries(schema.shape)) { let validator = baseValidator; - while (validator instanceof z.ZodOptional || validator instanceof z.ZodNullable) { + + while (validator instanceof z.ZodOptional || validator instanceof z.ZodNullable || validator instanceof z.ZodDefault) { + // use default value when key is undefined + if(validator instanceof z.ZodDefault && !formData.has(key)) { + obj[key] = validator._def.defaultValue(); + } validator = validator._def.innerType; } - if (validator instanceof z.ZodBoolean) { - obj[key] = formData.has(key); + + if (!formData.has(key) && key in obj) { + // continue loop if form input is not found and default value is set + continue; + } else if (validator instanceof z.ZodBoolean) { + const val = formData.get(key); + obj[key] = val === 'true' ? true : val === 'false' ? false : formData.has(key) } else if (validator instanceof z.ZodArray) { obj[key] = handleFormDataGetAll(key, formData, validator); } else { diff --git a/packages/astro/test/units/actions/form-data-to-object.test.js b/packages/astro/test/units/actions/form-data-to-object.test.js index 6cce8f3d7d..b27d50c8c3 100644 --- a/packages/astro/test/units/actions/form-data-to-object.test.js +++ b/packages/astro/test/units/actions/form-data-to-object.test.js @@ -46,15 +46,24 @@ describe('formDataToObject', () => { it('should handle boolean checks', () => { const formData = new FormData(); formData.set('isCool', 'yes'); + formData.set('isTrue', true) + formData.set("isFalse", false); + formData.set("falseString", 'false') const input = z.object({ isCool: z.boolean(), isNotCool: z.boolean(), + isTrue: z.boolean(), + isFalse: z.boolean(), + falseString: z.boolean(), }); const res = formDataToObject(formData, input); assert.equal(res.isCool, true); assert.equal(res.isNotCool, false); + assert.equal(res.isTrue, true); + assert.equal(res.isFalse, false); + assert.equal(res.falseString, false) }); it('should handle optional values', () => { @@ -91,6 +100,37 @@ describe('formDataToObject', () => { assert.equal(res.age, null); }); + it('should handle zod default values', () => { + const formData = new FormData(); + + const input = z.object({ + name: z.string().default("test"), + email: z.string().default('test@test.test'), + favoriteNumbers: z.array(z.number()).default([1,2]) + }); + + const res = formDataToObject(formData, input); + assert.equal(res.name, 'test'); + assert.equal(res.email, 'test@test.test'); + assert.deepEqual(res.favoriteNumbers, [1, 2]); + }) + + it('should handle zod chaining of optional, default, and nullish values', () => { + const formData = new FormData(); + formData.set('email', 'test@test.test') + + const input = z.object({ + name: z.string().default("test").optional(), + email: z.string().optional().nullish(), + favoriteNumbers: z.array(z.number()).default([1,2]).nullish().optional() + }); + + const res = formDataToObject(formData, input); + assert.equal(res.name, 'test'); + assert.equal(res.email, 'test@test.test'); + assert.deepEqual(res.favoriteNumbers, [1, 2]) + }) + it('should handle File objects', () => { const formData = new FormData(); formData.set('file', new File([''], 'test.txt')); @@ -135,4 +175,21 @@ describe('formDataToObject', () => { assert.ok(Array.isArray(res.age), 'age is not an array'); assert.deepEqual(res.age.sort(), [25, 30, 35]); }); + + it('should handle an array of File objects', () => { + const formData = new FormData(); + const file1 = new File([''], 'test1.txt'); + const file2 = new File([''], 'test2.txt') + formData.append('files', file1); + formData.append('files', file2); + + const input = z.object({ + files: z.array(z.instanceof(File)) + }); + + const res = formDataToObject(formData, input); + + assert.equal(res.files instanceof Array, true); + assert.deepEqual(res.files, [file1, file2]) + }); }); From 5c9183a8ee9918937cd866a150af99d12987b8f7 Mon Sep 17 00:00:00 2001 From: Billy Le Date: Tue, 13 Aug 2024 10:22:03 +0000 Subject: [PATCH 05/18] [ci] format --- .../src/actions/runtime/virtual/server.ts | 20 ++++++----- .../units/actions/form-data-to-object.test.js | 34 +++++++++---------- 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/packages/astro/src/actions/runtime/virtual/server.ts b/packages/astro/src/actions/runtime/virtual/server.ts index e334cb632c..9bc387d6b8 100644 --- a/packages/astro/src/actions/runtime/virtual/server.ts +++ b/packages/astro/src/actions/runtime/virtual/server.ts @@ -135,20 +135,24 @@ export function formDataToObject( for (const [key, baseValidator] of Object.entries(schema.shape)) { let validator = baseValidator; - while (validator instanceof z.ZodOptional || validator instanceof z.ZodNullable || validator instanceof z.ZodDefault) { + while ( + validator instanceof z.ZodOptional || + validator instanceof z.ZodNullable || + validator instanceof z.ZodDefault + ) { // use default value when key is undefined - if(validator instanceof z.ZodDefault && !formData.has(key)) { - obj[key] = validator._def.defaultValue(); + if (validator instanceof z.ZodDefault && !formData.has(key)) { + obj[key] = validator._def.defaultValue(); } validator = validator._def.innerType; } - if (!formData.has(key) && key in obj) { + if (!formData.has(key) && key in obj) { // continue loop if form input is not found and default value is set - continue; - } else if (validator instanceof z.ZodBoolean) { - const val = formData.get(key); - obj[key] = val === 'true' ? true : val === 'false' ? false : formData.has(key) + continue; + } else if (validator instanceof z.ZodBoolean) { + const val = formData.get(key); + obj[key] = val === 'true' ? true : val === 'false' ? false : formData.has(key); } else if (validator instanceof z.ZodArray) { obj[key] = handleFormDataGetAll(key, formData, validator); } else { diff --git a/packages/astro/test/units/actions/form-data-to-object.test.js b/packages/astro/test/units/actions/form-data-to-object.test.js index b27d50c8c3..1369093056 100644 --- a/packages/astro/test/units/actions/form-data-to-object.test.js +++ b/packages/astro/test/units/actions/form-data-to-object.test.js @@ -46,9 +46,9 @@ describe('formDataToObject', () => { it('should handle boolean checks', () => { const formData = new FormData(); formData.set('isCool', 'yes'); - formData.set('isTrue', true) - formData.set("isFalse", false); - formData.set("falseString", 'false') + formData.set('isTrue', true); + formData.set('isFalse', false); + formData.set('falseString', 'false'); const input = z.object({ isCool: z.boolean(), @@ -63,7 +63,7 @@ describe('formDataToObject', () => { assert.equal(res.isNotCool, false); assert.equal(res.isTrue, true); assert.equal(res.isFalse, false); - assert.equal(res.falseString, false) + assert.equal(res.falseString, false); }); it('should handle optional values', () => { @@ -102,34 +102,34 @@ describe('formDataToObject', () => { it('should handle zod default values', () => { const formData = new FormData(); - + const input = z.object({ - name: z.string().default("test"), + name: z.string().default('test'), email: z.string().default('test@test.test'), - favoriteNumbers: z.array(z.number()).default([1,2]) + favoriteNumbers: z.array(z.number()).default([1, 2]), }); const res = formDataToObject(formData, input); assert.equal(res.name, 'test'); assert.equal(res.email, 'test@test.test'); assert.deepEqual(res.favoriteNumbers, [1, 2]); - }) + }); it('should handle zod chaining of optional, default, and nullish values', () => { const formData = new FormData(); - formData.set('email', 'test@test.test') - + formData.set('email', 'test@test.test'); + const input = z.object({ - name: z.string().default("test").optional(), + name: z.string().default('test').optional(), email: z.string().optional().nullish(), - favoriteNumbers: z.array(z.number()).default([1,2]).nullish().optional() + favoriteNumbers: z.array(z.number()).default([1, 2]).nullish().optional(), }); const res = formDataToObject(formData, input); assert.equal(res.name, 'test'); assert.equal(res.email, 'test@test.test'); - assert.deepEqual(res.favoriteNumbers, [1, 2]) - }) + assert.deepEqual(res.favoriteNumbers, [1, 2]); + }); it('should handle File objects', () => { const formData = new FormData(); @@ -179,17 +179,17 @@ describe('formDataToObject', () => { it('should handle an array of File objects', () => { const formData = new FormData(); const file1 = new File([''], 'test1.txt'); - const file2 = new File([''], 'test2.txt') + const file2 = new File([''], 'test2.txt'); formData.append('files', file1); formData.append('files', file2); const input = z.object({ - files: z.array(z.instanceof(File)) + files: z.array(z.instanceof(File)), }); const res = formDataToObject(formData, input); assert.equal(res.files instanceof Array, true); - assert.deepEqual(res.files, [file1, file2]) + assert.deepEqual(res.files, [file1, file2]); }); }); From 932bd2eb07f1d7cb2c91e7e7d31fe84c919e302b Mon Sep 17 00:00:00 2001 From: Matthew Phillips Date: Tue, 13 Aug 2024 08:58:47 -0400 Subject: [PATCH 06/18] Encrypt server islands props (#11535) * Encrypt server islands props * Comment on the hex algo * Use @oslojs/encoding * Rename functions * Add base to test * Remove old tests no longer valid * Run test locally * Make sure adapters run before manifest * Add a changeset * Adjust test adapter * don't assume adapter is at root * Add a changeset * Updates on review comments * Update oslo * Add better description of Node adapter change --- .changeset/hip-toys-shake.md | 9 ++ .changeset/little-humans-act.md | 9 ++ .../src/components/Island.astro | 2 + .../server-islands/src/pages/index.astro | 2 +- packages/astro/e2e/server-islands.test.js | 12 +++ packages/astro/package.json | 1 + packages/astro/src/@types/astro.ts | 1 + packages/astro/src/container/index.ts | 2 + packages/astro/src/core/app/common.ts | 3 + packages/astro/src/core/app/index.ts | 12 +-- packages/astro/src/core/app/types.ts | 3 + packages/astro/src/core/build/generate.ts | 3 + packages/astro/src/core/build/index.ts | 2 + .../src/core/build/plugins/plugin-manifest.ts | 6 +- .../src/core/build/plugins/plugin-ssr.ts | 7 +- packages/astro/src/core/build/static-build.ts | 2 + packages/astro/src/core/build/types.ts | 1 + packages/astro/src/core/encryption.ts | 88 +++++++++++++++++++ packages/astro/src/core/render-context.ts | 2 + .../astro/src/core/server-islands/endpoint.ts | 9 +- .../runtime/server/render/server-islands.ts | 7 +- .../src/vite-plugin-astro-server/plugin.ts | 3 + packages/astro/test/server-islands.test.js | 32 ------- packages/astro/test/test-adapter.js | 2 +- .../integrations/node/src/serve-static.ts | 9 +- packages/integrations/node/src/server.ts | 3 +- .../integrations/node/test/errors.test.js | 4 +- pnpm-lock.yaml | 11 ++- 28 files changed, 199 insertions(+), 48 deletions(-) create mode 100644 .changeset/hip-toys-shake.md create mode 100644 .changeset/little-humans-act.md create mode 100644 packages/astro/src/core/encryption.ts diff --git a/.changeset/hip-toys-shake.md b/.changeset/hip-toys-shake.md new file mode 100644 index 0000000000..dcbe9c89d4 --- /dev/null +++ b/.changeset/hip-toys-shake.md @@ -0,0 +1,9 @@ +--- +'@astrojs/node': patch +--- + +Move polyfills up before awaiting the env module in the Node.js adapter. + +Previously the env setting was happening before the polyfills were applied. This means that if the Astro env code (or any dependencies) depended on `crypto`, it would not be polyfilled in time. + +Polyfills should be applied ASAP to prevent races. This moves it to the top of the Node adapter. diff --git a/.changeset/little-humans-act.md b/.changeset/little-humans-act.md new file mode 100644 index 0000000000..a9dd54fcee --- /dev/null +++ b/.changeset/little-humans-act.md @@ -0,0 +1,9 @@ +--- +'astro': patch +--- + +Encrypt server island props + +Server island props are not encrypted with a key generated at build-time. This is intended to prevent accidentally leaking secrets caused by exposing secrets through prop-passing. This is not intended to allow a server island to be trusted to skip authentication, or to protect against any other vulnerabilities other than secret leakage. + +See the RFC for an explanation: https://github.com/withastro/roadmap/blob/server-islands/proposals/server-islands.md#props-serialization diff --git a/packages/astro/e2e/fixtures/server-islands/src/components/Island.astro b/packages/astro/e2e/fixtures/server-islands/src/components/Island.astro index b7c376f517..5eab0dc4df 100644 --- a/packages/astro/e2e/fixtures/server-islands/src/components/Island.astro +++ b/packages/astro/e2e/fixtures/server-islands/src/components/Island.astro @@ -1,4 +1,6 @@ --- +const { secret } = Astro.props; ---

I am an island

+

{secret}

diff --git a/packages/astro/e2e/fixtures/server-islands/src/pages/index.astro b/packages/astro/e2e/fixtures/server-islands/src/pages/index.astro index 998d6c0740..de9a6c456f 100644 --- a/packages/astro/e2e/fixtures/server-islands/src/pages/index.astro +++ b/packages/astro/e2e/fixtures/server-islands/src/pages/index.astro @@ -8,7 +8,7 @@ import Self from '../components/Self.astro'; - +

children

diff --git a/packages/astro/e2e/server-islands.test.js b/packages/astro/e2e/server-islands.test.js index b036eaafa3..b37495b288 100644 --- a/packages/astro/e2e/server-islands.test.js +++ b/packages/astro/e2e/server-islands.test.js @@ -38,6 +38,12 @@ test.describe('Server islands', () => { await expect(el, 'element rendered').toBeVisible(); }); + test('Props are encrypted', async ({ page, astro }) => { + await page.goto(astro.resolveUrl('/base/')); + let el = page.locator('#secret'); + await expect(el).toHaveText('test'); + }); + test('Self imported module can server defer', async ({ page, astro }) => { await page.goto(astro.resolveUrl('/base/')); let el = page.locator('.now'); @@ -69,5 +75,11 @@ test.describe('Server islands', () => { await expect(el, 'element rendered').toBeVisible(); await expect(el, 'should have content').toHaveText('I am an island'); }); + + test('Props are encrypted', async ({ page, astro }) => { + await page.goto(astro.resolveUrl('/')); + let el = page.locator('#secret'); + await expect(el).toHaveText('test'); + }); }); }); diff --git a/packages/astro/package.json b/packages/astro/package.json index 64ec709d59..602b1f7aed 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -132,6 +132,7 @@ "@babel/plugin-transform-react-jsx": "^7.25.2", "@babel/traverse": "^7.25.3", "@babel/types": "^7.25.2", + "@oslojs/encoding": "^0.4.1", "@types/babel__core": "^7.20.5", "@types/cookie": "^0.6.0", "acorn": "^8.12.1", diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts index aeef4f0edf..e9c42954a1 100644 --- a/packages/astro/src/@types/astro.ts +++ b/packages/astro/src/@types/astro.ts @@ -3283,6 +3283,7 @@ export interface SSRResult { cookies: AstroCookies | undefined; serverIslandNameMap: Map; trailingSlash: AstroConfig['trailingSlash']; + key: Promise; _metadata: SSRMetadata; } diff --git a/packages/astro/src/container/index.ts b/packages/astro/src/container/index.ts index 292b49ece1..d9ad61f256 100644 --- a/packages/astro/src/container/index.ts +++ b/packages/astro/src/container/index.ts @@ -25,6 +25,7 @@ import { getParts, validateSegment } from '../core/routing/manifest/create.js'; import { getPattern } from '../core/routing/manifest/pattern.js'; import type { AstroComponentFactory } from '../runtime/server/index.js'; import { ContainerPipeline } from './pipeline.js'; +import { createKey } from '../core/encryption.js'; /** * Options to be passed when rendering a route @@ -130,6 +131,7 @@ function createManifest( checkOrigin: false, middleware: manifest?.middleware ?? middleware ?? defaultMiddleware, experimentalEnvGetSecretEnabled: false, + key: createKey(), }; } diff --git a/packages/astro/src/core/app/common.ts b/packages/astro/src/core/app/common.ts index 19bbee1954..7cfe1c5dd7 100644 --- a/packages/astro/src/core/app/common.ts +++ b/packages/astro/src/core/app/common.ts @@ -1,3 +1,4 @@ +import { decodeKey } from '../encryption.js'; import { deserializeRouteData } from '../routing/manifest/serialization.js'; import type { RouteInfo, SSRManifest, SerializedSSRManifest } from './types.js'; @@ -18,6 +19,7 @@ export function deserializeManifest(serializedManifest: SerializedSSRManifest): const inlinedScripts = new Map(serializedManifest.inlinedScripts); const clientDirectives = new Map(serializedManifest.clientDirectives); const serverIslandNameMap = new Map(serializedManifest.serverIslandNameMap); + const key = decodeKey(serializedManifest.key); return { // in case user middleware exists, this no-op middleware will be reassigned (see plugin-ssr.ts) @@ -31,5 +33,6 @@ export function deserializeManifest(serializedManifest: SerializedSSRManifest): clientDirectives, routes, serverIslandNameMap, + key, }; } diff --git a/packages/astro/src/core/app/index.ts b/packages/astro/src/core/app/index.ts index d19a4da7d3..7ccf219c88 100644 --- a/packages/astro/src/core/app/index.ts +++ b/packages/astro/src/core/app/index.ts @@ -416,13 +416,15 @@ export class App { `${this.#baseWithoutTrailingSlash}/${status}${maybeDotHtml}`, url, ); - const response = await fetch(statusURL.toString()); + if(statusURL.toString() !== request.url) { + const response = await fetch(statusURL.toString()); - // response for /404.html and 500.html is 200, which is not meaningful - // so we create an override - const override = { status }; + // response for /404.html and 500.html is 200, which is not meaningful + // so we create an override + const override = { status }; - return this.#mergeResponses(response, originalResponse, override); + return this.#mergeResponses(response, originalResponse, override); + } } const mod = await this.#pipeline.getModuleForRoute(errorRouteData); try { diff --git a/packages/astro/src/core/app/types.ts b/packages/astro/src/core/app/types.ts index 2e4e8d8057..00e37dacd9 100644 --- a/packages/astro/src/core/app/types.ts +++ b/packages/astro/src/core/app/types.ts @@ -66,6 +66,7 @@ export type SSRManifest = { pageMap?: Map; serverIslandMap?: Map Promise>; serverIslandNameMap?: Map; + key: Promise; i18n: SSRManifestI18n | undefined; middleware: MiddlewareHandler; checkOrigin: boolean; @@ -90,6 +91,7 @@ export type SerializedSSRManifest = Omit< | 'inlinedScripts' | 'clientDirectives' | 'serverIslandNameMap' + | 'key' > & { routes: SerializedRouteInfo[]; assets: string[]; @@ -97,4 +99,5 @@ export type SerializedSSRManifest = Omit< inlinedScripts: [string, string][]; clientDirectives: [string, string][]; serverIslandNameMap: [string, string][]; + key: string; }; diff --git a/packages/astro/src/core/build/generate.ts b/packages/astro/src/core/build/generate.ts index 5897ba7e4d..329530154d 100644 --- a/packages/astro/src/core/build/generate.ts +++ b/packages/astro/src/core/build/generate.ts @@ -77,6 +77,7 @@ export async function generatePages(options: StaticBuildOptions, internals: Buil internals, renderers.renderers as SSRLoadedRenderer[], middleware, + options.key, ); } const pipeline = BuildPipeline.create({ internals, manifest, options }); @@ -521,6 +522,7 @@ function createBuildManifest( internals: BuildInternals, renderers: SSRLoadedRenderer[], middleware: MiddlewareHandler, + key: Promise ): SSRManifest { let i18nManifest: SSRManifestI18n | undefined = undefined; if (settings.config.i18n) { @@ -551,6 +553,7 @@ function createBuildManifest( buildFormat: settings.config.build.format, middleware, checkOrigin: settings.config.security?.checkOrigin ?? false, + key, experimentalEnvGetSecretEnabled: false, }; } diff --git a/packages/astro/src/core/build/index.ts b/packages/astro/src/core/build/index.ts index 8df72d8b22..ecc97161fc 100644 --- a/packages/astro/src/core/build/index.ts +++ b/packages/astro/src/core/build/index.ts @@ -33,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 { createKey } from '../encryption.js'; export interface BuildOptions { /** @@ -201,6 +202,7 @@ class AstroBuilder { pageNames, teardownCompiler: this.teardownCompiler, viteConfig, + key: createKey(), }; const { internals, ssrOutputChunkNames, contentFileNames } = await viteBuild(opts); diff --git a/packages/astro/src/core/build/plugins/plugin-manifest.ts b/packages/astro/src/core/build/plugins/plugin-manifest.ts index bb1add5b45..098c5528d0 100644 --- a/packages/astro/src/core/build/plugins/plugin-manifest.ts +++ b/packages/astro/src/core/build/plugins/plugin-manifest.ts @@ -20,6 +20,7 @@ import { type BuildInternals, cssOrder, mergeInlineCss } from '../internal.js'; import type { AstroBuildPlugin } from '../plugin.js'; import type { StaticBuildOptions } from '../types.js'; import { makePageDataKey } from './util.js'; +import { encodeKey } from '../../encryption.js'; const manifestReplace = '@@ASTRO_MANIFEST_REPLACE@@'; const replaceExp = new RegExp(`['"]${manifestReplace}['"]`, 'g'); @@ -132,7 +133,8 @@ async function createManifest( } const staticFiles = internals.staticFiles; - return buildManifest(buildOpts, internals, Array.from(staticFiles)); + const encodedKey = await encodeKey(await buildOpts.key); + return buildManifest(buildOpts, internals, Array.from(staticFiles), encodedKey); } /** @@ -150,6 +152,7 @@ function buildManifest( opts: StaticBuildOptions, internals: BuildInternals, staticFiles: string[], + encodedKey: string, ): SerializedSSRManifest { const { settings } = opts; @@ -277,6 +280,7 @@ function buildManifest( buildFormat: settings.config.build.format, checkOrigin: settings.config.security?.checkOrigin ?? false, serverIslandNameMap: Array.from(settings.serverIslandNameMap), + key: encodedKey, experimentalEnvGetSecretEnabled: settings.config.experimental.env !== undefined && (settings.adapter?.supportedAstroFeatures.envGetSecret ?? 'unsupported') !== 'unsupported', diff --git a/packages/astro/src/core/build/plugins/plugin-ssr.ts b/packages/astro/src/core/build/plugins/plugin-ssr.ts index f395141a0f..201c48a5e9 100644 --- a/packages/astro/src/core/build/plugins/plugin-ssr.ts +++ b/packages/astro/src/core/build/plugins/plugin-ssr.ts @@ -37,6 +37,11 @@ function vitePluginSSR( inputs.add(getVirtualModulePageName(ASTRO_PAGE_MODULE_ID, pageData.component)); } + const adapterServerEntrypoint = options.settings.adapter?.serverEntrypoint; + if(adapterServerEntrypoint) { + inputs.add(adapterServerEntrypoint); + } + inputs.add(SSR_VIRTUAL_MODULE_ID); return addRollupInput(opts, Array.from(inputs)); }, @@ -246,8 +251,8 @@ function generateSSRCode(settings: AstroSettings, adapter: AstroAdapter, middlew const imports = [ `import { renderers } from '${RENDERERS_MODULE_ID}';`, - `import { manifest as defaultManifest } from '${SSR_MANIFEST_VIRTUAL_MODULE_ID}';`, `import * as serverEntrypointModule from '${adapter.serverEntrypoint}';`, + `import { manifest as defaultManifest } from '${SSR_MANIFEST_VIRTUAL_MODULE_ID}';`, edgeMiddleware ? `` : `import { onRequest as middleware } from '${middlewareId}';`, settings.config.experimental.serverIslands ? `import { serverIslandMap } from '${VIRTUAL_ISLAND_MAP_ID}';` diff --git a/packages/astro/src/core/build/static-build.ts b/packages/astro/src/core/build/static-build.ts index 8626019562..7e2272dde6 100644 --- a/packages/astro/src/core/build/static-build.ts +++ b/packages/astro/src/core/build/static-build.ts @@ -255,6 +255,8 @@ async function ssrBuild( return 'renderers.mjs'; } else if (chunkInfo.facadeModuleId === RESOLVED_SSR_MANIFEST_VIRTUAL_MODULE_ID) { return 'manifest_[hash].mjs'; + } else if (chunkInfo.facadeModuleId === settings.adapter?.serverEntrypoint) { + return 'adapter_[hash].mjs'; } else if ( settings.config.experimental.contentCollectionCache && chunkInfo.facadeModuleId && diff --git a/packages/astro/src/core/build/types.ts b/packages/astro/src/core/build/types.ts index 11724b8244..572140ef66 100644 --- a/packages/astro/src/core/build/types.ts +++ b/packages/astro/src/core/build/types.ts @@ -42,6 +42,7 @@ export interface StaticBuildOptions { pageNames: string[]; viteConfig: InlineConfig; teardownCompiler: boolean; + key: Promise; } type ImportComponentInstance = () => Promise; diff --git a/packages/astro/src/core/encryption.ts b/packages/astro/src/core/encryption.ts new file mode 100644 index 0000000000..f849662972 --- /dev/null +++ b/packages/astro/src/core/encryption.ts @@ -0,0 +1,88 @@ +import { encodeBase64, decodeBase64, decodeHex, encodeHexUpperCase } from '@oslojs/encoding'; + +// Chose this algorithm for no particular reason, can change. +// This algo does check against text manipulation though. See +// https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/encrypt#aes-gcm +const ALGORITHM = 'AES-GCM'; + +/** + * Creates a CryptoKey object that can be used to encrypt any string. + */ +export async function createKey() { + const key = await crypto.subtle.generateKey( + { + name: ALGORITHM, + length: 256, + }, + true, + ['encrypt', 'decrypt'] + ); + return key; +} + +/** + * Takes a key that has been serialized to an array of bytes and returns a CryptoKey + */ +export async function importKey(bytes: Uint8Array): Promise { + const key = await crypto.subtle.importKey('raw', bytes, ALGORITHM, true, ['encrypt', 'decrypt']); + return key; +} + +/** + * Encodes a CryptoKey to base64 string, so that it can be embedded in JSON / JavaScript + */ +export async function encodeKey(key: CryptoKey) { + const exported = await crypto.subtle.exportKey('raw', key); + const encodedKey = encodeBase64(new Uint8Array(exported)); + return encodedKey; +} + +/** + * Decodes a base64 string into bytes and then imports the key. + */ +export async function decodeKey(encoded: string): Promise { + const bytes = decodeBase64(encoded); + return crypto.subtle.importKey('raw', bytes, ALGORITHM, true, ['encrypt', 'decrypt']); +} + +const encoder = new TextEncoder(); +const decoder = new TextDecoder(); +// The length of the initialization vector +// See https://developer.mozilla.org/en-US/docs/Web/API/AesGcmParams +const IV_LENGTH = 24; + +/** + * Using a CryptoKey, encrypt a string into a base64 string. + */ +export async function encryptString(key: CryptoKey, raw: string) { + const iv = crypto.getRandomValues(new Uint8Array(IV_LENGTH / 2)); + const data = encoder.encode(raw); + const buffer = await crypto.subtle.encrypt( + { + name: ALGORITHM, + iv, + }, + key, + data + ); + // iv is 12, hex brings it to 24 + return encodeHexUpperCase(iv) + encodeBase64(new Uint8Array(buffer)); +} + +/** + * Takes a base64 encoded string, decodes it and returns the decrypted text. + */ +export async function decryptString(key: CryptoKey, encoded: string) { + const iv = decodeHex(encoded.slice(0, IV_LENGTH)); + const dataArray = decodeBase64(encoded.slice(IV_LENGTH)); + const decryptedBuffer = await crypto.subtle.decrypt( + { + name: ALGORITHM, + iv, + }, + key, + dataArray + ); + const decryptedString = decoder.decode(decryptedBuffer); + return decryptedString; +} diff --git a/packages/astro/src/core/render-context.ts b/packages/astro/src/core/render-context.ts index a572215744..653d853c97 100644 --- a/packages/astro/src/core/render-context.ts +++ b/packages/astro/src/core/render-context.ts @@ -318,6 +318,7 @@ export class RenderContext { ? deserializeActionResult(this.locals._actionPayload.actionResult) : undefined; + // Create the result object that will be passed into the renderPage function. // This object starts here as an empty shell (not yet the result) but then // calling the render() function will populate the object with scripts, styles, etc. @@ -344,6 +345,7 @@ export class RenderContext { styles, actionResult, serverIslandNameMap: manifest.serverIslandNameMap ?? new Map(), + key: manifest.key, trailingSlash: manifest.trailingSlash, _metadata: { hasHydrationScript: false, diff --git a/packages/astro/src/core/server-islands/endpoint.ts b/packages/astro/src/core/server-islands/endpoint.ts index 638e228829..fc87202ff3 100644 --- a/packages/astro/src/core/server-islands/endpoint.ts +++ b/packages/astro/src/core/server-islands/endpoint.ts @@ -11,6 +11,7 @@ import { renderTemplate, } from '../../runtime/server/index.js'; import { createSlotValueFromString } from '../../runtime/server/render/slot.js'; +import { decryptString } from '../encryption.js'; import { getPattern } from '../routing/manifest/pattern.js'; export const SERVER_ISLAND_ROUTE = '/_server-islands/[name]'; @@ -48,7 +49,7 @@ export function ensureServerIslandRoute(config: ConfigFields, routeManifest: Man type RenderOptions = { componentExport: string; - props: Record; + encryptedProps: string; slots: Record; }; @@ -74,7 +75,11 @@ export function createEndpoint(manifest: SSRManifest) { }); } - const props = data.props; + const key = await manifest.key; + const encryptedProps = data.encryptedProps; + const propString = await decryptString(key, encryptedProps); + const props = JSON.parse(propString); + const componentModule = await imp(); const Component = (componentModule as any)[data.componentExport]; diff --git a/packages/astro/src/runtime/server/render/server-islands.ts b/packages/astro/src/runtime/server/render/server-islands.ts index c2263addaa..46f3fd6b21 100644 --- a/packages/astro/src/runtime/server/render/server-islands.ts +++ b/packages/astro/src/runtime/server/render/server-islands.ts @@ -1,8 +1,10 @@ +import { encryptString } from '../../../core/encryption.js'; import type { SSRResult } from '../../../@types/astro.js'; import { renderChild } from './any.js'; import type { RenderInstance } from './common.js'; import { type ComponentSlots, renderSlotToString } from './slot.js'; + const internalProps = new Set([ 'server:component-path', 'server:component-export', @@ -59,6 +61,9 @@ export function renderServerIsland( } } + const key = await result.key; + const propsEncrypted = await encryptString(key, JSON.stringify(props)); + const hostId = crypto.randomUUID(); const serverIslandUrl = `${result.base}_server-islands/${componentId}${result.trailingSlash === 'always' ? '/' : ''}`; @@ -68,7 +73,7 @@ let componentExport = ${safeJsonStringify(componentExport)}; let script = document.querySelector('script[data-island-id="${hostId}"]'); let data = { componentExport, - props: ${safeJsonStringify(props)}, + encryptedProps: ${safeJsonStringify(propsEncrypted)}, slots: ${safeJsonStringify(renderedSlots)}, }; diff --git a/packages/astro/src/vite-plugin-astro-server/plugin.ts b/packages/astro/src/vite-plugin-astro-server/plugin.ts index 7d1e2fb6f8..238eb7c561 100644 --- a/packages/astro/src/vite-plugin-astro-server/plugin.ts +++ b/packages/astro/src/vite-plugin-astro-server/plugin.ts @@ -18,6 +18,7 @@ import { recordServerError } from './error.js'; import { DevPipeline } from './pipeline.js'; import { handleRequest } from './request.js'; import { setRouteError } from './server-state.js'; +import { createKey } from '../core/encryption.js'; export interface AstroPluginOptions { settings: AstroSettings; @@ -129,6 +130,7 @@ export function createDevelopmentManifest(settings: AstroSettings): SSRManifest domainLookupTable: {}, }; } + return { hrefRoot: settings.config.root.toString(), trailingSlash: settings.config.trailingSlash, @@ -148,6 +150,7 @@ export function createDevelopmentManifest(settings: AstroSettings): SSRManifest i18n: i18nManifest, checkOrigin: settings.config.security?.checkOrigin ?? false, experimentalEnvGetSecretEnabled: false, + key: createKey(), middleware(_, next) { return next(); }, diff --git a/packages/astro/test/server-islands.test.js b/packages/astro/test/server-islands.test.js index 2b784276de..8806f35115 100644 --- a/packages/astro/test/server-islands.test.js +++ b/packages/astro/test/server-islands.test.js @@ -82,38 +82,6 @@ describe('Server islands', () => { const serverIslandScript = $('script[data-island-id]'); assert.equal(serverIslandScript.length, 1, 'has the island script'); }); - - describe('prod', () => { - async function fetchIsland() { - const app = await fixture.loadTestAdapterApp(); - const request = new Request('http://example.com/_server-islands/Island', { - method: 'POST', - body: JSON.stringify({ - componentExport: 'default', - props: {}, - slots: {}, - }), - }); - return app.render(request); - } - - it('Island returns its HTML', async () => { - const response = await fetchIsland(); - const html = await response.text(); - const $ = cheerio.load(html); - - const serverIslandEl = $('h2#island'); - assert.equal(serverIslandEl.length, 1); - }); - - it('Island does not include the doctype', async () => { - const response = await fetchIsland(); - const html = await response.text(); - console.log(html); - - assert.ok(!/doctype/i.test(html), 'html does not include doctype'); - }); - }); }); }); }); diff --git a/packages/astro/test/test-adapter.js b/packages/astro/test/test-adapter.js index 880b5fe646..8c4643367d 100644 --- a/packages/astro/test/test-adapter.js +++ b/packages/astro/test/test-adapter.js @@ -72,7 +72,7 @@ export default function ({ async render(request, { routeData, clientAddress, locals, addCookieHeader } = {}) { const url = new URL(request.url); if(this.#manifest.assets.has(url.pathname)) { - const filePath = new URL('../client/' + this.removeBase(url.pathname), import.meta.url); + const filePath = new URL('../../client/' + this.removeBase(url.pathname), import.meta.url); const data = await fs.promises.readFile(filePath); return new Response(data); } diff --git a/packages/integrations/node/src/serve-static.ts b/packages/integrations/node/src/serve-static.ts index 8256c588ec..e5cd73daf1 100644 --- a/packages/integrations/node/src/serve-static.ts +++ b/packages/integrations/node/src/serve-static.ts @@ -103,7 +103,14 @@ function resolveClientDir(options: Options) { const clientURLRaw = new URL(options.client); const serverURLRaw = new URL(options.server); const rel = path.relative(url.fileURLToPath(serverURLRaw), url.fileURLToPath(clientURLRaw)); - const serverEntryURL = new URL(import.meta.url); + + // walk up the parent folders until you find the one that is the root of the server entry folder. This is how we find the client folder relatively. + const serverFolder = path.basename(options.server); + let serverEntryFolderURL = path.dirname(import.meta.url); + while(!serverEntryFolderURL.endsWith(serverFolder)) { + serverEntryFolderURL = path.dirname(serverEntryFolderURL); + } + const serverEntryURL = serverEntryFolderURL + '/entry.mjs'; const clientURL = new URL(appendForwardSlash(rel), serverEntryURL); const client = url.fileURLToPath(clientURL); return client; diff --git a/packages/integrations/node/src/server.ts b/packages/integrations/node/src/server.ts index e5b503292d..1bb27e002f 100644 --- a/packages/integrations/node/src/server.ts +++ b/packages/integrations/node/src/server.ts @@ -4,6 +4,8 @@ import createMiddleware from './middleware.js'; import { createStandaloneHandler } from './standalone.js'; import startServer from './standalone.js'; import type { Options } from './types.js'; +// This needs to run first because some internals depend on `crypto` +applyPolyfills(); // Won't throw if the virtual module is not available because it's not supported in // the users's astro version or if astro:env is not enabled in the project @@ -11,7 +13,6 @@ await import('astro/env/setup') .then((mod) => mod.setGetEnv((key) => process.env[key])) .catch(() => {}); -applyPolyfills(); export function createExports(manifest: SSRManifest, options: Options) { const app = new NodeApp(manifest); options.trailingSlash = manifest.trailingSlash; diff --git a/packages/integrations/node/test/errors.test.js b/packages/integrations/node/test/errors.test.js index d75155aa53..c785af586e 100644 --- a/packages/integrations/node/test/errors.test.js +++ b/packages/integrations/node/test/errors.test.js @@ -1,6 +1,7 @@ import assert from 'node:assert/strict'; import { after, before, describe, it } from 'node:test'; import { Worker } from 'node:worker_threads'; +import { fileURLToPath } from 'node:url'; import * as cheerio from 'cheerio'; import nodejs from '../dist/index.js'; import { loadFixture } from './test-utils.js'; @@ -29,7 +30,8 @@ describe('Errors', () => { it('stays alive after offshoot promise rejections', async () => { // this test needs to happen in a worker because node test runner adds a listener for unhandled rejections in the main thread - const worker = new Worker('./test/fixtures/errors/dist/server/entry.mjs', { + const url = new URL('./fixtures/errors/dist/server/entry.mjs', import.meta.url); + const worker = new Worker(fileURLToPath(url), { type: 'module', env: { ASTRO_NODE_LOGGING: 'enabled' }, }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0e7edd4dc4..271f0472e8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -582,6 +582,9 @@ importers: '@babel/types': specifier: ^7.25.2 version: 7.25.2 + '@oslojs/encoding': + specifier: ^0.4.1 + version: 0.4.1 '@types/babel__core': specifier: ^7.20.5 version: 7.20.5 @@ -7118,6 +7121,9 @@ packages: '@octokit/types@13.5.0': resolution: {integrity: sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==} + '@oslojs/encoding@0.4.1': + resolution: {integrity: sha512-hkjo6MuIK/kQR5CrGNdAPZhS01ZCXuWDRJ187zh6qqF2+yMHZpD9fAYpX8q2bOO6Ryhl3XpCT6kUX76N8hhm4Q==} + '@parse5/tools@0.3.0': resolution: {integrity: sha512-zxRyTHkqb7WQMV8kTNBKWb1BeOFUKXBXTBWuxg9H9hfvQB3IwP6Iw2U75Ia5eyRxPNltmY7E8YAlz6zWwUnjKg==} @@ -8154,7 +8160,7 @@ packages: resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} consola@3.2.3: resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} @@ -9333,6 +9339,7 @@ packages: libsql@0.3.12: resolution: {integrity: sha512-to30hj8O3DjS97wpbKN6ERZ8k66MN1IaOfFLR6oHqd25GMiPJ/ZX0VaZ7w+TsPmxcFS3p71qArj/hiedCyvXCg==} + cpu: [x64, arm64, wasm32] os: [darwin, linux, win32] lilconfig@2.1.0: @@ -12952,6 +12959,8 @@ snapshots: dependencies: '@octokit/openapi-types': 22.2.0 + '@oslojs/encoding@0.4.1': {} + '@parse5/tools@0.3.0': dependencies: parse5: 7.1.2 From f5616a8ac0b31cf5ba8b059c8d837ed41c953773 Mon Sep 17 00:00:00 2001 From: Matthew Phillips Date: Tue, 13 Aug 2024 12:59:45 +0000 Subject: [PATCH 07/18] [ci] format --- packages/astro/src/container/index.ts | 2 +- packages/astro/src/core/app/index.ts | 2 +- packages/astro/src/core/build/generate.ts | 2 +- packages/astro/src/core/build/index.ts | 2 +- .../src/core/build/plugins/plugin-manifest.ts | 2 +- .../astro/src/core/build/plugins/plugin-ssr.ts | 2 +- packages/astro/src/core/encryption.ts | 16 ++++++++-------- packages/astro/src/core/render-context.ts | 1 - .../astro/src/core/server-islands/endpoint.ts | 2 +- .../src/runtime/server/render/server-islands.ts | 3 +-- .../astro/src/vite-plugin-astro-server/plugin.ts | 2 +- packages/integrations/node/src/serve-static.ts | 2 +- packages/integrations/node/test/errors.test.js | 2 +- 13 files changed, 19 insertions(+), 21 deletions(-) diff --git a/packages/astro/src/container/index.ts b/packages/astro/src/container/index.ts index d9ad61f256..f0c600a406 100644 --- a/packages/astro/src/container/index.ts +++ b/packages/astro/src/container/index.ts @@ -17,6 +17,7 @@ import type { import { getDefaultClientDirectives } from '../core/client-directive/index.js'; import { ASTRO_CONFIG_DEFAULTS } from '../core/config/schema.js'; import { validateConfig } from '../core/config/validate.js'; +import { createKey } from '../core/encryption.js'; import { Logger } from '../core/logger/core.js'; import { nodeLogDestination } from '../core/logger/node.js'; import { removeLeadingForwardSlash } from '../core/path.js'; @@ -25,7 +26,6 @@ import { getParts, validateSegment } from '../core/routing/manifest/create.js'; import { getPattern } from '../core/routing/manifest/pattern.js'; import type { AstroComponentFactory } from '../runtime/server/index.js'; import { ContainerPipeline } from './pipeline.js'; -import { createKey } from '../core/encryption.js'; /** * Options to be passed when rendering a route diff --git a/packages/astro/src/core/app/index.ts b/packages/astro/src/core/app/index.ts index 7ccf219c88..8041dda3c6 100644 --- a/packages/astro/src/core/app/index.ts +++ b/packages/astro/src/core/app/index.ts @@ -416,7 +416,7 @@ export class App { `${this.#baseWithoutTrailingSlash}/${status}${maybeDotHtml}`, url, ); - if(statusURL.toString() !== request.url) { + if (statusURL.toString() !== request.url) { const response = await fetch(statusURL.toString()); // response for /404.html and 500.html is 200, which is not meaningful diff --git a/packages/astro/src/core/build/generate.ts b/packages/astro/src/core/build/generate.ts index 329530154d..fae7896b92 100644 --- a/packages/astro/src/core/build/generate.ts +++ b/packages/astro/src/core/build/generate.ts @@ -522,7 +522,7 @@ function createBuildManifest( internals: BuildInternals, renderers: SSRLoadedRenderer[], middleware: MiddlewareHandler, - key: Promise + key: Promise, ): SSRManifest { let i18nManifest: SSRManifestI18n | undefined = undefined; if (settings.config.i18n) { diff --git a/packages/astro/src/core/build/index.ts b/packages/astro/src/core/build/index.ts index ecc97161fc..1382f85bc2 100644 --- a/packages/astro/src/core/build/index.ts +++ b/packages/astro/src/core/build/index.ts @@ -23,6 +23,7 @@ import { resolveConfig } from '../config/config.js'; import { createNodeLogger } from '../config/logging.js'; import { createSettings } from '../config/settings.js'; import { createVite } from '../create-vite.js'; +import { createKey } from '../encryption.js'; import type { Logger } from '../logger/core.js'; import { levels, timerMessage } from '../logger/core.js'; import { apply as applyPolyfill } from '../polyfill.js'; @@ -33,7 +34,6 @@ import { collectPagesData } from './page-data.js'; import { staticBuild, viteBuild } from './static-build.js'; import type { StaticBuildOptions } from './types.js'; import { getTimeStat } from './util.js'; -import { createKey } from '../encryption.js'; export interface BuildOptions { /** diff --git a/packages/astro/src/core/build/plugins/plugin-manifest.ts b/packages/astro/src/core/build/plugins/plugin-manifest.ts index 098c5528d0..6b38758c38 100644 --- a/packages/astro/src/core/build/plugins/plugin-manifest.ts +++ b/packages/astro/src/core/build/plugins/plugin-manifest.ts @@ -12,6 +12,7 @@ import type { SerializedRouteInfo, SerializedSSRManifest, } from '../../app/types.js'; +import { encodeKey } from '../../encryption.js'; import { fileExtension, joinPaths, prependForwardSlash } from '../../path.js'; import { serializeRouteData } from '../../routing/index.js'; import { addRollupInput } from '../add-rollup-input.js'; @@ -20,7 +21,6 @@ import { type BuildInternals, cssOrder, mergeInlineCss } from '../internal.js'; import type { AstroBuildPlugin } from '../plugin.js'; import type { StaticBuildOptions } from '../types.js'; import { makePageDataKey } from './util.js'; -import { encodeKey } from '../../encryption.js'; const manifestReplace = '@@ASTRO_MANIFEST_REPLACE@@'; const replaceExp = new RegExp(`['"]${manifestReplace}['"]`, 'g'); diff --git a/packages/astro/src/core/build/plugins/plugin-ssr.ts b/packages/astro/src/core/build/plugins/plugin-ssr.ts index 201c48a5e9..70997e40ea 100644 --- a/packages/astro/src/core/build/plugins/plugin-ssr.ts +++ b/packages/astro/src/core/build/plugins/plugin-ssr.ts @@ -38,7 +38,7 @@ function vitePluginSSR( } const adapterServerEntrypoint = options.settings.adapter?.serverEntrypoint; - if(adapterServerEntrypoint) { + if (adapterServerEntrypoint) { inputs.add(adapterServerEntrypoint); } diff --git a/packages/astro/src/core/encryption.ts b/packages/astro/src/core/encryption.ts index f849662972..ccfc9bdd27 100644 --- a/packages/astro/src/core/encryption.ts +++ b/packages/astro/src/core/encryption.ts @@ -1,4 +1,4 @@ -import { encodeBase64, decodeBase64, decodeHex, encodeHexUpperCase } from '@oslojs/encoding'; +import { decodeBase64, decodeHex, encodeBase64, encodeHexUpperCase } from '@oslojs/encoding'; // Chose this algorithm for no particular reason, can change. // This algo does check against text manipulation though. See @@ -15,7 +15,7 @@ export async function createKey() { length: 256, }, true, - ['encrypt', 'decrypt'] + ['encrypt', 'decrypt'], ); return key; } @@ -24,8 +24,8 @@ export async function createKey() { * Takes a key that has been serialized to an array of bytes and returns a CryptoKey */ export async function importKey(bytes: Uint8Array): Promise { - const key = await crypto.subtle.importKey('raw', bytes, ALGORITHM, true, ['encrypt', 'decrypt']); - return key; + const key = await crypto.subtle.importKey('raw', bytes, ALGORITHM, true, ['encrypt', 'decrypt']); + return key; } /** @@ -41,7 +41,7 @@ export async function encodeKey(key: CryptoKey) { * Decodes a base64 string into bytes and then imports the key. */ export async function decodeKey(encoded: string): Promise { - const bytes = decodeBase64(encoded); + const bytes = decodeBase64(encoded); return crypto.subtle.importKey('raw', bytes, ALGORITHM, true, ['encrypt', 'decrypt']); } @@ -63,7 +63,7 @@ export async function encryptString(key: CryptoKey, raw: string) { iv, }, key, - data + data, ); // iv is 12, hex brings it to 24 return encodeHexUpperCase(iv) + encodeBase64(new Uint8Array(buffer)); @@ -73,7 +73,7 @@ export async function encryptString(key: CryptoKey, raw: string) { * Takes a base64 encoded string, decodes it and returns the decrypted text. */ export async function decryptString(key: CryptoKey, encoded: string) { - const iv = decodeHex(encoded.slice(0, IV_LENGTH)); + const iv = decodeHex(encoded.slice(0, IV_LENGTH)); const dataArray = decodeBase64(encoded.slice(IV_LENGTH)); const decryptedBuffer = await crypto.subtle.decrypt( { @@ -81,7 +81,7 @@ export async function decryptString(key: CryptoKey, encoded: string) { iv, }, key, - dataArray + dataArray, ); const decryptedString = decoder.decode(decryptedBuffer); return decryptedString; diff --git a/packages/astro/src/core/render-context.ts b/packages/astro/src/core/render-context.ts index 653d853c97..a19d11080a 100644 --- a/packages/astro/src/core/render-context.ts +++ b/packages/astro/src/core/render-context.ts @@ -318,7 +318,6 @@ export class RenderContext { ? deserializeActionResult(this.locals._actionPayload.actionResult) : undefined; - // Create the result object that will be passed into the renderPage function. // This object starts here as an empty shell (not yet the result) but then // calling the render() function will populate the object with scripts, styles, etc. diff --git a/packages/astro/src/core/server-islands/endpoint.ts b/packages/astro/src/core/server-islands/endpoint.ts index fc87202ff3..368a1b9b19 100644 --- a/packages/astro/src/core/server-islands/endpoint.ts +++ b/packages/astro/src/core/server-islands/endpoint.ts @@ -79,7 +79,7 @@ export function createEndpoint(manifest: SSRManifest) { const encryptedProps = data.encryptedProps; const propString = await decryptString(key, encryptedProps); const props = JSON.parse(propString); - + const componentModule = await imp(); const Component = (componentModule as any)[data.componentExport]; diff --git a/packages/astro/src/runtime/server/render/server-islands.ts b/packages/astro/src/runtime/server/render/server-islands.ts index 46f3fd6b21..58cce4e148 100644 --- a/packages/astro/src/runtime/server/render/server-islands.ts +++ b/packages/astro/src/runtime/server/render/server-islands.ts @@ -1,10 +1,9 @@ -import { encryptString } from '../../../core/encryption.js'; import type { SSRResult } from '../../../@types/astro.js'; +import { encryptString } from '../../../core/encryption.js'; import { renderChild } from './any.js'; import type { RenderInstance } from './common.js'; import { type ComponentSlots, renderSlotToString } from './slot.js'; - const internalProps = new Set([ 'server:component-path', 'server:component-export', diff --git a/packages/astro/src/vite-plugin-astro-server/plugin.ts b/packages/astro/src/vite-plugin-astro-server/plugin.ts index 238eb7c561..2458b5b8d3 100644 --- a/packages/astro/src/vite-plugin-astro-server/plugin.ts +++ b/packages/astro/src/vite-plugin-astro-server/plugin.ts @@ -4,6 +4,7 @@ import { IncomingMessage } from 'node:http'; import type * as vite from 'vite'; import type { AstroSettings, ManifestData, SSRManifest } from '../@types/astro.js'; import type { SSRManifestI18n } from '../core/app/types.js'; +import { createKey } from '../core/encryption.js'; import { getViteErrorPayload } from '../core/errors/dev/index.js'; import { AstroError, AstroErrorData } from '../core/errors/index.js'; import { patchOverlay } from '../core/errors/overlay.js'; @@ -18,7 +19,6 @@ import { recordServerError } from './error.js'; import { DevPipeline } from './pipeline.js'; import { handleRequest } from './request.js'; import { setRouteError } from './server-state.js'; -import { createKey } from '../core/encryption.js'; export interface AstroPluginOptions { settings: AstroSettings; diff --git a/packages/integrations/node/src/serve-static.ts b/packages/integrations/node/src/serve-static.ts index e5cd73daf1..725f7afa68 100644 --- a/packages/integrations/node/src/serve-static.ts +++ b/packages/integrations/node/src/serve-static.ts @@ -107,7 +107,7 @@ function resolveClientDir(options: Options) { // walk up the parent folders until you find the one that is the root of the server entry folder. This is how we find the client folder relatively. const serverFolder = path.basename(options.server); let serverEntryFolderURL = path.dirname(import.meta.url); - while(!serverEntryFolderURL.endsWith(serverFolder)) { + while (!serverEntryFolderURL.endsWith(serverFolder)) { serverEntryFolderURL = path.dirname(serverEntryFolderURL); } const serverEntryURL = serverEntryFolderURL + '/entry.mjs'; diff --git a/packages/integrations/node/test/errors.test.js b/packages/integrations/node/test/errors.test.js index c785af586e..802fa6e256 100644 --- a/packages/integrations/node/test/errors.test.js +++ b/packages/integrations/node/test/errors.test.js @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { after, before, describe, it } from 'node:test'; -import { Worker } from 'node:worker_threads'; import { fileURLToPath } from 'node:url'; +import { Worker } from 'node:worker_threads'; import * as cheerio from 'cheerio'; import nodejs from '../dist/index.js'; import { loadFixture } from './test-utils.js'; From fc24e1b6f522cf78786a67ee2b308754ab2bfafd Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Tue, 13 Aug 2024 14:32:32 +0100 Subject: [PATCH 08/18] chore: upgrade biome to the latest (#11688) --- biome.json | 2 +- package.json | 2 +- pnpm-lock.yaml | 74 +++++++++++++++++++++++++------------------------- 3 files changed, 39 insertions(+), 39 deletions(-) diff --git a/biome.json b/biome.json index 8effd9cfce..2928e8f4fe 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/1.8.1/schema.json", + "$schema": "https://biomejs.dev/schemas/1.8.3/schema.json", "files": { "ignore": [ "vendor", diff --git a/package.json b/package.json index 8417847d81..81646db781 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ }, "devDependencies": { "@astrojs/check": "^0.9.1", - "@biomejs/biome": "1.8.1", + "@biomejs/biome": "1.8.3", "@changesets/changelog-github": "^0.5.0", "@changesets/cli": "^2.27.7", "@types/node": "^18.17.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 271f0472e8..094253e044 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,8 +16,8 @@ importers: specifier: ^0.9.1 version: 0.9.1(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4) '@biomejs/biome': - specifier: 1.8.1 - version: 1.8.1 + specifier: 1.8.3 + version: 1.8.3 '@changesets/changelog-github': specifier: ^0.5.0 version: 0.5.0 @@ -6223,55 +6223,55 @@ packages: resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} engines: {node: '>=6.9.0'} - '@biomejs/biome@1.8.1': - resolution: {integrity: sha512-fQXGfvq6DIXem12dGQCM2tNF+vsNHH1qs3C7WeOu75Pd0trduoTmoO7G4ntLJ2qDs5wuw981H+cxQhi1uHnAtA==} + '@biomejs/biome@1.8.3': + resolution: {integrity: sha512-/uUV3MV+vyAczO+vKrPdOW0Iaet7UnJMU4bNMinggGJTAnBPjCoLEYcyYtYHNnUNYlv4xZMH6hVIQCAozq8d5w==} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@1.8.1': - resolution: {integrity: sha512-XLiB7Uu6GALIOBWzQ2aMD0ru4Ly5/qSeQF7kk3AabzJ/kwsEWSe33iVySBP/SS2qv25cgqNiLksjGcw2bHT3mw==} + '@biomejs/cli-darwin-arm64@1.8.3': + resolution: {integrity: sha512-9DYOjclFpKrH/m1Oz75SSExR8VKvNSSsLnVIqdnKexj6NwmiMlKk94Wa1kZEdv6MCOHGHgyyoV57Cw8WzL5n3A==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@1.8.1': - resolution: {integrity: sha512-uMTSxVLMfqkBVqyc25hSn83jBbp+wtWjzM/pHFlKXt3htJuw7FErVGW0nmQ9Sxa9vJ7GcqoltLMl28VQRIMYzg==} + '@biomejs/cli-darwin-x64@1.8.3': + resolution: {integrity: sha512-UeW44L/AtbmOF7KXLCoM+9PSgPo0IDcyEUfIoOXYeANaNXXf9mLUwV1GeF2OWjyic5zj6CnAJ9uzk2LT3v/wAw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@1.8.1': - resolution: {integrity: sha512-UQ8Wc01J0wQL+5AYOc7qkJn20B4PZmQL1KrmDZh7ot0DvD6aX4+8mmfd/dG5b6Zjo/44QvCKcvkFGCMRYuhWZA==} + '@biomejs/cli-linux-arm64-musl@1.8.3': + resolution: {integrity: sha512-9yjUfOFN7wrYsXt/T/gEWfvVxKlnh3yBpnScw98IF+oOeCYb5/b/+K7YNqKROV2i1DlMjg9g/EcN9wvj+NkMuQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-arm64@1.8.1': - resolution: {integrity: sha512-3SzZRuC/9Oi2P2IBNPsEj0KXxSXUEYRR2kfRF/Ve8QAfGgrt4qnwuWd6QQKKN5R+oYH691qjm+cXBKEcrP1v/Q==} + '@biomejs/cli-linux-arm64@1.8.3': + resolution: {integrity: sha512-fed2ji8s+I/m8upWpTJGanqiJ0rnlHOK3DdxsyVLZQ8ClY6qLuPc9uehCREBifRJLl/iJyQpHIRufLDeotsPtw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-x64-musl@1.8.1': - resolution: {integrity: sha512-fYbP/kNu/rtZ4kKzWVocIdqZOtBSUEg9qUhZaao3dy3CRzafR6u6KDtBeSCnt47O+iLnks1eOR1TUxzr5+QuqA==} + '@biomejs/cli-linux-x64-musl@1.8.3': + resolution: {integrity: sha512-UHrGJX7PrKMKzPGoEsooKC9jXJMa28TUSMjcIlbDnIO4EAavCoVmNQaIuUSH0Ls2mpGMwUIf+aZJv657zfWWjA==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-linux-x64@1.8.1': - resolution: {integrity: sha512-AeBycVdNrTzsyYKEOtR2R0Ph0hCD0sCshcp2aOnfGP0hCZbtFg09D0SdKLbyzKntisY41HxKVrydYiaApp+2uw==} + '@biomejs/cli-linux-x64@1.8.3': + resolution: {integrity: sha512-I8G2QmuE1teISyT8ie1HXsjFRz9L1m5n83U1O6m30Kw+kPMPSKjag6QGUn+sXT8V+XWIZxFFBoTDEDZW2KPDDw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-win32-arm64@1.8.1': - resolution: {integrity: sha512-6tEd1H/iFKpgpE3OIB7oNgW5XkjiVMzMRPL8zYoZ036YfuJ5nMYm9eB9H/y81+8Z76vL48fiYzMPotJwukGPqQ==} + '@biomejs/cli-win32-arm64@1.8.3': + resolution: {integrity: sha512-J+Hu9WvrBevfy06eU1Na0lpc7uR9tibm9maHynLIoAjLZpQU3IW+OKHUtyL8p6/3pT2Ju5t5emReeIS2SAxhkQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@1.8.1': - resolution: {integrity: sha512-g2H31jJzYmS4jkvl6TiyEjEX+Nv79a5km/xn+5DARTp5MBFzC9gwceusSSB2AkJKqZzY131AiACAWjKrVt5Ijw==} + '@biomejs/cli-win32-x64@1.8.3': + resolution: {integrity: sha512-/PJ59vA1pnQeKahemaQf4Nyj7IKUvGQSc3Ze1uIGi+Wvr1xF7rGobSrAAG01T/gUDG21vkDsZYM03NAmPiVkqg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] @@ -12006,39 +12006,39 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - '@biomejs/biome@1.8.1': + '@biomejs/biome@1.8.3': optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.8.1 - '@biomejs/cli-darwin-x64': 1.8.1 - '@biomejs/cli-linux-arm64': 1.8.1 - '@biomejs/cli-linux-arm64-musl': 1.8.1 - '@biomejs/cli-linux-x64': 1.8.1 - '@biomejs/cli-linux-x64-musl': 1.8.1 - '@biomejs/cli-win32-arm64': 1.8.1 - '@biomejs/cli-win32-x64': 1.8.1 + '@biomejs/cli-darwin-arm64': 1.8.3 + '@biomejs/cli-darwin-x64': 1.8.3 + '@biomejs/cli-linux-arm64': 1.8.3 + '@biomejs/cli-linux-arm64-musl': 1.8.3 + '@biomejs/cli-linux-x64': 1.8.3 + '@biomejs/cli-linux-x64-musl': 1.8.3 + '@biomejs/cli-win32-arm64': 1.8.3 + '@biomejs/cli-win32-x64': 1.8.3 - '@biomejs/cli-darwin-arm64@1.8.1': + '@biomejs/cli-darwin-arm64@1.8.3': optional: true - '@biomejs/cli-darwin-x64@1.8.1': + '@biomejs/cli-darwin-x64@1.8.3': optional: true - '@biomejs/cli-linux-arm64-musl@1.8.1': + '@biomejs/cli-linux-arm64-musl@1.8.3': optional: true - '@biomejs/cli-linux-arm64@1.8.1': + '@biomejs/cli-linux-arm64@1.8.3': optional: true - '@biomejs/cli-linux-x64-musl@1.8.1': + '@biomejs/cli-linux-x64-musl@1.8.3': optional: true - '@biomejs/cli-linux-x64@1.8.1': + '@biomejs/cli-linux-x64@1.8.3': optional: true - '@biomejs/cli-win32-arm64@1.8.1': + '@biomejs/cli-win32-arm64@1.8.3': optional: true - '@biomejs/cli-win32-x64@1.8.1': + '@biomejs/cli-win32-x64@1.8.3': optional: true '@builder.io/partytown@0.10.2': {} From 315ec07e1b25042cf0298b0d55dbcd6dd6a39890 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 13 Aug 2024 22:29:37 +0800 Subject: [PATCH 09/18] fix(deps): update all non-major dependencies (#11674) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: bluwy --- examples/framework-lit/package.json | 2 +- examples/framework-multiple/package.json | 4 +- examples/framework-solid/package.json | 2 +- examples/framework-vue/package.json | 2 +- examples/server-islands/package.json | 4 +- examples/with-nanostores/package.json | 2 +- examples/with-tailwindcss/package.json | 4 +- package.json | 4 +- .../e2e/fixtures/actions-blog/package.json | 2 +- .../fixtures/actions-react-19/package.json | 2 +- .../e2e/fixtures/astro-envs/package.json | 2 +- .../e2e/fixtures/client-only/package.json | 4 +- .../astro/e2e/fixtures/errors/package.json | 4 +- .../e2e/fixtures/lit-component/package.json | 2 +- .../fixtures/multiple-frameworks/package.json | 6 +- .../fixtures/nested-in-preact/package.json | 4 +- .../e2e/fixtures/nested-in-react/package.json | 4 +- .../e2e/fixtures/nested-in-solid/package.json | 4 +- .../fixtures/nested-in-svelte/package.json | 4 +- .../e2e/fixtures/nested-in-vue/package.json | 4 +- .../fixtures/nested-recursive/package.json | 4 +- .../e2e/fixtures/solid-circular/package.json | 2 +- .../e2e/fixtures/solid-component/package.json | 2 +- .../e2e/fixtures/solid-recurse/package.json | 2 +- .../e2e/fixtures/tailwindcss/package.json | 4 +- .../fixtures/view-transitions/package.json | 2 +- .../e2e/fixtures/vue-component/package.json | 2 +- packages/astro/package.json | 12 +- .../astro/test/fixtures/0-css/package.json | 2 +- .../test/fixtures/astro-children/package.json | 2 +- .../test/fixtures/astro-envs/package.json | 2 +- .../fixtures/astro-slots-nested/package.json | 4 +- .../container-custom-renderers/package.json | 2 +- .../astro/test/fixtures/fetch/package.json | 2 +- packages/astro/test/fixtures/jsx/package.json | 4 +- .../test/fixtures/large-array/package.json | 2 +- .../test/fixtures/lit-element/package.json | 2 +- .../astro/test/fixtures/postcss/package.json | 6 +- .../fixtures/react-and-solid/package.json | 2 +- .../test/fixtures/slots-solid/package.json | 2 +- .../test/fixtures/slots-vue/package.json | 2 +- .../deps/solid-jsx-component/package.json | 2 +- .../fixtures/solid-component/package.json | 2 +- .../test/fixtures/tailwindcss-ts/package.json | 4 +- .../test/fixtures/tailwindcss/package.json | 4 +- .../test/fixtures/vue-component/package.json | 2 +- .../astro/test/fixtures/vue-jsx/package.json | 2 +- .../vue-with-multi-renderer/package.json | 2 +- packages/db/package.json | 6 +- .../fixtures/ticketing-example/package.json | 4 +- packages/integrations/alpinejs/package.json | 4 +- packages/integrations/lit/package.json | 6 +- packages/integrations/markdoc/package.json | 2 +- packages/integrations/mdx/package.json | 4 +- packages/integrations/node/package.json | 2 +- packages/integrations/preact/package.json | 2 +- packages/integrations/react/package.json | 4 +- .../fixtures/react-component/package.json | 2 +- packages/integrations/solid/package.json | 4 +- packages/integrations/svelte/package.json | 2 +- packages/integrations/tailwind/package.json | 6 +- packages/integrations/vercel/package.json | 2 +- .../vercel/test/speed-insights.test.js | 4 +- packages/integrations/vue/package.json | 8 +- .../app-entrypoint-async/package.json | 2 +- .../package.json | 2 +- .../test/fixtures/app-entrypoint/package.json | 2 +- packages/integrations/web-vitals/package.json | 2 +- packages/studio/package.json | 2 +- pnpm-lock.yaml | 1556 +++++++++-------- 70 files changed, 943 insertions(+), 833 deletions(-) diff --git a/examples/framework-lit/package.json b/examples/framework-lit/package.json index cef951081d..f7f47c2634 100644 --- a/examples/framework-lit/package.json +++ b/examples/framework-lit/package.json @@ -14,6 +14,6 @@ "@astrojs/lit": "^4.3.0", "@webcomponents/template-shadowroot": "^0.2.1", "astro": "^4.13.3", - "lit": "^3.1.4" + "lit": "^3.2.0" } } diff --git a/examples/framework-multiple/package.json b/examples/framework-multiple/package.json index 49e0ce9712..66552bd65d 100644 --- a/examples/framework-multiple/package.json +++ b/examples/framework-multiple/package.json @@ -22,8 +22,8 @@ "preact": "^10.23.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "solid-js": "^1.8.19", + "solid-js": "^1.8.20", "svelte": "^4.2.18", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/examples/framework-solid/package.json b/examples/framework-solid/package.json index ae8ff13f12..e64c12ea48 100644 --- a/examples/framework-solid/package.json +++ b/examples/framework-solid/package.json @@ -13,6 +13,6 @@ "dependencies": { "@astrojs/solid-js": "^4.4.1", "astro": "^4.13.3", - "solid-js": "^1.8.19" + "solid-js": "^1.8.20" } } diff --git a/examples/framework-vue/package.json b/examples/framework-vue/package.json index df136b65e7..ec0392c219 100644 --- a/examples/framework-vue/package.json +++ b/examples/framework-vue/package.json @@ -13,6 +13,6 @@ "dependencies": { "@astrojs/vue": "^4.5.0", "astro": "^4.13.3", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/examples/server-islands/package.json b/examples/server-islands/package.json index 899f4d4af0..19fc5583d0 100644 --- a/examples/server-islands/package.json +++ b/examples/server-islands/package.json @@ -18,9 +18,9 @@ "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "astro": "^4.13.3", - "postcss": "^8.4.40", + "postcss": "^8.4.41", "react": "^18.3.1", "react-dom": "^18.3.1", - "tailwindcss": "^3.4.7" + "tailwindcss": "^3.4.9" } } diff --git a/examples/with-nanostores/package.json b/examples/with-nanostores/package.json index 8933b0bac4..e5694128b8 100644 --- a/examples/with-nanostores/package.json +++ b/examples/with-nanostores/package.json @@ -14,7 +14,7 @@ "@astrojs/preact": "^3.5.1", "@nanostores/preact": "^0.5.2", "astro": "^4.13.3", - "nanostores": "^0.11.0", + "nanostores": "^0.11.2", "preact": "^10.23.1" } } diff --git a/examples/with-tailwindcss/package.json b/examples/with-tailwindcss/package.json index ae2329dd69..d4ea767266 100644 --- a/examples/with-tailwindcss/package.json +++ b/examples/with-tailwindcss/package.json @@ -17,7 +17,7 @@ "astro": "^4.13.3", "autoprefixer": "^10.4.20", "canvas-confetti": "^1.9.3", - "postcss": "^8.4.40", - "tailwindcss": "^3.4.7" + "postcss": "^8.4.41", + "tailwindcss": "^3.4.9" } } diff --git a/package.json b/package.json index 81646db781..5f2eb056c9 100644 --- a/package.json +++ b/package.json @@ -52,13 +52,13 @@ "astro-benchmark": "workspace:*" }, "devDependencies": { - "@astrojs/check": "^0.9.1", + "@astrojs/check": "^0.9.2", "@biomejs/biome": "1.8.3", "@changesets/changelog-github": "^0.5.0", "@changesets/cli": "^2.27.7", "@types/node": "^18.17.8", "esbuild": "^0.21.5", - "eslint": "^9.8.0", + "eslint": "^9.9.0", "eslint-plugin-no-only-tests": "^3.1.0", "eslint-plugin-regexp": "^2.6.0", "globby": "^14.0.2", diff --git a/packages/astro/e2e/fixtures/actions-blog/package.json b/packages/astro/e2e/fixtures/actions-blog/package.json index 35e036ee01..311b7a3788 100644 --- a/packages/astro/e2e/fixtures/actions-blog/package.json +++ b/packages/astro/e2e/fixtures/actions-blog/package.json @@ -10,7 +10,7 @@ "astro": "astro" }, "dependencies": { - "@astrojs/check": "^0.9.1", + "@astrojs/check": "^0.9.2", "@astrojs/db": "workspace:*", "@astrojs/node": "workspace:*", "@astrojs/react": "workspace:*", diff --git a/packages/astro/e2e/fixtures/actions-react-19/package.json b/packages/astro/e2e/fixtures/actions-react-19/package.json index d67b081e23..a0f446eb95 100644 --- a/packages/astro/e2e/fixtures/actions-react-19/package.json +++ b/packages/astro/e2e/fixtures/actions-react-19/package.json @@ -10,7 +10,7 @@ "astro": "astro" }, "dependencies": { - "@astrojs/check": "^0.9.1", + "@astrojs/check": "^0.9.2", "@astrojs/db": "workspace:*", "@astrojs/node": "workspace:*", "@astrojs/react": "workspace:*", diff --git a/packages/astro/e2e/fixtures/astro-envs/package.json b/packages/astro/e2e/fixtures/astro-envs/package.json index a2e272e8b2..bc11078b8c 100644 --- a/packages/astro/e2e/fixtures/astro-envs/package.json +++ b/packages/astro/e2e/fixtures/astro-envs/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/e2e/fixtures/client-only/package.json b/packages/astro/e2e/fixtures/client-only/package.json index 6af924c3d4..2a1ce6d7f1 100644 --- a/packages/astro/e2e/fixtures/client-only/package.json +++ b/packages/astro/e2e/fixtures/client-only/package.json @@ -14,8 +14,8 @@ "preact": "^10.23.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "solid-js": "^1.8.19", + "solid-js": "^1.8.20", "svelte": "^4.2.18", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/e2e/fixtures/errors/package.json b/packages/astro/e2e/fixtures/errors/package.json index e6216ea15b..2bd6a5fd3b 100644 --- a/packages/astro/e2e/fixtures/errors/package.json +++ b/packages/astro/e2e/fixtures/errors/package.json @@ -13,8 +13,8 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "sass": "^1.77.8", - "solid-js": "^1.8.19", + "solid-js": "^1.8.20", "svelte": "^4.2.18", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/e2e/fixtures/lit-component/package.json b/packages/astro/e2e/fixtures/lit-component/package.json index d569109375..0db0d41118 100644 --- a/packages/astro/e2e/fixtures/lit-component/package.json +++ b/packages/astro/e2e/fixtures/lit-component/package.json @@ -6,6 +6,6 @@ "@astrojs/lit": "workspace:*", "@webcomponents/template-shadowroot": "^0.2.1", "astro": "workspace:*", - "lit": "^3.1.4" + "lit": "^3.2.0" } } diff --git a/packages/astro/e2e/fixtures/multiple-frameworks/package.json b/packages/astro/e2e/fixtures/multiple-frameworks/package.json index 2114a28b1e..b05763561e 100644 --- a/packages/astro/e2e/fixtures/multiple-frameworks/package.json +++ b/packages/astro/e2e/fixtures/multiple-frameworks/package.json @@ -13,12 +13,12 @@ }, "dependencies": { "@webcomponents/template-shadowroot": "^0.2.1", - "lit": "^3.1.4", + "lit": "^3.2.0", "preact": "^10.23.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "solid-js": "^1.8.19", + "solid-js": "^1.8.20", "svelte": "^4.2.18", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/e2e/fixtures/nested-in-preact/package.json b/packages/astro/e2e/fixtures/nested-in-preact/package.json index 37e20359ac..855c013a99 100644 --- a/packages/astro/e2e/fixtures/nested-in-preact/package.json +++ b/packages/astro/e2e/fixtures/nested-in-preact/package.json @@ -14,8 +14,8 @@ "preact": "^10.23.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "solid-js": "^1.8.19", + "solid-js": "^1.8.20", "svelte": "^4.2.18", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/e2e/fixtures/nested-in-react/package.json b/packages/astro/e2e/fixtures/nested-in-react/package.json index 29d2a9e9a5..81f74f3ad4 100644 --- a/packages/astro/e2e/fixtures/nested-in-react/package.json +++ b/packages/astro/e2e/fixtures/nested-in-react/package.json @@ -14,8 +14,8 @@ "preact": "^10.23.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "solid-js": "^1.8.19", + "solid-js": "^1.8.20", "svelte": "^4.2.18", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/e2e/fixtures/nested-in-solid/package.json b/packages/astro/e2e/fixtures/nested-in-solid/package.json index d2c4402070..0d9b59c9d8 100644 --- a/packages/astro/e2e/fixtures/nested-in-solid/package.json +++ b/packages/astro/e2e/fixtures/nested-in-solid/package.json @@ -14,8 +14,8 @@ "preact": "^10.23.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "solid-js": "^1.8.19", + "solid-js": "^1.8.20", "svelte": "^4.2.18", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/e2e/fixtures/nested-in-svelte/package.json b/packages/astro/e2e/fixtures/nested-in-svelte/package.json index 31bec20c30..9cc7bdb306 100644 --- a/packages/astro/e2e/fixtures/nested-in-svelte/package.json +++ b/packages/astro/e2e/fixtures/nested-in-svelte/package.json @@ -14,8 +14,8 @@ "preact": "^10.23.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "solid-js": "^1.8.19", + "solid-js": "^1.8.20", "svelte": "^4.2.18", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/e2e/fixtures/nested-in-vue/package.json b/packages/astro/e2e/fixtures/nested-in-vue/package.json index 1985df63f9..abbd45a703 100644 --- a/packages/astro/e2e/fixtures/nested-in-vue/package.json +++ b/packages/astro/e2e/fixtures/nested-in-vue/package.json @@ -14,8 +14,8 @@ "preact": "^10.23.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "solid-js": "^1.8.19", + "solid-js": "^1.8.20", "svelte": "^4.2.18", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/e2e/fixtures/nested-recursive/package.json b/packages/astro/e2e/fixtures/nested-recursive/package.json index 7a39d16e24..18a9d346ae 100644 --- a/packages/astro/e2e/fixtures/nested-recursive/package.json +++ b/packages/astro/e2e/fixtures/nested-recursive/package.json @@ -14,9 +14,9 @@ "preact": "^10.23.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "solid-js": "^1.8.19", + "solid-js": "^1.8.20", "svelte": "^4.2.18", - "vue": "^3.4.35" + "vue": "^3.4.37" }, "scripts": { "dev": "astro dev" diff --git a/packages/astro/e2e/fixtures/solid-circular/package.json b/packages/astro/e2e/fixtures/solid-circular/package.json index 36bd984892..4b52eaed79 100644 --- a/packages/astro/e2e/fixtures/solid-circular/package.json +++ b/packages/astro/e2e/fixtures/solid-circular/package.json @@ -7,6 +7,6 @@ "astro": "workspace:*" }, "devDependencies": { - "solid-js": "^1.8.19" + "solid-js": "^1.8.20" } } diff --git a/packages/astro/e2e/fixtures/solid-component/package.json b/packages/astro/e2e/fixtures/solid-component/package.json index db9e2e995b..f7f4d2610e 100644 --- a/packages/astro/e2e/fixtures/solid-component/package.json +++ b/packages/astro/e2e/fixtures/solid-component/package.json @@ -6,6 +6,6 @@ "@astrojs/mdx": "workspace:*", "@astrojs/solid-js": "workspace:*", "astro": "workspace:*", - "solid-js": "^1.8.19" + "solid-js": "^1.8.20" } } diff --git a/packages/astro/e2e/fixtures/solid-recurse/package.json b/packages/astro/e2e/fixtures/solid-recurse/package.json index b099ccc50d..fe2f588ee8 100644 --- a/packages/astro/e2e/fixtures/solid-recurse/package.json +++ b/packages/astro/e2e/fixtures/solid-recurse/package.json @@ -7,6 +7,6 @@ "astro": "workspace:*" }, "devDependencies": { - "solid-js": "^1.8.19" + "solid-js": "^1.8.20" } } diff --git a/packages/astro/e2e/fixtures/tailwindcss/package.json b/packages/astro/e2e/fixtures/tailwindcss/package.json index dc5b9c4b5a..0852f72614 100644 --- a/packages/astro/e2e/fixtures/tailwindcss/package.json +++ b/packages/astro/e2e/fixtures/tailwindcss/package.json @@ -6,7 +6,7 @@ "@astrojs/tailwind": "workspace:*", "astro": "workspace:*", "autoprefixer": "^10.4.20", - "postcss": "^8.4.40", - "tailwindcss": "^3.4.7" + "postcss": "^8.4.41", + "tailwindcss": "^3.4.9" } } diff --git a/packages/astro/e2e/fixtures/view-transitions/package.json b/packages/astro/e2e/fixtures/view-transitions/package.json index 2223ccbb71..e50f5de5b7 100644 --- a/packages/astro/e2e/fixtures/view-transitions/package.json +++ b/packages/astro/e2e/fixtures/view-transitions/package.json @@ -11,6 +11,6 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "svelte": "^4.2.18", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/e2e/fixtures/vue-component/package.json b/packages/astro/e2e/fixtures/vue-component/package.json index aeaf4cef0a..dffb08551c 100644 --- a/packages/astro/e2e/fixtures/vue-component/package.json +++ b/packages/astro/e2e/fixtures/vue-component/package.json @@ -6,6 +6,6 @@ "@astrojs/mdx": "workspace:*", "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/package.json b/packages/astro/package.json index 602b1f7aed..aaca3b8b0a 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -122,7 +122,7 @@ "test:node": "astro-scripts test \"test/**/*.test.js\"" }, "dependencies": { - "@astrojs/compiler": "^2.10.1", + "@astrojs/compiler": "^2.10.2", "@astrojs/internal-helpers": "workspace:*", "@astrojs/markdown-remark": "workspace:*", "@astrojs/telemetry": "workspace:*", @@ -178,7 +178,7 @@ "tsconfck": "^3.1.1", "unist-util-visit": "^5.0.0", "vfile": "^6.0.2", - "vite": "^5.3.5", + "vite": "^5.4.0", "vitefu": "^0.2.5", "which-pm": "^3.0.0", "yargs-parser": "^21.1.1", @@ -189,8 +189,8 @@ "sharp": "^0.33.3" }, "devDependencies": { - "@astrojs/check": "^0.9.1", - "@playwright/test": "^1.45.3", + "@astrojs/check": "^0.9.2", + "@playwright/test": "^1.46.0", "@types/aria-query": "^5.0.4", "@types/babel__generator": "^7.6.8", "@types/babel__traverse": "^7.20.6", @@ -208,7 +208,7 @@ "@types/semver": "^7.5.8", "@types/yargs-parser": "^21.0.3", "astro-scripts": "workspace:*", - "cheerio": "1.0.0-rc.12", + "cheerio": "1.0.0", "eol": "^0.9.1", "expect-type": "^0.19.0", "mdast-util-mdx": "^3.0.0", @@ -222,7 +222,7 @@ "remark-code-titles": "^0.1.2", "rollup": "^4.20.0", "sass": "^1.77.8", - "undici": "^6.19.5", + "undici": "^6.19.7", "unified": "^11.0.5" }, "engines": { diff --git a/packages/astro/test/fixtures/0-css/package.json b/packages/astro/test/fixtures/0-css/package.json index 7da522185d..8697a7abe5 100644 --- a/packages/astro/test/fixtures/0-css/package.json +++ b/packages/astro/test/fixtures/0-css/package.json @@ -10,6 +10,6 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "svelte": "^4.2.18", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/test/fixtures/astro-children/package.json b/packages/astro/test/fixtures/astro-children/package.json index 48397dd208..b247407d82 100644 --- a/packages/astro/test/fixtures/astro-children/package.json +++ b/packages/astro/test/fixtures/astro-children/package.json @@ -9,6 +9,6 @@ "astro": "workspace:*", "preact": "^10.23.1", "svelte": "^4.2.18", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/test/fixtures/astro-envs/package.json b/packages/astro/test/fixtures/astro-envs/package.json index f9cab73518..dac39dfa59 100644 --- a/packages/astro/test/fixtures/astro-envs/package.json +++ b/packages/astro/test/fixtures/astro-envs/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/test/fixtures/astro-slots-nested/package.json b/packages/astro/test/fixtures/astro-slots-nested/package.json index e676e96c48..7d8082d291 100644 --- a/packages/astro/test/fixtures/astro-slots-nested/package.json +++ b/packages/astro/test/fixtures/astro-slots-nested/package.json @@ -12,8 +12,8 @@ "preact": "^10.23.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "solid-js": "^1.8.19", + "solid-js": "^1.8.20", "svelte": "^4.2.18", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/test/fixtures/container-custom-renderers/package.json b/packages/astro/test/fixtures/container-custom-renderers/package.json index df53655b19..59cbee3c55 100644 --- a/packages/astro/test/fixtures/container-custom-renderers/package.json +++ b/packages/astro/test/fixtures/container-custom-renderers/package.json @@ -9,6 +9,6 @@ "astro": "workspace:*", "react": "^18.3.1", "react-dom": "^18.3.1", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/test/fixtures/fetch/package.json b/packages/astro/test/fixtures/fetch/package.json index 28c5aa1e08..0a653cbeba 100644 --- a/packages/astro/test/fixtures/fetch/package.json +++ b/packages/astro/test/fixtures/fetch/package.json @@ -9,6 +9,6 @@ "astro": "workspace:*", "preact": "^10.23.1", "svelte": "^4.2.18", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/test/fixtures/jsx/package.json b/packages/astro/test/fixtures/jsx/package.json index c5c2e7ae18..7a4e886dfd 100644 --- a/packages/astro/test/fixtures/jsx/package.json +++ b/packages/astro/test/fixtures/jsx/package.json @@ -15,8 +15,8 @@ "preact": "^10.23.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "solid-js": "^1.8.19", + "solid-js": "^1.8.20", "svelte": "^4.2.18", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/test/fixtures/large-array/package.json b/packages/astro/test/fixtures/large-array/package.json index 639b2d5914..205a04f7a6 100644 --- a/packages/astro/test/fixtures/large-array/package.json +++ b/packages/astro/test/fixtures/large-array/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/solid-js": "workspace:*", "astro": "workspace:*", - "solid-js": "^1.8.19" + "solid-js": "^1.8.20" } } diff --git a/packages/astro/test/fixtures/lit-element/package.json b/packages/astro/test/fixtures/lit-element/package.json index 8efd1a8df1..fdfb79ab76 100644 --- a/packages/astro/test/fixtures/lit-element/package.json +++ b/packages/astro/test/fixtures/lit-element/package.json @@ -6,6 +6,6 @@ "@astrojs/lit": "workspace:*", "@webcomponents/template-shadowroot": "^0.2.1", "astro": "workspace:*", - "lit": "^3.1.4" + "lit": "^3.2.0" } } diff --git a/packages/astro/test/fixtures/postcss/package.json b/packages/astro/test/fixtures/postcss/package.json index dbad23c0bc..c16d50ecce 100644 --- a/packages/astro/test/fixtures/postcss/package.json +++ b/packages/astro/test/fixtures/postcss/package.json @@ -8,10 +8,10 @@ "@astrojs/vue": "workspace:*", "astro": "workspace:*", "autoprefixer": "^10.4.20", - "postcss": "^8.4.40", - "solid-js": "^1.8.19", + "postcss": "^8.4.41", + "solid-js": "^1.8.20", "svelte": "^4.2.18", - "vue": "^3.4.35" + "vue": "^3.4.37" }, "devDependencies": { "postcss-preset-env": "^10.0.0" diff --git a/packages/astro/test/fixtures/react-and-solid/package.json b/packages/astro/test/fixtures/react-and-solid/package.json index e5f41dfaa8..e06c83ea3b 100644 --- a/packages/astro/test/fixtures/react-and-solid/package.json +++ b/packages/astro/test/fixtures/react-and-solid/package.json @@ -7,6 +7,6 @@ "astro": "workspace:*", "react": "^18.3.1", "react-dom": "^18.3.1", - "solid-js": "^1.8.19" + "solid-js": "^1.8.20" } } diff --git a/packages/astro/test/fixtures/slots-solid/package.json b/packages/astro/test/fixtures/slots-solid/package.json index 9b39b9842a..bdc6f24dbb 100644 --- a/packages/astro/test/fixtures/slots-solid/package.json +++ b/packages/astro/test/fixtures/slots-solid/package.json @@ -6,6 +6,6 @@ "@astrojs/mdx": "workspace:*", "@astrojs/solid-js": "workspace:*", "astro": "workspace:*", - "solid-js": "^1.8.19" + "solid-js": "^1.8.20" } } diff --git a/packages/astro/test/fixtures/slots-vue/package.json b/packages/astro/test/fixtures/slots-vue/package.json index 34b0d6f106..7c46eae4ec 100644 --- a/packages/astro/test/fixtures/slots-vue/package.json +++ b/packages/astro/test/fixtures/slots-vue/package.json @@ -6,6 +6,6 @@ "@astrojs/mdx": "workspace:*", "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/test/fixtures/solid-component/deps/solid-jsx-component/package.json b/packages/astro/test/fixtures/solid-component/deps/solid-jsx-component/package.json index df053cdaf7..2a11dfce57 100644 --- a/packages/astro/test/fixtures/solid-component/deps/solid-jsx-component/package.json +++ b/packages/astro/test/fixtures/solid-component/deps/solid-jsx-component/package.json @@ -10,6 +10,6 @@ } }, "dependencies": { - "solid-js": "^1.8.19" + "solid-js": "^1.8.20" } } diff --git a/packages/astro/test/fixtures/solid-component/package.json b/packages/astro/test/fixtures/solid-component/package.json index 2aa033e63b..2a18ae16f2 100644 --- a/packages/astro/test/fixtures/solid-component/package.json +++ b/packages/astro/test/fixtures/solid-component/package.json @@ -7,6 +7,6 @@ "@solidjs/router": "^0.14.1", "@test/solid-jsx-component": "file:./deps/solid-jsx-component", "astro": "workspace:*", - "solid-js": "^1.8.19" + "solid-js": "^1.8.20" } } diff --git a/packages/astro/test/fixtures/tailwindcss-ts/package.json b/packages/astro/test/fixtures/tailwindcss-ts/package.json index 0fe04c2b79..aa7aa14f5c 100644 --- a/packages/astro/test/fixtures/tailwindcss-ts/package.json +++ b/packages/astro/test/fixtures/tailwindcss-ts/package.json @@ -5,7 +5,7 @@ "dependencies": { "@astrojs/tailwind": "workspace:*", "astro": "workspace:*", - "postcss": "^8.4.40", - "tailwindcss": "^3.4.7" + "postcss": "^8.4.41", + "tailwindcss": "^3.4.9" } } diff --git a/packages/astro/test/fixtures/tailwindcss/package.json b/packages/astro/test/fixtures/tailwindcss/package.json index 58045c9453..3c6cb2b314 100644 --- a/packages/astro/test/fixtures/tailwindcss/package.json +++ b/packages/astro/test/fixtures/tailwindcss/package.json @@ -7,7 +7,7 @@ "@astrojs/tailwind": "workspace:*", "astro": "workspace:*", "autoprefixer": "^10.4.20", - "postcss": "^8.4.40", - "tailwindcss": "^3.4.7" + "postcss": "^8.4.41", + "tailwindcss": "^3.4.9" } } diff --git a/packages/astro/test/fixtures/vue-component/package.json b/packages/astro/test/fixtures/vue-component/package.json index a14cc9ea36..43eb591982 100644 --- a/packages/astro/test/fixtures/vue-component/package.json +++ b/packages/astro/test/fixtures/vue-component/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/test/fixtures/vue-jsx/package.json b/packages/astro/test/fixtures/vue-jsx/package.json index a6b83979fa..3d0718433c 100644 --- a/packages/astro/test/fixtures/vue-jsx/package.json +++ b/packages/astro/test/fixtures/vue-jsx/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/astro/test/fixtures/vue-with-multi-renderer/package.json b/packages/astro/test/fixtures/vue-with-multi-renderer/package.json index 4de4caa6e7..2b9ca8af44 100644 --- a/packages/astro/test/fixtures/vue-with-multi-renderer/package.json +++ b/packages/astro/test/fixtures/vue-with-multi-renderer/package.json @@ -7,6 +7,6 @@ "@astrojs/vue": "workspace:*", "astro": "workspace:*", "svelte": "^4.2.18", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/db/package.json b/packages/db/package.json index 10b9223536..850c6c9477 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -70,7 +70,7 @@ }, "dependencies": { "@astrojs/studio": "workspace:*", - "@libsql/client": "^0.8.1", + "@libsql/client": "^0.9.0", "async-listen": "^3.0.1", "deep-diff": "^1.0.2", "drizzle-orm": "^0.31.2", @@ -90,8 +90,8 @@ "@types/yargs-parser": "^21.0.3", "astro": "workspace:*", "astro-scripts": "workspace:*", - "cheerio": "1.0.0-rc.12", + "cheerio": "1.0.0", "typescript": "^5.5.4", - "vite": "^5.3.5" + "vite": "^5.4.0" } } diff --git a/packages/db/test/fixtures/ticketing-example/package.json b/packages/db/test/fixtures/ticketing-example/package.json index c9e1dde343..0bacf2bec9 100644 --- a/packages/db/test/fixtures/ticketing-example/package.json +++ b/packages/db/test/fixtures/ticketing-example/package.json @@ -10,10 +10,10 @@ "astro": "astro" }, "dependencies": { - "@astrojs/check": "^0.9.1", + "@astrojs/check": "^0.9.2", "@astrojs/db": "workspace:*", "@astrojs/node": "workspace:*", - "@astrojs/react": "^3.6.1", + "@astrojs/react": "^3.6.2", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "astro": "workspace:*", diff --git a/packages/integrations/alpinejs/package.json b/packages/integrations/alpinejs/package.json index c77b2acb7c..344946cf7d 100644 --- a/packages/integrations/alpinejs/package.json +++ b/packages/integrations/alpinejs/package.json @@ -38,10 +38,10 @@ "alpinejs": "^3.0.0" }, "devDependencies": { - "@playwright/test": "1.45.3", + "@playwright/test": "1.46.0", "astro": "workspace:*", "astro-scripts": "workspace:*", - "vite": "^5.3.5" + "vite": "^5.4.0" }, "publishConfig": { "provenance": true diff --git a/packages/integrations/lit/package.json b/packages/integrations/lit/package.json index a5c56370a4..6f6bcacb34 100644 --- a/packages/integrations/lit/package.json +++ b/packages/integrations/lit/package.json @@ -48,7 +48,7 @@ "dependencies": { "@lit-labs/ssr": "^3.2.2", "@lit-labs/ssr-client": "^1.1.7", - "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit-labs/ssr-dom-shim": "^1.2.1", "parse5": "^7.1.2" }, "overrides": { @@ -59,8 +59,8 @@ "devDependencies": { "astro": "workspace:*", "astro-scripts": "workspace:*", - "cheerio": "1.0.0-rc.12", - "lit": "^3.1.4", + "cheerio": "1.0.0", + "lit": "^3.2.0", "sass": "^1.77.8" }, "peerDependencies": { diff --git a/packages/integrations/markdoc/package.json b/packages/integrations/markdoc/package.json index e71327e4d7..8908cb54b1 100644 --- a/packages/integrations/markdoc/package.json +++ b/packages/integrations/markdoc/package.json @@ -80,7 +80,7 @@ "astro-scripts": "workspace:*", "devalue": "^5.0.0", "linkedom": "^0.18.4", - "vite": "^5.3.5" + "vite": "^5.4.0" }, "engines": { "node": "^18.17.1 || ^20.3.0 || >=21.0.0" diff --git a/packages/integrations/mdx/package.json b/packages/integrations/mdx/package.json index 4934f4f338..e8f9c743a3 100644 --- a/packages/integrations/mdx/package.json +++ b/packages/integrations/mdx/package.json @@ -57,7 +57,7 @@ "@types/mdast": "^4.0.4", "astro": "workspace:*", "astro-scripts": "workspace:*", - "cheerio": "1.0.0-rc.12", + "cheerio": "1.0.0", "linkedom": "^0.18.4", "mdast-util-mdx": "^3.0.0", "mdast-util-mdx-jsx": "^3.1.2", @@ -70,7 +70,7 @@ "remark-toc": "^9.0.0", "shiki": "^1.12.1", "unified": "^11.0.5", - "vite": "^5.3.5" + "vite": "^5.4.0" }, "engines": { "node": "^18.17.1 || ^20.3.0 || >=21.0.0" diff --git a/packages/integrations/node/package.json b/packages/integrations/node/package.json index 15321c528d..8db504040c 100644 --- a/packages/integrations/node/package.json +++ b/packages/integrations/node/package.json @@ -45,7 +45,7 @@ "@types/server-destroy": "^1.0.3", "astro": "workspace:*", "astro-scripts": "workspace:*", - "cheerio": "1.0.0-rc.12", + "cheerio": "1.0.0", "express": "^4.19.2", "node-mocks-http": "^1.15.1" }, diff --git a/packages/integrations/preact/package.json b/packages/integrations/preact/package.json index fce3ac1ce0..47a24a4cf0 100644 --- a/packages/integrations/preact/package.json +++ b/packages/integrations/preact/package.json @@ -40,7 +40,7 @@ "@preact/preset-vite": "2.8.2", "@preact/signals": "^1.3.0", "babel-plugin-transform-hook-names": "^1.0.2", - "preact-render-to-string": "^6.5.7" + "preact-render-to-string": "^6.5.8" }, "devDependencies": { "astro": "workspace:*", diff --git a/packages/integrations/react/package.json b/packages/integrations/react/package.json index a6d9cd9366..6f89518922 100644 --- a/packages/integrations/react/package.json +++ b/packages/integrations/react/package.json @@ -63,10 +63,10 @@ "@types/react-dom": "^18.3.0", "astro": "workspace:*", "astro-scripts": "workspace:*", - "cheerio": "1.0.0-rc.12", + "cheerio": "1.0.0", "react": "^18.3.1", "react-dom": "^18.3.1", - "vite": "^5.3.5" + "vite": "^5.4.0" }, "peerDependencies": { "@types/react": "^17.0.50 || ^18.0.21", diff --git a/packages/integrations/react/test/fixtures/react-component/package.json b/packages/integrations/react/test/fixtures/react-component/package.json index ec58c9d707..783fb87c3d 100644 --- a/packages/integrations/react/test/fixtures/react-component/package.json +++ b/packages/integrations/react/test/fixtures/react-component/package.json @@ -8,6 +8,6 @@ "astro": "workspace:*", "react": "^18.3.1", "react-dom": "^18.3.1", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/integrations/solid/package.json b/packages/integrations/solid/package.json index 0c7a538615..bc104a7d64 100644 --- a/packages/integrations/solid/package.json +++ b/packages/integrations/solid/package.json @@ -40,8 +40,8 @@ "devDependencies": { "astro": "workspace:*", "astro-scripts": "workspace:*", - "solid-js": "^1.8.19", - "vite": "^5.3.5" + "solid-js": "^1.8.20", + "vite": "^5.4.0" }, "peerDependencies": { "solid-devtools": "^0.30.1", diff --git a/packages/integrations/svelte/package.json b/packages/integrations/svelte/package.json index e071375bdd..67b630df9a 100644 --- a/packages/integrations/svelte/package.json +++ b/packages/integrations/svelte/package.json @@ -57,7 +57,7 @@ "astro": "workspace:*", "astro-scripts": "workspace:*", "svelte": "^4.2.18", - "vite": "^5.3.5" + "vite": "^5.4.0" }, "peerDependencies": { "astro": "^4.0.0", diff --git a/packages/integrations/tailwind/package.json b/packages/integrations/tailwind/package.json index 3c54122887..c33b4fd574 100644 --- a/packages/integrations/tailwind/package.json +++ b/packages/integrations/tailwind/package.json @@ -34,14 +34,14 @@ }, "dependencies": { "autoprefixer": "^10.4.20", - "postcss": "^8.4.40", + "postcss": "^8.4.41", "postcss-load-config": "^4.0.2" }, "devDependencies": { "astro": "workspace:*", "astro-scripts": "workspace:*", - "tailwindcss": "^3.4.7", - "vite": "^5.3.5" + "tailwindcss": "^3.4.9", + "vite": "^5.4.0" }, "peerDependencies": { "astro": "^3.0.0 || ^4.0.0", diff --git a/packages/integrations/vercel/package.json b/packages/integrations/vercel/package.json index 13eb23fbca..70fe485b28 100644 --- a/packages/integrations/vercel/package.json +++ b/packages/integrations/vercel/package.json @@ -65,7 +65,7 @@ "devDependencies": { "astro": "workspace:*", "astro-scripts": "workspace:*", - "cheerio": "1.0.0-rc.12" + "cheerio": "1.0.0" }, "publishConfig": { "provenance": true diff --git a/packages/integrations/vercel/test/speed-insights.test.js b/packages/integrations/vercel/test/speed-insights.test.js index 2ee9dcc3bf..28ca84cd20 100644 --- a/packages/integrations/vercel/test/speed-insights.test.js +++ b/packages/integrations/vercel/test/speed-insights.test.js @@ -20,7 +20,7 @@ describe('Vercel Speed Insights', () => { const bundle = await fixture.readFile(`../.vercel/output/static/_astro/${page}`); - assert.match(bundle, /https:\/\/vitals.vercel-analytics.com\/v1\/vitals/); + assert.match(bundle, /VERCEL_ANALYTICS_ID/); }); }); @@ -41,7 +41,7 @@ describe('Vercel Speed Insights', () => { const bundle = await fixture.readFile(`../.vercel/output/static/_astro/${page}`); - assert.match(bundle, /https:\/\/vitals.vercel-analytics.com\/v1\/vitals/); + assert.match(bundle, /VERCEL_ANALYTICS_ID/); }); }); }); diff --git a/packages/integrations/vue/package.json b/packages/integrations/vue/package.json index b618ab5660..3275816b46 100644 --- a/packages/integrations/vue/package.json +++ b/packages/integrations/vue/package.json @@ -46,16 +46,16 @@ "dependencies": { "@vitejs/plugin-vue": "^5.1.2", "@vitejs/plugin-vue-jsx": "^4.0.0", - "@vue/compiler-sfc": "^3.4.35", + "@vue/compiler-sfc": "^3.4.37", "vite-plugin-vue-devtools": "^7.3.7" }, "devDependencies": { "astro": "workspace:*", "astro-scripts": "workspace:*", - "cheerio": "1.0.0-rc.12", + "cheerio": "1.0.0", "linkedom": "^0.18.4", - "vite": "^5.3.5", - "vue": "^3.4.35" + "vite": "^5.4.0", + "vue": "^3.4.37" }, "peerDependencies": { "astro": "^4.0.0", diff --git a/packages/integrations/vue/test/fixtures/app-entrypoint-async/package.json b/packages/integrations/vue/test/fixtures/app-entrypoint-async/package.json index 3298771c65..25a1ccb034 100644 --- a/packages/integrations/vue/test/fixtures/app-entrypoint-async/package.json +++ b/packages/integrations/vue/test/fixtures/app-entrypoint-async/package.json @@ -6,6 +6,6 @@ "@astrojs/vue": "workspace:*", "astro": "workspace:*", "vite-svg-loader": "5.1.0", - "vue": "^3.4.35" + "vue": "^3.4.37" } } \ No newline at end of file diff --git a/packages/integrations/vue/test/fixtures/app-entrypoint-no-export-default/package.json b/packages/integrations/vue/test/fixtures/app-entrypoint-no-export-default/package.json index da24b219d6..8397e9f8ca 100644 --- a/packages/integrations/vue/test/fixtures/app-entrypoint-no-export-default/package.json +++ b/packages/integrations/vue/test/fixtures/app-entrypoint-no-export-default/package.json @@ -9,6 +9,6 @@ "@astrojs/vue": "workspace:*", "astro": "workspace:*", "vite-svg-loader": "5.1.0", - "vue": "^3.4.35" + "vue": "^3.4.37" } } diff --git a/packages/integrations/vue/test/fixtures/app-entrypoint/package.json b/packages/integrations/vue/test/fixtures/app-entrypoint/package.json index dea6130e9d..ae93135823 100644 --- a/packages/integrations/vue/test/fixtures/app-entrypoint/package.json +++ b/packages/integrations/vue/test/fixtures/app-entrypoint/package.json @@ -6,6 +6,6 @@ "@astrojs/vue": "workspace:*", "astro": "workspace:*", "vite-svg-loader": "5.1.0", - "vue": "^3.4.35" + "vue": "^3.4.37" } } \ No newline at end of file diff --git a/packages/integrations/web-vitals/package.json b/packages/integrations/web-vitals/package.json index 4c2f989ce5..7ae27f2476 100644 --- a/packages/integrations/web-vitals/package.json +++ b/packages/integrations/web-vitals/package.json @@ -32,7 +32,7 @@ "test": "astro-scripts test --timeout 50000 \"test/**/*.test.js\"" }, "dependencies": { - "web-vitals": "^4.2.2" + "web-vitals": "^4.2.3" }, "peerDependencies": { "@astrojs/db": "^0.12.0" diff --git a/packages/studio/package.json b/packages/studio/package.json index 1102f6f680..6a4271888d 100644 --- a/packages/studio/package.json +++ b/packages/studio/package.json @@ -42,6 +42,6 @@ "astro": "workspace:*", "astro-scripts": "workspace:*", "typescript": "^5.5.4", - "vite": "^5.3.5" + "vite": "^5.4.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 094253e044..6332cd00ff 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,8 +13,8 @@ importers: version: link:benchmark devDependencies: '@astrojs/check': - specifier: ^0.9.1 - version: 0.9.1(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4) + specifier: ^0.9.2 + version: 0.9.2(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4) '@biomejs/biome': specifier: 1.8.3 version: 1.8.3 @@ -31,14 +31,14 @@ importers: specifier: ^0.21.5 version: 0.21.5 eslint: - specifier: ^9.8.0 - version: 9.8.0 + specifier: ^9.9.0 + version: 9.9.0(jiti@1.21.0) eslint-plugin-no-only-tests: specifier: ^3.1.0 version: 3.1.0 eslint-plugin-regexp: specifier: ^2.6.0 - version: 2.6.0(eslint@9.8.0) + version: 2.6.0(eslint@9.9.0(jiti@1.21.0)) globby: specifier: ^14.0.2 version: 14.0.2 @@ -59,7 +59,7 @@ importers: version: 5.5.4 typescript-eslint: specifier: ^8.0.1 - version: 8.0.1(eslint@9.8.0)(typescript@5.5.4) + version: 8.0.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4) benchmark: dependencies: @@ -189,8 +189,8 @@ importers: specifier: ^4.13.3 version: link:../../packages/astro lit: - specifier: ^3.1.4 - version: 3.1.4 + specifier: ^3.2.0 + version: 3.2.0 examples/framework-multiple: dependencies: @@ -228,14 +228,14 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 svelte: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) examples/framework-preact: dependencies: @@ -282,8 +282,8 @@ importers: specifier: ^4.13.3 version: link:../../packages/astro solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 examples/framework-svelte: dependencies: @@ -306,8 +306,8 @@ importers: specifier: ^4.13.3 version: link:../../packages/astro vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) examples/hackernews: dependencies: @@ -374,7 +374,7 @@ importers: version: 6.6.0 '@tailwindcss/forms': specifier: ^0.5.7 - version: 0.5.7(tailwindcss@3.4.7) + version: 0.5.7(tailwindcss@3.4.9) '@types/react': specifier: ^18.3.3 version: 18.3.3 @@ -385,8 +385,8 @@ importers: specifier: ^4.13.3 version: link:../../packages/astro postcss: - specifier: ^8.4.40 - version: 8.4.40 + specifier: ^8.4.41 + version: 8.4.41 react: specifier: ^18.3.1 version: 18.3.1 @@ -394,8 +394,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) tailwindcss: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.9 + version: 3.4.9 examples/ssr: dependencies: @@ -503,13 +503,13 @@ importers: version: link:../../packages/integrations/preact '@nanostores/preact': specifier: ^0.5.2 - version: 0.5.2(nanostores@0.11.0)(preact@10.23.1) + version: 0.5.2(nanostores@0.11.2)(preact@10.23.1) astro: specifier: ^4.13.3 version: link:../../packages/astro nanostores: - specifier: ^0.11.0 - version: 0.11.0 + specifier: ^0.11.2 + version: 0.11.2 preact: specifier: ^10.23.1 version: 10.23.1 @@ -530,16 +530,16 @@ importers: version: link:../../packages/astro autoprefixer: specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.40) + version: 10.4.20(postcss@8.4.41) canvas-confetti: specifier: ^1.9.3 version: 1.9.3 postcss: - specifier: ^8.4.40 - version: 8.4.40 + specifier: ^8.4.41 + version: 8.4.41 tailwindcss: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.9 + version: 3.4.9 examples/with-vitest: dependencies: @@ -553,8 +553,8 @@ importers: packages/astro: dependencies: '@astrojs/compiler': - specifier: ^2.10.1 - version: 2.10.1 + specifier: ^2.10.2 + version: 2.10.2 '@astrojs/internal-helpers': specifier: workspace:* version: link:../internal-helpers @@ -721,11 +721,11 @@ importers: specifier: ^6.0.2 version: 6.0.2 vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + specifier: ^5.4.0 + version: 5.4.0(@types/node@18.19.31)(sass@1.77.8) vitefu: specifier: ^0.2.5 - version: 0.2.5(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8)) + version: 0.2.5(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8)) which-pm: specifier: ^3.0.0 version: 3.0.0 @@ -744,11 +744,11 @@ importers: version: 0.33.3 devDependencies: '@astrojs/check': - specifier: ^0.9.1 - version: 0.9.1(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4) + specifier: ^0.9.2 + version: 0.9.2(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4) '@playwright/test': - specifier: ^1.45.3 - version: 1.45.3 + specifier: ^1.46.0 + version: 1.46.0 '@types/aria-query': specifier: ^5.0.4 version: 5.0.4 @@ -801,8 +801,8 @@ importers: specifier: workspace:* version: link:../../scripts cheerio: - specifier: 1.0.0-rc.12 - version: 1.0.0-rc.12 + specifier: 1.0.0 + version: 1.0.0 eol: specifier: ^0.9.1 version: 0.9.1 @@ -843,8 +843,8 @@ importers: specifier: ^1.77.8 version: 1.77.8 undici: - specifier: ^6.19.5 - version: 6.19.5 + specifier: ^6.19.7 + version: 6.19.7 unified: specifier: ^11.0.5 version: 11.0.5 @@ -893,8 +893,8 @@ importers: packages/astro/e2e/fixtures/actions-blog: dependencies: '@astrojs/check': - specifier: ^0.9.1 - version: 0.9.1(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4) + specifier: ^0.9.2 + version: 0.9.2(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4) '@astrojs/db': specifier: workspace:* version: link:../../../../db @@ -926,8 +926,8 @@ importers: packages/astro/e2e/fixtures/actions-react-19: dependencies: '@astrojs/check': - specifier: ^0.9.1 - version: 0.9.1(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4) + specifier: ^0.9.2 + version: 0.9.2(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4) '@astrojs/db': specifier: workspace:* version: link:../../../../db @@ -980,8 +980,8 @@ importers: specifier: workspace:* version: link:../../.. vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) packages/astro/e2e/fixtures/client-only: dependencies: @@ -995,14 +995,14 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 svelte: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1119,14 +1119,14 @@ importers: specifier: ^1.77.8 version: 1.77.8 solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 svelte: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) packages/astro/e2e/fixtures/hmr: devDependencies: @@ -1167,8 +1167,8 @@ importers: specifier: workspace:* version: link:../../.. lit: - specifier: ^3.1.4 - version: 3.1.4 + specifier: ^3.2.0 + version: 3.2.0 packages/astro/e2e/fixtures/multiple-frameworks: dependencies: @@ -1176,8 +1176,8 @@ importers: specifier: ^0.2.1 version: 0.2.1 lit: - specifier: ^3.1.4 - version: 3.1.4 + specifier: ^3.2.0 + version: 3.2.0 preact: specifier: ^10.23.1 version: 10.23.1 @@ -1188,14 +1188,14 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 svelte: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) devDependencies: '@astrojs/lit': specifier: workspace:* @@ -1247,14 +1247,14 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 svelte: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1287,14 +1287,14 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 svelte: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1327,14 +1327,14 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 svelte: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1367,14 +1367,14 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 svelte: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1407,14 +1407,14 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 svelte: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1447,14 +1447,14 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 svelte: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1594,8 +1594,8 @@ importers: version: link:../../.. devDependencies: solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 packages/astro/e2e/fixtures/solid-component: dependencies: @@ -1609,8 +1609,8 @@ importers: specifier: workspace:* version: link:../../.. solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 packages/astro/e2e/fixtures/solid-recurse: dependencies: @@ -1622,8 +1622,8 @@ importers: version: link:../../.. devDependencies: solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 packages/astro/e2e/fixtures/svelte-component: dependencies: @@ -1650,13 +1650,13 @@ importers: version: link:../../.. autoprefixer: specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.40) + version: 10.4.20(postcss@8.4.41) postcss: - specifier: ^8.4.40 - version: 8.4.40 + specifier: ^8.4.41 + version: 8.4.41 tailwindcss: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.9 + version: 3.4.9 packages/astro/e2e/fixtures/ts-resolution: dependencies: @@ -1700,8 +1700,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) packages/astro/e2e/fixtures/vue-component: dependencies: @@ -1715,8 +1715,8 @@ importers: specifier: workspace:* version: link:../../.. vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) packages/astro/performance: devDependencies: @@ -1844,8 +1844,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) packages/astro/test/fixtures/actions: dependencies: @@ -2017,8 +2017,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) packages/astro/test/fixtures/astro-class-list: dependencies: @@ -2175,8 +2175,8 @@ importers: specifier: workspace:* version: link:../../.. vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) packages/astro/test/fixtures/astro-expr: dependencies: @@ -2460,14 +2460,14 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 svelte: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) packages/astro/test/fixtures/before-hydration: dependencies: @@ -2605,8 +2605,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) packages/astro/test/fixtures/content: dependencies: @@ -3060,8 +3060,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) packages/astro/test/fixtures/fontsource-package: dependencies: @@ -3252,14 +3252,14 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 svelte: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) devDependencies: '@astrojs/mdx': specifier: workspace:* @@ -3292,8 +3292,8 @@ importers: specifier: workspace:* version: link:../../.. solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 packages/astro/test/fixtures/lazy-layout: dependencies: @@ -3313,8 +3313,8 @@ importers: specifier: workspace:* version: link:../../.. lit: - specifier: ^3.1.4 - version: 3.1.4 + specifier: ^3.2.0 + version: 3.2.0 packages/astro/test/fixtures/markdown: dependencies: @@ -3435,23 +3435,23 @@ importers: version: link:../../.. autoprefixer: specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.40) + version: 10.4.20(postcss@8.4.41) postcss: - specifier: ^8.4.40 - version: 8.4.40 + specifier: ^8.4.41 + version: 8.4.41 solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 svelte: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) devDependencies: postcss-preset-env: specifier: ^10.0.0 - version: 10.0.0(postcss@8.4.40) + version: 10.0.0(postcss@8.4.41) packages/astro/test/fixtures/preact-compat-component: dependencies: @@ -3513,8 +3513,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 packages/astro/test/fixtures/react-jsx-export: dependencies: @@ -3703,8 +3703,8 @@ importers: specifier: workspace:* version: link:../../.. solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 packages/astro/test/fixtures/slots-svelte: dependencies: @@ -3733,8 +3733,8 @@ importers: specifier: workspace:* version: link:../../.. vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) packages/astro/test/fixtures/solid-component: dependencies: @@ -3743,7 +3743,7 @@ importers: version: link:../../../../integrations/solid '@solidjs/router': specifier: ^0.14.1 - version: 0.14.1(solid-js@1.8.19) + version: 0.14.1(solid-js@1.8.20) '@test/solid-jsx-component': specifier: file:./deps/solid-jsx-component version: link:deps/solid-jsx-component @@ -3751,14 +3751,14 @@ importers: specifier: workspace:* version: link:../../.. solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 packages/astro/test/fixtures/solid-component/deps/solid-jsx-component: dependencies: solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 packages/astro/test/fixtures/sourcemap: dependencies: @@ -4059,13 +4059,13 @@ importers: version: link:../../.. autoprefixer: specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.40) + version: 10.4.20(postcss@8.4.41) postcss: - specifier: ^8.4.40 - version: 8.4.40 + specifier: ^8.4.41 + version: 8.4.41 tailwindcss: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.9 + version: 3.4.9 packages/astro/test/fixtures/tailwindcss-ts: dependencies: @@ -4076,11 +4076,11 @@ importers: specifier: workspace:* version: link:../../.. postcss: - specifier: ^8.4.40 - version: 8.4.40 + specifier: ^8.4.41 + version: 8.4.41 tailwindcss: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.9 + version: 3.4.9 packages/astro/test/fixtures/third-party-astro: dependencies: @@ -4139,8 +4139,8 @@ importers: specifier: workspace:* version: link:../../.. vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) packages/astro/test/fixtures/vue-jsx: dependencies: @@ -4151,8 +4151,8 @@ importers: specifier: workspace:* version: link:../../.. vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) packages/astro/test/fixtures/vue-with-multi-renderer: dependencies: @@ -4169,8 +4169,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) packages/astro/test/fixtures/with-endpoint-routes: dependencies: @@ -4220,8 +4220,8 @@ importers: specifier: workspace:* version: link:../studio '@libsql/client': - specifier: ^0.8.1 - version: 0.8.1 + specifier: ^0.9.0 + version: 0.9.0 async-listen: specifier: ^3.0.1 version: 3.0.1 @@ -4230,7 +4230,7 @@ importers: version: 1.0.2 drizzle-orm: specifier: ^0.31.2 - version: 0.31.4(@libsql/client@0.8.1)(@types/react@18.3.3)(react@18.3.1) + version: 0.31.4(@libsql/client@0.9.0)(@types/react@18.3.3)(react@18.3.1) github-slugger: specifier: ^2.0.0 version: 2.0.0 @@ -4275,14 +4275,14 @@ importers: specifier: workspace:* version: link:../../scripts cheerio: - specifier: 1.0.0-rc.12 - version: 1.0.0-rc.12 + specifier: 1.0.0 + version: 1.0.0 typescript: specifier: ^5.5.4 version: 5.5.4 vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + specifier: ^5.4.0 + version: 5.4.0(@types/node@18.19.31)(sass@1.77.8) packages/db/test/fixtures/basics: dependencies: @@ -4377,8 +4377,8 @@ importers: packages/db/test/fixtures/ticketing-example: dependencies: '@astrojs/check': - specifier: ^0.9.1 - version: 0.9.1(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4) + specifier: ^0.9.2 + version: 0.9.2(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4) '@astrojs/db': specifier: workspace:* version: link:../../.. @@ -4386,7 +4386,7 @@ importers: specifier: workspace:* version: link:../../../../integrations/node '@astrojs/react': - specifier: ^3.6.1 + specifier: ^3.6.2 version: link:../../../../integrations/react '@types/react': specifier: ^18.3.3 @@ -4419,8 +4419,8 @@ importers: packages/integrations/alpinejs: devDependencies: '@playwright/test': - specifier: 1.45.3 - version: 1.45.3 + specifier: 1.46.0 + version: 1.46.0 astro: specifier: workspace:* version: link:../../astro @@ -4428,8 +4428,8 @@ importers: specifier: workspace:* version: link:../../../scripts vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + specifier: ^5.4.0 + version: 5.4.0(@types/node@18.19.31)(sass@1.77.8) packages/integrations/alpinejs/test/fixtures/basics: dependencies: @@ -4487,8 +4487,8 @@ importers: specifier: ^1.1.7 version: 1.1.7 '@lit-labs/ssr-dom-shim': - specifier: ^1.2.0 - version: 1.2.0 + specifier: ^1.2.1 + version: 1.2.1 parse5: specifier: ^7.1.2 version: 7.1.2 @@ -4500,11 +4500,11 @@ importers: specifier: workspace:* version: link:../../../scripts cheerio: - specifier: 1.0.0-rc.12 - version: 1.0.0-rc.12 + specifier: 1.0.0 + version: 1.0.0 lit: - specifier: ^3.1.4 - version: 3.1.4 + specifier: ^3.2.0 + version: 3.2.0 sass: specifier: ^1.77.8 version: 1.77.8 @@ -4552,8 +4552,8 @@ importers: specifier: ^0.18.4 version: 0.18.4 vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + specifier: ^5.4.0 + version: 5.4.0(@types/node@18.19.31)(sass@1.77.8) packages/integrations/markdoc/test/fixtures/content-collections: dependencies: @@ -4757,8 +4757,8 @@ importers: specifier: workspace:* version: link:../../../scripts cheerio: - specifier: 1.0.0-rc.12 - version: 1.0.0-rc.12 + specifier: 1.0.0 + version: 1.0.0 linkedom: specifier: ^0.18.4 version: 0.18.4 @@ -4796,8 +4796,8 @@ importers: specifier: ^11.0.5 version: 11.0.5 vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + specifier: ^5.4.0 + version: 5.4.0(@types/node@18.19.31)(sass@1.77.8) packages/integrations/mdx/test/fixtures/css-head-mdx: dependencies: @@ -4982,8 +4982,8 @@ importers: specifier: workspace:* version: link:../../../scripts cheerio: - specifier: 1.0.0-rc.12 - version: 1.0.0-rc.12 + specifier: 1.0.0 + version: 1.0.0 express: specifier: ^4.19.2 version: 4.19.2 @@ -5143,7 +5143,7 @@ importers: version: 7.24.7(@babel/core@7.25.2) '@preact/preset-vite': specifier: 2.8.2 - version: 2.8.2(@babel/core@7.25.2)(preact@10.23.1)(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8)) + version: 2.8.2(@babel/core@7.25.2)(preact@10.23.1)(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8)) '@preact/signals': specifier: ^1.3.0 version: 1.3.0(preact@10.23.1) @@ -5151,8 +5151,8 @@ importers: specifier: ^1.0.2 version: 1.0.2(@babel/core@7.25.2) preact-render-to-string: - specifier: ^6.5.7 - version: 6.5.7(preact@10.23.1) + specifier: ^6.5.8 + version: 6.5.8(preact@10.23.1) devDependencies: astro: specifier: workspace:* @@ -5168,7 +5168,7 @@ importers: dependencies: '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8)) + version: 4.3.1(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8)) ultrahtml: specifier: ^1.5.3 version: 1.5.3 @@ -5186,8 +5186,8 @@ importers: specifier: workspace:* version: link:../../../scripts cheerio: - specifier: 1.0.0-rc.12 - version: 1.0.0-rc.12 + specifier: 1.0.0 + version: 1.0.0 react: specifier: ^18.3.1 version: 18.3.1 @@ -5195,8 +5195,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + specifier: ^5.4.0 + version: 5.4.0(@types/node@18.19.31)(sass@1.77.8) packages/integrations/react/test/fixtures/react-component: dependencies: @@ -5216,8 +5216,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) packages/integrations/sitemap: dependencies: @@ -5284,7 +5284,7 @@ importers: dependencies: vite-plugin-solid: specifier: ^2.10.2 - version: 2.10.2(solid-js@1.8.19)(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8)) + version: 2.10.2(solid-js@1.8.20)(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8)) devDependencies: astro: specifier: workspace:* @@ -5293,17 +5293,17 @@ importers: specifier: workspace:* version: link:../../../scripts solid-js: - specifier: ^1.8.19 - version: 1.8.19 + specifier: ^1.8.20 + version: 1.8.20 vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + specifier: ^5.4.0 + version: 5.4.0(@types/node@18.19.31)(sass@1.77.8) packages/integrations/svelte: dependencies: '@sveltejs/vite-plugin-svelte': specifier: ^3.1.1 - version: 3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8)) + version: 3.1.1(svelte@4.2.18)(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8)) svelte2tsx: specifier: ^0.7.15 version: 0.7.15(svelte@4.2.18)(typescript@5.5.4) @@ -5318,20 +5318,20 @@ importers: specifier: ^4.2.18 version: 4.2.18 vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + specifier: ^5.4.0 + version: 5.4.0(@types/node@18.19.31)(sass@1.77.8) packages/integrations/tailwind: dependencies: autoprefixer: specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.40) + version: 10.4.20(postcss@8.4.41) postcss: - specifier: ^8.4.40 - version: 8.4.40 + specifier: ^8.4.41 + version: 8.4.41 postcss-load-config: specifier: ^4.0.2 - version: 4.0.2(postcss@8.4.40) + version: 4.0.2(postcss@8.4.41) devDependencies: astro: specifier: workspace:* @@ -5340,11 +5340,11 @@ importers: specifier: workspace:* version: link:../../../scripts tailwindcss: - specifier: ^3.4.7 - version: 3.4.7 + specifier: ^3.4.9 + version: 3.4.9 vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + specifier: ^5.4.0 + version: 5.4.0(@types/node@18.19.31)(sass@1.77.8) packages/integrations/tailwind/test/fixtures/basic: dependencies: @@ -5386,8 +5386,8 @@ importers: specifier: workspace:* version: link:../../../scripts cheerio: - specifier: 1.0.0-rc.12 - version: 1.0.0-rc.12 + specifier: 1.0.0 + version: 1.0.0 packages/integrations/vercel/test/fixtures/basic: dependencies: @@ -5582,16 +5582,16 @@ importers: dependencies: '@vitejs/plugin-vue': specifier: ^5.1.2 - version: 5.1.2(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.35(typescript@5.5.4)) + version: 5.1.2(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.37(typescript@5.5.4)) '@vitejs/plugin-vue-jsx': specifier: ^4.0.0 - version: 4.0.0(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.35(typescript@5.5.4)) + version: 4.0.0(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.37(typescript@5.5.4)) '@vue/compiler-sfc': - specifier: ^3.4.35 - version: 3.4.35 + specifier: ^3.4.37 + version: 3.4.37 vite-plugin-vue-devtools: specifier: ^7.3.7 - version: 7.3.7(rollup@4.20.0)(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.35(typescript@5.5.4)) + version: 7.3.7(rollup@4.20.0)(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.37(typescript@5.5.4)) devDependencies: astro: specifier: workspace:* @@ -5600,17 +5600,17 @@ importers: specifier: workspace:* version: link:../../../scripts cheerio: - specifier: 1.0.0-rc.12 - version: 1.0.0-rc.12 + specifier: 1.0.0 + version: 1.0.0 linkedom: specifier: ^0.18.4 version: 0.18.4 vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + specifier: ^5.4.0 + version: 5.4.0(@types/node@18.19.31)(sass@1.77.8) vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) packages/integrations/vue/test/fixtures/app-entrypoint: dependencies: @@ -5622,10 +5622,10 @@ importers: version: link:../../../../../astro vite-svg-loader: specifier: 5.1.0 - version: 5.1.0(vue@3.4.35(typescript@5.5.4)) + version: 5.1.0(vue@3.4.37(typescript@5.5.4)) vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) packages/integrations/vue/test/fixtures/app-entrypoint-async: dependencies: @@ -5637,10 +5637,10 @@ importers: version: link:../../../../../astro vite-svg-loader: specifier: 5.1.0 - version: 5.1.0(vue@3.4.35(typescript@5.5.4)) + version: 5.1.0(vue@3.4.37(typescript@5.5.4)) vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) packages/integrations/vue/test/fixtures/app-entrypoint-css: dependencies: @@ -5661,10 +5661,10 @@ importers: version: link:../../../../../astro vite-svg-loader: specifier: 5.1.0 - version: 5.1.0(vue@3.4.35(typescript@5.5.4)) + version: 5.1.0(vue@3.4.37(typescript@5.5.4)) vue: - specifier: ^3.4.35 - version: 3.4.35(typescript@5.5.4) + specifier: ^3.4.37 + version: 3.4.37(typescript@5.5.4) packages/integrations/vue/test/fixtures/app-entrypoint-relative: dependencies: @@ -5696,8 +5696,8 @@ importers: packages/integrations/web-vitals: dependencies: web-vitals: - specifier: ^4.2.2 - version: 4.2.2 + specifier: ^4.2.3 + version: 4.2.3 devDependencies: '@astrojs/db': specifier: workspace:* @@ -5834,8 +5834,8 @@ importers: specifier: ^5.5.4 version: 5.5.4 vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + specifier: ^5.4.0 + version: 5.4.0(@types/node@18.19.31)(sass@1.77.8) packages/telemetry: dependencies: @@ -6006,8 +6006,8 @@ packages: peerDependencies: astro: ^2.0.0 || ^3.0.0-beta || ^4.0.0-beta - '@astrojs/check@0.9.1': - resolution: {integrity: sha512-VvN5ukVzg0IccKuZlI/pdsp4MSpHxWf9a36eOmS8Wpp+NM0MhJLYv3yvQC+qa472Kdf8DHEt/wmVZYwJUMFW+w==} + '@astrojs/check@0.9.2': + resolution: {integrity: sha512-6rWxtJTbd/ctdAlmla0CAvloGaai5IUTG0K21kctJHHGKJKnGH6Xana7m0zNOtHpVPEJi1SgC/TcsN+ltYt0Cg==} hasBin: true peerDependencies: typescript: ^5.0.0 @@ -6016,11 +6016,11 @@ packages: resolution: {integrity: sha512-bVzyKzEpIwqjihBU/aUzt1LQckJuHK0agd3/ITdXhPUYculrc6K1/K7H+XG4rwjXtg+ikT3PM05V1MVYWiIvQw==} engines: {node: '>=18.14.1'} - '@astrojs/compiler@2.10.1': - resolution: {integrity: sha512-XmM4j6BjvOVMag2xELq0JuG2yKOW8wgIu6dvb9BsjbGYmnvoStJn/pqEzVqc1EBszf2xYT7onIkftIOUz9AwrQ==} + '@astrojs/compiler@2.10.2': + resolution: {integrity: sha512-bvH+v8AirwpRWCkYJEyWYdc5Cs/BjG2ZTxIJzttHilXgfKJAdW2496KsUQKzf5j2tOHtaHXKKn9hb9WZiBGpEg==} - '@astrojs/language-server@2.13.1': - resolution: {integrity: sha512-Cl9ynfnge6+MaCpehYn7w9WrAE+sVS7onhxhMzCdqzPtIt/Yo5zIaiGZdu4QgvmOV/mdNBZCZgaTpAIeGjWwsQ==} + '@astrojs/language-server@2.13.2': + resolution: {integrity: sha512-l435EZLKjaUO/6iewJ7xqd3eHf3zAosVWG4woILbxluQcianBoNPepnnqAg7uUriZUaC44ae5v0Q+AfB8UI64g==} hasBin: true peerDependencies: prettier: ^3.0.0 @@ -6774,8 +6774,8 @@ packages: resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.8.0': - resolution: {integrity: sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==} + '@eslint/js@9.9.0': + resolution: {integrity: sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': @@ -6961,19 +6961,29 @@ packages: peerDependencies: tslib: '2' - '@libsql/client@0.8.1': - resolution: {integrity: sha512-xGg0F4iTDFpeBZ0r4pA6icGsYa5rG6RAG+i/iLDnpCAnSuTqEWMDdPlVseiq4Z/91lWI9jvvKKiKpovqJ1kZWA==} + '@libsql/client@0.9.0': + resolution: {integrity: sha512-mT+91wtb8pxK9SWd566D5W2VUCemksUMqICRBtf0WXiS7XzNcQhWyrwYOnVrVmTSze/SCCsNNEKIkCRwk/pr2Q==} - '@libsql/core@0.8.1': - resolution: {integrity: sha512-u6nrj6HZMTPsgJ9EBhLzO2uhqhlHQJQmVHV+0yFLvfGf3oSP8w7TjZCNUgu1G8jHISx6KFi7bmcrdXW9lRt++A==} + '@libsql/core@0.9.0': + resolution: {integrity: sha512-rCsS/EC32K8ARjDQJGqauGZmkR6orOOY4I7898PyQ/mmltAkMwRgz5kjEmYRZ42o7mP0ayJfbw28qgv7SRFEgg==} - '@libsql/darwin-arm64@0.3.12': - resolution: {integrity: sha512-rBiMebxLgsShSEg73CibeuenlUMKXnaW/XoUk3tii1C1U7141w6k5VuF6/jnNl/cS7PMK/vy+2V5N/k++yvb9A==} + '@libsql/darwin-arm64@0.3.19': + resolution: {integrity: sha512-rmOqsLcDI65zzxlUOoEiPJLhqmbFsZF6p4UJQ2kMqB+Kc0Rt5/A1OAdOZ/Wo8fQfJWjR1IbkbpEINFioyKf+nQ==} cpu: [arm64] os: [darwin] - '@libsql/darwin-x64@0.3.12': - resolution: {integrity: sha512-T1yXSG1WukLq41hEWTU3G1kuV9TVoc+90KFs1KGluLrGvpj5l1QIff35hQlWWi6c1tfPsdlydR6qIO6AZdUwNg==} + '@libsql/darwin-arm64@0.4.1': + resolution: {integrity: sha512-XICT9/OyU8Aa9Iv1xZIHgvM09n/1OQUk3VC+s5uavzdiGHrDMkOWzN47JN7/FiMa/NWrcgoEiDMk3+e7mE53Ig==} + cpu: [arm64] + os: [darwin] + + '@libsql/darwin-x64@0.3.19': + resolution: {integrity: sha512-q9O55B646zU+644SMmOQL3FIfpmEvdWpRpzubwFc2trsa+zoBlSkHuzU9v/C+UNoPHQVRMP7KQctJ455I/h/xw==} + cpu: [x64] + os: [darwin] + + '@libsql/darwin-x64@0.4.1': + resolution: {integrity: sha512-pSKxhRrhu4SsTD+IBRZXcs1SkwMdeAG1tv6Z/Ctp/sOEYrgkU8MDKLqkOr9NsmwpK4S0+JdwjkLMyhTkct/5TQ==} cpu: [x64] os: [darwin] @@ -6986,36 +6996,61 @@ packages: '@libsql/isomorphic-ws@0.1.5': resolution: {integrity: sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==} - '@libsql/linux-arm64-gnu@0.3.12': - resolution: {integrity: sha512-1tmLuj02vySklkadwYEjvXFhyipyNr7oufe55tJK0hqvjQEcqfzBqAD3AHvPo41ug0qlrB2GRpiBlJtcIu2dMQ==} + '@libsql/linux-arm64-gnu@0.3.19': + resolution: {integrity: sha512-mgeAUU1oqqh57k7I3cQyU6Trpdsdt607eFyEmH5QO7dv303ti+LjUvh1pp21QWV6WX7wZyjeJV1/VzEImB+jRg==} cpu: [arm64] os: [linux] - '@libsql/linux-arm64-musl@0.3.12': - resolution: {integrity: sha512-sM2NJTYe1FiixpJbebTllfV6uuSB1WIOfgQVHb7cJP0Jik5Kyq5F9n4reF6QKRivbPAn3kk6f5uRZKHBE6rvXw==} + '@libsql/linux-arm64-gnu@0.4.1': + resolution: {integrity: sha512-9lpvb24tO2qZd9nq5dlq3ESA3hSKYWBIK7lJjfiCM6f7a70AUwBY9QoPJV9q4gILIyVnR1YBGrlm50nnb+dYgw==} cpu: [arm64] os: [linux] - '@libsql/linux-x64-gnu@0.3.12': - resolution: {integrity: sha512-x8+Qo09osyOWs0/+D48Ml+CMlU33yCXznv4PYfQJc1NWA0dcQkSK353raYebH+cJhNIv0RcEz3ltTT3ME+HwAQ==} + '@libsql/linux-arm64-musl@0.3.19': + resolution: {integrity: sha512-VEZtxghyK6zwGzU9PHohvNxthruSxBEnRrX7BSL5jQ62tN4n2JNepJ6SdzXp70pdzTfwroOj/eMwiPt94gkVRg==} + cpu: [arm64] + os: [linux] + + '@libsql/linux-arm64-musl@0.4.1': + resolution: {integrity: sha512-lyxi+lFxE+NcBRDMQCxCtDg3c4WcKAbc9u63d5+B23Vm+UgphD9XY4seu+tGrBy1MU2tuNVix7r9S7ECpAaVrA==} + cpu: [arm64] + os: [linux] + + '@libsql/linux-x64-gnu@0.3.19': + resolution: {integrity: sha512-2t/J7LD5w2f63wGihEO+0GxfTyYIyLGEvTFEsMO16XI5o7IS9vcSHrxsvAJs4w2Pf907uDjmc7fUfMg6L82BrQ==} cpu: [x64] os: [linux] - '@libsql/linux-x64-musl@0.3.12': - resolution: {integrity: sha512-wY5G8zx727wvg5n/qB4oK357u3HQlz84oNG0XTrKnJVCxqR91Yg6bU+fKsGrvyaGFEqLmZ/Ft0K0pi6Mn/k4vQ==} + '@libsql/linux-x64-gnu@0.4.1': + resolution: {integrity: sha512-psvuQ3UFBEmDFV8ZHG+WkUHIJiWv+elZ+zIPvOVedlIKdxG1O+8WthWUAhFHOGnbiyzc4sAZ4c3de1oCvyHxyQ==} cpu: [x64] os: [linux] - '@libsql/win32-x64-msvc@0.3.12': - resolution: {integrity: sha512-ko9Ph0ssQk2rUiNXfbquZ4fXXKb/E47GE6+caA4gNt4+rgFc1ksaffekYwym24Zk4VDYsvAQNOpwgd9baIBzLA==} + '@libsql/linux-x64-musl@0.3.19': + resolution: {integrity: sha512-BLsXyJaL8gZD8+3W2LU08lDEd9MIgGds0yPy5iNPp8tfhXx3pV/Fge2GErN0FC+nzt4DYQtjL+A9GUMglQefXQ==} + cpu: [x64] + os: [linux] + + '@libsql/linux-x64-musl@0.4.1': + resolution: {integrity: sha512-PDidJ3AhGDqosGg3OAZzGxMFIbnuOALya4BoezJKl667AFv3x7BBQ30H81Mngsq3Fh8RkJkXSdWfL91+Txb1iA==} + cpu: [x64] + os: [linux] + + '@libsql/win32-x64-msvc@0.3.19': + resolution: {integrity: sha512-ay1X9AobE4BpzG0XPw1gplyLZPGHIgJOovvW23gUrukRegiUP62uzhpRbKNogLlUOynyXeq//prHgPXiebUfWg==} + cpu: [x64] + os: [win32] + + '@libsql/win32-x64-msvc@0.4.1': + resolution: {integrity: sha512-IdODVqV/PrdOnHA/004uWyorZQuRsB7U7bCRCE3vXgABj3eJLJGc6cv2C6ksEaEoVxJbD8k53H4VVAGrtYwXzQ==} cpu: [x64] os: [win32] '@lit-labs/ssr-client@1.1.7': resolution: {integrity: sha512-VvqhY/iif3FHrlhkzEPsuX/7h/NqnfxLwVf0p8ghNIlKegRyRqgeaJevZ57s/u/LiFyKgqksRP5n+LmNvpxN+A==} - '@lit-labs/ssr-dom-shim@1.2.0': - resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==} + '@lit-labs/ssr-dom-shim@1.2.1': + resolution: {integrity: sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==} '@lit-labs/ssr@3.2.2': resolution: {integrity: sha512-He5TzeNPM9ECmVpgXRYmVlz0UA5YnzHlT43kyLi2Lu6mUidskqJVonk9W5K699+2DKhoXp8Ra4EJmHR6KrcW1Q==} @@ -7131,8 +7166,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@playwright/test@1.45.3': - resolution: {integrity: sha512-UKF4XsBfy+u3MFWEH44hva1Q8Da28G6RFtR2+5saw+jgAFQV5yYnB1fu68Mz7fO+5GJF3wgwAIs0UelU8TxFrA==} + '@playwright/test@1.46.0': + resolution: {integrity: sha512-/QYft5VArOrGRP5pgkrfKksqsKA6CEFyGQ/gjNe6q0y4tZ1aaPfq4gIjudr1s3D+pXyrPRdsy4opKDrjBabE5w==} engines: {node: '>=18'} hasBin: true @@ -7668,17 +7703,17 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@vue/compiler-core@3.4.35': - resolution: {integrity: sha512-gKp0zGoLnMYtw4uS/SJRRO7rsVggLjvot3mcctlMXunYNsX+aRJDqqw/lV5/gHK91nvaAAlWFgdVl020AW1Prg==} + '@vue/compiler-core@3.4.37': + resolution: {integrity: sha512-ZDDT/KiLKuCRXyzWecNzC5vTcubGz4LECAtfGPENpo0nrmqJHwuWtRLxk/Sb9RAKtR9iFflFycbkjkY+W/PZUQ==} - '@vue/compiler-dom@3.4.35': - resolution: {integrity: sha512-pWIZRL76/oE/VMhdv/ovZfmuooEni6JPG1BFe7oLk5DZRo/ImydXijoZl/4kh2406boRQ7lxTYzbZEEXEhj9NQ==} + '@vue/compiler-dom@3.4.37': + resolution: {integrity: sha512-rIiSmL3YrntvgYV84rekAtU/xfogMUJIclUMeIKEtVBFngOL3IeZHhsH3UaFEgB5iFGpj6IW+8YuM/2Up+vVag==} - '@vue/compiler-sfc@3.4.35': - resolution: {integrity: sha512-xacnRS/h/FCsjsMfxBkzjoNxyxEyKyZfBch/P4vkLRvYJwe5ChXmZZrj8Dsed/752H2Q3JE8kYu9Uyha9J6PgA==} + '@vue/compiler-sfc@3.4.37': + resolution: {integrity: sha512-vCfetdas40Wk9aK/WWf8XcVESffsbNkBQwS5t13Y/PcfqKfIwJX2gF+82th6dOpnpbptNMlMjAny80li7TaCIg==} - '@vue/compiler-ssr@3.4.35': - resolution: {integrity: sha512-7iynB+0KB1AAJKk/biENTV5cRGHRdbdaD7Mx3nWcm1W8bVD6QmnH3B4AHhQQ1qZHhqFwzEzMwiytXm3PX1e60A==} + '@vue/compiler-ssr@3.4.37': + resolution: {integrity: sha512-TyAgYBWrHlFrt4qpdACh8e9Ms6C/AZQ6A6xLJaWrCL8GCX5DxMzxyeFAEMfU/VFr4tylHm+a2NpfJpcd7+20XA==} '@vue/devtools-core@7.3.7': resolution: {integrity: sha512-IapWbHUqvO6n+p5JFTCE5JyNjpsZ5IS1GYIRX0P7/SqYPgFCOdH0dG+u8PbBHYdnp+VPxHLO+GGZ/WBZFCZnsA==} @@ -7694,25 +7729,25 @@ packages: '@vue/reactivity@3.1.5': resolution: {integrity: sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==} - '@vue/reactivity@3.4.35': - resolution: {integrity: sha512-Ggtz7ZZHakriKioveJtPlStYardwQH6VCs9V13/4qjHSQb/teE30LVJNrbBVs4+aoYGtTQKJbTe4CWGxVZrvEw==} + '@vue/reactivity@3.4.37': + resolution: {integrity: sha512-UmdKXGx0BZ5kkxPqQr3PK3tElz6adTey4307NzZ3whZu19i5VavYal7u2FfOmAzlcDVgE8+X0HZ2LxLb/jgbYw==} - '@vue/runtime-core@3.4.35': - resolution: {integrity: sha512-D+BAjFoWwT5wtITpSxwqfWZiBClhBbR+bm0VQlWYFOadUUXFo+5wbe9ErXhLvwguPiLZdEF13QAWi2vP3ZD5tA==} + '@vue/runtime-core@3.4.37': + resolution: {integrity: sha512-MNjrVoLV/sirHZoD7QAilU1Ifs7m/KJv4/84QVbE6nyAZGQNVOa1HGxaOzp9YqCG+GpLt1hNDC4RbH+KtanV7w==} - '@vue/runtime-dom@3.4.35': - resolution: {integrity: sha512-yGOlbos+MVhlS5NWBF2HDNgblG8e2MY3+GigHEyR/dREAluvI5tuUUgie3/9XeqhPE4LF0i2wjlduh5thnfOqw==} + '@vue/runtime-dom@3.4.37': + resolution: {integrity: sha512-Mg2EwgGZqtwKrqdL/FKMF2NEaOHuH+Ks9TQn3DHKyX//hQTYOun+7Tqp1eo0P4Ds+SjltZshOSRq6VsU0baaNg==} - '@vue/server-renderer@3.4.35': - resolution: {integrity: sha512-iZ0e/u9mRE4T8tNhlo0tbA+gzVkgv8r5BX6s1kRbOZqfpq14qoIvCZ5gIgraOmYkMYrSEZgkkojFPr+Nyq/Mnw==} + '@vue/server-renderer@3.4.37': + resolution: {integrity: sha512-jZ5FAHDR2KBq2FsRUJW6GKDOAG9lUTX8aBEGq4Vf6B/35I9fPce66BornuwmqmKgfiSlecwuOb6oeoamYMohkg==} peerDependencies: - vue: 3.4.35 + vue: 3.4.37 '@vue/shared@3.1.5': resolution: {integrity: sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==} - '@vue/shared@3.4.35': - resolution: {integrity: sha512-hvuhBYYDe+b1G8KHxsQ0diDqDMA8D9laxWZhNAjE83VZb5UDaXl9Xnz7cGdDSyiHM90qqI/CyGMcpBpiDy6VVQ==} + '@vue/shared@3.4.37': + resolution: {integrity: sha512-nIh8P2fc3DflG8+5Uw8PT/1i17ccFn0xxN/5oE9RfV5SVnd7G0XEFRwakrnNFE/jlS95fpGXDVG5zDETS26nmg==} '@webcomponents/template-shadowroot@0.2.1': resolution: {integrity: sha512-fXL/vIUakyZL62hyvUh+EMwbVoTc0hksublmRz6ai6et8znHkJa6gtqMUZo1oc7dIz46exHSIImml9QTdknMHg==} @@ -8037,9 +8072,9 @@ packages: cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - cheerio@1.0.0-rc.12: - resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} - engines: {node: '>= 6'} + cheerio@1.0.0: + resolution: {integrity: sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==} + engines: {node: '>=18.17'} chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} @@ -8534,6 +8569,9 @@ packages: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} + encoding-sniffer@0.2.0: + resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==} + enhanced-resolve@5.16.0: resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==} engines: {node: '>=10.13.0'} @@ -8546,6 +8584,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + entities@5.0.0: + resolution: {integrity: sha512-BeJFvFRJddxobhvEdm5GqHzRV/X+ACeuw0/BuuxsCh1EUZcAIz8+kYmBp/LrQuloy6K1f3a0M7+IhmZ7QnkISA==} + engines: {node: '>=0.12'} + eol@0.9.1: resolution: {integrity: sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==} @@ -8614,10 +8656,15 @@ packages: resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.8.0: - resolution: {integrity: sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==} + eslint@9.9.0: + resolution: {integrity: sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true esm@3.2.25: resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} @@ -9337,9 +9384,12 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - libsql@0.3.12: - resolution: {integrity: sha512-to30hj8O3DjS97wpbKN6ERZ8k66MN1IaOfFLR6oHqd25GMiPJ/ZX0VaZ7w+TsPmxcFS3p71qArj/hiedCyvXCg==} - cpu: [x64, arm64, wasm32] + libsql@0.3.19: + resolution: {integrity: sha512-Aj5cQ5uk/6fHdmeW0TiXK42FqUlwx7ytmMLPSaUQPin5HKKKuUPD62MAbN4OEweGBBI7q1BekoEN4gPUEL6MZA==} + os: [darwin, linux, win32] + + libsql@0.4.1: + resolution: {integrity: sha512-qZlR9Yu1zMBeLChzkE/cKfoKV3Esp9cn9Vx5Zirn4AVhDWPcjYhKwbtJcMuHehgk3mH+fJr9qW+3vesBWbQpBg==} os: [darwin, linux, win32] lilconfig@2.1.0: @@ -9359,14 +9409,14 @@ packages: linkedom@0.18.4: resolution: {integrity: sha512-JhLErxMIEOKByMi3fURXgI1fYOzR87L1Cn0+MI9GlMckFrqFZpV1SUGox1jcKtsKN3y6JgclcQf0FzZT//BuGw==} - lit-element@4.0.4: - resolution: {integrity: sha512-98CvgulX6eCPs6TyAIQoJZBCQPo80rgXR+dVBs61cstJXqtI+USQZAbA4gFHh6L/mxBx9MrgPLHLsUgDUHAcCQ==} + lit-element@4.1.0: + resolution: {integrity: sha512-gSejRUQJuMQjV2Z59KAS/D4iElUhwKpIyJvZ9w+DIagIQjfJnhR20h2Q5ddpzXGS+fF0tMZ/xEYGMnKmaI/iww==} - lit-html@3.1.2: - resolution: {integrity: sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg==} + lit-html@3.2.0: + resolution: {integrity: sha512-pwT/HwoxqI9FggTrYVarkBKFN9MlTUpLrDHubTmW4SrkL3kkqW5gxwbxMMUnbbRHBC0WTZnYHcjDSCM559VyfA==} - lit@3.1.4: - resolution: {integrity: sha512-q6qKnKXHy2g1kjBaNfcoLlgbI3+aSOZ9Q4tiGa9bGYXq5RBXxkVTqTIVmP2VWMp29L4GyvCFm8ZQ2o56eUAMyA==} + lit@3.2.0: + resolution: {integrity: sha512-s6tI33Lf6VpDu7u4YqsSX78D28bYQulM+VAzsGch4fx2H0eLZnJsUBsPWmGYSGoKDNbjtRv02rio1o+UdPVwvw==} lite-youtube-embed@0.3.2: resolution: {integrity: sha512-b1dgKyF4PHhinonmr3PB172Nj0qQgA/7DE9EmeIXHR1ksnFEC2olWjNJyJGdsN2cleKHRjjsmrziKlwXtPlmLQ==} @@ -9789,8 +9839,8 @@ packages: engines: {node: ^18 || >=20} hasBin: true - nanostores@0.11.0: - resolution: {integrity: sha512-fT2u3vmWmUt93G9dmUgpnbs3AAYJb6lzu7KrJ1FdC/rjFopGiboS3bfKYv6NNkuY6g6eiRakTR48wKSL/F5C+g==} + nanostores@0.11.2: + resolution: {integrity: sha512-6bucNxMJA5rNV554WQl+MWGng0QVMzlRgpKTHHfIbVLrhQ+yRXBychV9ECGVuuUfCMQPjfIG9bj8oJFZ9hYP/Q==} engines: {node: ^18.0.0 || >=20.0.0} natural-compare@1.4.0: @@ -10003,6 +10053,9 @@ packages: parse5-htmlparser2-tree-adapter@7.0.0: resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} + parse5-parser-stream@7.1.2: + resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} + parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} @@ -10089,13 +10142,13 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - playwright-core@1.45.3: - resolution: {integrity: sha512-+ym0jNbcjikaOwwSZycFbwkWgfruWvYlJfThKYAlImbxUgdWFO2oW70ojPm4OpE4t6TAo2FY/smM+hpVTtkhDA==} + playwright-core@1.46.0: + resolution: {integrity: sha512-9Y/d5UIwuJk8t3+lhmMSAJyNP1BUC/DqP3cQJDQQL/oWqAiuPTLgy7Q5dzglmTLwcBRdetzgNM/gni7ckfTr6A==} engines: {node: '>=18'} hasBin: true - playwright@1.45.3: - resolution: {integrity: sha512-QhVaS+lpluxCaioejDZ95l4Y4jSFCsBvl2UZkpeXlzxmqS+aABr5c82YmfMHrL6x27nvrvykJAFpkzT2eWdJww==} + playwright@1.46.0: + resolution: {integrity: sha512-XYJ5WvfefWONh1uPAUAi0H2xXV5S3vrtcnXe6uAOgdGi3aSpqOSXX08IAjXW34xitfuOJsvXU5anXZxPSEQiJw==} engines: {node: '>=18'} hasBin: true @@ -10292,12 +10345,12 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.40: - resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} + postcss@8.4.41: + resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} engines: {node: ^10 || ^12 || >=14} - preact-render-to-string@6.5.7: - resolution: {integrity: sha512-nACZDdv/ZZciuldVYMcfGqr61DKJeaAfPx96hn6OXoBGhgtU2yGQkA0EpTzWH4SvnwF0syLsL4WK7AIp3Ruc1g==} + preact-render-to-string@6.5.8: + resolution: {integrity: sha512-VwldmyF+5G6eqTH26uyXY2+a9fh7ry8roYnIEwarB6OnT1bVN7lnlFvh0ldeKJ7/JtvMoWO5jz9tyykRlAIDyA==} peerDependencies: preact: '>=10' @@ -10758,8 +10811,8 @@ packages: resolution: {integrity: sha512-TzobUYoEft/xBtb2voRPryAUIvYguG0V7Tt3de79I1WfXgCwelqVsGuZSnu3GFGRZhXR90AeEYIM+icuB/S06Q==} hasBin: true - solid-js@1.8.19: - resolution: {integrity: sha512-h8z/TvTQYsf894LM9Iau/ZW2iAKrCzAWDwjPhMcXnonmW1OIIihc28wp82b1wwei1p81fH5+gnfNOe8RzLbDRQ==} + solid-js@1.8.20: + resolution: {integrity: sha512-SsgaExCJ97mPm9WpAusjZ484Z8zTp8ggiueQOsrm81iAP7UaxaN+wiOgnPcJ9u6B2SQpoQ4FiDPAZBqVWi1V4g==} solid-refresh@0.6.3: resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==} @@ -10929,8 +10982,8 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - tailwindcss@3.4.7: - resolution: {integrity: sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==} + tailwindcss@3.4.9: + resolution: {integrity: sha512-1SEOvRr6sSdV5IDf9iC+NU4dhwdqzF4zKKq3sAbasUWHEM6lsMhX+eNN5gkPx1BvLFEnZQEUFbXnGj8Qlp83Pg==} engines: {node: '>=14.0.0'} hasBin: true @@ -11153,8 +11206,8 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici@6.19.5: - resolution: {integrity: sha512-LryC15SWzqQsREHIOUybavaIHF5IoL0dJ9aWWxL/PgT1KfqAW5225FZpDUFlt9xiDMS2/S7DOKhFWA7RLksWdg==} + undici@6.19.7: + resolution: {integrity: sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A==} engines: {node: '>=18.17'} unicorn-magic@0.1.0: @@ -11325,8 +11378,8 @@ packages: peerDependencies: vue: '>=3.2.13' - vite@5.3.5: - resolution: {integrity: sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==} + vite@5.4.0: + resolution: {integrity: sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -11334,6 +11387,7 @@ packages: less: '*' lightningcss: ^1.21.0 sass: '*' + sass-embedded: '*' stylus: '*' sugarss: '*' terser: ^5.4.0 @@ -11346,6 +11400,8 @@ packages: optional: true sass: optional: true + sass-embedded: + optional: true stylus: optional: true sugarss: @@ -11475,8 +11531,8 @@ packages: vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - vue@3.4.35: - resolution: {integrity: sha512-+fl/GLmI4GPileHftVlCdB7fUL4aziPcqTudpTGXCT8s+iZWuOCeNEB5haX6Uz2IpRrbEXOgIFbe+XciCuGbNQ==} + vue@3.4.37: + resolution: {integrity: sha512-3vXvNfkKTBsSJ7JP+LyR7GBuwQuckbWvuwAid3xbqK9ppsKt/DUvfqgZ48fgOLEfpy1IacL5f8QhUVl77RaI7A==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -11497,8 +11553,8 @@ packages: web-vitals@3.5.2: resolution: {integrity: sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg==} - web-vitals@4.2.2: - resolution: {integrity: sha512-nYfoOqb4EmElljyXU2qdeE76KsvoHdftQKY4DzA9Aw8DervCg2bG634pHLrJ/d6+B4mE3nWTSJv8Mo7B2mbZkw==} + web-vitals@4.2.3: + resolution: {integrity: sha512-/CFAm1mNxSmOj6i0Co+iGFJ58OS4NRGVP+AWS/l509uIK5a1bSoIVaHz/ZumpHTfHSZBpgrJ+wjfpAOrTHok5Q==} webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -11704,9 +11760,9 @@ snapshots: astro: link:packages/astro lite-youtube-embed: 0.3.2 - '@astrojs/check@0.9.1(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4)': + '@astrojs/check@0.9.2(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4)': dependencies: - '@astrojs/language-server': 2.13.1(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4) + '@astrojs/language-server': 2.13.2(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4) chokidar: 3.6.0 fast-glob: 3.3.2 kleur: 4.1.5 @@ -11722,11 +11778,11 @@ snapshots: log-update: 5.0.1 sisteransi: 1.0.5 - '@astrojs/compiler@2.10.1': {} + '@astrojs/compiler@2.10.2': {} - '@astrojs/language-server@2.13.1(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4)': + '@astrojs/language-server@2.13.2(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.4)': dependencies: - '@astrojs/compiler': 2.10.1 + '@astrojs/compiler': 2.10.2 '@jridgewell/sourcemap-codec': 1.5.0 '@volar/kit': 2.4.0-alpha.16(typescript@5.5.4) '@volar/language-core': 2.4.0-alpha.16 @@ -12258,201 +12314,201 @@ snapshots: '@csstools/css-parser-algorithms': 3.0.0(@csstools/css-tokenizer@3.0.0) '@csstools/css-tokenizer': 3.0.0 - '@csstools/postcss-cascade-layers@5.0.0(postcss@8.4.40)': + '@csstools/postcss-cascade-layers@5.0.0(postcss@8.4.41)': dependencies: '@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.0) - postcss: 8.4.40 + postcss: 8.4.41 postcss-selector-parser: 6.1.0 - '@csstools/postcss-color-function@4.0.0(postcss@8.4.40)': + '@csstools/postcss-color-function@4.0.0(postcss@8.4.41)': dependencies: '@csstools/css-color-parser': 3.0.0(@csstools/css-parser-algorithms@3.0.0(@csstools/css-tokenizer@3.0.0))(@csstools/css-tokenizer@3.0.0) '@csstools/css-parser-algorithms': 3.0.0(@csstools/css-tokenizer@3.0.0) '@csstools/css-tokenizer': 3.0.0 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.40) - '@csstools/utilities': 2.0.0(postcss@8.4.40) - postcss: 8.4.40 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41) + '@csstools/utilities': 2.0.0(postcss@8.4.41) + postcss: 8.4.41 - '@csstools/postcss-color-mix-function@3.0.0(postcss@8.4.40)': + '@csstools/postcss-color-mix-function@3.0.0(postcss@8.4.41)': dependencies: '@csstools/css-color-parser': 3.0.0(@csstools/css-parser-algorithms@3.0.0(@csstools/css-tokenizer@3.0.0))(@csstools/css-tokenizer@3.0.0) '@csstools/css-parser-algorithms': 3.0.0(@csstools/css-tokenizer@3.0.0) '@csstools/css-tokenizer': 3.0.0 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.40) - '@csstools/utilities': 2.0.0(postcss@8.4.40) - postcss: 8.4.40 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41) + '@csstools/utilities': 2.0.0(postcss@8.4.41) + postcss: 8.4.41 - '@csstools/postcss-content-alt-text@2.0.0(postcss@8.4.40)': + '@csstools/postcss-content-alt-text@2.0.0(postcss@8.4.41)': dependencies: '@csstools/css-parser-algorithms': 3.0.0(@csstools/css-tokenizer@3.0.0) '@csstools/css-tokenizer': 3.0.0 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.40) - '@csstools/utilities': 2.0.0(postcss@8.4.40) - postcss: 8.4.40 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41) + '@csstools/utilities': 2.0.0(postcss@8.4.41) + postcss: 8.4.41 - '@csstools/postcss-exponential-functions@2.0.0(postcss@8.4.40)': + '@csstools/postcss-exponential-functions@2.0.0(postcss@8.4.41)': dependencies: '@csstools/css-calc': 2.0.0(@csstools/css-parser-algorithms@3.0.0(@csstools/css-tokenizer@3.0.0))(@csstools/css-tokenizer@3.0.0) '@csstools/css-parser-algorithms': 3.0.0(@csstools/css-tokenizer@3.0.0) '@csstools/css-tokenizer': 3.0.0 - postcss: 8.4.40 + postcss: 8.4.41 - '@csstools/postcss-font-format-keywords@4.0.0(postcss@8.4.40)': + '@csstools/postcss-font-format-keywords@4.0.0(postcss@8.4.41)': dependencies: - '@csstools/utilities': 2.0.0(postcss@8.4.40) - postcss: 8.4.40 + '@csstools/utilities': 2.0.0(postcss@8.4.41) + postcss: 8.4.41 postcss-value-parser: 4.2.0 - '@csstools/postcss-gamut-mapping@2.0.0(postcss@8.4.40)': + '@csstools/postcss-gamut-mapping@2.0.0(postcss@8.4.41)': dependencies: '@csstools/css-color-parser': 3.0.0(@csstools/css-parser-algorithms@3.0.0(@csstools/css-tokenizer@3.0.0))(@csstools/css-tokenizer@3.0.0) '@csstools/css-parser-algorithms': 3.0.0(@csstools/css-tokenizer@3.0.0) '@csstools/css-tokenizer': 3.0.0 - postcss: 8.4.40 + postcss: 8.4.41 - '@csstools/postcss-gradients-interpolation-method@5.0.0(postcss@8.4.40)': + '@csstools/postcss-gradients-interpolation-method@5.0.0(postcss@8.4.41)': dependencies: '@csstools/css-color-parser': 3.0.0(@csstools/css-parser-algorithms@3.0.0(@csstools/css-tokenizer@3.0.0))(@csstools/css-tokenizer@3.0.0) '@csstools/css-parser-algorithms': 3.0.0(@csstools/css-tokenizer@3.0.0) '@csstools/css-tokenizer': 3.0.0 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.40) - '@csstools/utilities': 2.0.0(postcss@8.4.40) - postcss: 8.4.40 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41) + '@csstools/utilities': 2.0.0(postcss@8.4.41) + postcss: 8.4.41 - '@csstools/postcss-hwb-function@4.0.0(postcss@8.4.40)': + '@csstools/postcss-hwb-function@4.0.0(postcss@8.4.41)': dependencies: '@csstools/css-color-parser': 3.0.0(@csstools/css-parser-algorithms@3.0.0(@csstools/css-tokenizer@3.0.0))(@csstools/css-tokenizer@3.0.0) '@csstools/css-parser-algorithms': 3.0.0(@csstools/css-tokenizer@3.0.0) '@csstools/css-tokenizer': 3.0.0 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.40) - '@csstools/utilities': 2.0.0(postcss@8.4.40) - postcss: 8.4.40 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41) + '@csstools/utilities': 2.0.0(postcss@8.4.41) + postcss: 8.4.41 - '@csstools/postcss-ic-unit@4.0.0(postcss@8.4.40)': + '@csstools/postcss-ic-unit@4.0.0(postcss@8.4.41)': dependencies: - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.40) - '@csstools/utilities': 2.0.0(postcss@8.4.40) - postcss: 8.4.40 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41) + '@csstools/utilities': 2.0.0(postcss@8.4.41) + postcss: 8.4.41 postcss-value-parser: 4.2.0 - '@csstools/postcss-initial@2.0.0(postcss@8.4.40)': + '@csstools/postcss-initial@2.0.0(postcss@8.4.41)': dependencies: - postcss: 8.4.40 + postcss: 8.4.41 - '@csstools/postcss-is-pseudo-class@5.0.0(postcss@8.4.40)': + '@csstools/postcss-is-pseudo-class@5.0.0(postcss@8.4.41)': dependencies: '@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.0) - postcss: 8.4.40 + postcss: 8.4.41 postcss-selector-parser: 6.1.0 - '@csstools/postcss-light-dark-function@2.0.0(postcss@8.4.40)': + '@csstools/postcss-light-dark-function@2.0.0(postcss@8.4.41)': dependencies: '@csstools/css-parser-algorithms': 3.0.0(@csstools/css-tokenizer@3.0.0) '@csstools/css-tokenizer': 3.0.0 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.40) - '@csstools/utilities': 2.0.0(postcss@8.4.40) - postcss: 8.4.40 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41) + '@csstools/utilities': 2.0.0(postcss@8.4.41) + postcss: 8.4.41 - '@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.4.40)': + '@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.4.41)': dependencies: - postcss: 8.4.40 + postcss: 8.4.41 - '@csstools/postcss-logical-overflow@2.0.0(postcss@8.4.40)': + '@csstools/postcss-logical-overflow@2.0.0(postcss@8.4.41)': dependencies: - postcss: 8.4.40 + postcss: 8.4.41 - '@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.4.40)': + '@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.4.41)': dependencies: - postcss: 8.4.40 + postcss: 8.4.41 - '@csstools/postcss-logical-resize@3.0.0(postcss@8.4.40)': + '@csstools/postcss-logical-resize@3.0.0(postcss@8.4.41)': dependencies: - postcss: 8.4.40 + postcss: 8.4.41 postcss-value-parser: 4.2.0 - '@csstools/postcss-logical-viewport-units@3.0.0(postcss@8.4.40)': + '@csstools/postcss-logical-viewport-units@3.0.0(postcss@8.4.41)': dependencies: '@csstools/css-tokenizer': 3.0.0 - '@csstools/utilities': 2.0.0(postcss@8.4.40) - postcss: 8.4.40 + '@csstools/utilities': 2.0.0(postcss@8.4.41) + postcss: 8.4.41 - '@csstools/postcss-media-minmax@2.0.0(postcss@8.4.40)': + '@csstools/postcss-media-minmax@2.0.0(postcss@8.4.41)': dependencies: '@csstools/css-calc': 2.0.0(@csstools/css-parser-algorithms@3.0.0(@csstools/css-tokenizer@3.0.0))(@csstools/css-tokenizer@3.0.0) '@csstools/css-parser-algorithms': 3.0.0(@csstools/css-tokenizer@3.0.0) '@csstools/css-tokenizer': 3.0.0 '@csstools/media-query-list-parser': 3.0.0(@csstools/css-parser-algorithms@3.0.0(@csstools/css-tokenizer@3.0.0))(@csstools/css-tokenizer@3.0.0) - postcss: 8.4.40 + postcss: 8.4.41 - '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.0(postcss@8.4.40)': + '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.0(postcss@8.4.41)': dependencies: '@csstools/css-parser-algorithms': 3.0.0(@csstools/css-tokenizer@3.0.0) '@csstools/css-tokenizer': 3.0.0 '@csstools/media-query-list-parser': 3.0.0(@csstools/css-parser-algorithms@3.0.0(@csstools/css-tokenizer@3.0.0))(@csstools/css-tokenizer@3.0.0) - postcss: 8.4.40 + postcss: 8.4.41 - '@csstools/postcss-nested-calc@4.0.0(postcss@8.4.40)': + '@csstools/postcss-nested-calc@4.0.0(postcss@8.4.41)': dependencies: - '@csstools/utilities': 2.0.0(postcss@8.4.40) - postcss: 8.4.40 + '@csstools/utilities': 2.0.0(postcss@8.4.41) + postcss: 8.4.41 postcss-value-parser: 4.2.0 - '@csstools/postcss-normalize-display-values@4.0.0(postcss@8.4.40)': + '@csstools/postcss-normalize-display-values@4.0.0(postcss@8.4.41)': dependencies: - postcss: 8.4.40 + postcss: 8.4.41 postcss-value-parser: 4.2.0 - '@csstools/postcss-oklab-function@4.0.0(postcss@8.4.40)': + '@csstools/postcss-oklab-function@4.0.0(postcss@8.4.41)': dependencies: '@csstools/css-color-parser': 3.0.0(@csstools/css-parser-algorithms@3.0.0(@csstools/css-tokenizer@3.0.0))(@csstools/css-tokenizer@3.0.0) '@csstools/css-parser-algorithms': 3.0.0(@csstools/css-tokenizer@3.0.0) '@csstools/css-tokenizer': 3.0.0 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.40) - '@csstools/utilities': 2.0.0(postcss@8.4.40) - postcss: 8.4.40 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41) + '@csstools/utilities': 2.0.0(postcss@8.4.41) + postcss: 8.4.41 - '@csstools/postcss-progressive-custom-properties@4.0.0(postcss@8.4.40)': + '@csstools/postcss-progressive-custom-properties@4.0.0(postcss@8.4.41)': dependencies: - postcss: 8.4.40 + postcss: 8.4.41 postcss-value-parser: 4.2.0 - '@csstools/postcss-relative-color-syntax@3.0.0(postcss@8.4.40)': + '@csstools/postcss-relative-color-syntax@3.0.0(postcss@8.4.41)': dependencies: '@csstools/css-color-parser': 3.0.0(@csstools/css-parser-algorithms@3.0.0(@csstools/css-tokenizer@3.0.0))(@csstools/css-tokenizer@3.0.0) '@csstools/css-parser-algorithms': 3.0.0(@csstools/css-tokenizer@3.0.0) '@csstools/css-tokenizer': 3.0.0 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.40) - '@csstools/utilities': 2.0.0(postcss@8.4.40) - postcss: 8.4.40 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41) + '@csstools/utilities': 2.0.0(postcss@8.4.41) + postcss: 8.4.41 - '@csstools/postcss-scope-pseudo-class@4.0.0(postcss@8.4.40)': + '@csstools/postcss-scope-pseudo-class@4.0.0(postcss@8.4.41)': dependencies: - postcss: 8.4.40 + postcss: 8.4.41 postcss-selector-parser: 6.1.0 - '@csstools/postcss-stepped-value-functions@4.0.0(postcss@8.4.40)': + '@csstools/postcss-stepped-value-functions@4.0.0(postcss@8.4.41)': dependencies: '@csstools/css-calc': 2.0.0(@csstools/css-parser-algorithms@3.0.0(@csstools/css-tokenizer@3.0.0))(@csstools/css-tokenizer@3.0.0) '@csstools/css-parser-algorithms': 3.0.0(@csstools/css-tokenizer@3.0.0) '@csstools/css-tokenizer': 3.0.0 - postcss: 8.4.40 + postcss: 8.4.41 - '@csstools/postcss-text-decoration-shorthand@4.0.0(postcss@8.4.40)': + '@csstools/postcss-text-decoration-shorthand@4.0.0(postcss@8.4.41)': dependencies: '@csstools/color-helpers': 4.2.1 - postcss: 8.4.40 + postcss: 8.4.41 postcss-value-parser: 4.2.0 - '@csstools/postcss-trigonometric-functions@4.0.0(postcss@8.4.40)': + '@csstools/postcss-trigonometric-functions@4.0.0(postcss@8.4.41)': dependencies: '@csstools/css-calc': 2.0.0(@csstools/css-parser-algorithms@3.0.0(@csstools/css-tokenizer@3.0.0))(@csstools/css-tokenizer@3.0.0) '@csstools/css-parser-algorithms': 3.0.0(@csstools/css-tokenizer@3.0.0) '@csstools/css-tokenizer': 3.0.0 - postcss: 8.4.40 + postcss: 8.4.41 - '@csstools/postcss-unset-value@4.0.0(postcss@8.4.40)': + '@csstools/postcss-unset-value@4.0.0(postcss@8.4.41)': dependencies: - postcss: 8.4.40 + postcss: 8.4.41 '@csstools/selector-resolve-nested@2.0.0(postcss-selector-parser@6.1.0)': dependencies: @@ -12462,9 +12518,9 @@ snapshots: dependencies: postcss-selector-parser: 6.1.0 - '@csstools/utilities@2.0.0(postcss@8.4.40)': + '@csstools/utilities@2.0.0(postcss@8.4.41)': dependencies: - postcss: 8.4.40 + postcss: 8.4.41 '@emmetio/abbreviation@2.3.3': dependencies: @@ -12563,9 +12619,9 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.8.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.9.0(jiti@1.21.0))': dependencies: - eslint: 9.8.0 + eslint: 9.9.0(jiti@1.21.0) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.11.0': {} @@ -12592,7 +12648,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.8.0': {} + '@eslint/js@9.9.0': {} '@eslint/object-schema@2.1.4': {} @@ -12729,25 +12785,31 @@ snapshots: dependencies: tslib: 2.6.2 - '@libsql/client@0.8.1': + '@libsql/client@0.9.0': dependencies: - '@libsql/core': 0.8.1 + '@libsql/core': 0.9.0 '@libsql/hrana-client': 0.6.2 js-base64: 3.7.7 - libsql: 0.3.12 + libsql: 0.4.1 promise-limit: 2.7.0 transitivePeerDependencies: - bufferutil - utf-8-validate - '@libsql/core@0.8.1': + '@libsql/core@0.9.0': dependencies: js-base64: 3.7.7 - '@libsql/darwin-arm64@0.3.12': + '@libsql/darwin-arm64@0.3.19': optional: true - '@libsql/darwin-x64@0.3.12': + '@libsql/darwin-arm64@0.4.1': + optional: true + + '@libsql/darwin-x64@0.3.19': + optional: true + + '@libsql/darwin-x64@0.4.1': optional: true '@libsql/hrana-client@0.6.2': @@ -12770,46 +12832,61 @@ snapshots: - bufferutil - utf-8-validate - '@libsql/linux-arm64-gnu@0.3.12': + '@libsql/linux-arm64-gnu@0.3.19': optional: true - '@libsql/linux-arm64-musl@0.3.12': + '@libsql/linux-arm64-gnu@0.4.1': optional: true - '@libsql/linux-x64-gnu@0.3.12': + '@libsql/linux-arm64-musl@0.3.19': optional: true - '@libsql/linux-x64-musl@0.3.12': + '@libsql/linux-arm64-musl@0.4.1': optional: true - '@libsql/win32-x64-msvc@0.3.12': + '@libsql/linux-x64-gnu@0.3.19': + optional: true + + '@libsql/linux-x64-gnu@0.4.1': + optional: true + + '@libsql/linux-x64-musl@0.3.19': + optional: true + + '@libsql/linux-x64-musl@0.4.1': + optional: true + + '@libsql/win32-x64-msvc@0.3.19': + optional: true + + '@libsql/win32-x64-msvc@0.4.1': optional: true '@lit-labs/ssr-client@1.1.7': dependencies: '@lit/reactive-element': 2.0.4 - lit: 3.1.4 - lit-html: 3.1.2 + lit: 3.2.0 + lit-html: 3.2.0 - '@lit-labs/ssr-dom-shim@1.2.0': {} + '@lit-labs/ssr-dom-shim@1.2.1': {} '@lit-labs/ssr@3.2.2': dependencies: '@lit-labs/ssr-client': 1.1.7 - '@lit-labs/ssr-dom-shim': 1.2.0 + '@lit-labs/ssr-dom-shim': 1.2.1 '@lit/reactive-element': 2.0.4 '@parse5/tools': 0.3.0 '@types/node': 16.18.96 enhanced-resolve: 5.16.0 - lit: 3.1.4 - lit-element: 4.0.4 - lit-html: 3.1.2 + lit: 3.2.0 + lit-element: 4.1.0 + lit-html: 3.2.0 node-fetch: 3.3.2 parse5: 7.1.2 '@lit/reactive-element@2.0.4': dependencies: - '@lit-labs/ssr-dom-shim': 1.2.0 + '@lit-labs/ssr-dom-shim': 1.2.1 '@manypkg/find-root@1.1.0': dependencies: @@ -12876,9 +12953,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@nanostores/preact@0.5.2(nanostores@0.11.0)(preact@10.23.1)': + '@nanostores/preact@0.5.2(nanostores@0.11.2)(preact@10.23.1)': dependencies: - nanostores: 0.11.0 + nanostores: 0.11.2 preact: 10.23.1 '@neon-rs/load@0.0.4': {} @@ -12902,7 +12979,7 @@ snapshots: '@octokit/plugin-paginate-rest': 11.3.0(@octokit/core@6.1.2) '@octokit/plugin-rest-endpoint-methods': 13.2.1(@octokit/core@6.1.2) '@octokit/types': 13.5.0 - undici: 6.19.5 + undici: 6.19.7 '@octokit/auth-action@5.1.1': dependencies: @@ -12968,18 +13045,18 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@playwright/test@1.45.3': + '@playwright/test@1.46.0': dependencies: - playwright: 1.45.3 + playwright: 1.46.0 '@polka/url@1.0.0-next.25': {} - '@preact/preset-vite@2.8.2(@babel/core@7.25.2)(preact@10.23.1)(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8))': + '@preact/preset-vite@2.8.2(@babel/core@7.25.2)(preact@10.23.1)(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.25.2) - '@prefresh/vite': 2.4.5(preact@10.23.1)(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8)) + '@prefresh/vite': 2.4.5(preact@10.23.1)(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8)) '@rollup/pluginutils': 4.2.1 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.25.2) debug: 4.3.6 @@ -12989,7 +13066,7 @@ snapshots: resolve: 1.22.8 source-map: 0.7.4 stack-trace: 1.0.0-pre2 - vite: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + vite: 5.4.0(@types/node@18.19.31)(sass@1.77.8) transitivePeerDependencies: - preact - supports-color @@ -13009,7 +13086,7 @@ snapshots: '@prefresh/utils@1.2.0': {} - '@prefresh/vite@2.4.5(preact@10.23.1)(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8))': + '@prefresh/vite@2.4.5(preact@10.23.1)(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8))': dependencies: '@babel/core': 7.25.2 '@prefresh/babel-plugin': 0.5.1 @@ -13017,7 +13094,7 @@ snapshots: '@prefresh/utils': 1.2.0 '@rollup/pluginutils': 4.2.1 preact: 10.23.1 - vite: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + vite: 5.4.0(@types/node@18.19.31)(sass@1.77.8) transitivePeerDependencies: - supports-color @@ -13088,37 +13165,37 @@ snapshots: '@sindresorhus/merge-streams@2.3.0': {} - '@solidjs/router@0.14.1(solid-js@1.8.19)': + '@solidjs/router@0.14.1(solid-js@1.8.20)': dependencies: - solid-js: 1.8.19 + solid-js: 1.8.20 - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8)))(svelte@4.2.18)(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8))': + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8)))(svelte@4.2.18)(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8)) + '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8)) debug: 4.3.6 svelte: 4.2.18 - vite: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + vite: 5.4.0(@types/node@18.19.31)(sass@1.77.8) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8))': + '@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8)))(svelte@4.2.18)(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8)) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8)))(svelte@4.2.18)(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8)) debug: 4.3.6 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.11 svelte: 4.2.18 svelte-hmr: 0.16.0(svelte@4.2.18) - vite: 5.3.5(@types/node@18.19.31)(sass@1.77.8) - vitefu: 0.2.5(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8)) + vite: 5.4.0(@types/node@18.19.31)(sass@1.77.8) + vitefu: 0.2.5(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8)) transitivePeerDependencies: - supports-color - '@tailwindcss/forms@0.5.7(tailwindcss@3.4.7)': + '@tailwindcss/forms@0.5.7(tailwindcss@3.4.9)': dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.4.7 + tailwindcss: 3.4.9 '@trysound/sax@0.2.0': {} @@ -13335,15 +13412,15 @@ snapshots: '@types/yargs-parser@21.0.3': {} - '@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/eslint-plugin@8.0.1(@typescript-eslint/parser@8.0.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.0.1(eslint@9.8.0)(typescript@5.5.4) + '@typescript-eslint/parser': 8.0.1(eslint@9.9.0(jiti@1.21.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/type-utils': 8.0.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4) + '@typescript-eslint/utils': 8.0.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4) '@typescript-eslint/visitor-keys': 8.0.1 - eslint: 9.8.0 + eslint: 9.9.0(jiti@1.21.0) graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -13353,14 +13430,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.0.1(eslint@9.8.0)(typescript@5.5.4)': + '@typescript-eslint/parser@8.0.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)': dependencies: '@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 + eslint: 9.9.0(jiti@1.21.0) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: @@ -13371,10 +13448,10 @@ snapshots: '@typescript-eslint/types': 8.0.1 '@typescript-eslint/visitor-keys': 8.0.1 - '@typescript-eslint/type-utils@8.0.1(eslint@9.8.0)(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.0.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)': dependencies: '@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) + '@typescript-eslint/utils': 8.0.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4) debug: 4.3.6 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: @@ -13400,13 +13477,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.0.1(eslint@9.8.0)(typescript@5.5.4)': + '@typescript-eslint/utils@8.0.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.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) - eslint: 9.8.0 + eslint: 9.9.0(jiti@1.21.0) transitivePeerDependencies: - supports-color - typescript @@ -13464,31 +13541,31 @@ snapshots: - encoding - supports-color - '@vitejs/plugin-react@4.3.1(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8))': + '@vitejs/plugin-react@4.3.1(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.25.2) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + vite: 5.4.0(@types/node@18.19.31)(sass@1.77.8) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue-jsx@4.0.0(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.35(typescript@5.5.4))': + '@vitejs/plugin-vue-jsx@4.0.0(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.37(typescript@5.5.4))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.25.2) '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.25.2) - vite: 5.3.5(@types/node@18.19.31)(sass@1.77.8) - vue: 3.4.35(typescript@5.5.4) + vite: 5.4.0(@types/node@18.19.31)(sass@1.77.8) + vue: 3.4.37(typescript@5.5.4) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.1.2(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.35(typescript@5.5.4))': + '@vitejs/plugin-vue@5.1.2(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.37(typescript@5.5.4))': dependencies: - vite: 5.3.5(@types/node@18.19.31)(sass@1.77.8) - vue: 3.4.35(typescript@5.5.4) + vite: 5.4.0(@types/node@18.19.31)(sass@1.77.8) + vue: 3.4.37(typescript@5.5.4) '@vitest/expect@2.0.5': dependencies: @@ -13606,47 +13683,47 @@ snapshots: '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.24.8 '@babel/parser': 7.25.3 - '@vue/compiler-sfc': 3.4.35 + '@vue/compiler-sfc': 3.4.37 - '@vue/compiler-core@3.4.35': + '@vue/compiler-core@3.4.37': dependencies: '@babel/parser': 7.25.3 - '@vue/shared': 3.4.35 - entities: 4.5.0 + '@vue/shared': 3.4.37 + entities: 5.0.0 estree-walker: 2.0.2 source-map-js: 1.2.0 - '@vue/compiler-dom@3.4.35': + '@vue/compiler-dom@3.4.37': dependencies: - '@vue/compiler-core': 3.4.35 - '@vue/shared': 3.4.35 + '@vue/compiler-core': 3.4.37 + '@vue/shared': 3.4.37 - '@vue/compiler-sfc@3.4.35': + '@vue/compiler-sfc@3.4.37': dependencies: '@babel/parser': 7.25.3 - '@vue/compiler-core': 3.4.35 - '@vue/compiler-dom': 3.4.35 - '@vue/compiler-ssr': 3.4.35 - '@vue/shared': 3.4.35 + '@vue/compiler-core': 3.4.37 + '@vue/compiler-dom': 3.4.37 + '@vue/compiler-ssr': 3.4.37 + '@vue/shared': 3.4.37 estree-walker: 2.0.2 magic-string: 0.30.11 - postcss: 8.4.40 + postcss: 8.4.41 source-map-js: 1.2.0 - '@vue/compiler-ssr@3.4.35': + '@vue/compiler-ssr@3.4.37': dependencies: - '@vue/compiler-dom': 3.4.35 - '@vue/shared': 3.4.35 + '@vue/compiler-dom': 3.4.37 + '@vue/shared': 3.4.37 - '@vue/devtools-core@7.3.7(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.35(typescript@5.5.4))': + '@vue/devtools-core@7.3.7(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.37(typescript@5.5.4))': dependencies: '@vue/devtools-kit': 7.3.7 '@vue/devtools-shared': 7.3.7 mitt: 3.0.1 nanoid: 3.3.7 pathe: 1.1.2 - vite-hot-client: 0.2.3(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8)) - vue: 3.4.35(typescript@5.5.4) + vite-hot-client: 0.2.3(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8)) + vue: 3.4.37(typescript@5.5.4) transitivePeerDependencies: - vite @@ -13668,31 +13745,31 @@ snapshots: dependencies: '@vue/shared': 3.1.5 - '@vue/reactivity@3.4.35': + '@vue/reactivity@3.4.37': dependencies: - '@vue/shared': 3.4.35 + '@vue/shared': 3.4.37 - '@vue/runtime-core@3.4.35': + '@vue/runtime-core@3.4.37': dependencies: - '@vue/reactivity': 3.4.35 - '@vue/shared': 3.4.35 + '@vue/reactivity': 3.4.37 + '@vue/shared': 3.4.37 - '@vue/runtime-dom@3.4.35': + '@vue/runtime-dom@3.4.37': dependencies: - '@vue/reactivity': 3.4.35 - '@vue/runtime-core': 3.4.35 - '@vue/shared': 3.4.35 + '@vue/reactivity': 3.4.37 + '@vue/runtime-core': 3.4.37 + '@vue/shared': 3.4.37 csstype: 3.1.3 - '@vue/server-renderer@3.4.35(vue@3.4.35(typescript@5.5.4))': + '@vue/server-renderer@3.4.37(vue@3.4.37(typescript@5.5.4))': dependencies: - '@vue/compiler-ssr': 3.4.35 - '@vue/shared': 3.4.35 - vue: 3.4.35(typescript@5.5.4) + '@vue/compiler-ssr': 3.4.37 + '@vue/shared': 3.4.37 + vue: 3.4.37(typescript@5.5.4) '@vue/shared@3.1.5': {} - '@vue/shared@3.4.35': {} + '@vue/shared@3.4.37': {} '@webcomponents/template-shadowroot@0.2.1': {} @@ -13856,14 +13933,14 @@ snapshots: subarg: 1.0.0 timestring: 6.0.0 - autoprefixer@10.4.20(postcss@8.4.40): + autoprefixer@10.4.20(postcss@8.4.41): dependencies: browserslist: 4.23.3 caniuse-lite: 1.0.30001647 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.1 - postcss: 8.4.40 + postcss: 8.4.41 postcss-value-parser: 4.2.0 axobject-query@4.1.0: {} @@ -14048,15 +14125,19 @@ snapshots: domhandler: 5.0.3 domutils: 3.1.0 - cheerio@1.0.0-rc.12: + cheerio@1.0.0: dependencies: cheerio-select: 2.1.0 dom-serializer: 2.0.0 domhandler: 5.0.3 domutils: 3.1.0 - htmlparser2: 8.0.2 + encoding-sniffer: 0.2.0 + htmlparser2: 9.1.0 parse5: 7.1.2 parse5-htmlparser2-tree-adapter: 7.0.0 + parse5-parser-stream: 7.1.2 + undici: 6.19.7 + whatwg-mimetype: 4.0.0 chokidar@3.6.0: dependencies: @@ -14202,21 +14283,21 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-blank-pseudo@7.0.0(postcss@8.4.40): + css-blank-pseudo@7.0.0(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 postcss-selector-parser: 6.1.0 - css-has-pseudo@7.0.0(postcss@8.4.40): + css-has-pseudo@7.0.0(postcss@8.4.41): dependencies: '@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.0) - postcss: 8.4.40 + postcss: 8.4.41 postcss-selector-parser: 6.1.0 postcss-value-parser: 4.2.0 - css-prefers-color-scheme@10.0.0(postcss@8.4.40): + css-prefers-color-scheme@10.0.0(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 css-select@5.1.0: dependencies: @@ -14379,9 +14460,9 @@ snapshots: dotenv@8.6.0: {} - drizzle-orm@0.31.4(@libsql/client@0.8.1)(@types/react@18.3.3)(react@18.3.1): + drizzle-orm@0.31.4(@libsql/client@0.9.0)(@types/react@18.3.3)(react@18.3.1): optionalDependencies: - '@libsql/client': 0.8.1 + '@libsql/client': 0.9.0 '@types/react': 18.3.3 react: 18.3.1 @@ -14406,6 +14487,11 @@ snapshots: encodeurl@1.0.2: {} + encoding-sniffer@0.2.0: + dependencies: + iconv-lite: 0.6.3 + whatwg-encoding: 3.1.1 + enhanced-resolve@5.16.0: dependencies: graceful-fs: 4.2.11 @@ -14418,6 +14504,8 @@ snapshots: entities@4.5.0: {} + entities@5.0.0: {} + eol@0.9.1: {} error-stack-parser-es@0.1.1: {} @@ -14476,12 +14564,12 @@ snapshots: eslint-plugin-no-only-tests@3.1.0: {} - eslint-plugin-regexp@2.6.0(eslint@9.8.0): + eslint-plugin-regexp@2.6.0(eslint@9.9.0(jiti@1.21.0)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.0)) '@eslint-community/regexpp': 4.11.0 comment-parser: 1.4.1 - eslint: 9.8.0 + eslint: 9.9.0(jiti@1.21.0) jsdoc-type-pratt-parser: 4.0.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 @@ -14496,13 +14584,13 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@9.8.0: + eslint@9.9.0(jiti@1.21.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0(jiti@1.21.0)) '@eslint-community/regexpp': 4.11.0 '@eslint/config-array': 0.17.1 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.8.0 + '@eslint/js': 9.9.0 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 @@ -14532,6 +14620,8 @@ snapshots: optionator: 0.9.3 strip-ansi: 6.0.1 text-table: 0.2.0 + optionalDependencies: + jiti: 1.21.0 transitivePeerDependencies: - supports-color @@ -15400,18 +15490,32 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - libsql@0.3.12: + libsql@0.3.19: dependencies: '@neon-rs/load': 0.0.4 detect-libc: 2.0.2 optionalDependencies: - '@libsql/darwin-arm64': 0.3.12 - '@libsql/darwin-x64': 0.3.12 - '@libsql/linux-arm64-gnu': 0.3.12 - '@libsql/linux-arm64-musl': 0.3.12 - '@libsql/linux-x64-gnu': 0.3.12 - '@libsql/linux-x64-musl': 0.3.12 - '@libsql/win32-x64-msvc': 0.3.12 + '@libsql/darwin-arm64': 0.3.19 + '@libsql/darwin-x64': 0.3.19 + '@libsql/linux-arm64-gnu': 0.3.19 + '@libsql/linux-arm64-musl': 0.3.19 + '@libsql/linux-x64-gnu': 0.3.19 + '@libsql/linux-x64-musl': 0.3.19 + '@libsql/win32-x64-msvc': 0.3.19 + + libsql@0.4.1: + dependencies: + '@neon-rs/load': 0.0.4 + detect-libc: 2.0.2 + libsql: 0.3.19 + optionalDependencies: + '@libsql/darwin-arm64': 0.4.1 + '@libsql/darwin-x64': 0.4.1 + '@libsql/linux-arm64-gnu': 0.4.1 + '@libsql/linux-arm64-musl': 0.4.1 + '@libsql/linux-x64-gnu': 0.4.1 + '@libsql/linux-x64-musl': 0.4.1 + '@libsql/win32-x64-msvc': 0.4.1 lilconfig@2.1.0: {} @@ -15435,21 +15539,21 @@ snapshots: htmlparser2: 9.1.0 uhyphen: 0.2.0 - lit-element@4.0.4: + lit-element@4.1.0: dependencies: - '@lit-labs/ssr-dom-shim': 1.2.0 + '@lit-labs/ssr-dom-shim': 1.2.1 '@lit/reactive-element': 2.0.4 - lit-html: 3.1.2 + lit-html: 3.2.0 - lit-html@3.1.2: + lit-html@3.2.0: dependencies: '@types/trusted-types': 2.0.7 - lit@3.1.4: + lit@3.2.0: dependencies: '@lit/reactive-element': 2.0.4 - lit-element: 4.0.4 - lit-html: 3.1.2 + lit-element: 4.1.0 + lit-html: 3.2.0 lite-youtube-embed@0.3.2: {} @@ -16129,7 +16233,7 @@ snapshots: nanoid@5.0.7: {} - nanostores@0.11.0: {} + nanostores@0.11.2: {} natural-compare@1.4.0: {} @@ -16361,6 +16465,10 @@ snapshots: domhandler: 5.0.3 parse5: 7.1.2 + parse5-parser-stream@7.1.2: + dependencies: + parse5: 7.1.2 + parse5@7.1.2: dependencies: entities: 4.5.0 @@ -16423,248 +16531,248 @@ snapshots: dependencies: find-up: 4.1.0 - playwright-core@1.45.3: {} + playwright-core@1.46.0: {} - playwright@1.45.3: + playwright@1.46.0: dependencies: - playwright-core: 1.45.3 + playwright-core: 1.46.0 optionalDependencies: fsevents: 2.3.2 port-authority@2.0.1: {} - postcss-attribute-case-insensitive@7.0.0(postcss@8.4.40): + postcss-attribute-case-insensitive@7.0.0(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 postcss-selector-parser: 6.1.0 - postcss-clamp@4.1.0(postcss@8.4.40): + postcss-clamp@4.1.0(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 postcss-value-parser: 4.2.0 - postcss-color-functional-notation@7.0.0(postcss@8.4.40): + postcss-color-functional-notation@7.0.0(postcss@8.4.41): dependencies: '@csstools/css-color-parser': 3.0.0(@csstools/css-parser-algorithms@3.0.0(@csstools/css-tokenizer@3.0.0))(@csstools/css-tokenizer@3.0.0) '@csstools/css-parser-algorithms': 3.0.0(@csstools/css-tokenizer@3.0.0) '@csstools/css-tokenizer': 3.0.0 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.40) - '@csstools/utilities': 2.0.0(postcss@8.4.40) - postcss: 8.4.40 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41) + '@csstools/utilities': 2.0.0(postcss@8.4.41) + postcss: 8.4.41 - postcss-color-hex-alpha@10.0.0(postcss@8.4.40): + postcss-color-hex-alpha@10.0.0(postcss@8.4.41): dependencies: - '@csstools/utilities': 2.0.0(postcss@8.4.40) - postcss: 8.4.40 + '@csstools/utilities': 2.0.0(postcss@8.4.41) + postcss: 8.4.41 postcss-value-parser: 4.2.0 - postcss-color-rebeccapurple@10.0.0(postcss@8.4.40): + postcss-color-rebeccapurple@10.0.0(postcss@8.4.41): dependencies: - '@csstools/utilities': 2.0.0(postcss@8.4.40) - postcss: 8.4.40 + '@csstools/utilities': 2.0.0(postcss@8.4.41) + postcss: 8.4.41 postcss-value-parser: 4.2.0 - postcss-custom-media@11.0.0(postcss@8.4.40): + postcss-custom-media@11.0.0(postcss@8.4.41): dependencies: '@csstools/cascade-layer-name-parser': 2.0.0(@csstools/css-parser-algorithms@3.0.0(@csstools/css-tokenizer@3.0.0))(@csstools/css-tokenizer@3.0.0) '@csstools/css-parser-algorithms': 3.0.0(@csstools/css-tokenizer@3.0.0) '@csstools/css-tokenizer': 3.0.0 '@csstools/media-query-list-parser': 3.0.0(@csstools/css-parser-algorithms@3.0.0(@csstools/css-tokenizer@3.0.0))(@csstools/css-tokenizer@3.0.0) - postcss: 8.4.40 + postcss: 8.4.41 - postcss-custom-properties@14.0.0(postcss@8.4.40): + postcss-custom-properties@14.0.0(postcss@8.4.41): dependencies: '@csstools/cascade-layer-name-parser': 2.0.0(@csstools/css-parser-algorithms@3.0.0(@csstools/css-tokenizer@3.0.0))(@csstools/css-tokenizer@3.0.0) '@csstools/css-parser-algorithms': 3.0.0(@csstools/css-tokenizer@3.0.0) '@csstools/css-tokenizer': 3.0.0 - '@csstools/utilities': 2.0.0(postcss@8.4.40) - postcss: 8.4.40 + '@csstools/utilities': 2.0.0(postcss@8.4.41) + postcss: 8.4.41 postcss-value-parser: 4.2.0 - postcss-custom-selectors@8.0.0(postcss@8.4.40): + postcss-custom-selectors@8.0.0(postcss@8.4.41): dependencies: '@csstools/cascade-layer-name-parser': 2.0.0(@csstools/css-parser-algorithms@3.0.0(@csstools/css-tokenizer@3.0.0))(@csstools/css-tokenizer@3.0.0) '@csstools/css-parser-algorithms': 3.0.0(@csstools/css-tokenizer@3.0.0) '@csstools/css-tokenizer': 3.0.0 - postcss: 8.4.40 + postcss: 8.4.41 postcss-selector-parser: 6.1.0 - postcss-dir-pseudo-class@9.0.0(postcss@8.4.40): + postcss-dir-pseudo-class@9.0.0(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 postcss-selector-parser: 6.1.0 - postcss-double-position-gradients@6.0.0(postcss@8.4.40): + postcss-double-position-gradients@6.0.0(postcss@8.4.41): dependencies: - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.40) - '@csstools/utilities': 2.0.0(postcss@8.4.40) - postcss: 8.4.40 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41) + '@csstools/utilities': 2.0.0(postcss@8.4.41) + postcss: 8.4.41 postcss-value-parser: 4.2.0 - postcss-focus-visible@10.0.0(postcss@8.4.40): + postcss-focus-visible@10.0.0(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 postcss-selector-parser: 6.1.0 - postcss-focus-within@9.0.0(postcss@8.4.40): + postcss-focus-within@9.0.0(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 postcss-selector-parser: 6.1.0 - postcss-font-variant@5.0.0(postcss@8.4.40): + postcss-font-variant@5.0.0(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 - postcss-gap-properties@6.0.0(postcss@8.4.40): + postcss-gap-properties@6.0.0(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 - postcss-image-set-function@7.0.0(postcss@8.4.40): + postcss-image-set-function@7.0.0(postcss@8.4.41): dependencies: - '@csstools/utilities': 2.0.0(postcss@8.4.40) - postcss: 8.4.40 + '@csstools/utilities': 2.0.0(postcss@8.4.41) + postcss: 8.4.41 postcss-value-parser: 4.2.0 - postcss-import@15.1.0(postcss@8.4.40): + postcss-import@15.1.0(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.40): + postcss-js@4.0.1(postcss@8.4.41): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.40 + postcss: 8.4.41 - postcss-lab-function@7.0.0(postcss@8.4.40): + postcss-lab-function@7.0.0(postcss@8.4.41): dependencies: '@csstools/css-color-parser': 3.0.0(@csstools/css-parser-algorithms@3.0.0(@csstools/css-tokenizer@3.0.0))(@csstools/css-tokenizer@3.0.0) '@csstools/css-parser-algorithms': 3.0.0(@csstools/css-tokenizer@3.0.0) '@csstools/css-tokenizer': 3.0.0 - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.40) - '@csstools/utilities': 2.0.0(postcss@8.4.40) - postcss: 8.4.40 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41) + '@csstools/utilities': 2.0.0(postcss@8.4.41) + postcss: 8.4.41 - postcss-load-config@4.0.2(postcss@8.4.40): + postcss-load-config@4.0.2(postcss@8.4.41): dependencies: lilconfig: 3.1.1 yaml: 2.4.1 optionalDependencies: - postcss: 8.4.40 + postcss: 8.4.41 - postcss-logical@8.0.0(postcss@8.4.40): + postcss-logical@8.0.0(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 postcss-value-parser: 4.2.0 - postcss-nested@6.0.1(postcss@8.4.40): + postcss-nested@6.0.1(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 postcss-selector-parser: 6.1.0 - postcss-nesting@13.0.0(postcss@8.4.40): + postcss-nesting@13.0.0(postcss@8.4.41): dependencies: '@csstools/selector-resolve-nested': 2.0.0(postcss-selector-parser@6.1.0) '@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.0) - postcss: 8.4.40 + postcss: 8.4.41 postcss-selector-parser: 6.1.0 - postcss-opacity-percentage@2.0.0(postcss@8.4.40): + postcss-opacity-percentage@2.0.0(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 - postcss-overflow-shorthand@6.0.0(postcss@8.4.40): + postcss-overflow-shorthand@6.0.0(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 postcss-value-parser: 4.2.0 - postcss-page-break@3.0.4(postcss@8.4.40): + postcss-page-break@3.0.4(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 - postcss-place@10.0.0(postcss@8.4.40): + postcss-place@10.0.0(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 postcss-value-parser: 4.2.0 - postcss-preset-env@10.0.0(postcss@8.4.40): + postcss-preset-env@10.0.0(postcss@8.4.41): dependencies: - '@csstools/postcss-cascade-layers': 5.0.0(postcss@8.4.40) - '@csstools/postcss-color-function': 4.0.0(postcss@8.4.40) - '@csstools/postcss-color-mix-function': 3.0.0(postcss@8.4.40) - '@csstools/postcss-content-alt-text': 2.0.0(postcss@8.4.40) - '@csstools/postcss-exponential-functions': 2.0.0(postcss@8.4.40) - '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.4.40) - '@csstools/postcss-gamut-mapping': 2.0.0(postcss@8.4.40) - '@csstools/postcss-gradients-interpolation-method': 5.0.0(postcss@8.4.40) - '@csstools/postcss-hwb-function': 4.0.0(postcss@8.4.40) - '@csstools/postcss-ic-unit': 4.0.0(postcss@8.4.40) - '@csstools/postcss-initial': 2.0.0(postcss@8.4.40) - '@csstools/postcss-is-pseudo-class': 5.0.0(postcss@8.4.40) - '@csstools/postcss-light-dark-function': 2.0.0(postcss@8.4.40) - '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.4.40) - '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.4.40) - '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.4.40) - '@csstools/postcss-logical-resize': 3.0.0(postcss@8.4.40) - '@csstools/postcss-logical-viewport-units': 3.0.0(postcss@8.4.40) - '@csstools/postcss-media-minmax': 2.0.0(postcss@8.4.40) - '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.0(postcss@8.4.40) - '@csstools/postcss-nested-calc': 4.0.0(postcss@8.4.40) - '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.4.40) - '@csstools/postcss-oklab-function': 4.0.0(postcss@8.4.40) - '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.40) - '@csstools/postcss-relative-color-syntax': 3.0.0(postcss@8.4.40) - '@csstools/postcss-scope-pseudo-class': 4.0.0(postcss@8.4.40) - '@csstools/postcss-stepped-value-functions': 4.0.0(postcss@8.4.40) - '@csstools/postcss-text-decoration-shorthand': 4.0.0(postcss@8.4.40) - '@csstools/postcss-trigonometric-functions': 4.0.0(postcss@8.4.40) - '@csstools/postcss-unset-value': 4.0.0(postcss@8.4.40) - autoprefixer: 10.4.20(postcss@8.4.40) + '@csstools/postcss-cascade-layers': 5.0.0(postcss@8.4.41) + '@csstools/postcss-color-function': 4.0.0(postcss@8.4.41) + '@csstools/postcss-color-mix-function': 3.0.0(postcss@8.4.41) + '@csstools/postcss-content-alt-text': 2.0.0(postcss@8.4.41) + '@csstools/postcss-exponential-functions': 2.0.0(postcss@8.4.41) + '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.4.41) + '@csstools/postcss-gamut-mapping': 2.0.0(postcss@8.4.41) + '@csstools/postcss-gradients-interpolation-method': 5.0.0(postcss@8.4.41) + '@csstools/postcss-hwb-function': 4.0.0(postcss@8.4.41) + '@csstools/postcss-ic-unit': 4.0.0(postcss@8.4.41) + '@csstools/postcss-initial': 2.0.0(postcss@8.4.41) + '@csstools/postcss-is-pseudo-class': 5.0.0(postcss@8.4.41) + '@csstools/postcss-light-dark-function': 2.0.0(postcss@8.4.41) + '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.4.41) + '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.4.41) + '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.4.41) + '@csstools/postcss-logical-resize': 3.0.0(postcss@8.4.41) + '@csstools/postcss-logical-viewport-units': 3.0.0(postcss@8.4.41) + '@csstools/postcss-media-minmax': 2.0.0(postcss@8.4.41) + '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.0(postcss@8.4.41) + '@csstools/postcss-nested-calc': 4.0.0(postcss@8.4.41) + '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.4.41) + '@csstools/postcss-oklab-function': 4.0.0(postcss@8.4.41) + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.4.41) + '@csstools/postcss-relative-color-syntax': 3.0.0(postcss@8.4.41) + '@csstools/postcss-scope-pseudo-class': 4.0.0(postcss@8.4.41) + '@csstools/postcss-stepped-value-functions': 4.0.0(postcss@8.4.41) + '@csstools/postcss-text-decoration-shorthand': 4.0.0(postcss@8.4.41) + '@csstools/postcss-trigonometric-functions': 4.0.0(postcss@8.4.41) + '@csstools/postcss-unset-value': 4.0.0(postcss@8.4.41) + autoprefixer: 10.4.20(postcss@8.4.41) browserslist: 4.23.3 - css-blank-pseudo: 7.0.0(postcss@8.4.40) - css-has-pseudo: 7.0.0(postcss@8.4.40) - css-prefers-color-scheme: 10.0.0(postcss@8.4.40) + css-blank-pseudo: 7.0.0(postcss@8.4.41) + css-has-pseudo: 7.0.0(postcss@8.4.41) + css-prefers-color-scheme: 10.0.0(postcss@8.4.41) cssdb: 8.1.0 - postcss: 8.4.40 - postcss-attribute-case-insensitive: 7.0.0(postcss@8.4.40) - postcss-clamp: 4.1.0(postcss@8.4.40) - postcss-color-functional-notation: 7.0.0(postcss@8.4.40) - postcss-color-hex-alpha: 10.0.0(postcss@8.4.40) - postcss-color-rebeccapurple: 10.0.0(postcss@8.4.40) - postcss-custom-media: 11.0.0(postcss@8.4.40) - postcss-custom-properties: 14.0.0(postcss@8.4.40) - postcss-custom-selectors: 8.0.0(postcss@8.4.40) - postcss-dir-pseudo-class: 9.0.0(postcss@8.4.40) - postcss-double-position-gradients: 6.0.0(postcss@8.4.40) - postcss-focus-visible: 10.0.0(postcss@8.4.40) - postcss-focus-within: 9.0.0(postcss@8.4.40) - postcss-font-variant: 5.0.0(postcss@8.4.40) - postcss-gap-properties: 6.0.0(postcss@8.4.40) - postcss-image-set-function: 7.0.0(postcss@8.4.40) - postcss-lab-function: 7.0.0(postcss@8.4.40) - postcss-logical: 8.0.0(postcss@8.4.40) - postcss-nesting: 13.0.0(postcss@8.4.40) - postcss-opacity-percentage: 2.0.0(postcss@8.4.40) - postcss-overflow-shorthand: 6.0.0(postcss@8.4.40) - postcss-page-break: 3.0.4(postcss@8.4.40) - postcss-place: 10.0.0(postcss@8.4.40) - postcss-pseudo-class-any-link: 10.0.0(postcss@8.4.40) - postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.40) - postcss-selector-not: 8.0.0(postcss@8.4.40) + postcss: 8.4.41 + postcss-attribute-case-insensitive: 7.0.0(postcss@8.4.41) + postcss-clamp: 4.1.0(postcss@8.4.41) + postcss-color-functional-notation: 7.0.0(postcss@8.4.41) + postcss-color-hex-alpha: 10.0.0(postcss@8.4.41) + postcss-color-rebeccapurple: 10.0.0(postcss@8.4.41) + postcss-custom-media: 11.0.0(postcss@8.4.41) + postcss-custom-properties: 14.0.0(postcss@8.4.41) + postcss-custom-selectors: 8.0.0(postcss@8.4.41) + postcss-dir-pseudo-class: 9.0.0(postcss@8.4.41) + postcss-double-position-gradients: 6.0.0(postcss@8.4.41) + postcss-focus-visible: 10.0.0(postcss@8.4.41) + postcss-focus-within: 9.0.0(postcss@8.4.41) + postcss-font-variant: 5.0.0(postcss@8.4.41) + postcss-gap-properties: 6.0.0(postcss@8.4.41) + postcss-image-set-function: 7.0.0(postcss@8.4.41) + postcss-lab-function: 7.0.0(postcss@8.4.41) + postcss-logical: 8.0.0(postcss@8.4.41) + postcss-nesting: 13.0.0(postcss@8.4.41) + postcss-opacity-percentage: 2.0.0(postcss@8.4.41) + postcss-overflow-shorthand: 6.0.0(postcss@8.4.41) + postcss-page-break: 3.0.4(postcss@8.4.41) + postcss-place: 10.0.0(postcss@8.4.41) + postcss-pseudo-class-any-link: 10.0.0(postcss@8.4.41) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.41) + postcss-selector-not: 8.0.0(postcss@8.4.41) - postcss-pseudo-class-any-link@10.0.0(postcss@8.4.40): + postcss-pseudo-class-any-link@10.0.0(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 postcss-selector-parser: 6.1.0 - postcss-replace-overflow-wrap@4.0.0(postcss@8.4.40): + postcss-replace-overflow-wrap@4.0.0(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 - postcss-selector-not@8.0.0(postcss@8.4.40): + postcss-selector-not@8.0.0(postcss@8.4.41): dependencies: - postcss: 8.4.40 + postcss: 8.4.41 postcss-selector-parser: 6.1.0 postcss-selector-parser@6.1.0: @@ -16674,13 +16782,13 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.4.40: + postcss@8.4.41: dependencies: nanoid: 3.3.7 picocolors: 1.0.1 source-map-js: 1.2.0 - preact-render-to-string@6.5.7(preact@10.23.1): + preact-render-to-string@6.5.8(preact@10.23.1): dependencies: preact: 10.23.1 @@ -16703,7 +16811,7 @@ snapshots: prettier-plugin-astro@0.14.1: dependencies: - '@astrojs/compiler': 2.10.1 + '@astrojs/compiler': 2.10.2 prettier: 3.3.3 sass-formatter: 0.7.9 @@ -17266,18 +17374,18 @@ snapshots: smartypants@0.2.2: {} - solid-js@1.8.19: + solid-js@1.8.20: dependencies: csstype: 3.1.3 seroval: 1.1.1 seroval-plugins: 1.1.1(seroval@1.1.1) - solid-refresh@0.6.3(solid-js@1.8.19): + solid-refresh@0.6.3(solid-js@1.8.20): dependencies: '@babel/generator': 7.25.0 '@babel/helper-module-imports': 7.24.7 '@babel/types': 7.25.2 - solid-js: 1.8.19 + solid-js: 1.8.20 transitivePeerDependencies: - supports-color @@ -17450,7 +17558,7 @@ snapshots: symbol-tree@3.2.4: {} - tailwindcss@3.4.7: + tailwindcss@3.4.9: dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -17466,11 +17574,11 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.1 - postcss: 8.4.40 - postcss-import: 15.1.0(postcss@8.4.40) - postcss-js: 4.0.1(postcss@8.4.40) - postcss-load-config: 4.0.2(postcss@8.4.40) - postcss-nested: 6.0.1(postcss@8.4.40) + postcss: 8.4.41 + postcss-import: 15.1.0(postcss@8.4.41) + postcss-js: 4.0.1(postcss@8.4.41) + postcss-load-config: 4.0.2(postcss@8.4.41) + postcss-nested: 6.0.1(postcss@8.4.41) postcss-selector-parser: 6.1.0 resolve: 1.22.8 sucrase: 3.35.0 @@ -17636,11 +17744,11 @@ snapshots: dependencies: semver: 7.6.3 - typescript-eslint@8.0.1(eslint@9.8.0)(typescript@5.5.4): + typescript-eslint@8.0.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4): dependencies: - '@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) + '@typescript-eslint/eslint-plugin': 8.0.1(@typescript-eslint/parser@8.0.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4) + '@typescript-eslint/parser': 8.0.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4) + '@typescript-eslint/utils': 8.0.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: @@ -17659,7 +17767,7 @@ snapshots: undici-types@5.26.5: {} - undici@6.19.5: {} + undici@6.19.7: {} unicorn-magic@0.1.0: {} @@ -17804,9 +17912,9 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vite-hot-client@0.2.3(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8)): + vite-hot-client@0.2.3(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8)): dependencies: - vite: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + vite: 5.4.0(@types/node@18.19.31)(sass@1.77.8) vite-node@2.0.5(@types/node@18.19.31)(sass@1.77.8): dependencies: @@ -17814,18 +17922,19 @@ snapshots: debug: 4.3.6 pathe: 1.1.2 tinyrainbow: 1.2.0 - vite: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + vite: 5.4.0(@types/node@18.19.31)(sass@1.77.8) transitivePeerDependencies: - '@types/node' - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color - terser - vite-plugin-inspect@0.8.4(rollup@4.20.0)(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8)): + vite-plugin-inspect@0.8.4(rollup@4.20.0)(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8)): dependencies: '@antfu/utils': 0.7.8 '@rollup/pluginutils': 5.1.0(rollup@4.20.0) @@ -17836,41 +17945,41 @@ snapshots: perfect-debounce: 1.0.0 picocolors: 1.0.1 sirv: 2.0.4 - vite: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + vite: 5.4.0(@types/node@18.19.31)(sass@1.77.8) transitivePeerDependencies: - rollup - supports-color - vite-plugin-solid@2.10.2(solid-js@1.8.19)(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8)): + vite-plugin-solid@2.10.2(solid-js@1.8.20)(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8)): dependencies: '@babel/core': 7.25.2 '@types/babel__core': 7.20.5 babel-preset-solid: 1.8.16(@babel/core@7.25.2) merge-anything: 5.1.7 - solid-js: 1.8.19 - solid-refresh: 0.6.3(solid-js@1.8.19) - vite: 5.3.5(@types/node@18.19.31)(sass@1.77.8) - vitefu: 0.2.5(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8)) + solid-js: 1.8.20 + solid-refresh: 0.6.3(solid-js@1.8.20) + vite: 5.4.0(@types/node@18.19.31)(sass@1.77.8) + vitefu: 0.2.5(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8)) transitivePeerDependencies: - supports-color - vite-plugin-vue-devtools@7.3.7(rollup@4.20.0)(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.35(typescript@5.5.4)): + vite-plugin-vue-devtools@7.3.7(rollup@4.20.0)(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.37(typescript@5.5.4)): dependencies: - '@vue/devtools-core': 7.3.7(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.35(typescript@5.5.4)) + '@vue/devtools-core': 7.3.7(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8))(vue@3.4.37(typescript@5.5.4)) '@vue/devtools-kit': 7.3.7 '@vue/devtools-shared': 7.3.7 execa: 8.0.1 sirv: 2.0.4 - vite: 5.3.5(@types/node@18.19.31)(sass@1.77.8) - vite-plugin-inspect: 0.8.4(rollup@4.20.0)(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8)) - vite-plugin-vue-inspector: 5.1.3(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8)) + vite: 5.4.0(@types/node@18.19.31)(sass@1.77.8) + vite-plugin-inspect: 0.8.4(rollup@4.20.0)(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8)) + vite-plugin-vue-inspector: 5.1.3(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8)) transitivePeerDependencies: - '@nuxt/kit' - rollup - supports-color - vue - vite-plugin-vue-inspector@5.1.3(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8)): + vite-plugin-vue-inspector@5.1.3(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8)): dependencies: '@babel/core': 7.25.2 '@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.25.2) @@ -17878,31 +17987,31 @@ snapshots: '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.25.2) '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.25.2) - '@vue/compiler-dom': 3.4.35 + '@vue/compiler-dom': 3.4.37 kolorist: 1.8.0 magic-string: 0.30.11 - vite: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + vite: 5.4.0(@types/node@18.19.31)(sass@1.77.8) transitivePeerDependencies: - supports-color - vite-svg-loader@5.1.0(vue@3.4.35(typescript@5.5.4)): + vite-svg-loader@5.1.0(vue@3.4.37(typescript@5.5.4)): dependencies: svgo: 3.2.0 - vue: 3.4.35(typescript@5.5.4) + vue: 3.4.37(typescript@5.5.4) - vite@5.3.5(@types/node@18.19.31)(sass@1.77.8): + vite@5.4.0(@types/node@18.19.31)(sass@1.77.8): dependencies: esbuild: 0.21.5 - postcss: 8.4.40 + postcss: 8.4.41 rollup: 4.20.0 optionalDependencies: '@types/node': 18.19.31 fsevents: 2.3.3 sass: 1.77.8 - vitefu@0.2.5(vite@5.3.5(@types/node@18.19.31)(sass@1.77.8)): + vitefu@0.2.5(vite@5.4.0(@types/node@18.19.31)(sass@1.77.8)): optionalDependencies: - vite: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + vite: 5.4.0(@types/node@18.19.31)(sass@1.77.8) vitest@2.0.5(@types/node@18.19.31)(jsdom@23.2.0)(sass@1.77.8): dependencies: @@ -17922,7 +18031,7 @@ snapshots: tinybench: 2.8.0 tinypool: 1.0.0 tinyrainbow: 1.2.0 - vite: 5.3.5(@types/node@18.19.31)(sass@1.77.8) + vite: 5.4.0(@types/node@18.19.31)(sass@1.77.8) vite-node: 2.0.5(@types/node@18.19.31)(sass@1.77.8) why-is-node-running: 2.3.0 optionalDependencies: @@ -17932,6 +18041,7 @@ snapshots: - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color @@ -18025,13 +18135,13 @@ snapshots: vscode-uri@3.0.8: {} - vue@3.4.35(typescript@5.5.4): + vue@3.4.37(typescript@5.5.4): dependencies: - '@vue/compiler-dom': 3.4.35 - '@vue/compiler-sfc': 3.4.35 - '@vue/runtime-dom': 3.4.35 - '@vue/server-renderer': 3.4.35(vue@3.4.35(typescript@5.5.4)) - '@vue/shared': 3.4.35 + '@vue/compiler-dom': 3.4.37 + '@vue/compiler-sfc': 3.4.37 + '@vue/runtime-dom': 3.4.37 + '@vue/server-renderer': 3.4.37(vue@3.4.37(typescript@5.5.4)) + '@vue/shared': 3.4.37 optionalDependencies: typescript: 5.5.4 @@ -18045,7 +18155,7 @@ snapshots: web-vitals@3.5.2: {} - web-vitals@4.2.2: {} + web-vitals@4.2.3: {} webidl-conversions@3.0.1: {} From c7bda4cd672864babc3cebd19a2dd2e1af85c087 Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Tue, 13 Aug 2024 15:47:12 +0100 Subject: [PATCH 10/18] fix(actions): save error stack trace in memory (#11689) --- .changeset/silver-horses-beam.md | 5 ++++ .../src/actions/runtime/virtual/shared.ts | 29 +++++++++++++++++-- 2 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 .changeset/silver-horses-beam.md diff --git a/.changeset/silver-horses-beam.md b/.changeset/silver-horses-beam.md new file mode 100644 index 0000000000..70a529fcee --- /dev/null +++ b/.changeset/silver-horses-beam.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixes an issue in the Astro actions, where the size of the generated cookie was exceeding the size permitted by the `Set-Cookie` header. diff --git a/packages/astro/src/actions/runtime/virtual/shared.ts b/packages/astro/src/actions/runtime/virtual/shared.ts index 57dc404496..00233bf41e 100644 --- a/packages/astro/src/actions/runtime/virtual/shared.ts +++ b/packages/astro/src/actions/runtime/virtual/shared.ts @@ -213,14 +213,16 @@ export type SerializedActionResult = export function serializeActionResult(res: SafeResult): SerializedActionResult { if (res.error) { + if (import.meta.env?.DEV) { + actionResultErrorStack.set(res.error.stack) + } return { type: 'error', status: res.error.status, contentType: 'application/json', body: JSON.stringify({ ...res.error, - message: res.error.message, - stack: import.meta.env.PROD ? undefined : res.error.stack, + message: res.error.message }), }; } @@ -243,7 +245,15 @@ export function serializeActionResult(res: SafeResult): SerializedActi export function deserializeActionResult(res: SerializedActionResult): SafeResult { if (res.type === 'error') { - return { error: ActionError.fromJson(JSON.parse(res.body)), data: undefined }; + if (import.meta.env?.PROD) { + return { error: ActionError.fromJson(JSON.parse(res.body)), data: undefined }; + } else { + const error = ActionError.fromJson(JSON.parse(res.body)); + error.stack = actionResultErrorStack.get(); + return { + error, data: undefined + } + } } if (res.type === 'empty') { return { data: undefined, error: undefined }; @@ -255,3 +265,16 @@ export function deserializeActionResult(res: SerializedActionResult): SafeResult error: undefined, }; } + +// in-memory singleton to save the stack trace +const actionResultErrorStack = function actionResultErrorStackFn() { + let errorStack: string | undefined; + return { + set(stack: string | undefined) { + errorStack = stack; + }, + get() { + return errorStack; + } + } +}(); From cb98b74881355de9ec9d90a613a3f1d27d154463 Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Tue, 13 Aug 2024 14:48:00 +0000 Subject: [PATCH 11/18] [ci] format --- .../src/actions/runtime/virtual/shared.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/astro/src/actions/runtime/virtual/shared.ts b/packages/astro/src/actions/runtime/virtual/shared.ts index 00233bf41e..d792a9af55 100644 --- a/packages/astro/src/actions/runtime/virtual/shared.ts +++ b/packages/astro/src/actions/runtime/virtual/shared.ts @@ -214,7 +214,7 @@ export type SerializedActionResult = export function serializeActionResult(res: SafeResult): SerializedActionResult { if (res.error) { if (import.meta.env?.DEV) { - actionResultErrorStack.set(res.error.stack) + actionResultErrorStack.set(res.error.stack); } return { type: 'error', @@ -222,7 +222,7 @@ export function serializeActionResult(res: SafeResult): SerializedActi contentType: 'application/json', body: JSON.stringify({ ...res.error, - message: res.error.message + message: res.error.message, }), }; } @@ -251,8 +251,9 @@ export function deserializeActionResult(res: SerializedActionResult): SafeResult const error = ActionError.fromJson(JSON.parse(res.body)); error.stack = actionResultErrorStack.get(); return { - error, data: undefined - } + error, + data: undefined, + }; } } if (res.type === 'empty') { @@ -266,8 +267,8 @@ export function deserializeActionResult(res: SerializedActionResult): SafeResult }; } -// in-memory singleton to save the stack trace -const actionResultErrorStack = function actionResultErrorStackFn() { +// in-memory singleton to save the stack trace +const actionResultErrorStack = (function actionResultErrorStackFn() { let errorStack: string | undefined; return { set(stack: string | undefined) { @@ -275,6 +276,6 @@ const actionResultErrorStack = function actionResultErrorStackFn() { }, get() { return errorStack; - } - } -}(); + }, + }; +})(); From 6bb001476c25f9513f8a5a0e5189f53465c60773 Mon Sep 17 00:00:00 2001 From: "Houston (Bot)" <108291165+astrobot-houston@users.noreply.github.com> Date: Wed, 14 Aug 2024 01:14:23 -0700 Subject: [PATCH 12/18] [ci] release (#11686) Co-authored-by: github-actions[bot] --- .changeset/good-birds-clap.md | 5 -- .changeset/hip-toys-shake.md | 9 --- .changeset/little-humans-act.md | 9 --- .changeset/nervous-garlics-beam.md | 5 -- .changeset/silver-horses-beam.md | 5 -- examples/basics/package.json | 2 +- examples/blog/package.json | 2 +- examples/component/package.json | 2 +- examples/container-with-vitest/package.json | 2 +- examples/framework-alpine/package.json | 2 +- examples/framework-lit/package.json | 2 +- examples/framework-multiple/package.json | 2 +- examples/framework-preact/package.json | 2 +- examples/framework-react/package.json | 2 +- examples/framework-solid/package.json | 2 +- examples/framework-svelte/package.json | 2 +- examples/framework-vue/package.json | 2 +- examples/hackernews/package.json | 4 +- examples/integration/package.json | 2 +- examples/middleware/package.json | 4 +- examples/minimal/package.json | 2 +- examples/non-html-pages/package.json | 2 +- examples/portfolio/package.json | 2 +- examples/server-islands/package.json | 4 +- examples/ssr/package.json | 4 +- examples/starlog/package.json | 2 +- examples/toolbar-app/package.json | 2 +- examples/view-transitions/package.json | 4 +- examples/with-markdoc/package.json | 2 +- examples/with-markdown-plugins/package.json | 2 +- examples/with-markdown-shiki/package.json | 2 +- examples/with-mdx/package.json | 2 +- examples/with-nanostores/package.json | 2 +- examples/with-tailwindcss/package.json | 2 +- examples/with-vitest/package.json | 2 +- packages/astro/CHANGELOG.md | 16 +++++ packages/astro/package.json | 2 +- packages/integrations/node/CHANGELOG.md | 10 +++ packages/integrations/node/package.json | 2 +- pnpm-lock.yaml | 70 ++++++++++----------- 40 files changed, 98 insertions(+), 105 deletions(-) delete mode 100644 .changeset/good-birds-clap.md delete mode 100644 .changeset/hip-toys-shake.md delete mode 100644 .changeset/little-humans-act.md delete mode 100644 .changeset/nervous-garlics-beam.md delete mode 100644 .changeset/silver-horses-beam.md diff --git a/.changeset/good-birds-clap.md b/.changeset/good-birds-clap.md deleted file mode 100644 index 1a05c065c6..0000000000 --- a/.changeset/good-birds-clap.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Fixes a case where omitting a semicolon and line ending with carriage return - CRLF - in the `prerender` option could throw an error. diff --git a/.changeset/hip-toys-shake.md b/.changeset/hip-toys-shake.md deleted file mode 100644 index dcbe9c89d4..0000000000 --- a/.changeset/hip-toys-shake.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@astrojs/node': patch ---- - -Move polyfills up before awaiting the env module in the Node.js adapter. - -Previously the env setting was happening before the polyfills were applied. This means that if the Astro env code (or any dependencies) depended on `crypto`, it would not be polyfilled in time. - -Polyfills should be applied ASAP to prevent races. This moves it to the top of the Node adapter. diff --git a/.changeset/little-humans-act.md b/.changeset/little-humans-act.md deleted file mode 100644 index a9dd54fcee..0000000000 --- a/.changeset/little-humans-act.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'astro': patch ---- - -Encrypt server island props - -Server island props are not encrypted with a key generated at build-time. This is intended to prevent accidentally leaking secrets caused by exposing secrets through prop-passing. This is not intended to allow a server island to be trusted to skip authentication, or to protect against any other vulnerabilities other than secret leakage. - -See the RFC for an explanation: https://github.com/withastro/roadmap/blob/server-islands/proposals/server-islands.md#props-serialization diff --git a/.changeset/nervous-garlics-beam.md b/.changeset/nervous-garlics-beam.md deleted file mode 100644 index 2e5413d74c..0000000000 --- a/.changeset/nervous-garlics-beam.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Fixes Astro Actions `input` validation when using `default` values with a form input. diff --git a/.changeset/silver-horses-beam.md b/.changeset/silver-horses-beam.md deleted file mode 100644 index 70a529fcee..0000000000 --- a/.changeset/silver-horses-beam.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'astro': patch ---- - -Fixes an issue in the Astro actions, where the size of the generated cookie was exceeding the size permitted by the `Set-Cookie` header. diff --git a/examples/basics/package.json b/examples/basics/package.json index b523cad78b..02e40cb4ce 100644 --- a/examples/basics/package.json +++ b/examples/basics/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.13.3" + "astro": "^4.13.4" } } diff --git a/examples/blog/package.json b/examples/blog/package.json index 21a14e62cf..667fceb416 100644 --- a/examples/blog/package.json +++ b/examples/blog/package.json @@ -14,6 +14,6 @@ "@astrojs/mdx": "^3.1.3", "@astrojs/rss": "^4.0.7", "@astrojs/sitemap": "^3.1.6", - "astro": "^4.13.3" + "astro": "^4.13.4" } } diff --git a/examples/component/package.json b/examples/component/package.json index 711f47ab6c..6e4ce727e4 100644 --- a/examples/component/package.json +++ b/examples/component/package.json @@ -15,7 +15,7 @@ ], "scripts": {}, "devDependencies": { - "astro": "^4.13.3" + "astro": "^4.13.4" }, "peerDependencies": { "astro": "^4.0.0" diff --git a/examples/container-with-vitest/package.json b/examples/container-with-vitest/package.json index 59f4d937ff..02cbfd1776 100644 --- a/examples/container-with-vitest/package.json +++ b/examples/container-with-vitest/package.json @@ -12,7 +12,7 @@ "test": "vitest run" }, "dependencies": { - "astro": "^4.13.3", + "astro": "^4.13.4", "@astrojs/react": "^3.6.2", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/framework-alpine/package.json b/examples/framework-alpine/package.json index 6cd4bb07f8..0de84cbbec 100644 --- a/examples/framework-alpine/package.json +++ b/examples/framework-alpine/package.json @@ -14,6 +14,6 @@ "@astrojs/alpinejs": "^0.4.0", "@types/alpinejs": "^3.13.10", "alpinejs": "^3.14.1", - "astro": "^4.13.3" + "astro": "^4.13.4" } } diff --git a/examples/framework-lit/package.json b/examples/framework-lit/package.json index f7f47c2634..638a28be09 100644 --- a/examples/framework-lit/package.json +++ b/examples/framework-lit/package.json @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/lit": "^4.3.0", "@webcomponents/template-shadowroot": "^0.2.1", - "astro": "^4.13.3", + "astro": "^4.13.4", "lit": "^3.2.0" } } diff --git a/examples/framework-multiple/package.json b/examples/framework-multiple/package.json index 66552bd65d..800f0b0b68 100644 --- a/examples/framework-multiple/package.json +++ b/examples/framework-multiple/package.json @@ -18,7 +18,7 @@ "@astrojs/vue": "^4.5.0", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", - "astro": "^4.13.3", + "astro": "^4.13.4", "preact": "^10.23.1", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/framework-preact/package.json b/examples/framework-preact/package.json index 577bf5a514..42cf975fc5 100644 --- a/examples/framework-preact/package.json +++ b/examples/framework-preact/package.json @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/preact": "^3.5.1", "@preact/signals": "^1.3.0", - "astro": "^4.13.3", + "astro": "^4.13.4", "preact": "^10.23.1" } } diff --git a/examples/framework-react/package.json b/examples/framework-react/package.json index 5ee3222ad9..8228bf5569 100644 --- a/examples/framework-react/package.json +++ b/examples/framework-react/package.json @@ -14,7 +14,7 @@ "@astrojs/react": "^3.6.2", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", - "astro": "^4.13.3", + "astro": "^4.13.4", "react": "^18.3.1", "react-dom": "^18.3.1" } diff --git a/examples/framework-solid/package.json b/examples/framework-solid/package.json index e64c12ea48..5152ce823a 100644 --- a/examples/framework-solid/package.json +++ b/examples/framework-solid/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@astrojs/solid-js": "^4.4.1", - "astro": "^4.13.3", + "astro": "^4.13.4", "solid-js": "^1.8.20" } } diff --git a/examples/framework-svelte/package.json b/examples/framework-svelte/package.json index c8095dd917..cc89304bb7 100644 --- a/examples/framework-svelte/package.json +++ b/examples/framework-svelte/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@astrojs/svelte": "^5.7.0", - "astro": "^4.13.3", + "astro": "^4.13.4", "svelte": "^4.2.18" } } diff --git a/examples/framework-vue/package.json b/examples/framework-vue/package.json index ec0392c219..3cd8d2325a 100644 --- a/examples/framework-vue/package.json +++ b/examples/framework-vue/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@astrojs/vue": "^4.5.0", - "astro": "^4.13.3", + "astro": "^4.13.4", "vue": "^3.4.37" } } diff --git a/examples/hackernews/package.json b/examples/hackernews/package.json index e47cf63d7c..836cb84864 100644 --- a/examples/hackernews/package.json +++ b/examples/hackernews/package.json @@ -11,7 +11,7 @@ "astro": "astro" }, "dependencies": { - "@astrojs/node": "^8.3.2", - "astro": "^4.13.3" + "@astrojs/node": "^8.3.3", + "astro": "^4.13.4" } } diff --git a/examples/integration/package.json b/examples/integration/package.json index cd735e915f..0445107121 100644 --- a/examples/integration/package.json +++ b/examples/integration/package.json @@ -15,7 +15,7 @@ ], "scripts": {}, "devDependencies": { - "astro": "^4.13.3" + "astro": "^4.13.4" }, "peerDependencies": { "astro": "^4.0.0" diff --git a/examples/middleware/package.json b/examples/middleware/package.json index 3a20bc13a4..b86e1b3115 100644 --- a/examples/middleware/package.json +++ b/examples/middleware/package.json @@ -12,8 +12,8 @@ "server": "node dist/server/entry.mjs" }, "dependencies": { - "@astrojs/node": "^8.3.2", - "astro": "^4.13.3", + "@astrojs/node": "^8.3.3", + "astro": "^4.13.4", "html-minifier": "^4.0.0" }, "devDependencies": { diff --git a/examples/minimal/package.json b/examples/minimal/package.json index cb9e5b9f68..a2892c7e46 100644 --- a/examples/minimal/package.json +++ b/examples/minimal/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.13.3" + "astro": "^4.13.4" } } diff --git a/examples/non-html-pages/package.json b/examples/non-html-pages/package.json index c84aae0b1f..a6dc53a808 100644 --- a/examples/non-html-pages/package.json +++ b/examples/non-html-pages/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.13.3" + "astro": "^4.13.4" } } diff --git a/examples/portfolio/package.json b/examples/portfolio/package.json index faec95f814..1e2b79ea03 100644 --- a/examples/portfolio/package.json +++ b/examples/portfolio/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.13.3" + "astro": "^4.13.4" } } diff --git a/examples/server-islands/package.json b/examples/server-islands/package.json index 19fc5583d0..3a1ae97fbe 100644 --- a/examples/server-islands/package.json +++ b/examples/server-islands/package.json @@ -10,14 +10,14 @@ "astro": "astro" }, "devDependencies": { - "@astrojs/node": "^8.3.2", + "@astrojs/node": "^8.3.3", "@astrojs/react": "^3.6.2", "@astrojs/tailwind": "^5.1.0", "@fortawesome/fontawesome-free": "^6.6.0", "@tailwindcss/forms": "^0.5.7", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", - "astro": "^4.13.3", + "astro": "^4.13.4", "postcss": "^8.4.41", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/examples/ssr/package.json b/examples/ssr/package.json index 530d4c9293..10703eb9df 100644 --- a/examples/ssr/package.json +++ b/examples/ssr/package.json @@ -12,9 +12,9 @@ "server": "node dist/server/entry.mjs" }, "dependencies": { - "@astrojs/node": "^8.3.2", + "@astrojs/node": "^8.3.3", "@astrojs/svelte": "^5.7.0", - "astro": "^4.13.3", + "astro": "^4.13.4", "svelte": "^4.2.18" } } diff --git a/examples/starlog/package.json b/examples/starlog/package.json index cfcc76527b..33e546e77c 100644 --- a/examples/starlog/package.json +++ b/examples/starlog/package.json @@ -10,7 +10,7 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.13.3", + "astro": "^4.13.4", "sass": "^1.77.8", "sharp": "^0.33.3" } diff --git a/examples/toolbar-app/package.json b/examples/toolbar-app/package.json index 1c0d67f7f9..6f147be74c 100644 --- a/examples/toolbar-app/package.json +++ b/examples/toolbar-app/package.json @@ -15,6 +15,6 @@ "./app": "./dist/app.js" }, "devDependencies": { - "astro": "^4.13.3" + "astro": "^4.13.4" } } diff --git a/examples/view-transitions/package.json b/examples/view-transitions/package.json index 42b1401b05..6328e7665e 100644 --- a/examples/view-transitions/package.json +++ b/examples/view-transitions/package.json @@ -11,7 +11,7 @@ }, "devDependencies": { "@astrojs/tailwind": "^5.1.0", - "@astrojs/node": "^8.3.2", - "astro": "^4.13.3" + "@astrojs/node": "^8.3.3", + "astro": "^4.13.4" } } diff --git a/examples/with-markdoc/package.json b/examples/with-markdoc/package.json index dbc01d6ba3..dcf8596bd6 100644 --- a/examples/with-markdoc/package.json +++ b/examples/with-markdoc/package.json @@ -12,6 +12,6 @@ }, "dependencies": { "@astrojs/markdoc": "^0.11.3", - "astro": "^4.13.3" + "astro": "^4.13.4" } } diff --git a/examples/with-markdown-plugins/package.json b/examples/with-markdown-plugins/package.json index 5dfb45ea0f..407130b83b 100644 --- a/examples/with-markdown-plugins/package.json +++ b/examples/with-markdown-plugins/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@astrojs/markdown-remark": "^5.2.0", - "astro": "^4.13.3", + "astro": "^4.13.4", "hast-util-select": "^6.0.2", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", diff --git a/examples/with-markdown-shiki/package.json b/examples/with-markdown-shiki/package.json index 511e370f54..8a32a5f368 100644 --- a/examples/with-markdown-shiki/package.json +++ b/examples/with-markdown-shiki/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.13.3" + "astro": "^4.13.4" } } diff --git a/examples/with-mdx/package.json b/examples/with-mdx/package.json index 20bb7349c9..8782c588ce 100644 --- a/examples/with-mdx/package.json +++ b/examples/with-mdx/package.json @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/mdx": "^3.1.3", "@astrojs/preact": "^3.5.1", - "astro": "^4.13.3", + "astro": "^4.13.4", "preact": "^10.23.1" } } diff --git a/examples/with-nanostores/package.json b/examples/with-nanostores/package.json index e5694128b8..2c73ab7344 100644 --- a/examples/with-nanostores/package.json +++ b/examples/with-nanostores/package.json @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/preact": "^3.5.1", "@nanostores/preact": "^0.5.2", - "astro": "^4.13.3", + "astro": "^4.13.4", "nanostores": "^0.11.2", "preact": "^10.23.1" } diff --git a/examples/with-tailwindcss/package.json b/examples/with-tailwindcss/package.json index d4ea767266..16cb073c72 100644 --- a/examples/with-tailwindcss/package.json +++ b/examples/with-tailwindcss/package.json @@ -14,7 +14,7 @@ "@astrojs/mdx": "^3.1.3", "@astrojs/tailwind": "^5.1.0", "@types/canvas-confetti": "^1.6.4", - "astro": "^4.13.3", + "astro": "^4.13.4", "autoprefixer": "^10.4.20", "canvas-confetti": "^1.9.3", "postcss": "^8.4.41", diff --git a/examples/with-vitest/package.json b/examples/with-vitest/package.json index 738dac867d..2bc1e2d033 100644 --- a/examples/with-vitest/package.json +++ b/examples/with-vitest/package.json @@ -12,7 +12,7 @@ "test": "vitest" }, "dependencies": { - "astro": "^4.13.3", + "astro": "^4.13.4", "vitest": "^2.0.5" } } diff --git a/packages/astro/CHANGELOG.md b/packages/astro/CHANGELOG.md index c183b7afbb..b11f7621e3 100644 --- a/packages/astro/CHANGELOG.md +++ b/packages/astro/CHANGELOG.md @@ -1,5 +1,21 @@ # astro +## 4.13.4 + +### Patch Changes + +- [#11678](https://github.com/withastro/astro/pull/11678) [`34da907`](https://github.com/withastro/astro/commit/34da907f3b4fb411024e6d28fdb291fa78116950) Thanks [@ematipico](https://github.com/ematipico)! - Fixes a case where omitting a semicolon and line ending with carriage return - CRLF - in the `prerender` option could throw an error. + +- [#11535](https://github.com/withastro/astro/pull/11535) [`932bd2e`](https://github.com/withastro/astro/commit/932bd2eb07f1d7cb2c91e7e7d31fe84c919e302b) Thanks [@matthewp](https://github.com/matthewp)! - Encrypt server island props + + Server island props are not encrypted with a key generated at build-time. This is intended to prevent accidentally leaking secrets caused by exposing secrets through prop-passing. This is not intended to allow a server island to be trusted to skip authentication, or to protect against any other vulnerabilities other than secret leakage. + + See the RFC for an explanation: https://github.com/withastro/roadmap/blob/server-islands/proposals/server-islands.md#props-serialization + +- [#11655](https://github.com/withastro/astro/pull/11655) [`dc0a297`](https://github.com/withastro/astro/commit/dc0a297e2a4bea3db8310cc98c51b2f94ede5fde) Thanks [@billy-le](https://github.com/billy-le)! - Fixes Astro Actions `input` validation when using `default` values with a form input. + +- [#11689](https://github.com/withastro/astro/pull/11689) [`c7bda4c`](https://github.com/withastro/astro/commit/c7bda4cd672864babc3cebd19a2dd2e1af85c087) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue in the Astro actions, where the size of the generated cookie was exceeding the size permitted by the `Set-Cookie` header. + ## 4.13.3 ### Patch Changes diff --git a/packages/astro/package.json b/packages/astro/package.json index aaca3b8b0a..b131a0734e 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,6 +1,6 @@ { "name": "astro", - "version": "4.13.3", + "version": "4.13.4", "description": "Astro is a modern site builder with web best practices, performance, and DX front-of-mind.", "type": "module", "author": "withastro", diff --git a/packages/integrations/node/CHANGELOG.md b/packages/integrations/node/CHANGELOG.md index 1745541680..738cfc3672 100644 --- a/packages/integrations/node/CHANGELOG.md +++ b/packages/integrations/node/CHANGELOG.md @@ -1,5 +1,15 @@ # @astrojs/node +## 8.3.3 + +### Patch Changes + +- [#11535](https://github.com/withastro/astro/pull/11535) [`932bd2e`](https://github.com/withastro/astro/commit/932bd2eb07f1d7cb2c91e7e7d31fe84c919e302b) Thanks [@matthewp](https://github.com/matthewp)! - Move polyfills up before awaiting the env module in the Node.js adapter. + + Previously the env setting was happening before the polyfills were applied. This means that if the Astro env code (or any dependencies) depended on `crypto`, it would not be polyfilled in time. + + Polyfills should be applied ASAP to prevent races. This moves it to the top of the Node adapter. + ## 8.3.2 ### Patch Changes diff --git a/packages/integrations/node/package.json b/packages/integrations/node/package.json index 8db504040c..a87f261331 100644 --- a/packages/integrations/node/package.json +++ b/packages/integrations/node/package.json @@ -1,7 +1,7 @@ { "name": "@astrojs/node", "description": "Deploy your site to a Node.js server", - "version": "8.3.2", + "version": "8.3.3", "type": "module", "types": "./dist/index.d.ts", "author": "withastro", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6332cd00ff..95ef9f027c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -113,7 +113,7 @@ importers: examples/basics: dependencies: astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro examples/blog: @@ -128,13 +128,13 @@ importers: specifier: ^3.1.6 version: link:../../packages/integrations/sitemap astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro examples/component: devDependencies: astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro examples/container-with-vitest: @@ -143,7 +143,7 @@ importers: specifier: ^3.6.2 version: link:../../packages/integrations/react astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro react: specifier: ^18.3.1 @@ -174,7 +174,7 @@ importers: specifier: ^3.14.1 version: 3.14.1 astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro examples/framework-lit: @@ -186,7 +186,7 @@ importers: specifier: ^0.2.1 version: 0.2.1 astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro lit: specifier: ^3.2.0 @@ -216,7 +216,7 @@ importers: specifier: ^18.3.0 version: 18.3.0 astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro preact: specifier: ^10.23.1 @@ -246,7 +246,7 @@ importers: specifier: ^1.3.0 version: 1.3.0(preact@10.23.1) astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro preact: specifier: ^10.23.1 @@ -264,7 +264,7 @@ importers: specifier: ^18.3.0 version: 18.3.0 astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro react: specifier: ^18.3.1 @@ -279,7 +279,7 @@ importers: specifier: ^4.4.1 version: link:../../packages/integrations/solid astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro solid-js: specifier: ^1.8.20 @@ -291,7 +291,7 @@ importers: specifier: ^5.7.0 version: link:../../packages/integrations/svelte astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro svelte: specifier: ^4.2.18 @@ -303,7 +303,7 @@ importers: specifier: ^4.5.0 version: link:../../packages/integrations/vue astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro vue: specifier: ^3.4.37 @@ -312,25 +312,25 @@ importers: examples/hackernews: dependencies: '@astrojs/node': - specifier: ^8.3.2 + specifier: ^8.3.3 version: link:../../packages/integrations/node astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro examples/integration: devDependencies: astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro examples/middleware: dependencies: '@astrojs/node': - specifier: ^8.3.2 + specifier: ^8.3.3 version: link:../../packages/integrations/node astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro html-minifier: specifier: ^4.0.0 @@ -343,25 +343,25 @@ importers: examples/minimal: dependencies: astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro examples/non-html-pages: dependencies: astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro examples/portfolio: dependencies: astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro examples/server-islands: devDependencies: '@astrojs/node': - specifier: ^8.3.2 + specifier: ^8.3.3 version: link:../../packages/integrations/node '@astrojs/react': specifier: ^3.6.2 @@ -382,7 +382,7 @@ importers: specifier: ^18.3.0 version: 18.3.0 astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro postcss: specifier: ^8.4.41 @@ -400,13 +400,13 @@ importers: examples/ssr: dependencies: '@astrojs/node': - specifier: ^8.3.2 + specifier: ^8.3.3 version: link:../../packages/integrations/node '@astrojs/svelte': specifier: ^5.7.0 version: link:../../packages/integrations/svelte astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro svelte: specifier: ^4.2.18 @@ -415,7 +415,7 @@ importers: examples/starlog: dependencies: astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro sass: specifier: ^1.77.8 @@ -427,19 +427,19 @@ importers: examples/toolbar-app: devDependencies: astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro examples/view-transitions: devDependencies: '@astrojs/node': - specifier: ^8.3.2 + specifier: ^8.3.3 version: link:../../packages/integrations/node '@astrojs/tailwind': specifier: ^5.1.0 version: link:../../packages/integrations/tailwind astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro examples/with-markdoc: @@ -448,7 +448,7 @@ importers: specifier: ^0.11.3 version: link:../../packages/integrations/markdoc astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro examples/with-markdown-plugins: @@ -457,7 +457,7 @@ importers: specifier: ^5.2.0 version: link:../../packages/markdown/remark astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro hast-util-select: specifier: ^6.0.2 @@ -478,7 +478,7 @@ importers: examples/with-markdown-shiki: dependencies: astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro examples/with-mdx: @@ -490,7 +490,7 @@ importers: specifier: ^3.5.1 version: link:../../packages/integrations/preact astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro preact: specifier: ^10.23.1 @@ -505,7 +505,7 @@ importers: specifier: ^0.5.2 version: 0.5.2(nanostores@0.11.2)(preact@10.23.1) astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro nanostores: specifier: ^0.11.2 @@ -526,7 +526,7 @@ importers: specifier: ^1.6.4 version: 1.6.4 astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro autoprefixer: specifier: ^10.4.20 @@ -544,7 +544,7 @@ importers: examples/with-vitest: dependencies: astro: - specifier: ^4.13.3 + specifier: ^4.13.4 version: link:../../packages/astro vitest: specifier: ^2.0.5 From 3fb927d7aecc2b58da64cc87bfc7802f28e302c8 Mon Sep 17 00:00:00 2001 From: Erika <3019731+Princesseuh@users.noreply.github.com> Date: Wed, 14 Aug 2024 10:29:35 +0200 Subject: [PATCH 13/18] nit: typo in changelog (#11696) --- packages/astro/CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/astro/CHANGELOG.md b/packages/astro/CHANGELOG.md index b11f7621e3..9db8916b24 100644 --- a/packages/astro/CHANGELOG.md +++ b/packages/astro/CHANGELOG.md @@ -8,7 +8,7 @@ - [#11535](https://github.com/withastro/astro/pull/11535) [`932bd2e`](https://github.com/withastro/astro/commit/932bd2eb07f1d7cb2c91e7e7d31fe84c919e302b) Thanks [@matthewp](https://github.com/matthewp)! - Encrypt server island props - Server island props are not encrypted with a key generated at build-time. This is intended to prevent accidentally leaking secrets caused by exposing secrets through prop-passing. This is not intended to allow a server island to be trusted to skip authentication, or to protect against any other vulnerabilities other than secret leakage. + Server island props are now encrypted with a key generated at build-time. This is intended to prevent accidentally leaking secrets caused by exposing secrets through prop-passing. This is not intended to allow a server island to be trusted to skip authentication, or to protect against any other vulnerabilities other than secret leakage. See the RFC for an explanation: https://github.com/withastro/roadmap/blob/server-islands/proposals/server-islands.md#props-serialization @@ -7578,7 +7578,7 @@ ## 2.0.0 > **Note** -> This is a detailed changelog of all changes in Astro v2. +> This is a detailed changelog of all changes in Astro v2. > See our [upgrade guide](https://docs.astro.build/en/guides/upgrade-to/v2/) for an overview of steps needed to upgrade an existing project. ### Major Changes From d3d99fba269da9e812e748539a11dfed785ef8a4 Mon Sep 17 00:00:00 2001 From: Julien Cayzac Date: Wed, 14 Aug 2024 19:04:36 +0900 Subject: [PATCH 14/18] fix: code component was missing support for meta string (#11605) * fix: code component was missing support for meta string Fixed #11604 * Create odd-buttons-pay.md * : add reference link for meta prop * Apply suggestions from code review Co-authored-by: Sarah Rainsberger * Update .changeset/odd-buttons-pay.md * Update .changeset/odd-buttons-pay.md Co-authored-by: Sarah Rainsberger --------- Co-authored-by: Erika <3019731+Princesseuh@users.noreply.github.com> Co-authored-by: Sarah Rainsberger Co-authored-by: Emanuele Stoppa --- .changeset/odd-buttons-pay.md | 22 ++++++++++++++++++++++ packages/astro/components/Code.astro | 9 +++++++++ 2 files changed, 31 insertions(+) create mode 100644 .changeset/odd-buttons-pay.md diff --git a/.changeset/odd-buttons-pay.md b/.changeset/odd-buttons-pay.md new file mode 100644 index 0000000000..728068ef2a --- /dev/null +++ b/.changeset/odd-buttons-pay.md @@ -0,0 +1,22 @@ +--- +"astro": minor +--- + +Adds a new property `meta` to Astro's [built-in `` component](https://docs.astro.build/en/reference/api-reference/#code-). + +This allows you to provide a value for [Shiki's `meta` attribute](https://shiki.style/guide/transformers#meta) to pass options to transformers. + +The following example passes an option to highlight lines 1 and 3 to Shiki's `tranformerMetaHighlight`: + +```astro +--- +// src/components/Card.astro +import { Code } from "astro:components"; +import { transformerMetaHighlight } from '@shikijs/transformers'; +--- + +``` diff --git a/packages/astro/components/Code.astro b/packages/astro/components/Code.astro index 0cc639d7d5..d1c019c60d 100644 --- a/packages/astro/components/Code.astro +++ b/packages/astro/components/Code.astro @@ -23,6 +23,13 @@ interface Props extends Omit, 'lang'> { * @default "plaintext" */ lang?: BuiltinLanguage | SpecialLanguage | LanguageRegistration; + /** + * A metastring to pass to the highlighter. + * Allows passing information to transformers: https://shiki.style/guide/transformers#meta + * + * @default undefined + */ + meta?: string; /** * The styling theme. * Supports all themes listed here: https://shiki.style/themes @@ -72,6 +79,7 @@ interface Props extends Omit, 'lang'> { const { code, lang = 'plaintext', + meta, theme = 'github-dark', themes = {}, defaultColor = 'light', @@ -110,6 +118,7 @@ const highlighter = await getCachedHighlighter({ const html = await highlighter.highlight(code, typeof lang === 'string' ? lang : lang.name, { inline, + meta, attributes: rest as any, }); --- From a23c69d0d0bed229bee52a32e61f135f9ebf9122 Mon Sep 17 00:00:00 2001 From: Bjorn Lu Date: Wed, 14 Aug 2024 18:05:19 +0800 Subject: [PATCH 15/18] Deprecates exporting prerender with dynamic values (#11657) * wip * done i think * Add changeset * Use hook instead * Reorder hooks [skip ci] * Update .changeset/eleven-pens-glow.md Co-authored-by: Sarah Rainsberger * Fix run * Fix link * Add link Co-authored-by: Sarah Rainsberger * More accurate migration [skip ci] --------- Co-authored-by: Sarah Rainsberger Co-authored-by: Sarah Rainsberger --- .changeset/eleven-pens-glow.md | 41 ++++++++++++ packages/astro/src/@types/astro.ts | 19 ++++++ packages/astro/src/core/create-vite.ts | 2 +- packages/astro/src/core/util.ts | 2 +- packages/astro/src/integrations/hooks.ts | 42 +++++++++++++ packages/astro/src/vite-plugin-env/index.ts | 17 ++++- .../astro/src/vite-plugin-scanner/index.ts | 36 +++++++++-- .../integrations/node/test/prerender.test.js | 62 +++++++++++++++++++ 8 files changed, 212 insertions(+), 9 deletions(-) create mode 100644 .changeset/eleven-pens-glow.md diff --git a/.changeset/eleven-pens-glow.md b/.changeset/eleven-pens-glow.md new file mode 100644 index 0000000000..d031fba49c --- /dev/null +++ b/.changeset/eleven-pens-glow.md @@ -0,0 +1,41 @@ +--- +'astro': minor +--- + +Deprecates the option for route-generating files to export a dynamic value for `prerender`. Only static values are now supported (e.g. `export const prerender = true` or `= false`). This allows for better treeshaking and bundling configuration in the future. + +Adds a new [`"astro:route:setup"` hook](https://docs.astro.build/en/reference/integrations-reference/#astroroutesetup) to the Integrations API to allow you to dynamically set options for a route at build or request time through an integration, such as enabling [on-demand server rendering](https://docs.astro.build/en/guides/server-side-rendering/#opting-in-to-pre-rendering-in-server-mode). + +To migrate from a dynamic export to the new hook, update or remove any dynamic `prerender` exports from individual routing files: + +```diff +// src/pages/blog/[slug].astro +- export const prerender = import.meta.env.PRERENDER +``` + +Instead, create an integration with the `"astro:route:setup"` hook and update the route's `prerender` option: + +```js +// astro.config.mjs +import { defineConfig } from 'astro/config'; +import { loadEnv } from 'vite'; + +export default defineConfig({ + integrations: [setPrerender()], +}); + +function setPrerender() { + const { PRERENDER } = loadEnv(process.env.NODE_ENV, process.cwd(), ''); + + return { + name: 'set-prerender', + hooks: { + 'astro:route:setup': ({ route }) => { + if (route.component.endsWith('/blog/[slug].astro')) { + route.prerender = PRERENDER; + } + }, + }, + }; +} +``` diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts index e9c42954a1..645b07900d 100644 --- a/packages/astro/src/@types/astro.ts +++ b/packages/astro/src/@types/astro.ts @@ -2223,6 +2223,21 @@ export interface ResolvedInjectedRoute extends InjectedRoute { resolvedEntryPoint?: URL; } +export interface RouteOptions { + /** + * The path to this route relative to the project root. The slash is normalized as forward slash + * across all OS. + * @example "src/pages/blog/[...slug].astro" + */ + readonly component: string; + /** + * Whether this route should be prerendered. If the route has an explicit `prerender` export, + * the value will be passed here. Otherwise, it's undefined and will fallback to a prerender + * default depending on the `output` option. + */ + prerender?: boolean; +} + /** * Resolved Astro Config * Config with user settings along with all defaults filled in. @@ -3128,6 +3143,10 @@ declare global { logger: AstroIntegrationLogger; cacheManifest: boolean; }) => void | Promise; + 'astro:route:setup': (options: { + route: RouteOptions; + logger: AstroIntegrationLogger; + }) => void | Promise; } } } diff --git a/packages/astro/src/core/create-vite.ts b/packages/astro/src/core/create-vite.ts index 0570d9d5d5..23a4068a8b 100644 --- a/packages/astro/src/core/create-vite.ts +++ b/packages/astro/src/core/create-vite.ts @@ -132,7 +132,7 @@ export async function createVite( // The server plugin is for dev only and having it run during the build causes // the build to run very slow as the filewatcher is triggered often. mode !== 'build' && vitePluginAstroServer({ settings, logger, fs }), - envVitePlugin({ settings }), + envVitePlugin({ settings, logger }), astroEnv({ settings, mode, fs, sync }), markdownVitePlugin({ settings, logger }), htmlVitePlugin(), diff --git a/packages/astro/src/core/util.ts b/packages/astro/src/core/util.ts index 2dd4ddd3b4..654d198299 100644 --- a/packages/astro/src/core/util.ts +++ b/packages/astro/src/core/util.ts @@ -153,7 +153,7 @@ export function isPage(file: URL, settings: AstroSettings): boolean { export function isEndpoint(file: URL, settings: AstroSettings): boolean { if (!isInPagesDir(file, settings.config)) return false; if (!isPublicRoute(file, settings.config)) return false; - return !endsWithPageExt(file, settings); + return !endsWithPageExt(file, settings) && !file.toString().includes('?astro'); } export function isServerLikeOutput(config: AstroConfig) { diff --git a/packages/astro/src/integrations/hooks.ts b/packages/astro/src/integrations/hooks.ts index 9b2859e48b..e3de85ddd5 100644 --- a/packages/astro/src/integrations/hooks.ts +++ b/packages/astro/src/integrations/hooks.ts @@ -13,6 +13,7 @@ import type { DataEntryType, HookParameters, RouteData, + RouteOptions, } from '../@types/astro.js'; import type { SerializedSSRManifest } from '../core/app/types.js'; import type { PageBuildData } from '../core/build/types.js'; @@ -558,6 +559,47 @@ export async function runHookBuildDone({ } } +export async function runHookRouteSetup({ + route, + settings, + logger, +}: { + route: RouteOptions; + settings: AstroSettings; + logger: Logger; +}) { + const prerenderChangeLogs: { integrationName: string; value: boolean | undefined }[] = []; + + for (const integration of settings.config.integrations) { + if (integration?.hooks?.['astro:route:setup']) { + const originalRoute = { ...route }; + const integrationLogger = getLogger(integration, logger); + + await withTakingALongTimeMsg({ + name: integration.name, + hookName: 'astro:route:setup', + hookResult: integration.hooks['astro:route:setup']({ + route, + logger: integrationLogger, + }), + logger, + }); + + if (route.prerender !== originalRoute.prerender) { + prerenderChangeLogs.push({ integrationName: integration.name, value: route.prerender }); + } + } + } + + if (prerenderChangeLogs.length > 1) { + logger.debug( + 'router', + `The ${route.component} route's prerender option has been changed multiple times by integrations:\n` + + prerenderChangeLogs.map((log) => `- ${log.integrationName}: ${log.value}`).join('\n'), + ); + } +} + export function isFunctionPerRouteEnabled(adapter: AstroAdapter | undefined): boolean { if (adapter?.adapterFeatures?.functionPerRoute === true) { return true; diff --git a/packages/astro/src/vite-plugin-env/index.ts b/packages/astro/src/vite-plugin-env/index.ts index ea75e752f5..350a29b7ff 100644 --- a/packages/astro/src/vite-plugin-env/index.ts +++ b/packages/astro/src/vite-plugin-env/index.ts @@ -1,12 +1,15 @@ import { fileURLToPath } from 'node:url'; import { transform } from 'esbuild'; +import { bold } from 'kleur/colors'; import MagicString from 'magic-string'; import type * as vite from 'vite'; import { loadEnv } from 'vite'; import type { AstroConfig, AstroSettings } from '../@types/astro.js'; +import type { Logger } from '../core/logger/core.js'; interface EnvPluginOptions { settings: AstroSettings; + logger: Logger; } // Match `import.meta.env` directly without trailing property access @@ -116,7 +119,7 @@ async function replaceDefine( }; } -export default function envVitePlugin({ settings }: EnvPluginOptions): vite.Plugin { +export default function envVitePlugin({ settings, logger }: EnvPluginOptions): vite.Plugin { let privateEnv: Record; let defaultDefines: Record; let isDev: boolean; @@ -170,13 +173,25 @@ export default function envVitePlugin({ settings }: EnvPluginOptions): vite.Plug s.prepend(devImportMetaEnvPrepend); // EDGE CASE: We need to do a static replacement for `export const prerender` for `vite-plugin-scanner` + // TODO: Remove in Astro 5 + let exportConstPrerenderStr: string | undefined; s.replace(exportConstPrerenderRe, (m, key) => { + exportConstPrerenderStr = m; if (privateEnv[key] != null) { return `export const prerender = ${privateEnv[key]}`; } else { return m; } }); + if (exportConstPrerenderStr) { + logger.warn( + 'router', + `Exporting dynamic values from prerender is deprecated. Please use an integration with the "astro:route:setup" hook ` + + `to update the route's \`prerender\` option instead. This allows for better treeshaking and bundling configuration ` + + `in the future. See https://docs.astro.build/en/reference/integrations-reference/#astroroutesetup for a migration example.` + + `\nFound \`${bold(exportConstPrerenderStr)}\` in ${bold(id)}.`, + ); + } return { code: s.toString(), diff --git a/packages/astro/src/vite-plugin-scanner/index.ts b/packages/astro/src/vite-plugin-scanner/index.ts index 05be99a074..842857777a 100644 --- a/packages/astro/src/vite-plugin-scanner/index.ts +++ b/packages/astro/src/vite-plugin-scanner/index.ts @@ -2,11 +2,13 @@ import { extname } from 'node:path'; import { bold } from 'kleur/colors'; import type { Plugin as VitePlugin } from 'vite'; import { normalizePath } from 'vite'; -import type { AstroSettings } from '../@types/astro.js'; +import type { AstroSettings, RouteOptions } from '../@types/astro.js'; import { type Logger } from '../core/logger/core.js'; import { isEndpoint, isPage, isServerLikeOutput } from '../core/util.js'; import { rootRelativePath } from '../core/viteUtils.js'; +import { runHookRouteSetup } from '../integrations/hooks.js'; import { getPrerenderDefault } from '../prerender/utils.js'; +import type { PageOptions } from '../vite-plugin-astro/types.js'; import { scan } from './scan.js'; export interface AstroPluginScannerOptions { @@ -39,12 +41,8 @@ export default function astroScannerPlugin({ const fileIsPage = isPage(fileURL, settings); const fileIsEndpoint = isEndpoint(fileURL, settings); if (!(fileIsPage || fileIsEndpoint)) return; - const defaultPrerender = getPrerenderDefault(settings.config); - const pageOptions = await scan(code, id, settings); + const pageOptions = await getPageOptions(code, id, fileURL, settings, logger); - if (typeof pageOptions.prerender === 'undefined') { - pageOptions.prerender = defaultPrerender; - } // `getStaticPaths` warning is just a string check, should be good enough for most cases if ( !pageOptions.prerender && @@ -76,3 +74,29 @@ export default function astroScannerPlugin({ }, }; } + +async function getPageOptions( + code: string, + id: string, + fileURL: URL, + settings: AstroSettings, + logger: Logger, +): Promise { + // Run initial scan + const pageOptions = await scan(code, id, settings); + + // Run integration hooks to alter page options + const route: RouteOptions = { + component: rootRelativePath(settings.config.root, fileURL, false), + prerender: pageOptions.prerender, + }; + await runHookRouteSetup({ route, settings, logger }); + pageOptions.prerender = route.prerender; + + // Fallback if unset + if (typeof pageOptions.prerender === 'undefined') { + pageOptions.prerender = getPrerenderDefault(settings.config); + } + + return pageOptions; +} diff --git a/packages/integrations/node/test/prerender.test.js b/packages/integrations/node/test/prerender.test.js index d856d9d3e7..e699a1b3c0 100644 --- a/packages/integrations/node/test/prerender.test.js +++ b/packages/integrations/node/test/prerender.test.js @@ -57,6 +57,7 @@ describe('Prerendering', () => { assert.equal(res.status, 200); assert.equal($('h1').text(), 'Two'); + assert.ok(fixture.pathExists('/client/two/index.html')); }); it('Can render prerendered route with redirect and query params', async () => { @@ -131,6 +132,7 @@ describe('Prerendering', () => { assert.equal(res.status, 200); assert.equal($('h1').text(), 'Two'); + assert.ok(fixture.pathExists('/client/two/index.html')); }); it('Can render prerendered route with redirect and query params', async () => { @@ -152,6 +154,64 @@ describe('Prerendering', () => { }); }); + describe('Via integration', () => { + before(async () => { + process.env.PRERENDER = false; + fixture = await loadFixture({ + root: './fixtures/prerender/', + output: 'server', + outDir: './dist/via-integration', + build: { + client: './dist/via-integration/client', + server: './dist/via-integration/server', + }, + adapter: nodejs({ mode: 'standalone' }), + integrations: [ + { + name: 'test', + hooks: { + 'astro:route:setup': ({ route }) => { + if (route.component.endsWith('two.astro')) { + route.prerender = true; + } + }, + }, + }, + ], + }); + await fixture.build(); + const { startServer } = await fixture.loadAdapterEntryModule(); + let res = startServer(); + server = res.server; + await waitServerListen(server.server); + }); + + after(async () => { + await server.stop(); + await fixture.clean(); + delete process.env.PRERENDER; + }); + + it('Can render SSR route', async () => { + const res = await fetch(`http://${server.host}:${server.port}/one`); + const html = await res.text(); + const $ = cheerio.load(html); + + assert.equal(res.status, 200); + assert.equal($('h1').text(), 'One'); + }); + + it('Can render prerendered route', async () => { + const res = await fetch(`http://${server.host}:${server.port}/two`); + const html = await res.text(); + const $ = cheerio.load(html); + + assert.equal(res.status, 200); + assert.equal($('h1').text(), 'Two'); + assert.ok(fixture.pathExists('/client/two/index.html')); + }); + }); + describe('Dev', () => { let devServer; @@ -243,6 +303,7 @@ describe('Hybrid rendering', () => { assert.equal(res.status, 200); assert.equal($('h1').text(), 'One'); + assert.ok(fixture.pathExists('/client/one/index.html')); }); it('Can render prerendered route with redirect and query params', async () => { @@ -316,6 +377,7 @@ describe('Hybrid rendering', () => { assert.equal(res.status, 200); assert.equal($('h1').text(), 'One'); + assert.ok(fixture.pathExists('/client/one/index.html')); }); it('Can render prerendered route with redirect and query params', async () => { From 849e4c6c23e61f7fa59f583419048b998bef2475 Mon Sep 17 00:00:00 2001 From: Bjorn Lu Date: Wed, 14 Aug 2024 18:05:50 +0800 Subject: [PATCH 16/18] Use node parseArgs instead of yargs-parser and arg (#11645) * wip * done * Add changeset * Format * Update * Fix houston * Fix test * Fix test --- .changeset/fifty-stingrays-flow.md | 6 ++ .changeset/rude-queens-shop.md | 7 ++ packages/astro/package.json | 2 - .../astro/performance/content-benchmark.mjs | 4 +- packages/astro/performance/package.json | 4 +- packages/astro/src/cli/add/index.ts | 19 ++-- packages/astro/src/cli/build/index.ts | 7 +- packages/astro/src/cli/check/index.ts | 10 +- packages/astro/src/cli/db/index.ts | 25 +++-- packages/astro/src/cli/dev/index.ts | 5 +- packages/astro/src/cli/docs/index.ts | 4 +- packages/astro/src/cli/flags.ts | 7 +- packages/astro/src/cli/index.ts | 39 +++++--- packages/astro/src/cli/info/index.ts | 5 +- packages/astro/src/cli/preferences/index.ts | 7 +- packages/astro/src/cli/preview/index.ts | 5 +- packages/astro/src/cli/sync/index.ts | 5 +- packages/astro/src/cli/telemetry/index.ts | 5 +- packages/astro/src/core/config/config.ts | 21 +---- packages/astro/src/core/config/index.ts | 1 - packages/create-astro/src/actions/context.ts | 91 +++++++++++-------- packages/db/package.json | 2 - .../db/src/core/cli/commands/execute/index.ts | 4 +- .../db/src/core/cli/commands/login/index.ts | 4 +- .../db/src/core/cli/commands/push/index.ts | 4 +- .../db/src/core/cli/commands/shell/index.ts | 4 +- .../db/src/core/cli/commands/verify/index.ts | 4 +- packages/db/src/core/cli/index.ts | 4 +- packages/db/src/core/cli/types.ts | 7 ++ packages/db/src/core/integration/index.ts | 6 +- packages/upgrade/src/actions/context.ts | 28 +++--- packages/upgrade/test/context.test.js | 4 +- pnpm-lock.yaml | 23 ----- scripts/cmd/copy.js | 17 ++-- scripts/cmd/test.js | 50 +++++----- 35 files changed, 224 insertions(+), 216 deletions(-) create mode 100644 .changeset/fifty-stingrays-flow.md create mode 100644 .changeset/rude-queens-shop.md create mode 100644 packages/db/src/core/cli/types.ts diff --git a/.changeset/fifty-stingrays-flow.md b/.changeset/fifty-stingrays-flow.md new file mode 100644 index 0000000000..3f4b96b049 --- /dev/null +++ b/.changeset/fifty-stingrays-flow.md @@ -0,0 +1,6 @@ +--- +'astro': patch +'@astrojs/db': patch +--- + +Refactors internally to use `node:util` `parseArgs` instead of `yargs-parser` diff --git a/.changeset/rude-queens-shop.md b/.changeset/rude-queens-shop.md new file mode 100644 index 0000000000..6610b16a53 --- /dev/null +++ b/.changeset/rude-queens-shop.md @@ -0,0 +1,7 @@ +--- +'create-astro': patch +'@astrojs/upgrade': patch +--- + +Refactors internally to use `node:util` `parseArgs` instead of `arg` + diff --git a/packages/astro/package.json b/packages/astro/package.json index b131a0734e..c16f39d7e7 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -181,7 +181,6 @@ "vite": "^5.4.0", "vitefu": "^0.2.5", "which-pm": "^3.0.0", - "yargs-parser": "^21.1.1", "zod": "^3.23.8", "zod-to-json-schema": "^3.23.2" }, @@ -206,7 +205,6 @@ "@types/js-yaml": "^4.0.9", "@types/prompts": "^2.4.9", "@types/semver": "^7.5.8", - "@types/yargs-parser": "^21.0.3", "astro-scripts": "workspace:*", "cheerio": "1.0.0", "eol": "^0.9.1", diff --git a/packages/astro/performance/content-benchmark.mjs b/packages/astro/performance/content-benchmark.mjs index a710bd7625..98ef5f0eac 100644 --- a/packages/astro/performance/content-benchmark.mjs +++ b/packages/astro/performance/content-benchmark.mjs @@ -1,8 +1,8 @@ /* eslint-disable no-console */ import { fileURLToPath } from 'node:url'; +import { parseArgs } from 'node:util'; import { bold, cyan, dim } from 'kleur/colors'; -import yargs from 'yargs-parser'; import { loadFixture } from '../test/test-utils.js'; import { generatePosts } from './scripts/generate-posts.mjs'; @@ -40,7 +40,7 @@ async function benchmark({ fixtures, templates, numPosts }) { // Test the build performance for content collections across multiple file types (md, mdx, mdoc) (async function benchmarkAll() { try { - const flags = yargs(process.argv.slice(2)); + const { values: flags } = parseArgs({ strict: false }); const test = Array.isArray(flags.test) ? flags.test : typeof flags.test === 'string' diff --git a/packages/astro/performance/package.json b/packages/astro/performance/package.json index c0833b9522..36d6252817 100644 --- a/packages/astro/performance/package.json +++ b/packages/astro/performance/package.json @@ -11,8 +11,6 @@ "author": "", "license": "ISC", "devDependencies": { - "@types/yargs-parser": "^21.0.3", - "kleur": "^4.1.5", - "yargs-parser": "^21.1.1" + "kleur": "^4.1.5" } } diff --git a/packages/astro/src/cli/add/index.ts b/packages/astro/src/cli/add/index.ts index 7d33fe33a5..f710184d2c 100644 --- a/packages/astro/src/cli/add/index.ts +++ b/packages/astro/src/cli/add/index.ts @@ -9,7 +9,6 @@ import ora from 'ora'; import preferredPM from 'preferred-pm'; import prompts from 'prompts'; import maxSatisfying from 'semver/ranges/max-satisfying.js'; -import type yargs from 'yargs-parser'; import { loadTSConfig, resolveConfig, @@ -29,14 +28,14 @@ import { appendForwardSlash } from '../../core/path.js'; import { apply as applyPolyfill } from '../../core/polyfill.js'; import { ensureProcessNodeEnv, parseNpmName } from '../../core/util.js'; import { eventCliSession, telemetry } from '../../events/index.js'; -import { createLoggerFromFlags, flagsToAstroInlineConfig } from '../flags.js'; +import { type Flags, createLoggerFromFlags, flagsToAstroInlineConfig } from '../flags.js'; import { fetchPackageJson, fetchPackageVersions } from '../install-package.js'; import { generate, parse, t, visit } from './babel.js'; import { ensureImport } from './imports.js'; import { wrapDefaultExport } from './wrapper.js'; interface AddOptions { - flags: yargs.Arguments; + flags: Flags; } interface IntegrationInfo { @@ -143,7 +142,7 @@ export async function add(names: string[], { flags }: AddOptions) { } // Some packages might have a common alias! We normalize those here. - const cwd = flags.root; + const cwd = inlineConfig.root; const logger = createLoggerFromFlags(flags); const integrationNames = names.map((name) => (ALIASES.has(name) ? ALIASES.get(name)! : name)); const integrations = await validateIntegrations(integrationNames); @@ -249,7 +248,7 @@ export async function add(names: string[], { flags }: AddOptions) { const rawConfigPath = await resolveConfigPath({ root: rootPath, - configFile: flags.config, + configFile: inlineConfig.configFile, fs: fsMod, }); let configURL = rawConfigPath ? pathToFileURL(rawConfigPath) : undefined; @@ -580,7 +579,7 @@ async function updateAstroConfig({ }: { configURL: URL; ast: t.File; - flags: yargs.Arguments; + flags: Flags; logger: Logger; logAdapterInstructions: boolean; }): Promise { @@ -717,7 +716,7 @@ async function tryToInstallIntegrations({ }: { integrations: IntegrationInfo[]; cwd?: string; - flags: yargs.Arguments; + flags: Flags; logger: Logger; }): Promise { const installCommand = await getInstallIntegrationsCommand({ integrations, cwd, logger }); @@ -893,7 +892,7 @@ async function updateTSConfig( cwd = process.cwd(), logger: Logger, integrationsInfo: IntegrationInfo[], - flags: yargs.Arguments, + flags: Flags, ): Promise { const integrations = integrationsInfo.map( (integration) => integration.id as frameworkWithTSSettings, @@ -996,7 +995,7 @@ function parseIntegrationName(spec: string) { return { scope, name, tag }; } -async function askToContinue({ flags }: { flags: yargs.Arguments }): Promise { +async function askToContinue({ flags }: { flags: Flags }): Promise { if (flags.yes || flags.y) return true; const response = await prompts({ @@ -1038,7 +1037,7 @@ function getDiffContent(input: string, output: string): string | null { async function setupIntegrationConfig(opts: { root: URL; logger: Logger; - flags: yargs.Arguments; + flags: Flags; integrationName: string; possibleConfigFiles: string[]; defaultConfigFile: string; diff --git a/packages/astro/src/cli/build/index.ts b/packages/astro/src/cli/build/index.ts index 15ff584317..9c10aff156 100644 --- a/packages/astro/src/cli/build/index.ts +++ b/packages/astro/src/cli/build/index.ts @@ -1,10 +1,9 @@ -import type yargs from 'yargs-parser'; import _build from '../../core/build/index.js'; import { printHelp } from '../../core/messages.js'; -import { flagsToAstroInlineConfig } from '../flags.js'; +import { type Flags, flagsToAstroInlineConfig } from '../flags.js'; interface BuildOptions { - flags: yargs.Arguments; + flags: Flags; } export async function build({ flags }: BuildOptions) { @@ -25,5 +24,5 @@ export async function build({ flags }: BuildOptions) { const inlineConfig = flagsToAstroInlineConfig(flags); - await _build(inlineConfig, { force: flags.force ?? false }); + await _build(inlineConfig, { force: !!flags.force }); } diff --git a/packages/astro/src/cli/check/index.ts b/packages/astro/src/cli/check/index.ts index a95e1074a5..490d23970b 100644 --- a/packages/astro/src/cli/check/index.ts +++ b/packages/astro/src/cli/check/index.ts @@ -1,13 +1,15 @@ import path from 'node:path'; -import type { Arguments } from 'yargs-parser'; import { ensureProcessNodeEnv } from '../../core/util.js'; -import { createLoggerFromFlags, flagsToAstroInlineConfig } from '../flags.js'; +import { type Flags, createLoggerFromFlags, flagsToAstroInlineConfig } from '../flags.js'; import { getPackage } from '../install-package.js'; -export async function check(flags: Arguments) { +export async function check(flags: Flags) { ensureProcessNodeEnv('production'); const logger = createLoggerFromFlags(flags); - const getPackageOpts = { skipAsk: flags.yes || flags.y, cwd: flags.root }; + const getPackageOpts = { + skipAsk: !!flags.yes || !!flags.y, + cwd: typeof flags.root == 'string' ? flags.root : undefined, + }; const checkPackage = await getPackage( '@astrojs/check', logger, diff --git a/packages/astro/src/cli/db/index.ts b/packages/astro/src/cli/db/index.ts index dc6da36e1d..c6be7411bb 100644 --- a/packages/astro/src/cli/db/index.ts +++ b/packages/astro/src/cli/db/index.ts @@ -1,18 +1,26 @@ -import type { Arguments } from 'yargs-parser'; import type { AstroConfig } from '../../@types/astro.js'; import { resolveConfig } from '../../core/config/config.js'; import { apply as applyPolyfill } from '../../core/polyfill.js'; -import { createLoggerFromFlags, flagsToAstroInlineConfig } from '../flags.js'; +import { type Flags, createLoggerFromFlags, flagsToAstroInlineConfig } from '../flags.js'; import { getPackage } from '../install-package.js'; +interface YargsArguments { + _: Array; + '--'?: Array; + [argName: string]: any; +} + type DBPackage = { - cli: (args: { flags: Arguments; config: AstroConfig }) => unknown; + cli: (args: { flags: YargsArguments; config: AstroConfig }) => unknown; }; -export async function db({ flags }: { flags: Arguments }) { +export async function db({ positionals, flags }: { positionals: string[]; flags: Flags }) { applyPolyfill(); const logger = createLoggerFromFlags(flags); - const getPackageOpts = { skipAsk: flags.yes || flags.y, cwd: flags.root }; + const getPackageOpts = { + skipAsk: !!flags.yes || !!flags.y, + cwd: typeof flags.root == 'string' ? flags.root : undefined, + }; const dbPackage = await getPackage('@astrojs/db', logger, getPackageOpts, []); if (!dbPackage) { @@ -27,5 +35,10 @@ export async function db({ flags }: { flags: Arguments }) { const inlineConfig = flagsToAstroInlineConfig(flags); const { astroConfig } = await resolveConfig(inlineConfig, 'build'); - await cli({ flags, config: astroConfig }); + const yargsArgs: YargsArguments = { + _: positionals, + ...flags, + }; + + await cli({ flags: yargsArgs, config: astroConfig }); } diff --git a/packages/astro/src/cli/dev/index.ts b/packages/astro/src/cli/dev/index.ts index 531cddde4c..2bd22b7c6a 100644 --- a/packages/astro/src/cli/dev/index.ts +++ b/packages/astro/src/cli/dev/index.ts @@ -1,11 +1,10 @@ import { cyan } from 'kleur/colors'; -import type yargs from 'yargs-parser'; import devServer from '../../core/dev/index.js'; import { printHelp } from '../../core/messages.js'; -import { flagsToAstroInlineConfig } from '../flags.js'; +import { type Flags, flagsToAstroInlineConfig } from '../flags.js'; interface DevOptions { - flags: yargs.Arguments; + flags: Flags; } export async function dev({ flags }: DevOptions) { diff --git a/packages/astro/src/cli/docs/index.ts b/packages/astro/src/cli/docs/index.ts index cd6325577b..afb5a1c622 100644 --- a/packages/astro/src/cli/docs/index.ts +++ b/packages/astro/src/cli/docs/index.ts @@ -1,9 +1,9 @@ -import type yargs from 'yargs-parser'; import { printHelp } from '../../core/messages.js'; +import type { Flags } from '../flags.js'; import { openInBrowser } from './open.js'; interface DocsOptions { - flags: yargs.Arguments; + flags: Flags; } export async function docs({ flags }: DocsOptions) { diff --git a/packages/astro/src/cli/flags.ts b/packages/astro/src/cli/flags.ts index 0af16806df..c8180708f7 100644 --- a/packages/astro/src/cli/flags.ts +++ b/packages/astro/src/cli/flags.ts @@ -1,8 +1,11 @@ -import type { Arguments as Flags } from 'yargs-parser'; +import type { parseArgs } from 'node:util'; import type { AstroInlineConfig } from '../@types/astro.js'; import { type LogOptions, Logger } from '../core/logger/core.js'; import { nodeLogDestination } from '../core/logger/node.js'; +export type ParsedArgsResult = ReturnType; +export type Flags = ParsedArgsResult['values']; + export function flagsToAstroInlineConfig(flags: Flags): AstroInlineConfig { return { // Inline-only configs @@ -16,7 +19,7 @@ export function flagsToAstroInlineConfig(flags: Flags): AstroInlineConfig { base: typeof flags.base === 'string' ? flags.base : undefined, outDir: typeof flags.outDir === 'string' ? flags.outDir : undefined, server: { - port: typeof flags.port === 'number' ? flags.port : undefined, + port: typeof flags.port === 'string' ? Number(flags.port) : undefined, host: typeof flags.host === 'string' || typeof flags.host === 'boolean' ? flags.host : undefined, open: diff --git a/packages/astro/src/cli/index.ts b/packages/astro/src/cli/index.ts index 2d37132ac3..b3a819e586 100644 --- a/packages/astro/src/cli/index.ts +++ b/packages/astro/src/cli/index.ts @@ -1,7 +1,8 @@ +import { parseArgs } from 'node:util'; /* eslint-disable no-console */ import * as colors from 'kleur/colors'; -import yargs from 'yargs-parser'; import { ASTRO_VERSION } from '../core/constants.js'; +import type { ParsedArgsResult } from './flags.js'; type CLICommand = | 'help' @@ -65,9 +66,9 @@ function printVersion() { } /** Determine which command the user requested */ -function resolveCommand(flags: yargs.Arguments): CLICommand { - const cmd = flags._[2] as string; - if (flags.version) return 'version'; +function resolveCommand(args: ParsedArgsResult): CLICommand { + const cmd = args.positionals[2] as string; + if (args.values.version) return 'version'; const supportedCommands = new Set([ 'add', @@ -97,7 +98,9 @@ function resolveCommand(flags: yargs.Arguments): CLICommand { * NOTE: This function provides no error handling, so be sure * to present user-friendly error output where the fn is called. **/ -async function runCommand(cmd: string, flags: yargs.Arguments) { +async function runCommand(cmd: string, args: ParsedArgsResult) { + const flags = args.values; + // These commands can run directly without parsing the user config. switch (cmd) { case 'help': @@ -120,7 +123,7 @@ async function runCommand(cmd: string, flags: yargs.Arguments) { // Do not track session start, since the user may be trying to enable, // disable, or modify telemetry settings. const { update } = await import('./telemetry/index.js'); - const subcommand = flags._[3]?.toString(); + const subcommand = args.positionals[3]; await update(subcommand, { flags }); return; } @@ -131,7 +134,7 @@ async function runCommand(cmd: string, flags: yargs.Arguments) { } case 'preferences': { const { preferences } = await import('./preferences/index.js'); - const [subcommand, key, value] = flags._.slice(3).map((v) => v.toString()); + const [subcommand, key, value] = args.positionals.slice(3); const exitCode = await preferences(subcommand, key, value, { flags }); return process.exit(exitCode); } @@ -151,7 +154,7 @@ async function runCommand(cmd: string, flags: yargs.Arguments) { switch (cmd) { case 'add': { const { add } = await import('./add/index.js'); - const packages = flags._.slice(3) as string[]; + const packages = args.positionals.slice(3); await add(packages, { flags }); return; } @@ -161,7 +164,7 @@ async function runCommand(cmd: string, flags: yargs.Arguments) { case 'link': case 'init': { const { db } = await import('./db/index.js'); - await db({ flags }); + await db({ positionals: args.positionals, flags }); return; } case 'dev': { @@ -201,11 +204,21 @@ async function runCommand(cmd: string, flags: yargs.Arguments) { } /** The primary CLI action */ -export async function cli(args: string[]) { - const flags = yargs(args, { boolean: ['global'], alias: { g: 'global' } }); - const cmd = resolveCommand(flags); +export async function cli(argv: string[]) { + const args = parseArgs({ + args: argv, + allowPositionals: true, + strict: false, + options: { + global: { type: 'boolean', short: 'g' }, + host: { type: 'string' }, // Can be boolean too, which is covered by `strict: false` + open: { type: 'string' }, // Can be boolean too, which is covered by `strict: false` + // TODO: Add more flags here + }, + }); + const cmd = resolveCommand(args); try { - await runCommand(cmd, flags); + await runCommand(cmd, args); } catch (err) { const { throwAndExit } = await import('./throw-and-exit.js'); await throwAndExit(cmd, err); diff --git a/packages/astro/src/cli/info/index.ts b/packages/astro/src/cli/info/index.ts index cb61e45bfc..3fa91802f2 100644 --- a/packages/astro/src/cli/info/index.ts +++ b/packages/astro/src/cli/info/index.ts @@ -3,15 +3,14 @@ import { arch, platform } from 'node:os'; /* eslint-disable no-console */ import * as colors from 'kleur/colors'; import prompts from 'prompts'; -import type yargs from 'yargs-parser'; import type { AstroConfig, AstroUserConfig } from '../../@types/astro.js'; import { resolveConfig } from '../../core/config/index.js'; import { ASTRO_VERSION } from '../../core/constants.js'; import { apply as applyPolyfill } from '../../core/polyfill.js'; -import { flagsToAstroInlineConfig } from '../flags.js'; +import { type Flags, flagsToAstroInlineConfig } from '../flags.js'; interface InfoOptions { - flags: yargs.Arguments; + flags: Flags; } export async function getInfoOutput({ diff --git a/packages/astro/src/cli/preferences/index.ts b/packages/astro/src/cli/preferences/index.ts index 5735a9b6c2..3811e7f487 100644 --- a/packages/astro/src/cli/preferences/index.ts +++ b/packages/astro/src/cli/preferences/index.ts @@ -1,5 +1,4 @@ /* eslint-disable no-console */ -import type yargs from 'yargs-parser'; import type { AstroSettings } from '../../@types/astro.js'; import { fileURLToPath } from 'node:url'; @@ -15,10 +14,10 @@ import * as msg from '../../core/messages.js'; import { apply as applyPolyfill } from '../../core/polyfill.js'; import { DEFAULT_PREFERENCES } from '../../preferences/defaults.js'; import { type PreferenceKey, coerce, isValidKey } from '../../preferences/index.js'; -import { createLoggerFromFlags, flagsToAstroInlineConfig } from '../flags.js'; +import { type Flags, createLoggerFromFlags, flagsToAstroInlineConfig } from '../flags.js'; interface PreferencesOptions { - flags: yargs.Arguments; + flags: Flags; } const PREFERENCES_SUBCOMMANDS = [ @@ -77,7 +76,7 @@ export async function preferences( const settings = await createSettings(astroConfig, fileURLToPath(astroConfig.root)); const opts: SubcommandOptions = { location: flags.global ? 'global' : undefined, - json: flags.json, + json: !!flags.json, }; if (subcommand === 'list') { diff --git a/packages/astro/src/cli/preview/index.ts b/packages/astro/src/cli/preview/index.ts index 387c1f241a..468332ce3b 100644 --- a/packages/astro/src/cli/preview/index.ts +++ b/packages/astro/src/cli/preview/index.ts @@ -1,11 +1,10 @@ import { cyan } from 'kleur/colors'; -import type yargs from 'yargs-parser'; import { printHelp } from '../../core/messages.js'; import previewServer from '../../core/preview/index.js'; -import { flagsToAstroInlineConfig } from '../flags.js'; +import { type Flags, flagsToAstroInlineConfig } from '../flags.js'; interface PreviewOptions { - flags: yargs.Arguments; + flags: Flags; } export async function preview({ flags }: PreviewOptions) { diff --git a/packages/astro/src/cli/sync/index.ts b/packages/astro/src/cli/sync/index.ts index 6849fee708..89623e6a80 100644 --- a/packages/astro/src/cli/sync/index.ts +++ b/packages/astro/src/cli/sync/index.ts @@ -1,10 +1,9 @@ -import type yargs from 'yargs-parser'; import { printHelp } from '../../core/messages.js'; import _sync from '../../core/sync/index.js'; -import { flagsToAstroInlineConfig } from '../flags.js'; +import { type Flags, flagsToAstroInlineConfig } from '../flags.js'; interface SyncOptions { - flags: yargs.Arguments; + flags: Flags; } export async function sync({ flags }: SyncOptions) { diff --git a/packages/astro/src/cli/telemetry/index.ts b/packages/astro/src/cli/telemetry/index.ts index 277b1cab67..276f00ef19 100644 --- a/packages/astro/src/cli/telemetry/index.ts +++ b/packages/astro/src/cli/telemetry/index.ts @@ -1,11 +1,10 @@ /* eslint-disable no-console */ -import type yargs from 'yargs-parser'; import * as msg from '../../core/messages.js'; import { telemetry } from '../../events/index.js'; -import { createLoggerFromFlags } from '../flags.js'; +import { type Flags, createLoggerFromFlags } from '../flags.js'; interface TelemetryOptions { - flags: yargs.Arguments; + flags: Flags; } export async function notify() { diff --git a/packages/astro/src/core/config/config.ts b/packages/astro/src/core/config/config.ts index 2e43661a43..c10066ce32 100644 --- a/packages/astro/src/core/config/config.ts +++ b/packages/astro/src/core/config/config.ts @@ -2,14 +2,12 @@ import fs from 'node:fs'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; import * as colors from 'kleur/colors'; -import type { Arguments as Flags } from 'yargs-parser'; import { ZodError } from 'zod'; import type { AstroConfig, AstroInlineConfig, AstroInlineOnlyConfig, AstroUserConfig, - CLIFlags, } from '../../@types/astro.js'; import { eventConfigError, telemetry } from '../../events/index.js'; import { trackAstroConfigZodError } from '../errors/errors.js'; @@ -19,23 +17,6 @@ import { mergeConfig } from './merge.js'; import { validateConfig } from './validate.js'; import { loadConfigWithVite } from './vite-load.js'; -/** Convert the generic "yargs" flag object into our own, custom TypeScript object. */ -// NOTE: This function will be removed in a later PR. Use `flagsToAstroInlineConfig` instead. -// All CLI related flow should be located in the `packages/astro/src/cli` directory. -export function resolveFlags(flags: Partial): CLIFlags { - return { - root: typeof flags.root === 'string' ? flags.root : undefined, - site: typeof flags.site === 'string' ? flags.site : undefined, - base: typeof flags.base === 'string' ? flags.base : undefined, - port: typeof flags.port === 'number' ? flags.port : undefined, - config: typeof flags.config === 'string' ? flags.config : undefined, - host: - typeof flags.host === 'string' || typeof flags.host === 'boolean' ? flags.host : undefined, - open: - typeof flags.open === 'string' || typeof flags.open === 'boolean' ? flags.open : undefined, - }; -} - export function resolveRoot(cwd?: string | URL): string { if (cwd instanceof URL) { cwd = fileURLToPath(cwd); @@ -66,7 +47,7 @@ async function search(fsMod: typeof fs, root: string) { interface ResolveConfigPathOptions { root: string; - configFile?: string; + configFile?: string | false; fs: typeof fs; } diff --git a/packages/astro/src/core/config/index.ts b/packages/astro/src/core/config/index.ts index 3beaa56635..7ffc290141 100644 --- a/packages/astro/src/core/config/index.ts +++ b/packages/astro/src/core/config/index.ts @@ -2,7 +2,6 @@ export { configPaths, resolveConfig, resolveConfigPath, - resolveFlags, resolveRoot, } from './config.js'; export { createNodeLogger } from './logging.js'; diff --git a/packages/create-astro/src/actions/context.ts b/packages/create-astro/src/actions/context.ts index 83a13eda7c..bf1b522bd3 100644 --- a/packages/create-astro/src/actions/context.ts +++ b/packages/create-astro/src/actions/context.ts @@ -1,7 +1,7 @@ import os from 'node:os'; +import { parseArgs } from 'node:util'; import { type Task, prompt } from '@astrojs/cli-kit'; import { random } from '@astrojs/cli-kit/utils'; -import arg from 'arg'; import getSeasonalData from '../data/seasonal.js'; import { getName, getVersion } from '../messages.js'; @@ -33,47 +33,44 @@ export interface Context { } export async function getContext(argv: string[]): Promise { - const flags = arg( - { - '--template': String, - '--ref': String, - '--yes': Boolean, - '--no': Boolean, - '--install': Boolean, - '--no-install': Boolean, - '--git': Boolean, - '--no-git': Boolean, - '--typescript': String, - '--skip-houston': Boolean, - '--dry-run': Boolean, - '--help': Boolean, - '--fancy': Boolean, - - '-y': '--yes', - '-n': '--no', - '-h': '--help', + const args = parseArgs({ + args: argv, + allowPositionals: true, + strict: false, + options: { + template: { type: 'string' }, + ref: { type: 'string' }, + yes: { type: 'boolean', short: 'y' }, + no: { type: 'boolean', short: 'n' }, + install: { type: 'boolean' }, + 'no-install': { type: 'boolean' }, + git: { type: 'boolean' }, + 'no-git': { type: 'boolean' }, + typescript: { type: 'string' }, + 'skip-houston': { type: 'boolean' }, + 'dry-run': { type: 'boolean' }, + help: { type: 'boolean', short: 'h' }, + fancy: { type: 'boolean' }, }, - { argv, permissive: true }, - ); + }); const packageManager = detectPackageManager() ?? 'npm'; - let cwd = flags['_'][0]; + const projectName = args.positionals[0]; let { - '--help': help = false, - '--template': template, - '--no': no, - '--yes': yes, - '--install': install, - '--no-install': noInstall, - '--git': git, - '--no-git': noGit, - '--typescript': typescript, - '--fancy': fancy, - '--skip-houston': skipHouston, - '--dry-run': dryRun, - '--ref': ref, - } = flags; - let projectName = cwd; + help, + template, + no, + yes, + install, + 'no-install': noInstall, + git, + 'no-git': noGit, + typescript, + fancy, + 'skip-houston': skipHouston, + 'dry-run': dryRun, + ref, + } = args.values; if (no) { yes = false; @@ -82,10 +79,26 @@ export async function getContext(argv: string[]): Promise { if (typescript == undefined) typescript = 'strict'; } + skipHouston = typeof skipHouston == 'boolean' ? skipHouston : undefined; skipHouston = ((os.platform() === 'win32' && !fancy) || skipHouston) ?? [yes, no, install, git, typescript].some((v) => v !== undefined); + // We use `strict: false` in `parseArgs` to allow unknown options, but Node also + // simply doesn't guarantee the types anymore, so we need to validate ourselves :( + help = !!help; + template = typeof template == 'string' ? template : undefined; + no = !!no; + yes = !!yes; + install = !!install; + noInstall = !!noInstall; + git = !!git; + noGit = !!noGit; + typescript = typeof typescript == 'string' ? typescript : undefined; + fancy = !!fancy; + dryRun = !!dryRun; + ref = typeof ref == 'string' ? ref : undefined; + const { messages, hats, ties } = getSeasonalData({ fancy }); const context: Context = { @@ -107,7 +120,7 @@ export async function getContext(argv: string[]): Promise { install: install ?? (noInstall ? false : undefined), git: git ?? (noGit ? false : undefined), typescript, - cwd, + cwd: projectName, exit(code) { process.exit(code); }, diff --git a/packages/db/package.json b/packages/db/package.json index 850c6c9477..6dd5d58238 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -81,13 +81,11 @@ "ora": "^8.0.1", "prompts": "^2.4.2", "strip-ansi": "^7.1.0", - "yargs-parser": "^21.1.1", "zod": "^3.23.8" }, "devDependencies": { "@types/deep-diff": "^1.0.5", "@types/prompts": "^2.4.9", - "@types/yargs-parser": "^21.0.3", "astro": "workspace:*", "astro-scripts": "workspace:*", "cheerio": "1.0.0", diff --git a/packages/db/src/core/cli/commands/execute/index.ts b/packages/db/src/core/cli/commands/execute/index.ts index c6c11cdbb6..03b3d00add 100644 --- a/packages/db/src/core/cli/commands/execute/index.ts +++ b/packages/db/src/core/cli/commands/execute/index.ts @@ -3,7 +3,6 @@ import { getManagedAppTokenOrExit } from '@astrojs/studio'; import { LibsqlError } from '@libsql/client'; import type { AstroConfig } from 'astro'; import { green } from 'kleur/colors'; -import type { Arguments } from 'yargs-parser'; import { EXEC_DEFAULT_EXPORT_ERROR, EXEC_ERROR, @@ -16,6 +15,7 @@ import { } from '../../../integration/vite-plugin-db.js'; import { bundleFile, importBundledFile } from '../../../load-file.js'; import type { DBConfig } from '../../../types.js'; +import type { YargsArguments } from '../../types.js'; export async function cmd({ astroConfig, @@ -24,7 +24,7 @@ export async function cmd({ }: { astroConfig: AstroConfig; dbConfig: DBConfig; - flags: Arguments; + flags: YargsArguments; }) { const filePath = flags._[4]; if (typeof filePath !== 'string') { diff --git a/packages/db/src/core/cli/commands/login/index.ts b/packages/db/src/core/cli/commands/login/index.ts index 61f7e0275b..251d61e054 100644 --- a/packages/db/src/core/cli/commands/login/index.ts +++ b/packages/db/src/core/cli/commands/login/index.ts @@ -7,8 +7,8 @@ import { cyan } from 'kleur/colors'; import open from 'open'; import ora from 'ora'; import prompt from 'prompts'; -import type { Arguments } from 'yargs-parser'; import type { DBConfig } from '../../../types.js'; +import type { YargsArguments } from '../../types.js'; const isWebContainer = // Stackblitz heuristic @@ -21,7 +21,7 @@ export async function cmd({ }: { astroConfig: AstroConfig; dbConfig: DBConfig; - flags: Arguments; + flags: YargsArguments; }) { let session = flags.session; diff --git a/packages/db/src/core/cli/commands/push/index.ts b/packages/db/src/core/cli/commands/push/index.ts index ecd101ecea..237f7f6ea2 100644 --- a/packages/db/src/core/cli/commands/push/index.ts +++ b/packages/db/src/core/cli/commands/push/index.ts @@ -1,7 +1,6 @@ import { getManagedAppTokenOrExit } from '@astrojs/studio'; import type { AstroConfig } from 'astro'; import prompts from 'prompts'; -import type { Arguments } from 'yargs-parser'; import { safeFetch } from '../../../../runtime/utils.js'; import { MIGRATION_VERSION } from '../../../consts.js'; import { type DBConfig, type DBSnapshot } from '../../../types.js'; @@ -13,6 +12,7 @@ import { getMigrationQueries, getProductionCurrentSnapshot, } from '../../migration-queries.js'; +import type { YargsArguments } from '../../types.js'; export async function cmd({ dbConfig, @@ -20,7 +20,7 @@ export async function cmd({ }: { astroConfig: AstroConfig; dbConfig: DBConfig; - flags: Arguments; + flags: YargsArguments; }) { const isDryRun = flags.dryRun; const isForceReset = flags.forceReset; diff --git a/packages/db/src/core/cli/commands/shell/index.ts b/packages/db/src/core/cli/commands/shell/index.ts index e0a1a6086c..5a6bcaa53d 100644 --- a/packages/db/src/core/cli/commands/shell/index.ts +++ b/packages/db/src/core/cli/commands/shell/index.ts @@ -1,7 +1,6 @@ import { getManagedAppTokenOrExit } from '@astrojs/studio'; import type { AstroConfig } from 'astro'; import { sql } from 'drizzle-orm'; -import type { Arguments } from 'yargs-parser'; import { createLocalDatabaseClient, createRemoteDatabaseClient, @@ -11,6 +10,7 @@ import { DB_PATH } from '../../../consts.js'; import { SHELL_QUERY_MISSING_ERROR } from '../../../errors.js'; import type { DBConfigInput } from '../../../types.js'; import { getAstroEnv, getRemoteDatabaseUrl } from '../../../utils.js'; +import type { YargsArguments } from '../../types.js'; export async function cmd({ flags, @@ -18,7 +18,7 @@ export async function cmd({ }: { dbConfig: DBConfigInput; astroConfig: AstroConfig; - flags: Arguments; + flags: YargsArguments; }) { const query = flags.query; if (!query) { diff --git a/packages/db/src/core/cli/commands/verify/index.ts b/packages/db/src/core/cli/commands/verify/index.ts index 950fb66156..081c8ae3f8 100644 --- a/packages/db/src/core/cli/commands/verify/index.ts +++ b/packages/db/src/core/cli/commands/verify/index.ts @@ -1,6 +1,5 @@ import { getManagedAppTokenOrExit } from '@astrojs/studio'; import type { AstroConfig } from 'astro'; -import type { Arguments } from 'yargs-parser'; import type { DBConfig } from '../../../types.js'; import { createCurrentSnapshot, @@ -9,6 +8,7 @@ import { getMigrationQueries, getProductionCurrentSnapshot, } from '../../migration-queries.js'; +import type { YargsArguments } from '../../types.js'; export async function cmd({ dbConfig, @@ -16,7 +16,7 @@ export async function cmd({ }: { astroConfig: AstroConfig; dbConfig: DBConfig; - flags: Arguments; + flags: YargsArguments; }) { const isJson = flags.json; const appToken = await getManagedAppTokenOrExit(flags.token); diff --git a/packages/db/src/core/cli/index.ts b/packages/db/src/core/cli/index.ts index 531b016a6b..5d9aa10e97 100644 --- a/packages/db/src/core/cli/index.ts +++ b/packages/db/src/core/cli/index.ts @@ -1,13 +1,13 @@ import type { AstroConfig } from 'astro'; -import type { Arguments } from 'yargs-parser'; import { resolveDbConfig } from '../load-file.js'; import { printHelp } from './print-help.js'; +import type { YargsArguments } from './types.js'; export async function cli({ flags, config: astroConfig, }: { - flags: Arguments; + flags: YargsArguments; config: AstroConfig; }) { const args = flags._ as string[]; diff --git a/packages/db/src/core/cli/types.ts b/packages/db/src/core/cli/types.ts new file mode 100644 index 0000000000..9d8aad56b7 --- /dev/null +++ b/packages/db/src/core/cli/types.ts @@ -0,0 +1,7 @@ +// Copy of `yargs-parser` `Arguments` type. We don't use `yargs-parser` +// in runtime anymore, but our exposed API still relies on this shape. +export interface YargsArguments { + _: Array; + '--'?: Array; + [argName: string]: any; +} diff --git a/packages/db/src/core/integration/index.ts b/packages/db/src/core/integration/index.ts index 19c712c802..6573c838af 100644 --- a/packages/db/src/core/integration/index.ts +++ b/packages/db/src/core/integration/index.ts @@ -1,4 +1,5 @@ import { existsSync } from 'fs'; +import { parseArgs } from 'node:util'; import { dirname } from 'path'; import { fileURLToPath } from 'url'; import { type ManagedAppToken, getManagedAppTokenOrExit } from '@astrojs/studio'; @@ -14,7 +15,6 @@ import { loadEnv, mergeConfig, } from 'vite'; -import parseArgs from 'yargs-parser'; import { AstroDbError } from '../../runtime/utils.js'; import { CONFIG_FILE_NAMES, DB_PATH } from '../consts.js'; import { EXEC_DEFAULT_EXPORT_ERROR, EXEC_ERROR } from '../errors.js'; @@ -72,8 +72,8 @@ function astroDBIntegration(): AstroIntegration { if (command === 'preview') return; let dbPlugin: VitePlugin | undefined = undefined; - const args = parseArgs(process.argv.slice(3)); - connectToStudio = process.env.ASTRO_INTERNAL_TEST_REMOTE || args['remote']; + const args = parseArgs({ strict: false }); + connectToStudio = !!process.env.ASTRO_INTERNAL_TEST_REMOTE || !!args.values.remote; if (connectToStudio) { appToken = await getManagedAppTokenOrExit(); diff --git a/packages/upgrade/src/actions/context.ts b/packages/upgrade/src/actions/context.ts index 2103a53277..cd9028e85a 100644 --- a/packages/upgrade/src/actions/context.ts +++ b/packages/upgrade/src/actions/context.ts @@ -1,13 +1,13 @@ import { pathToFileURL } from 'node:url'; +import { parseArgs } from 'node:util'; import { prompt } from '@astrojs/cli-kit'; -import arg from 'arg'; import detectPackageManager from 'preferred-pm'; export interface Context { help: boolean; prompt: typeof prompt; version: string; - dryRun?: boolean; + dryRun: boolean; cwd: URL; stdin?: typeof process.stdin; stdout?: typeof process.stdout; @@ -28,22 +28,20 @@ export interface PackageInfo { } export async function getContext(argv: string[]): Promise { - const flags = arg( - { - '--dry-run': Boolean, - '--help': Boolean, - - '-h': '--help', + const args = parseArgs({ + args: argv, + allowPositionals: true, + strict: false, + options: { + 'dry-run': { type: 'boolean' }, + help: { type: 'boolean', short: 'h' }, }, - { argv, permissive: true }, - ); + }); const packageManager = (await detectPackageManager(process.cwd()))?.name ?? 'npm'; - const { - _: [version = 'latest'] = [], - '--help': help = false, - '--dry-run': dryRun, - } = flags; + const version = args.positionals[0] ?? 'latest'; + const help = !!args.values.help; + const dryRun = !!args.values['dry-run']; return { help, diff --git a/packages/upgrade/test/context.test.js b/packages/upgrade/test/context.test.js index bbc887c2ae..5ba484740f 100644 --- a/packages/upgrade/test/context.test.js +++ b/packages/upgrade/test/context.test.js @@ -6,12 +6,12 @@ describe('context', () => { it('no arguments', async () => { const ctx = await getContext([]); assert.equal(ctx.version, 'latest'); - assert.equal(ctx.dryRun, undefined); + assert.equal(ctx.dryRun, false); }); it('tag', async () => { const ctx = await getContext(['beta']); assert.equal(ctx.version, 'beta'); - assert.equal(ctx.dryRun, undefined); + assert.equal(ctx.dryRun, false); }); it('dry run', async () => { const ctx = await getContext(['--dry-run']); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 95ef9f027c..58191b539a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -729,9 +729,6 @@ importers: which-pm: specifier: ^3.0.0 version: 3.0.0 - yargs-parser: - specifier: ^21.1.1 - version: 21.1.1 zod: specifier: ^3.23.8 version: 3.23.8 @@ -794,9 +791,6 @@ importers: '@types/semver': specifier: ^7.5.8 version: 7.5.8 - '@types/yargs-parser': - specifier: ^21.0.3 - version: 21.0.3 astro-scripts: specifier: workspace:* version: link:../../scripts @@ -1720,15 +1714,9 @@ importers: packages/astro/performance: devDependencies: - '@types/yargs-parser': - specifier: ^21.0.3 - version: 21.0.3 kleur: specifier: ^4.1.5 version: 4.1.5 - yargs-parser: - specifier: ^21.1.1 - version: 21.1.1 packages/astro/performance/fixtures/md: dependencies: @@ -4252,9 +4240,6 @@ importers: strip-ansi: specifier: ^7.1.0 version: 7.1.0 - yargs-parser: - specifier: ^21.1.1 - version: 21.1.1 zod: specifier: ^3.23.8 version: 3.23.8 @@ -4265,9 +4250,6 @@ importers: '@types/prompts': specifier: ^2.4.9 version: 2.4.9 - '@types/yargs-parser': - specifier: ^21.0.3 - version: 21.0.3 astro: specifier: workspace:* version: link:../astro @@ -7529,9 +7511,6 @@ packages: '@types/xml2js@0.4.14': resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==} - '@types/yargs-parser@21.0.3': - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@typescript-eslint/eslint-plugin@8.0.1': resolution: {integrity: sha512-5g3Y7GDFsJAnY4Yhvk8sZtFfV6YNF2caLzjrRPUBzewjPCaj0yokePB4LJSobyCzGMzjZZYFbwuzbfDHlimXbQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -13410,8 +13389,6 @@ snapshots: dependencies: '@types/node': 18.19.31 - '@types/yargs-parser@21.0.3': {} - '@typescript-eslint/eslint-plugin@8.0.1(@typescript-eslint/parser@8.0.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.11.0 diff --git a/scripts/cmd/copy.js b/scripts/cmd/copy.js index 943c998dfb..948ed114fe 100644 --- a/scripts/cmd/copy.js +++ b/scripts/cmd/copy.js @@ -1,19 +1,20 @@ -import arg from 'arg'; import { globby as glob } from 'globby'; import { promises as fs, readFileSync } from 'node:fs'; import { posix } from 'node:path'; +import { parseArgs } from 'node:util'; import * as tar from 'tar/create'; const { resolve, dirname, sep, join } = posix; -/** @type {import('arg').Spec} */ -const spec = { - '--tgz': Boolean, -}; - export default async function copy() { - let { _: patterns, ['--tgz']: isCompress } = arg(spec); - patterns = patterns.slice(1); + const args = parseArgs({ + allowPositionals: true, + options: { + tgz: { type: 'boolean' }, + }, + }); + const patterns = args.positionals.slice(1); + const isCompress = args.values.tgz; if (isCompress) { const files = await glob(patterns, { gitignore: true }); diff --git a/scripts/cmd/test.js b/scripts/cmd/test.js index 04f02f73af..17f6ecd041 100644 --- a/scripts/cmd/test.js +++ b/scripts/cmd/test.js @@ -3,30 +3,32 @@ import { spec } from 'node:test/reporters'; import fs from 'node:fs/promises'; import path from 'node:path'; import { pathToFileURL } from 'node:url'; -import arg from 'arg'; +import { parseArgs } from 'node:util'; import glob from 'tiny-glob'; const isCI = !!process.env.CI; const defaultTimeout = isCI ? 1400000 : 600000; export default async function test() { - const args = arg({ - '--match': String, // aka --test-name-pattern: https://nodejs.org/api/test.html#filtering-tests-by-name - '--only': Boolean, // aka --test-only: https://nodejs.org/api/test.html#only-tests - '--parallel': Boolean, // aka --test-concurrency: https://nodejs.org/api/test.html#test-runner-execution-model - '--watch': Boolean, // experimental: https://nodejs.org/api/test.html#watch-mode - '--timeout': Number, // Test timeout in milliseconds (default: 30000ms) - '--setup': String, // Test setup file - // Aliases - '-m': '--match', - '-o': '--only', - '-p': '--parallel', - '-w': '--watch', - '-t': '--timeout', - '-s': '--setup', + const args = parseArgs({ + allowPositionals: true, + options: { + // aka --test-name-pattern: https://nodejs.org/api/test.html#filtering-tests-by-name + match: { type: 'string', alias: 'm' }, + // aka --test-only: https://nodejs.org/api/test.html#only-tests + only: { type: 'boolean', alias: 'o' }, + // aka --test-concurrency: https://nodejs.org/api/test.html#test-runner-execution-model + parallel: { type: 'boolean', alias: 'p' }, + // experimental: https://nodejs.org/api/test.html#watch-mode + watch: { type: 'boolean', alias: 'w' }, + // Test timeout in milliseconds (default: 30000ms) + timeout: { type: 'string', alias: 't' }, + // Test setup file + setup: { type: 'string', alias: 's' }, + }, }); - const pattern = args._[1]; + const pattern = args.positionals[1]; if (!pattern) throw new Error('Missing test glob pattern'); const files = await glob(pattern, { filesOnly: true, absolute: true }); @@ -34,12 +36,12 @@ export default async function test() { // For some reason, the `only` option does not work and we need to explicitly set the CLI flag instead. // Node.js requires opt-in to run .only tests :( // https://nodejs.org/api/test.html#only-tests - if (args['--only']) { + if (args.values.only) { process.env.NODE_OPTIONS ??= ''; process.env.NODE_OPTIONS += ' --test-only'; } - if (!args['--parallel']) { + if (!args.values.parallel) { // If not parallel, we create a temporary file that imports all the test files // so that it all runs in a single process. const tempTestFile = path.resolve('./node_modules/.astro/test.mjs'); @@ -56,12 +58,12 @@ export default async function test() { // https://nodejs.org/api/test.html#runoptions run({ files, - testNamePatterns: args['--match'], - concurrency: args['--parallel'], - only: args['--only'], - setup: args['--setup'], - watch: args['--watch'], - timeout: args['--timeout'] ?? defaultTimeout, // Node.js defaults to Infinity, so set better fallback + testNamePatterns: args.values.match, + concurrency: args.values.parallel, + only: args.values.only, + setup: args.values.setup, + watch: args.values.watch, + timeout: args.values.timeout ? Number(args.values.timeout) : defaultTimeout, // Node.js defaults to Infinity, so set better fallback }) .on('test:fail', () => { // For some reason, a test fail using the JS API does not set an exit code of 1, From 19a72592119ff4a47c8cc541990eadc1886cb0e4 Mon Sep 17 00:00:00 2001 From: Bjorn Lu Date: Wed, 14 Aug 2024 10:08:44 +0000 Subject: [PATCH 17/18] [ci] format --- packages/astro/components/Code.astro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/astro/components/Code.astro b/packages/astro/components/Code.astro index d1c019c60d..8818b2ae0d 100644 --- a/packages/astro/components/Code.astro +++ b/packages/astro/components/Code.astro @@ -26,7 +26,7 @@ interface Props extends Omit, 'lang'> { /** * A metastring to pass to the highlighter. * Allows passing information to transformers: https://shiki.style/guide/transformers#meta - * + * * @default undefined */ meta?: string; From a79a8b0230b06ed32ce1802f2a5f84a6cf92dbe7 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Wed, 14 Aug 2024 11:49:19 +0100 Subject: [PATCH 18/18] Content Layer (#11360) * Empty commit * Changeset * 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 * 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 * feat: add typegen for loaders (#11358) * fix: watch for content layer changes (#11371) * fix: watch for content layer changes * Add test * feat: adds simple loader (#11386) * wip * Add simple loader * Fix type guard * Tighten loader schema * Add loader function to type * Reinstall vitest * 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 * 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 * chore: fix content layer types (#11527) * Add experimental_content type * Fix import * Make data store methods generic * fix loader types * Lockfile * Clean content layer with `--force` (#11541) * Clearn content layer with `--force` * Add tests * Document --force flag * Fixes to content layer render types (#11558) * Lockfile * 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 * Support --force flag in sync and dev (#11581) * Support --force flag in sync and dev * Fix test * Separate render function and merge content layer types (#11579) * Separate render function and merge content layer types * Changes from review * 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 * fix: skip glob files in content dir (#11622) * fix: skip glob files in content dir * Changes from review * Log pattern * Refactor content layer into shared instance (#11625) * Refactor content layer into shared instance * Clean up when testing * Handle cleanup * fix: support filters in content layer getCollection (#11631) * Throw when using deprecated getEntryByX functions with content layer (#11637) * Updates to content layer types and jsdocs (#11643) * 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" * 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 * run formatter * update lock file * Lint * 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 * Normalize render function return value (#11663) * Add markdoc support to content layer (#11664) * Add markdoc support to content layer * Switch test to cheerio * Update benchmarks * update lock file * Update content layer flag docs (#11682) * Update content layer flag docs * Apply suggestions from code review Co-authored-by: Sarah Rainsberger * More markdoc * Typo * Apply suggestions from code review Co-authored-by: Sarah Rainsberger * Update --------- Co-authored-by: Sarah Rainsberger * Add changeset for content layer experimental release (#11644) * Add changeset for content layer experimental release * Update changeset * Update .changeset/smooth-chicken-wash.md Co-authored-by: Sarah Rainsberger --------- Co-authored-by: Sarah Rainsberger * feat: injectTypes (#11551) * feat: make inline config 1st arg * fix: run config done in sync * feat: start working on injectTypes * feat: write files * feat: adapt core features * feat: migrate db to injectTypes * feat: special db handling * feat: update settings instead of workarounds * fix: create dotAstroDir * feat: refactor sync tests * fix: path * fix: paths * chore: add comments * feat: overwrite content file if exists * chore: remove unused db env related code * feat: use dotAstroDir for settings * chore: simplify astro env sync * feat: use dotAstroDir for preferences * feat: handle db in integration api * chore: reorganize * feat: format * feat: add test * Discard changes to examples/basics/astro.config.mjs * Discard changes to examples/basics/package.json * Discard changes to pnpm-lock.yaml * chore: remove test files * feat: update examples dts * fix: dts * chore: changesets * fix: indentation * Apply suggestions from code review Co-authored-by: Chris Swithinbank * Apply suggestions from code review Co-authored-by: Chris Swithinbank * chore: format * Update packages/astro/src/integrations/hooks.ts * Update .changeset/mean-horses-kiss.md * feat: remove formatting * feat: handle fs errors * feat: remove astro:db special path handling * feat: add fs error * Update packages/astro/src/content/types-generator.ts * Update .changeset/mean-horses-kiss.md * Update errors-data.ts * Update .changeset/mean-horses-kiss.md Co-authored-by: Sarah Rainsberger * Update .changeset/mean-horses-kiss.md Co-authored-by: Sarah Rainsberger --------- Co-authored-by: Chris Swithinbank Co-authored-by: Sarah Rainsberger Co-authored-by: Erika <3019731+Princesseuh@users.noreply.github.com> * Add file generation and flag for content intellisense (#11639) * feat: add type to infer input type of collection * refactor: * feat: generate json schema for content too * feat: generate a manifest of all the collections * refactor: unnecessary type * fix: only add content collections to manifest * chore: changeset * fix: generate file URLs * fix: flag it properly * fix: save in lower case * docs: add jsdoc to experimental option * nit: move function out * fix: match vscode flag name * Update packages/astro/src/@types/astro.ts Co-authored-by: Sarah Rainsberger * Update packages/astro/src/@types/astro.ts Co-authored-by: Sarah Rainsberger * Update serious-pumas-run.md * test: add tests * Add content layer support * Apply suggestions from code review * fix: test * Update .changeset/serious-pumas-run.md Co-authored-by: Sarah Rainsberger * Apply suggestions from code review * Remove check for json --------- Co-authored-by: Matt Kane Co-authored-by: Sarah Rainsberger * nit: use same filesystem error as injectTypes * fix: code component was missing support for meta string (#11605) * fix: code component was missing support for meta string Fixed #11604 * Create odd-buttons-pay.md * : add reference link for meta prop * Apply suggestions from code review Co-authored-by: Sarah Rainsberger * Update .changeset/odd-buttons-pay.md * Update .changeset/odd-buttons-pay.md Co-authored-by: Sarah Rainsberger --------- Co-authored-by: Erika <3019731+Princesseuh@users.noreply.github.com> Co-authored-by: Sarah Rainsberger Co-authored-by: Emanuele Stoppa * Deprecates exporting prerender with dynamic values (#11657) * wip * done i think * Add changeset * Use hook instead * Reorder hooks [skip ci] * Update .changeset/eleven-pens-glow.md Co-authored-by: Sarah Rainsberger * Fix run * Fix link * Add link Co-authored-by: Sarah Rainsberger * More accurate migration [skip ci] --------- Co-authored-by: Sarah Rainsberger Co-authored-by: Sarah Rainsberger * Use node parseArgs instead of yargs-parser and arg (#11645) * wip * done * Add changeset * Format * Update * Fix houston * Fix test * Fix test * [ci] format * resolve conflict --------- Co-authored-by: Emanuele Stoppa Co-authored-by: Sarah Rainsberger Co-authored-by: Florian Lefebvre Co-authored-by: Chris Swithinbank Co-authored-by: Erika <3019731+Princesseuh@users.noreply.github.com> Co-authored-by: Julien Cayzac Co-authored-by: Bjorn Lu Co-authored-by: Sarah Rainsberger Co-authored-by: Bjorn Lu --- .changeset/fresh-fans-study.md | 18 + .changeset/mean-horses-kiss.md | 35 ++ .changeset/serious-pumas-run.md | 21 + .changeset/smooth-chicken-wash.md | 107 ++++ 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 | 80 +++ benchmark/make-project/mdx-cc1.js | 66 +++ benchmark/make-project/mdx-cc2.js | 83 ++++ benchmark/package.json | 3 +- examples/basics/src/env.d.ts | 2 +- examples/blog/src/env.d.ts | 1 - examples/container-with-vitest/package.json | 4 +- examples/framework-alpine/src/env.d.ts | 2 +- examples/framework-lit/src/env.d.ts | 2 +- examples/framework-multiple/src/env.d.ts | 2 +- examples/framework-preact/src/env.d.ts | 2 +- examples/framework-react/src/env.d.ts | 2 +- examples/framework-solid/src/env.d.ts | 2 +- examples/framework-svelte/src/env.d.ts | 2 +- examples/framework-vue/src/env.d.ts | 2 +- examples/hackernews/src/env.d.ts | 2 +- examples/middleware/src/env.d.ts | 2 +- examples/minimal/src/env.d.ts | 2 +- examples/non-html-pages/src/env.d.ts | 2 +- examples/portfolio/src/env.d.ts | 1 - examples/ssr/src/env.d.ts | 2 +- examples/with-markdoc/src/env.d.ts | 1 - examples/with-markdown-plugins/src/env.d.ts | 2 +- examples/with-markdown-shiki/src/env.d.ts | 2 +- examples/with-mdx/src/env.d.ts | 2 +- examples/with-nanostores/src/env.d.ts | 2 +- examples/with-tailwindcss/src/env.d.ts | 2 +- packages/astro/package.json | 9 +- packages/astro/src/@types/astro.ts | 242 ++++++++- packages/astro/src/actions/consts.ts | 2 +- packages/astro/src/actions/index.ts | 39 +- .../astro/src/assets/utils/resolveImports.ts | 40 ++ packages/astro/src/cli/build/index.ts | 6 +- packages/astro/src/cli/check/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 | 7 +- packages/astro/src/content/consts.ts | 26 +- packages/astro/src/content/content-layer.ts | 306 ++++++++++++ packages/astro/src/content/data-store.ts | 467 ++++++++++++++++++ packages/astro/src/content/loaders/file.ts | 83 ++++ packages/astro/src/content/loaders/glob.ts | 296 +++++++++++ packages/astro/src/content/loaders/index.ts | 3 + packages/astro/src/content/loaders/types.ts | 43 ++ packages/astro/src/content/runtime.ts | 333 +++++++++++-- packages/astro/src/content/types-generator.ts | 217 ++++++-- packages/astro/src/content/utils.ts | 144 +++++- .../src/content/vite-plugin-content-assets.ts | 14 +- .../content/vite-plugin-content-imports.ts | 1 + .../vite-plugin-content-virtual-mod.ts | 106 +++- packages/astro/src/core/build/index.ts | 34 +- packages/astro/src/core/config/schema.ts | 7 + packages/astro/src/core/config/settings.ts | 6 +- packages/astro/src/core/dev/container.ts | 1 + packages/astro/src/core/dev/dev.ts | 36 +- packages/astro/src/core/dev/restart.ts | 40 +- packages/astro/src/core/errors/errors-data.ts | 25 + packages/astro/src/core/index.ts | 2 +- packages/astro/src/core/sync/constants.ts | 2 + packages/astro/src/core/sync/index.ts | 83 +++- packages/astro/src/core/sync/setup-env-ts.ts | 94 ---- packages/astro/src/core/sync/write-files.ts | 78 +++ packages/astro/src/env/sync.ts | 12 +- packages/astro/src/integrations/hooks.ts | 25 + packages/astro/src/preferences/index.ts | 4 +- .../content-entry-type.ts | 26 +- packages/astro/templates/content/module.mjs | 7 +- packages/astro/templates/content/types.d.ts | 25 +- packages/astro/test/astro-sync.test.js | 216 ++++---- .../astro/test/content-intellisense.test.js | 79 +++ .../astro/test/content-layer-markdoc.test.js | 88 ++++ .../astro/test/content-layer-render.test.js | 45 ++ packages/astro/test/content-layer.test.js | 279 +++++++++++ .../content-collections/astro.config.mjs | 3 + .../content-intellisense/astro.config.mjs | 12 + .../content-intellisense/package.json | 10 + .../content-intellisense/src/blog-cl/entry.md | 3 + .../src/blog-cl/entry2.mdx | 3 + .../src/blog-cl/entry3.mdoc | 3 + .../src/content/blog-cc/entry.md | 3 + .../src/content/blog-cc/entry2.mdx | 3 + .../src/content/blog-cc/entry3.mdoc | 3 + .../src/content/config.ts | 24 + .../content-intellisense/src/utils.js | 8 + .../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 + .../content-layer-rendering/.gitignore | 1 + .../content-layer-rendering/astro.config.mjs | 17 + .../content-outside-src-mdx/iguana.mdx | 16 + .../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 | 18 + .../src/pages/reptiles/[slug].astro | 25 + .../fixtures/content-layer/astro.config.mjs | 18 + .../content-outside-src/columbia-copy.md | 16 + .../content-outside-src/columbia.md | 22 + .../content-outside-src/endeavour.md | 14 + .../content-outside-src/enterprise.md | 14 + .../content-outside-src/index.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 .../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/config.ts | 111 +++++ .../fixtures/content-layer/src/data/dogs.json | 302 +++++++++++ .../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 | 45 ++ .../content-layer/src/pages/blog/[id].astro | 29 ++ .../src/pages/collections.json.js | 30 ++ .../content-layer/src/pages/dogs/[slug].astro | 40 ++ .../content-layer/src/pages/index.astro | 33 ++ .../src/pages/spacecraft/[slug].astro | 35 ++ packages/astro/test/test-utils.js | 19 +- .../collections-mixed-content-errors.test.js | 18 +- packages/astro/test/units/dev/restart.test.js | 27 + .../astro/test/units/integrations/api.test.js | 23 +- packages/astro/types/content.d.ts | 35 +- packages/db/src/core/integration/index.ts | 12 +- packages/db/src/core/integration/typegen.ts | 24 +- .../integration/vite-plugin-inject-env-ts.ts | 65 --- packages/db/src/index.ts | 1 - pnpm-lock.yaml | 334 +++++++++++-- 155 files changed, 5273 insertions(+), 572 deletions(-) create mode 100644 .changeset/fresh-fans-study.md create mode 100644 .changeset/mean-horses-kiss.md create mode 100644 .changeset/serious-pumas-run.md create mode 100644 .changeset/smooth-chicken-wash.md 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 benchmark/make-project/mdx-cc1.js create mode 100644 benchmark/make-project/mdx-cc2.js create mode 100644 packages/astro/src/assets/utils/resolveImports.ts create mode 100644 packages/astro/src/content/content-layer.ts create mode 100644 packages/astro/src/content/data-store.ts create mode 100644 packages/astro/src/content/loaders/file.ts 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 create mode 100644 packages/astro/src/core/sync/constants.ts delete mode 100644 packages/astro/src/core/sync/setup-env-ts.ts create mode 100644 packages/astro/src/core/sync/write-files.ts create mode 100644 packages/astro/test/content-intellisense.test.js create mode 100644 packages/astro/test/content-layer-markdoc.test.js create mode 100644 packages/astro/test/content-layer-render.test.js create mode 100644 packages/astro/test/content-layer.test.js create mode 100644 packages/astro/test/fixtures/content-intellisense/astro.config.mjs create mode 100644 packages/astro/test/fixtures/content-intellisense/package.json create mode 100644 packages/astro/test/fixtures/content-intellisense/src/blog-cl/entry.md create mode 100644 packages/astro/test/fixtures/content-intellisense/src/blog-cl/entry2.mdx create mode 100644 packages/astro/test/fixtures/content-intellisense/src/blog-cl/entry3.mdoc create mode 100644 packages/astro/test/fixtures/content-intellisense/src/content/blog-cc/entry.md create mode 100644 packages/astro/test/fixtures/content-intellisense/src/content/blog-cc/entry2.mdx create mode 100644 packages/astro/test/fixtures/content-intellisense/src/content/blog-cc/entry3.mdoc create mode 100644 packages/astro/test/fixtures/content-intellisense/src/content/config.ts create mode 100644 packages/astro/test/fixtures/content-intellisense/src/utils.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 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 create mode 100644 packages/astro/test/fixtures/content-layer/astro.config.mjs 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 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 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/config.ts create mode 100644 packages/astro/test/fixtures/content-layer/src/data/dogs.json 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/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 create mode 100644 packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro delete mode 100644 packages/db/src/core/integration/vite-plugin-inject-env-ts.ts diff --git a/.changeset/fresh-fans-study.md b/.changeset/fresh-fans-study.md new file mode 100644 index 0000000000..9a837b1fd7 --- /dev/null +++ b/.changeset/fresh-fans-study.md @@ -0,0 +1,18 @@ +--- +'@astrojs/db': minor +--- + +Changes how type generation works + +The generated `.d.ts` file is now at a new location: + +```diff +- .astro/db-types.d.ts ++ .astro/integrations/astro_db/db.d.ts +``` + +The following line can now be removed from `src/env.d.ts`: + +```diff +- /// +``` diff --git a/.changeset/mean-horses-kiss.md b/.changeset/mean-horses-kiss.md new file mode 100644 index 0000000000..7d211e6267 --- /dev/null +++ b/.changeset/mean-horses-kiss.md @@ -0,0 +1,35 @@ +--- +'astro': minor +--- + +Adds a new [`injectTypes()` utility](https://docs.astro.build/en/reference/integrations-reference/#injecttypes-options) to the Integration API and refactors how type generation works + +Use `injectTypes()` in the `astro:config:done` hook to inject types into your user's project by adding a new a `*.d.ts` file. + +The `filename` property will be used to generate a file at `/.astro/integrations//.d.ts` and must end with `".d.ts"`. + +The `content` property will create the body of the file, and must be valid TypeScript. + +Additionally, `injectTypes()` returns a URL to the normalized path so you can overwrite its content later on, or manipulate it in any way you want. + +```js +// my-integration/index.js +export default { + name: 'my-integration', + 'astro:config:done': ({ injectTypes }) => { + injectTypes({ + filename: "types.d.ts", + content: "declare module 'virtual:my-integration' {}" + }) + } +}; +``` + +Codegen has been refactored. Although `src/env.d.ts` will continue to work as is, we recommend you update it: + +```diff +- /// ++ /// +- /// +- /// +``` \ No newline at end of file diff --git a/.changeset/serious-pumas-run.md b/.changeset/serious-pumas-run.md new file mode 100644 index 0000000000..e6f7c9af1a --- /dev/null +++ b/.changeset/serious-pumas-run.md @@ -0,0 +1,21 @@ +--- +'astro': minor +--- + +Adds support for Intellisense features (e.g. code completion, quick hints) for your content collection entries in compatible editors under the `experimental.contentIntellisense` flag. + +```js +import { defineConfig } from 'astro'; + +export default defineConfig({ + experimental: { + contentIntellisense: true + } +}) +``` + +When enabled, this feature will generate and add JSON schemas to the `.astro` directory in your project. These files can be used by the Astro language server to provide Intellisense inside content files (`.md`, `.mdx`, `.mdoc`). + +Note that at this time, this also require enabling the `astro.content-intellisense` option in your editor, or passing the `contentIntellisense: true` initialization parameter to the Astro language server for editors using it directly. + +See the [experimental content Intellisense docs](https://docs.astro.build/en/reference/configuration-reference/#experimentalcontentintellisense) for more information updates as this feature develops. diff --git a/.changeset/smooth-chicken-wash.md b/.changeset/smooth-chicken-wash.md new file mode 100644 index 0000000000..3ced01f52f --- /dev/null +++ b/.changeset/smooth-chicken-wash.md @@ -0,0 +1,107 @@ +--- +'astro': minor +--- + +Adds experimental support for the Content Layer API. + +The new Content Layer API builds upon content collections, taking them beyond local files in `src/content/` and allowing you to fetch content from anywhere, including remote APIs. These new collections work alongside your existing content collections, and you can migrate them to the new API at your own pace. There are significant improvements to performance with large collections of local files. + +### Getting started + +To try out the new Content Layer API, enable it in your Astro config: + +```js +import { defineConfig } from 'astro'; + +export default defineConfig({ + experimental: { + contentLayer: true + } +}) +``` + +You can then create collections in your `src/content/config.ts` using the Content Layer API. + +### Loading your content + +The core of the new Content Layer API is the loader, a function that fetches content from a source and caches it in a local data store. Astro 4.14 ships with built-in `glob()` and `file()` loaders to handle your local Markdown, MDX, Markdoc, and JSON files: + +```ts {3,7} +// src/content/config.ts +import { defineCollection, z } from 'astro:content'; +import { glob } from 'astro/loaders'; + +const blog = defineCollection({ + // 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(), + publishDate: z.coerce.date(), + }) +}); + +export const collections = { blog }; +``` + +You can then query using the existing content collections functions, and enjoy a simplified `render()` function to display your content: + +```astro +--- +import { getEntry, render } from 'astro:content'; + +const post = await getEntry('blog', Astro.params.slug); + +const { Content } = await render(entry); +--- + + +``` + +### Creating a loader + +You're not restricted to the built-in loaders – we hope you'll try building your own. You can fetch content from anywhere and return an array of entries: + +```ts +// src/content/config.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 to validate the data and make it type-safe for users + // 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. It also allows a loader to define its own schema, including generating it dynamically based on the source API. See the [the Content Layer API RFC](https://github.com/withastro/roadmap/blob/content-layer/proposals/0047-content-layer.md#loaders) for more details. + +### Sharing your loaders + +Loaders are better when they're shared. You can create a package that exports a loader and publish it to npm, and then anyone can use it on their site. We're excited to see what the community comes up with! To get started, [take a look at some examples](https://github.com/ascorbic/astro-loaders/). Here's how to load content using an RSS/Atom feed loader: + +```ts +// src/content/config.ts +import { defineCollection } from "astro:content"; +import { feedLoader } from "@ascorbic/feed-loader"; + +const podcasts = defineCollection({ + loader: feedLoader({ + url: "https://feeds.99percentinvisible.org/99percentinvisible", + }), +}); + +export const collections = { podcasts }; +``` + +### Learn more + +To find out more about using the Content Layer API, check out [the Content Layer RFC](https://github.com/withastro/roadmap/blob/content-layer/proposals/0047-content-layer.md) and [share your feedback](https://github.com/withastro/roadmap/pull/982). diff --git a/benchmark/bench/memory.js b/benchmark/bench/memory.js index 34a4972f78..3a437b3fe3 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 0000000000..6c83959601 --- /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 0000000000..73c6afe7a8 --- /dev/null +++ b/benchmark/make-project/markdown-cc2.js @@ -0,0 +1,80 @@ +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({ + 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'; + +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 0000000000..98e1495d13 --- /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 0000000000..c08c2fb9fe --- /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' + ); +} diff --git a/benchmark/package.json b/benchmark/package.json index 5f7206242b..d56a6d1b06 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/examples/basics/src/env.d.ts b/examples/basics/src/env.d.ts index f964fe0cff..9bc5cb41c2 100644 --- a/examples/basics/src/env.d.ts +++ b/examples/basics/src/env.d.ts @@ -1 +1 @@ -/// +/// \ No newline at end of file diff --git a/examples/blog/src/env.d.ts b/examples/blog/src/env.d.ts index acef35f175..e16c13c695 100644 --- a/examples/blog/src/env.d.ts +++ b/examples/blog/src/env.d.ts @@ -1,2 +1 @@ /// -/// diff --git a/examples/container-with-vitest/package.json b/examples/container-with-vitest/package.json index 02cbfd1776..7bddf6df4c 100644 --- a/examples/container-with-vitest/package.json +++ b/examples/container-with-vitest/package.json @@ -19,7 +19,7 @@ "vitest": "^2.0.5" }, "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/examples/framework-alpine/src/env.d.ts b/examples/framework-alpine/src/env.d.ts index f964fe0cff..e16c13c695 100644 --- a/examples/framework-alpine/src/env.d.ts +++ b/examples/framework-alpine/src/env.d.ts @@ -1 +1 @@ -/// +/// diff --git a/examples/framework-lit/src/env.d.ts b/examples/framework-lit/src/env.d.ts index f964fe0cff..e16c13c695 100644 --- a/examples/framework-lit/src/env.d.ts +++ b/examples/framework-lit/src/env.d.ts @@ -1 +1 @@ -/// +/// diff --git a/examples/framework-multiple/src/env.d.ts b/examples/framework-multiple/src/env.d.ts index f964fe0cff..e16c13c695 100644 --- a/examples/framework-multiple/src/env.d.ts +++ b/examples/framework-multiple/src/env.d.ts @@ -1 +1 @@ -/// +/// diff --git a/examples/framework-preact/src/env.d.ts b/examples/framework-preact/src/env.d.ts index f964fe0cff..e16c13c695 100644 --- a/examples/framework-preact/src/env.d.ts +++ b/examples/framework-preact/src/env.d.ts @@ -1 +1 @@ -/// +/// diff --git a/examples/framework-react/src/env.d.ts b/examples/framework-react/src/env.d.ts index f964fe0cff..e16c13c695 100644 --- a/examples/framework-react/src/env.d.ts +++ b/examples/framework-react/src/env.d.ts @@ -1 +1 @@ -/// +/// diff --git a/examples/framework-solid/src/env.d.ts b/examples/framework-solid/src/env.d.ts index f964fe0cff..e16c13c695 100644 --- a/examples/framework-solid/src/env.d.ts +++ b/examples/framework-solid/src/env.d.ts @@ -1 +1 @@ -/// +/// diff --git a/examples/framework-svelte/src/env.d.ts b/examples/framework-svelte/src/env.d.ts index f964fe0cff..e16c13c695 100644 --- a/examples/framework-svelte/src/env.d.ts +++ b/examples/framework-svelte/src/env.d.ts @@ -1 +1 @@ -/// +/// diff --git a/examples/framework-vue/src/env.d.ts b/examples/framework-vue/src/env.d.ts index f964fe0cff..e16c13c695 100644 --- a/examples/framework-vue/src/env.d.ts +++ b/examples/framework-vue/src/env.d.ts @@ -1 +1 @@ -/// +/// diff --git a/examples/hackernews/src/env.d.ts b/examples/hackernews/src/env.d.ts index f964fe0cff..e16c13c695 100644 --- a/examples/hackernews/src/env.d.ts +++ b/examples/hackernews/src/env.d.ts @@ -1 +1 @@ -/// +/// diff --git a/examples/middleware/src/env.d.ts b/examples/middleware/src/env.d.ts index 44f67965a3..74b9019e57 100644 --- a/examples/middleware/src/env.d.ts +++ b/examples/middleware/src/env.d.ts @@ -1,4 +1,4 @@ -/// +/// declare namespace App { interface Locals { user: { diff --git a/examples/minimal/src/env.d.ts b/examples/minimal/src/env.d.ts index f964fe0cff..e16c13c695 100644 --- a/examples/minimal/src/env.d.ts +++ b/examples/minimal/src/env.d.ts @@ -1 +1 @@ -/// +/// diff --git a/examples/non-html-pages/src/env.d.ts b/examples/non-html-pages/src/env.d.ts index f964fe0cff..e16c13c695 100644 --- a/examples/non-html-pages/src/env.d.ts +++ b/examples/non-html-pages/src/env.d.ts @@ -1 +1 @@ -/// +/// diff --git a/examples/portfolio/src/env.d.ts b/examples/portfolio/src/env.d.ts index acef35f175..e16c13c695 100644 --- a/examples/portfolio/src/env.d.ts +++ b/examples/portfolio/src/env.d.ts @@ -1,2 +1 @@ /// -/// diff --git a/examples/ssr/src/env.d.ts b/examples/ssr/src/env.d.ts index f964fe0cff..e16c13c695 100644 --- a/examples/ssr/src/env.d.ts +++ b/examples/ssr/src/env.d.ts @@ -1 +1 @@ -/// +/// diff --git a/examples/with-markdoc/src/env.d.ts b/examples/with-markdoc/src/env.d.ts index acef35f175..e16c13c695 100644 --- a/examples/with-markdoc/src/env.d.ts +++ b/examples/with-markdoc/src/env.d.ts @@ -1,2 +1 @@ /// -/// diff --git a/examples/with-markdown-plugins/src/env.d.ts b/examples/with-markdown-plugins/src/env.d.ts index f964fe0cff..e16c13c695 100644 --- a/examples/with-markdown-plugins/src/env.d.ts +++ b/examples/with-markdown-plugins/src/env.d.ts @@ -1 +1 @@ -/// +/// diff --git a/examples/with-markdown-shiki/src/env.d.ts b/examples/with-markdown-shiki/src/env.d.ts index f964fe0cff..e16c13c695 100644 --- a/examples/with-markdown-shiki/src/env.d.ts +++ b/examples/with-markdown-shiki/src/env.d.ts @@ -1 +1 @@ -/// +/// diff --git a/examples/with-mdx/src/env.d.ts b/examples/with-mdx/src/env.d.ts index f964fe0cff..e16c13c695 100644 --- a/examples/with-mdx/src/env.d.ts +++ b/examples/with-mdx/src/env.d.ts @@ -1 +1 @@ -/// +/// diff --git a/examples/with-nanostores/src/env.d.ts b/examples/with-nanostores/src/env.d.ts index f964fe0cff..e16c13c695 100644 --- a/examples/with-nanostores/src/env.d.ts +++ b/examples/with-nanostores/src/env.d.ts @@ -1 +1 @@ -/// +/// diff --git a/examples/with-tailwindcss/src/env.d.ts b/examples/with-tailwindcss/src/env.d.ts index f964fe0cff..e16c13c695 100644 --- a/examples/with-tailwindcss/src/env.d.ts +++ b/examples/with-tailwindcss/src/env.d.ts @@ -1 +1 @@ -/// +/// diff --git a/packages/astro/package.json b/packages/astro/package.json index c16f39d7e7..31591eb292 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -68,6 +68,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", @@ -132,6 +133,7 @@ "@babel/plugin-transform-react-jsx": "^7.25.2", "@babel/traverse": "^7.25.3", "@babel/types": "^7.25.2", + "@rollup/pluginutils": "^5.1.0", "@oslojs/encoding": "^0.4.1", "@types/babel__core": "^7.20.5", "@types/cookie": "^0.6.0", @@ -163,7 +165,9 @@ "js-yaml": "^4.1.0", "kleur": "^4.1.5", "magic-string": "^0.30.11", + "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", @@ -181,8 +185,10 @@ "vite": "^5.4.0", "vitefu": "^0.2.5", "which-pm": "^3.0.0", + "xxhash-wasm": "^1.0.2", "zod": "^3.23.8", - "zod-to-json-schema": "^3.23.2" + "zod-to-json-schema": "^3.23.2", + "zod-to-ts": "^1.2.0" }, "optionalDependencies": { "sharp": "^0.33.3" @@ -203,6 +209,7 @@ "@types/html-escaper": "^3.0.2", "@types/http-cache-semantics": "^4.0.4", "@types/js-yaml": "^4.0.9", + "@types/micromatch": "^4.0.9", "@types/prompts": "^2.4.9", "@types/semver": "^7.5.8", "astro-scripts": "workspace:*", diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts index 645b07900d..2cf4160609 100644 --- a/packages/astro/src/@types/astro.ts +++ b/packages/astro/src/@types/astro.ts @@ -1,5 +1,3 @@ -import type { OutgoingHttpHeaders } from 'node:http'; -import type { AddressInfo } from 'node:net'; import type { MarkdownHeading, MarkdownVFile, @@ -9,6 +7,8 @@ import type { ShikiConfig, } from '@astrojs/markdown-remark'; import type * as babel from '@babel/core'; +import type { OutgoingHttpHeaders } from 'node:http'; +import type { AddressInfo } from 'node:net'; import type * as rollup from 'rollup'; import type * as vite from 'vite'; import type { @@ -18,6 +18,7 @@ import type { ActionReturnType, } 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'; @@ -78,7 +79,7 @@ export type { UnresolvedImageTransform, } from '../assets/types.js'; export type { RemotePattern } from '../assets/utils/remotePattern.js'; -export type { SSRManifest, AssetsPrefix } from '../core/app/types.js'; +export type { AssetsPrefix, SSRManifest } from '../core/app/types.js'; export type { AstroCookieGetOptions, AstroCookieSetOptions, @@ -123,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 {} @@ -2183,6 +2185,225 @@ 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.contentIntellisense + * @type {boolean} + * @default `false` + * @version 4.14.0 + * @description + * + * Enables Intellisense features (e.g. code completion, quick hints) for your content collection entries in compatible editors. + * + * When enabled, this feature will generate and add JSON schemas to the `.astro` directory in your project. These files can be used by the Astro language server to provide Intellisense inside content files (`.md`, `.mdx`, `.mdoc`). + * + * ```js + * { + * experimental: { + * contentIntellisense: true, + * }, + * } + * ``` + * + * To use this feature with the Astro VS Code extension, you must also enable the `astro.content-intellisense` option in your VS Code settings. For editors using the Astro language server directly, pass the `contentIntellisense: true` initialization parameter to enable this feature. + */ + contentIntellisense?: boolean; + + /** + * @docs + * @name experimental.contentLayer + * @type {boolean} + * @default `false` + * @version 4.14.0 + * @description + * + * The Content Layer API is a new way to handle content and data in Astro. It is similar to and builds upon [content collections](/en/guides/content-collections/), taking them beyond local files in `src/content/` and allowing you to fetch content from anywhere, including remote APIs, by adding a `loader` to your collection. + * + * Your existing content collections can be [migrated to the Content Layer API](#migrating-a-content-collection-to-content-layer) with a few small changes. However, it is not necessary to update all your collections at once to add a new collection powered by the Content Layer API. You may have collections using both the existing and new APIs defined in `src/content/config.ts` at the same time. + * + * The Content Layer API is designed to be more powerful and more performant, helping sites scale to thousands of pages. Data is cached between builds and updated incrementally. Markdown parsing is also 5-10 times faster, with similar scale reductions in memory, and MDX is 2-3 times faster. + * + * To enable, add the `contentLayer` flag to the `experimental` object in your Astro config: + * + * ```js + * // astro.config.mjs + * { + * experimental: { + * contentLayer: true, + * } + * } + * ``` + * + * #### Fetching data with a `loader` + * + * The Content Layer API allows you to fetch your content from outside of the `src/content/` folder (whether stored locally in your project or remotely), and uses a `loader` property to retrieve your data. + * + * The `loader` is defined in the collection's schema and returns an array of entries. Astro provides two built-in loader functions (`glob()` and `file()`) for fetching your local content, as well as access to the API to [construct your own loader and fetch remote data](#creating-a-loader). + * + * The `glob()` loader creates entries from directories of Markdown, MDX, Markdoc, or JSON files from anywhere on the filesystem. It accepts a `pattern` of entry files to match, and a `base` file path of where your files are located. Use this when you have one file per entry. + * + * The `file()` loader creates multiple entries from a single local file. Use this when all your entries are stored in an array of objects. + * + * ```ts {3,8,19} + * // src/content/config.ts + * import { defineCollection, z } from 'astro:content'; + * import { glob, file } 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(), + * }) + * }); + * + * const dogs = defineCollection({ + * // The path is relative to the project root, or an absolute path. + * loader: file("src/data/dogs.json"), + * schema: z.object({ + * id: z.string(), + * breed: z.string(), + * temperament: z.array(z.string()), + * }), + * }); + * + * export const collections = { blog, dogs }; + * ``` + * + * #### Querying and rendering with the Content Layer API + * + * The collection can be [queried in the same way as content collections](/en/guides/content-collections/#querying-collections): + * + * ```ts + * // src/pages/index.astro + * 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'); + * ``` + * + * Entries generated from Markdown, MDX or Markdoc can be rendered directly to a page using the `render()` function. + * + * :::note + * The syntax for rendering collection entries is different from current content collections syntax. + * ::: + * + * ```astro title="src/pages/[slug].astro" + * --- + * import { getEntry, render } from 'astro:content'; + * + * const post = await getEntry('blog', Astro.params.slug); + * + * const { Content, headings } = await render(entry); + * --- + * + * + * ``` + * + * #### Creating a loader + * + * With the Content Layer API, you can build loaders to load or generate content from anywhere. + * + * For example, you can create a loader that fetches collection entries from a remote API. + * + * ```ts + * // src/content/config.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 Content Layer API RFC](https://github.com/withastro/roadmap/blob/content-layer/proposals/0047-content-layer.md#loaders). + * + * #### Migrating an existing content collection to use the Content Layer API + * + * You can convert an existing content collection with Markdown, MDX, Markdoc, or JSON entries to use the Content Layer API. + * + * 1. **Move the collection folder out of `src/content/`** (e.g. to `src/data/`). All collections located in the `src/content/` folder will use the existing Content Collections API. + * + * **Do not move the existing `src/content/config.ts` file**. This file will define all collections, using either API. + * + * 2. **Edit the collection definition**. Your updated collection requires a `loader`, and the option to select a collection `type` is no longer available. + * + * ```diff + * // src/content/config.ts + * import { defineCollection, z } from 'astro:content'; + * + import { glob } from 'astro/loaders'; + * + * const blog = defineCollection({ + * // For content layer you no longer 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 layer collections do not have a `slug` field. Instead, all updated collections will have an `id`. + * + * ```diff + * // src/pages/index.astro + * --- + * 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 + * // src/pages/index.astro + * --- + * - 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); + * --- + * + * + * ``` + * + * #### Learn more + * + * For a complete overview and the full API reference, see [the Content Layer API RFC](https://github.com/withastro/roadmap/blob/content-layer/proposals/0047-content-layer.md) and [share your feedback](https://github.com/withastro/roadmap/pull/982). + */ + contentLayer?: boolean; }; } @@ -2279,6 +2500,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. */ @@ -2307,6 +2532,8 @@ export type DataEntryModule = { }; }; +export type ContentEntryRenderFuction = (entry: DataEntry) => Promise; + export interface ContentEntryType { extensions: string[]; getEntryInfo(params: { @@ -2322,6 +2549,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. @@ -2363,6 +2592,11 @@ export interface AstroAdapterFeatures { functionPerRoute: boolean; } +export interface InjectedType { + filename: string; + content: string; +} + export interface AstroSettings { config: AstroConfig; adapter: AstroAdapter | undefined; @@ -2398,6 +2632,7 @@ export interface AstroSettings { latestAstroVersion: string | undefined; serverIslandMap: NonNullable; serverIslandNameMap: NonNullable; + injectedTypes: Array; } export type AsyncRendererComponentFn = ( @@ -3099,6 +3334,7 @@ declare global { 'astro:config:done': (options: { config: AstroConfig; setAdapter: (adapter: AstroAdapter) => void; + injectTypes: (injectedType: InjectedType) => URL; logger: AstroIntegrationLogger; }) => void | Promise; 'astro:server:setup': (options: { diff --git a/packages/astro/src/actions/consts.ts b/packages/astro/src/actions/consts.ts index 6a55386d86..beb8c45b64 100644 --- a/packages/astro/src/actions/consts.ts +++ b/packages/astro/src/actions/consts.ts @@ -1,6 +1,6 @@ export const VIRTUAL_MODULE_ID = 'astro:actions'; export const RESOLVED_VIRTUAL_MODULE_ID = '\0' + VIRTUAL_MODULE_ID; -export const ACTIONS_TYPES_FILE = 'actions.d.ts'; +export const ACTIONS_TYPES_FILE = 'astro/actions.d.ts'; export const VIRTUAL_INTERNAL_MODULE_ID = 'astro:internal-actions'; export const RESOLVED_VIRTUAL_INTERNAL_MODULE_ID = '\0astro:internal-actions'; export const NOOP_ACTIONS = '\0noop-actions'; diff --git a/packages/astro/src/actions/index.ts b/packages/astro/src/actions/index.ts index 04a911856f..2423b7017d 100644 --- a/packages/astro/src/actions/index.ts +++ b/packages/astro/src/actions/index.ts @@ -30,9 +30,6 @@ export default function astroActions({ throw error; } - const stringifiedActionsImport = JSON.stringify( - viteID(new URL('./actions', params.config.srcDir)), - ); params.updateConfig({ vite: { plugins: [vitePluginUserActions({ settings }), vitePluginActions(fs)], @@ -49,11 +46,18 @@ export default function astroActions({ entrypoint: 'astro/actions/runtime/middleware.js', order: 'post', }); + }, + 'astro:config:done': (params) => { + const stringifiedActionsImport = JSON.stringify( + viteID(new URL('./actions', params.config.srcDir)), + ); + settings.injectedTypes.push({ + filename: ACTIONS_TYPES_FILE, + content: `declare module "astro:actions" { + type Actions = typeof import(${stringifiedActionsImport})["server"]; - await typegen({ - stringifiedActionsImport, - root: params.config.root, - fs, + export const actions: Actions; +}`, }); }, }, @@ -119,24 +123,3 @@ const vitePluginActions = (fs: typeof fsMod): VitePlugin => ({ return code; }, }); - -async function typegen({ - stringifiedActionsImport, - root, - fs, -}: { - stringifiedActionsImport: string; - root: URL; - fs: typeof fsMod; -}) { - const content = `declare module "astro:actions" { - type Actions = typeof import(${stringifiedActionsImport})["server"]; - - export const actions: Actions; -}`; - - const dotAstroDir = new URL('.astro/', root); - - await fs.promises.mkdir(dotAstroDir, { recursive: true }); - await fs.promises.writeFile(new URL(ACTIONS_TYPES_FILE, dotAstroDir), content); -} diff --git a/packages/astro/src/assets/utils/resolveImports.ts b/packages/astro/src/assets/utils/resolveImports.ts new file mode 100644 index 0000000000..8d147552ec --- /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/cli/build/index.ts b/packages/astro/src/cli/build/index.ts index 9c10aff156..dd44e61701 100644 --- a/packages/astro/src/cli/build/index.ts +++ b/packages/astro/src/cli/build/index.ts @@ -14,6 +14,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.'], ], }, @@ -24,5 +28,5 @@ export async function build({ flags }: BuildOptions) { const inlineConfig = flagsToAstroInlineConfig(flags); - await _build(inlineConfig, { force: !!flags.force }); + await _build(inlineConfig); } diff --git a/packages/astro/src/cli/check/index.ts b/packages/astro/src/cli/check/index.ts index 490d23970b..9a354c8e00 100644 --- a/packages/astro/src/cli/check/index.ts +++ b/packages/astro/src/cli/check/index.ts @@ -32,7 +32,7 @@ export async function check(flags: Flags) { // For now, we run this once as usually `astro check --watch` is ran alongside `astro dev` which also calls `astro sync`. const { default: sync } = await import('../../core/sync/index.js'); try { - await sync({ inlineConfig: flagsToAstroInlineConfig(flags) }); + await sync(flagsToAstroInlineConfig(flags)); } catch (_) { return process.exit(1); } diff --git a/packages/astro/src/cli/dev/index.ts b/packages/astro/src/cli/dev/index.ts index 2bd22b7c6a..fe9a1094c6 100644 --- a/packages/astro/src/cli/dev/index.ts +++ b/packages/astro/src/cli/dev/index.ts @@ -18,6 +18,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 c8180708f7..59dfbf00a4 100644 --- a/packages/astro/src/cli/flags.ts +++ b/packages/astro/src/cli/flags.ts @@ -12,6 +12,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 89623e6a80..7ffe662c5c 100644 --- a/packages/astro/src/cli/sync/index.ts +++ b/packages/astro/src/cli/sync/index.ts @@ -12,7 +12,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.`, }); @@ -20,7 +23,7 @@ export async function sync({ flags }: SyncOptions) { } try { - await _sync({ inlineConfig: flagsToAstroInlineConfig(flags), telemetry: true }); + await _sync(flagsToAstroInlineConfig(flags), { telemetry: true }); return 0; } catch (_) { return 1; diff --git a/packages/astro/src/content/consts.ts b/packages/astro/src/content/consts.ts index f65652453b..ac619c2b5e 100644 --- a/packages/astro/src/content/consts.ts +++ b/packages/astro/src/content/consts.ts @@ -2,18 +2,42 @@ 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 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@@'; 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, + CONTENT_MODULE_FLAG, ] as const; -export const CONTENT_TYPES_FILE = 'types.d.ts'; +export const CONTENT_TYPES_FILE = 'astro/content.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 = 'content_layer'; diff --git a/packages/astro/src/content/content-layer.ts b/packages/astro/src/content/content-layer.ts new file mode 100644 index 0000000000..9a6d4ed375 --- /dev/null +++ b/packages/astro/src/content/content-layer.ts @@ -0,0 +1,306 @@ +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'; +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, + 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'; + +export interface ContentLayerOptions { + store: DataStore; + settings: AstroSettings; + logger: Logger; + watcher?: FSWatcher; +} + +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; + } + + /** + * Whether the content layer is currently loading content + */ + get loading() { + return this.#loading; + } + + /** + * 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.sync(); + } + }); + } + + unwatchContentConfig() { + this.#unsubscribe?.(); + } + + /** + * 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(); + + this.#generateDigest = (data: Record | string) => { + const dataString = typeof data === 'string' ? data : JSON.stringify(data); + return h64ToString(dataString); + }; + + 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 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; + + const previousConfigDigest = await this.#store.metaStore().get('config-digest'); + 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; + } + + 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) { + 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); + } + + if (!collection.loader.load) { + throw new Error(`Collection loader for ${name} does not have a load method`); + } + + 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); + const modulesImportsFile = new URL(MODULES_IMPORTS_FILE, this.#settings.dotAstroDir); + await this.#store.writeModuleImports(modulesImportsFile); + logger.info('Synced content'); + if (this.#settings.config.experimental.contentIntellisense) { + await this.regenerateCollectionFileManifest(); + } + } + + async regenerateCollectionFileManifest() { + const collectionsManifest = new URL('collections/collections.json', this.#settings.dotAstroDir); + this.#logger.debug('content', 'Regenerating collection file manifest'); + if (existsSync(collectionsManifest)) { + try { + const collections = await fs.readFile(collectionsManifest, 'utf-8'); + const collectionsJson = JSON.parse(collections); + collectionsJson.entries ??= {}; + + for (const { hasSchema, name } of collectionsJson.collections) { + if (!hasSchema) { + continue; + } + const entries = this.#store.values(name); + if (!entries?.[0]?.filePath) { + continue; + } + for (const { filePath } of entries) { + if (!filePath) { + continue; + } + const key = new URL(filePath, this.#settings.config.root).href.toLowerCase(); + collectionsJson.entries[key] = name; + } + } + await fs.writeFile(collectionsManifest, JSON.stringify(collectionsJson, null, 2)); + } catch { + this.#logger.error('content', 'Failed to regenerate collection file manifest'); + } + } + this.#logger.debug('content', 'Regenerated collection file manifest'); + } +} + +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({ 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/content/data-store.ts b/packages/astro/src/content/data-store.ts new file mode 100644 index 0000000000..f416082f9d --- /dev/null +++ b/packages/astro/src/content/data-store.ts @@ -0,0 +1,467 @@ +import type { MarkdownHeading } from '@astrojs/markdown-remark'; +import * as devalue from 'devalue'; +import { existsSync, promises as fs, type PathLike } from 'fs'; +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 { + /** Rendered HTML string. If present then `render(entry)` will return a component that renders this HTML. */ + html: string; + metadata?: { + /** 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; + /** + * If an entry is a deferred, its rendering phase is delegated to a virtual module during the runtime phase when calling `renderEntry`. + */ + deferredRender?: boolean; +} + +export class DataStore { + #collections = new Map>(); + + #file?: PathLike; + + #assetsFile?: PathLike; + #modulesFile?: PathLike; + + #saveTimeout: NodeJS.Timeout | undefined; + #assetsSaveTimeout: NodeJS.Timeout | undefined; + #modulesSaveTimeout: NodeJS.Timeout | undefined; + + #dirty = false; + #assetsDirty = false; + #modulesDirty = false; + + #assetImports = new Set(); + #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) { + collection.delete(String(key)); + this.#saveToDiskDebounced(); + } + } + + clear(collectionName: string) { + this.#collections.delete(collectionName); + this.#saveToDiskDebounced(); + } + + clearAll() { + this.#collections.clear(); + this.#saveToDiskDebounced(); + } + + 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; + } + + 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)); + } + + 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; + + if (this.#assetImports.size === 0) { + try { + await fs.writeFile(filePath, 'export default new Map();'); + } catch (err) { + throw new AstroError(AstroErrorData.UnknownFilesystemError, { cause: err }); + } + } + + 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(AstroErrorData.UnknownFilesystemError, { cause: err }); + } + 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(AstroErrorData.UnknownFilesystemError, { cause: err }); + } + } + + 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 = ` +export default new Map([\n${lines.join(',\n')}]); + `; + try { + await fs.writeFile(filePath, code); + } catch (err) { + throw new AstroError(AstroErrorData.UnknownFilesystemError, { cause: err }); + } + this.#modulesDirty = 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); + } + } + + #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 + 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: = Record>(key: string) => + this.get>(collectionName, key), + entries: () => this.entries(collectionName), + values: () => this.values(collectionName), + keys: () => this.keys(collectionName), + set: ({ id: key, data, body, filePath, deferredRender, digest, rendered }) => { + if (!key) { + 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 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; + } + if (deferredRender) { + entry.deferredRender = deferredRender; + if (filePath) { + this.addModuleImport(filePath); + } + } + 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), + addModuleImport: (fileName: string) => this.addModuleImport(fileName), + }; + } + /** + * 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), + 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() { + return devalue.stringify(this.#collections); + } + + async writeToDisk(filePath: PathLike) { + if (!this.#dirty) { + return; + } + try { + await fs.writeFile(filePath, this.toString()); + this.#file = filePath; + this.#dirty = false; + } catch (err) { + throw new AstroError(AstroErrorData.UnknownFilesystemError, { cause: err }); + } + } + + /** + * Attempts to load a DataStore from the virtual module. + * This only works in Vite. + */ + static async fromModule() { + try { + // @ts-expect-error - this is a virtual module + const data = await import('astro:data-layer-content'); + const map = devalue.unflatten(data.default); + return DataStore.fromMap(map); + } catch {} + return new DataStore(); + } + + static async fromMap(data: Map>) { + const store = new DataStore(); + 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 { + get: = Record>( + key: string, + ) => DataEntry | undefined; + entries: () => Array<[id: string, DataEntry]>; + 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; + /** + * 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; + delete: (key: string) => void; + clear: () => void; + has: (key: string) => boolean; + /** + * @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; + /** + * @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; +} + +/** + * 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; + delete: (key: string) => void; +} + +function dataStoreSingleton() { + let instance: Promise | DataStore | undefined = undefined; + return { + get: async () => { + if (!instance) { + instance = DataStore.fromModule(); + } + return instance; + }, + set: (store: DataStore) => { + instance = store; + }, + }; +} + +// 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/file.ts b/packages/astro/src/content/loaders/file.ts new file mode 100644 index 0000000000..cbc684a997 --- /dev/null +++ b/packages/astro/src/content/loaders/file.ts @@ -0,0 +1,83 @@ +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'; + +/** + * 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.'); + } + + async function syncData(filePath: string, { logger, parseData, store, settings }: 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 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 data = await parseData({ id, data: rawItem, filePath }); + store.set({ id, data }); + } + } else { + logger.error(`Invalid data in ${fileName}. Must be an array or object.`); + } + } + + return { + name: 'file-loader', + load: async (options) => { + const { settings, logger, watcher } = options; + logger.debug(`Loading data from ${fileName}`); + const url = new URL(fileName, settings.config.root); + if (!existsSync(url)) { + logger.error(`File not found: ${fileName}`); + return; + } + const filePath = fileURLToPath(url); + + await syncData(filePath, options); + + watcher?.on('change', async (changedPath) => { + if (changedPath === filePath) { + logger.info(`Reloading data from ${fileName}`); + await syncData(filePath, options); + } + }); + }, + }; +} diff --git a/packages/astro/src/content/loaders/glob.ts b/packages/astro/src/content/loaders/glob.ts new file mode 100644 index 0000000000..4a4ecbcac8 --- /dev/null +++ b/packages/astro/src/content/loaders/glob.ts @@ -0,0 +1,296 @@ +import { promises as fs } from 'node:fs'; +import { fileURLToPath, pathToFileURL } from 'node:url'; +import fastGlob from 'fast-glob'; +import { bold, green } from 'kleur/colors'; +import micromatch from 'micromatch'; +import pLimit from 'p-limit'; +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'; + +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(); + + return { + name: 'glob-loader', + 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.deferredRender) { + store.addModuleImport(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); + } + // 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 }); + } + + fileToIdMap.set(filePath, id); + } + + 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); + 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) => { + 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)); + + 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 = posixRelative(basePath, changedPath); + if (!matchesGlob(entry)) { + return; + } + const entryType = configForFile(changedPath); + const baseUrl = pathToFileURL(basePath); + await syncData(entry, baseUrl, entryType); + logger.info(`Reloaded data from ${green(entry)}`); + } + + watcher.on('change', onChange); + + watcher.on('add', onChange); + + watcher.on('unlink', async (deletedPath) => { + const entry = posixRelative(basePath, deletedPath); + if (!matchesGlob(entry)) { + return; + } + const id = fileToIdMap.get(deletedPath); + if (id) { + 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 0000000000..30b4bfbe53 --- /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 0000000000..f372967277 --- /dev/null +++ b/packages/astro/src/content/loaders/types.ts @@ -0,0 +1,43 @@ +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: TData; + /** 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>(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; +} + +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); +} diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index 34d2f10e92..b462e2e23a 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -1,7 +1,10 @@ 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 { AstroError, AstroErrorData } from '../core/errors/index.js'; +import { ZodIssueCode, z } from 'zod'; +import type { GetImageResult, ImageMetadata } from '../@types/astro.js'; +import { imageSrcToImportId } from '../assets/utils/resolveImports.js'; +import { AstroError, AstroErrorData, AstroUserError } from '../core/errors/index.js'; import { prependForwardSlash } from '../core/path.js'; import { type AstroComponentFactory, @@ -11,8 +14,11 @@ import { renderScriptElement, renderTemplate, renderUniqueStylesheet, + render as serverRender, unescapeHTML, } from '../runtime/server/index.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; @@ -21,6 +27,15 @@ type CollectionToEntryMap = Record; type GetEntryImport = (collection: string, lookupId: string) => Promise; export function defineCollection(config: any) { + 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; } @@ -56,11 +71,34 @@ 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) { type = 'content'; } else if (collection in dataCollectionToEntryMap) { type = 'data'; + } else if (store.hasCollection(collection)) { + // @ts-expect-error virtual module + const { default: imageAssetMap } = await import('astro:asset-imports'); + + const result = []; + 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 { // eslint-disable-next-line no-console console.warn( @@ -70,6 +108,7 @@ export function createGetCollection({ ); return []; } + const lazyImports = Object.values( type === 'content' ? contentCollectionToEntryMap[collection] @@ -111,7 +150,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. @@ -124,11 +163,27 @@ 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(); + + 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; + } + const entryImport = await getEntryImport(collection, slug); if (typeof entryImport !== 'function') return undefined; @@ -151,8 +206,28 @@ 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(); + + 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; + } + const lazyImport = await getEntryImport(collection, id); // TODO: AstroError @@ -187,9 +262,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, @@ -216,6 +293,33 @@ export function createGetEntry({ : collectionOrLookupObject.slug; } + const store = await globalDataStore.get(); + + if (store.hasCollection(collection)) { + 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, + } 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; @@ -261,6 +365,115 @@ 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 { + 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); + } + } + }); +} + +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(); + } + + if (entry.deferredRender) { + try { + // @ts-expect-error virtual module + const { default: contentModules } = await import('astro:content-module-imports'); + const module = contentModules.get(entry.filePath); + const deferredMod = await module(); + return { + Content: deferredMod.Content, + headings: deferredMod.getHeadings?.() ?? [], + remarkPluginFrontmatter: deferredMod.frontmatter ?? {}, + }; + } 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) + : entry?.rendered?.html; + + const Content = createComponent(() => serverRender`${unescapeHTML(html)}`); + return { + Content, + headings: entry?.rendered?.metadata?.headings ?? [], + remarkPluginFrontmatter: entry?.rendered?.metadata?.frontmatter ?? {}, + }; +} + async function render({ collection, id, @@ -357,36 +570,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; - } + 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); - const { type, entries } = lookupMap[collection]; - const entry = entries[lookupId]; + 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; + } - 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 }; - }); + // 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/types-generator.ts b/packages/astro/src/content/types-generator.ts index ea0c3cc80e..6fa0db94be 100644 --- a/packages/astro/src/content/types-generator.ts +++ b/packages/astro/src/content/types-generator.ts @@ -1,18 +1,20 @@ +import glob from 'fast-glob'; +import { bold, cyan } from 'kleur/colors'; import type fsMod from 'node:fs'; import * as path from 'node:path'; import { fileURLToPath, pathToFileURL } from 'node:url'; -import glob from 'fast-glob'; -import { bold, cyan } from 'kleur/colors'; import { type ViteDevServer, normalizePath } from 'vite'; -import { z } from 'zod'; +import { z, type ZodSchema } from 'zod'; 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'; import type { Logger } from '../core/logger/core.js'; import { isRelativePath } from '../core/path.js'; -import { CONTENT_TYPES_FILE, VIRTUAL_MODULE_ID } from './consts.js'; +import { CONTENT_LAYER_TYPE, CONTENT_TYPES_FILE, VIRTUAL_MODULE_ID } from './consts.js'; import { + type CollectionConfig, type ContentConfig, type ContentObservable, type ContentPaths, @@ -44,7 +46,7 @@ type CollectionEntryMap = { entries: Record; } | { - type: 'data'; + type: 'data' | typeof CONTENT_LAYER_TYPE; entries: Record; }; }; @@ -245,7 +247,7 @@ export async function createContentTypesGenerator({ collectionEntryMap[collectionKey] = { type: 'content', entries: { - ...collectionInfo.entries, + ...(collectionInfo.entries as Record), [entryKey]: { slug: addedSlug }, }, }; @@ -356,6 +358,51 @@ function normalizeConfigPath(from: string, to: string) { return `"${isRelativePath(configPath) ? '' : './'}${normalizedPath}"` as const; } +const schemaCache = new Map(); + +async function getContentLayerSchema( + collection: ContentConfig['collections'][T], + collectionKey: T, +): Promise { + const cached = schemaCache.get(collectionKey); + if (cached) { + return cached; + } + + if ( + collection?.type === CONTENT_LAYER_TYPE && + typeof collection.loader === 'object' && + collection.loader.schema + ) { + let schema = collection.loader.schema; + if (typeof schema === 'function') { + schema = await schema(); + } + if (schema) { + schemaCache.set(collectionKey, await schema); + return schema; + } + } +} + +async function typeForCollection( + collection: ContentConfig['collections'][T] | undefined, + collectionKey: T, +): Promise { + if (collection?.schema) { + return `InferEntrySchema<${collectionKey}>`; + } + + if (collection?.type === CONTENT_LAYER_TYPE) { + const schema = await getContentLayerSchema(collection, collectionKey); + if (schema) { + const ast = zodToTs(schema); + return printNode(ast.node); + } + } + return 'any'; +} + async function writeContentFiles({ fs, contentPaths, @@ -391,12 +438,15 @@ async function writeContentFiles({ entries: {}, }; } + + let contentCollectionsMap: CollectionEntryMap = {}; for (const collectionKey of Object.keys(collectionEntryMap).sort()) { const collectionConfig = contentConfig?.collections[JSON.parse(collectionKey)]; const collection = collectionEntryMap[collectionKey]; if ( collectionConfig?.type && collection.type !== 'unknown' && + collectionConfig.type !== CONTENT_LAYER_TYPE && collection.type !== collectionConfig.type ) { viteServer.hot.send({ @@ -419,15 +469,15 @@ async function writeContentFiles({ }); return; } - const resolvedType: 'content' | 'data' = + 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 - collectionConfig?.type ?? 'data' + (collectionConfig?.type ?? 'data') : collection.type; const collectionEntryKeys = Object.keys(collection.entries).sort(); - const dataType = collectionConfig?.schema ? `InferEntrySchema<${collectionKey}>` : 'any'; + const dataType = await typeForCollection(collectionConfig, collectionKey); switch (resolvedType) { case 'content': if (collectionEntryKeys.length === 0) { @@ -446,6 +496,9 @@ async function writeContentFiles({ } contentTypesStr += `};\n`; break; + case CONTENT_LAYER_TYPE: + dataTypesStr += `${collectionKey}: Record;\n`; + break; case 'data': if (collectionEntryKeys.length === 0) { dataTypesStr += `${collectionKey}: Record;\n`; @@ -458,40 +511,60 @@ async function writeContentFiles({ } if (collectionConfig?.schema) { - let zodSchemaForJson = - typeof collectionConfig.schema === 'function' - ? collectionConfig.schema({ image: () => z.string() }) - : collectionConfig.schema; - if (zodSchemaForJson instanceof z.ZodObject) { - zodSchemaForJson = zodSchemaForJson.extend({ - $schema: z.string().optional(), - }); - } - try { - await fs.promises.writeFile( - new URL(`./${collectionKey.replace(/"/g, '')}.schema.json`, collectionSchemasDir), - JSON.stringify( - zodToJsonSchema(zodSchemaForJson, { - name: collectionKey.replace(/"/g, ''), - markdownDescription: true, - errorMessages: true, - // Fix for https://github.com/StefanTerdell/zod-to-json-schema/issues/110 - dateStrategy: ['format:date-time', 'format:date', 'integer'], - }), - null, - 2, - ), - ); - } catch (err) { - // This should error gracefully and not crash the dev server - logger.warn( - 'content', - `An error was encountered while creating the JSON schema for the ${collectionKey} collection. Proceeding without it. Error: ${err}`, - ); - } + await generateJSONSchema( + fs, + collectionConfig, + collectionKey, + collectionSchemasDir, + logger, + ); } break; } + + if ( + settings.config.experimental.contentIntellisense && + collectionConfig && + (collectionConfig.schema || (await getContentLayerSchema(collectionConfig, collectionKey))) + ) { + await generateJSONSchema(fs, collectionConfig, collectionKey, collectionSchemasDir, logger); + + contentCollectionsMap[collectionKey] = collection; + } + } + + if (settings.config.experimental.contentIntellisense) { + let contentCollectionManifest: { + collections: { hasSchema: boolean; name: string }[]; + entries: Record; + } = { + collections: [], + entries: {}, + }; + Object.entries(contentCollectionsMap).forEach(([collectionKey, collection]) => { + const collectionConfig = contentConfig?.collections[JSON.parse(collectionKey)]; + const key = JSON.parse(collectionKey); + + contentCollectionManifest.collections.push({ + hasSchema: Boolean(collectionConfig?.schema || schemaCache.has(collectionKey)), + name: key, + }); + + Object.keys(collection.entries).forEach((entryKey) => { + const entryPath = new URL( + JSON.parse(entryKey), + contentPaths.contentDir + `${key}/`, + ).toString(); + + // Save entry path in lower case to avoid case sensitivity issues between Windows and Unix + contentCollectionManifest.entries[entryPath.toLowerCase()] = key; + }); + }); + + await fs.promises.writeFile( + new URL('./collections.json', collectionSchemasDir), + JSON.stringify(contentCollectionManifest, null, 2), + ); } if (!fs.existsSync(settings.dotAstroDir)) { @@ -499,7 +572,7 @@ async function writeContentFiles({ } const configPathRelativeToCacheDir = normalizeConfigPath( - settings.dotAstroDir.pathname, + new URL('astro', settings.dotAstroDir).pathname, contentPaths.config.url.pathname, ); @@ -515,8 +588,62 @@ async function writeContentFiles({ contentConfig ? `typeof import(${configPathRelativeToCacheDir})` : 'never', ); - await fs.promises.writeFile( - new URL(CONTENT_TYPES_FILE, settings.dotAstroDir), - typeTemplateContent, - ); + // If it's the first time, we inject types the usual way. sync() will handle creating files and references. If it's not the first time, we just override the dts content + if (settings.injectedTypes.some((t) => t.filename === CONTENT_TYPES_FILE)) { + fs.promises.writeFile( + new URL(CONTENT_TYPES_FILE, settings.dotAstroDir), + typeTemplateContent, + 'utf-8', + ); + } else { + settings.injectedTypes.push({ + filename: CONTENT_TYPES_FILE, + content: typeTemplateContent, + }); + } +} + +async function generateJSONSchema( + fsMod: typeof import('node:fs'), + collectionConfig: CollectionConfig, + collectionKey: string, + collectionSchemasDir: URL, + logger: Logger, +) { + let zodSchemaForJson = + typeof collectionConfig.schema === 'function' + ? collectionConfig.schema({ image: () => z.string() }) + : collectionConfig.schema; + + if (!zodSchemaForJson && collectionConfig.type === CONTENT_LAYER_TYPE) { + zodSchemaForJson = await getContentLayerSchema(collectionConfig, collectionKey); + } + + if (zodSchemaForJson instanceof z.ZodObject) { + zodSchemaForJson = zodSchemaForJson.extend({ + $schema: z.string().optional(), + }); + } + try { + await fsMod.promises.writeFile( + new URL(`./${collectionKey.replace(/"/g, '')}.schema.json`, collectionSchemasDir), + JSON.stringify( + zodToJsonSchema(zodSchemaForJson, { + name: collectionKey.replace(/"/g, ''), + markdownDescription: true, + errorMessages: true, + // Fix for https://github.com/StefanTerdell/zod-to-json-schema/issues/110 + dateStrategy: ['format:date-time', 'format:date', 'integer'], + }), + null, + 2, + ), + ); + } catch (err) { + // This should error gracefully and not crash the dev server + logger.warn( + 'content', + `An error was encountered while creating the JSON schema for the ${collectionKey} collection. Proceeding without it. Error: ${err}`, + ); + } } diff --git a/packages/astro/src/content/utils.ts b/packages/astro/src/content/utils.ts index ce6dc63ca8..79a37a28d0 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, @@ -15,7 +16,13 @@ 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, + CONTENT_LAYER_TYPE, + CONTENT_MODULE_FLAG, + 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. @@ -35,6 +42,54 @@ const collectionConfigParser = z.union([ type: z.literal('data'), schema: z.any().optional(), }), + z.object({ + type: z.literal(CONTENT_LAYER_TYPE), + schema: z.any().optional(), + 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()), + ), + ), + ]), + ), + 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(), + generateDigest: z.function(z.tuple([z.any()], z.string())), + watcher: z.any().optional(), + }), + ], + z.unknown(), + ), + ), + schema: z.any().optional(), + render: z.function(z.tuple([z.any()], z.unknown())).optional(), + }), + ]), + }), ]); const contentConfigParser = z.object({ @@ -42,7 +97,7 @@ 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 }; @@ -67,30 +122,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; - if (collectionConfig.type === 'data') { - data = entry.unvalidatedData; + pluginContext?: PluginContext, +): Promise<{ data: TOutputData; imageImports: Array }> { + let data: TOutputData; + if (collectionConfig.type === 'data' || collectionConfig.type === CONTENT_LAYER_TYPE) { + 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') { - schema = schema({ - image: createImage(pluginContext, shouldEmitFile, entry._internal.filePath), - }); + if (pluginContext) { + schema = schema({ + image: createImage(pluginContext, shouldEmitFile, entry._internal.filePath), + }); + } else if (collectionConfig.type === CONTENT_LAYER_TYPE) { + schema = schema({ + image: () => + z.string().transform((val) => { + imageImports.add(val); + return `${IMAGE_IMPORT_PREFIX}${val}`; + }), + }); + } } if (schema) { @@ -119,7 +190,7 @@ export async function getEntryData( }, }); if (parsed.success) { - data = parsed.data as Record; + data = parsed.data as TOutputData; } else { if (!formattedError) { formattedError = new AstroError({ @@ -139,6 +210,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; } @@ -383,6 +475,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, @@ -402,7 +499,10 @@ 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; } @@ -556,3 +656,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 dd6dacc7ca..b810b8f71a 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 } 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-imports.ts b/packages/astro/src/content/vite-plugin-content-imports.ts index de642329a3..5a944716c3 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/content/vite-plugin-content-virtual-mod.ts b/packages/astro/src/content/vite-plugin-content-virtual-mod.ts index 8c5365368d..64e5d98ee4 100644 --- a/packages/astro/src/content/vite-plugin-content-virtual-mod.ts +++ b/packages/astro/src/content/vite-plugin-content-virtual-mod.ts @@ -1,6 +1,7 @@ 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'; @@ -13,9 +14,18 @@ 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, + 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, } from './consts.js'; @@ -30,6 +40,7 @@ import { getEntrySlug, getEntryType, getExtGlob, + isDeferredModule, } from './utils.js'; interface AstroContentVirtualModPluginParams { @@ -43,13 +54,14 @@ 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', 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; @@ -61,6 +73,38 @@ export function astroContentVirtualModPlugin({ return { id: RESOLVED_VIRTUAL_MODULE_ID, external: true }; } } + 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)) { + return fileURLToPath(assetImportsFile); + } + return ASSET_IMPORTS_RESOLVED_STUB_ID; + } }, async load(id, args) { if (id === RESOLVED_VIRTUAL_MODULE_ID) { @@ -87,6 +131,41 @@ export function astroContentVirtualModPlugin({ } satisfies AstroPluginMetadata, }; } + if (id === RESOLVED_DATA_STORE_VIRTUAL_ID) { + if (!fs.existsSync(dataStoreFile)) { + return 'export default new Map()'; + } + 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 }); + } + } + + if (id === ASSET_IMPORTS_RESOLVED_STUB_ID) { + 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) { if (!settings.config.experimental.contentCollectionCache) { @@ -98,6 +177,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/build/index.ts b/packages/astro/src/core/build/index.ts index 1382f85bc2..72df05b891 100644 --- a/packages/astro/src/core/build/index.ts +++ b/packages/astro/src/core/build/index.ts @@ -29,12 +29,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'; - export interface BuildOptions { /** * Teardown the compiler WASM instance after build. This can improve performance when @@ -44,14 +44,6 @@ export interface BuildOptions { * @default true */ 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; } /** @@ -69,13 +61,16 @@ 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 (inlineConfig.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)'); + } } + await clearContentLayerCache({ astroConfig, logger, fs }); } const settings = await createSettings(astroConfig, fileURLToPath(astroConfig.root)); @@ -243,18 +238,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/config/schema.ts b/packages/astro/src/core/config/schema.ts index 9ffb58934b..f49b4708e7 100644 --- a/packages/astro/src/core/config/schema.ts +++ b/packages/astro/src/core/config/schema.ts @@ -89,9 +89,11 @@ export const ASTRO_CONFIG_DEFAULTS = { clientPrerender: false, globalRoutePriority: false, serverIslands: false, + contentIntellisense: false, env: { validateSecrets: false, }, + contentLayer: false, }, } satisfies AstroUserConfig & { server: { open: boolean } }; @@ -538,6 +540,11 @@ export const AstroConfigSchema = z.object({ .boolean() .optional() .default(ASTRO_CONFIG_DEFAULTS.experimental.serverIslands), + contentIntellisense: z + .boolean() + .optional() + .default(ASTRO_CONFIG_DEFAULTS.experimental.contentIntellisense), + 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/config/settings.ts b/packages/astro/src/core/config/settings.ts index c3c62edd45..6c878d7f33 100644 --- a/packages/astro/src/core/config/settings.ts +++ b/packages/astro/src/core/config/settings.ts @@ -14,7 +14,8 @@ import { loadTSConfig } from './tsconfig.js'; export function createBaseSettings(config: AstroConfig): AstroSettings { const { contentDir } = getContentPaths(config); - const preferences = createPreferences(config); + const dotAstroDir = new URL('.astro/', config.root); + const preferences = createPreferences(config, dotAstroDir); return { config, preferences, @@ -106,8 +107,9 @@ export function createBaseSettings(config: AstroConfig): AstroSettings { watchFiles: [], devToolbarApps: [], timer: new AstroTimer(), - dotAstroDir: new URL('.astro/', config.root), + dotAstroDir, latestAstroVersion: undefined, // Will be set later if applicable when the dev server starts + injectedTypes: [], }; } diff --git a/packages/astro/src/core/dev/container.ts b/packages/astro/src/core/dev/container.ts index fc401ca710..159d5e4476 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/dev/dev.ts b/packages/astro/src/core/dev/dev.ts index 3d8424174f..127f34b949 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'; @@ -6,7 +6,11 @@ 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 { globalContentLayer } from '../../content/content-layer.js'; +import { DataStore, globalDataStore } from '../../content/data-store.js'; import { attachContentServerListeners } from '../../content/index.js'; +import { globalContentConfigObserver } from '../../content/utils.js'; import { telemetry } from '../../events/index.js'; import * as msg from '../messages.js'; import { ensureProcessNodeEnv } from '../util.js'; @@ -102,6 +106,36 @@ export default async function dev(inlineConfig: AstroInlineConfig): Promise handleServerRestart(); - // Set up shortcuts, overriding Vite's default shortcuts so it works for Astro + // Set up shortcuts + + 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(); + } + }, + }); + } restart.container.viteServer.bindCLIShortcuts({ - customShortcuts: [ - // Disable Vite's builtin "r" (restart server), "u" (print server urls) and "c" (clear console) shortcuts - { key: 'r', description: '' }, - { key: 'u', description: '' }, - { key: 'c', description: '' }, - ], + customShortcuts, }); } setupContainer(); diff --git a/packages/astro/src/core/errors/errors-data.ts b/packages/astro/src/core/errors/errors-data.ts index 8415a9c0a3..aa19b6dc3b 100644 --- a/packages/astro/src/core/errors/errors-data.ts +++ b/packages/astro/src/core/errors/errors-data.ts @@ -1291,6 +1291,17 @@ export const RewriteWithBodyUsed = { 'Astro.rewrite() cannot be used if the request body has already been read. If you need to read the body, first clone the request.', } satisfies ErrorData; +/** + * @docs + * @description + * An unknown error occured while reading or writing files to disk. It can be caused by many things, eg. missing permissions or a file not existing we attempt to read. + */ +export const UnknownFilesystemError = { + name: 'UnknownFilesystemError', + title: 'An unknown error occured while reading or writing files to disk.', + hint: 'It can be caused by many things, eg. missing permissions or a file not existing we attempt to read. Check the error cause for more details.', +} satisfies ErrorData; + /** * @docs * @kind heading @@ -1469,6 +1480,20 @@ export const UnknownContentCollectionError = { name: 'UnknownContentCollectionError', title: 'Unknown Content Collection Error.', } 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/src/core/index.ts b/packages/astro/src/core/index.ts index e0f9f6c824..bdd7c7f059 100644 --- a/packages/astro/src/core/index.ts +++ b/packages/astro/src/core/index.ts @@ -23,4 +23,4 @@ export const build = (inlineConfig: AstroInlineConfig) => _build(inlineConfig); * @experimental The JavaScript API is experimental */ // Wrap `_sync` to prevent exposing internal options -export const sync = (inlineConfig: AstroInlineConfig) => _sync({ inlineConfig }); +export const sync = (inlineConfig: AstroInlineConfig) => _sync(inlineConfig); diff --git a/packages/astro/src/core/sync/constants.ts b/packages/astro/src/core/sync/constants.ts new file mode 100644 index 0000000000..7ff603105a --- /dev/null +++ b/packages/astro/src/core/sync/constants.ts @@ -0,0 +1,2 @@ +// TODO: use types.d.ts for backward compatibility. Use astro.d.ts in Astro 5.0 +export const REFERENCE_FILE = './types.d.ts'; diff --git a/packages/astro/src/core/sync/index.ts b/packages/astro/src/core/sync/index.ts index 7b0d3268a0..c9b2ec235b 100644 --- a/packages/astro/src/core/sync/index.ts +++ b/packages/astro/src/core/sync/index.ts @@ -1,16 +1,17 @@ -import fsMod from 'node:fs'; +import fsMod, { existsSync } from 'node:fs'; import { performance } from 'node:perf_hooks'; -import { fileURLToPath } from 'node:url'; 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 { globalContentLayer } from '../../content/content-layer.js'; +import { DataStore, globalDataStore } from '../../content/data-store.js'; import { createContentTypesGenerator } from '../../content/index.js'; import { globalContentConfigObserver } from '../../content/utils.js'; import { syncAstroEnv } from '../../env/sync.js'; import { telemetry } from '../../events/index.js'; import { eventCliSession } from '../../events/session.js'; -import { runHookConfigSetup } from '../../integrations/hooks.js'; +import { runHookConfigDone, runHookConfigSetup } from '../../integrations/hooks.js'; import { getTimeStat } from '../build/util.js'; import { resolveConfig } from '../config/config.js'; import { createNodeLogger } from '../config/logging.js'; @@ -27,7 +28,7 @@ import { 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 { writeFiles } from './write-files.js'; export type SyncOptions = { /** @@ -36,21 +37,17 @@ export type SyncOptions = { fs?: typeof fsMod; logger: Logger; settings: AstroSettings; + force?: boolean; skip?: { // Must be skipped in dev content?: boolean; }; }; -type DBPackage = { - typegen?: (args: Pick) => Promise; -}; - -export default async function sync({ - inlineConfig, - fs, - telemetry: _telemetry = false, -}: { inlineConfig: AstroInlineConfig; fs?: typeof fsMod; telemetry?: boolean }) { +export default async function sync( + inlineConfig: AstroInlineConfig, + { fs, telemetry: _telemetry = false }: { fs?: typeof fsMod; telemetry?: boolean } = {}, +) { ensureProcessNodeEnv('production'); const logger = createNodeLogger(inlineConfig); const { astroConfig, userConfig } = await resolveConfig(inlineConfig ?? {}, 'sync'); @@ -63,7 +60,24 @@ export default async function sync({ settings, logger, }); - return await syncInternal({ settings, logger, fs }); + await runHookConfigDone({ settings, logger }); + 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)'); + } } /** @@ -77,28 +91,43 @@ export async function syncInternal({ fs = fsMod, settings, skip, + force, }: SyncOptions): Promise { - const cwd = fileURLToPath(settings.config.root); + if (force) { + await clearContentLayerCache({ astroConfig: settings.config, logger, fs }); + } const timerStart = performance.now(); - const dbPackage = await getPackage( - '@astrojs/db', - logger, - { - optional: true, - cwd, - }, - [], - ); try { - await dbPackage?.typegen?.(settings.config); if (!skip?.content) { await syncContentCollections(settings, { fs, logger }); + settings.timer.start('Sync content layer'); + let store: DataStore | undefined; + try { + const dataStoreFile = new URL(DATA_STORE_FILE, settings.config.cacheDir); + if (existsSync(dataStoreFile)) { + store = await DataStore.fromFile(dataStoreFile); + globalDataStore.set(store); + } + } catch (err: any) { + logger.error('content', err.message); + } + if (!store) { + store = new DataStore(); + globalDataStore.set(store); + } + const contentLayer = globalContentLayer.init({ + settings, + logger, + store, + }); + await contentLayer.sync(); + settings.timer.end('Sync content layer'); } syncAstroEnv(settings, fs); - await setUpEnvTs({ settings, logger, fs }); + await writeFiles(settings, fs, logger); logger.info('types', `Generated ${dim(getTimeStat(timerStart, performance.now()))}`); } catch (err) { const error = createSafeError(err); diff --git a/packages/astro/src/core/sync/setup-env-ts.ts b/packages/astro/src/core/sync/setup-env-ts.ts deleted file mode 100644 index 39eb062e5b..0000000000 --- a/packages/astro/src/core/sync/setup-env-ts.ts +++ /dev/null @@ -1,94 +0,0 @@ -import type fsMod from 'node:fs'; -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; -import { bold } from 'kleur/colors'; -import { normalizePath } from 'vite'; -import type { AstroSettings } from '../../@types/astro.js'; -import { ACTIONS_TYPES_FILE } from '../../actions/consts.js'; -import { CONTENT_TYPES_FILE } from '../../content/consts.js'; -import { ENV_TYPES_FILE } from '../../env/constants.js'; -import { type Logger } from '../logger/core.js'; - -function getDotAstroTypeReference({ - settings, - filename, -}: { settings: AstroSettings; filename: string }) { - const relativePath = normalizePath( - path.relative( - fileURLToPath(settings.config.srcDir), - fileURLToPath(new URL(filename, settings.dotAstroDir)), - ), - ); - - return `/// `; -} - -type InjectedType = { filename: string; meetsCondition?: () => boolean | Promise }; - -export async function setUpEnvTs({ - settings, - logger, - fs, -}: { - settings: AstroSettings; - logger: Logger; - fs: typeof fsMod; -}) { - const envTsPath = new URL('env.d.ts', settings.config.srcDir); - const envTsPathRelativetoRoot = normalizePath( - path.relative(fileURLToPath(settings.config.root), fileURLToPath(envTsPath)), - ); - - const injectedTypes: Array = [ - { - filename: CONTENT_TYPES_FILE, - meetsCondition: () => fs.existsSync(new URL(CONTENT_TYPES_FILE, settings.dotAstroDir)), - }, - { - filename: ACTIONS_TYPES_FILE, - meetsCondition: () => fs.existsSync(new URL(ACTIONS_TYPES_FILE, settings.dotAstroDir)), - }, - ]; - if (settings.config.experimental.env) { - injectedTypes.push({ - filename: ENV_TYPES_FILE, - }); - } - - if (fs.existsSync(envTsPath)) { - const initialEnvContents = await fs.promises.readFile(envTsPath, 'utf-8'); - let typesEnvContents = initialEnvContents; - - for (const injectedType of injectedTypes) { - if (!injectedType.meetsCondition || (await injectedType.meetsCondition?.())) { - const expectedTypeReference = getDotAstroTypeReference({ - settings, - filename: injectedType.filename, - }); - - if (!typesEnvContents.includes(expectedTypeReference)) { - typesEnvContents = `${expectedTypeReference}\n${typesEnvContents}`; - } - } - } - - if (initialEnvContents !== typesEnvContents) { - logger.info('types', `Updated ${bold(envTsPathRelativetoRoot)} type declarations.`); - await fs.promises.writeFile(envTsPath, typesEnvContents, 'utf-8'); - } - } else { - // Otherwise, inject the `env.d.ts` file - let referenceDefs: string[] = []; - referenceDefs.push('/// '); - - for (const injectedType of injectedTypes) { - if (!injectedType.meetsCondition || (await injectedType.meetsCondition?.())) { - referenceDefs.push(getDotAstroTypeReference({ settings, filename: injectedType.filename })); - } - } - - await fs.promises.mkdir(settings.config.srcDir, { recursive: true }); - await fs.promises.writeFile(envTsPath, referenceDefs.join('\n'), 'utf-8'); - logger.info('types', `Added ${bold(envTsPathRelativetoRoot)} type declarations`); - } -} diff --git a/packages/astro/src/core/sync/write-files.ts b/packages/astro/src/core/sync/write-files.ts new file mode 100644 index 0000000000..56ab131f1b --- /dev/null +++ b/packages/astro/src/core/sync/write-files.ts @@ -0,0 +1,78 @@ +import type fsMod from 'node:fs'; +import { dirname, relative } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { bold } from 'kleur/colors'; +import { normalizePath } from 'vite'; +import type { AstroSettings } from '../../@types/astro.js'; +import type { Logger } from '../logger/core.js'; +import { REFERENCE_FILE } from './constants.js'; +import { AstroError, AstroErrorData } from '../errors/index.js'; + +export async function writeFiles(settings: AstroSettings, fs: typeof fsMod, logger: Logger) { + try { + writeInjectedTypes(settings, fs); + await setUpEnvTs(settings, fs, logger); + } catch (e) { + throw new AstroError(AstroErrorData.UnknownFilesystemError, { cause: e }); + } +} + +function getTsReference(type: 'path' | 'types', value: string) { + return `/// `; +} + +const CLIENT_TYPES_REFERENCE = getTsReference('types', 'astro/client'); + +function writeInjectedTypes(settings: AstroSettings, fs: typeof fsMod) { + const references: Array = []; + + for (const { filename, content } of settings.injectedTypes) { + const filepath = normalizePath(fileURLToPath(new URL(filename, settings.dotAstroDir))); + fs.mkdirSync(dirname(filepath), { recursive: true }); + fs.writeFileSync(filepath, content, 'utf-8'); + references.push(normalizePath(relative(fileURLToPath(settings.dotAstroDir), filepath))); + } + + const astroDtsContent = `${CLIENT_TYPES_REFERENCE}\n${references.map((reference) => getTsReference('path', reference)).join('\n')}`; + if (references.length === 0) { + fs.mkdirSync(settings.dotAstroDir, { recursive: true }); + } + fs.writeFileSync( + normalizePath(fileURLToPath(new URL(REFERENCE_FILE, settings.dotAstroDir))), + astroDtsContent, + 'utf-8', + ); +} + +async function setUpEnvTs(settings: AstroSettings, fs: typeof fsMod, logger: Logger) { + const envTsPath = normalizePath(fileURLToPath(new URL('env.d.ts', settings.config.srcDir))); + const envTsPathRelativetoRoot = normalizePath( + relative(fileURLToPath(settings.config.root), envTsPath), + ); + const relativePath = normalizePath( + relative( + fileURLToPath(settings.config.srcDir), + fileURLToPath(new URL(REFERENCE_FILE, settings.dotAstroDir)), + ), + ); + const expectedTypeReference = getTsReference('path', relativePath); + + if (fs.existsSync(envTsPath)) { + const initialEnvContents = await fs.promises.readFile(envTsPath, 'utf-8'); + let typesEnvContents = initialEnvContents; + + if (!typesEnvContents.includes(expectedTypeReference)) { + typesEnvContents = `${expectedTypeReference}\n${typesEnvContents}`; + } + + if (initialEnvContents !== typesEnvContents) { + logger.info('types', `Updated ${bold(envTsPathRelativetoRoot)} type declarations.`); + await fs.promises.writeFile(envTsPath, typesEnvContents, 'utf-8'); + } + } else { + // Otherwise, inject the `env.d.ts` file + await fs.promises.mkdir(settings.config.srcDir, { recursive: true }); + await fs.promises.writeFile(envTsPath, expectedTypeReference, 'utf-8'); + logger.info('types', `Added ${bold(envTsPathRelativetoRoot)} type declarations`); + } +} diff --git a/packages/astro/src/env/sync.ts b/packages/astro/src/env/sync.ts index 9ba11469ad..27436f967b 100644 --- a/packages/astro/src/env/sync.ts +++ b/packages/astro/src/env/sync.ts @@ -1,9 +1,9 @@ import fsMod from 'node:fs'; import type { AstroSettings } from '../@types/astro.js'; -import { ENV_TYPES_FILE, TYPES_TEMPLATE_URL } from './constants.js'; +import { TYPES_TEMPLATE_URL } from './constants.js'; import { getEnvFieldType } from './validators.js'; -export function syncAstroEnv(settings: AstroSettings, fs = fsMod) { +export function syncAstroEnv(settings: AstroSettings, fs = fsMod): void { if (!settings.config.experimental.env) { return; } @@ -23,8 +23,10 @@ export function syncAstroEnv(settings: AstroSettings, fs = fsMod) { } const template = fs.readFileSync(TYPES_TEMPLATE_URL, 'utf-8'); - const dts = template.replace('// @@CLIENT@@', client).replace('// @@SERVER@@', server); + const content = template.replace('// @@CLIENT@@', client).replace('// @@SERVER@@', server); - fs.mkdirSync(settings.dotAstroDir, { recursive: true }); - fs.writeFileSync(new URL(ENV_TYPES_FILE, settings.dotAstroDir), dts, 'utf-8'); + settings.injectedTypes.push({ + filename: 'astro/env.d.ts', + content, + }); } diff --git a/packages/astro/src/integrations/hooks.ts b/packages/astro/src/integrations/hooks.ts index e3de85ddd5..c0b9604335 100644 --- a/packages/astro/src/integrations/hooks.ts +++ b/packages/astro/src/integrations/hooks.ts @@ -101,6 +101,18 @@ export function getToolbarServerCommunicationHelpers(server: ViteDevServer) { }; } +// Will match any invalid characters (will be converted to _). We only allow a-zA-Z0-9.-_ +const SAFE_CHARS_RE = /[^\w.-]/g; + +export function normalizeInjectedTypeFilename(filename: string, integrationName: string): string { + if (!filename.endsWith('.d.ts')) { + throw new Error( + `Integration ${bold(integrationName)} is injecting a type that does not end with "${bold('.d.ts')}"`, + ); + } + return `./integrations/${integrationName.replace(SAFE_CHARS_RE, '_')}/${filename.replace(SAFE_CHARS_RE, '_')}`; +} + export async function runHookConfigSetup({ settings, command, @@ -328,6 +340,19 @@ export async function runHookConfigDone({ } settings.adapter = adapter; }, + injectTypes(injectedType) { + const normalizedFilename = normalizeInjectedTypeFilename( + injectedType.filename, + integration.name, + ); + + settings.injectedTypes.push({ + filename: normalizedFilename, + content: injectedType.content, + }); + + return new URL(normalizedFilename, settings.config.root); + }, logger: getLogger(integration, logger), }), logger, diff --git a/packages/astro/src/preferences/index.ts b/packages/astro/src/preferences/index.ts index 9318824bf6..2b92c5fb6c 100644 --- a/packages/astro/src/preferences/index.ts +++ b/packages/astro/src/preferences/index.ts @@ -82,9 +82,9 @@ export function coerce(key: string, value: unknown) { return value as any; } -export default function createPreferences(config: AstroConfig): AstroPreferences { +export default function createPreferences(config: AstroConfig, dotAstroDir: URL): AstroPreferences { const global = new PreferenceStore(getGlobalPreferenceDir()); - const project = new PreferenceStore(fileURLToPath(new URL('./.astro/', config.root))); + const project = new PreferenceStore(fileURLToPath(dotAstroDir)); const stores: Record = { global, project }; return { diff --git a/packages/astro/src/vite-plugin-markdown/content-entry-type.ts b/packages/astro/src/vite-plugin-markdown/content-entry-type.ts index 131422298d..9b78d8f351 100644 --- a/packages/astro/src/vite-plugin-markdown/content-entry-type.ts +++ b/packages/astro/src/vite-plugin-markdown/content-entry-type.ts @@ -1,4 +1,5 @@ -import { fileURLToPath } from 'node:url'; +import { fileURLToPath, pathToFileURL } from 'node:url'; +import { createMarkdownProcessor } from '@astrojs/markdown-remark'; import type { ContentEntryType } from '../@types/astro.js'; import { safeParseFrontmatter } from '../content/utils.js'; @@ -15,4 +16,27 @@ export const markdownContentEntryType: ContentEntryType = { }, // We need to handle propagation for Markdown because they support layouts which will bring in styles. handlePropagation: true, + + async getRenderFunction(settings) { + const processor = await createMarkdownProcessor(settings.config.markdown); + return async function renderToString(entry) { + if (!entry.body) { + return { + html: '', + }; + } + const result = await processor.render(entry.body, { + frontmatter: entry.data, + // @ts-expect-error Internal API + fileURL: entry.filePath ? pathToFileURL(entry.filePath) : undefined, + }); + return { + html: result.code, + metadata: { + ...result.metadata, + imagePaths: Array.from(result.metadata.imagePaths), + }, + }; + }; + }, }; diff --git a/packages/astro/templates/content/module.mjs b/packages/astro/templates/content/module.mjs index f246678a25..2d395db495 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@@'; @@ -33,6 +33,8 @@ const collectionToEntryMap = createCollectionToGlobResultMap({ let lookupMap = {}; /* @@LOOKUP_MAP_ASSIGNMENT@@ */ +const collectionNames = new Set(Object.keys(lookupMap)); + function createGlobLookup(glob) { return async (collection, lookupId) => { const filePath = lookupMap[collection]?.entries[lookupId]; @@ -59,15 +61,18 @@ export const getCollection = createGetCollection({ export const getEntryBySlug = createGetEntryBySlug({ getEntryImport: createGlobLookup(contentCollectionToEntryMap), getRenderEntryImport: createGlobLookup(collectionToRenderEntryMap), + collectionNames, }); export const getDataEntryById = createGetDataEntryById({ getEntryImport: createGlobLookup(dataCollectionToEntryMap), + collectionNames, }); export const getEntry = createGetEntry({ getEntryImport: createGlobLookup(collectionToEntryMap), getRenderEntryImport: createGlobLookup(collectionToRenderEntryMap), + collectionNames, }); export const getEntries = createGetEntries(getEntry); diff --git a/packages/astro/templates/content/types.d.ts b/packages/astro/templates/content/types.d.ts index 8572771b1e..9f277576a4 100644 --- a/packages/astro/templates/content/types.d.ts +++ b/packages/astro/templates/content/types.d.ts @@ -1,10 +1,21 @@ declare module 'astro:content' { + + interface RenderResult { + Content: import('astro/runtime/server/index.js').AstroComponentFactory; + headings: import('astro').MarkdownHeading[]; + remarkPluginFrontmatter: Record; + } interface Render { - '.md': Promise<{ - Content: import('astro').MarkdownInstance<{}>['Content']; - headings: import('astro').MarkdownHeading[]; - remarkPluginFrontmatter: Record; - }>; + '.md': Promise; + } + + + export interface RenderedContent { + html: string; + metadata?: { + imagePaths: Array; + [key: string]: unknown; + }; } } @@ -100,6 +111,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/astro-sync.test.js b/packages/astro/test/astro-sync.test.js index a92993eae3..dfe4755d11 100644 --- a/packages/astro/test/astro-sync.test.js +++ b/packages/astro/test/astro-sync.test.js @@ -1,8 +1,10 @@ +// @ts-check import assert from 'node:assert/strict'; import * as fs from 'node:fs'; -import { before, describe, it } from 'node:test'; +import { beforeEach, describe, it } from 'node:test'; import { fileURLToPath } from 'node:url'; import ts from 'typescript'; +import { normalizePath } from 'vite'; import { loadFixture } from './test-utils.js'; const createFixture = () => { @@ -11,66 +13,79 @@ const createFixture = () => { /** @type {Record} */ const writtenFiles = {}; + /** + * @param {string} path + */ + const getExpectedPath = (path) => + normalizePath(fileURLToPath(new URL(path, astroFixture.config.root))); + return { /** @param {string} root */ - async whenSyncing(root) { + async load(root) { astroFixture = await loadFixture({ root }); - - const envPath = new URL('env.d.ts', astroFixture.config.srcDir).href; - const typesDtsPath = new URL('.astro/types.d.ts', astroFixture.config.root).href; - + return astroFixture.config; + }, + clean() { + const envPath = new URL('env.d.ts', astroFixture.config.srcDir); + if (fs.existsSync(envPath)) { + fs.unlinkSync(new URL('env.d.ts', astroFixture.config.srcDir)); + } + fs.rmSync(new URL('./.astro/', astroFixture.config.root), { force: true, recursive: true }); + }, + async whenSyncing() { const fsMock = { ...fs, - existsSync(path, ...args) { - if (path.toString() === envPath) { - return false; - } - if (path.toString() === typesDtsPath) { - return true; - } - return fs.existsSync(path, ...args); - }, + /** + * @param {fs.PathLike} path + * @param {string} contents + */ writeFileSync(path, contents) { writtenFiles[path.toString()] = contents; + return fs.writeFileSync(path, contents); }, promises: { ...fs.promises, - async readFile(path, ...args) { - if (path.toString() === envPath) { - return `/// `; - } else { - return fs.promises.readFile(path, ...args); - } - }, - async writeFile(path, contents) { + /** + * @param {fs.PathLike} path + * @param {string} contents + */ + writeFile(path, contents) { writtenFiles[path.toString()] = contents; + return fs.promises.writeFile(path, contents); }, }, }; - await astroFixture.sync({ - inlineConfig: { root: fileURLToPath(new URL(root, import.meta.url)) }, - fs: fsMock, - }); + await astroFixture.sync( + { root: fileURLToPath(astroFixture.config.root) }, + { + // @ts-ignore + fs: fsMock, + }, + ); }, /** @param {string} path */ thenFileShouldExist(path) { - const expectedPath = new URL(path, astroFixture.config.root).href; - assert.equal(writtenFiles.hasOwnProperty(expectedPath), true, `${path} does not exist`); + assert.equal( + writtenFiles.hasOwnProperty(getExpectedPath(path)), + true, + `${path} does not exist`, + ); }, /** * @param {string} path * @param {string} content * @param {string | undefined} error */ - thenFileContentShouldInclude(path, content, error) { - const expectedPath = new URL(path, astroFixture.config.root).href; - assert.equal(writtenFiles[expectedPath].includes(content), true, error); + thenFileContentShouldInclude(path, content, error = undefined) { + assert.equal(writtenFiles[getExpectedPath(path)].includes(content), true, error); }, + /** + * @param {string} path + */ thenFileShouldBeValidTypescript(path) { - const expectedPath = new URL(path, astroFixture.config.root).href; try { - const content = writtenFiles[expectedPath]; + const content = writtenFiles[getExpectedPath(path)]; const result = ts.transpileModule(content, { compilerOptions: { module: ts.ModuleKind.ESNext, @@ -91,33 +106,71 @@ const createFixture = () => { describe('astro sync', () => { /** @type {ReturnType} */ let fixture; - before(async () => { + beforeEach(async () => { fixture = createFixture(); }); - it('Writes `src/env.d.ts` if none exists', async () => { - await fixture.whenSyncing('./fixtures/astro-basic/'); - fixture.thenFileShouldExist('src/env.d.ts'); - fixture.thenFileContentShouldInclude('src/env.d.ts', `/// `); + describe('References', () => { + it('Writes `src/env.d.ts` if none exists', async () => { + await fixture.load('./fixtures/astro-basic/'); + fixture.clean(); + await fixture.whenSyncing(); + fixture.thenFileShouldExist('src/env.d.ts'); + fixture.thenFileContentShouldInclude( + 'src/env.d.ts', + `/// `, + ); + }); + + it('Updates `src/env.d.ts` if one exists', async () => { + const config = await fixture.load('./fixtures/astro-basic/'); + fixture.clean(); + fs.writeFileSync(new URL('./env.d.ts', config.srcDir), '// whatever', 'utf-8'); + await fixture.whenSyncing(); + fixture.thenFileShouldExist('src/env.d.ts'); + fixture.thenFileContentShouldInclude( + 'src/env.d.ts', + `/// `, + ); + }); + + it('Writes `src/types.d.ts`', async () => { + await fixture.load('./fixtures/astro-basic/'); + fixture.clean(); + await fixture.whenSyncing(); + fixture.thenFileShouldExist('.astro/types.d.ts'); + fixture.thenFileContentShouldInclude( + '.astro/types.d.ts', + `/// `, + ); + }); }); describe('Content collections', () => { - it('Writes types to `.astro`', async () => { - await fixture.whenSyncing('./fixtures/content-collections/'); + it('Adds reference to `.astro/types.d.ts`', async () => { + await fixture.load('./fixtures/content-collections/'); + fixture.clean(); + await fixture.whenSyncing(); fixture.thenFileShouldExist('.astro/types.d.ts'); fixture.thenFileContentShouldInclude( '.astro/types.d.ts', + `/// `, + ); + fixture.thenFileShouldExist('.astro/astro/content.d.ts'); + fixture.thenFileContentShouldInclude( + '.astro/astro/content.d.ts', `declare module 'astro:content' {`, 'Types file does not include `astro:content` module declaration', ); - fixture.thenFileShouldBeValidTypescript('.astro/types.d.ts'); + fixture.thenFileShouldBeValidTypescript('.astro/astro/content.d.ts'); }); it('Writes types for empty collections', async () => { - await fixture.whenSyncing('./fixtures/content-collections-empty-dir/'); - fixture.thenFileShouldExist('.astro/types.d.ts'); + await fixture.load('./fixtures/content-collections-empty-dir/'); + fixture.clean(); + await fixture.whenSyncing(); fixture.thenFileContentShouldInclude( - '.astro/types.d.ts', + '.astro/astro/content.d.ts', `"blog": Record { 'Types file does not include empty collection type', ); fixture.thenFileContentShouldInclude( - '.astro/types.d.ts', + '.astro/astro/content.d.ts', `"blogMeta": Record { 'Types file does not include empty collection type', ); }); - - it('Adds type reference to `src/env.d.ts`', async () => { - await fixture.whenSyncing('./fixtures/content-collections/'); - fixture.thenFileShouldExist('src/env.d.ts'); - fixture.thenFileContentShouldInclude( - 'src/env.d.ts', - `/// `, - ); - }); }); - describe('Astro Env', () => { - it('Writes types to `.astro`', async () => { - await fixture.whenSyncing('./fixtures/astro-env/'); - fixture.thenFileShouldExist('.astro/env.d.ts'); + describe('astro:env', () => { + it('Adds reference to `.astro/types.d.ts`', async () => { + await fixture.load('./fixtures/astro-env/'); + fixture.clean(); + await fixture.whenSyncing(); + fixture.thenFileShouldExist('.astro/types.d.ts'); fixture.thenFileContentShouldInclude( - '.astro/env.d.ts', + '.astro/types.d.ts', + `/// `, + ); + fixture.thenFileShouldExist('.astro/astro/env.d.ts'); + fixture.thenFileContentShouldInclude( + '.astro/astro/env.d.ts', `declare module 'astro:env/client' {`, 'Types file does not include `astro:env` module declaration', ); }); - it('Adds type reference to `src/env.d.ts`', async () => { - await fixture.whenSyncing('./fixtures/astro-env/'); - fixture.thenFileShouldExist('src/env.d.ts'); - fixture.thenFileContentShouldInclude( - 'src/env.d.ts', - `/// `, - ); - }); - it('Does not throw if a public variable is required', async () => { - let error = null; try { - await fixture.whenSyncing('./fixtures/astro-env-required-public/'); - } catch (e) { - error = e; + await fixture.load('./fixtures/astro-env-required-public/'); + fixture.clean(); + await fixture.whenSyncing(); + assert.ok(true); + } catch { + assert.fail(); } - - assert.equal(error, null, 'Syncing should not throw astro:env validation errors'); }); }); - describe('Astro Actions', () => { - // We can't check for the file existence or content yet because - // it's an integration and does not use the fs mock - - it('Adds type reference to `src/env.d.ts`', async () => { - await fixture.whenSyncing('./fixtures/actions/'); - fixture.thenFileShouldExist('src/env.d.ts'); + describe('astro:actions', () => { + it('Adds reference to `.astro/types.d.ts`', async () => { + await fixture.load('./fixtures/actions/'); + fixture.clean(); + await fixture.whenSyncing(); + fixture.thenFileShouldExist('.astro/types.d.ts'); fixture.thenFileContentShouldInclude( - 'src/env.d.ts', - `/// `, + '.astro/types.d.ts', + `/// `, ); + fixture.thenFileShouldExist('.astro/astro/actions.d.ts'); + fixture.thenFileContentShouldInclude( + '.astro/astro/actions.d.ts', + `declare module "astro:actions" {`, + 'Types file does not include `astro:actions` module declaration', + ); + fixture.thenFileShouldBeValidTypescript('.astro/astro/actions.d.ts'); }); }); }); diff --git a/packages/astro/test/content-intellisense.test.js b/packages/astro/test/content-intellisense.test.js new file mode 100644 index 0000000000..dc93919999 --- /dev/null +++ b/packages/astro/test/content-intellisense.test.js @@ -0,0 +1,79 @@ +import assert from 'node:assert/strict'; +import { before, describe, it } from 'node:test'; +import { loadFixture } from './test-utils.js'; + +describe('Content Intellisense', () => { + /** @type {import("./test-utils.js").Fixture} */ + let fixture; + + /** @type {string[]} */ + let collectionsDir = []; + + /** @type {{collections: {hasSchema: boolean, name: string}[], entries: Record}} */ + let manifest = undefined; + + before(async () => { + fixture = await loadFixture({ root: './fixtures/content-intellisense/' }); + await fixture.build(); + + collectionsDir = await fixture.readdir('../.astro/collections'); + manifest = JSON.parse(await fixture.readFile('../.astro/collections/collections.json')); + }); + + it('generate JSON schemas for content collections', async () => { + assert.deepEqual(collectionsDir.includes('blog-cc.schema.json'), true); + }); + + it('generate JSON schemas for content layer', async () => { + assert.deepEqual(collectionsDir.includes('blog-cl.schema.json'), true); + }); + + it('manifest exists', async () => { + assert.notEqual(manifest, undefined); + }); + + it('manifest has content collections', async () => { + const manifestCollections = manifest.collections.map((collection) => collection.name); + assert.equal( + manifestCollections.includes('blog-cc'), + true, + "Expected 'blog-cc' collection in manifest", + ); + }); + + it('manifest has content layer', async () => { + const manifestCollections = manifest.collections.map((collection) => collection.name); + assert.equal( + manifestCollections.includes('blog-cl'), + true, + "Expected 'blog-cl' collection in manifest", + ); + }); + + it('has entries for content collections', async () => { + const collectionEntries = Object.entries(manifest.entries).filter((entry) => + entry[0].includes( + '/astro/packages/astro/test/fixtures/content-intellisense/src/content/blog-cc/', + ), + ); + assert.equal(collectionEntries.length, 3, "Expected 3 entries for 'blog-cc' collection"); + assert.equal( + collectionEntries.every((entry) => entry[1] === 'blog-cc'), + true, + "Expected 3 entries for 'blog-cc' collection to have 'blog-cc' as collection", + ); + }); + + it('has entries for content layer', async () => { + const collectionEntries = Object.entries(manifest.entries).filter((entry) => + entry[0].includes('/astro/packages/astro/test/fixtures/content-intellisense/src/blog-cl/'), + ); + + assert.equal(collectionEntries.length, 3, "Expected 3 entries for 'blog-cl' collection"); + assert.equal( + collectionEntries.every((entry) => entry[1] === 'blog-cl'), + true, + "Expected 3 entries for 'blog-cl' collection to have 'blog-cl' as collection name", + ); + }); +}); 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 0000000000..c5279b9e75 --- /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 new file mode 100644 index 0000000000..fa743e719c --- /dev/null +++ b/packages/astro/test/content-layer-render.test.js @@ -0,0 +1,45 @@ +import assert from 'node:assert/strict'; +import { after, before, describe, it } from 'node:test'; +import { loadFixture } from './test-utils.js'; + +describe('Content Layer MDX rendering dev', () => { + /** @type {import("./test-utils.js").Fixture} */ + let fixture; + + let devServer; + before(async () => { + fixture = await loadFixture({ + root: './fixtures/content-layer-rendering/', + }); + 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 MDX rendering build', () => { + /** @type {import("./test-utils.js").Fixture} */ + let fixture; + before(async () => { + fixture = await loadFixture({ + root: './fixtures/content-layer-rendering/', + }); + 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 new file mode 100644 index 0000000000..41c05206ba --- /dev/null +++ b/packages/astro/test/content-layer.test.js @@ -0,0 +1,279 @@ +import assert from 'node:assert/strict'; +import { promises as fs } from 'node:fs'; +import { sep } from 'node:path'; +import { sep as posixSep } from 'node:path/posix'; +import { after, before, describe, it } from 'node:test'; +import * as devalue from 'devalue'; + +import { loadFixture } from './test-utils.js'; +describe('Content Layer', () => { + /** @type {import("./test-utils.js").Fixture} */ + let fixture; + + before(async () => { + fixture = await loadFixture({ root: './fixtures/content-layer/' }); + }); + + describe('Build', () => { + let json; + before(async () => { + fixture = await loadFixture({ root: './fixtures/content-layer/' }); + 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 = devalue.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', + }, + }); + }); + + 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)); + + 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('dataEntry')); + assert.equal(json.dataEntry.filePath?.split(sep).join(posixSep), 'src/data/dogs.json'); + delete json.dataEntry.filePath; + assert.deepEqual(json.dataEntry, { + 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 collection from a simple loader', async () => { + assert.ok(json.hasOwnProperty('simpleLoader')); + assert.ok(Array.isArray(json.simpleLoader)); + + const item = json.simpleLoader[0]; + assert.deepEqual(item, { + id: 'siamese', + collection: 'cats', + data: { + breed: 'Siamese', + id: 'siamese', + size: 'Medium', + origin: 'Thailand', + lifespan: '15 years', + temperament: ['Active', 'Affectionate', 'Social', 'Playful'], + }, + }); + }); + + 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('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, { + collection: 'cats', + data: { + breed: 'Tabby', + id: 'tabby', + size: 'Medium', + origin: 'Egypt', + lifespan: '15 years', + temperament: ['Curious', 'Playful', 'Independent'], + }, + id: 'tabby', + }); + }); + + it('updates the store on new builds', async () => { + assert.equal(json.increment.data.lastValue, 1); + await fixture.build(); + 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 = devalue.parse(await fixture.readFile('/collections.json')); + assert.equal(newJson.increment.data.lastValue, 2); + await fixture.build({ force: true }, {}); + 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); + await fixture.resetAllFiles(); + }); + }); + + 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 = devalue.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', + }, + }); + }); + + 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('dataEntry')); + assert.equal(json.dataEntry.filePath?.split(sep).join(posixSep), 'src/data/dogs.json'); + delete json.dataEntry.filePath; + assert.deepEqual(json.dataEntry, { + id: 'beagle', + 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 = devalue.parse(await rawJsonResponse.text()); + assert.equal(initialJson.fileLoader[0].data.temperament.includes('Bouncy'), false); + + await fixture.editFile('/src/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 = 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-collections/astro.config.mjs b/packages/astro/test/fixtures/content-collections/astro.config.mjs index aa89463ab7..911cb3a998 100644 --- a/packages/astro/test/fixtures/content-collections/astro.config.mjs +++ b/packages/astro/test/fixtures/content-collections/astro.config.mjs @@ -4,4 +4,7 @@ import { defineConfig } from 'astro/config'; // https://astro.build/config export default defineConfig({ integrations: [mdx()], + experimental: { + contentIntellisense: true + } }); diff --git a/packages/astro/test/fixtures/content-intellisense/astro.config.mjs b/packages/astro/test/fixtures/content-intellisense/astro.config.mjs new file mode 100644 index 0000000000..f6358a896f --- /dev/null +++ b/packages/astro/test/fixtures/content-intellisense/astro.config.mjs @@ -0,0 +1,12 @@ +import markdoc from "@astrojs/markdoc"; +import mdx from '@astrojs/mdx'; +import { defineConfig } from 'astro/config'; + +// https://astro.build/config +export default defineConfig({ + integrations: [mdx(), markdoc()], + experimental: { + contentLayer: true, + contentIntellisense: true + } +}); diff --git a/packages/astro/test/fixtures/content-intellisense/package.json b/packages/astro/test/fixtures/content-intellisense/package.json new file mode 100644 index 0000000000..1e22bf9946 --- /dev/null +++ b/packages/astro/test/fixtures/content-intellisense/package.json @@ -0,0 +1,10 @@ +{ + "name": "@test/content-intellisense", + "version": "0.0.0", + "private": true, + "dependencies": { + "astro": "workspace:*", + "@astrojs/mdx": "workspace:*", + "@astrojs/markdoc": "workspace:*" + } +} diff --git a/packages/astro/test/fixtures/content-intellisense/src/blog-cl/entry.md b/packages/astro/test/fixtures/content-intellisense/src/blog-cl/entry.md new file mode 100644 index 0000000000..caaa4ebeff --- /dev/null +++ b/packages/astro/test/fixtures/content-intellisense/src/blog-cl/entry.md @@ -0,0 +1,3 @@ +--- +title: "Markdown" +--- diff --git a/packages/astro/test/fixtures/content-intellisense/src/blog-cl/entry2.mdx b/packages/astro/test/fixtures/content-intellisense/src/blog-cl/entry2.mdx new file mode 100644 index 0000000000..0872819c8c --- /dev/null +++ b/packages/astro/test/fixtures/content-intellisense/src/blog-cl/entry2.mdx @@ -0,0 +1,3 @@ +--- +title: "MDX" +--- diff --git a/packages/astro/test/fixtures/content-intellisense/src/blog-cl/entry3.mdoc b/packages/astro/test/fixtures/content-intellisense/src/blog-cl/entry3.mdoc new file mode 100644 index 0000000000..e13eaa2f6a --- /dev/null +++ b/packages/astro/test/fixtures/content-intellisense/src/blog-cl/entry3.mdoc @@ -0,0 +1,3 @@ +--- +title: "Markdoc" +--- diff --git a/packages/astro/test/fixtures/content-intellisense/src/content/blog-cc/entry.md b/packages/astro/test/fixtures/content-intellisense/src/content/blog-cc/entry.md new file mode 100644 index 0000000000..caaa4ebeff --- /dev/null +++ b/packages/astro/test/fixtures/content-intellisense/src/content/blog-cc/entry.md @@ -0,0 +1,3 @@ +--- +title: "Markdown" +--- diff --git a/packages/astro/test/fixtures/content-intellisense/src/content/blog-cc/entry2.mdx b/packages/astro/test/fixtures/content-intellisense/src/content/blog-cc/entry2.mdx new file mode 100644 index 0000000000..0872819c8c --- /dev/null +++ b/packages/astro/test/fixtures/content-intellisense/src/content/blog-cc/entry2.mdx @@ -0,0 +1,3 @@ +--- +title: "MDX" +--- diff --git a/packages/astro/test/fixtures/content-intellisense/src/content/blog-cc/entry3.mdoc b/packages/astro/test/fixtures/content-intellisense/src/content/blog-cc/entry3.mdoc new file mode 100644 index 0000000000..e13eaa2f6a --- /dev/null +++ b/packages/astro/test/fixtures/content-intellisense/src/content/blog-cc/entry3.mdoc @@ -0,0 +1,3 @@ +--- +title: "Markdoc" +--- diff --git a/packages/astro/test/fixtures/content-intellisense/src/content/config.ts b/packages/astro/test/fixtures/content-intellisense/src/content/config.ts new file mode 100644 index 0000000000..64120adabe --- /dev/null +++ b/packages/astro/test/fixtures/content-intellisense/src/content/config.ts @@ -0,0 +1,24 @@ +import { glob } from 'astro/loaders'; +import { defineCollection, z } from 'astro:content'; + +const blogCC = defineCollection({ + type: 'content', + schema: z.object({ + title: z.string(), + description: z.string().optional(), + }), +}); + +const blogCL = defineCollection({ + // By default the ID is a slug, generated from the path of the file relative to `base` + loader: glob({ pattern: "**/*", base: "./src/blog-cl" }), + schema: z.object({ + title: z.string(), + description: z.string().optional(), + }), +}); + +export const collections = { + "blog-cc": blogCC, + "blog-cl": blogCL, +}; diff --git a/packages/astro/test/fixtures/content-intellisense/src/utils.js b/packages/astro/test/fixtures/content-intellisense/src/utils.js new file mode 100644 index 0000000000..3a62443278 --- /dev/null +++ b/packages/astro/test/fixtures/content-intellisense/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); +} 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 0000000000..bbb19ad302 --- /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 0000000000..68f5292801 --- /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 0000000000..4a015695c6 --- /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 0000000000..eb7d20426e --- /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 0000000000..6093ec5938 --- /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 0000000000..91ca2f8c9c --- /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 0000000000..18bf1399f2 --- /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 0000000000..f1e239718c --- /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 0000000000..e45ac64381 --- /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 0000000000..3108b99735 --- /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 0000000000..eb23f675a0 --- /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 0000000000..18ead9aa16 --- /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 0000000000..5c7747eef9 --- /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/packages/astro/test/fixtures/content-layer-rendering/.gitignore b/packages/astro/test/fixtures/content-layer-rendering/.gitignore new file mode 100644 index 0000000000..16d3c4dbbf --- /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 0000000000..c3fd1366a0 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-rendering/astro.config.mjs @@ -0,0 +1,17 @@ +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)) + } + }, + }, + experimental: { + contentLayer: true, + }, +}); 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 0000000000..1266a73753 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-rendering/content-outside-src-mdx/iguana.mdx @@ -0,0 +1,16 @@ +--- +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

+ +### 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 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 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 0000000000..6679b8d6ec --- /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 0000000000..d1ad359c2e --- /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 0000000000..fa476e929e --- /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 0000000000..a2954162a3 --- /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 0000000000..e37694eaf1 --- /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 0000000000..eb175fa99b --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-rendering/src/content/config.ts @@ -0,0 +1,18 @@ +import { defineCollection, z, reference } from 'astro:content'; +import { glob } from 'astro/loaders'; + +const reptiles = defineCollection({ + 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 0000000000..526805e099 --- /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/astro.config.mjs b/packages/astro/test/fixtures/content-layer/astro.config.mjs new file mode 100644 index 0000000000..3266e5e8c0 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/astro.config.mjs @@ -0,0 +1,18 @@ +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)) + } + }, + }, + experimental: { + contentLayer: true, + contentIntellisense: true, + }, +}); 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 0000000000..6e770b2afd --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/content-outside-src/columbia-copy.md @@ -0,0 +1,16 @@ +--- +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) + +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 0000000000..e8a7bf2486 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/content-outside-src/columbia.md @@ -0,0 +1,22 @@ +--- +title: Columbia +description: 'Learn about the Columbia NASA space shuttle.' +publishedDate: 'Sat May 21 2022 00:00:00 GMT-0400 (Eastern Daylight Time)' +tags: [space, 90s] +heroImage: "@images/launch.webp" +--- + +**Source:** [Wikipedia](https://en.wikipedia.org/wiki/Space_Shuttle_Endeavour) + +![columbia bare](shuttle.jpg) +![columbia relative](./shuttle.jpg) +![atlantis alias](@images/atlantis.avif) +![columbia relative 2](./shuttle.jpg) + +## Columbia + +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/endeavour.md b/packages/astro/test/fixtures/content-layer/content-outside-src/endeavour.md new file mode 100644 index 0000000000..51d6e8c421 --- /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 0000000000..3131e6d5df --- /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 0000000000..4971108e36 --- /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/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/package.json b/packages/astro/test/fixtures/content-layer/package.json new file mode 100644 index 0000000000..fc73ce6f7a --- /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 0000000000..d1ad359c2e --- /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 0000000000..fa476e929e --- /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 0000000000..a2954162a3 --- /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 0000000000..e37694eaf1 --- /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/config.ts b/packages/astro/test/fixtures/content-layer/src/content/config.ts new file mode 100644 index 0000000000..1689a56b1c --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -0,0 +1,111 @@ +import { defineCollection, z, reference } from 'astro:content'; +import { file, glob } from 'astro/loaders'; +import { loader } from '../loaders/post-loader.js'; + +const blog = defineCollection({ + loader: loader({ url: 'https://jsonplaceholder.typicode.com/posts' }), +}); + +const dogs = defineCollection({ + 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()), + }), +}); + +const cats = defineCollection({ + 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()), + }), +}); + +// Absolute paths should also work +const absoluteRoot = new URL('../../content-outside-src', import.meta.url); + +const spacecraft = defineCollection({ + loader: glob({ pattern: '*.md', base: absoluteRoot }), + schema: ({ image }) => + z.object({ + title: z.string(), + description: z.string(), + publishedDate: z.coerce.date(), + tags: z.array(z.string()), + heroImage: image().optional(), + cat: reference('cats').optional(), + }), +}); + +const numbers = defineCollection({ + loader: glob({ pattern: 'src/data/glob-data/*', base: '.' }), +}); + +const increment = defineCollection({ + loader: { + name: 'increment-loader', + load: async ({ store }) => { + const entry = store.get<{lastValue: number}>('value'); + const lastValue = entry?.data.lastValue ?? 0; + store.set({ + id: 'value', + data: { + lastValue: lastValue + 1, + lastUpdated: new Date(), + }, + }); + }, + // Example of a loader that returns an async schema function + schema: async () => z.object({ + lastValue: z.number(), + lastUpdated: z.date(), + }), + }, + +}); + +export const collections = { blog, dogs, cats, numbers, spacecraft, increment }; diff --git a/packages/astro/test/fixtures/content-layer/src/data/dogs.json b/packages/astro/test/fixtures/content-layer/src/data/dogs.json new file mode 100644 index 0000000000..66e6320c65 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/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/data/glob-data/index.json b/packages/astro/test/fixtures/content-layer/src/data/glob-data/index.json new file mode 100644 index 0000000000..efc60137d6 --- /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 0000000000..efc60137d6 --- /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 0000000000..7d028e937a --- /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 0000000000..1a8215509b --- /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 new file mode 100644 index 0000000000..b03c144222 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/loaders/post-loader.ts @@ -0,0 +1,45 @@ +import { z } from 'astro:content'; +import type { Loader } from "astro/loaders" + +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 data of posts) { + store.set({id: data.id, data}); + } + 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/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 0000000000..850833907b --- /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 0000000000..f637bf80d0 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/pages/collections.json.js @@ -0,0 +1,30 @@ +import { getCollection, getEntry } from 'astro:content'; +import * as devalue from 'devalue'; + +export async function GET() { + const customLoader = await getCollection('blog', (entry) => { + return entry.data.id < 6; + }); + const fileLoader = await getCollection('dogs'); + + const dataEntry = await getEntry('dogs', 'beagle'); + + const simpleLoader = await getCollection('cats'); + + const entryWithReference = await getEntry('spacecraft', 'columbia-copy'); + const referencedEntry = await getEntry(entryWithReference.data.cat); + + const increment = await getEntry('increment', 'value'); + + return new Response( + devalue.stringify({ + customLoader, + fileLoader, + dataEntry, + simpleLoader, + entryWithReference, + referencedEntry, + increment, + }) + ); +} 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 0000000000..977ae6efa1 --- /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 0000000000..dbd18118a0 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/pages/index.astro @@ -0,0 +1,33 @@ +--- +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

+ +

Blog Posts

+ +

{first.data.title}

+ + + + + 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 0000000000..80314606f9 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro @@ -0,0 +1,35 @@ +--- +import type { GetStaticPaths } from "astro"; +import { getCollection, getEntry, render } from "astro:content" +import { Image } from "astro:assets" + +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 + +let cat = craft.data.cat ? await getEntry(craft.data.cat) : undefined +const { Content, headings } = await render(craft) + +--- + +

{craft.data.title}

+ +{cat?

🐈: {cat.data.breed}

: undefined} +{craft.data.heroImage ? {craft.data.title} : undefined} + diff --git a/packages/astro/test/test-utils.js b/packages/astro/test/test-utils.js index 4ed888f970..95edeebd26 100644 --- a/packages/astro/test/test-utils.js +++ b/packages/astro/test/test-utils.js @@ -7,6 +7,8 @@ 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/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'; @@ -22,6 +24,7 @@ process.env.ASTRO_TELEMETRY_DISABLED = true; /** * @typedef {import('../src/core/dev/dev').DevServer} DevServer * @typedef {import('../src/@types/astro').AstroInlineConfig & { root?: string | URL }} AstroInlineConfig + * @typedef {import('../src/@types/astro').AstroConfig} AstroConfig * @typedef {import('../src/core/preview/index').PreviewServer} PreviewServer * @typedef {import('../src/core/app/index').App} App * @typedef {import('../src/cli/check/index').AstroChecker} AstroChecker @@ -36,7 +39,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 @@ -47,6 +50,7 @@ process.env.ASTRO_TELEMETRY_DISABLED = true; * @property {() => Promise} onNextChange * @property {typeof check} check * @property {typeof sync} sync + * @property {AstroConfig} config * * This function returns an instance of the Check * @@ -157,15 +161,22 @@ export async function loadFixture(inlineConfig) { let devServer; return { - build: async (extraInlineConfig = {}) => { + build: async (extraInlineConfig = {}, options = {}) => { + globalContentLayer.dispose(); + globalContentConfigObserver.set({ status: 'init' }); process.env.NODE_ENV = 'production'; - return build(mergeConfig(inlineConfig, extraInlineConfig), { teardownCompiler: false }); + return build(mergeConfig(inlineConfig, extraInlineConfig), { + teardownCompiler: false, + ...options, + }); }, sync, check: async (opts) => { return await check(opts); }, 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 @@ -275,7 +286,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; diff --git a/packages/astro/test/units/dev/collections-mixed-content-errors.test.js b/packages/astro/test/units/dev/collections-mixed-content-errors.test.js index 73ce15377f..3417650fc9 100644 --- a/packages/astro/test/units/dev/collections-mixed-content-errors.test.js +++ b/packages/astro/test/units/dev/collections-mixed-content-errors.test.js @@ -8,13 +8,15 @@ const root = new URL('../../fixtures/content-mixed-errors/', import.meta.url); async function sync({ fs }) { try { - await _sync({ - inlineConfig: { + await _sync( + { root: fileURLToPath(root), logLevel: 'silent', }, - fs, - }); + { + fs, + }, + ); return 0; } catch (_) { return 1; @@ -121,11 +123,7 @@ title: Post root, ); - try { - const res = await sync({ fs }); - assert.equal(res, 0); - } catch (e) { - assert.fail(`Did not expect sync to throw: ${e.message}`); - } + const res = await sync({ fs }); + assert.equal(res, 0); }); }); diff --git a/packages/astro/test/units/dev/restart.test.js b/packages/astro/test/units/dev/restart.test.js index a09bfce98c..339b95fc1a 100644 --- a/packages/astro/test/units/dev/restart.test.js +++ b/packages/astro/test/units/dev/restart.test.js @@ -194,4 +194,31 @@ describe('dev container restarts', () => { await restart.container.close(); } }); + + it('Is able to restart project on .astro/settings.json changes', async () => { + const fs = createFs( + { + '/src/pages/index.astro': ``, + '/.astro/settings.json': `{}`, + }, + root, + ); + + const restart = await createContainerWithAutomaticRestart({ + fs, + inlineConfig: { root: fileURLToPath(root), logLevel: 'silent' }, + }); + await startContainer(restart.container); + assert.equal(isStarted(restart.container), true); + + try { + let restartComplete = restart.restarted(); + fs.mkdirSync('/.astro/', { recursive: true }); + fs.writeFileSync('/.astro/settings.json', `{ }`); + triggerFSEvent(restart.container, fs, '/.astro/settings.json', 'change'); + await restartComplete; + } finally { + await restart.container.close(); + } + }); }); diff --git a/packages/astro/test/units/integrations/api.test.js b/packages/astro/test/units/integrations/api.test.js index 960e003fc3..6122ba6408 100644 --- a/packages/astro/test/units/integrations/api.test.js +++ b/packages/astro/test/units/integrations/api.test.js @@ -1,7 +1,11 @@ import * as assert from 'node:assert/strict'; import { describe, it } from 'node:test'; import { validateSupportedFeatures } from '../../../dist/integrations/features-validation.js'; -import { runHookBuildSetup, runHookConfigSetup } from '../../../dist/integrations/hooks.js'; +import { + normalizeInjectedTypeFilename, + runHookBuildSetup, + runHookConfigSetup, +} from '../../../dist/integrations/hooks.js'; import { defaultLogger } from '../test-utils.js'; describe('Integration API', () => { @@ -311,3 +315,20 @@ describe('Astro feature map', function () { }); }); }); + +describe('normalizeInjectedTypeFilename', () => { + // invalid filename + assert.throws(() => normalizeInjectedTypeFilename('types', 'integration')); + // valid filename + assert.doesNotThrow(() => normalizeInjectedTypeFilename('types.d.ts', 'integration')); + // filename normalization + assert.equal( + normalizeInjectedTypeFilename('aA1-*/_"~.d.ts', 'integration'), + './integrations/integration/aA1-_____.d.ts', + ); + // integration name normalization + assert.equal( + normalizeInjectedTypeFilename('types.d.ts', 'aA1-*/_"~.'), + './integrations/aA1-_____./types.d.ts', + ); +}); diff --git a/packages/astro/types/content.d.ts b/packages/astro/types/content.d.ts index 18ddf2c8ca..1715a30a42 100644 --- a/packages/astro/types/content.d.ts +++ b/packages/astro/types/content.d.ts @@ -20,6 +20,31 @@ declare module 'astro:content' { >; }>; + export interface DataEntry { + id: string; + data: Record; + filePath?: string; + body?: string; + } + + export interface DataStore { + 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; + } + type BaseSchemaWithoutEffects = | import('astro/zod').AnyZodObject | import('astro/zod').ZodUnion<[BaseSchemaWithoutEffects, ...BaseSchemaWithoutEffects[]]> @@ -32,6 +57,12 @@ declare module 'astro:content' { export type SchemaContext = { image: ImageFunction }; + type ContentLayerConfig = { + type?: 'content_layer'; + schema?: S | ((context: SchemaContext) => S); + loader: import('astro/loaders').Loader | (() => Array | Promise>); + }; + type DataCollectionConfig = { type: 'data'; schema?: S | ((context: SchemaContext) => S); @@ -40,11 +71,13 @@ declare module 'astro:content' { type ContentCollectionConfig = { type?: 'content'; schema?: S | ((context: SchemaContext) => S); + loader?: never; }; export type CollectionConfig = | ContentCollectionConfig - | DataCollectionConfig; + | DataCollectionConfig + | ContentLayerConfig; export function defineCollection( input: CollectionConfig, diff --git a/packages/db/src/core/integration/index.ts b/packages/db/src/core/integration/index.ts index 6573c838af..68439cfb95 100644 --- a/packages/db/src/core/integration/index.ts +++ b/packages/db/src/core/integration/index.ts @@ -22,7 +22,7 @@ import { resolveDbConfig } from '../load-file.js'; import { SEED_DEV_FILE_NAME } from '../queries.js'; import { type VitePlugin, getDbDirectoryUrl } from '../utils.js'; import { fileURLIntegration } from './file-url.js'; -import { typegenInternal } from './typegen.js'; +import { getDtsContent } from './typegen.js'; import { type LateSeedFiles, type LateTables, @@ -30,7 +30,6 @@ import { resolved, vitePluginDb, } from './vite-plugin-db.js'; -import { vitePluginInjectEnvTs } from './vite-plugin-inject-env-ts.js'; function astroDBIntegration(): AstroIntegration { let connectToStudio = false; @@ -102,11 +101,11 @@ function astroDBIntegration(): AstroIntegration { updateConfig({ vite: { assetsInclude: [DB_PATH], - plugins: [dbPlugin, vitePluginInjectEnvTs(config, logger)], + plugins: [dbPlugin], }, }); }, - 'astro:config:done': async ({ config }) => { + 'astro:config:done': async ({ config, injectTypes }) => { if (command === 'preview') return; // TODO: refine where we load tables @@ -122,7 +121,10 @@ function astroDBIntegration(): AstroIntegration { await writeFile(localDbUrl, ''); } - await typegenInternal({ tables: tables.get() ?? {}, root: config.root }); + injectTypes({ + filename: 'db.d.ts', + content: getDtsContent(tables.get() ?? {}), + }); }, 'astro:server:setup': async ({ server, logger }) => { seedHandler.execute = async (fileUrl) => { diff --git a/packages/db/src/core/integration/typegen.ts b/packages/db/src/core/integration/typegen.ts index 725738fc5a..91364b3c3d 100644 --- a/packages/db/src/core/integration/typegen.ts +++ b/packages/db/src/core/integration/typegen.ts @@ -1,18 +1,7 @@ -import { existsSync } from 'node:fs'; -import { mkdir, writeFile } from 'node:fs/promises'; -import type { AstroConfig } from 'astro'; -import { DB_TYPES_FILE, RUNTIME_IMPORT } from '../consts.js'; -import { resolveDbConfig } from '../load-file.js'; +import { RUNTIME_IMPORT } from '../consts.js'; import type { DBTable, DBTables } from '../types.js'; -// Exported for use in Astro core CLI -export async function typegen(astroConfig: Pick) { - const { dbConfig } = await resolveDbConfig(astroConfig); - - await typegenInternal({ tables: dbConfig.tables, root: astroConfig.root }); -} - -export async function typegenInternal({ tables, root }: { tables: DBTables; root: URL }) { +export function getDtsContent(tables: DBTables) { const content = `// This file is generated by Astro DB declare module 'astro:db' { ${Object.entries(tables) @@ -20,14 +9,7 @@ ${Object.entries(tables) .join('\n')} } `; - - const dotAstroDir = new URL('.astro/', root); - - if (!existsSync(dotAstroDir)) { - await mkdir(dotAstroDir); - } - - await writeFile(new URL(DB_TYPES_FILE, dotAstroDir), content); + return content; } function generateTableType(name: string, table: DBTable): string { diff --git a/packages/db/src/core/integration/vite-plugin-inject-env-ts.ts b/packages/db/src/core/integration/vite-plugin-inject-env-ts.ts deleted file mode 100644 index 14257d480f..0000000000 --- a/packages/db/src/core/integration/vite-plugin-inject-env-ts.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { existsSync } from 'node:fs'; -import { readFile, writeFile } from 'node:fs/promises'; -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; -import type { AstroIntegrationLogger } from 'astro'; -import { bold } from 'kleur/colors'; -import { normalizePath } from 'vite'; -import { DB_TYPES_FILE } from '../consts.js'; -import type { VitePlugin } from '../utils.js'; - -export function vitePluginInjectEnvTs( - { srcDir, root }: { srcDir: URL; root: URL }, - logger: AstroIntegrationLogger, -): VitePlugin { - return { - name: 'db-inject-env-ts', - enforce: 'post', - async config() { - await setUpEnvTs({ srcDir, root, logger }); - }, - }; -} - -export async function setUpEnvTs({ - srcDir, - root, - logger, -}: { - srcDir: URL; - root: URL; - logger: AstroIntegrationLogger; -}) { - const envTsPath = getEnvTsPath({ srcDir }); - const envTsPathRelativetoRoot = normalizePath( - path.relative(fileURLToPath(root), fileURLToPath(envTsPath)), - ); - - if (existsSync(envTsPath)) { - let typesEnvContents = await readFile(envTsPath, 'utf-8'); - const dotAstroDir = new URL('.astro/', root); - - if (!existsSync(dotAstroDir)) return; - - const dbTypeReference = getDBTypeReference({ srcDir, dotAstroDir }); - - if (!typesEnvContents.includes(dbTypeReference)) { - typesEnvContents = `${dbTypeReference}\n${typesEnvContents}`; - await writeFile(envTsPath, typesEnvContents, 'utf-8'); - logger.info(`Added ${bold(envTsPathRelativetoRoot)} types`); - } - } -} - -function getDBTypeReference({ srcDir, dotAstroDir }: { srcDir: URL; dotAstroDir: URL }) { - const dbTypesFile = new URL(DB_TYPES_FILE, dotAstroDir); - const contentTypesRelativeToSrcDir = normalizePath( - path.relative(fileURLToPath(srcDir), fileURLToPath(dbTypesFile)), - ); - - return `/// `; -} - -function getEnvTsPath({ srcDir }: { srcDir: URL }) { - return new URL('env.d.ts', srcDir); -} diff --git a/packages/db/src/index.ts b/packages/db/src/index.ts index b265071304..f7022a24a2 100644 --- a/packages/db/src/index.ts +++ b/packages/db/src/index.ts @@ -1,4 +1,3 @@ export type { TableConfig } from './core/types.js'; export { cli } from './core/cli/index.js'; export { integration as default } from './core/integration/index.js'; -export { typegen } from './core/integration/typegen.js'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 58191b539a..01db0912ed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -93,6 +93,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: @@ -585,6 +588,9 @@ importers: '@oslojs/encoding': specifier: ^0.4.1 version: 0.4.1 + '@rollup/pluginutils': + specifier: ^5.1.0 + version: 5.1.0(rollup@4.20.0) '@types/babel__core': specifier: ^7.20.5 version: 7.20.5 @@ -675,9 +681,15 @@ importers: magic-string: specifier: ^0.30.11 version: 0.30.11 + micromatch: + specifier: ^4.0.7 + version: 4.0.7 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 @@ -729,12 +741,18 @@ importers: which-pm: specifier: ^3.0.0 version: 3.0.0 + xxhash-wasm: + specifier: ^1.0.2 + version: 1.0.2 zod: specifier: ^3.23.8 version: 3.23.8 zod-to-json-schema: specifier: ^3.23.2 version: 3.23.2(zod@3.23.8) + zod-to-ts: + specifier: ^1.2.0 + version: 1.2.0(typescript@5.5.4)(zod@3.23.8) optionalDependencies: sharp: specifier: ^0.33.3 @@ -785,6 +803,9 @@ importers: '@types/js-yaml': specifier: ^4.0.9 version: 4.0.9 + '@types/micromatch': + specifier: ^4.0.9 + version: 4.0.9 '@types/prompts': specifier: ^2.4.9 version: 2.4.9 @@ -2683,6 +2704,51 @@ importers: specifier: workspace:* version: link:../../.. + packages/astro/test/fixtures/content-intellisense: + dependencies: + '@astrojs/markdoc': + specifier: workspace:* + version: link:../../../../integrations/markdoc + '@astrojs/mdx': + specifier: workspace:* + version: link:../../../../integrations/mdx + astro: + 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-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': + specifier: workspace:* + version: link:../../../../integrations/mdx + astro: + specifier: workspace:* + version: link:../../.. + packages/astro/test/fixtures/content-mixed-errors: dependencies: astro: @@ -6077,6 +6143,10 @@ packages: resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.24.7': + resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} + engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.24.8': resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} engines: {node: '>=6.9.0'} @@ -6193,6 +6263,10 @@ packages: resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} engines: {node: '>=6.9.0'} + '@babel/template@7.24.7': + resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} + engines: {node: '>=6.9.0'} + '@babel/template@7.25.0': resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} @@ -6744,6 +6818,10 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/regexpp@4.10.0': + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint-community/regexpp@4.11.0': resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -6915,6 +6993,9 @@ packages: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} @@ -7340,6 +7421,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==} @@ -7427,6 +7511,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==} @@ -7748,6 +7835,11 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn@8.12.0: + resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} + engines: {node: '>=0.4.0'} + hasBin: true + acorn@8.12.1: resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} @@ -7883,6 +7975,9 @@ packages: peerDependencies: postcss: ^8.1.0 + axobject-query@4.0.0: + resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} + axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -7958,6 +8053,15 @@ 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.1: + resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + browserslist@4.23.3: resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -8001,8 +8105,11 @@ packages: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} - caniuse-lite@1.0.30001647: - resolution: {integrity: sha512-n83xdNiyeNcHpzWY+1aFbqCK7LuLfBricc4+alSQL2Xb6OR3XpnQAmlDG+pQcdTfiHRuLcQ96VOfrPSGiNJYSg==} + caniuse-lite@1.0.30001639: + resolution: {integrity: sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg==} + + caniuse-lite@1.0.30001649: + resolution: {integrity: sha512-fJegqZZ0ZX8HOWr6rcafGr72+xcgJKI9oWfDW5DrD7ExUtgZC7a7R7ZYmZqplh7XDocFdGeIFn7roAxhOeYrPQ==} canvas-confetti@1.9.3: resolution: {integrity: sha512-rFfTURMvmVEX1gyXFgn5QMn81bYk70qa0HLzcIOSVEyl57n6o9ItHeBtUSWdvKAPY0xlvBHno4/v3QPrT83q9g==} @@ -8529,6 +8636,9 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + electron-to-chromium@1.4.816: + resolution: {integrity: sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==} + electron-to-chromium@1.5.4: resolution: {integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==} @@ -8767,6 +8877,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'} @@ -9468,6 +9582,9 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true + magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + magic-string@0.30.11: resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} @@ -9710,8 +9827,8 @@ packages: micromark@4.0.0: resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} engines: {node: '>=8.6'} mime-db@1.52.0: @@ -9829,6 +9946,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==} @@ -9869,6 +9990,9 @@ packages: resolution: {integrity: sha512-X/GpUpNNiPDYUeUD183W8V4OW6OHYWI29w/QDyb+c/GzOfVEAlo6HjbW9++eXT2aV2lGg+uS+XqTD2q0pNREQA==} engines: {node: '>=14'} + node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} @@ -10098,6 +10222,9 @@ packages: periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} @@ -10336,8 +10463,8 @@ packages: preact@10.23.1: resolution: {integrity: sha512-O5UdRsNh4vdZaTieWe3XOgSpdMAmkIYBCT3VhQDlKrzyCm8lUYsk0fmVEvoQQifoOjFRTaHZO69ylrzTW2BH+A==} - preferred-pm@3.1.4: - resolution: {integrity: sha512-lEHd+yEm22jXdCphDrkvIJQU66EuLojPPtvZkpKIkiD+l0DMThF/niqZKJSoU8Vl7iuvtmzyMhir9LdVy5WMnA==} + preferred-pm@3.1.3: + resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} engines: {node: '>=10'} preferred-pm@4.0.0: @@ -10664,6 +10791,11 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true + semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + engines: {node: '>=10'} + hasBin: true + semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} @@ -11193,6 +11325,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==} @@ -11266,6 +11401,12 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} + update-browserslist-db@1.0.16: + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + update-browserslist-db@1.1.0: resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} hasBin: true @@ -11561,8 +11702,8 @@ packages: resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} engines: {node: '>=4'} - which-pm@2.2.0: - resolution: {integrity: sha512-MOiaDbA5ZZgUjkeMWM5EkJp4loW5ZRoa5bc3/aeMox/PJelMhE6t7S/mLuiY43DBupyxH+S0U1bTui9kWUlmsw==} + which-pm@2.0.0: + resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} engines: {node: '>=8.15'} which-pm@3.0.0: @@ -11635,6 +11776,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'} @@ -11678,6 +11822,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==} @@ -11826,7 +11976,7 @@ snapshots: dependencies: '@babel/compat-data': 7.25.2 '@babel/helper-validator-option': 7.24.8 - browserslist: 4.23.3 + browserslist: 4.23.1 lru-cache: 5.1.1 semver: 6.3.1 @@ -11851,7 +12001,7 @@ snapshots: '@babel/helper-function-name@7.24.7': dependencies: - '@babel/template': 7.25.0 + '@babel/template': 7.24.7 '@babel/types': 7.25.2 '@babel/helper-member-expression-to-functions@7.24.7': @@ -11890,6 +12040,8 @@ snapshots: dependencies: '@babel/types': 7.25.2 + '@babel/helper-plugin-utils@7.24.7': {} + '@babel/helper-plugin-utils@7.24.8': {} '@babel/helper-replace-supers@7.24.7(@babel/core@7.25.2)': @@ -11945,7 +12097,7 @@ snapshots: dependencies: '@babel/core': 7.25.2 '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-decorators': 7.24.1(@babel/core@7.25.2) transitivePeerDependencies: - supports-color @@ -11953,17 +12105,17 @@ snapshots: '@babel/plugin-syntax-decorators@7.24.1(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': dependencies: @@ -11973,7 +12125,7 @@ snapshots: '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-transform-react-jsx-development@7.24.7(@babel/core@7.25.2)': dependencies: @@ -11985,12 +12137,12 @@ snapshots: '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.25.2)': dependencies: @@ -12008,7 +12160,7 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) transitivePeerDependencies: - supports-color @@ -12017,6 +12169,12 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 + '@babel/template@7.24.7': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + '@babel/template@7.25.0': dependencies: '@babel/code-frame': 7.24.7 @@ -12146,7 +12304,7 @@ snapshots: mri: 1.2.0 outdent: 0.5.0 p-limit: 2.3.0 - preferred-pm: 3.1.4 + preferred-pm: 3.1.3 resolve-from: 5.0.0 semver: 7.6.3 spawndamnit: 2.0.0 @@ -12160,7 +12318,7 @@ snapshots: '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - micromatch: 4.0.5 + micromatch: 4.0.7 '@changesets/errors@0.2.0': dependencies: @@ -12200,7 +12358,7 @@ snapshots: '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 is-subdir: 1.2.0 - micromatch: 4.0.5 + micromatch: 4.0.7 spawndamnit: 2.0.0 '@changesets/logger@0.1.0': @@ -12251,13 +12409,13 @@ snapshots: '@clack/core@0.3.4': dependencies: - picocolors: 1.0.1 + picocolors: 1.0.0 sisteransi: 1.0.5 '@clack/prompts@0.7.0': dependencies: '@clack/core': 0.3.4 - picocolors: 1.0.1 + picocolors: 1.0.0 sisteransi: 1.0.5 '@colors/colors@1.5.0': @@ -12603,6 +12761,8 @@ snapshots: eslint: 9.9.0(jiti@1.21.0) eslint-visitor-keys: 3.4.3 + '@eslint-community/regexpp@4.10.0': {} + '@eslint-community/regexpp@4.11.0': {} '@eslint/config-array@0.17.1': @@ -12732,19 +12892,21 @@ snapshots: '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} + '@jridgewell/sourcemap-codec@1.4.15': {} + '@jridgewell/sourcemap-codec@1.5.0': {} '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.4.15 '@jsdevtools/rehype-toc@3.0.2': {} @@ -13212,6 +13374,8 @@ snapshots: '@types/connect': 3.4.38 '@types/node': 18.19.31 + '@types/braces@3.0.4': {} + '@types/canvas-confetti@1.6.4': {} '@types/clean-css@4.2.11': @@ -13304,6 +13468,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': {} @@ -13511,7 +13679,7 @@ snapshots: estree-walker: 2.0.2 glob: 7.2.3 graceful-fs: 4.2.11 - micromatch: 4.0.5 + micromatch: 4.0.7 node-gyp-build: 4.8.0 resolve-from: 5.0.0 transitivePeerDependencies: @@ -13638,9 +13806,9 @@ snapshots: '@vue/babel-plugin-jsx@1.2.2(@babel/core@7.25.2)': dependencies: '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.7 '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/template': 7.25.0 + '@babel/template': 7.24.7 '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 '@vue/babel-helper-vue-transform-on': 1.2.2 @@ -13658,7 +13826,7 @@ snapshots: '@babel/code-frame': 7.24.7 '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.24.7 '@babel/parser': 7.25.3 '@vue/compiler-sfc': 3.4.37 @@ -13765,6 +13933,8 @@ snapshots: dependencies: acorn: 8.12.1 + acorn@8.12.0: {} + acorn@8.12.1: {} agent-base@6.0.2: @@ -13906,20 +14076,24 @@ snapshots: progress: 2.0.3 reinterval: 1.1.0 retimer: 3.0.0 - semver: 7.6.3 + semver: 7.6.2 subarg: 1.0.0 timestring: 6.0.0 autoprefixer@10.4.20(postcss@8.4.41): dependencies: browserslist: 4.23.3 - caniuse-lite: 1.0.30001647 + caniuse-lite: 1.0.30001649 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.1 postcss: 8.4.41 postcss-value-parser: 4.2.0 + axobject-query@4.0.0: + dependencies: + dequal: 2.0.3 + axobject-query@4.1.0: {} babel-plugin-jsx-dom-expressions@0.37.19(@babel/core@7.25.2): @@ -14011,9 +14185,20 @@ snapshots: dependencies: fill-range: 7.0.1 + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.23.1: + dependencies: + caniuse-lite: 1.0.30001639 + electron-to-chromium: 1.4.816 + node-releases: 2.0.14 + update-browserslist-db: 1.0.16(browserslist@4.23.1) + browserslist@4.23.3: dependencies: - caniuse-lite: 1.0.30001647 + caniuse-lite: 1.0.30001649 electron-to-chromium: 1.5.4 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) @@ -14052,7 +14237,9 @@ snapshots: camelcase@7.0.1: {} - caniuse-lite@1.0.30001647: {} + caniuse-lite@1.0.30001639: {} + + caniuse-lite@1.0.30001649: {} canvas-confetti@1.9.3: {} @@ -14172,7 +14359,7 @@ snapshots: code-red@1.0.4: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.4.15 '@types/estree': 1.0.5 acorn: 8.12.1 estree-walker: 3.0.3 @@ -14449,6 +14636,8 @@ snapshots: ee-first@1.1.1: {} + electron-to-chromium@1.4.816: {} + electron-to-chromium@1.5.4: {} emmet@2.4.7: @@ -14730,7 +14919,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: {} @@ -14761,6 +14950,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 @@ -14787,7 +14980,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: @@ -15603,13 +15796,17 @@ snapshots: lz-string@1.5.0: {} + magic-string@0.30.10: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + magic-string@0.30.11: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 magic-string@0.30.5: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.4.15 make-dir@3.1.0: dependencies: @@ -16133,9 +16330,9 @@ snapshots: transitivePeerDependencies: - supports-color - micromatch@4.0.5: + micromatch@4.0.7: dependencies: - braces: 3.0.2 + braces: 3.0.3 picomatch: 2.3.1 mime-db@1.52.0: {} @@ -16216,6 +16413,8 @@ snapshots: negotiator@0.6.3: {} + neotraverse@0.6.9: {} + nlcst-to-string@4.0.0: dependencies: '@types/nlcst': 2.0.3 @@ -16265,6 +16464,8 @@ snapshots: range-parser: 1.2.1 type-is: 1.6.18 + node-releases@2.0.14: {} + node-releases@2.0.18: {} nopt@5.0.0: @@ -16494,6 +16695,8 @@ snapshots: estree-walker: 3.0.3 is-reference: 3.0.2 + picocolors@1.0.0: {} + picocolors@1.0.1: {} picomatch@2.3.1: {} @@ -16771,12 +16974,12 @@ snapshots: preact@10.23.1: {} - preferred-pm@3.1.4: + preferred-pm@3.1.3: dependencies: find-up: 5.0.0 find-yarn-workspace-root2: 1.2.16 path-exists: 4.0.0 - which-pm: 2.2.0 + which-pm: 2.0.0 preferred-pm@4.0.0: dependencies: @@ -16885,7 +17088,7 @@ snapshots: refa@0.12.1: dependencies: - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/regexpp': 4.10.0 regenerator-runtime@0.13.11: {} @@ -16893,7 +17096,7 @@ snapshots: regexp-ast-analysis@0.7.1: dependencies: - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/regexpp': 4.10.0 refa: 0.12.1 rehype-autolink-headings@7.1.0: @@ -16902,7 +17105,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: @@ -17175,7 +17378,7 @@ snapshots: scslre@0.3.0: dependencies: - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/regexpp': 4.10.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 @@ -17186,6 +17389,8 @@ snapshots: semver@6.3.1: {} + semver@7.6.2: {} + semver@7.6.3: {} send@0.18.0: @@ -17242,7 +17447,7 @@ snapshots: dependencies: color: 4.2.3 detect-libc: 2.0.3 - semver: 7.6.3 + semver: 7.6.2 optionalDependencies: '@img/sharp-darwin-arm64': 0.33.3 '@img/sharp-darwin-x64': 0.33.3 @@ -17507,18 +17712,18 @@ snapshots: svelte@4.2.18: dependencies: '@ampproject/remapping': 2.3.0 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 '@types/estree': 1.0.5 - acorn: 8.12.1 + acorn: 8.12.0 aria-query: 5.3.0 - axobject-query: 4.1.0 + axobject-query: 4.0.0 code-red: 1.0.4 css-tree: 2.3.1 estree-walker: 3.0.3 is-reference: 3.0.2 locate-character: 3.0.0 - magic-string: 0.30.11 + magic-string: 0.30.10 periscopic: 3.1.0 svg-tags@1.0.0: {} @@ -17531,7 +17736,7 @@ snapshots: css-tree: 2.3.1 css-what: 6.1.0 csso: 5.0.5 - picocolors: 1.0.1 + picocolors: 1.0.0 symbol-tree@3.2.4: {} @@ -17547,7 +17752,7 @@ snapshots: is-glob: 4.0.3 jiti: 1.21.0 lilconfig: 2.1.0 - micromatch: 4.0.5 + micromatch: 4.0.7 normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.1 @@ -17748,6 +17953,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.2 + unified@11.0.5: dependencies: '@types/unist': 3.0.2 @@ -17844,6 +18059,12 @@ snapshots: unpipe@1.0.0: {} + update-browserslist-db@1.0.16(browserslist@4.23.1): + dependencies: + browserslist: 4.23.1 + escalade: 3.1.2 + picocolors: 1.0.1 + update-browserslist-db@1.1.0(browserslist@4.23.3): dependencies: browserslist: 4.23.3 @@ -18156,7 +18377,7 @@ snapshots: which-pm-runs@1.1.0: {} - which-pm@2.2.0: + which-pm@2.0.0: dependencies: load-yaml-file: 0.2.0 path-exists: 4.0.0 @@ -18217,6 +18438,8 @@ snapshots: xmldom-sre@0.1.31: {} + xxhash-wasm@1.0.2: {} + y18n@5.0.8: {} yallist@2.1.2: {} @@ -18249,6 +18472,11 @@ snapshots: dependencies: zod: 3.23.8 + zod-to-ts@1.2.0(typescript@5.5.4)(zod@3.23.8): + dependencies: + typescript: 5.5.4 + zod: 3.23.8 + zod@3.23.8: {} zwitch@2.0.4: {}

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