From 2f4d627815d93ae8c10db747dc6cbf1dd9130cd6 Mon Sep 17 00:00:00 2001 From: Bjorn Lu Date: Mon, 22 Apr 2024 21:18:27 +0800 Subject: [PATCH 01/21] Refactor MDX postprocess plugin (#10832) --- packages/integrations/mdx/src/index.ts | 74 +---------- packages/integrations/mdx/src/utils.ts | 2 +- .../mdx/src/vite-plugin-mdx-postprocess.ts | 115 ++++++++++++++++++ 3 files changed, 118 insertions(+), 73 deletions(-) create mode 100644 packages/integrations/mdx/src/vite-plugin-mdx-postprocess.ts diff --git a/packages/integrations/mdx/src/index.ts b/packages/integrations/mdx/src/index.ts index db7f641345..e48d0d8f19 100644 --- a/packages/integrations/mdx/src/index.ts +++ b/packages/integrations/mdx/src/index.ts @@ -3,19 +3,14 @@ import { fileURLToPath } from 'node:url'; import { markdownConfigDefaults, setVfileFrontmatter } from '@astrojs/markdown-remark'; import type { AstroIntegration, ContentEntryType, HookParameters, SSRError } from 'astro'; import astroJSXRenderer from 'astro/jsx/renderer.js'; -import { parse as parseESM } from 'es-module-lexer'; import type { Options as RemarkRehypeOptions } from 'remark-rehype'; import type { PluggableList } from 'unified'; import { VFile } from 'vfile'; import type { Plugin as VitePlugin } from 'vite'; import { createMdxProcessor } from './plugins.js'; import type { OptimizeOptions } from './rehype-optimize-static.js'; -import { - ASTRO_IMAGE_ELEMENT, - ASTRO_IMAGE_IMPORT, - USES_ASTRO_IMAGE_FLAG, -} from './remark-images-to-component.js'; import { getFileInfo, ignoreStringPlugins, parseFrontmatter } from './utils.js'; +import { vitePluginMdxPostprocess } from './vite-plugin-mdx-postprocess.js'; export type MdxOptions = Omit & { extendMarkdownConfig: boolean; @@ -157,72 +152,7 @@ export default function mdx(partialMdxOptions: Partial = {}): AstroI } }, }, - { - name: '@astrojs/mdx-postprocess', - // These transforms must happen *after* JSX runtime transformations - transform(code, id) { - if (!id.endsWith('.mdx')) return; - - const [moduleImports, moduleExports] = parseESM(code); - - // Fragment import should already be injected, but check just to be safe. - const importsFromJSXRuntime = moduleImports - .filter(({ n }) => n === 'astro/jsx-runtime') - .map(({ ss, se }) => code.substring(ss, se)); - const hasFragmentImport = importsFromJSXRuntime.some((statement) => - /[\s,{](?:Fragment,|Fragment\s*\})/.test(statement) - ); - if (!hasFragmentImport) { - code = 'import { Fragment } from "astro/jsx-runtime"\n' + code; - } - - const { fileUrl, fileId } = getFileInfo(id, config); - if (!moduleExports.find(({ n }) => n === 'url')) { - code += `\nexport const url = ${JSON.stringify(fileUrl)};`; - } - if (!moduleExports.find(({ n }) => n === 'file')) { - code += `\nexport const file = ${JSON.stringify(fileId)};`; - } - if (!moduleExports.find(({ n }) => n === 'Content')) { - // If have `export const components`, pass that as props to `Content` as fallback - const hasComponents = moduleExports.find(({ n }) => n === 'components'); - const usesAstroImage = moduleExports.find( - ({ n }) => n === USES_ASTRO_IMAGE_FLAG - ); - - let componentsCode = `{ Fragment${ - hasComponents ? ', ...components' : '' - }, ...props.components,`; - if (usesAstroImage) { - componentsCode += ` ${JSON.stringify(ASTRO_IMAGE_ELEMENT)}: ${ - hasComponents ? 'components.img ?? ' : '' - } props.components?.img ?? ${ASTRO_IMAGE_IMPORT}`; - } - componentsCode += ' }'; - - // Make `Content` the default export so we can wrap `MDXContent` and pass in `Fragment` - code = code.replace( - 'export default function MDXContent', - 'function MDXContent' - ); - code += `\nexport const Content = (props = {}) => MDXContent({ - ...props, - components: ${componentsCode}, - }); - export default Content;`; - } - - // mark the component as an MDX component - code += `\nContent[Symbol.for('mdx-component')] = true`; - - // Ensures styles and scripts are injected into a `` - // When a layout is not applied - code += `\nContent[Symbol.for('astro.needsHeadRendering')] = !Boolean(frontmatter.layout);`; - code += `\nContent.moduleId = ${JSON.stringify(id)};`; - - return { code, map: null }; - }, - }, + vitePluginMdxPostprocess(config), ] as VitePlugin[], }, }); diff --git a/packages/integrations/mdx/src/utils.ts b/packages/integrations/mdx/src/utils.ts index 199929dc87..9adf3586f4 100644 --- a/packages/integrations/mdx/src/utils.ts +++ b/packages/integrations/mdx/src/utils.ts @@ -10,7 +10,7 @@ function appendForwardSlash(path: string) { return path.endsWith('/') ? path : path + '/'; } -interface FileInfo { +export interface FileInfo { fileId: string; fileUrl: string; } diff --git a/packages/integrations/mdx/src/vite-plugin-mdx-postprocess.ts b/packages/integrations/mdx/src/vite-plugin-mdx-postprocess.ts new file mode 100644 index 0000000000..c60504be6c --- /dev/null +++ b/packages/integrations/mdx/src/vite-plugin-mdx-postprocess.ts @@ -0,0 +1,115 @@ +import type { AstroConfig } from 'astro'; +import { type ExportSpecifier, type ImportSpecifier, parse } from 'es-module-lexer'; +import type { Plugin } from 'vite'; +import { + ASTRO_IMAGE_ELEMENT, + ASTRO_IMAGE_IMPORT, + USES_ASTRO_IMAGE_FLAG, +} from './remark-images-to-component.js'; +import { type FileInfo, getFileInfo } from './utils.js'; + +// These transforms must happen *after* JSX runtime transformations +export function vitePluginMdxPostprocess(astroConfig: AstroConfig): Plugin { + return { + name: '@astrojs/mdx-postprocess', + transform(code, id) { + if (!id.endsWith('.mdx')) return; + + const fileInfo = getFileInfo(id, astroConfig); + const [imports, exports] = parse(code); + + // Call a series of functions that transform the code + code = injectFragmentImport(code, imports); + code = injectMetadataExports(code, exports, fileInfo); + code = transformContentExport(code, exports); + code = annotateContentExport(code, id); + + // The code transformations above are append-only, so the line/column mappings are the same + // and we can omit the sourcemap for performance. + return { code, map: null }; + }, + }; +} + +const fragmentImportRegex = /[\s,{](?:Fragment,|Fragment\s*\})/; + +/** + * Inject `Fragment` identifier import if not already present. It should already be injected, + * but check just to be safe. + * + * TODO: Double-check if we no longer need this function. + */ +function injectFragmentImport(code: string, imports: readonly ImportSpecifier[]) { + const importsFromJSXRuntime = imports + .filter(({ n }) => n === 'astro/jsx-runtime') + .map(({ ss, se }) => code.substring(ss, se)); + const hasFragmentImport = importsFromJSXRuntime.some((statement) => + fragmentImportRegex.test(statement) + ); + if (!hasFragmentImport) { + code = `import { Fragment } from "astro/jsx-runtime"\n` + code; + } + return code; +} + +/** + * Inject MDX metadata as exports of the module. + */ +function injectMetadataExports( + code: string, + exports: readonly ExportSpecifier[], + fileInfo: FileInfo +) { + if (!exports.some(({ n }) => n === 'url')) { + code += `\nexport const url = ${JSON.stringify(fileInfo.fileUrl)};`; + } + if (!exports.some(({ n }) => n === 'file')) { + code += `\nexport const file = ${JSON.stringify(fileInfo.fileId)};`; + } + return code; +} + +/** + * Transforms the `MDXContent` default export as `Content`, which wraps `MDXContent` and + * passes additional `components` props. + */ +function transformContentExport(code: string, exports: readonly ExportSpecifier[]) { + if (exports.find(({ n }) => n === 'Content')) return code; + + // If have `export const components`, pass that as props to `Content` as fallback + const hasComponents = exports.find(({ n }) => n === 'components'); + const usesAstroImage = exports.find(({ n }) => n === USES_ASTRO_IMAGE_FLAG); + + // Generate code for the `components` prop passed to `MDXContent` + let componentsCode = `{ Fragment${hasComponents ? ', ...components' : ''}, ...props.components,`; + if (usesAstroImage) { + componentsCode += ` ${JSON.stringify(ASTRO_IMAGE_ELEMENT)}: ${ + hasComponents ? 'components.img ?? ' : '' + } props.components?.img ?? ${ASTRO_IMAGE_IMPORT}`; + } + componentsCode += ' }'; + + // Make `Content` the default export so we can wrap `MDXContent` and pass in `Fragment` + code = code.replace('export default function MDXContent', 'function MDXContent'); + code += ` +export const Content = (props = {}) => MDXContent({ + ...props, + components: ${componentsCode}, +}); +export default Content;`; + return code; +} + +/** + * Add properties to the `Content` export. + */ +function annotateContentExport(code: string, id: string) { + // Mark `Content` as MDX component + code += `\nContent[Symbol.for('mdx-component')] = true`; + // Ensure styles and scripts are injected into a `` when a layout is not applied + code += `\nContent[Symbol.for('astro.needsHeadRendering')] = !Boolean(frontmatter.layout);`; + // Assign the `moduleId` metadata to `Content` + code += `\nContent.moduleId = ${JSON.stringify(id)};`; + + return code; +} From 8d5f3e8656027023f9fda51c66b0213ffe16d3a5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 22:52:30 +0800 Subject: [PATCH 02/21] chore(deps): update all non-major dependencies (#10833) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: bluwy --- .changeset/bright-chefs-develop.md | 5 + .changeset/thick-wasps-know.md | 7 + .changeset/wet-apples-accept.md | 5 + .github/renovate.json5 | 1 + .github/workflows/snapshot-release.yml | 2 +- benchmark/package.json | 2 +- examples/with-vitest/package.json | 2 +- package.json | 34 +- packages/astro-rss/package.json | 2 +- packages/astro/e2e/astro-envs.test.js | 8 + .../e2e/fixtures/astro-component/package.json | 2 +- .../e2e/fixtures/astro-envs/package.json | 2 +- .../e2e/fixtures/client-only/package.json | 12 +- .../custom-client-directives/package.json | 4 +- .../e2e/fixtures/dev-toolbar/package.json | 2 +- .../e2e/fixtures/error-cyclic/package.json | 2 +- .../e2e/fixtures/error-sass/package.json | 2 +- .../astro/e2e/fixtures/errors/package.json | 14 +- packages/astro/e2e/fixtures/hmr/package.json | 2 +- .../e2e/fixtures/hydration-race/package.json | 2 +- .../e2e/fixtures/lit-component/package.json | 2 +- .../lit-component/src/components/Counter.js | 6 +- .../src/components/NonDeferredCounter.js | 5 +- .../fixtures/multiple-frameworks/package.json | 14 +- .../namespaced-component/package.json | 2 +- .../fixtures/nested-in-preact/package.json | 12 +- .../e2e/fixtures/nested-in-react/package.json | 12 +- .../e2e/fixtures/nested-in-solid/package.json | 12 +- .../fixtures/nested-in-svelte/package.json | 12 +- .../e2e/fixtures/nested-in-vue/package.json | 12 +- .../fixtures/nested-recursive/package.json | 12 +- .../astro/e2e/fixtures/pass-js/package.json | 4 +- .../preact-compat-component/package.json | 2 +- .../fixtures/preact-component/package.json | 2 +- .../preact-lazy-component/package.json | 2 +- .../e2e/fixtures/react-component/package.json | 4 +- .../e2e/fixtures/solid-circular/package.json | 2 +- .../e2e/fixtures/solid-component/package.json | 2 +- .../e2e/fixtures/solid-recurse/package.json | 2 +- .../fixtures/svelte-component/package.json | 2 +- .../e2e/fixtures/tailwindcss/package.json | 6 +- .../e2e/fixtures/ts-resolution/package.json | 4 +- .../fixtures/view-transitions/package.json | 8 +- .../e2e/fixtures/vue-component/package.json | 2 +- packages/astro/e2e/lit-component.test.js | 39 +- packages/astro/e2e/nested-styles.test.js | 15 +- packages/astro/e2e/ts-resolution.test.js | 16 +- packages/astro/package.json | 85 +- .../performance/fixtures/md/package.json | 8 +- .../performance/fixtures/mdoc/package.json | 8 +- .../performance/fixtures/mdx/package.json | 8 +- packages/astro/src/content/utils.ts | 2 +- packages/create-astro/package.json | 2 +- packages/db/package.json | 22 +- packages/integrations/alpinejs/package.json | 4 +- packages/integrations/lit/package.json | 12 +- packages/integrations/markdoc/package.json | 12 +- packages/integrations/mdx/package.json | 19 +- packages/integrations/node/package.json | 4 +- packages/integrations/partytown/package.json | 2 +- packages/integrations/preact/package.json | 8 +- packages/integrations/react/package.json | 14 +- packages/integrations/sitemap/package.json | 2 +- packages/integrations/solid/package.json | 4 +- packages/integrations/svelte/package.json | 8 +- packages/integrations/tailwind/package.json | 8 +- packages/integrations/vercel/package.json | 8 +- packages/integrations/vue/package.json | 8 +- packages/markdown/remark/package.json | 15 +- packages/telemetry/package.json | 2 +- packages/upgrade/package.json | 8 +- pnpm-lock.yaml | 1660 ++++++++--------- scripts/package.json | 12 +- 73 files changed, 1078 insertions(+), 1192 deletions(-) create mode 100644 .changeset/bright-chefs-develop.md create mode 100644 .changeset/thick-wasps-know.md create mode 100644 .changeset/wet-apples-accept.md diff --git a/.changeset/bright-chefs-develop.md b/.changeset/bright-chefs-develop.md new file mode 100644 index 0000000000..b0078e085d --- /dev/null +++ b/.changeset/bright-chefs-develop.md @@ -0,0 +1,5 @@ +--- +"@astrojs/markdoc": minor +--- + +Updates `@markdoc/markdoc` to v0.4 diff --git a/.changeset/thick-wasps-know.md b/.changeset/thick-wasps-know.md new file mode 100644 index 0000000000..855a9c7b72 --- /dev/null +++ b/.changeset/thick-wasps-know.md @@ -0,0 +1,7 @@ +--- +"@astrojs/markdoc": patch +"@astrojs/vercel": patch +"astro": patch +--- + +Updates `esbuild` dependency to v0.20. This should not affect projects in most cases. diff --git a/.changeset/wet-apples-accept.md b/.changeset/wet-apples-accept.md new file mode 100644 index 0000000000..97420fbf33 --- /dev/null +++ b/.changeset/wet-apples-accept.md @@ -0,0 +1,5 @@ +--- +"@astrojs/partytown": minor +--- + +Updates the `@builder.io/partytown` dependency to v0.10. This should not affect projects in most cases. diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 9e2a0a36e2..9a93502be5 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -12,6 +12,7 @@ // manually bumping deps "@biomejs/biome", "@types/node", + "preact-render-to-string", // https://github.com/withastro/astro/pull/10200 "sharp", // manually bumping workflow actions diff --git a/.github/workflows/snapshot-release.yml b/.github/workflows/snapshot-release.yml index 88eadac314..b067394e46 100644 --- a/.github/workflows/snapshot-release.yml +++ b/.github/workflows/snapshot-release.yml @@ -26,7 +26,7 @@ jobs: pull-requests: write steps: - name: "Check if user has admin access (only admins can publish snapshot releases)." - uses: "lannonbr/repo-permission-check-action@2.0.0" + uses: "lannonbr/repo-permission-check-action@2.0.2" with: permission: "admin" env: diff --git a/benchmark/package.json b/benchmark/package.json index 55848222ed..5f7206242b 100644 --- a/benchmark/package.json +++ b/benchmark/package.json @@ -11,7 +11,7 @@ "@astrojs/node": "workspace:*", "@benchmark/timer": "workspace:*", "astro": "workspace:*", - "autocannon": "^7.12.0", + "autocannon": "^7.15.0", "execa": "^8.0.1", "markdown-table": "^3.0.3", "mri": "^1.2.0", diff --git a/examples/with-vitest/package.json b/examples/with-vitest/package.json index 34b915f6ae..989f1a301a 100644 --- a/examples/with-vitest/package.json +++ b/examples/with-vitest/package.json @@ -13,6 +13,6 @@ }, "dependencies": { "astro": "^4.6.3", - "vitest": "^1.3.1" + "vitest": "^1.5.0" } } diff --git a/package.json b/package.json index 3463e19c3e..9443b3e623 100644 --- a/package.json +++ b/package.json @@ -30,8 +30,8 @@ "test:smoke:docs": "turbo run build --filter=docs", "test:check-examples": "node ./scripts/smoke/check.js", "test:vite-ci": "turbo run test --filter=astro", - "test:e2e": "cd packages/astro && pnpm playwright install && pnpm run test:e2e", - "test:e2e:match": "cd packages/astro && pnpm playwright install && pnpm run test:e2e:match", + "test:e2e": "cd packages/astro && pnpm playwright install chromium && pnpm run test:e2e", + "test:e2e:match": "cd packages/astro && pnpm playwright install chromium && pnpm run test:e2e:match", "test:e2e:hosts": "turbo run test:hosted", "benchmark": "astro-benchmark", "lint": "eslint . --report-unused-disable-directives", @@ -52,27 +52,27 @@ "astro-benchmark": "workspace:*" }, "devDependencies": { - "@astrojs/check": "^0.5.8", + "@astrojs/check": "^0.5.10", "@biomejs/biome": "1.6.4", - "@changesets/changelog-github": "^0.4.8", - "@changesets/cli": "^2.26.2", + "@changesets/changelog-github": "^0.5.0", + "@changesets/cli": "^2.27.1", "@eslint/eslintrc": "^3.0.2", "@types/node": "^18.17.8", - "esbuild": "^0.19.6", - "eslint": "^9.0.0", - "eslint-config-prettier": "^9.0.0", + "esbuild": "^0.20.2", + "eslint": "^9.1.0", + "eslint-config-prettier": "^9.1.0", "eslint-plugin-no-only-tests": "^3.1.0", - "eslint-plugin-prettier": "^5.0.0", - "eslint-plugin-regexp": "^2.2.0", - "globby": "^14.0.0", - "only-allow": "^1.1.1", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-regexp": "^2.5.0", + "globby": "^14.0.1", + "only-allow": "^1.2.1", "organize-imports-cli": "^0.10.0", - "prettier": "^3.1.0", - "prettier-plugin-astro": "^0.12.2", + "prettier": "^3.2.5", + "prettier-plugin-astro": "^0.13.0", "tiny-glob": "^0.2.9", - "turbo": "^1.12.4", - "typescript": "~5.2.2", - "typescript-eslint": "^7.6.0" + "turbo": "^1.13.2", + "typescript": "~5.4.5", + "typescript-eslint": "^7.7.0" }, "pnpm": { "packageExtensions": { diff --git a/packages/astro-rss/package.json b/packages/astro-rss/package.json index 9c953f6405..0a85f99c61 100644 --- a/packages/astro-rss/package.json +++ b/packages/astro-rss/package.json @@ -33,7 +33,7 @@ "xml2js": "0.6.2" }, "dependencies": { - "fast-xml-parser": "^4.2.7", + "fast-xml-parser": "^4.3.6", "kleur": "^4.1.5" } } diff --git a/packages/astro/e2e/astro-envs.test.js b/packages/astro/e2e/astro-envs.test.js index cf8a1d3042..668510e3d0 100644 --- a/packages/astro/e2e/astro-envs.test.js +++ b/packages/astro/e2e/astro-envs.test.js @@ -6,6 +6,14 @@ const test = testFactory({ devToolbar: { enabled: false, }, + vite: { + optimizeDeps: { + // Vite has a bug where if you close the server too quickly, while the optimized + // dependencies are still held before serving, it will stall the server from closing. + // This will workaround it for now. + holdUntilCrawlEnd: false, + }, + }, }); let devServer; diff --git a/packages/astro/e2e/fixtures/astro-component/package.json b/packages/astro/e2e/fixtures/astro-component/package.json index b02f5b90c8..3a84058b73 100644 --- a/packages/astro/e2e/fixtures/astro-component/package.json +++ b/packages/astro/e2e/fixtures/astro-component/package.json @@ -6,6 +6,6 @@ "@astrojs/preact": "workspace:*", "@e2e/astro-linked-lib": "link:../_deps/astro-linked-lib", "astro": "workspace:*", - "preact": "^10.19.2" + "preact": "^10.20.2" } } diff --git a/packages/astro/e2e/fixtures/astro-envs/package.json b/packages/astro/e2e/fixtures/astro-envs/package.json index ac0cd9afa5..6e07d8cf5e 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.3.8" + "vue": "^3.4.23" } } diff --git a/packages/astro/e2e/fixtures/client-only/package.json b/packages/astro/e2e/fixtures/client-only/package.json index 938d673925..078c317198 100644 --- a/packages/astro/e2e/fixtures/client-only/package.json +++ b/packages/astro/e2e/fixtures/client-only/package.json @@ -11,11 +11,11 @@ "astro": "workspace:*" }, "dependencies": { - "preact": "^10.19.2", - "react": "^18.1.0", - "react-dom": "^18.1.0", - "solid-js": "^1.8.5", - "svelte": "^4.2.5", - "vue": "^3.3.8" + "preact": "^10.20.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "solid-js": "^1.8.16", + "svelte": "^4.2.15", + "vue": "^3.4.23" } } diff --git a/packages/astro/e2e/fixtures/custom-client-directives/package.json b/packages/astro/e2e/fixtures/custom-client-directives/package.json index ee1d8ec533..6325e8f648 100644 --- a/packages/astro/e2e/fixtures/custom-client-directives/package.json +++ b/packages/astro/e2e/fixtures/custom-client-directives/package.json @@ -5,7 +5,7 @@ "dependencies": { "@astrojs/react": "workspace:*", "astro": "workspace:*", - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.2.0", + "react-dom": "^18.2.0" } } diff --git a/packages/astro/e2e/fixtures/dev-toolbar/package.json b/packages/astro/e2e/fixtures/dev-toolbar/package.json index 611f6aae4e..27b9580390 100644 --- a/packages/astro/e2e/fixtures/dev-toolbar/package.json +++ b/packages/astro/e2e/fixtures/dev-toolbar/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.19.2" + "preact": "^10.20.2" } } diff --git a/packages/astro/e2e/fixtures/error-cyclic/package.json b/packages/astro/e2e/fixtures/error-cyclic/package.json index f63c95a376..0a4692fd3d 100644 --- a/packages/astro/e2e/fixtures/error-cyclic/package.json +++ b/packages/astro/e2e/fixtures/error-cyclic/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.19.2" + "preact": "^10.20.2" } } diff --git a/packages/astro/e2e/fixtures/error-sass/package.json b/packages/astro/e2e/fixtures/error-sass/package.json index 7f92d3b5ac..e63ab6350b 100644 --- a/packages/astro/e2e/fixtures/error-sass/package.json +++ b/packages/astro/e2e/fixtures/error-sass/package.json @@ -4,6 +4,6 @@ "private": true, "dependencies": { "astro": "workspace:*", - "sass": "^1.69.5" + "sass": "^1.75.0" } } diff --git a/packages/astro/e2e/fixtures/errors/package.json b/packages/astro/e2e/fixtures/errors/package.json index 7d93b83549..68a1ad0732 100644 --- a/packages/astro/e2e/fixtures/errors/package.json +++ b/packages/astro/e2e/fixtures/errors/package.json @@ -9,12 +9,12 @@ "@astrojs/svelte": "workspace:*", "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "preact": "^10.19.2", - "react": "^18.1.0", - "react-dom": "^18.1.0", - "sass": "^1.69.5", - "solid-js": "^1.8.5", - "svelte": "^4.2.5", - "vue": "^3.3.8" + "preact": "^10.20.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.75.0", + "solid-js": "^1.8.16", + "svelte": "^4.2.15", + "vue": "^3.4.23" } } diff --git a/packages/astro/e2e/fixtures/hmr/package.json b/packages/astro/e2e/fixtures/hmr/package.json index 6e102c9976..89e82c1eaf 100644 --- a/packages/astro/e2e/fixtures/hmr/package.json +++ b/packages/astro/e2e/fixtures/hmr/package.json @@ -4,6 +4,6 @@ "private": true, "devDependencies": { "astro": "workspace:*", - "sass": "^1.69.5" + "sass": "^1.75.0" } } diff --git a/packages/astro/e2e/fixtures/hydration-race/package.json b/packages/astro/e2e/fixtures/hydration-race/package.json index 580c6721da..26b76daed4 100644 --- a/packages/astro/e2e/fixtures/hydration-race/package.json +++ b/packages/astro/e2e/fixtures/hydration-race/package.json @@ -9,6 +9,6 @@ "dependencies": { "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.19.2" + "preact": "^10.20.2" } } diff --git a/packages/astro/e2e/fixtures/lit-component/package.json b/packages/astro/e2e/fixtures/lit-component/package.json index ca278c082a..5734a946f6 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.0" + "lit": "^3.1.3" } } diff --git a/packages/astro/e2e/fixtures/lit-component/src/components/Counter.js b/packages/astro/e2e/fixtures/lit-component/src/components/Counter.js index 72843f8efc..1ccd020ed4 100644 --- a/packages/astro/e2e/fixtures/lit-component/src/components/Counter.js +++ b/packages/astro/e2e/fixtures/lit-component/src/components/Counter.js @@ -31,4 +31,8 @@ export default class Counter extends LitElement { } } -customElements.define('my-counter', Counter); +// Since this fixture is ran in both dev and build, this could register twice. Wrap with a try..catch for now. +try { + customElements.define('my-counter', Counter); +} catch {} + diff --git a/packages/astro/e2e/fixtures/lit-component/src/components/NonDeferredCounter.js b/packages/astro/e2e/fixtures/lit-component/src/components/NonDeferredCounter.js index 283d4063cc..409d3e9a54 100644 --- a/packages/astro/e2e/fixtures/lit-component/src/components/NonDeferredCounter.js +++ b/packages/astro/e2e/fixtures/lit-component/src/components/NonDeferredCounter.js @@ -32,4 +32,7 @@ export default class NonDeferredCounter extends LitElement { } } -customElements.define('non-deferred-counter', NonDeferredCounter); +// Since this fixture is ran in both dev and build, this could register twice. Wrap with a try..catch for now. +try { + customElements.define('non-deferred-counter', NonDeferredCounter); +} catch {} diff --git a/packages/astro/e2e/fixtures/multiple-frameworks/package.json b/packages/astro/e2e/fixtures/multiple-frameworks/package.json index ebaa1ab7f3..c9f12751cc 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.0", - "preact": "^10.19.2", - "react": "^18.1.0", - "react-dom": "^18.1.0", - "solid-js": "^1.8.5", - "svelte": "^4.2.5", - "vue": "^3.3.8" + "lit": "^3.1.3", + "preact": "^10.20.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "solid-js": "^1.8.16", + "svelte": "^4.2.15", + "vue": "^3.4.23" } } diff --git a/packages/astro/e2e/fixtures/namespaced-component/package.json b/packages/astro/e2e/fixtures/namespaced-component/package.json index a64e3b52a0..5e03aed365 100644 --- a/packages/astro/e2e/fixtures/namespaced-component/package.json +++ b/packages/astro/e2e/fixtures/namespaced-component/package.json @@ -8,6 +8,6 @@ "astro": "workspace:*" }, "dependencies": { - "preact": "^10.19.2" + "preact": "^10.20.2" } } diff --git a/packages/astro/e2e/fixtures/nested-in-preact/package.json b/packages/astro/e2e/fixtures/nested-in-preact/package.json index fcbbd1e2bd..aa1315cd9a 100644 --- a/packages/astro/e2e/fixtures/nested-in-preact/package.json +++ b/packages/astro/e2e/fixtures/nested-in-preact/package.json @@ -11,11 +11,11 @@ "astro": "workspace:*" }, "dependencies": { - "preact": "^10.19.2", - "react": "^18.1.0", - "react-dom": "^18.1.0", - "solid-js": "^1.8.5", - "svelte": "^4.2.5", - "vue": "^3.3.8" + "preact": "^10.20.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "solid-js": "^1.8.16", + "svelte": "^4.2.15", + "vue": "^3.4.23" } } diff --git a/packages/astro/e2e/fixtures/nested-in-react/package.json b/packages/astro/e2e/fixtures/nested-in-react/package.json index 18463a7736..c9ed18e1bc 100644 --- a/packages/astro/e2e/fixtures/nested-in-react/package.json +++ b/packages/astro/e2e/fixtures/nested-in-react/package.json @@ -11,11 +11,11 @@ "astro": "workspace:*" }, "dependencies": { - "preact": "^10.19.2", - "react": "^18.1.0", - "react-dom": "^18.1.0", - "solid-js": "^1.8.5", - "svelte": "^4.2.5", - "vue": "^3.3.8" + "preact": "^10.20.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "solid-js": "^1.8.16", + "svelte": "^4.2.15", + "vue": "^3.4.23" } } diff --git a/packages/astro/e2e/fixtures/nested-in-solid/package.json b/packages/astro/e2e/fixtures/nested-in-solid/package.json index 4c9f03262a..bd892aead4 100644 --- a/packages/astro/e2e/fixtures/nested-in-solid/package.json +++ b/packages/astro/e2e/fixtures/nested-in-solid/package.json @@ -11,11 +11,11 @@ "astro": "workspace:*" }, "dependencies": { - "preact": "^10.19.2", - "react": "^18.1.0", - "react-dom": "^18.1.0", - "solid-js": "^1.8.5", - "svelte": "^4.2.5", - "vue": "^3.3.8" + "preact": "^10.20.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "solid-js": "^1.8.16", + "svelte": "^4.2.15", + "vue": "^3.4.23" } } diff --git a/packages/astro/e2e/fixtures/nested-in-svelte/package.json b/packages/astro/e2e/fixtures/nested-in-svelte/package.json index a3adbea06b..4977ec5faa 100644 --- a/packages/astro/e2e/fixtures/nested-in-svelte/package.json +++ b/packages/astro/e2e/fixtures/nested-in-svelte/package.json @@ -11,11 +11,11 @@ "astro": "workspace:*" }, "dependencies": { - "preact": "^10.19.2", - "react": "^18.1.0", - "react-dom": "^18.1.0", - "solid-js": "^1.8.5", - "svelte": "^4.2.5", - "vue": "^3.3.8" + "preact": "^10.20.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "solid-js": "^1.8.16", + "svelte": "^4.2.15", + "vue": "^3.4.23" } } diff --git a/packages/astro/e2e/fixtures/nested-in-vue/package.json b/packages/astro/e2e/fixtures/nested-in-vue/package.json index 2555b7a290..257a5da503 100644 --- a/packages/astro/e2e/fixtures/nested-in-vue/package.json +++ b/packages/astro/e2e/fixtures/nested-in-vue/package.json @@ -11,11 +11,11 @@ "astro": "workspace:*" }, "dependencies": { - "preact": "^10.19.2", - "react": "^18.1.0", - "react-dom": "^18.1.0", - "solid-js": "^1.8.5", - "svelte": "^4.2.5", - "vue": "^3.3.8" + "preact": "^10.20.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "solid-js": "^1.8.16", + "svelte": "^4.2.15", + "vue": "^3.4.23" } } diff --git a/packages/astro/e2e/fixtures/nested-recursive/package.json b/packages/astro/e2e/fixtures/nested-recursive/package.json index a6b11a3891..c393c57a83 100644 --- a/packages/astro/e2e/fixtures/nested-recursive/package.json +++ b/packages/astro/e2e/fixtures/nested-recursive/package.json @@ -11,12 +11,12 @@ "astro": "workspace:*" }, "dependencies": { - "preact": "^10.19.2", - "react": "^18.1.0", - "react-dom": "^18.1.0", - "solid-js": "^1.8.5", - "svelte": "^4.2.5", - "vue": "^3.3.8" + "preact": "^10.20.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "solid-js": "^1.8.16", + "svelte": "^4.2.15", + "vue": "^3.4.23" }, "scripts": { "dev": "astro dev" diff --git a/packages/astro/e2e/fixtures/pass-js/package.json b/packages/astro/e2e/fixtures/pass-js/package.json index b01293b840..676ba1bf1d 100644 --- a/packages/astro/e2e/fixtures/pass-js/package.json +++ b/packages/astro/e2e/fixtures/pass-js/package.json @@ -7,7 +7,7 @@ "astro": "workspace:*" }, "dependencies": { - "react": "^18.1.0", - "react-dom": "^18.1.0" + "react": "^18.2.0", + "react-dom": "^18.2.0" } } diff --git a/packages/astro/e2e/fixtures/preact-compat-component/package.json b/packages/astro/e2e/fixtures/preact-compat-component/package.json index 38b4fc3a8d..bcd7e460e4 100644 --- a/packages/astro/e2e/fixtures/preact-compat-component/package.json +++ b/packages/astro/e2e/fixtures/preact-compat-component/package.json @@ -5,6 +5,6 @@ "dependencies": { "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.19.2" + "preact": "^10.20.2" } } diff --git a/packages/astro/e2e/fixtures/preact-component/package.json b/packages/astro/e2e/fixtures/preact-component/package.json index 4e2cd6fe22..10ae0f6f78 100644 --- a/packages/astro/e2e/fixtures/preact-component/package.json +++ b/packages/astro/e2e/fixtures/preact-component/package.json @@ -6,6 +6,6 @@ "@astrojs/mdx": "workspace:*", "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.19.2" + "preact": "^10.20.2" } } diff --git a/packages/astro/e2e/fixtures/preact-lazy-component/package.json b/packages/astro/e2e/fixtures/preact-lazy-component/package.json index 173c716625..9a76ceba49 100644 --- a/packages/astro/e2e/fixtures/preact-lazy-component/package.json +++ b/packages/astro/e2e/fixtures/preact-lazy-component/package.json @@ -6,6 +6,6 @@ "@astrojs/mdx": "workspace:*", "@astrojs/preact": "workspace:*", "astro": "workspace:*", - "preact": "^10.15.1" + "preact": "^10.20.2" } } diff --git a/packages/astro/e2e/fixtures/react-component/package.json b/packages/astro/e2e/fixtures/react-component/package.json index 4e56631bde..c430619c6b 100644 --- a/packages/astro/e2e/fixtures/react-component/package.json +++ b/packages/astro/e2e/fixtures/react-component/package.json @@ -6,7 +6,7 @@ "@astrojs/react": "workspace:*", "astro": "workspace:*", "@astrojs/mdx": "workspace:*", - "react": "^18.1.0", - "react-dom": "^18.1.0" + "react": "^18.2.0", + "react-dom": "^18.2.0" } } diff --git a/packages/astro/e2e/fixtures/solid-circular/package.json b/packages/astro/e2e/fixtures/solid-circular/package.json index a40b083c3d..5db061096e 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.5" + "solid-js": "^1.8.16" } } diff --git a/packages/astro/e2e/fixtures/solid-component/package.json b/packages/astro/e2e/fixtures/solid-component/package.json index 634693c793..d94de0981a 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.5" + "solid-js": "^1.8.16" } } diff --git a/packages/astro/e2e/fixtures/solid-recurse/package.json b/packages/astro/e2e/fixtures/solid-recurse/package.json index 96d93df74a..1b6cc32cff 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.5" + "solid-js": "^1.8.16" } } diff --git a/packages/astro/e2e/fixtures/svelte-component/package.json b/packages/astro/e2e/fixtures/svelte-component/package.json index b721b8ccbd..563d996cb3 100644 --- a/packages/astro/e2e/fixtures/svelte-component/package.json +++ b/packages/astro/e2e/fixtures/svelte-component/package.json @@ -6,6 +6,6 @@ "@astrojs/mdx": "workspace:*", "@astrojs/svelte": "workspace:*", "astro": "workspace:*", - "svelte": "^4.2.5" + "svelte": "^4.2.15" } } diff --git a/packages/astro/e2e/fixtures/tailwindcss/package.json b/packages/astro/e2e/fixtures/tailwindcss/package.json index d755b95163..66c37e7ff8 100644 --- a/packages/astro/e2e/fixtures/tailwindcss/package.json +++ b/packages/astro/e2e/fixtures/tailwindcss/package.json @@ -5,8 +5,8 @@ "dependencies": { "@astrojs/tailwind": "workspace:*", "astro": "workspace:*", - "autoprefixer": "^10.4.15", - "postcss": "^8.4.28", - "tailwindcss": "^3.3.5" + "autoprefixer": "^10.4.19", + "postcss": "^8.4.38", + "tailwindcss": "^3.4.3" } } diff --git a/packages/astro/e2e/fixtures/ts-resolution/package.json b/packages/astro/e2e/fixtures/ts-resolution/package.json index 7544800f91..51b7bdae16 100644 --- a/packages/astro/e2e/fixtures/ts-resolution/package.json +++ b/packages/astro/e2e/fixtures/ts-resolution/package.json @@ -5,7 +5,7 @@ "dependencies": { "@astrojs/react": "workspace:*", "astro": "workspace:*", - "react": "^18.1.0", - "react-dom": "^18.1.0" + "react": "^18.2.0", + "react-dom": "^18.2.0" } } diff --git a/packages/astro/e2e/fixtures/view-transitions/package.json b/packages/astro/e2e/fixtures/view-transitions/package.json index 327393ccda..f49c03d04a 100644 --- a/packages/astro/e2e/fixtures/view-transitions/package.json +++ b/packages/astro/e2e/fixtures/view-transitions/package.json @@ -8,9 +8,9 @@ "@astrojs/svelte": "workspace:*", "@astrojs/vue": "workspace:*", "astro": "workspace:*", - "react": "^18.1.0", - "react-dom": "^18.1.0", - "svelte": "^4.2.5", - "vue": "^3.3.8" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "svelte": "^4.2.15", + "vue": "^3.4.23" } } diff --git a/packages/astro/e2e/fixtures/vue-component/package.json b/packages/astro/e2e/fixtures/vue-component/package.json index 091f364355..12358c252f 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.3.8" + "vue": "^3.4.23" } } diff --git a/packages/astro/e2e/lit-component.test.js b/packages/astro/e2e/lit-component.test.js index 68728121e6..54eb990741 100644 --- a/packages/astro/e2e/lit-component.test.js +++ b/packages/astro/e2e/lit-component.test.js @@ -10,17 +10,16 @@ const test = testFactory({ test.describe('Lit components', () => { test.describe('Development', () => { let devServer; - const t = test.extend({}); - t.beforeAll(async ({ astro }) => { + test.beforeAll(async ({ astro }) => { devServer = await astro.startDevServer(); }); - t.afterAll(async () => { + test.afterAll(async () => { await devServer.stop(); }); - t('client:idle', async ({ page, astro }) => { + test('client:idle', async ({ page, astro }) => { await page.goto(astro.resolveUrl('/')); const counter = page.locator('#client-idle'); @@ -38,7 +37,7 @@ test.describe('Lit components', () => { await expect(count, 'count incremented by 1').toHaveText('Count: 11'); }); - t('non-deferred attribute serialization', async ({ page, astro }) => { + test('non-deferred attribute serialization', async ({ page, astro }) => { await page.goto(astro.resolveUrl('/')); const counter = page.locator('#non-deferred'); @@ -53,7 +52,7 @@ test.describe('Lit components', () => { await expect(count, 'count incremented by 1').toHaveText('Count: 11'); }); - t('client:load', async ({ page, astro }) => { + test('client:load', async ({ page, astro }) => { await page.goto(astro.resolveUrl('/')); const counter = page.locator('#client-load'); @@ -70,7 +69,7 @@ test.describe('Lit components', () => { await expect(count, 'count incremented by 1').toHaveText('Count: 11'); }); - t('client:visible', async ({ page, astro }) => { + test('client:visible', async ({ page, astro }) => { await page.goto(astro.resolveUrl('/')); // Make sure the component is on screen to trigger hydration @@ -89,7 +88,7 @@ test.describe('Lit components', () => { await expect(count, 'count incremented by 1').toHaveText('Count: 11'); }); - t('client:media', async ({ page, astro }) => { + test('client:media', async ({ page, astro }) => { await page.goto(astro.resolveUrl('/media')); const counter = page.locator('#client-media'); @@ -111,7 +110,7 @@ test.describe('Lit components', () => { await expect(count, 'count incremented by 1').toHaveText('Count: 11'); }); - t('client:only', async ({ page, astro }) => { + test('client:only', async ({ page, astro }) => { await page.goto(astro.resolveUrl('/')); const label = page.locator('#client-only'); @@ -143,7 +142,7 @@ test.describe('Lit components', () => { ).toBeHidden(); }); - t.skip('HMR', async ({ page, astro }) => { + test.skip('HMR', async ({ page, astro }) => { await page.goto(astro.resolveUrl('/')); const counter = page.locator('#client-idle'); @@ -160,32 +159,20 @@ test.describe('Lit components', () => { test.describe('Production', () => { let previewServer; - const t = test.extend({}); - t.beforeAll(async ({ astro }) => { + test.beforeAll(async ({ astro }) => { // Playwright's Node version doesn't have these functions, so stub them. process.stdout.clearLine = () => {}; process.stdout.cursorTo = () => {}; - try { - await astro.build(); - } catch (err) { - // There's this strange error on build since the dev server already defined `my-counter`, - // however the tests still pass with this error, so swallow it. - if (!err.message.includes(`Failed to execute 'define' on 'CustomElementRegistry'`)) { - throw err; - } - } - }); - - t.beforeAll(async ({ astro }) => { + await astro.build(); previewServer = await astro.preview(); }); - t.afterAll(async () => { + test.afterAll(async () => { await previewServer.stop(); }); - t('Only one component in prod', async ({ page, astro }) => { + test('Only one component in prod', async ({ page, astro }) => { await page.goto(astro.resolveUrl('/solo')); const counter = page.locator('my-counter'); diff --git a/packages/astro/e2e/nested-styles.test.js b/packages/astro/e2e/nested-styles.test.js index ce8ef3cda9..0dc5b868b5 100644 --- a/packages/astro/e2e/nested-styles.test.js +++ b/packages/astro/e2e/nested-styles.test.js @@ -1,7 +1,20 @@ import { expect } from '@playwright/test'; import { testFactory } from './test-utils.js'; -const test = testFactory({ root: './fixtures/nested-styles/' }); +const test = testFactory({ + root: './fixtures/nested-styles/', + devToolbar: { + enabled: false, + }, + vite: { + optimizeDeps: { + // Vite has a bug where if you close the server too quickly, while the optimized + // dependencies are still held before serving, it will stall the server from closing. + // This will workaround it for now. + holdUntilCrawlEnd: false, + }, + }, +}); let devServer; diff --git a/packages/astro/e2e/ts-resolution.test.js b/packages/astro/e2e/ts-resolution.test.js index 7f22761e4c..d2d3fcfe8b 100644 --- a/packages/astro/e2e/ts-resolution.test.js +++ b/packages/astro/e2e/ts-resolution.test.js @@ -24,35 +24,31 @@ function runTest(it) { test.describe('TypeScript resolution -', () => { test.describe('Development', () => { - const t = test.extend({}); - let devServer; - t.beforeAll(async ({ astro }) => { + test.beforeAll(async ({ astro }) => { devServer = await astro.startDevServer(); }); - t.afterAll(async () => { + test.afterAll(async () => { await devServer.stop(); }); - runTest(t); + runTest(test); }); test.describe('Production', () => { - const t = test.extend({}); - let previewServer; - t.beforeAll(async ({ astro }) => { + test.beforeAll(async ({ astro }) => { await astro.build(); previewServer = await astro.preview(); }); - t.afterAll(async () => { + test.afterAll(async () => { await previewServer.stop(); }); - runTest(t); + runTest(test); }); }); diff --git a/packages/astro/package.json b/packages/astro/package.json index fbcdf61176..a8d8824892 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -118,106 +118,105 @@ "@astrojs/internal-helpers": "workspace:*", "@astrojs/markdown-remark": "workspace:*", "@astrojs/telemetry": "workspace:*", - "@babel/core": "^7.24.3", - "@babel/generator": "^7.23.3", - "@babel/parser": "^7.23.3", - "@babel/plugin-transform-react-jsx": "^7.22.5", - "@babel/traverse": "^7.23.3", - "@babel/types": "^7.23.3", - "@types/babel__core": "^7.20.4", - "@types/cookie": "^0.5.4", - "acorn": "^8.11.2", + "@babel/core": "^7.24.4", + "@babel/generator": "^7.24.4", + "@babel/parser": "^7.24.4", + "@babel/plugin-transform-react-jsx": "^7.23.4", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0", + "@types/babel__core": "^7.20.5", + "@types/cookie": "^0.6.0", + "acorn": "^8.11.3", "aria-query": "^5.3.0", "axobject-query": "^4.0.0", "boxen": "^7.1.1", - "chokidar": "^3.5.3", + "chokidar": "^3.6.0", "ci-info": "^4.0.0", - "clsx": "^2.0.0", + "clsx": "^2.1.0", "common-ancestor-path": "^1.0.1", "cookie": "^0.6.0", "cssesc": "^3.0.0", "debug": "^4.3.4", - "deterministic-object-hash": "^2.0.1", + "deterministic-object-hash": "^2.0.2", "devalue": "^5.0.0", - "diff": "^5.1.0", + "diff": "^5.2.0", "dlv": "^1.1.3", "dset": "^3.1.3", - "es-module-lexer": "^1.4.1", - "esbuild": "^0.19.6", + "es-module-lexer": "^1.5.0", + "esbuild": "^0.20.2", "estree-walker": "^3.0.3", "execa": "^8.0.1", "fast-glob": "^3.3.2", - "flattie": "^1.1.0", + "flattie": "^1.1.1", "github-slugger": "^2.0.0", "gray-matter": "^4.0.3", "html-escaper": "^3.0.3", "http-cache-semantics": "^4.1.1", "js-yaml": "^4.1.0", - "kleur": "^4.1.4", - "magic-string": "^0.30.3", + "kleur": "^4.1.5", + "magic-string": "^0.30.10", "mrmime": "^2.0.0", "ora": "^8.0.1", "p-limit": "^5.0.0", "p-queue": "^8.0.1", - "path-to-regexp": "^6.2.1", - "preferred-pm": "^3.1.2", + "path-to-regexp": "^6.2.2", + "preferred-pm": "^3.1.3", "prompts": "^2.4.2", "rehype": "^13.0.1", - "resolve": "^1.22.4", - "semver": "^7.5.4", - "shiki": "^1.1.2", - "string-width": "^7.0.0", + "resolve": "^1.22.8", + "semver": "^7.6.0", + "shiki": "^1.3.0", + "string-width": "^7.1.0", "strip-ansi": "^7.1.0", - "tsconfck": "^3.0.0", + "tsconfck": "^3.0.3", "unist-util-visit": "^5.0.0", "vfile": "^6.0.1", - "vite": "^5.1.4", + "vite": "^5.2.10", "vitefu": "^0.2.5", "which-pm": "^2.1.1", "yargs-parser": "^21.1.1", - "zod": "^3.22.4", - "zod-to-json-schema": "^3.22.4" + "zod": "^3.23.0", + "zod-to-json-schema": "^3.22.5" }, "optionalDependencies": { "sharp": "^0.32.6" }, "devDependencies": { - "@astrojs/check": "^0.5.8", - "@playwright/test": "1.40.0", + "@astrojs/check": "^0.5.10", + "@playwright/test": "^1.43.1", "@types/aria-query": "^5.0.4", - "@types/babel__generator": "^7.6.7", - "@types/babel__traverse": "^7.20.4", + "@types/babel__generator": "^7.6.8", + "@types/babel__traverse": "^7.20.5", "@types/common-ancestor-path": "^1.0.2", "@types/connect": "^3.4.38", "@types/cssesc": "^3.0.2", "@types/debug": "^4.1.12", - "@types/diff": "^5.0.8", + "@types/diff": "^5.2.0", "@types/dlv": "^1.1.4", "@types/dom-view-transitions": "^1.0.4", - "@types/hast": "^3.0.3", + "@types/hast": "^3.0.4", "@types/html-escaper": "^3.0.2", "@types/http-cache-semantics": "^4.0.4", "@types/js-yaml": "^4.0.9", - "@types/mocha": "^10.0.4", - "@types/probe-image-size": "^7.2.3", - "@types/prompts": "^2.4.8", - "@types/resolve": "^1.20.5", - "@types/semver": "^7.5.2", + "@types/probe-image-size": "^7.2.4", + "@types/prompts": "^2.4.9", + "@types/resolve": "^1.20.6", + "@types/semver": "^7.5.8", "@types/send": "^0.17.4", "@types/unist": "^3.0.2", "@types/yargs-parser": "^21.0.3", "astro-scripts": "workspace:*", "cheerio": "1.0.0-rc.12", "eol": "^0.9.1", - "memfs": "^4.6.0", - "node-mocks-http": "^1.13.0", + "memfs": "^4.8.2", + "node-mocks-http": "^1.14.1", "parse-srcset": "^1.0.2", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", "rehype-toc": "^3.0.2", "remark-code-titles": "^0.1.2", - "rollup": "^4.5.0", - "sass": "^1.69.5", + "rollup": "^4.16.1", + "sass": "^1.75.0", "srcset-parse": "^1.1.0", "unified": "^11.0.4" }, diff --git a/packages/astro/performance/fixtures/md/package.json b/packages/astro/performance/fixtures/md/package.json index 4dea64d765..c6963f879f 100644 --- a/packages/astro/performance/fixtures/md/package.json +++ b/packages/astro/performance/fixtures/md/package.json @@ -16,10 +16,10 @@ "dependencies": { "@astrojs/react": "workspace:*", "@performance/utils": "workspace:*", - "@types/react": "^18.2.37", - "@types/react-dom": "^18.2.15", + "@types/react": "^18.2.79", + "@types/react-dom": "^18.2.25", "astro": "workspace:*", - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.2.0", + "react-dom": "^18.2.0" } } diff --git a/packages/astro/performance/fixtures/mdoc/package.json b/packages/astro/performance/fixtures/mdoc/package.json index a25e69c971..46bf89fb92 100644 --- a/packages/astro/performance/fixtures/mdoc/package.json +++ b/packages/astro/performance/fixtures/mdoc/package.json @@ -17,10 +17,10 @@ "@astrojs/markdoc": "workspace:*", "@astrojs/react": "workspace:*", "@performance/utils": "workspace:*", - "@types/react": "^18.2.37", - "@types/react-dom": "^18.2.15", + "@types/react": "^18.2.79", + "@types/react-dom": "^18.2.25", "astro": "workspace:*", - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.2.0", + "react-dom": "^18.2.0" } } diff --git a/packages/astro/performance/fixtures/mdx/package.json b/packages/astro/performance/fixtures/mdx/package.json index 2144dc2258..889b2fd4d7 100644 --- a/packages/astro/performance/fixtures/mdx/package.json +++ b/packages/astro/performance/fixtures/mdx/package.json @@ -17,10 +17,10 @@ "@astrojs/mdx": "workspace:*", "@astrojs/react": "workspace:*", "@performance/utils": "workspace:*", - "@types/react": "^18.2.37", - "@types/react-dom": "^18.2.15", + "@types/react": "^18.2.79", + "@types/react-dom": "^18.2.25", "astro": "workspace:*", - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.2.0", + "react-dom": "^18.2.0" } } diff --git a/packages/astro/src/content/utils.ts b/packages/astro/src/content/utils.ts index f40de3ff98..0f18e9c07e 100644 --- a/packages/astro/src/content/utils.ts +++ b/packages/astro/src/content/utils.ts @@ -135,7 +135,7 @@ export async function getEntryData( }, }); if (parsed.success) { - data = parsed.data; + data = parsed.data as Record; } else { if (!formattedError) { formattedError = new AstroError({ diff --git a/packages/create-astro/package.json b/packages/create-astro/package.json index c6822ccf5b..32071380f4 100644 --- a/packages/create-astro/package.json +++ b/packages/create-astro/package.json @@ -32,7 +32,7 @@ "//b": "DEPENDENCIES IS FOR UNBUNDLED PACKAGES", "dependencies": { "@astrojs/cli-kit": "^0.4.1", - "giget": "1.1.3" + "giget": "1.2.3" }, "devDependencies": { "arg": "^5.0.2", diff --git a/packages/db/package.json b/packages/db/package.json index 246777ce83..6b7357dca5 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -70,33 +70,33 @@ "test:match": "mocha --timeout 20000 \"test/*.js\" \"test/unit/*.js\" -g" }, "dependencies": { - "@libsql/client": "^0.5.5", + "@libsql/client": "^0.6.0", "async-listen": "^3.0.1", "deep-diff": "^1.0.2", - "drizzle-orm": "^0.30.4", + "drizzle-orm": "^0.30.9", "github-slugger": "^2.0.0", "kleur": "^4.1.5", - "nanoid": "^5.0.1", - "open": "^10.0.3", + "nanoid": "^5.0.7", + "open": "^10.1.0", "ora": "^8.0.1", "prompts": "^2.4.2", "strip-ansi": "^7.1.0", "yargs-parser": "^21.1.1", - "zod": "^3.22.4" + "zod": "^3.23.0" }, "devDependencies": { "@types/chai": "^4.3.14", "@types/deep-diff": "^1.0.5", - "@types/diff": "^5.0.8", - "@types/mocha": "^10.0.2", - "@types/prompts": "^2.4.8", + "@types/diff": "^5.2.0", + "@types/mocha": "^10.0.6", + "@types/prompts": "^2.4.9", "@types/yargs-parser": "^21.0.3", "astro": "workspace:*", "astro-scripts": "workspace:*", "chai": "^5.1.0", "cheerio": "1.0.0-rc.12", - "mocha": "^10.2.0", - "typescript": "^5.2.2", - "vite": "^5.1.4" + "mocha": "^10.4.0", + "typescript": "^5.4.5", + "vite": "^5.2.10" } } diff --git a/packages/integrations/alpinejs/package.json b/packages/integrations/alpinejs/package.json index c511513160..8a650ed3f7 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.40.0", + "@playwright/test": "1.43.1", "astro": "workspace:*", "astro-scripts": "workspace:*", - "vite": "^5.1.4" + "vite": "^5.2.10" }, "publishConfig": { "provenance": true diff --git a/packages/integrations/lit/package.json b/packages/integrations/lit/package.json index 1706431de6..c5f526ceaf 100644 --- a/packages/integrations/lit/package.json +++ b/packages/integrations/lit/package.json @@ -42,22 +42,22 @@ "test": "astro-scripts test \"test/**/*.test.js\"" }, "dependencies": { - "@lit-labs/ssr": "^3.2.0", - "@lit-labs/ssr-client": "^1.1.5", - "@lit-labs/ssr-dom-shim": "^1.1.2", + "@lit-labs/ssr": "^3.2.2", + "@lit-labs/ssr-client": "^1.1.7", + "@lit-labs/ssr-dom-shim": "^1.2.0", "parse5": "^7.1.2" }, "overrides": { "@lit-labs/ssr": { - "@lit-labs/ssr-client": "1.1.3" + "@lit-labs/ssr-client": "1.1.7" } }, "devDependencies": { "astro": "workspace:*", "astro-scripts": "workspace:*", "cheerio": "1.0.0-rc.12", - "lit": "^3.1.0", - "sass": "^1.69.5" + "lit": "^3.1.3", + "sass": "^1.75.0" }, "peerDependencies": { "@webcomponents/template-shadowroot": "^0.2.1", diff --git a/packages/integrations/markdoc/package.json b/packages/integrations/markdoc/package.json index af59304a0f..ab0e193010 100644 --- a/packages/integrations/markdoc/package.json +++ b/packages/integrations/markdoc/package.json @@ -65,13 +65,13 @@ "@astrojs/internal-helpers": "workspace:*", "@astrojs/markdown-remark": "workspace:*", "@astrojs/prism": "workspace:*", - "@markdoc/markdoc": "^0.3.5", - "esbuild": "^0.19.6", + "@markdoc/markdoc": "^0.4.0", + "esbuild": "^0.20.2", "github-slugger": "^2.0.0", "gray-matter": "^4.0.3", - "htmlparser2": "^9.0.0", + "htmlparser2": "^9.1.0", "kleur": "^4.1.5", - "zod": "^3.22.4" + "zod": "^3.23.0" }, "peerDependencies": { "astro": "^3.0.0 || ^4.0.0" @@ -82,8 +82,8 @@ "astro": "workspace:*", "astro-scripts": "workspace:*", "devalue": "^5.0.0", - "linkedom": "^0.16.4", - "vite": "^5.1.4" + "linkedom": "^0.16.11", + "vite": "^5.2.10" }, "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 c0e4575bb8..cb30161674 100644 --- a/packages/integrations/mdx/package.json +++ b/packages/integrations/mdx/package.json @@ -34,14 +34,14 @@ }, "dependencies": { "@astrojs/markdown-remark": "workspace:*", - "@mdx-js/mdx": "^3.0.0", - "acorn": "^8.11.2", - "es-module-lexer": "^1.4.1", + "@mdx-js/mdx": "^3.0.1", + "acorn": "^8.11.3", + "es-module-lexer": "^1.5.0", "estree-util-visit": "^2.0.0", "github-slugger": "^2.0.0", "gray-matter": "^4.0.3", - "hast-util-to-html": "^9.0.0", - "kleur": "^4.1.4", + "hast-util-to-html": "^9.0.1", + "kleur": "^4.1.5", "rehype-raw": "^7.0.0", "remark-gfm": "^4.0.0", "remark-smartypants": "^3.0.0", @@ -55,23 +55,22 @@ "devDependencies": { "@types/estree": "^1.0.5", "@types/mdast": "^4.0.3", - "@types/mocha": "^10.0.4", "@types/yargs-parser": "^21.0.3", "astro": "workspace:*", "astro-scripts": "workspace:*", "cheerio": "1.0.0-rc.12", - "linkedom": "^0.16.4", + "linkedom": "^0.16.11", "mdast-util-mdx": "^3.0.0", "mdast-util-to-string": "^4.0.0", "reading-time": "^1.5.0", "rehype-mathjax": "^6.0.0", - "rehype-pretty-code": "^0.13.0", + "rehype-pretty-code": "^0.13.1", "remark-math": "^6.0.0", - "remark-rehype": "^11.0.0", + "remark-rehype": "^11.1.0", "remark-shiki-twoslash": "^3.1.3", "remark-toc": "^9.0.0", "unified": "^11.0.4", - "vite": "^5.1.4" + "vite": "^5.2.10" }, "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 b9c2fa26a5..b44f749c78 100644 --- a/packages/integrations/node/package.json +++ b/packages/integrations/node/package.json @@ -46,8 +46,8 @@ "astro": "workspace:*", "astro-scripts": "workspace:*", "cheerio": "1.0.0-rc.12", - "express": "^4.18.2", - "node-mocks-http": "^1.13.0" + "express": "^4.19.2", + "node-mocks-http": "^1.14.1" }, "publishConfig": { "provenance": true diff --git a/packages/integrations/partytown/package.json b/packages/integrations/partytown/package.json index d23210d9dd..065ed78c4d 100644 --- a/packages/integrations/partytown/package.json +++ b/packages/integrations/partytown/package.json @@ -32,7 +32,7 @@ "dev": "astro-scripts dev \"src/**/*.ts\"" }, "dependencies": { - "@builder.io/partytown": "^0.8.0", + "@builder.io/partytown": "^0.10.1", "mrmime": "^2.0.0" }, "devDependencies": { diff --git a/packages/integrations/preact/package.json b/packages/integrations/preact/package.json index 31256b838f..7169b6b7ef 100644 --- a/packages/integrations/preact/package.json +++ b/packages/integrations/preact/package.json @@ -35,10 +35,10 @@ "dev": "astro-scripts dev \"src/**/*.ts\"" }, "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.22.5", + "@babel/plugin-transform-react-jsx": "^7.23.4", "@babel/plugin-transform-react-jsx-development": "^7.22.5", - "@preact/preset-vite": "^2.7.0", - "@preact/signals": "^1.2.1", + "@preact/preset-vite": "^2.8.2", + "@preact/signals": "^1.2.3", "babel-plugin-transform-hook-names": "^1.0.2", "preact-render-to-string": "~6.3.1", "preact-ssr-prepass": "^1.2.1" @@ -46,7 +46,7 @@ "devDependencies": { "astro": "workspace:*", "astro-scripts": "workspace:*", - "preact": "^10.19.2" + "preact": "^10.20.2" }, "peerDependencies": { "preact": "^10.6.5" diff --git a/packages/integrations/react/package.json b/packages/integrations/react/package.json index b69eb94495..3fe01d49fb 100644 --- a/packages/integrations/react/package.json +++ b/packages/integrations/react/package.json @@ -46,18 +46,18 @@ "test": "astro-scripts test \"test/**/*.test.js\"" }, "dependencies": { - "@vitejs/plugin-react": "^4.2.0", - "ultrahtml": "^1.3.0" + "@vitejs/plugin-react": "^4.2.1", + "ultrahtml": "^1.5.3" }, "devDependencies": { - "@types/react": "^18.2.37", - "@types/react-dom": "^18.2.15", + "@types/react": "^18.2.79", + "@types/react-dom": "^18.2.25", "astro": "workspace:*", "astro-scripts": "workspace:*", "cheerio": "1.0.0-rc.12", - "react": "^18.1.0", - "react-dom": "^18.1.0", - "vite": "^5.1.4" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "vite": "^5.2.10" }, "peerDependencies": { "@types/react": "^17.0.50 || ^18.0.21", diff --git a/packages/integrations/sitemap/package.json b/packages/integrations/sitemap/package.json index b9b6ed24fc..e261375a83 100644 --- a/packages/integrations/sitemap/package.json +++ b/packages/integrations/sitemap/package.json @@ -35,7 +35,7 @@ "dependencies": { "sitemap": "^7.1.1", "stream-replace-string": "^2.0.0", - "zod": "^3.22.4" + "zod": "^3.23.0" }, "devDependencies": { "@astrojs/node": "workspace:*", diff --git a/packages/integrations/solid/package.json b/packages/integrations/solid/package.json index 95e1bf194c..852fa9174d 100644 --- a/packages/integrations/solid/package.json +++ b/packages/integrations/solid/package.json @@ -35,12 +35,12 @@ "dev": "astro-scripts dev \"src/**/*.ts\"" }, "dependencies": { - "vite-plugin-solid": "^2.8.0" + "vite-plugin-solid": "^2.10.2" }, "devDependencies": { "astro": "workspace:*", "astro-scripts": "workspace:*", - "solid-js": "^1.8.5" + "solid-js": "^1.8.16" }, "peerDependencies": { "solid-js": "^1.8.5" diff --git a/packages/integrations/svelte/package.json b/packages/integrations/svelte/package.json index 499a8bf847..a7e2c3f16f 100644 --- a/packages/integrations/svelte/package.json +++ b/packages/integrations/svelte/package.json @@ -42,14 +42,14 @@ "dev": "astro-scripts dev \"src/**/*.ts\"" }, "dependencies": { - "@sveltejs/vite-plugin-svelte": "^3.0.0", - "svelte2tsx": "^0.6.27" + "@sveltejs/vite-plugin-svelte": "^3.1.0", + "svelte2tsx": "^0.7.6" }, "devDependencies": { "astro": "workspace:*", "astro-scripts": "workspace:*", - "svelte": "^4.2.5", - "vite": "^5.1.4" + "svelte": "^4.2.15", + "vite": "^5.2.10" }, "peerDependencies": { "astro": "^4.0.0", diff --git a/packages/integrations/tailwind/package.json b/packages/integrations/tailwind/package.json index aed582c89d..698bf1281c 100644 --- a/packages/integrations/tailwind/package.json +++ b/packages/integrations/tailwind/package.json @@ -33,15 +33,15 @@ "test": "astro-scripts test \"test/**/*.test.js\"" }, "dependencies": { - "autoprefixer": "^10.4.15", - "postcss": "^8.4.35", + "autoprefixer": "^10.4.19", + "postcss": "^8.4.38", "postcss-load-config": "^4.0.2" }, "devDependencies": { "astro": "workspace:*", "astro-scripts": "workspace:*", - "tailwindcss": "^3.3.5", - "vite": "^5.1.4" + "tailwindcss": "^3.4.3", + "vite": "^5.2.10" }, "peerDependencies": { "astro": "^3.0.0 || ^4.0.0", diff --git a/packages/integrations/vercel/package.json b/packages/integrations/vercel/package.json index 1702249184..0e1ea59adf 100644 --- a/packages/integrations/vercel/package.json +++ b/packages/integrations/vercel/package.json @@ -52,19 +52,19 @@ }, "dependencies": { "@astrojs/internal-helpers": "workspace:*", - "@vercel/analytics": "^1.0.2", + "@vercel/analytics": "^1.2.2", "@vercel/edge": "^1.1.1", "@vercel/nft": "^0.26.4", - "esbuild": "^0.19.6", + "esbuild": "^0.20.2", "fast-glob": "^3.3.2", "set-cookie-parser": "^2.6.0", - "web-vitals": "^3.4.0" + "web-vitals": "^3.5.2" }, "peerDependencies": { "astro": "^4.2.0" }, "devDependencies": { - "@types/set-cookie-parser": "^2.4.6", + "@types/set-cookie-parser": "^2.4.7", "astro": "workspace:*", "astro-scripts": "workspace:*", "cheerio": "1.0.0-rc.12" diff --git a/packages/integrations/vue/package.json b/packages/integrations/vue/package.json index e0dc2f60ec..4708400a83 100644 --- a/packages/integrations/vue/package.json +++ b/packages/integrations/vue/package.json @@ -42,15 +42,15 @@ "dependencies": { "@vitejs/plugin-vue": "^5.0.4", "@vitejs/plugin-vue-jsx": "^3.1.0", - "@vue/compiler-sfc": "^3.3.8" + "@vue/compiler-sfc": "^3.4.23" }, "devDependencies": { "astro": "workspace:*", "astro-scripts": "workspace:*", "cheerio": "1.0.0-rc.12", - "linkedom": "^0.16.4", - "vite": "^5.1.4", - "vue": "^3.3.8" + "linkedom": "^0.16.11", + "vite": "^5.2.10", + "vue": "^3.4.23" }, "peerDependencies": { "astro": "^4.0.0", diff --git a/packages/markdown/remark/package.json b/packages/markdown/remark/package.json index 0a75470f28..16da69b019 100644 --- a/packages/markdown/remark/package.json +++ b/packages/markdown/remark/package.json @@ -36,31 +36,30 @@ "dependencies": { "@astrojs/prism": "^3.1.0", "github-slugger": "^2.0.0", - "hast-util-from-html": "^2.0.0", - "hast-util-to-text": "^4.0.0", + "hast-util-from-html": "^2.0.1", + "hast-util-to-text": "^4.0.2", "import-meta-resolve": "^4.0.0", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.0", "remark-gfm": "^4.0.0", "remark-parse": "^11.0.0", - "remark-rehype": "^11.0.0", + "remark-rehype": "^11.1.0", "remark-smartypants": "^3.0.0", - "shiki": "^1.1.2", + "shiki": "^1.3.0", "unified": "^11.0.4", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", - "unist-util-visit-parents": "^6.0.0", + "unist-util-visit-parents": "^6.0.1", "vfile": "^6.0.1" }, "devDependencies": { "@types/estree": "^1.0.5", - "@types/hast": "^3.0.3", + "@types/hast": "^3.0.4", "@types/mdast": "^4.0.3", - "@types/mocha": "^10.0.4", "@types/unist": "^3.0.2", "astro-scripts": "workspace:*", - "esbuild": "^0.19.6", + "esbuild": "^0.20.2", "mdast-util-mdx-expression": "^2.0.0" }, "publishConfig": { diff --git a/packages/telemetry/package.json b/packages/telemetry/package.json index 9c4d269bfc..2e9c1d6e1f 100644 --- a/packages/telemetry/package.json +++ b/packages/telemetry/package.json @@ -34,7 +34,7 @@ "dlv": "^1.1.3", "dset": "^3.1.3", "is-docker": "^3.0.0", - "is-wsl": "^3.0.0", + "is-wsl": "^3.1.0", "which-pm-runs": "^1.1.0" }, "devDependencies": { diff --git a/packages/upgrade/package.json b/packages/upgrade/package.json index 9612dbbfbf..a3c3438e25 100644 --- a/packages/upgrade/package.json +++ b/packages/upgrade/package.json @@ -29,14 +29,14 @@ "//a": "MOST PACKAGES SHOULD GO IN DEV_DEPENDENCIES! THEY WILL BE BUNDLED.", "//b": "DEPENDENCIES IS FOR UNBUNDLED PACKAGES", "dependencies": { - "@astrojs/cli-kit": "^0.2.3", - "semver": "^7.5.4", + "@astrojs/cli-kit": "^0.4.1", + "semver": "^7.6.0", "which-pm-runs": "^1.1.0", "terminal-link": "^3.0.0" }, "devDependencies": { - "@types/semver": "^7.5.2", - "@types/which-pm-runs": "^1.0.0", + "@types/semver": "^7.5.8", + "@types/which-pm-runs": "^1.0.2", "arg": "^5.0.2", "astro-scripts": "workspace:*", "strip-ansi": "^7.1.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eaa91e0537..15bc13293c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,16 +19,16 @@ importers: version: link:benchmark devDependencies: '@astrojs/check': - specifier: ^0.5.8 - version: 0.5.10(prettier-plugin-astro@0.12.3)(prettier@3.2.5)(typescript@5.2.2) + specifier: ^0.5.10 + version: 0.5.10(prettier-plugin-astro@0.13.0)(prettier@3.2.5)(typescript@5.4.5) '@biomejs/biome': specifier: 1.6.4 version: 1.6.4 '@changesets/changelog-github': - specifier: ^0.4.8 - version: 0.4.8 + specifier: ^0.5.0 + version: 0.5.0 '@changesets/cli': - specifier: ^2.26.2 + specifier: ^2.27.1 version: 2.27.1 '@eslint/eslintrc': specifier: ^3.0.2 @@ -37,50 +37,50 @@ importers: specifier: ^18.17.8 version: 18.19.31 esbuild: - specifier: ^0.19.6 - version: 0.19.12 + specifier: ^0.20.2 + version: 0.20.2 eslint: - specifier: ^9.0.0 - version: 9.0.0 + specifier: ^9.1.0 + version: 9.1.0 eslint-config-prettier: - specifier: ^9.0.0 - version: 9.1.0(eslint@9.0.0) + specifier: ^9.1.0 + version: 9.1.0(eslint@9.1.0) eslint-plugin-no-only-tests: specifier: ^3.1.0 version: 3.1.0 eslint-plugin-prettier: - specifier: ^5.0.0 - version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@9.0.0)(prettier@3.2.5) + specifier: ^5.1.3 + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@9.1.0)(prettier@3.2.5) eslint-plugin-regexp: - specifier: ^2.2.0 - version: 2.5.0(eslint@9.0.0) + specifier: ^2.5.0 + version: 2.5.0(eslint@9.1.0) globby: - specifier: ^14.0.0 + specifier: ^14.0.1 version: 14.0.1 only-allow: - specifier: ^1.1.1 + specifier: ^1.2.1 version: 1.2.1 organize-imports-cli: specifier: ^0.10.0 version: 0.10.0 prettier: - specifier: ^3.1.0 + specifier: ^3.2.5 version: 3.2.5 prettier-plugin-astro: - specifier: ^0.12.2 - version: 0.12.3 + specifier: ^0.13.0 + version: 0.13.0 tiny-glob: specifier: ^0.2.9 version: 0.2.9 turbo: - specifier: ^1.12.4 + specifier: ^1.13.2 version: 1.13.2 typescript: - specifier: ~5.2.2 - version: 5.2.2 + specifier: ~5.4.5 + version: 5.4.5 typescript-eslint: - specifier: ^7.6.0 - version: 7.6.0(eslint@9.0.0)(typescript@5.2.2) + specifier: ^7.7.0 + version: 7.7.0(eslint@9.1.0)(typescript@5.4.5) benchmark: dependencies: @@ -97,7 +97,7 @@ importers: specifier: workspace:* version: link:../packages/astro autocannon: - specifier: ^7.12.0 + specifier: ^7.15.0 version: 7.15.0 execa: specifier: ^8.0.1 @@ -231,7 +231,7 @@ importers: version: 4.2.14 vue: specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + version: 3.4.21(typescript@5.4.5) examples/framework-preact: dependencies: @@ -303,7 +303,7 @@ importers: version: link:../../packages/astro vue: specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + version: 3.4.21(typescript@5.4.5) examples/hackernews: dependencies: @@ -498,7 +498,7 @@ importers: specifier: ^4.6.3 version: link:../../packages/astro vitest: - specifier: ^1.3.1 + specifier: ^1.5.0 version: 1.5.0(@types/node@18.19.31) packages/astro: @@ -516,31 +516,31 @@ importers: specifier: workspace:* version: link:../telemetry '@babel/core': - specifier: ^7.24.3 + specifier: ^7.24.4 version: 7.24.4 '@babel/generator': - specifier: ^7.23.3 + specifier: ^7.24.4 version: 7.24.4 '@babel/parser': - specifier: ^7.23.3 + specifier: ^7.24.4 version: 7.24.4 '@babel/plugin-transform-react-jsx': - specifier: ^7.22.5 + specifier: ^7.23.4 version: 7.23.4(@babel/core@7.24.4) '@babel/traverse': - specifier: ^7.23.3 + specifier: ^7.24.1 version: 7.24.1 '@babel/types': - specifier: ^7.23.3 + specifier: ^7.24.0 version: 7.24.0 '@types/babel__core': - specifier: ^7.20.4 + specifier: ^7.20.5 version: 7.20.5 '@types/cookie': - specifier: ^0.5.4 - version: 0.5.4 + specifier: ^0.6.0 + version: 0.6.0 acorn: - specifier: ^8.11.2 + specifier: ^8.11.3 version: 8.11.3 aria-query: specifier: ^5.3.0 @@ -552,13 +552,13 @@ importers: specifier: ^7.1.1 version: 7.1.1 chokidar: - specifier: ^3.5.3 + specifier: ^3.6.0 version: 3.6.0 ci-info: specifier: ^4.0.0 version: 4.0.0 clsx: - specifier: ^2.0.0 + specifier: ^2.1.0 version: 2.1.0 common-ancestor-path: specifier: ^1.0.1 @@ -573,13 +573,13 @@ importers: specifier: ^4.3.4 version: 4.3.4(supports-color@8.1.1) deterministic-object-hash: - specifier: ^2.0.1 + specifier: ^2.0.2 version: 2.0.2 devalue: specifier: ^5.0.0 version: 5.0.0 diff: - specifier: ^5.1.0 + specifier: ^5.2.0 version: 5.2.0 dlv: specifier: ^1.1.3 @@ -588,11 +588,11 @@ importers: specifier: ^3.1.3 version: 3.1.3 es-module-lexer: - specifier: ^1.4.1 + specifier: ^1.5.0 version: 1.5.0 esbuild: - specifier: ^0.19.6 - version: 0.19.12 + specifier: ^0.20.2 + version: 0.20.2 estree-walker: specifier: ^3.0.3 version: 3.0.3 @@ -603,7 +603,7 @@ importers: specifier: ^3.3.2 version: 3.3.2 flattie: - specifier: ^1.1.0 + specifier: ^1.1.1 version: 1.1.1 github-slugger: specifier: ^2.0.0 @@ -621,11 +621,11 @@ importers: specifier: ^4.1.0 version: 4.1.0 kleur: - specifier: ^4.1.4 + specifier: ^4.1.5 version: 4.1.5 magic-string: - specifier: ^0.30.3 - version: 0.30.9 + specifier: ^0.30.10 + version: 0.30.10 mrmime: specifier: ^2.0.0 version: 2.0.0 @@ -639,10 +639,10 @@ importers: specifier: ^8.0.1 version: 8.0.1 path-to-regexp: - specifier: ^6.2.1 + specifier: ^6.2.2 version: 6.2.2 preferred-pm: - specifier: ^3.1.2 + specifier: ^3.1.3 version: 3.1.3 prompts: specifier: ^2.4.2 @@ -651,23 +651,23 @@ importers: specifier: ^13.0.1 version: 13.0.1 resolve: - specifier: ^1.22.4 + specifier: ^1.22.8 version: 1.22.8 semver: - specifier: ^7.5.4 + specifier: ^7.6.0 version: 7.6.0 shiki: - specifier: ^1.1.2 + specifier: ^1.3.0 version: 1.3.0 string-width: - specifier: ^7.0.0 + specifier: ^7.1.0 version: 7.1.0 strip-ansi: specifier: ^7.1.0 version: 7.1.0 tsconfck: - specifier: ^3.0.0 - version: 3.0.3(typescript@5.2.2) + specifier: ^3.0.3 + version: 3.0.3(typescript@5.4.5) unist-util-visit: specifier: ^5.0.0 version: 5.0.0 @@ -675,11 +675,11 @@ importers: specifier: ^6.0.1 version: 6.0.1 vite: - specifier: ^5.1.4 - version: 5.2.8(@types/node@18.19.31)(sass@1.75.0) + specifier: ^5.2.10 + version: 5.2.10(@types/node@18.19.31)(sass@1.75.0) vitefu: specifier: ^0.2.5 - version: 0.2.5(vite@5.2.8) + version: 0.2.5(vite@5.2.10) which-pm: specifier: ^2.1.1 version: 2.1.1 @@ -687,30 +687,30 @@ importers: specifier: ^21.1.1 version: 21.1.1 zod: - specifier: ^3.22.4 - version: 3.22.4 + specifier: ^3.23.0 + version: 3.23.0 zod-to-json-schema: - specifier: ^3.22.4 - version: 3.22.5(zod@3.22.4) + specifier: ^3.22.5 + version: 3.22.5(zod@3.23.0) optionalDependencies: sharp: specifier: ^0.32.6 version: 0.32.6 devDependencies: '@astrojs/check': - specifier: ^0.5.8 - version: 0.5.10(prettier-plugin-astro@0.12.3)(prettier@3.2.5)(typescript@5.2.2) + specifier: ^0.5.10 + version: 0.5.10(prettier-plugin-astro@0.13.0)(prettier@3.2.5)(typescript@5.4.5) '@playwright/test': - specifier: 1.40.0 - version: 1.40.0 + specifier: ^1.43.1 + version: 1.43.1 '@types/aria-query': specifier: ^5.0.4 version: 5.0.4 '@types/babel__generator': - specifier: ^7.6.7 + specifier: ^7.6.8 version: 7.6.8 '@types/babel__traverse': - specifier: ^7.20.4 + specifier: ^7.20.5 version: 7.20.5 '@types/common-ancestor-path': specifier: ^1.0.2 @@ -725,8 +725,8 @@ importers: specifier: ^4.1.12 version: 4.1.12 '@types/diff': - specifier: ^5.0.8 - version: 5.0.9 + specifier: ^5.2.0 + version: 5.2.0 '@types/dlv': specifier: ^1.1.4 version: 1.1.4 @@ -734,7 +734,7 @@ importers: specifier: ^1.0.4 version: 1.0.4 '@types/hast': - specifier: ^3.0.3 + specifier: ^3.0.4 version: 3.0.4 '@types/html-escaper': specifier: ^3.0.2 @@ -745,20 +745,17 @@ importers: '@types/js-yaml': specifier: ^4.0.9 version: 4.0.9 - '@types/mocha': - specifier: ^10.0.4 - version: 10.0.6 '@types/probe-image-size': - specifier: ^7.2.3 + specifier: ^7.2.4 version: 7.2.4 '@types/prompts': - specifier: ^2.4.8 + specifier: ^2.4.9 version: 2.4.9 '@types/resolve': - specifier: ^1.20.5 + specifier: ^1.20.6 version: 1.20.6 '@types/semver': - specifier: ^7.5.2 + specifier: ^7.5.8 version: 7.5.8 '@types/send': specifier: ^0.17.4 @@ -779,10 +776,10 @@ importers: specifier: ^0.9.1 version: 0.9.1 memfs: - specifier: ^4.6.0 + specifier: ^4.8.2 version: 4.8.2 node-mocks-http: - specifier: ^1.13.0 + specifier: ^1.14.1 version: 1.14.1 parse-srcset: specifier: ^1.0.2 @@ -800,10 +797,10 @@ importers: specifier: ^0.1.2 version: 0.1.2 rollup: - specifier: ^4.5.0 - version: 4.14.3 + specifier: ^4.16.1 + version: 4.16.1 sass: - specifier: ^1.69.5 + specifier: ^1.75.0 version: 1.75.0 srcset-parse: specifier: ^1.1.0 @@ -828,7 +825,7 @@ importers: packages/astro-rss: dependencies: fast-xml-parser: - specifier: ^4.2.7 + specifier: ^4.3.6 version: 4.3.6 kleur: specifier: ^4.1.5 @@ -865,7 +862,7 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.19.2 + specifier: ^10.20.2 version: 10.20.2 packages/astro/e2e/fixtures/astro-envs: @@ -877,29 +874,29 @@ importers: specifier: workspace:* version: link:../../.. vue: - specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + specifier: ^3.4.23 + version: 3.4.23(typescript@5.4.5) packages/astro/e2e/fixtures/client-only: dependencies: preact: - specifier: ^10.19.2 + specifier: ^10.20.2 version: 10.20.2 react: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.8.5 + specifier: ^1.8.16 version: 1.8.16 svelte: - specifier: ^4.2.5 - version: 4.2.14 + specifier: ^4.2.15 + version: 4.2.15 vue: - specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + specifier: ^3.4.23 + version: 3.4.23(typescript@5.4.5) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -944,10 +941,10 @@ importers: specifier: workspace:* version: link:../../.. react: - specifier: ^18.0.0 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18.0.0 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) packages/astro/e2e/fixtures/dev-toolbar: @@ -959,7 +956,7 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.19.2 + specifier: ^10.20.2 version: 10.20.2 packages/astro/e2e/fixtures/error-cyclic: @@ -971,7 +968,7 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.19.2 + specifier: ^10.20.2 version: 10.20.2 packages/astro/e2e/fixtures/error-sass: @@ -980,7 +977,7 @@ importers: specifier: workspace:* version: link:../../.. sass: - specifier: ^1.69.5 + specifier: ^1.75.0 version: 1.75.0 packages/astro/e2e/fixtures/errors: @@ -1004,26 +1001,26 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.19.2 + specifier: ^10.20.2 version: 10.20.2 react: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) sass: - specifier: ^1.69.5 + specifier: ^1.75.0 version: 1.75.0 solid-js: - specifier: ^1.8.5 + specifier: ^1.8.16 version: 1.8.16 svelte: - specifier: ^4.2.5 - version: 4.2.14 + specifier: ^4.2.15 + version: 4.2.15 vue: - specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + specifier: ^3.4.23 + version: 3.4.23(typescript@5.4.5) packages/astro/e2e/fixtures/hmr: devDependencies: @@ -1031,7 +1028,7 @@ importers: specifier: workspace:* version: link:../../.. sass: - specifier: ^1.69.5 + specifier: ^1.75.0 version: 1.75.0 packages/astro/e2e/fixtures/hydration-race: @@ -1043,7 +1040,7 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.19.2 + specifier: ^10.20.2 version: 10.20.2 packages/astro/e2e/fixtures/i18n: @@ -1064,8 +1061,8 @@ importers: specifier: workspace:* version: link:../../.. lit: - specifier: ^3.1.0 - version: 3.1.2 + specifier: ^3.1.3 + version: 3.1.3 packages/astro/e2e/fixtures/multiple-frameworks: dependencies: @@ -1073,26 +1070,26 @@ importers: specifier: ^0.2.1 version: 0.2.1 lit: - specifier: ^3.1.0 - version: 3.1.2 + specifier: ^3.1.3 + version: 3.1.3 preact: - specifier: ^10.19.2 + specifier: ^10.20.2 version: 10.20.2 react: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.8.5 + specifier: ^1.8.16 version: 1.8.16 svelte: - specifier: ^4.2.5 - version: 4.2.14 + specifier: ^4.2.15 + version: 4.2.15 vue: - specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + specifier: ^3.4.23 + version: 3.4.23(typescript@5.4.5) devDependencies: '@astrojs/lit': specifier: workspace:* @@ -1119,7 +1116,7 @@ importers: packages/astro/e2e/fixtures/namespaced-component: dependencies: preact: - specifier: ^10.19.2 + specifier: ^10.20.2 version: 10.20.2 devDependencies: '@astrojs/mdx': @@ -1135,23 +1132,23 @@ importers: packages/astro/e2e/fixtures/nested-in-preact: dependencies: preact: - specifier: ^10.19.2 + specifier: ^10.20.2 version: 10.20.2 react: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.8.5 + specifier: ^1.8.16 version: 1.8.16 svelte: - specifier: ^4.2.5 - version: 4.2.14 + specifier: ^4.2.15 + version: 4.2.15 vue: - specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + specifier: ^3.4.23 + version: 3.4.23(typescript@5.4.5) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1175,23 +1172,23 @@ importers: packages/astro/e2e/fixtures/nested-in-react: dependencies: preact: - specifier: ^10.19.2 + specifier: ^10.20.2 version: 10.20.2 react: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.8.5 + specifier: ^1.8.16 version: 1.8.16 svelte: - specifier: ^4.2.5 - version: 4.2.14 + specifier: ^4.2.15 + version: 4.2.15 vue: - specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + specifier: ^3.4.23 + version: 3.4.23(typescript@5.4.5) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1215,23 +1212,23 @@ importers: packages/astro/e2e/fixtures/nested-in-solid: dependencies: preact: - specifier: ^10.19.2 + specifier: ^10.20.2 version: 10.20.2 react: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.8.5 + specifier: ^1.8.16 version: 1.8.16 svelte: - specifier: ^4.2.5 - version: 4.2.14 + specifier: ^4.2.15 + version: 4.2.15 vue: - specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + specifier: ^3.4.23 + version: 3.4.23(typescript@5.4.5) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1255,23 +1252,23 @@ importers: packages/astro/e2e/fixtures/nested-in-svelte: dependencies: preact: - specifier: ^10.19.2 + specifier: ^10.20.2 version: 10.20.2 react: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.8.5 + specifier: ^1.8.16 version: 1.8.16 svelte: - specifier: ^4.2.5 - version: 4.2.14 + specifier: ^4.2.15 + version: 4.2.15 vue: - specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + specifier: ^3.4.23 + version: 3.4.23(typescript@5.4.5) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1295,23 +1292,23 @@ importers: packages/astro/e2e/fixtures/nested-in-vue: dependencies: preact: - specifier: ^10.19.2 + specifier: ^10.20.2 version: 10.20.2 react: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.8.5 + specifier: ^1.8.16 version: 1.8.16 svelte: - specifier: ^4.2.5 - version: 4.2.14 + specifier: ^4.2.15 + version: 4.2.15 vue: - specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + specifier: ^3.4.23 + version: 3.4.23(typescript@5.4.5) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1335,23 +1332,23 @@ importers: packages/astro/e2e/fixtures/nested-recursive: dependencies: preact: - specifier: ^10.19.2 + specifier: ^10.20.2 version: 10.20.2 react: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) solid-js: - specifier: ^1.8.5 + specifier: ^1.8.16 version: 1.8.16 svelte: - specifier: ^4.2.5 - version: 4.2.14 + specifier: ^4.2.15 + version: 4.2.15 vue: - specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + specifier: ^3.4.23 + version: 3.4.23(typescript@5.4.5) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1381,10 +1378,10 @@ importers: packages/astro/e2e/fixtures/pass-js: dependencies: react: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) devDependencies: '@astrojs/react': @@ -1403,7 +1400,7 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.19.2 + specifier: ^10.20.2 version: 10.20.2 packages/astro/e2e/fixtures/preact-component: @@ -1418,7 +1415,7 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.19.2 + specifier: ^10.20.2 version: 10.20.2 packages/astro/e2e/fixtures/preact-lazy-component: @@ -1433,7 +1430,7 @@ importers: specifier: workspace:* version: link:../../.. preact: - specifier: ^10.15.1 + specifier: ^10.20.2 version: 10.20.2 packages/astro/e2e/fixtures/prefetch: @@ -1454,10 +1451,10 @@ importers: specifier: workspace:* version: link:../../.. react: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) packages/astro/e2e/fixtures/solid-circular: @@ -1470,7 +1467,7 @@ importers: version: link:../../.. devDependencies: solid-js: - specifier: ^1.8.5 + specifier: ^1.8.16 version: 1.8.16 packages/astro/e2e/fixtures/solid-component: @@ -1485,7 +1482,7 @@ importers: specifier: workspace:* version: link:../../.. solid-js: - specifier: ^1.8.5 + specifier: ^1.8.16 version: 1.8.16 packages/astro/e2e/fixtures/solid-recurse: @@ -1498,7 +1495,7 @@ importers: version: link:../../.. devDependencies: solid-js: - specifier: ^1.8.5 + specifier: ^1.8.16 version: 1.8.16 packages/astro/e2e/fixtures/svelte-component: @@ -1513,8 +1510,8 @@ importers: specifier: workspace:* version: link:../../.. svelte: - specifier: ^4.2.5 - version: 4.2.14 + specifier: ^4.2.15 + version: 4.2.15 packages/astro/e2e/fixtures/tailwindcss: dependencies: @@ -1525,13 +1522,13 @@ importers: specifier: workspace:* version: link:../../.. autoprefixer: - specifier: ^10.4.15 + specifier: ^10.4.19 version: 10.4.19(postcss@8.4.38) postcss: - specifier: ^8.4.28 + specifier: ^8.4.38 version: 8.4.38 tailwindcss: - specifier: ^3.3.5 + specifier: ^3.4.3 version: 3.4.3 packages/astro/e2e/fixtures/ts-resolution: @@ -1543,10 +1540,10 @@ importers: specifier: workspace:* version: link:../../.. react: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) packages/astro/e2e/fixtures/view-transitions: @@ -1567,17 +1564,17 @@ importers: specifier: workspace:* version: link:../../.. react: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) svelte: - specifier: ^4.2.5 - version: 4.2.14 + specifier: ^4.2.15 + version: 4.2.15 vue: - specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + specifier: ^3.4.23 + version: 3.4.23(typescript@5.4.5) packages/astro/e2e/fixtures/vue-component: dependencies: @@ -1591,8 +1588,8 @@ importers: specifier: workspace:* version: link:../../.. vue: - specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + specifier: ^3.4.23 + version: 3.4.23(typescript@5.4.5) packages/astro/performance: devDependencies: @@ -1615,19 +1612,19 @@ importers: specifier: workspace:* version: link:../utils '@types/react': - specifier: ^18.2.37 - version: 18.2.78 + specifier: ^18.2.79 + version: 18.2.79 '@types/react-dom': - specifier: ^18.2.15 + specifier: ^18.2.25 version: 18.2.25 astro: specifier: workspace:* version: link:../../.. react: - specifier: ^18.0.0 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18.0.0 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) packages/astro/performance/fixtures/mdoc: @@ -1642,19 +1639,19 @@ importers: specifier: workspace:* version: link:../utils '@types/react': - specifier: ^18.2.37 - version: 18.2.78 + specifier: ^18.2.79 + version: 18.2.79 '@types/react-dom': - specifier: ^18.2.15 + specifier: ^18.2.25 version: 18.2.25 astro: specifier: workspace:* version: link:../../.. react: - specifier: ^18.0.0 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18.0.0 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) packages/astro/performance/fixtures/mdx: @@ -1669,19 +1666,19 @@ importers: specifier: workspace:* version: link:../utils '@types/react': - specifier: ^18.2.37 - version: 18.2.78 + specifier: ^18.2.79 + version: 18.2.79 '@types/react-dom': - specifier: ^18.2.15 + specifier: ^18.2.25 version: 18.2.25 astro: specifier: workspace:* version: link:../../.. react: - specifier: ^18.0.0 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18.0.0 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) packages/astro/performance/fixtures/utils: @@ -1721,7 +1718,7 @@ importers: version: 4.2.14 vue: specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + version: 3.4.21(typescript@5.4.5) packages/astro/test/fixtures/alias: dependencies: @@ -1888,7 +1885,7 @@ importers: version: 4.2.14 vue: specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + version: 3.4.21(typescript@5.4.5) packages/astro/test/fixtures/astro-class-list: dependencies: @@ -2016,7 +2013,7 @@ importers: version: link:../../.. vue: specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + version: 3.4.21(typescript@5.4.5) packages/astro/test/fixtures/astro-expr: dependencies: @@ -2301,7 +2298,7 @@ importers: version: 4.2.14 vue: specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + version: 3.4.21(typescript@5.4.5) packages/astro/test/fixtures/before-hydration: dependencies: @@ -2820,7 +2817,7 @@ importers: version: 4.2.14 vue: specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + version: 3.4.21(typescript@5.4.5) packages/astro/test/fixtures/fontsource-package: dependencies: @@ -3018,7 +3015,7 @@ importers: version: 4.2.14 vue: specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + version: 3.4.21(typescript@5.4.5) devDependencies: '@astrojs/mdx': specifier: workspace:* @@ -3200,7 +3197,7 @@ importers: version: 4.2.14 vue: specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + version: 3.4.21(typescript@5.4.5) devDependencies: postcss-preset-env: specifier: ^9.3.0 @@ -3415,7 +3412,7 @@ importers: version: link:../../.. vue: specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + version: 3.4.21(typescript@5.4.5) packages/astro/test/fixtures/solid-component: dependencies: @@ -3795,7 +3792,7 @@ importers: version: link:../../.. vue: specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + version: 3.4.21(typescript@5.4.5) packages/astro/test/fixtures/vue-jsx: dependencies: @@ -3807,7 +3804,7 @@ importers: version: link:../../.. vue: specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + version: 3.4.21(typescript@5.4.5) packages/astro/test/fixtures/vue-with-multi-renderer: dependencies: @@ -3825,7 +3822,7 @@ importers: version: 4.2.14 vue: specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + version: 3.4.21(typescript@5.4.5) packages/astro/test/fixtures/with-endpoint-routes: dependencies: @@ -3851,8 +3848,8 @@ importers: specifier: ^0.4.1 version: 0.4.1 giget: - specifier: 1.1.3 - version: 1.1.3 + specifier: 1.2.3 + version: 1.2.3 devDependencies: arg: specifier: ^5.0.2 @@ -3872,8 +3869,8 @@ importers: packages/db: dependencies: '@libsql/client': - specifier: ^0.5.5 - version: 0.5.6 + specifier: ^0.6.0 + version: 0.6.0 async-listen: specifier: ^3.0.1 version: 3.0.1 @@ -3881,8 +3878,8 @@ importers: specifier: ^1.0.2 version: 1.0.2 drizzle-orm: - specifier: ^0.30.4 - version: 0.30.8(@libsql/client@0.5.6) + specifier: ^0.30.9 + version: 0.30.9(@libsql/client@0.6.0) github-slugger: specifier: ^2.0.0 version: 2.0.0 @@ -3890,10 +3887,10 @@ importers: specifier: ^4.1.5 version: 4.1.5 nanoid: - specifier: ^5.0.1 + specifier: ^5.0.7 version: 5.0.7 open: - specifier: ^10.0.3 + specifier: ^10.1.0 version: 10.1.0 ora: specifier: ^8.0.1 @@ -3908,8 +3905,8 @@ importers: specifier: ^21.1.1 version: 21.1.1 zod: - specifier: ^3.22.4 - version: 3.22.4 + specifier: ^3.23.0 + version: 3.23.0 devDependencies: '@types/chai': specifier: ^4.3.14 @@ -3918,13 +3915,13 @@ importers: specifier: ^1.0.5 version: 1.0.5 '@types/diff': - specifier: ^5.0.8 - version: 5.0.9 + specifier: ^5.2.0 + version: 5.2.0 '@types/mocha': - specifier: ^10.0.2 + specifier: ^10.0.6 version: 10.0.6 '@types/prompts': - specifier: ^2.4.8 + specifier: ^2.4.9 version: 2.4.9 '@types/yargs-parser': specifier: ^21.0.3 @@ -3942,14 +3939,14 @@ importers: specifier: 1.0.0-rc.12 version: 1.0.0-rc.12 mocha: - specifier: ^10.2.0 + specifier: ^10.4.0 version: 10.4.0 typescript: - specifier: ^5.2.2 + specifier: ^5.4.5 version: 5.4.5 vite: - specifier: ^5.1.4 - version: 5.2.8(@types/node@18.19.31)(sass@1.75.0) + specifier: ^5.2.10 + version: 5.2.10(@types/node@18.19.31)(sass@1.75.0) packages/db/test/fixtures/basics: dependencies: @@ -4045,7 +4042,7 @@ importers: dependencies: '@astrojs/check': specifier: ^0.5.5 - version: 0.5.10(prettier-plugin-astro@0.12.3)(prettier@3.2.5)(typescript@5.4.5) + version: 0.5.10(prettier-plugin-astro@0.13.0)(prettier@3.2.5)(typescript@5.4.5) '@astrojs/db': specifier: workspace:* version: link:../../.. @@ -4086,8 +4083,8 @@ importers: packages/integrations/alpinejs: devDependencies: '@playwright/test': - specifier: 1.40.0 - version: 1.40.0 + specifier: 1.43.1 + version: 1.43.1 astro: specifier: workspace:* version: link:../../astro @@ -4095,8 +4092,8 @@ importers: specifier: workspace:* version: link:../../../scripts vite: - specifier: ^5.1.4 - version: 5.2.8(@types/node@18.19.31)(sass@1.75.0) + specifier: ^5.2.10 + version: 5.2.10(@types/node@18.19.31)(sass@1.75.0) packages/integrations/alpinejs/test/fixtures/basics: dependencies: @@ -4148,13 +4145,13 @@ importers: packages/integrations/lit: dependencies: '@lit-labs/ssr': - specifier: ^3.2.0 + specifier: ^3.2.2 version: 3.2.2 '@lit-labs/ssr-client': - specifier: ^1.1.5 + specifier: ^1.1.7 version: 1.1.7 '@lit-labs/ssr-dom-shim': - specifier: ^1.1.2 + specifier: ^1.2.0 version: 1.2.0 parse5: specifier: ^7.1.2 @@ -4170,10 +4167,10 @@ importers: specifier: 1.0.0-rc.12 version: 1.0.0-rc.12 lit: - specifier: ^3.1.0 - version: 3.1.2 + specifier: ^3.1.3 + version: 3.1.3 sass: - specifier: ^1.69.5 + specifier: ^1.75.0 version: 1.75.0 packages/integrations/markdoc: @@ -4188,11 +4185,11 @@ importers: specifier: workspace:* version: link:../../astro-prism '@markdoc/markdoc': - specifier: ^0.3.5 - version: 0.3.5 + specifier: ^0.4.0 + version: 0.4.0 esbuild: - specifier: ^0.19.6 - version: 0.19.12 + specifier: ^0.20.2 + version: 0.20.2 github-slugger: specifier: ^2.0.0 version: 2.0.0 @@ -4200,14 +4197,14 @@ importers: specifier: ^4.0.3 version: 4.0.3 htmlparser2: - specifier: ^9.0.0 + specifier: ^9.1.0 version: 9.1.0 kleur: specifier: ^4.1.5 version: 4.1.5 zod: - specifier: ^3.22.4 - version: 3.22.4 + specifier: ^3.23.0 + version: 3.23.0 devDependencies: '@types/html-escaper': specifier: ^3.0.2 @@ -4225,11 +4222,11 @@ importers: specifier: ^5.0.0 version: 5.0.0 linkedom: - specifier: ^0.16.4 + specifier: ^0.16.11 version: 0.16.11 vite: - specifier: ^5.1.4 - version: 5.2.8(@types/node@18.19.31)(sass@1.75.0) + specifier: ^5.2.10 + version: 5.2.10(@types/node@18.19.31)(sass@1.75.0) packages/integrations/markdoc/test/fixtures/content-collections: dependencies: @@ -4369,13 +4366,13 @@ importers: specifier: workspace:* version: link:../../markdown/remark '@mdx-js/mdx': - specifier: ^3.0.0 + specifier: ^3.0.1 version: 3.0.1 acorn: - specifier: ^8.11.2 + specifier: ^8.11.3 version: 8.11.3 es-module-lexer: - specifier: ^1.4.1 + specifier: ^1.5.0 version: 1.5.0 estree-util-visit: specifier: ^2.0.0 @@ -4387,10 +4384,10 @@ importers: specifier: ^4.0.3 version: 4.0.3 hast-util-to-html: - specifier: ^9.0.0 + specifier: ^9.0.1 version: 9.0.1 kleur: - specifier: ^4.1.4 + specifier: ^4.1.5 version: 4.1.5 rehype-raw: specifier: ^7.0.0 @@ -4417,9 +4414,6 @@ importers: '@types/mdast': specifier: ^4.0.3 version: 4.0.3 - '@types/mocha': - specifier: ^10.0.4 - version: 10.0.6 '@types/yargs-parser': specifier: ^21.0.3 version: 21.0.3 @@ -4433,7 +4427,7 @@ importers: specifier: 1.0.0-rc.12 version: 1.0.0-rc.12 linkedom: - specifier: ^0.16.4 + specifier: ^0.16.11 version: 0.16.11 mdast-util-mdx: specifier: ^3.0.0 @@ -4448,17 +4442,17 @@ importers: specifier: ^6.0.0 version: 6.0.0 rehype-pretty-code: - specifier: ^0.13.0 + specifier: ^0.13.1 version: 0.13.1 remark-math: specifier: ^6.0.0 version: 6.0.0 remark-rehype: - specifier: ^11.0.0 + specifier: ^11.1.0 version: 11.1.0 remark-shiki-twoslash: specifier: ^3.1.3 - version: 3.1.3(typescript@5.2.2) + version: 3.1.3(typescript@5.4.5) remark-toc: specifier: ^9.0.0 version: 9.0.0 @@ -4466,8 +4460,8 @@ importers: specifier: ^11.0.4 version: 11.0.4 vite: - specifier: ^5.1.4 - version: 5.2.8(@types/node@18.19.31)(sass@1.75.0) + specifier: ^5.2.10 + version: 5.2.10(@types/node@18.19.31)(sass@1.75.0) packages/integrations/mdx/test/fixtures/css-head-mdx: dependencies: @@ -4637,10 +4631,10 @@ importers: specifier: 1.0.0-rc.12 version: 1.0.0-rc.12 express: - specifier: ^4.18.2 + specifier: ^4.19.2 version: 4.19.2 node-mocks-http: - specifier: ^1.13.0 + specifier: ^1.14.1 version: 1.14.1 packages/integrations/node/test/fixtures/api-route: @@ -4772,8 +4766,8 @@ importers: packages/integrations/partytown: dependencies: '@builder.io/partytown': - specifier: ^0.8.0 - version: 0.8.2 + specifier: ^0.10.1 + version: 0.10.1 mrmime: specifier: ^2.0.0 version: 2.0.0 @@ -4788,17 +4782,17 @@ importers: packages/integrations/preact: dependencies: '@babel/plugin-transform-react-jsx': - specifier: ^7.22.5 + specifier: ^7.23.4 version: 7.23.4(@babel/core@7.24.4) '@babel/plugin-transform-react-jsx-development': specifier: ^7.22.5 version: 7.22.5 '@preact/preset-vite': - specifier: ^2.7.0 + specifier: ^2.8.2 version: 2.8.2(preact@10.20.2) '@preact/signals': - specifier: ^1.2.1 - version: 1.2.1(preact@10.20.2) + specifier: ^1.2.3 + version: 1.2.3(preact@10.20.2) babel-plugin-transform-hook-names: specifier: ^1.0.2 version: 1.0.2 @@ -4816,23 +4810,23 @@ importers: specifier: workspace:* version: link:../../../scripts preact: - specifier: ^10.19.2 + specifier: ^10.20.2 version: 10.20.2 packages/integrations/react: dependencies: '@vitejs/plugin-react': - specifier: ^4.2.0 - version: 4.2.1(vite@5.2.8) + specifier: ^4.2.1 + version: 4.2.1(vite@5.2.10) ultrahtml: - specifier: ^1.3.0 + specifier: ^1.5.3 version: 1.5.3 devDependencies: '@types/react': - specifier: ^18.2.37 - version: 18.2.78 + specifier: ^18.2.79 + version: 18.2.79 '@types/react-dom': - specifier: ^18.2.15 + specifier: ^18.2.25 version: 18.2.25 astro: specifier: workspace:* @@ -4844,14 +4838,14 @@ importers: specifier: 1.0.0-rc.12 version: 1.0.0-rc.12 react: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18.1.0 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) vite: - specifier: ^5.1.4 - version: 5.2.8(@types/node@18.19.31)(sass@1.75.0) + specifier: ^5.2.10 + version: 5.2.10(@types/node@18.19.31)(sass@1.75.0) packages/integrations/react/test/fixtures/react-component: dependencies: @@ -4872,7 +4866,7 @@ importers: version: 18.2.0(react@18.2.0) vue: specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + version: 3.4.21(typescript@5.4.5) packages/integrations/sitemap: dependencies: @@ -4883,8 +4877,8 @@ importers: specifier: ^2.0.0 version: 2.0.0 zod: - specifier: ^3.22.4 - version: 3.22.4 + specifier: ^3.23.0 + version: 3.23.0 devDependencies: '@astrojs/node': specifier: workspace:* @@ -4938,7 +4932,7 @@ importers: packages/integrations/solid: dependencies: vite-plugin-solid: - specifier: ^2.8.0 + specifier: ^2.10.2 version: 2.10.2(solid-js@1.8.16) devDependencies: astro: @@ -4948,17 +4942,17 @@ importers: specifier: workspace:* version: link:../../../scripts solid-js: - specifier: ^1.8.5 + specifier: ^1.8.16 version: 1.8.16 packages/integrations/svelte: dependencies: '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.0 - version: 3.1.0(svelte@4.2.14)(vite@5.2.8) + specifier: ^3.1.0 + version: 3.1.0(svelte@4.2.15)(vite@5.2.10) svelte2tsx: - specifier: ^0.6.27 - version: 0.6.27(svelte@4.2.14)(typescript@5.2.2) + specifier: ^0.7.6 + version: 0.7.6(svelte@4.2.15)(typescript@5.4.5) devDependencies: astro: specifier: workspace:* @@ -4967,19 +4961,19 @@ importers: specifier: workspace:* version: link:../../../scripts svelte: - specifier: ^4.2.5 - version: 4.2.14 + specifier: ^4.2.15 + version: 4.2.15 vite: - specifier: ^5.1.4 - version: 5.2.8(@types/node@18.19.31)(sass@1.75.0) + specifier: ^5.2.10 + version: 5.2.10(@types/node@18.19.31)(sass@1.75.0) packages/integrations/tailwind: dependencies: autoprefixer: - specifier: ^10.4.15 + specifier: ^10.4.19 version: 10.4.19(postcss@8.4.38) postcss: - specifier: ^8.4.35 + specifier: ^8.4.38 version: 8.4.38 postcss-load-config: specifier: ^4.0.2 @@ -4992,11 +4986,11 @@ importers: specifier: workspace:* version: link:../../../scripts tailwindcss: - specifier: ^3.3.5 + specifier: ^3.4.3 version: 3.4.3 vite: - specifier: ^5.1.4 - version: 5.2.8(@types/node@18.19.31)(sass@1.75.0) + specifier: ^5.2.10 + version: 5.2.10(@types/node@18.19.31)(sass@1.75.0) packages/integrations/tailwind/test/fixtures/basic: dependencies: @@ -5013,7 +5007,7 @@ importers: specifier: workspace:* version: link:../../internal-helpers '@vercel/analytics': - specifier: ^1.0.2 + specifier: ^1.2.2 version: 1.2.2 '@vercel/edge': specifier: ^1.1.1 @@ -5022,8 +5016,8 @@ importers: specifier: ^0.26.4 version: 0.26.4 esbuild: - specifier: ^0.19.6 - version: 0.19.12 + specifier: ^0.20.2 + version: 0.20.2 fast-glob: specifier: ^3.3.2 version: 3.3.2 @@ -5031,11 +5025,11 @@ importers: specifier: ^2.6.0 version: 2.6.0 web-vitals: - specifier: ^3.4.0 + specifier: ^3.5.2 version: 3.5.2 devDependencies: '@types/set-cookie-parser': - specifier: ^2.4.6 + specifier: ^2.4.7 version: 2.4.7 astro: specifier: workspace:* @@ -5231,13 +5225,13 @@ importers: dependencies: '@vitejs/plugin-vue': specifier: ^5.0.4 - version: 5.0.4(vite@5.2.8)(vue@3.4.21) + version: 5.0.4(vite@5.2.10)(vue@3.4.23) '@vitejs/plugin-vue-jsx': specifier: ^3.1.0 - version: 3.1.0(vite@5.2.8)(vue@3.4.21) + version: 3.1.0(vite@5.2.10)(vue@3.4.23) '@vue/compiler-sfc': - specifier: ^3.3.8 - version: 3.4.21 + specifier: ^3.4.23 + version: 3.4.23 devDependencies: astro: specifier: workspace:* @@ -5249,14 +5243,14 @@ importers: specifier: 1.0.0-rc.12 version: 1.0.0-rc.12 linkedom: - specifier: ^0.16.4 + specifier: ^0.16.11 version: 0.16.11 vite: - specifier: ^5.1.4 - version: 5.2.8(@types/node@18.19.31)(sass@1.75.0) + specifier: ^5.2.10 + version: 5.2.10(@types/node@18.19.31)(sass@1.75.0) vue: - specifier: ^3.3.8 - version: 3.4.21(typescript@5.2.2) + specifier: ^3.4.23 + version: 3.4.23(typescript@5.4.5) packages/integrations/vue/test/fixtures/app-entrypoint: dependencies: @@ -5345,11 +5339,11 @@ importers: specifier: ^2.0.0 version: 2.0.0 hast-util-from-html: - specifier: ^2.0.0 + specifier: ^2.0.1 version: 2.0.1 hast-util-to-text: - specifier: ^4.0.0 - version: 4.0.1 + specifier: ^4.0.2 + version: 4.0.2 import-meta-resolve: specifier: ^4.0.0 version: 4.0.0 @@ -5369,13 +5363,13 @@ importers: specifier: ^11.0.0 version: 11.0.0 remark-rehype: - specifier: ^11.0.0 + specifier: ^11.1.0 version: 11.1.0 remark-smartypants: specifier: ^3.0.0 version: 3.0.0 shiki: - specifier: ^1.1.2 + specifier: ^1.3.0 version: 1.3.0 unified: specifier: ^11.0.4 @@ -5387,7 +5381,7 @@ importers: specifier: ^5.0.0 version: 5.0.0 unist-util-visit-parents: - specifier: ^6.0.0 + specifier: ^6.0.1 version: 6.0.1 vfile: specifier: ^6.0.1 @@ -5397,14 +5391,11 @@ importers: specifier: ^1.0.5 version: 1.0.5 '@types/hast': - specifier: ^3.0.3 + specifier: ^3.0.4 version: 3.0.4 '@types/mdast': specifier: ^4.0.3 version: 4.0.3 - '@types/mocha': - specifier: ^10.0.4 - version: 10.0.6 '@types/unist': specifier: ^3.0.2 version: 3.0.2 @@ -5412,8 +5403,8 @@ importers: specifier: workspace:* version: link:../../../scripts esbuild: - specifier: ^0.19.6 - version: 0.19.12 + specifier: ^0.20.2 + version: 0.20.2 mdast-util-mdx-expression: specifier: ^2.0.0 version: 2.0.0 @@ -5436,7 +5427,7 @@ importers: specifier: ^3.0.0 version: 3.0.0 is-wsl: - specifier: ^3.0.0 + specifier: ^3.1.0 version: 3.1.0 which-pm-runs: specifier: ^1.1.0 @@ -5470,10 +5461,10 @@ importers: packages/upgrade: dependencies: '@astrojs/cli-kit': - specifier: ^0.2.3 - version: 0.2.5 + specifier: ^0.4.1 + version: 0.4.1 semver: - specifier: ^7.5.4 + specifier: ^7.6.0 version: 7.6.0 terminal-link: specifier: ^3.0.0 @@ -5483,10 +5474,10 @@ importers: version: 1.1.0 devDependencies: '@types/semver': - specifier: ^7.5.2 + specifier: ^7.5.8 version: 7.5.8 '@types/which-pm-runs': - specifier: ^1.0.0 + specifier: ^1.0.2 version: 1.0.2 arg: specifier: ^5.0.2 @@ -5504,33 +5495,33 @@ importers: specifier: ^5.0.2 version: 5.0.2 esbuild: - specifier: ^0.19.6 - version: 0.19.12 + specifier: ^0.20.2 + version: 0.20.2 globby: - specifier: ^14.0.0 + specifier: ^14.0.1 version: 14.0.1 kleur: - specifier: ^4.1.4 + specifier: ^4.1.5 version: 4.1.5 p-limit: specifier: ^5.0.0 version: 5.0.0 svelte: - specifier: ^4.2.5 - version: 4.2.14 + specifier: ^4.2.15 + version: 4.2.15 tar: specifier: ^7.0.1 version: 7.0.1 devDependencies: '@octokit/action': - specifier: ^6.0.5 + specifier: ^6.1.0 version: 6.1.0 del: - specifier: ^7.0.0 + specifier: ^7.1.0 version: 7.1.0 esbuild-plugin-copy: specifier: ^2.1.1 - version: 2.1.1(esbuild@0.19.12) + version: 2.1.1(esbuild@0.20.2) execa: specifier: ^8.0.1 version: 8.0.1 @@ -5615,30 +5606,13 @@ packages: lite-youtube-embed: 0.3.2 dev: false - /@astrojs/check@0.5.10(prettier-plugin-astro@0.12.3)(prettier@3.2.5)(typescript@5.2.2): + /@astrojs/check@0.5.10(prettier-plugin-astro@0.13.0)(prettier@3.2.5)(typescript@5.4.5): resolution: {integrity: sha512-vliHXM9cu/viGeKiksUM4mXfO816ohWtawTl2ADPgTsd4nUMjFiyAl7xFZhF34yy4hq4qf7jvK1F2PlR3b5I5w==} hasBin: true peerDependencies: typescript: ^5.0.0 dependencies: - '@astrojs/language-server': 2.8.4(prettier-plugin-astro@0.12.3)(prettier@3.2.5)(typescript@5.2.2) - chokidar: 3.6.0 - fast-glob: 3.3.2 - kleur: 4.1.5 - typescript: 5.2.2 - yargs: 17.7.2 - transitivePeerDependencies: - - prettier - - prettier-plugin-astro - dev: true - - /@astrojs/check@0.5.10(prettier-plugin-astro@0.12.3)(prettier@3.2.5)(typescript@5.4.5): - resolution: {integrity: sha512-vliHXM9cu/viGeKiksUM4mXfO816ohWtawTl2ADPgTsd4nUMjFiyAl7xFZhF34yy4hq4qf7jvK1F2PlR3b5I5w==} - hasBin: true - peerDependencies: - typescript: ^5.0.0 - dependencies: - '@astrojs/language-server': 2.8.4(prettier-plugin-astro@0.12.3)(prettier@3.2.5)(typescript@5.4.5) + '@astrojs/language-server': 2.8.4(prettier-plugin-astro@0.13.0)(prettier@3.2.5)(typescript@5.4.5) chokidar: 3.6.0 fast-glob: 3.3.2 kleur: 4.1.5 @@ -5647,15 +5621,6 @@ packages: transitivePeerDependencies: - prettier - prettier-plugin-astro - dev: false - - /@astrojs/cli-kit@0.2.5: - resolution: {integrity: sha512-j6zpNUjtHJGEIKkTrTPvQD3G/sJUKyseJty42iVR3HqytzqHwLK165vptdT4NZKfZ082yLnUtsOXxRyIdfm/AQ==} - dependencies: - chalk: 5.3.0 - log-update: 5.0.1 - sisteransi: 1.0.5 - dev: false /@astrojs/cli-kit@0.4.1: resolution: {integrity: sha512-bVzyKzEpIwqjihBU/aUzt1LQckJuHK0agd3/ITdXhPUYculrc6K1/K7H+XG4rwjXtg+ikT3PM05V1MVYWiIvQw==} @@ -5672,41 +5637,7 @@ packages: /@astrojs/compiler@2.7.1: resolution: {integrity: sha512-/POejAYuj8WEw7ZI0J8JBvevjfp9jQ9Wmu/Bg52RiNwGXkMV7JnYpsenVfHvvf1G7R5sXHGKlTcxlQWhoUTiGQ==} - /@astrojs/language-server@2.8.4(prettier-plugin-astro@0.12.3)(prettier@3.2.5)(typescript@5.2.2): - resolution: {integrity: sha512-sJH5vGTBkhgA8+hdhzX78UUp4cFz4Mt7xkEkevD188OS5bDMkaue6hK+dtXWM47mnrXFveXA2u38K7S+5+IRjA==} - hasBin: true - peerDependencies: - prettier: ^3.0.0 - prettier-plugin-astro: '>=0.11.0' - peerDependenciesMeta: - prettier: - optional: true - prettier-plugin-astro: - optional: true - dependencies: - '@astrojs/compiler': 2.7.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@volar/kit': 2.1.6(typescript@5.2.2) - '@volar/language-core': 2.1.6 - '@volar/language-server': 2.1.6 - '@volar/language-service': 2.1.6 - '@volar/typescript': 2.1.6 - fast-glob: 3.3.2 - prettier: 3.2.5 - prettier-plugin-astro: 0.12.3 - volar-service-css: 0.0.34(@volar/language-service@2.1.6) - volar-service-emmet: 0.0.34(@volar/language-service@2.1.6) - volar-service-html: 0.0.34(@volar/language-service@2.1.6) - volar-service-prettier: 0.0.34(@volar/language-service@2.1.6)(prettier@3.2.5) - volar-service-typescript: 0.0.34(@volar/language-service@2.1.6) - volar-service-typescript-twoslash-queries: 0.0.34(@volar/language-service@2.1.6) - vscode-html-languageservice: 5.2.0 - vscode-uri: 3.0.8 - transitivePeerDependencies: - - typescript - dev: true - - /@astrojs/language-server@2.8.4(prettier-plugin-astro@0.12.3)(prettier@3.2.5)(typescript@5.4.5): + /@astrojs/language-server@2.8.4(prettier-plugin-astro@0.13.0)(prettier@3.2.5)(typescript@5.4.5): resolution: {integrity: sha512-sJH5vGTBkhgA8+hdhzX78UUp4cFz4Mt7xkEkevD188OS5bDMkaue6hK+dtXWM47mnrXFveXA2u38K7S+5+IRjA==} hasBin: true peerDependencies: @@ -5727,7 +5658,7 @@ packages: '@volar/typescript': 2.1.6 fast-glob: 3.3.2 prettier: 3.2.5 - prettier-plugin-astro: 0.12.3 + prettier-plugin-astro: 0.13.0 volar-service-css: 0.0.34(@volar/language-service@2.1.6) volar-service-emmet: 0.0.34(@volar/language-service@2.1.6) volar-service-html: 0.0.34(@volar/language-service@2.1.6) @@ -5738,7 +5669,6 @@ packages: vscode-uri: 3.0.8 transitivePeerDependencies: - typescript - dev: false /@babel/code-frame@7.24.2: resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} @@ -6204,8 +6134,8 @@ packages: dev: true optional: true - /@builder.io/partytown@0.8.2: - resolution: {integrity: sha512-WKGE+SO0qUGirW8J+xOWkHeCkfFEoPPvHnFkcdMl+MY3kDbAcTwjZCzjg27JCvoD0h8fH47FR7DSIss0/S5lyg==} + /@builder.io/partytown@0.10.1: + resolution: {integrity: sha512-HTyW2do++3JUFKTLBjTGwhUu4MTwBDq0dBlWaQm7tLaQk237tnHNkBZmquDXkZ6CkSv8aHiIH40Wm2/nxkjQsQ==} engines: {node: '>=18.0.0'} hasBin: true dev: false @@ -6245,11 +6175,11 @@ packages: '@changesets/types': 6.0.0 dev: true - /@changesets/changelog-github@0.4.8: - resolution: {integrity: sha512-jR1DHibkMAb5v/8ym77E4AMNWZKB5NPzw5a5Wtqm1JepAuIF+hrKp2u04NKM14oBZhHglkCfrla9uq8ORnK/dw==} + /@changesets/changelog-github@0.5.0: + resolution: {integrity: sha512-zoeq2LJJVcPJcIotHRJEEA2qCqX0AQIeFE+L21L8sRLPVqDhSXY8ZWAt2sohtBpFZkBwu+LUwMSKRr2lMy3LJA==} dependencies: - '@changesets/get-github-info': 0.5.2 - '@changesets/types': 5.2.1 + '@changesets/get-github-info': 0.6.0 + '@changesets/types': 6.0.0 dotenv: 8.6.0 transitivePeerDependencies: - encoding @@ -6321,8 +6251,8 @@ packages: semver: 7.6.0 dev: true - /@changesets/get-github-info@0.5.2: - resolution: {integrity: sha512-JppheLu7S114aEs157fOZDjFqUDpm7eHdq5E8SSR0gUBTEK0cNSHsrSR5a66xs0z3RWuo46QvA3vawp8BxDHvg==} + /@changesets/get-github-info@0.6.0: + resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} dependencies: dataloader: 1.4.0 node-fetch: 2.7.0 @@ -6398,10 +6328,6 @@ packages: resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} dev: true - /@changesets/types@5.2.1: - resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==} - dev: true - /@changesets/types@6.0.0: resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} dev: true @@ -6878,14 +6804,6 @@ packages: /@emmetio/scanner@1.0.4: resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} - /@esbuild/aix-ppc64@0.19.12: - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - requiresBuild: true - optional: true - /@esbuild/aix-ppc64@0.20.2: resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} engines: {node: '>=12'} @@ -6894,14 +6812,6 @@ packages: requiresBuild: true optional: true - /@esbuild/android-arm64@0.19.12: - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - optional: true - /@esbuild/android-arm64@0.20.2: resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} engines: {node: '>=12'} @@ -6910,14 +6820,6 @@ packages: requiresBuild: true optional: true - /@esbuild/android-arm@0.19.12: - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - optional: true - /@esbuild/android-arm@0.20.2: resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} engines: {node: '>=12'} @@ -6926,14 +6828,6 @@ packages: requiresBuild: true optional: true - /@esbuild/android-x64@0.19.12: - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - optional: true - /@esbuild/android-x64@0.20.2: resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} engines: {node: '>=12'} @@ -6942,14 +6836,6 @@ packages: requiresBuild: true optional: true - /@esbuild/darwin-arm64@0.19.12: - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - optional: true - /@esbuild/darwin-arm64@0.20.2: resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} engines: {node: '>=12'} @@ -6958,14 +6844,6 @@ packages: requiresBuild: true optional: true - /@esbuild/darwin-x64@0.19.12: - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - optional: true - /@esbuild/darwin-x64@0.20.2: resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} engines: {node: '>=12'} @@ -6974,14 +6852,6 @@ packages: requiresBuild: true optional: true - /@esbuild/freebsd-arm64@0.19.12: - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - optional: true - /@esbuild/freebsd-arm64@0.20.2: resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} engines: {node: '>=12'} @@ -6990,14 +6860,6 @@ packages: requiresBuild: true optional: true - /@esbuild/freebsd-x64@0.19.12: - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - optional: true - /@esbuild/freebsd-x64@0.20.2: resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} engines: {node: '>=12'} @@ -7006,14 +6868,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-arm64@0.19.12: - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-arm64@0.20.2: resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} engines: {node: '>=12'} @@ -7022,14 +6876,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-arm@0.19.12: - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-arm@0.20.2: resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} engines: {node: '>=12'} @@ -7038,14 +6884,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-ia32@0.19.12: - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-ia32@0.20.2: resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} engines: {node: '>=12'} @@ -7054,14 +6892,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-loong64@0.19.12: - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-loong64@0.20.2: resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} engines: {node: '>=12'} @@ -7070,14 +6900,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-mips64el@0.19.12: - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-mips64el@0.20.2: resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} engines: {node: '>=12'} @@ -7086,14 +6908,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-ppc64@0.19.12: - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-ppc64@0.20.2: resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} engines: {node: '>=12'} @@ -7102,14 +6916,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-riscv64@0.19.12: - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-riscv64@0.20.2: resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} engines: {node: '>=12'} @@ -7118,14 +6924,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-s390x@0.19.12: - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-s390x@0.20.2: resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} engines: {node: '>=12'} @@ -7134,14 +6932,6 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-x64@0.19.12: - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-x64@0.20.2: resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} engines: {node: '>=12'} @@ -7150,14 +6940,6 @@ packages: requiresBuild: true optional: true - /@esbuild/netbsd-x64@0.19.12: - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - optional: true - /@esbuild/netbsd-x64@0.20.2: resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} engines: {node: '>=12'} @@ -7166,14 +6948,6 @@ packages: requiresBuild: true optional: true - /@esbuild/openbsd-x64@0.19.12: - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - optional: true - /@esbuild/openbsd-x64@0.20.2: resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} engines: {node: '>=12'} @@ -7182,14 +6956,6 @@ packages: requiresBuild: true optional: true - /@esbuild/sunos-x64@0.19.12: - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - optional: true - /@esbuild/sunos-x64@0.20.2: resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} engines: {node: '>=12'} @@ -7198,14 +6964,6 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-arm64@0.19.12: - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - optional: true - /@esbuild/win32-arm64@0.20.2: resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} engines: {node: '>=12'} @@ -7214,14 +6972,6 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-ia32@0.19.12: - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - optional: true - /@esbuild/win32-ia32@0.20.2: resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} engines: {node: '>=12'} @@ -7230,14 +6980,6 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-x64@0.19.12: - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - optional: true - /@esbuild/win32-x64@0.20.2: resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} engines: {node: '>=12'} @@ -7246,13 +6988,13 @@ packages: requiresBuild: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@9.0.0): + /@eslint-community/eslint-utils@4.4.0(eslint@9.1.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 9.0.0 + eslint: 9.1.0 eslint-visitor-keys: 3.4.3 dev: true @@ -7278,8 +7020,8 @@ packages: - supports-color dev: true - /@eslint/js@9.0.0: - resolution: {integrity: sha512-RThY/MnKrhubF6+s1JflwUjPEsnCEmYCWwqa/aRISKWNXGZ9epUwft4bUMM35SdKF9xvBrLydAM1RDHd1Z//ZQ==} + /@eslint/js@9.1.1: + resolution: {integrity: sha512-5WoDz3Y19Bg2BnErkZTp0en+c/i9PvgFS7MBe1+m60HjFr0hrphlAGp4yzI7pxpt4xShln4ZyYp4neJm8hmOkQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true @@ -7291,8 +7033,8 @@ packages: resolution: {integrity: sha512-ZJbsCIJp6VHL1wYQUPpyBjXMzwGdfFedrmrw4r5sFi7WrMpnfJv+el1uVO6yDPIqnVqkPvjJ+xeKgJwnj2LuQQ==} dev: false - /@humanwhocodes/config-array@0.12.3: - resolution: {integrity: sha512-jsNnTBlMWuTpDkeE3on7+dWJi0D6fdDfeANj/w7MpS8ztROCoLvIO2nG0CcFj+E4k8j4QrSTh4Oryi3i2G669g==} + /@humanwhocodes/config-array@0.13.0: + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 2.0.3 @@ -7311,6 +7053,11 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} dev: true + /@humanwhocodes/retry@0.2.3: + resolution: {integrity: sha512-X38nUbachlb01YMlvPFojKoiXq+LzZvuSce70KPMPdeM1Rj03k4dR7lDslhbqXn3Ang4EU3+EAmwEAsbrjHW3g==} + engines: {node: '>=18.18'} + dev: true + /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -7365,21 +7112,20 @@ packages: resolution: {integrity: sha512-n5JEf16Wr4mdkRMZ8wMP/wN9/sHmTjRPbouXjJH371mZ2LEGDl72t8tEsMRNFerQN/QJtivOxqK1frdGa4QK5Q==} engines: {node: '>=10'} - /@libsql/client@0.5.6: - resolution: {integrity: sha512-UBjmDoxz75Z2sHdP+ETCROpeLA/77VMesiff8R4UWK1rnaWbh6/YoCLDILMJL3Rh0udQeKxjL8MjXthqohax+g==} + /@libsql/client@0.6.0: + resolution: {integrity: sha512-qhQzTG/y2IEVbL3+9PULDvlQFWJ/RnjFXECr/Nc3nRngGiiMysDaOV5VUzYk7DulUX98EA4wi+z3FspKrUplUA==} dependencies: - '@libsql/core': 0.5.6 - '@libsql/hrana-client': 0.5.6 + '@libsql/core': 0.6.0 + '@libsql/hrana-client': 0.6.0 js-base64: 3.7.7 libsql: 0.3.12 transitivePeerDependencies: - bufferutil - - encoding - utf-8-validate dev: false - /@libsql/core@0.5.6: - resolution: {integrity: sha512-3vicUAydq6jPth410n4AsHHm1n2psTwvkSf94nfJlSXutGSZsl0updn2N/mJBgqUHkbuFoWZtlMifF0SwBj1xQ==} + /@libsql/core@0.6.0: + resolution: {integrity: sha512-affAB8vSqQwqI9NBDJ5uJCVaHoOAS2pOpbv1kWConh1SBbmJBnHHd4KG73RAJ2sgd2+NbT9WA+XJBqxgp28YSw==} dependencies: js-base64: 3.7.7 dev: false @@ -7400,26 +7146,20 @@ packages: dev: false optional: true - /@libsql/hrana-client@0.5.6: - resolution: {integrity: sha512-mjQoAmejZ1atG+M3YR2ZW+rg6ceBByH/S/h17ZoYZkqbWrvohFhXyz2LFxj++ARMoY9m6w3RJJIRdJdmnEUlFg==} + /@libsql/hrana-client@0.6.0: + resolution: {integrity: sha512-k+fqzdjqg3IvWfKmVJK5StsbjeTcyNAXFelUbXbGNz3yH1gEVT9mZ6kmhsIXP30ZSyVV0AE1Gi25p82mxC9hwg==} dependencies: - '@libsql/isomorphic-fetch': 0.1.12 + '@libsql/isomorphic-fetch': 0.2.1 '@libsql/isomorphic-ws': 0.1.5 js-base64: 3.7.7 node-fetch: 3.3.2 transitivePeerDependencies: - bufferutil - - encoding - utf-8-validate dev: false - /@libsql/isomorphic-fetch@0.1.12: - resolution: {integrity: sha512-MRo4UcmjAGAa3ac56LoD5OE13m2p0lu0VEtZC2NZMcogM/jc5fU9YtMQ3qbPjFJ+u2BBjFZgMPkQaLS1dlMhpg==} - dependencies: - '@types/node-fetch': 2.6.11 - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding + /@libsql/isomorphic-fetch@0.2.1: + resolution: {integrity: sha512-Sv07QP1Aw8A5OOrmKgRUBKe2fFhF2hpGJhtHe3d1aRnTESZCGkn//0zDycMKTGamVWb3oLYRroOsCV8Ukes9GA==} dev: false /@libsql/isomorphic-ws@0.1.5: @@ -7476,7 +7216,7 @@ packages: resolution: {integrity: sha512-VvqhY/iif3FHrlhkzEPsuX/7h/NqnfxLwVf0p8ghNIlKegRyRqgeaJevZ57s/u/LiFyKgqksRP5n+LmNvpxN+A==} dependencies: '@lit/reactive-element': 2.0.4 - lit: 3.1.2 + lit: 3.1.3 lit-html: 3.1.2 dev: false @@ -7493,7 +7233,7 @@ packages: '@parse5/tools': 0.3.0 '@types/node': 16.18.96 enhanced-resolve: 5.16.0 - lit: 3.1.2 + lit: 3.1.3 lit-element: 4.0.4 lit-html: 3.1.2 node-fetch: 3.3.2 @@ -7543,8 +7283,8 @@ packages: - supports-color dev: false - /@markdoc/markdoc@0.3.5: - resolution: {integrity: sha512-Z3agu2wnodoOYd5kzKbtwZduSfX19Kbsg/FlK0TeMn29cTTEEVPJtjfgKSMTN/Wq+kUQXnPtOEhHRgke5d/Xiw==} + /@markdoc/markdoc@0.4.0: + resolution: {integrity: sha512-fSh4P3Y4E7oaKYc2oNzSIJVPDto7SMzAuQN1Iyx53UxzleA6QzRdNWRxmiPqtVDaDi5dELd2yICoG91csrGrAw==} engines: {node: '>=14.7.0'} peerDependencies: '@types/react': '*' @@ -7752,12 +7492,12 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dev: true - /@playwright/test@1.40.0: - resolution: {integrity: sha512-PdW+kn4eV99iP5gxWNSDQCbhMaDVej+RXL5xr6t04nbKLCBwYtA046t7ofoczHOm8u6c+45hpDKQVZqtqwkeQg==} + /@playwright/test@1.43.1: + resolution: {integrity: sha512-HgtQzFgNEEo4TE22K/X7sYTYNqEMMTZmFS8kTq6m8hXj+m1D8TgwgIbumHddJa9h4yl4GkKb8/bgAl2+g7eDgA==} engines: {node: '>=16'} hasBin: true dependencies: - playwright: 1.40.0 + playwright: 1.43.1 dev: true /@preact/preset-vite@2.8.2(preact@10.20.2): @@ -7801,6 +7541,15 @@ packages: preact: 10.20.2 dev: false + /@preact/signals@1.2.3(preact@10.20.2): + resolution: {integrity: sha512-M2DXse3Wi8HwjI1d2vQWOLJ3lHogvqTsJYvl4ofXRXgMFQzJ7kmlZvlt5i8x5S5VwgZu0ghru4HkLqOoFfU2JQ==} + peerDependencies: + preact: 10.x + dependencies: + '@preact/signals-core': 1.6.0 + preact: 10.20.2 + dev: false + /@prefresh/babel-plugin@0.5.1: resolution: {integrity: sha512-uG3jGEAysxWoyG3XkYfjYHgaySFrSsaEb4GagLzYaxlydbuREtaX+FTxuIidp241RaLl85XoHg9Ej6E4+V1pcg==} dev: false @@ -7844,113 +7593,113 @@ packages: picomatch: 2.3.1 dev: false - /@rollup/rollup-android-arm-eabi@4.14.3: - resolution: {integrity: sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==} + /@rollup/rollup-android-arm-eabi@4.16.1: + resolution: {integrity: sha512-92/y0TqNLRYOTXpm6Z7mnpvKAG9P7qmK7yJeRJSdzElNCUnsgbpAsGqerUboYRIQKzgfq4pWu9xVkgpWLfmNsw==} cpu: [arm] os: [android] requiresBuild: true optional: true - /@rollup/rollup-android-arm64@4.14.3: - resolution: {integrity: sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==} + /@rollup/rollup-android-arm64@4.16.1: + resolution: {integrity: sha512-ttWB6ZCfRLuDIUiE0yiu5gcqOsYjA5F7kEV1ggHMj20FwLZ8A1FMeahZJFl/pnOmcnD2QL0z4AcDuo27utGU8A==} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@rollup/rollup-darwin-arm64@4.14.3: - resolution: {integrity: sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA==} + /@rollup/rollup-darwin-arm64@4.16.1: + resolution: {integrity: sha512-QLDvPLetbqjHojTGFw9+nuSP3YY/iz2k1cep6crYlr97sS+ZJ0W43b8Z0zC00+lnFZj6JSNxiA4DjboNQMuh1A==} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-darwin-x64@4.14.3: - resolution: {integrity: sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==} + /@rollup/rollup-darwin-x64@4.16.1: + resolution: {integrity: sha512-TAUK/D8khRrRIa1KwRzo8JNKk3tcqaeXWdtsiLgA8zmACWwlWLjPCJ4DULGHQrMkeBjp1Cd3Yuwx04lZgFx5Vg==} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.14.3: - resolution: {integrity: sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==} + /@rollup/rollup-linux-arm-gnueabihf@4.16.1: + resolution: {integrity: sha512-KO+WGZjrh6zyFTD1alIFkfdtxf8B4BC+hqd3kBZHscPLvE5FR/6QKsyuCT0JlERxxYBSUKNUQ/UHyX5uwO1x2A==} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm-musleabihf@4.14.3: - resolution: {integrity: sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==} + /@rollup/rollup-linux-arm-musleabihf@4.16.1: + resolution: {integrity: sha512-NqxbllzIB1WoAo4ThUXVtd21iiM5IHMTTXmXySKBLVcZvkU0HIZmatlP7hLzb5yQubcmdIeWmncd2NdsjocEiw==} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.14.3: - resolution: {integrity: sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==} + /@rollup/rollup-linux-arm64-gnu@4.16.1: + resolution: {integrity: sha512-snma5NvV8y7IECQ5rq0sr0f3UUu+92NVmG/913JXJMcXo84h9ak9TA5UI9Cl2XRM9j3m37QwDBtEYnJzRkSmxA==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-musl@4.14.3: - resolution: {integrity: sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==} + /@rollup/rollup-linux-arm64-musl@4.16.1: + resolution: {integrity: sha512-KOvqGprlD84ueivhCi2flvcUwDRD20mAsE3vxQNVEI2Di9tnPGAfEu6UcrSPZbM+jG2w1oSr43hrPo0RNg6GGg==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.14.3: - resolution: {integrity: sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==} + /@rollup/rollup-linux-powerpc64le-gnu@4.16.1: + resolution: {integrity: sha512-/gsNwtiGLqYwN4vP+EIdUC6Q6LTlpupWqokqIndvZcjn9ig/5P01WyaYCU2wvfL/2Z82jp5kX8c1mDBOvCP3zg==} cpu: [ppc64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.14.3: - resolution: {integrity: sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==} + /@rollup/rollup-linux-riscv64-gnu@4.16.1: + resolution: {integrity: sha512-uU8zuGkQfGqfD9w6VRJZI4IuG4JIfNxxJgEmLMAmPVHREKGsxFVfgHy5c6CexQF2vOfgjB33OsET3Vdn2lln9A==} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-s390x-gnu@4.14.3: - resolution: {integrity: sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==} + /@rollup/rollup-linux-s390x-gnu@4.16.1: + resolution: {integrity: sha512-lsjLtDgtcGFEuBP6yrXwkRN5/wKlvUZtfbKZZu0yaoNpiBL4epgnO21osAALIspVRnl4qZgyLFd8xjCYYWgwfw==} cpu: [s390x] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-gnu@4.14.3: - resolution: {integrity: sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==} + /@rollup/rollup-linux-x64-gnu@4.16.1: + resolution: {integrity: sha512-N2ZizKhUryqqrMfdCnjhJhZRgv61C6gK+hwVtCIKC8ts8J+go+vqENnGexwg21nHIOvLN5mBM8a7DI2vlyIOPg==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-musl@4.14.3: - resolution: {integrity: sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==} + /@rollup/rollup-linux-x64-musl@4.16.1: + resolution: {integrity: sha512-5ICeMxqg66FrOA2AbnBQ2TJVxfvZsKLxmof0ibvPLaYtbsJqnTUtJOofgWb46Gjd4uZcA4rdsp4JCxegzQPqCg==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.14.3: - resolution: {integrity: sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==} + /@rollup/rollup-win32-arm64-msvc@4.16.1: + resolution: {integrity: sha512-1vIP6Ce02L+qWD7uZYRiFiuAJo3m9kARatWmFSnss0gZnVj2Id7OPUU9gm49JPGasgcR3xMqiH3fqBJ8t00yVg==} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.14.3: - resolution: {integrity: sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==} + /@rollup/rollup-win32-ia32-msvc@4.16.1: + resolution: {integrity: sha512-Y3M92DcVsT6LoP+wrKpoUWPaazaP1fzbNkp0a0ZSj5Y//+pQVfVe/tQdsYQQy7dwXR30ZfALUIc9PCh9Izir6w==} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-x64-msvc@4.14.3: - resolution: {integrity: sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==} + /@rollup/rollup-win32-x64-msvc@4.16.1: + resolution: {integrity: sha512-x0fvpHMuF7fK5r8oZxSi8VYXkrVmRgubXpO/wcf15Lk3xZ4Jvvh5oG+u7Su1776A7XzVKZhD2eRc4t7H50gL3w==} cpu: [x64] os: [win32] requiresBuild: true @@ -7976,7 +7725,7 @@ packages: solid-js: 1.8.16 dev: false - /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.8): + /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.10): resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} engines: {node: ^18.0.0 || >=20} peerDependencies: @@ -7987,15 +7736,15 @@ packages: vite: optional: true dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.14)(vite@5.2.8) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.10) debug: 4.3.4(supports-color@8.1.1) - svelte: 4.2.14 - vite: 5.2.8(@types/node@18.19.31)(sass@1.75.0) + svelte: 4.2.15 + vite: 5.2.10(@types/node@18.19.31)(sass@1.75.0) transitivePeerDependencies: - supports-color dev: false - /@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.14)(vite@5.2.8): + /@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.10): resolution: {integrity: sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==} engines: {node: ^18.0.0 || >=20} peerDependencies: @@ -8005,15 +7754,15 @@ packages: vite: optional: true dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.8) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.10) debug: 4.3.4(supports-color@8.1.1) deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.9 - svelte: 4.2.14 - svelte-hmr: 0.16.0(svelte@4.2.14) - vite: 5.2.8(@types/node@18.19.31)(sass@1.75.0) - vitefu: 0.2.5(vite@5.2.8) + magic-string: 0.30.10 + svelte: 4.2.15 + svelte-hmr: 0.16.0(svelte@4.2.15) + vite: 5.2.10(@types/node@18.19.31)(sass@1.75.0) + vitefu: 0.2.5(vite@5.2.10) transitivePeerDependencies: - supports-color dev: false @@ -8105,8 +7854,8 @@ packages: '@types/node': 18.19.31 dev: true - /@types/cookie@0.5.4: - resolution: {integrity: sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==} + /@types/cookie@0.6.0: + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} dev: false /@types/cssesc@3.0.2: @@ -8122,8 +7871,8 @@ packages: resolution: {integrity: sha512-PQyNSy1YMZU1hgZA5tTYfHPpUAo9Dorn1PZho2/budQLfqLu3JIP37JAavnwYpR1S2yFZTXa3hxaE4ifGW5jaA==} dev: true - /@types/diff@5.0.9: - resolution: {integrity: sha512-RWVEhh/zGXpAVF/ZChwNnv7r4rvqzJ7lYNSmZSVTxjV0PBLf6Qu7RNg+SUtkpzxmiNkjCx0Xn2tPp7FIkshJwQ==} + /@types/diff@5.2.0: + resolution: {integrity: sha512-pjJH+02ukgJRW0mViDUA1cdC+wzSgRu0e4cPuogPLAw0i66y62iMP0ZlXoJAmoXrKRZnF3pMDwyKZsgNVlMX4A==} dev: true /@types/dlv@1.1.4: @@ -8263,13 +8012,6 @@ packages: '@types/unist': 3.0.2 dev: false - /@types/node-fetch@2.6.11: - resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} - dependencies: - '@types/node': 18.19.31 - form-data: 4.0.0 - dev: false - /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true @@ -8337,6 +8079,12 @@ packages: '@types/prop-types': 15.7.12 csstype: 3.1.3 + /@types/react@18.2.79: + resolution: {integrity: sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==} + dependencies: + '@types/prop-types': 15.7.12 + csstype: 3.1.3 + /@types/relateurl@0.2.33: resolution: {integrity: sha512-bTQCKsVbIdzLqZhLkF5fcJQreE4y1ro4DIyVrlDNSCJRRwHhB8Z+4zXXa8jN6eDvc2HbRsEYgbvrnGvi54EpSw==} dev: true @@ -8429,8 +8177,8 @@ packages: resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} dev: true - /@typescript-eslint/eslint-plugin@7.6.0(@typescript-eslint/parser@7.6.0)(eslint@9.0.0)(typescript@5.2.2): - resolution: {integrity: sha512-gKmTNwZnblUdnTIJu3e9kmeRRzV2j1a/LUO27KNNAnIC5zjy1aSvXSRp4rVNlmAoHlQ7HzX42NbKpcSr4jF80A==} + /@typescript-eslint/eslint-plugin@7.7.0(@typescript-eslint/parser@7.7.0)(eslint@9.1.0)(typescript@5.4.5): + resolution: {integrity: sha512-GJWR0YnfrKnsRoluVO3PRb9r5aMZriiMMM/RHj5nnTrBy1/wIgk76XCtCKcnXGjpZQJQRFtGV9/0JJ6n30uwpQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -8441,25 +8189,25 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.6.0(eslint@9.0.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 7.6.0 - '@typescript-eslint/type-utils': 7.6.0(eslint@9.0.0)(typescript@5.2.2) - '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 7.6.0 + '@typescript-eslint/parser': 7.7.0(eslint@9.1.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.7.0 + '@typescript-eslint/type-utils': 7.7.0(eslint@9.1.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.0(eslint@9.1.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.7.0 debug: 4.3.4(supports-color@8.1.1) - eslint: 9.0.0 + eslint: 9.1.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.2.2) - typescript: 5.2.2 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@7.6.0(eslint@9.0.0)(typescript@5.2.2): - resolution: {integrity: sha512-usPMPHcwX3ZoPWnBnhhorc14NJw9J4HpSXQX4urF2TPKG0au0XhJoZyX62fmvdHONUkmyUe74Hzm1//XA+BoYg==} + /@typescript-eslint/parser@7.7.0(eslint@9.1.0)(typescript@5.4.5): + resolution: {integrity: sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -8468,27 +8216,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.6.0 - '@typescript-eslint/types': 7.6.0 - '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 7.6.0 + '@typescript-eslint/scope-manager': 7.7.0 + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.7.0 debug: 4.3.4(supports-color@8.1.1) - eslint: 9.0.0 - typescript: 5.2.2 + eslint: 9.1.0 + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@7.6.0: - resolution: {integrity: sha512-ngttyfExA5PsHSx0rdFgnADMYQi+Zkeiv4/ZxGYUWd0nLs63Ha0ksmp8VMxAIC0wtCFxMos7Lt3PszJssG/E6w==} + /@typescript-eslint/scope-manager@7.7.0: + resolution: {integrity: sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.6.0 - '@typescript-eslint/visitor-keys': 7.6.0 + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/visitor-keys': 7.7.0 dev: true - /@typescript-eslint/type-utils@7.6.0(eslint@9.0.0)(typescript@5.2.2): - resolution: {integrity: sha512-NxAfqAPNLG6LTmy7uZgpK8KcuiS2NZD/HlThPXQRGwz6u7MDBWRVliEEl1Gj6U7++kVJTpehkhZzCJLMK66Scw==} + /@typescript-eslint/type-utils@7.7.0(eslint@9.1.0)(typescript@5.4.5): + resolution: {integrity: sha512-bOp3ejoRYrhAlnT/bozNQi3nio9tIgv3U5C0mVDdZC7cpcQEDZXvq8inrHYghLVwuNABRqrMW5tzAv88Vy77Sg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -8497,23 +8245,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.2.2) - '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.0(eslint@9.1.0)(typescript@5.4.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 9.0.0 - ts-api-utils: 1.3.0(typescript@5.2.2) - typescript: 5.2.2 + eslint: 9.1.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@7.6.0: - resolution: {integrity: sha512-h02rYQn8J+MureCvHVVzhl69/GAfQGPQZmOMjG1KfCl7o3HtMSlPaPUAPu6lLctXI5ySRGIYk94clD/AUMCUgQ==} + /@typescript-eslint/types@7.7.0: + resolution: {integrity: sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==} engines: {node: ^18.18.0 || >=20.0.0} dev: true - /@typescript-eslint/typescript-estree@7.6.0(typescript@5.2.2): - resolution: {integrity: sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw==} + /@typescript-eslint/typescript-estree@7.7.0(typescript@5.4.5): + resolution: {integrity: sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -8521,43 +8269,43 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.6.0 - '@typescript-eslint/visitor-keys': 7.6.0 + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/visitor-keys': 7.7.0 debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.2.2) - typescript: 5.2.2 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@7.6.0(eslint@9.0.0)(typescript@5.2.2): - resolution: {integrity: sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==} + /@typescript-eslint/utils@7.7.0(eslint@9.1.0)(typescript@5.4.5): + resolution: {integrity: sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.1.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 7.6.0 - '@typescript-eslint/types': 7.6.0 - '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.2.2) - eslint: 9.0.0 + '@typescript-eslint/scope-manager': 7.7.0 + '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) + eslint: 9.1.0 semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@7.6.0: - resolution: {integrity: sha512-4eLB7t+LlNUmXzfOu1VAIAdkjbu5xNSerURS9X/S5TUKWFRpXRQZbmtPqgKmYx8bj3J0irtQXSiWAOY82v+cgw==} + /@typescript-eslint/visitor-keys@7.7.0: + resolution: {integrity: sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/types': 7.7.0 eslint-visitor-keys: 3.4.3 dev: true @@ -8630,7 +8378,7 @@ packages: - supports-color dev: false - /@vitejs/plugin-react@4.2.1(vite@5.2.8): + /@vitejs/plugin-react@4.2.1(vite@5.2.10): resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -8644,12 +8392,12 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.4) '@types/babel__core': 7.20.5 react-refresh: 0.14.0 - vite: 5.2.8(@types/node@18.19.31)(sass@1.75.0) + vite: 5.2.10(@types/node@18.19.31)(sass@1.75.0) transitivePeerDependencies: - supports-color dev: false - /@vitejs/plugin-vue-jsx@3.1.0(vite@5.2.8)(vue@3.4.21): + /@vitejs/plugin-vue-jsx@3.1.0(vite@5.2.10)(vue@3.4.23): resolution: {integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -8662,13 +8410,13 @@ packages: '@babel/core': 7.24.4 '@babel/plugin-transform-typescript': 7.24.4(@babel/core@7.24.4) '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.4) - vite: 5.2.8(@types/node@18.19.31)(sass@1.75.0) - vue: 3.4.21(typescript@5.2.2) + vite: 5.2.10(@types/node@18.19.31)(sass@1.75.0) + vue: 3.4.23(typescript@5.4.5) transitivePeerDependencies: - supports-color dev: false - /@vitejs/plugin-vue@5.0.4(vite@5.2.8)(vue@3.4.21): + /@vitejs/plugin-vue@5.0.4(vite@5.2.10)(vue@3.4.23): resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: @@ -8678,8 +8426,8 @@ packages: vite: optional: true dependencies: - vite: 5.2.8(@types/node@18.19.31)(sass@1.75.0) - vue: 3.4.21(typescript@5.2.2) + vite: 5.2.10(@types/node@18.19.31)(sass@1.75.0) + vue: 3.4.23(typescript@5.4.5) dev: false /@vitest/expect@1.5.0: @@ -8701,7 +8449,7 @@ packages: /@vitest/snapshot@1.5.0: resolution: {integrity: sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==} dependencies: - magic-string: 0.30.9 + magic-string: 0.30.10 pathe: 1.1.2 pretty-format: 29.7.0 dev: false @@ -8721,19 +8469,6 @@ packages: pretty-format: 29.7.0 dev: false - /@volar/kit@2.1.6(typescript@5.2.2): - resolution: {integrity: sha512-dSuXChDGM0nSG/0fxqlNfadjpAeeo1P1SJPBQ+pDf8H1XrqeJq5gIhxRTEbiS+dyNIG69ATq1CArkbCif+oxJw==} - peerDependencies: - typescript: '*' - dependencies: - '@volar/language-service': 2.1.6 - '@volar/typescript': 2.1.6 - typesafe-path: 0.2.2 - typescript: 5.2.2 - vscode-languageserver-textdocument: 1.0.11 - vscode-uri: 3.0.8 - dev: true - /@volar/kit@2.1.6(typescript@5.4.5): resolution: {integrity: sha512-dSuXChDGM0nSG/0fxqlNfadjpAeeo1P1SJPBQ+pDf8H1XrqeJq5gIhxRTEbiS+dyNIG69ATq1CArkbCif+oxJw==} peerDependencies: @@ -8745,7 +8480,6 @@ packages: typescript: 5.4.5 vscode-languageserver-textdocument: 1.0.11 vscode-uri: 3.0.8 - dev: false /@volar/language-core@2.1.6: resolution: {integrity: sha512-pAlMCGX/HatBSiDFMdMyqUshkbwWbLxpN/RL7HCQDOo2gYBE+uS+nanosLc1qR6pTQ/U8q00xt8bdrrAFPSC0A==} @@ -8848,7 +8582,7 @@ packages: '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.24.0 '@babel/parser': 7.24.4 - '@vue/compiler-sfc': 3.4.21 + '@vue/compiler-sfc': 3.4.23 dev: false /@vue/compiler-core@3.4.21: @@ -8859,12 +8593,29 @@ packages: entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.0 + dev: false + + /@vue/compiler-core@3.4.23: + resolution: {integrity: sha512-HAFmuVEwNqNdmk+w4VCQ2pkLk1Vw4XYiiyxEp3z/xvl14aLTUBw2OfVH3vBcx+FtGsynQLkkhK410Nah1N2yyQ==} + dependencies: + '@babel/parser': 7.24.4 + '@vue/shared': 3.4.23 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 /@vue/compiler-dom@3.4.21: resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} dependencies: '@vue/compiler-core': 3.4.21 '@vue/shared': 3.4.21 + dev: false + + /@vue/compiler-dom@3.4.23: + resolution: {integrity: sha512-t0b9WSTnCRrzsBGrDd1LNR5HGzYTr7LX3z6nNBG+KGvZLqrT0mY6NsMzOqlVMBKKXKVuusbbB5aOOFgTY+senw==} + dependencies: + '@vue/compiler-core': 3.4.23 + '@vue/shared': 3.4.23 /@vue/compiler-sfc@3.4.21: resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} @@ -8875,7 +8626,21 @@ packages: '@vue/compiler-ssr': 3.4.21 '@vue/shared': 3.4.21 estree-walker: 2.0.2 - magic-string: 0.30.9 + magic-string: 0.30.10 + postcss: 8.4.38 + source-map-js: 1.2.0 + dev: false + + /@vue/compiler-sfc@3.4.23: + resolution: {integrity: sha512-fSDTKTfzaRX1kNAUiaj8JB4AokikzStWgHooMhaxyjZerw624L+IAP/fvI4ZwMpwIh8f08PVzEnu4rg8/Npssw==} + dependencies: + '@babel/parser': 7.24.4 + '@vue/compiler-core': 3.4.23 + '@vue/compiler-dom': 3.4.23 + '@vue/compiler-ssr': 3.4.23 + '@vue/shared': 3.4.23 + estree-walker: 2.0.2 + magic-string: 0.30.10 postcss: 8.4.38 source-map-js: 1.2.0 @@ -8884,6 +8649,13 @@ packages: dependencies: '@vue/compiler-dom': 3.4.21 '@vue/shared': 3.4.21 + dev: false + + /@vue/compiler-ssr@3.4.23: + resolution: {integrity: sha512-hb6Uj2cYs+tfqz71Wj6h3E5t6OKvb4MVcM2Nl5i/z1nv1gjEhw+zYaNOV+Xwn+SSN/VZM0DgANw5TuJfxfezPg==} + dependencies: + '@vue/compiler-dom': 3.4.23 + '@vue/shared': 3.4.23 /@vue/reactivity@3.1.5: resolution: {integrity: sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==} @@ -8895,12 +8667,25 @@ packages: resolution: {integrity: sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==} dependencies: '@vue/shared': 3.4.21 + dev: false + + /@vue/reactivity@3.4.23: + resolution: {integrity: sha512-GlXR9PL+23fQ3IqnbSQ8OQKLodjqCyoCrmdLKZk3BP7jN6prWheAfU7a3mrltewTkoBm+N7qMEb372VHIkQRMQ==} + dependencies: + '@vue/shared': 3.4.23 /@vue/runtime-core@3.4.21: resolution: {integrity: sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==} dependencies: '@vue/reactivity': 3.4.21 '@vue/shared': 3.4.21 + dev: false + + /@vue/runtime-core@3.4.23: + resolution: {integrity: sha512-FeQ9MZEXoFzFkFiw9MQQ/FWs3srvrP+SjDKSeRIiQHIhtkzoj0X4rWQlRNHbGuSwLra6pMyjAttwixNMjc/xLw==} + dependencies: + '@vue/reactivity': 3.4.23 + '@vue/shared': 3.4.23 /@vue/runtime-dom@3.4.21: resolution: {integrity: sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==} @@ -8908,6 +8693,14 @@ packages: '@vue/runtime-core': 3.4.21 '@vue/shared': 3.4.21 csstype: 3.1.3 + dev: false + + /@vue/runtime-dom@3.4.23: + resolution: {integrity: sha512-RXJFwwykZWBkMiTPSLEWU3kgVLNAfActBfWFlZd0y79FTUxexogd0PLG4HH2LfOktjRxV47Nulygh0JFXe5f9A==} + dependencies: + '@vue/runtime-core': 3.4.23 + '@vue/shared': 3.4.23 + csstype: 3.1.3 /@vue/server-renderer@3.4.21(vue@3.4.21): resolution: {integrity: sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==} @@ -8916,7 +8709,17 @@ packages: dependencies: '@vue/compiler-ssr': 3.4.21 '@vue/shared': 3.4.21 - vue: 3.4.21(typescript@5.2.2) + vue: 3.4.21(typescript@5.4.5) + dev: false + + /@vue/server-renderer@3.4.23(vue@3.4.23): + resolution: {integrity: sha512-LDwGHtnIzvKFNS8dPJ1SSU5Gvm36p2ck8wCZc52fc3k/IfjKcwCyrWEf0Yag/2wTFUBXrqizfhK9c/mC367dXQ==} + peerDependencies: + vue: 3.4.23 + dependencies: + '@vue/compiler-ssr': 3.4.23 + '@vue/shared': 3.4.23 + vue: 3.4.23(typescript@5.4.5) /@vue/shared@3.1.5: resolution: {integrity: sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==} @@ -8924,6 +8727,10 @@ packages: /@vue/shared@3.4.21: resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} + dev: false + + /@vue/shared@3.4.23: + resolution: {integrity: sha512-wBQ0gvf+SMwsCQOyusNw/GoXPV47WGd1xB5A1Pgzy0sQ3Bi5r5xm3n+92y3gCnB3MWqnRDdvfkRGxhKtbBRNgg==} /@webcomponents/template-shadowroot@0.2.1: resolution: {integrity: sha512-fXL/vIUakyZL62hyvUh+EMwbVoTc0hksublmRz6ai6et8znHkJa6gtqMUZo1oc7dIz46exHSIImml9QTdknMHg==} @@ -8982,6 +8789,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color + dev: true /aggregate-error@4.0.1: resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} @@ -9696,6 +9504,12 @@ packages: engines: {node: '>=8'} dev: false + /citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + dependencies: + consola: 3.2.3 + dev: false + /clean-css@4.2.4: resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} engines: {node: '>= 4.0'} @@ -9827,10 +9641,6 @@ packages: color-string: 1.9.1 dev: false - /colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - dev: false - /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -9874,6 +9684,11 @@ packages: /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + /consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} + dev: false + /console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} dev: false @@ -10356,8 +10171,8 @@ packages: engines: {node: '>=10'} dev: true - /drizzle-orm@0.30.8(@libsql/client@0.5.6): - resolution: {integrity: sha512-9pBJA0IjnpPpzZ6s9jlS1CQAbKoBmbn2GJesPhXaVblAA/joOJ4AWWevYcqvLGj9SvThBAl7WscN8Zwgg5mnTw==} + /drizzle-orm@0.30.9(@libsql/client@0.6.0): + resolution: {integrity: sha512-VOiCFsexErmgqvNCOmbzmqDCZzZsHoz6SkWAjTFxsTr1AllKDbDJ2+GgedLXsXMDgpg/ljDG1zItIFeZtiO2LA==} peerDependencies: '@aws-sdk/client-rds-data': '>=3' '@cloudflare/workers-types': '>=3' @@ -10436,7 +10251,7 @@ packages: sqlite3: optional: true dependencies: - '@libsql/client': 0.5.6 + '@libsql/client': 0.6.0 dev: false /dset@3.1.3: @@ -10619,48 +10434,18 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild-plugin-copy@2.1.1(esbuild@0.19.12): + /esbuild-plugin-copy@2.1.1(esbuild@0.20.2): resolution: {integrity: sha512-Bk66jpevTcV8KMFzZI1P7MZKZ+uDcrZm2G2egZ2jNIvVnivDpodZI+/KnpL3Jnap0PBdIHU7HwFGB8r+vV5CVw==} peerDependencies: esbuild: '>= 0.14.0' dependencies: chalk: 4.1.2 chokidar: 3.6.0 - esbuild: 0.19.12 + esbuild: 0.20.2 fs-extra: 10.1.0 globby: 11.1.0 dev: true - /esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 - /esbuild@0.20.2: resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} engines: {node: '>=12'} @@ -10711,13 +10496,13 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - /eslint-config-prettier@9.1.0(eslint@9.0.0): + /eslint-config-prettier@9.1.0(eslint@9.1.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 9.0.0 + eslint: 9.1.0 dev: true /eslint-plugin-no-only-tests@3.1.0: @@ -10725,7 +10510,7 @@ packages: engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@9.0.0)(prettier@3.2.5): + /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@9.1.0)(prettier@3.2.5): resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -10739,23 +10524,23 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 9.0.0 - eslint-config-prettier: 9.1.0(eslint@9.0.0) + eslint: 9.1.0 + eslint-config-prettier: 9.1.0(eslint@9.1.0) prettier: 3.2.5 prettier-linter-helpers: 1.0.0 synckit: 0.8.8 dev: true - /eslint-plugin-regexp@2.5.0(eslint@9.0.0): + /eslint-plugin-regexp@2.5.0(eslint@9.1.0): resolution: {integrity: sha512-I7vKcP0o75WS5SHiVNXN+Eshq49sbrweMQIuqSL3AId9AwDe9Dhbfug65vw64LxmOd4v+yf5l5Xt41y9puiq0g==} engines: {node: ^18 || >=20} peerDependencies: eslint: '>=8.44.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.1.0) '@eslint-community/regexpp': 4.10.0 comment-parser: 1.4.1 - eslint: 9.0.0 + eslint: 9.1.0 jsdoc-type-pratt-parser: 4.0.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 @@ -10780,17 +10565,18 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /eslint@9.0.0: - resolution: {integrity: sha512-IMryZ5SudxzQvuod6rUdIUz29qFItWx281VhtFVc2Psy/ZhlCeD/5DT6lBIJ4H3G+iamGJoTln1v+QSuPw0p7Q==} + /eslint@9.1.0: + resolution: {integrity: sha512-1TCBecGFQtItia2o39P7Z4BK1X7ByNPxAiWJvwiyTGcOwYnTiiASgMpNA6a+beu8cFPhEDWvPf6mIlYUJv6sgA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.0.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.1.0) '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 3.0.2 - '@eslint/js': 9.0.0 - '@humanwhocodes/config-array': 0.12.3 + '@eslint/js': 9.1.1 + '@humanwhocodes/config-array': 0.13.0 '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.2.3 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 chalk: 4.1.2 @@ -10806,7 +10592,6 @@ packages: file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - graphemer: 1.4.0 ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 @@ -11307,19 +11092,18 @@ packages: get-intrinsic: 1.2.4 dev: true - /giget@1.1.3: - resolution: {integrity: sha512-zHuCeqtfgqgDwvXlR84UNgnJDuUHQcNI5OqWqFxxuk2BshuKbYhJWdxBsEo4PvKqoGh23lUAIvBNpChMLv7/9Q==} + /giget@1.2.3: + resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} hasBin: true dependencies: - colorette: 2.0.20 + citty: 0.1.6 + consola: 3.2.3 defu: 6.1.4 - https-proxy-agent: 7.0.4 - mri: 1.2.0 node-fetch-native: 1.6.4 + nypm: 0.3.8 + ohash: 1.1.3 pathe: 1.1.2 tar: 6.2.1 - transitivePeerDependencies: - - supports-color dev: false /github-from-package@0.0.0: @@ -11690,6 +11474,16 @@ packages: '@types/unist': 3.0.2 hast-util-is-element: 3.0.0 unist-util-find-after: 5.0.0 + dev: true + + /hast-util-to-text@4.0.2: + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + hast-util-is-element: 3.0.0 + unist-util-find-after: 5.0.0 + dev: false /hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} @@ -11826,6 +11620,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color + dev: true /human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} @@ -12426,6 +12221,14 @@ packages: '@lit/reactive-element': 2.0.4 lit-element: 4.0.4 lit-html: 3.1.2 + dev: false + + /lit@3.1.3: + resolution: {integrity: sha512-l4slfspEsnCcHVRTvaP7YnkTZEZggNFywLEIhQaGhYDczG+tu/vlgm/KaWIEjIp+ZyV20r2JnZctMb8LeLCG7Q==} + dependencies: + '@lit/reactive-element': 2.0.4 + lit-element: 4.0.4 + lit-html: 3.1.2 /lite-youtube-embed@0.3.2: resolution: {integrity: sha512-b1dgKyF4PHhinonmr3PB172Nj0qQgA/7DE9EmeIXHR1ksnFEC2olWjNJyJGdsN2cleKHRjjsmrziKlwXtPlmLQ==} @@ -12569,6 +12372,11 @@ packages: hasBin: true dev: true + /magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + /magic-string@0.30.5: resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} @@ -12581,6 +12389,7 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + dev: false /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} @@ -13621,6 +13430,18 @@ packages: dependencies: boolbase: 1.0.0 + /nypm@0.3.8: + resolution: {integrity: sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og==} + engines: {node: ^14.16.0 || >=16.10.0} + hasBin: true + dependencies: + citty: 0.1.6 + consola: 3.2.3 + execa: 8.0.1 + pathe: 1.1.2 + ufo: 1.5.3 + dev: false + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -13648,6 +13469,10 @@ packages: object-keys: 1.1.1 dev: true + /ohash@1.1.3: + resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} + dev: false + /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -13992,18 +13817,18 @@ packages: pathe: 1.1.2 dev: false - /playwright-core@1.40.0: - resolution: {integrity: sha512-fvKewVJpGeca8t0ipM56jkVSU6Eo0RmFvQ/MaCQNDYm+sdvKkMBBWTE1FdeMqIdumRaXXjZChWHvIzCGM/tA/Q==} + /playwright-core@1.43.1: + resolution: {integrity: sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==} engines: {node: '>=16'} hasBin: true dev: true - /playwright@1.40.0: - resolution: {integrity: sha512-gyHAgQjiDf1m34Xpwzaqb76KgfzYrhK7iih+2IzcOCoZWr/8ZqmdBw+t0RU85ZmfJMgtgAiNtBQ/KS2325INXw==} + /playwright@1.43.1: + resolution: {integrity: sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==} engines: {node: '>=16'} hasBin: true dependencies: - playwright-core: 1.40.0 + playwright-core: 1.43.1 optionalDependencies: fsevents: 2.3.2 dev: true @@ -14477,8 +14302,8 @@ packages: fast-diff: 1.3.0 dev: true - /prettier-plugin-astro@0.12.3: - resolution: {integrity: sha512-GthUSu3zCvmtVyqlArosez0xE08vSJ0R1sWurxIWpABaCkNGYFANoUdFkqmIo54EV2uPLGcVJzOucWvCjPBWvg==} + /prettier-plugin-astro@0.13.0: + resolution: {integrity: sha512-5HrJNnPmZqTUNoA97zn4gNQv9BgVhv+et03314WpQ9H9N8m2L9OSV798olwmG2YLXPl1iSstlJCR1zB3x5xG4g==} engines: {node: ^14.15.0 || >=16.0.0} dependencies: '@astrojs/compiler': 1.8.2 @@ -14903,7 +14728,7 @@ packages: unified: 11.0.4 vfile: 6.0.1 - /remark-shiki-twoslash@3.1.3(typescript@5.2.2): + /remark-shiki-twoslash@3.1.3(typescript@5.4.5): resolution: {integrity: sha512-4e8OH3ySOCw5wUbDcPszokOKjKuebOqlP2WlySvC7ITBOq27BiGsFlq+FNWhxppZ+JzhTWah4gQrnMjX3KDbAQ==} peerDependencies: typescript: '>3' @@ -14914,9 +14739,9 @@ packages: fenceparser: 1.1.1 regenerator-runtime: 0.13.11 shiki: 0.10.1 - shiki-twoslash: 3.1.2(typescript@5.2.2) + shiki-twoslash: 3.1.2(typescript@5.4.5) tslib: 2.1.0 - typescript: 5.2.2 + typescript: 5.4.5 unist-util-visit: 2.0.3 transitivePeerDependencies: - supports-color @@ -15047,29 +14872,29 @@ packages: glob: 10.3.12 dev: false - /rollup@4.14.3: - resolution: {integrity: sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==} + /rollup@4.16.1: + resolution: {integrity: sha512-5CaD3MPDlPKfhqzRvWXK96G6ELJfPZNb3LHiZxTHgDdC6jvwfGz2E8nY+9g1ONk4ttHsK1WaFP19Js4PSr1E3g==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.14.3 - '@rollup/rollup-android-arm64': 4.14.3 - '@rollup/rollup-darwin-arm64': 4.14.3 - '@rollup/rollup-darwin-x64': 4.14.3 - '@rollup/rollup-linux-arm-gnueabihf': 4.14.3 - '@rollup/rollup-linux-arm-musleabihf': 4.14.3 - '@rollup/rollup-linux-arm64-gnu': 4.14.3 - '@rollup/rollup-linux-arm64-musl': 4.14.3 - '@rollup/rollup-linux-powerpc64le-gnu': 4.14.3 - '@rollup/rollup-linux-riscv64-gnu': 4.14.3 - '@rollup/rollup-linux-s390x-gnu': 4.14.3 - '@rollup/rollup-linux-x64-gnu': 4.14.3 - '@rollup/rollup-linux-x64-musl': 4.14.3 - '@rollup/rollup-win32-arm64-msvc': 4.14.3 - '@rollup/rollup-win32-ia32-msvc': 4.14.3 - '@rollup/rollup-win32-x64-msvc': 4.14.3 + '@rollup/rollup-android-arm-eabi': 4.16.1 + '@rollup/rollup-android-arm64': 4.16.1 + '@rollup/rollup-darwin-arm64': 4.16.1 + '@rollup/rollup-darwin-x64': 4.16.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.16.1 + '@rollup/rollup-linux-arm-musleabihf': 4.16.1 + '@rollup/rollup-linux-arm64-gnu': 4.16.1 + '@rollup/rollup-linux-arm64-musl': 4.16.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.16.1 + '@rollup/rollup-linux-riscv64-gnu': 4.16.1 + '@rollup/rollup-linux-s390x-gnu': 4.16.1 + '@rollup/rollup-linux-x64-gnu': 4.16.1 + '@rollup/rollup-linux-x64-musl': 4.16.1 + '@rollup/rollup-win32-arm64-msvc': 4.16.1 + '@rollup/rollup-win32-ia32-msvc': 4.16.1 + '@rollup/rollup-win32-x64-msvc': 4.16.1 fsevents: 2.3.3 /rrweb-cssom@0.6.0: @@ -15305,7 +15130,7 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /shiki-twoslash@3.1.2(typescript@5.2.2): + /shiki-twoslash@3.1.2(typescript@5.4.5): resolution: {integrity: sha512-JBcRIIizi+exIA/OUhYkV6jtyeZco0ykCkIRd5sgwIt1Pm4pz+maoaRZpm6SkhPwvif4fCA7xOtJOykhpIV64Q==} peerDependencies: typescript: '>3' @@ -15314,7 +15139,7 @@ packages: '@typescript/vfs': 1.3.4 fenceparser: 1.1.1 shiki: 0.10.1 - typescript: 5.2.2 + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true @@ -15756,25 +15581,25 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /svelte-hmr@0.16.0(svelte@4.2.14): + /svelte-hmr@0.16.0(svelte@4.2.15): resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: svelte: ^3.19.0 || ^4.0.0 dependencies: - svelte: 4.2.14 + svelte: 4.2.15 dev: false - /svelte2tsx@0.6.27(svelte@4.2.14)(typescript@5.2.2): - resolution: {integrity: sha512-E1uPW1o6VsbRz+nUk3fznZ2lSmCITAJoNu8AYefWSvIwE2pSB01i5sId4RMbWNzfcwCQl1DcgGShCPcldl4rvg==} + /svelte2tsx@0.7.6(svelte@4.2.15)(typescript@5.4.5): + resolution: {integrity: sha512-awHvYsakyiGjRqqSOhb2F+qJ6lUT9klQe0UQofAcdHNaKKeDHA8kEZ8zYKGG3BiDPurKYMGvH5/lZ+jeIoG7yQ==} peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 4.2.14 - typescript: 5.2.2 + svelte: 4.2.15 + typescript: 5.4.5 dev: false /svelte@4.2.14: @@ -15795,6 +15620,26 @@ packages: locate-character: 3.0.0 magic-string: 0.30.9 periscopic: 3.1.0 + dev: false + + /svelte@4.2.15: + resolution: {integrity: sha512-j9KJSccHgLeRERPlhMKrCXpk2TqL2m5Z+k+OBTQhZOhIdCCd3WfqV+ylPWeipEwq17P/ekiSFWwrVQv93i3bsg==} + engines: {node: '>=16'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + '@types/estree': 1.0.5 + acorn: 8.11.3 + aria-query: 5.3.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.10 + periscopic: 3.1.0 /svg-tags@1.0.0: resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} @@ -16033,13 +15878,13 @@ packages: /trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - /ts-api-utils@1.3.0(typescript@5.2.2): + /ts-api-utils@1.3.0(typescript@5.4.5): resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.2.2 + typescript: 5.4.5 dev: true /ts-interface-checker@0.1.13: @@ -16052,7 +15897,7 @@ packages: code-block-writer: 12.0.0 dev: true - /tsconfck@3.0.3(typescript@5.2.2): + /tsconfck@3.0.3(typescript@5.4.5): resolution: {integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==} engines: {node: ^18 || >=20} hasBin: true @@ -16062,7 +15907,7 @@ packages: typescript: optional: true dependencies: - typescript: 5.2.2 + typescript: 5.4.5 dev: false /tsconfig-resolver@3.0.1: @@ -16275,8 +16120,8 @@ packages: dependencies: semver: 7.6.0 - /typescript-eslint@7.6.0(eslint@9.0.0)(typescript@5.2.2): - resolution: {integrity: sha512-LY6vH6F1l5jpGqRtU+uK4+mOecIb4Cd4kaz1hAiJrgnNiHUA8wiw8BkJyYS+MRLM69F1QuSKwtGlQqnGl1Rc6w==} + /typescript-eslint@7.7.0(eslint@9.1.0)(typescript@5.4.5): + resolution: {integrity: sha512-wZZ+7mTQJCn4mGAvzdERtL4vwKGM/mF9cMSMeKUllz3Hgbd1Mdd5L60Q+nJmCio9RB4OyMMr0EX4Ry2Q7jiAyw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -16285,20 +16130,15 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 7.6.0(@typescript-eslint/parser@7.6.0)(eslint@9.0.0)(typescript@5.2.2) - '@typescript-eslint/parser': 7.6.0(eslint@9.0.0)(typescript@5.2.2) - '@typescript-eslint/utils': 7.6.0(eslint@9.0.0)(typescript@5.2.2) - eslint: 9.0.0 - typescript: 5.2.2 + '@typescript-eslint/eslint-plugin': 7.7.0(@typescript-eslint/parser@7.7.0)(eslint@9.1.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.7.0(eslint@9.1.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.0(eslint@9.1.0)(typescript@5.4.5) + eslint: 9.1.0 + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /typescript@5.2.2: - resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} - engines: {node: '>=14.17'} - hasBin: true - /typescript@5.4.5: resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} @@ -16568,7 +16408,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.2.8(@types/node@18.19.31)(sass@1.75.0) + vite: 5.2.10(@types/node@18.19.31)(sass@1.75.0) transitivePeerDependencies: - '@types/node' - less @@ -16598,7 +16438,7 @@ packages: merge-anything: 5.1.7 solid-js: 1.8.16 solid-refresh: 0.6.3(solid-js@1.8.16) - vitefu: 0.2.5(vite@5.2.8) + vitefu: 0.2.5(vite@5.2.10) transitivePeerDependencies: - supports-color dev: false @@ -16626,8 +16466,8 @@ packages: svgo: 3.2.0 dev: false - /vite@5.2.8(@types/node@18.19.31)(sass@1.75.0): - resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} + /vite@5.2.10(@types/node@18.19.31)(sass@1.75.0): + resolution: {integrity: sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -16657,12 +16497,12 @@ packages: '@types/node': 18.19.31 esbuild: 0.20.2 postcss: 8.4.38 - rollup: 4.14.3 + rollup: 4.16.1 sass: 1.75.0 optionalDependencies: fsevents: 2.3.3 - /vitefu@0.2.5(vite@5.2.8): + /vitefu@0.2.5(vite@5.2.10): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -16670,7 +16510,7 @@ packages: vite: optional: true dependencies: - vite: 5.2.8(@types/node@18.19.31)(sass@1.75.0) + vite: 5.2.10(@types/node@18.19.31)(sass@1.75.0) dev: false /vitest@1.5.0(@types/node@18.19.31): @@ -16716,7 +16556,7 @@ packages: strip-literal: 2.1.0 tinybench: 2.7.0 tinypool: 0.8.4 - vite: 5.2.8(@types/node@18.19.31)(sass@1.75.0) + vite: 5.2.10(@types/node@18.19.31)(sass@1.75.0) vite-node: 1.5.0(@types/node@18.19.31) why-is-node-running: 2.2.2 transitivePeerDependencies: @@ -16862,7 +16702,7 @@ packages: /vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - /vue@3.4.21(typescript@5.2.2): + /vue@3.4.21(typescript@5.4.5): resolution: {integrity: sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==} peerDependencies: typescript: '*' @@ -16875,7 +16715,23 @@ packages: '@vue/runtime-dom': 3.4.21 '@vue/server-renderer': 3.4.21(vue@3.4.21) '@vue/shared': 3.4.21 - typescript: 5.2.2 + typescript: 5.4.5 + dev: false + + /vue@3.4.23(typescript@5.4.5): + resolution: {integrity: sha512-X1y6yyGJ28LMUBJ0k/qIeKHstGd+BlWQEOT40x3auJFTmpIhpbKLgN7EFsqalnJXq1Km5ybDEsp6BhuWKciUDg==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@vue/compiler-dom': 3.4.23 + '@vue/compiler-sfc': 3.4.23 + '@vue/runtime-dom': 3.4.23 + '@vue/server-renderer': 3.4.23(vue@3.4.23) + '@vue/shared': 3.4.23 + typescript: 5.4.5 /w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} @@ -17198,18 +17054,22 @@ packages: engines: {node: '>=12.20'} dev: false - /zod-to-json-schema@3.22.5(zod@3.22.4): + /zod-to-json-schema@3.22.5(zod@3.23.0): resolution: {integrity: sha512-+akaPo6a0zpVCCseDed504KBJUQpEW5QZw7RMneNmKw+fGaML1Z9tUNLnHHAC8x6dzVRO1eB2oEMyZRnuBZg7Q==} peerDependencies: zod: ^3.22.4 dependencies: - zod: 3.22.4 + zod: 3.23.0 dev: false /zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} dev: false + /zod@3.23.0: + resolution: {integrity: sha512-OFLT+LTocvabn6q76BTwVB0hExEBS0IduTr3cqZyMqEDbOnYmcU+y0tUAYbND4uwclpBGi4I4UUBGzylWpjLGA==} + dev: false + /zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} diff --git a/scripts/package.json b/scripts/package.json index 3ea28ab255..43b4d61486 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -9,16 +9,16 @@ }, "dependencies": { "arg": "^5.0.2", - "esbuild": "^0.19.6", - "globby": "^14.0.0", - "kleur": "^4.1.4", + "esbuild": "^0.20.2", + "globby": "^14.0.1", + "kleur": "^4.1.5", "p-limit": "^5.0.0", - "svelte": "^4.2.5", + "svelte": "^4.2.15", "tar": "^7.0.1" }, "devDependencies": { - "@octokit/action": "^6.0.5", - "del": "^7.0.0", + "@octokit/action": "^6.1.0", + "del": "^7.1.0", "esbuild-plugin-copy": "^2.1.1", "execa": "^8.0.1", "tsconfig-resolver": "^3.0.1" From 8e6eb624aee40bac66a58169a30107f624a8c539 Mon Sep 17 00:00:00 2001 From: Ben Holmes Date: Mon, 22 Apr 2024 11:37:11 -0400 Subject: [PATCH 03/21] db: add login flow for web containers (#10816) * feat: add login flow for web containers * chore: changeset * chore: remove unused web() * feat: detect github codespaces * fix: add success msg for manual flow * refactor: use URL constructor for login URL Co-authored-by: Matthew Phillips * fix: add .href for url string --------- Co-authored-by: Matthew Phillips --- .changeset/spotty-dots-beg.md | 5 ++ .../db/src/core/cli/commands/login/index.ts | 73 ++++++++++++------- 2 files changed, 53 insertions(+), 25 deletions(-) create mode 100644 .changeset/spotty-dots-beg.md diff --git a/.changeset/spotty-dots-beg.md b/.changeset/spotty-dots-beg.md new file mode 100644 index 0000000000..91a7c8526a --- /dev/null +++ b/.changeset/spotty-dots-beg.md @@ -0,0 +1,5 @@ +--- +"@astrojs/db": patch +--- + +Add `astro login` support from online editors like Stackblitz and GitHub Codespaces diff --git a/packages/db/src/core/cli/commands/login/index.ts b/packages/db/src/core/cli/commands/login/index.ts index 2a3f16447d..a0afda3ed4 100644 --- a/packages/db/src/core/cli/commands/login/index.ts +++ b/packages/db/src/core/cli/commands/login/index.ts @@ -5,11 +5,59 @@ import { listen } from 'async-listen'; import { cyan } from 'kleur/colors'; import open from 'open'; import ora from 'ora'; +import prompt from 'prompts'; import type { Arguments } from 'yargs-parser'; import { SESSION_LOGIN_FILE } from '../../../tokens.js'; import type { DBConfig } from '../../../types.js'; import { getAstroStudioUrl } from '../../../utils.js'; +const isWebContainer = + // Stackblitz heuristic + process.versions?.webcontainer ?? + // Github Codespaces heuristic + process.env.CODESPACE_NAME; + +export async function cmd({ + flags, +}: { + astroConfig: AstroConfig; + dbConfig: DBConfig; + flags: Arguments; +}) { + let session = flags.session; + + if (!session && isWebContainer) { + console.log(`Please visit the following URL in your web browser:`); + console.log(cyan(`${getAstroStudioUrl()}/auth/cli/login`)); + console.log(`After login in complete, enter the verification code displayed:`); + const response = await prompt({ + type: 'text', + name: 'session', + message: 'Verification code:', + }); + if (!response.session) { + console.error('Cancelling login.'); + process.exit(0); + } + session = response.session; + console.log('Successfully logged in'); + } else if (!session) { + const { url, promise } = await createServer(); + const loginUrl = new URL('/auth/cli/login', getAstroStudioUrl()); + loginUrl.searchParams.set('returnTo', url); + console.log(`Opening the following URL in your browser...`); + console.log(cyan(loginUrl.href)); + console.log(`If something goes wrong, copy-and-paste the URL into your browser.`); + open(loginUrl.href); + const spinner = ora('Waiting for confirmation...'); + session = await promise; + spinner.succeed('Successfully logged in'); + } + + await mkdir(new URL('.', SESSION_LOGIN_FILE), { recursive: true }); + await writeFile(SESSION_LOGIN_FILE, `${session}`); +} + // NOTE(fks): How the Astro CLI login process works: // 1. The Astro CLI creates a temporary server to listen for the session token // 2. The user is directed to studio.astro.build/ to login @@ -47,28 +95,3 @@ async function createServer(): Promise<{ url: string; promise: Promise } return { url: serverUrl, promise: sessionPromise }; } - -export async function cmd({ - flags, -}: { - astroConfig: AstroConfig; - dbConfig: DBConfig; - flags: Arguments; -}) { - let session = flags.session; - - if (!session) { - const { url, promise } = await createServer(); - const loginUrl = getAstroStudioUrl() + '/auth/cli/login?returnTo=' + encodeURIComponent(url); - console.log(`Opening the following URL in your browser...`); - console.log(cyan(loginUrl)); - console.log(`If something goes wrong, copy-and-paste the URL into your browser.`); - open(loginUrl); - const spinner = ora('Waiting for confirmation...'); - session = await promise; - spinner.succeed('Successfully logged in!'); - } - - await mkdir(new URL('.', SESSION_LOGIN_FILE), { recursive: true }); - await writeFile(SESSION_LOGIN_FILE, `${session}`); -} From b0de82b1e9092746673c4c49f160e574afc5c4b3 Mon Sep 17 00:00:00 2001 From: Joe Pea Date: Mon, 22 Apr 2024 11:13:15 -0700 Subject: [PATCH 04/21] unnest astro-island class (#10839) --- .../astro/src/runtime/server/astro-island.ts | 326 +++++++++--------- 1 file changed, 165 insertions(+), 161 deletions(-) diff --git a/packages/astro/src/runtime/server/astro-island.ts b/packages/astro/src/runtime/server/astro-island.ts index 79f41f5582..22d9dd00a5 100644 --- a/packages/astro/src/runtime/server/astro-island.ts +++ b/packages/astro/src/runtime/server/astro-island.ts @@ -44,170 +44,174 @@ declare const Astro: { return Object.fromEntries(Object.entries(raw).map(([key, value]) => [key, reviveTuple(value)])); }; - if (!customElements.get('astro-island')) { - customElements.define( - 'astro-island', - class extends HTMLElement { - public Component: any; - public hydrator: any; - static observedAttributes = ['props']; - disconnectedCallback() { - document.removeEventListener('astro:after-swap', this.unmount); - document.addEventListener('astro:after-swap', this.unmount, { once: true }); - } - connectedCallback() { + // 🌊🏝️🌴 + class AstroIsland extends HTMLElement { + public Component: any; + public hydrator: any; + static observedAttributes = ['props']; + + disconnectedCallback() { + document.removeEventListener('astro:after-swap', this.unmount); + document.addEventListener('astro:after-swap', this.unmount, { once: true }); + } + + connectedCallback() { + if ( + !this.hasAttribute('await-children') || + document.readyState === 'interactive' || + document.readyState === 'complete' + ) { + this.childrenConnectedCallback(); + } else { + // connectedCallback may run *before* children are rendered (ex. HTML streaming) + // If SSR children are expected, but not yet rendered, wait with a mutation observer + // for a special marker inserted when rendering islands that signals the end of the island + const onConnected = () => { + document.removeEventListener('DOMContentLoaded', onConnected); + mo.disconnect(); + this.childrenConnectedCallback(); + }; + const mo = new MutationObserver(() => { if ( - !this.hasAttribute('await-children') || - document.readyState === 'interactive' || - document.readyState === 'complete' + this.lastChild?.nodeType === Node.COMMENT_NODE && + this.lastChild.nodeValue === 'astro:end' ) { - this.childrenConnectedCallback(); - } else { - // connectedCallback may run *before* children are rendered (ex. HTML streaming) - // If SSR children are expected, but not yet rendered, wait with a mutation observer - // for a special marker inserted when rendering islands that signals the end of the island - const onConnected = () => { - document.removeEventListener('DOMContentLoaded', onConnected); - mo.disconnect(); - this.childrenConnectedCallback(); - }; - const mo = new MutationObserver(() => { - if ( - this.lastChild?.nodeType === Node.COMMENT_NODE && - this.lastChild.nodeValue === 'astro:end' - ) { - this.lastChild.remove(); - onConnected(); - } - }); - mo.observe(this, { childList: true }); - // in case the marker comment got stripped and the mutation observer waited indefinitely, - // also wait for DOMContentLoaded as a last resort - document.addEventListener('DOMContentLoaded', onConnected); + this.lastChild.remove(); + onConnected(); } - } - async childrenConnectedCallback() { - let beforeHydrationUrl = this.getAttribute('before-hydration-url'); - if (beforeHydrationUrl) { - await import(beforeHydrationUrl); - } - this.start(); - } - async start() { - const opts = JSON.parse(this.getAttribute('opts')!) as Record; - const directive = this.getAttribute('client') as directiveAstroKeys; - if (Astro[directive] === undefined) { - window.addEventListener(`astro:${directive}`, () => this.start(), { once: true }); - return; - } - try { - await Astro[directive]!( - async () => { - const rendererUrl = this.getAttribute('renderer-url'); - const [componentModule, { default: hydrator }] = await Promise.all([ - import(this.getAttribute('component-url')!), - rendererUrl ? import(rendererUrl) : () => () => {}, - ]); - const componentExport = this.getAttribute('component-export') || 'default'; - if (!componentExport.includes('.')) { - this.Component = componentModule[componentExport]; - } else { - this.Component = componentModule; - for (const part of componentExport.split('.')) { - this.Component = this.Component[part]; - } - } - this.hydrator = hydrator; - return this.hydrate; - }, - opts, - this - ); - } catch (e) { - // eslint-disable-next-line no-console - console.error( - `[astro-island] Error hydrating ${this.getAttribute('component-url')}`, - e - ); - } - } - hydrate = async () => { - // The client directive needs to load the hydrator code before it can hydrate - if (!this.hydrator) return; - - // Make sure the island is mounted on the DOM before hydrating. It could be unmounted - // when the parent island hydrates and re-creates this island. - if (!this.isConnected) return; - - // Wait for parent island to hydrate first so we hydrate top-down. The `ssr` attribute - // represents that it has not completed hydration yet. - const parentSsrIsland = this.parentElement?.closest('astro-island[ssr]'); - if (parentSsrIsland) { - parentSsrIsland.addEventListener('astro:hydrate', this.hydrate, { once: true }); - return; - } - - const slotted = this.querySelectorAll('astro-slot'); - const slots: Record = {}; - // Always check to see if there are templates. - // This happens if slots were passed but the client component did not render them. - const templates = this.querySelectorAll('template[data-astro-template]'); - for (const template of templates) { - const closest = template.closest(this.tagName); - if (!closest?.isSameNode(this)) continue; - slots[template.getAttribute('data-astro-template') || 'default'] = template.innerHTML; - template.remove(); - } - for (const slot of slotted) { - const closest = slot.closest(this.tagName); - if (!closest?.isSameNode(this)) continue; - slots[slot.getAttribute('name') || 'default'] = slot.innerHTML; - } - - let props: Record; - - try { - props = this.hasAttribute('props') - ? reviveObject(JSON.parse(this.getAttribute('props')!)) - : {}; - } catch (e) { - let componentName: string = this.getAttribute('component-url') || ''; - const componentExport = this.getAttribute('component-export'); - - if (componentExport) { - componentName += ` (export ${componentExport})`; - } - - // eslint-disable-next-line no-console - console.error( - `[hydrate] Error parsing props for component ${componentName}`, - this.getAttribute('props'), - e - ); - throw e; - } - let hydrationTimeStart; - const hydrator = this.hydrator(this); - if (process.env.NODE_ENV === 'development') hydrationTimeStart = performance.now(); - await hydrator(this.Component, props, slots, { - client: this.getAttribute('client'), - }); - if (process.env.NODE_ENV === 'development' && hydrationTimeStart) - this.setAttribute( - 'client-render-time', - (performance.now() - hydrationTimeStart).toString() - ); - this.removeAttribute('ssr'); - this.dispatchEvent(new CustomEvent('astro:hydrate')); - }; - attributeChangedCallback() { - this.hydrate(); - } - unmount = () => { - // If element wasn't persisted, fire unmount event - if (!this.isConnected) this.dispatchEvent(new CustomEvent('astro:unmount')); - }; + }); + mo.observe(this, { childList: true }); + // in case the marker comment got stripped and the mutation observer waited indefinitely, + // also wait for DOMContentLoaded as a last resort + document.addEventListener('DOMContentLoaded', onConnected); } - ); + } + + async childrenConnectedCallback() { + let beforeHydrationUrl = this.getAttribute('before-hydration-url'); + if (beforeHydrationUrl) { + await import(beforeHydrationUrl); + } + this.start(); + } + + async start() { + const opts = JSON.parse(this.getAttribute('opts')!) as Record; + const directive = this.getAttribute('client') as directiveAstroKeys; + if (Astro[directive] === undefined) { + window.addEventListener(`astro:${directive}`, () => this.start(), { once: true }); + return; + } + try { + await Astro[directive]!( + async () => { + const rendererUrl = this.getAttribute('renderer-url'); + const [componentModule, { default: hydrator }] = await Promise.all([ + import(this.getAttribute('component-url')!), + rendererUrl ? import(rendererUrl) : () => () => {}, + ]); + const componentExport = this.getAttribute('component-export') || 'default'; + if (!componentExport.includes('.')) { + this.Component = componentModule[componentExport]; + } else { + this.Component = componentModule; + for (const part of componentExport.split('.')) { + this.Component = this.Component[part]; + } + } + this.hydrator = hydrator; + return this.hydrate; + }, + opts, + this + ); + } catch (e) { + // eslint-disable-next-line no-console + console.error(`[astro-island] Error hydrating ${this.getAttribute('component-url')}`, e); + } + } + + hydrate = async () => { + // The client directive needs to load the hydrator code before it can hydrate + if (!this.hydrator) return; + + // Make sure the island is mounted on the DOM before hydrating. It could be unmounted + // when the parent island hydrates and re-creates this island. + if (!this.isConnected) return; + + // Wait for parent island to hydrate first so we hydrate top-down. The `ssr` attribute + // represents that it has not completed hydration yet. + const parentSsrIsland = this.parentElement?.closest('astro-island[ssr]'); + if (parentSsrIsland) { + parentSsrIsland.addEventListener('astro:hydrate', this.hydrate, { once: true }); + return; + } + + const slotted = this.querySelectorAll('astro-slot'); + const slots: Record = {}; + // Always check to see if there are templates. + // This happens if slots were passed but the client component did not render them. + const templates = this.querySelectorAll('template[data-astro-template]'); + for (const template of templates) { + const closest = template.closest(this.tagName); + if (!closest?.isSameNode(this)) continue; + slots[template.getAttribute('data-astro-template') || 'default'] = template.innerHTML; + template.remove(); + } + for (const slot of slotted) { + const closest = slot.closest(this.tagName); + if (!closest?.isSameNode(this)) continue; + slots[slot.getAttribute('name') || 'default'] = slot.innerHTML; + } + + let props: Record; + + try { + props = this.hasAttribute('props') + ? reviveObject(JSON.parse(this.getAttribute('props')!)) + : {}; + } catch (e) { + let componentName: string = this.getAttribute('component-url') || ''; + const componentExport = this.getAttribute('component-export'); + + if (componentExport) { + componentName += ` (export ${componentExport})`; + } + + // eslint-disable-next-line no-console + console.error( + `[hydrate] Error parsing props for component ${componentName}`, + this.getAttribute('props'), + e + ); + throw e; + } + let hydrationTimeStart; + const hydrator = this.hydrator(this); + if (process.env.NODE_ENV === 'development') hydrationTimeStart = performance.now(); + await hydrator(this.Component, props, slots, { + client: this.getAttribute('client'), + }); + if (process.env.NODE_ENV === 'development' && hydrationTimeStart) + this.setAttribute( + 'client-render-time', + (performance.now() - hydrationTimeStart).toString() + ); + this.removeAttribute('ssr'); + this.dispatchEvent(new CustomEvent('astro:hydrate')); + }; + + attributeChangedCallback() { + this.hydrate(); + } + + unmount = () => { + // If element wasn't persisted, fire unmount event + if (!this.isConnected) this.dispatchEvent(new CustomEvent('astro:unmount')); + }; + } + + if (!customElements.get('astro-island')) { + customElements.define('astro-island', AstroIsland); } } From 5cb7d2aed8105631389b3ef6ee6c70d1d89e3469 Mon Sep 17 00:00:00 2001 From: virchau13 Date: Tue, 23 Apr 2024 02:14:09 +0800 Subject: [PATCH 05/21] fix: resolve syntax errors in fixtures (#10828) I parsed every `.astro` file in the Astro repository (to check if tree-sitter-astro had any bugs), and found these three syntax errors that don't seem intentional. --- .../astro/e2e/fixtures/view-transitions/src/pages/404.astro | 1 - .../astro/test/fixtures/astro-basic/src/pages/fileurl.astro | 2 +- .../test/fixtures/core-image-deletion/src/pages/index.astro | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/astro/e2e/fixtures/view-transitions/src/pages/404.astro b/packages/astro/e2e/fixtures/view-transitions/src/pages/404.astro index a0622e4a30..725d16b6d7 100644 --- a/packages/astro/e2e/fixtures/view-transitions/src/pages/404.astro +++ b/packages/astro/e2e/fixtures/view-transitions/src/pages/404.astro @@ -4,4 +4,3 @@ import Layout from '../components/Layout.astro';

Page not found

- diff --git a/packages/astro/test/fixtures/astro-basic/src/pages/fileurl.astro b/packages/astro/test/fixtures/astro-basic/src/pages/fileurl.astro index e85507941c..c49d279e95 100644 --- a/packages/astro/test/fixtures/astro-basic/src/pages/fileurl.astro +++ b/packages/astro/test/fixtures/astro-basic/src/pages/fileurl.astro @@ -5,6 +5,6 @@ import {capitalize} from 'file://../strings.js'; Testing -

{capitalize('works')

+

{capitalize('works')}

diff --git a/packages/astro/test/fixtures/core-image-deletion/src/pages/index.astro b/packages/astro/test/fixtures/core-image-deletion/src/pages/index.astro index a7aa450819..582951a60d 100644 --- a/packages/astro/test/fixtures/core-image-deletion/src/pages/index.astro +++ b/packages/astro/test/fixtures/core-image-deletion/src/pages/index.astro @@ -8,8 +8,8 @@ import twoFromURL_URL from "../assets/url.jpg?url"; Only one of me exists at the end of the build -Two of us will exist, because I'm also used as a normal image +Two of us will exist, because I'm also used as a normal image Two of us will exist, because I'm also used as a normal image -Two of us will exist, because I'm also imported using ?url +Two of us will exist, because I'm also imported using ?url Two of us will exist, because I'm also used as a normal image From 335879218e2dee057bd5bc7ecf33f8d3ebb4120e Mon Sep 17 00:00:00 2001 From: aswind7 <854413241@qq.com> Date: Tue, 23 Apr 2024 04:09:46 +0800 Subject: [PATCH 06/21] Update project-name.test.js (#10766) head and tail blank spaces should be trimed --- packages/create-astro/test/project-name.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/create-astro/test/project-name.test.js b/packages/create-astro/test/project-name.test.js index 74196a35ae..8f14969e28 100644 --- a/packages/create-astro/test/project-name.test.js +++ b/packages/create-astro/test/project-name.test.js @@ -56,8 +56,8 @@ describe('project name', async () => { assert.equal(context.projectName, 'foobar'); }); - it('blank space', async () => { - const context = { projectName: '', cwd: '', prompt: () => ({ name: 'foobar' }) }; + it('head and tail blank spaces should be trimed', async () => { + const context = { projectName: '', cwd: '', prompt: () => ({ name: ' foobar ' }) }; await projectName(context); assert.equal(context.cwd, 'foobar'); assert.equal(context.projectName, 'foobar'); From 3294f7a343e036d2ad9ac8d5f792ad0d4f43a399 Mon Sep 17 00:00:00 2001 From: Matthew Phillips Date: Tue, 23 Apr 2024 07:58:57 -0400 Subject: [PATCH 07/21] Prevent getCollection from breaking in vitest (#10846) * Prevent getCollection from breaking in vitest * Linting * Another way * Make backwards compat * Oops * runHookConfigSetup creates a new settings --- .changeset/sweet-coins-shop.md | 5 +++ packages/astro/src/assets/utils/emitAsset.ts | 34 +++++++++++++------ .../astro/src/assets/vite-plugin-assets.ts | 7 +++- packages/astro/src/config/index.ts | 4 +-- packages/astro/src/content/runtime-assets.ts | 4 +-- packages/astro/src/content/utils.ts | 3 +- .../content/vite-plugin-content-imports.ts | 11 +++++- 7 files changed, 51 insertions(+), 17 deletions(-) create mode 100644 .changeset/sweet-coins-shop.md diff --git a/.changeset/sweet-coins-shop.md b/.changeset/sweet-coins-shop.md new file mode 100644 index 0000000000..02d69af15c --- /dev/null +++ b/.changeset/sweet-coins-shop.md @@ -0,0 +1,5 @@ +--- +"astro": patch +--- + +Prevent getCollection breaking in vitest diff --git a/packages/astro/src/assets/utils/emitAsset.ts b/packages/astro/src/assets/utils/emitAsset.ts index 545299605c..b6fc14efa7 100644 --- a/packages/astro/src/assets/utils/emitAsset.ts +++ b/packages/astro/src/assets/utils/emitAsset.ts @@ -3,12 +3,18 @@ import path from 'node:path'; import { fileURLToPath, pathToFileURL } from 'node:url'; import { prependForwardSlash, slash } from '../../core/path.js'; import type { ImageMetadata } from '../types.js'; +import type * as vite from 'vite'; import { imageMetadata } from './metadata.js'; +type FileEmitter = vite.Rollup.EmitFile; + export async function emitESMImage( id: string | undefined, - watchMode: boolean, - fileEmitter: any + /** @deprecated */ + _watchMode: boolean, + // FIX: in Astro 5, this function should not be passed in dev mode at all. + // Or rethink the API so that a function that throws isn't passed through. + fileEmitter?: FileEmitter, ): Promise { if (!id) { return undefined; @@ -37,18 +43,26 @@ export async function emitESMImage( }); // Build - if (!watchMode) { + let isBuild = typeof fileEmitter === 'function'; + if(isBuild) { const pathname = decodeURI(url.pathname); const filename = path.basename(pathname, path.extname(pathname) + `.${fileMetadata.format}`); - const handle = fileEmitter({ - name: filename, - source: await fs.readFile(url), - type: 'asset', - }); + try { + // fileEmitter throws in dev + const handle = fileEmitter!({ + name: filename, + source: await fs.readFile(url), + type: 'asset', + }); - emittedImage.src = `__ASTRO_ASSET_IMAGE__${handle}__`; - } else { + emittedImage.src = `__ASTRO_ASSET_IMAGE__${handle}__`; + } catch { + isBuild = false; + } + } + + if(!isBuild) { // Pass the original file information through query params so we don't have to load the file twice url.searchParams.append('origWidth', fileMetadata.width.toString()); url.searchParams.append('origHeight', fileMetadata.height.toString()); diff --git a/packages/astro/src/assets/vite-plugin-assets.ts b/packages/astro/src/assets/vite-plugin-assets.ts index 03a9bef29f..6114e7bf9b 100644 --- a/packages/astro/src/assets/vite-plugin-assets.ts +++ b/packages/astro/src/assets/vite-plugin-assets.ts @@ -95,6 +95,7 @@ export default function assets({ mode, }: AstroPluginOptions & { mode: string }): vite.Plugin[] { let resolvedConfig: vite.ResolvedConfig; + let shouldEmitFile = false; globalThis.astroAsset = { referencedImages: new Set(), @@ -194,6 +195,9 @@ export default function assets({ { name: 'astro:assets:esm', enforce: 'pre', + config(_, env) { + shouldEmitFile = env.command === 'build'; + }, configResolved(viteConfig) { resolvedConfig = viteConfig; }, @@ -214,7 +218,8 @@ export default function assets({ return; } - const imageMetadata = await emitESMImage(id, this.meta.watchMode, this.emitFile); + const emitFile = shouldEmitFile ? this.emitFile : undefined; + const imageMetadata = await emitESMImage(id, this.meta.watchMode, emitFile); if (!imageMetadata) { throw new AstroError({ diff --git a/packages/astro/src/config/index.ts b/packages/astro/src/config/index.ts index fc45ae9834..f48bf4b153 100644 --- a/packages/astro/src/config/index.ts +++ b/packages/astro/src/config/index.ts @@ -35,8 +35,8 @@ export function getViteConfig(inlineConfig: UserConfig) { level: 'info', }); const { astroConfig: config } = await resolveConfig({}, cmd); - const settings = await createSettings(config, inlineConfig.root); - await runHookConfigSetup({ settings, command: cmd, logger }); + let settings = await createSettings(config, inlineConfig.root); + settings = await runHookConfigSetup({ settings, command: cmd, logger }); const viteConfig = await createVite( { mode, diff --git a/packages/astro/src/content/runtime-assets.ts b/packages/astro/src/content/runtime-assets.ts index a34d71bab7..30f25ee9c1 100644 --- a/packages/astro/src/content/runtime-assets.ts +++ b/packages/astro/src/content/runtime-assets.ts @@ -2,14 +2,14 @@ import type { PluginContext } from 'rollup'; import { z } from 'zod'; import { emitESMImage } from '../assets/utils/emitAsset.js'; -export function createImage(pluginContext: PluginContext, entryFilePath: string) { +export function createImage(pluginContext: PluginContext, shouldEmitFile: boolean, entryFilePath: string) { return () => { return z.string().transform(async (imagePath, ctx) => { const resolvedFilePath = (await pluginContext.resolve(imagePath, entryFilePath))?.id; const metadata = await emitESMImage( resolvedFilePath, pluginContext.meta.watchMode, - pluginContext.emitFile + shouldEmitFile ? pluginContext.emitFile : undefined, ); if (!metadata) { diff --git a/packages/astro/src/content/utils.ts b/packages/astro/src/content/utils.ts index 0f18e9c07e..4bec3dd8d5 100644 --- a/packages/astro/src/content/utils.ts +++ b/packages/astro/src/content/utils.ts @@ -92,6 +92,7 @@ export async function getEntryData( _internal: EntryInternal; }, collectionConfig: CollectionConfig, + shouldEmitFile: boolean, pluginContext: PluginContext ) { let data; @@ -105,7 +106,7 @@ export async function getEntryData( let schema = collectionConfig.schema; if (typeof schema === 'function') { schema = schema({ - image: createImage(pluginContext, entry._internal.filePath), + image: createImage(pluginContext, shouldEmitFile, entry._internal.filePath), }); } diff --git a/packages/astro/src/content/vite-plugin-content-imports.ts b/packages/astro/src/content/vite-plugin-content-imports.ts index be232eb07c..654235971d 100644 --- a/packages/astro/src/content/vite-plugin-content-imports.ts +++ b/packages/astro/src/content/vite-plugin-content-imports.ts @@ -74,10 +74,14 @@ export function astroContentImportPlugin({ const contentEntryConfigByExt = getEntryConfigByExtMap(settings.contentEntryTypes); const dataEntryConfigByExt = getEntryConfigByExtMap(settings.dataEntryTypes); const { contentDir } = contentPaths; + let shouldEmitFile = false; const plugins: Plugin[] = [ { name: 'astro:content-imports', + config(_config, env) { + shouldEmitFile = env.command === 'build'; + }, async transform(_, viteId) { if (hasContentFlag(viteId, DATA_FLAG)) { const fileId = viteId.split('?')[0] ?? viteId; @@ -90,6 +94,7 @@ export function astroContentImportPlugin({ config: settings.config, fs, pluginContext: this, + shouldEmitFile, }); const code = ` @@ -112,6 +117,7 @@ export const _internal = { config: settings.config, fs, pluginContext: this, + shouldEmitFile, }); const code = ` @@ -190,6 +196,7 @@ type GetEntryModuleParams = pluginContext: PluginContext; entryConfigByExt: Map; config: AstroConfig; + shouldEmitFile: boolean; }; async function getContentEntryModule( @@ -222,6 +229,7 @@ async function getContentEntryModule( ? await getEntryData( { id, collection, _internal, unvalidatedData }, collectionConfig, + params.shouldEmitFile, pluginContext ) : unvalidatedData; @@ -256,7 +264,8 @@ async function getDataEntryModule( ? await getEntryData( { id, collection, _internal, unvalidatedData }, collectionConfig, - pluginContext + params.shouldEmitFile, + pluginContext, ) : unvalidatedData; From 10c5b039f929e0876663983e8f37228439efc165 Mon Sep 17 00:00:00 2001 From: Matthew Phillips Date: Tue, 23 Apr 2024 11:59:51 +0000 Subject: [PATCH 08/21] [ci] format --- packages/astro/src/assets/utils/emitAsset.ts | 8 ++++---- packages/astro/src/content/runtime-assets.ts | 8 ++++++-- packages/astro/src/content/vite-plugin-content-imports.ts | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/astro/src/assets/utils/emitAsset.ts b/packages/astro/src/assets/utils/emitAsset.ts index b6fc14efa7..1b6bb207bb 100644 --- a/packages/astro/src/assets/utils/emitAsset.ts +++ b/packages/astro/src/assets/utils/emitAsset.ts @@ -1,9 +1,9 @@ import fs from 'node:fs/promises'; import path from 'node:path'; import { fileURLToPath, pathToFileURL } from 'node:url'; +import type * as vite from 'vite'; import { prependForwardSlash, slash } from '../../core/path.js'; import type { ImageMetadata } from '../types.js'; -import type * as vite from 'vite'; import { imageMetadata } from './metadata.js'; type FileEmitter = vite.Rollup.EmitFile; @@ -14,7 +14,7 @@ export async function emitESMImage( _watchMode: boolean, // FIX: in Astro 5, this function should not be passed in dev mode at all. // Or rethink the API so that a function that throws isn't passed through. - fileEmitter?: FileEmitter, + fileEmitter?: FileEmitter ): Promise { if (!id) { return undefined; @@ -44,7 +44,7 @@ export async function emitESMImage( // Build let isBuild = typeof fileEmitter === 'function'; - if(isBuild) { + if (isBuild) { const pathname = decodeURI(url.pathname); const filename = path.basename(pathname, path.extname(pathname) + `.${fileMetadata.format}`); @@ -62,7 +62,7 @@ export async function emitESMImage( } } - if(!isBuild) { + if (!isBuild) { // Pass the original file information through query params so we don't have to load the file twice url.searchParams.append('origWidth', fileMetadata.width.toString()); url.searchParams.append('origHeight', fileMetadata.height.toString()); diff --git a/packages/astro/src/content/runtime-assets.ts b/packages/astro/src/content/runtime-assets.ts index 30f25ee9c1..e842c9c32f 100644 --- a/packages/astro/src/content/runtime-assets.ts +++ b/packages/astro/src/content/runtime-assets.ts @@ -2,14 +2,18 @@ import type { PluginContext } from 'rollup'; import { z } from 'zod'; import { emitESMImage } from '../assets/utils/emitAsset.js'; -export function createImage(pluginContext: PluginContext, shouldEmitFile: boolean, entryFilePath: string) { +export function createImage( + pluginContext: PluginContext, + shouldEmitFile: boolean, + entryFilePath: string +) { return () => { return z.string().transform(async (imagePath, ctx) => { const resolvedFilePath = (await pluginContext.resolve(imagePath, entryFilePath))?.id; const metadata = await emitESMImage( resolvedFilePath, pluginContext.meta.watchMode, - shouldEmitFile ? pluginContext.emitFile : undefined, + shouldEmitFile ? pluginContext.emitFile : undefined ); if (!metadata) { diff --git a/packages/astro/src/content/vite-plugin-content-imports.ts b/packages/astro/src/content/vite-plugin-content-imports.ts index 654235971d..6540d483ae 100644 --- a/packages/astro/src/content/vite-plugin-content-imports.ts +++ b/packages/astro/src/content/vite-plugin-content-imports.ts @@ -265,7 +265,7 @@ async function getDataEntryModule( { id, collection, _internal, unvalidatedData }, collectionConfig, params.shouldEmitFile, - pluginContext, + pluginContext ) : unvalidatedData; From 204b7820e6de22d97fa2a7b988180c42155c8387 Mon Sep 17 00:00:00 2001 From: Rishi Raj Jain Date: Tue, 23 Apr 2024 18:54:46 +0530 Subject: [PATCH 09/21] fix: markdown cannot find relative image path without leading ./ (#10801) --- .changeset/thirty-walls-yell.md | 15 +++++++++++++++ .../astro/src/vite-plugin-markdown/images.ts | 7 ++----- .../astro/src/vite-plugin-markdown/index.ts | 10 +++++++--- .../fixtures/markdown/src/pages/houston.png | Bin 0 -> 160915 bytes .../test/fixtures/markdown/src/pages/images.md | 2 ++ .../markdown/src/pages/relative/houston.png | Bin 0 -> 160915 bytes packages/astro/test/markdown.test.js | 8 +++++++- 7 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 .changeset/thirty-walls-yell.md create mode 100644 packages/astro/test/fixtures/markdown/src/pages/houston.png create mode 100644 packages/astro/test/fixtures/markdown/src/pages/images.md create mode 100644 packages/astro/test/fixtures/markdown/src/pages/relative/houston.png diff --git a/.changeset/thirty-walls-yell.md b/.changeset/thirty-walls-yell.md new file mode 100644 index 0000000000..8e63d6e1cf --- /dev/null +++ b/.changeset/thirty-walls-yell.md @@ -0,0 +1,15 @@ +--- +"astro": patch +--- + +Fixes an issue where images in MD required a relative specifier (e.g. `./`) + +Now, you can use the standard `![](relative/img.png)` syntax in MD files for images colocated in the same folder: no relative specifier required! + +There is no need to update your project; your existing images will still continue to work. However, you may wish to remove any relative specifiers from these MD images as they are no longer necessary: + +```diff +- ![A cute dog](./dog.jpg) ++ ![A cute dog](dog.jpg) + +``` diff --git a/packages/astro/src/vite-plugin-markdown/images.ts b/packages/astro/src/vite-plugin-markdown/images.ts index 751deff215..29afa2001f 100644 --- a/packages/astro/src/vite-plugin-markdown/images.ts +++ b/packages/astro/src/vite-plugin-markdown/images.ts @@ -1,13 +1,10 @@ -export type MarkdownImagePath = { raw: string; resolved: string; safeName: string }; +export type MarkdownImagePath = { raw: string; safeName: string }; export function getMarkdownCodeForImages(imagePaths: MarkdownImagePath[], html: string) { return ` import { getImage } from "astro:assets"; ${imagePaths - .map((entry) => { - const prefix = entry.raw.includes('/') ? '' : './'; - return `import Astro__${entry.safeName} from ${JSON.stringify(prefix + entry.raw)};`; - }) + .map((entry) => `import Astro__${entry.safeName} from ${JSON.stringify(entry.raw)};`) .join('\n')} const images = async function(html) { diff --git a/packages/astro/src/vite-plugin-markdown/index.ts b/packages/astro/src/vite-plugin-markdown/index.ts index a77a6ede26..98362c89d4 100644 --- a/packages/astro/src/vite-plugin-markdown/index.ts +++ b/packages/astro/src/vite-plugin-markdown/index.ts @@ -1,5 +1,4 @@ import fs from 'node:fs'; -import path from 'node:path'; import { fileURLToPath, pathToFileURL } from 'node:url'; import { InvalidAstroDataError, @@ -43,6 +42,13 @@ export default function markdown({ settings, logger }: AstroPluginOptions): Plug buildEnd() { processor = undefined; }, + async resolveId(source, importer, options) { + if (importer?.endsWith('.md') && source[0] !== '/') { + let resolved = await this.resolve(source, importer, options); + if (!resolved) resolved = await this.resolve('./' + source, importer, options); + return resolved; + } + }, // Why not the "transform" hook instead of "load" + readFile? // A: Vite transforms all "import.meta.env" references to their values before // passing to the transform hook. This lets us get the truly raw value @@ -85,8 +91,6 @@ export default function markdown({ settings, logger }: AstroPluginOptions): Plug for (const imagePath of rawImagePaths.values()) { imagePaths.push({ raw: imagePath, - resolved: - (await this.resolve(imagePath, id))?.id ?? path.join(path.dirname(id), imagePath), safeName: shorthash(imagePath), }); } diff --git a/packages/astro/test/fixtures/markdown/src/pages/houston.png b/packages/astro/test/fixtures/markdown/src/pages/houston.png new file mode 100644 index 0000000000000000000000000000000000000000..345ed0e9de1ee119bc74a70cd12d573dacbf89d8 GIT binary patch literal 160915 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 z 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�X3sZS$g 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 z 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�X3sZS$g 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 { it('Can load a realworld markdown page with Astro', async () => { const html = await fixture.readFile('/realworld/index.html'); const $ = cheerio.load(html); - assert.equal($('pre').length, 7); }); @@ -73,5 +72,12 @@ describe('Markdown tests', () => { const html = await fixture.readFile('/entities/index.html'); assert.match(html, /<i>This should NOT be italic<\/i>/); }); + + it('Resolves the image paths correctly', async () => { + const html = await fixture.readFile('/images/index.html'); + const $ = cheerio.load(html); + assert.equal($('img').first().attr('src').includes('.webp'), true); + assert.equal($('img').first().next().attr('src').includes('.webp'), true); + }); }); }); From a3e95dbeb04bb09e4253f9b690c1627b3ce7e90d Mon Sep 17 00:00:00 2001 From: Bjorn Lu Date: Tue, 23 Apr 2024 23:24:34 +0800 Subject: [PATCH 10/21] Move MDX Vite plugin to new file (#10854) --- packages/integrations/mdx/src/index.ts | 93 +------------------ .../integrations/mdx/src/vite-plugin-mdx.ts | 88 ++++++++++++++++++ 2 files changed, 93 insertions(+), 88 deletions(-) create mode 100644 packages/integrations/mdx/src/vite-plugin-mdx.ts diff --git a/packages/integrations/mdx/src/index.ts b/packages/integrations/mdx/src/index.ts index e48d0d8f19..fc1d92da48 100644 --- a/packages/integrations/mdx/src/index.ts +++ b/packages/integrations/mdx/src/index.ts @@ -1,16 +1,14 @@ import fs from 'node:fs/promises'; import { fileURLToPath } from 'node:url'; -import { markdownConfigDefaults, setVfileFrontmatter } from '@astrojs/markdown-remark'; -import type { AstroIntegration, ContentEntryType, HookParameters, SSRError } from 'astro'; +import { markdownConfigDefaults } from '@astrojs/markdown-remark'; +import type { AstroIntegration, ContentEntryType, HookParameters } from 'astro'; import astroJSXRenderer from 'astro/jsx/renderer.js'; import type { Options as RemarkRehypeOptions } from 'remark-rehype'; import type { PluggableList } from 'unified'; -import { VFile } from 'vfile'; -import type { Plugin as VitePlugin } from 'vite'; -import { createMdxProcessor } from './plugins.js'; import type { OptimizeOptions } from './rehype-optimize-static.js'; -import { getFileInfo, ignoreStringPlugins, parseFrontmatter } from './utils.js'; +import { ignoreStringPlugins, parseFrontmatter } from './utils.js'; import { vitePluginMdxPostprocess } from './vite-plugin-mdx-postprocess.js'; +import { vitePluginMdx } from './vite-plugin-mdx.js'; export type MdxOptions = Omit & { extendMarkdownConfig: boolean; @@ -70,90 +68,9 @@ export default function mdx(partialMdxOptions: Partial = {}): AstroI ), }); - let processor: ReturnType | undefined; - updateConfig({ vite: { - plugins: [ - { - name: '@mdx-js/rollup', - enforce: 'pre', - buildEnd() { - processor = undefined; - }, - configResolved(resolved) { - processor = createMdxProcessor(mdxOptions, { - sourcemap: !!resolved.build.sourcemap, - }); - - // HACK: move ourselves before Astro's JSX plugin to transform things in the right order - const jsxPluginIndex = resolved.plugins.findIndex((p) => p.name === 'astro:jsx'); - if (jsxPluginIndex !== -1) { - const myPluginIndex = resolved.plugins.findIndex( - (p) => p.name === '@mdx-js/rollup' - ); - if (myPluginIndex !== -1) { - const myPlugin = resolved.plugins[myPluginIndex]; - // @ts-ignore-error ignore readonly annotation - resolved.plugins.splice(myPluginIndex, 1); - // @ts-ignore-error ignore readonly annotation - resolved.plugins.splice(jsxPluginIndex, 0, myPlugin); - } - } - }, - async resolveId(source, importer, options) { - if (importer?.endsWith('.mdx') && source[0] !== '/') { - let resolved = await this.resolve(source, importer, options); - if (!resolved) resolved = await this.resolve('./' + source, importer, options); - return resolved; - } - }, - // Override transform to alter code before MDX compilation - // ex. inject layouts - async transform(_, id) { - if (!id.endsWith('.mdx')) return; - - // Read code from file manually to prevent Vite from parsing `import.meta.env` expressions - const { fileId } = getFileInfo(id, config); - const code = await fs.readFile(fileId, 'utf-8'); - - const { data: frontmatter, content: pageContent } = parseFrontmatter(code, id); - - const vfile = new VFile({ value: pageContent, path: id }); - // Ensure `data.astro` is available to all remark plugins - setVfileFrontmatter(vfile, frontmatter); - - // `processor` is initialized in `configResolved`, and removed in `buildEnd`. `transform` - // should be called in between those two lifecycle, so this error should never happen - if (!processor) { - return this.error( - 'MDX processor is not initialized. This is an internal error. Please file an issue.' - ); - } - - try { - const compiled = await processor.process(vfile); - - return { - code: String(compiled.value), - map: compiled.map, - }; - } catch (e: any) { - const err: SSRError = e; - - // For some reason MDX puts the error location in the error's name, not very useful for us. - err.name = 'MDXError'; - err.loc = { file: fileId, line: e.line, column: e.column }; - - // For another some reason, MDX doesn't include a stack trace. Weird - Error.captureStackTrace(err); - - throw err; - } - }, - }, - vitePluginMdxPostprocess(config), - ] as VitePlugin[], + plugins: [vitePluginMdx(config, mdxOptions), vitePluginMdxPostprocess(config)], }, }); }, diff --git a/packages/integrations/mdx/src/vite-plugin-mdx.ts b/packages/integrations/mdx/src/vite-plugin-mdx.ts new file mode 100644 index 0000000000..0185f37fb1 --- /dev/null +++ b/packages/integrations/mdx/src/vite-plugin-mdx.ts @@ -0,0 +1,88 @@ +import fs from 'node:fs/promises'; +import { setVfileFrontmatter } from '@astrojs/markdown-remark'; +import type { AstroConfig, SSRError } from 'astro'; +import { VFile } from 'vfile'; +import type { Plugin } from 'vite'; +import { createMdxProcessor } from './plugins.js'; +import { getFileInfo, parseFrontmatter } from './utils.js'; +import type { MdxOptions } from './index.js'; + +export function vitePluginMdx(astroConfig: AstroConfig, mdxOptions: MdxOptions): Plugin { + let processor: ReturnType | undefined; + + return { + name: '@mdx-js/rollup', + enforce: 'pre', + buildEnd() { + processor = undefined; + }, + configResolved(resolved) { + processor = createMdxProcessor(mdxOptions, { + sourcemap: !!resolved.build.sourcemap, + }); + + // HACK: move ourselves before Astro's JSX plugin to transform things in the right order + const jsxPluginIndex = resolved.plugins.findIndex((p) => p.name === 'astro:jsx'); + if (jsxPluginIndex !== -1) { + const myPluginIndex = resolved.plugins.findIndex((p) => p.name === '@mdx-js/rollup'); + if (myPluginIndex !== -1) { + const myPlugin = resolved.plugins[myPluginIndex]; + // @ts-ignore-error ignore readonly annotation + resolved.plugins.splice(myPluginIndex, 1); + // @ts-ignore-error ignore readonly annotation + resolved.plugins.splice(jsxPluginIndex, 0, myPlugin); + } + } + }, + async resolveId(source, importer, options) { + if (importer?.endsWith('.mdx') && source[0] !== '/') { + let resolved = await this.resolve(source, importer, options); + if (!resolved) resolved = await this.resolve('./' + source, importer, options); + return resolved; + } + }, + // Override transform to alter code before MDX compilation + // ex. inject layouts + async transform(_, id) { + if (!id.endsWith('.mdx')) return; + + // Read code from file manually to prevent Vite from parsing `import.meta.env` expressions + const { fileId } = getFileInfo(id, astroConfig); + const code = await fs.readFile(fileId, 'utf-8'); + + const { data: frontmatter, content: pageContent } = parseFrontmatter(code, id); + + const vfile = new VFile({ value: pageContent, path: id }); + // Ensure `data.astro` is available to all remark plugins + setVfileFrontmatter(vfile, frontmatter); + + // `processor` is initialized in `configResolved`, and removed in `buildEnd`. `transform` + // should be called in between those two lifecycle, so this error should never happen + if (!processor) { + return this.error( + 'MDX processor is not initialized. This is an internal error. Please file an issue.' + ); + } + + try { + const compiled = await processor.process(vfile); + + return { + code: String(compiled.value), + map: compiled.map, + }; + } catch (e: any) { + const err: SSRError = e; + + // For some reason MDX puts the error location in the error's name, not very useful for us. + err.name = 'MDXError'; + err.loc = { file: fileId, line: e.line, column: e.column }; + + // For another some reason, MDX doesn't include a stack trace. Weird + Error.captureStackTrace(err); + + throw err; + } + }, + }; +} From d7dff648241b23b235f7060249de0fe015411bc3 Mon Sep 17 00:00:00 2001 From: Bjorn Lu Date: Tue, 23 Apr 2024 15:25:25 +0000 Subject: [PATCH 11/21] [ci] format --- packages/integrations/mdx/src/vite-plugin-mdx.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/integrations/mdx/src/vite-plugin-mdx.ts b/packages/integrations/mdx/src/vite-plugin-mdx.ts index 0185f37fb1..6f2ec2cc48 100644 --- a/packages/integrations/mdx/src/vite-plugin-mdx.ts +++ b/packages/integrations/mdx/src/vite-plugin-mdx.ts @@ -3,9 +3,9 @@ import { setVfileFrontmatter } from '@astrojs/markdown-remark'; import type { AstroConfig, SSRError } from 'astro'; import { VFile } from 'vfile'; import type { Plugin } from 'vite'; +import type { MdxOptions } from './index.js'; import { createMdxProcessor } from './plugins.js'; import { getFileInfo, parseFrontmatter } from './utils.js'; -import type { MdxOptions } from './index.js'; export function vitePluginMdx(astroConfig: AstroConfig, mdxOptions: MdxOptions): Plugin { let processor: ReturnType | undefined; From 30cf82ac3e970a6a3c0f07db1340dd7152d1c35d Mon Sep 17 00:00:00 2001 From: Robert van Hoesel Date: Tue, 23 Apr 2024 22:52:55 +0200 Subject: [PATCH 12/21] Prevents inputs from changing ViewTransitions' form method or action (#10856) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Prevents inputs from changing ViewTransitions' form method or action. Fixes #10849 * Consistency 🧘‍♂️ --- .changeset/tasty-swans-refuse.md | 5 +++++ .../astro/components/ViewTransitions.astro | 11 +++++++++-- .../src/pages/form-seven.astro | 11 +++++++++++ .../view-transitions/src/pages/form-six.astro | 11 +++++++++++ packages/astro/e2e/view-transitions.test.js | 19 +++++++++++++++++++ 5 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 .changeset/tasty-swans-refuse.md create mode 100644 packages/astro/e2e/fixtures/view-transitions/src/pages/form-seven.astro create mode 100644 packages/astro/e2e/fixtures/view-transitions/src/pages/form-six.astro diff --git a/.changeset/tasty-swans-refuse.md b/.changeset/tasty-swans-refuse.md new file mode 100644 index 0000000000..8a8d6dde57 --- /dev/null +++ b/.changeset/tasty-swans-refuse.md @@ -0,0 +1,5 @@ +--- +"astro": patch +--- + +Prevents inputs with a name attribute of action or method to break ViewTransitions' form submission diff --git a/packages/astro/components/ViewTransitions.astro b/packages/astro/components/ViewTransitions.astro index c33d9a3f5f..84a68d61e6 100644 --- a/packages/astro/components/ViewTransitions.astro +++ b/packages/astro/components/ViewTransitions.astro @@ -108,9 +108,16 @@ const { fallback = 'animate' } = Astro.props; const form = el as HTMLFormElement; const submitter = ev.submitter; const formData = new FormData(form, submitter); + // form.action and form.method can point to an or + // in which case should fallback to the form attribute + const formAction = + typeof form.action === 'string' ? form.action : form.getAttribute('action'); + const formMethod = + typeof form.method === 'string' ? form.method : form.getAttribute('method'); // Use the form action, if defined, otherwise fallback to current path. - let action = submitter?.getAttribute('formaction') ?? form.action ?? location.pathname; - const method = submitter?.getAttribute('formmethod') ?? form.method; + let action = submitter?.getAttribute('formaction') ?? formAction ?? location.pathname; + // Use the form method, if defined, otherwise fallback to "get" + const method = submitter?.getAttribute('formmethod') ?? formMethod ?? 'get'; // the "dialog" method is a special keyword used within elements // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-method diff --git a/packages/astro/e2e/fixtures/view-transitions/src/pages/form-seven.astro b/packages/astro/e2e/fixtures/view-transitions/src/pages/form-seven.astro new file mode 100644 index 0000000000..71befd9247 --- /dev/null +++ b/packages/astro/e2e/fixtures/view-transitions/src/pages/form-seven.astro @@ -0,0 +1,11 @@ +--- +import Layout from '../components/Layout.astro'; + +--- + +
+

This form has an no method defined, but input with `name=method`

+ + +
+
diff --git a/packages/astro/e2e/fixtures/view-transitions/src/pages/form-six.astro b/packages/astro/e2e/fixtures/view-transitions/src/pages/form-six.astro new file mode 100644 index 0000000000..699fb1842a --- /dev/null +++ b/packages/astro/e2e/fixtures/view-transitions/src/pages/form-six.astro @@ -0,0 +1,11 @@ +--- +import Layout from '../components/Layout.astro'; + +--- + +
+

This form has an input with `name=action`

+ + +
+
diff --git a/packages/astro/e2e/view-transitions.test.js b/packages/astro/e2e/view-transitions.test.js index ef76010a58..5e2ea0aceb 100644 --- a/packages/astro/e2e/view-transitions.test.js +++ b/packages/astro/e2e/view-transitions.test.js @@ -1168,6 +1168,25 @@ test.describe('View Transitions', () => { ).toEqual(['application/x-www-form-urlencoded']); }); + + test('form POST that includes an input with name action should not override action', async ({ page, astro }) => { + await page.goto(astro.resolveUrl('/form-six')); + page.on('request', (request) => { + expect(request.url()).toContain('/bar') + }); + // Submit the form + await page.click('#submit'); + }); + + test('form without method that includes an input with name method should not override default method', async ({ page, astro }) => { + await page.goto(astro.resolveUrl('/form-seven')); + page.on('request', (request) => { + expect(request.method()).toBe('GET') + }); + // Submit the form + await page.click('#submit'); + }); + test('Route announcer is invisible on page transition', async ({ page, astro }) => { await page.goto(astro.resolveUrl('/no-directive-one')); From 9326531333016f15e7d8338b2888cb734ef85d60 Mon Sep 17 00:00:00 2001 From: Robert van Hoesel Date: Tue, 23 Apr 2024 20:53:46 +0000 Subject: [PATCH 13/21] [ci] format --- packages/astro/e2e/view-transitions.test.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/astro/e2e/view-transitions.test.js b/packages/astro/e2e/view-transitions.test.js index 5e2ea0aceb..0913380c63 100644 --- a/packages/astro/e2e/view-transitions.test.js +++ b/packages/astro/e2e/view-transitions.test.js @@ -1168,20 +1168,25 @@ test.describe('View Transitions', () => { ).toEqual(['application/x-www-form-urlencoded']); }); - - test('form POST that includes an input with name action should not override action', async ({ page, astro }) => { + test('form POST that includes an input with name action should not override action', async ({ + page, + astro, + }) => { await page.goto(astro.resolveUrl('/form-six')); page.on('request', (request) => { - expect(request.url()).toContain('/bar') + expect(request.url()).toContain('/bar'); }); // Submit the form await page.click('#submit'); }); - test('form without method that includes an input with name method should not override default method', async ({ page, astro }) => { + test('form without method that includes an input with name method should not override default method', async ({ + page, + astro, + }) => { await page.goto(astro.resolveUrl('/form-seven')); page.on('request', (request) => { - expect(request.method()).toBe('GET') + expect(request.method()).toBe('GET'); }); // Submit the form await page.click('#submit'); From f6bddd3a155cd10a9f85c92d43b1af8b74786a42 Mon Sep 17 00:00:00 2001 From: Lam <150060045+lamATnginx@users.noreply.github.com> Date: Tue, 23 Apr 2024 14:29:38 -0700 Subject: [PATCH 14/21] fix: allow redoc to render on react components (#10855) * fix: removed redoc from noExternal for react * Add changeset --------- Co-authored-by: Matthew Phillips --- .changeset/metal-walls-fly.md | 5 +++++ packages/integrations/react/src/index.ts | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 .changeset/metal-walls-fly.md diff --git a/.changeset/metal-walls-fly.md b/.changeset/metal-walls-fly.md new file mode 100644 index 0000000000..fb906acc4e --- /dev/null +++ b/.changeset/metal-walls-fly.md @@ -0,0 +1,5 @@ +--- +"@astrojs/react": patch +--- + +Fix Redoc usage in React integration diff --git a/packages/integrations/react/src/index.ts b/packages/integrations/react/src/index.ts index c6bf1a200f..e0149e8e76 100644 --- a/packages/integrations/react/src/index.ts +++ b/packages/integrations/react/src/index.ts @@ -82,7 +82,6 @@ function getViteConfiguration({ '@mui/material', '@mui/base', '@babel/runtime', - 'redoc', 'use-immer', '@material-tailwind/react', ], From a94046588cce2d34ce4bd0c935f580d0616ab5b2 Mon Sep 17 00:00:00 2001 From: "Houston (Bot)" <108291165+astrobot-houston@users.noreply.github.com> Date: Tue, 23 Apr 2024 16:30:37 -0700 Subject: [PATCH 15/21] [ci] release (#10842) Co-authored-by: github-actions[bot] --- .changeset/bright-chefs-develop.md | 5 -- .changeset/metal-walls-fly.md | 5 -- .changeset/spotty-dots-beg.md | 5 -- .changeset/sweet-coins-shop.md | 5 -- .changeset/tasty-swans-refuse.md | 5 -- .changeset/thick-wasps-know.md | 7 --- .changeset/thirty-walls-yell.md | 15 ----- .changeset/weak-swans-sparkle.md | 5 -- .changeset/wet-apples-accept.md | 5 -- examples/basics/package.json | 2 +- examples/blog/package.json | 2 +- examples/component/package.json | 2 +- examples/framework-alpine/package.json | 2 +- examples/framework-lit/package.json | 2 +- examples/framework-multiple/package.json | 4 +- examples/framework-preact/package.json | 2 +- examples/framework-react/package.json | 4 +- examples/framework-solid/package.json | 2 +- examples/framework-svelte/package.json | 2 +- examples/framework-vue/package.json | 2 +- examples/hackernews/package.json | 2 +- examples/integration/package.json | 2 +- examples/middleware/package.json | 2 +- examples/minimal/package.json | 2 +- examples/non-html-pages/package.json | 2 +- examples/portfolio/package.json | 2 +- examples/ssr/package.json | 2 +- examples/starlog/package.json | 2 +- examples/view-transitions/package.json | 2 +- examples/with-markdoc/package.json | 4 +- 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 | 24 ++++++++ packages/astro/package.json | 2 +- packages/db/CHANGELOG.md | 6 ++ packages/db/package.json | 2 +- packages/integrations/markdoc/CHANGELOG.md | 10 ++++ packages/integrations/markdoc/package.json | 2 +- packages/integrations/partytown/CHANGELOG.md | 6 ++ packages/integrations/partytown/package.json | 2 +- packages/integrations/react/CHANGELOG.md | 6 ++ packages/integrations/react/package.json | 2 +- packages/integrations/vercel/CHANGELOG.md | 6 ++ packages/integrations/vercel/package.json | 2 +- pnpm-lock.yaml | 61 ++++++++++---------- 49 files changed, 125 insertions(+), 123 deletions(-) delete mode 100644 .changeset/bright-chefs-develop.md delete mode 100644 .changeset/metal-walls-fly.md delete mode 100644 .changeset/spotty-dots-beg.md delete mode 100644 .changeset/sweet-coins-shop.md delete mode 100644 .changeset/tasty-swans-refuse.md delete mode 100644 .changeset/thick-wasps-know.md delete mode 100644 .changeset/thirty-walls-yell.md delete mode 100644 .changeset/weak-swans-sparkle.md delete mode 100644 .changeset/wet-apples-accept.md diff --git a/.changeset/bright-chefs-develop.md b/.changeset/bright-chefs-develop.md deleted file mode 100644 index b0078e085d..0000000000 --- a/.changeset/bright-chefs-develop.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@astrojs/markdoc": minor ---- - -Updates `@markdoc/markdoc` to v0.4 diff --git a/.changeset/metal-walls-fly.md b/.changeset/metal-walls-fly.md deleted file mode 100644 index fb906acc4e..0000000000 --- a/.changeset/metal-walls-fly.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@astrojs/react": patch ---- - -Fix Redoc usage in React integration diff --git a/.changeset/spotty-dots-beg.md b/.changeset/spotty-dots-beg.md deleted file mode 100644 index 91a7c8526a..0000000000 --- a/.changeset/spotty-dots-beg.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@astrojs/db": patch ---- - -Add `astro login` support from online editors like Stackblitz and GitHub Codespaces diff --git a/.changeset/sweet-coins-shop.md b/.changeset/sweet-coins-shop.md deleted file mode 100644 index 02d69af15c..0000000000 --- a/.changeset/sweet-coins-shop.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"astro": patch ---- - -Prevent getCollection breaking in vitest diff --git a/.changeset/tasty-swans-refuse.md b/.changeset/tasty-swans-refuse.md deleted file mode 100644 index 8a8d6dde57..0000000000 --- a/.changeset/tasty-swans-refuse.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"astro": patch ---- - -Prevents inputs with a name attribute of action or method to break ViewTransitions' form submission diff --git a/.changeset/thick-wasps-know.md b/.changeset/thick-wasps-know.md deleted file mode 100644 index 855a9c7b72..0000000000 --- a/.changeset/thick-wasps-know.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@astrojs/markdoc": patch -"@astrojs/vercel": patch -"astro": patch ---- - -Updates `esbuild` dependency to v0.20. This should not affect projects in most cases. diff --git a/.changeset/thirty-walls-yell.md b/.changeset/thirty-walls-yell.md deleted file mode 100644 index 8e63d6e1cf..0000000000 --- a/.changeset/thirty-walls-yell.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -"astro": patch ---- - -Fixes an issue where images in MD required a relative specifier (e.g. `./`) - -Now, you can use the standard `![](relative/img.png)` syntax in MD files for images colocated in the same folder: no relative specifier required! - -There is no need to update your project; your existing images will still continue to work. However, you may wish to remove any relative specifiers from these MD images as they are no longer necessary: - -```diff -- ![A cute dog](./dog.jpg) -+ ![A cute dog](dog.jpg) - -``` diff --git a/.changeset/weak-swans-sparkle.md b/.changeset/weak-swans-sparkle.md deleted file mode 100644 index ee99d8bc70..0000000000 --- a/.changeset/weak-swans-sparkle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"astro": patch ---- - -Due to regression on mobile WebKit browsers, reverts a change made for JavaScript animations during view transitions. diff --git a/.changeset/wet-apples-accept.md b/.changeset/wet-apples-accept.md deleted file mode 100644 index 97420fbf33..0000000000 --- a/.changeset/wet-apples-accept.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@astrojs/partytown": minor ---- - -Updates the `@builder.io/partytown` dependency to v0.10. This should not affect projects in most cases. diff --git a/examples/basics/package.json b/examples/basics/package.json index 02522acb7a..6939c16fdd 100644 --- a/examples/basics/package.json +++ b/examples/basics/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.6.3" + "astro": "^4.6.4" } } diff --git a/examples/blog/package.json b/examples/blog/package.json index 072a6a3317..4e092776e5 100644 --- a/examples/blog/package.json +++ b/examples/blog/package.json @@ -14,6 +14,6 @@ "@astrojs/mdx": "^2.3.1", "@astrojs/rss": "^4.0.5", "@astrojs/sitemap": "^3.1.4", - "astro": "^4.6.3" + "astro": "^4.6.4" } } diff --git a/examples/component/package.json b/examples/component/package.json index bcfcb66ac8..e8dfba6f36 100644 --- a/examples/component/package.json +++ b/examples/component/package.json @@ -15,7 +15,7 @@ ], "scripts": {}, "devDependencies": { - "astro": "^4.6.3" + "astro": "^4.6.4" }, "peerDependencies": { "astro": "^4.0.0" diff --git a/examples/framework-alpine/package.json b/examples/framework-alpine/package.json index f6639d87d7..a5c4aff455 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.5", "alpinejs": "^3.13.3", - "astro": "^4.6.3" + "astro": "^4.6.4" } } diff --git a/examples/framework-lit/package.json b/examples/framework-lit/package.json index 3c70813b75..987cbb8c8e 100644 --- a/examples/framework-lit/package.json +++ b/examples/framework-lit/package.json @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/lit": "^4.0.1", "@webcomponents/template-shadowroot": "^0.2.1", - "astro": "^4.6.3", + "astro": "^4.6.4", "lit": "^3.1.2" } } diff --git a/examples/framework-multiple/package.json b/examples/framework-multiple/package.json index b0fd48b55b..80113b6df4 100644 --- a/examples/framework-multiple/package.json +++ b/examples/framework-multiple/package.json @@ -12,13 +12,13 @@ }, "dependencies": { "@astrojs/preact": "^3.2.0", - "@astrojs/react": "^3.3.0", + "@astrojs/react": "^3.3.1", "@astrojs/solid-js": "^4.1.0", "@astrojs/svelte": "^5.4.0", "@astrojs/vue": "^4.1.0", "@types/react": "^18.2.37", "@types/react-dom": "^18.2.15", - "astro": "^4.6.3", + "astro": "^4.6.4", "preact": "^10.19.2", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/framework-preact/package.json b/examples/framework-preact/package.json index 657eaf8bb5..b19748ff25 100644 --- a/examples/framework-preact/package.json +++ b/examples/framework-preact/package.json @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/preact": "^3.2.0", "@preact/signals": "^1.2.1", - "astro": "^4.6.3", + "astro": "^4.6.4", "preact": "^10.19.2" } } diff --git a/examples/framework-react/package.json b/examples/framework-react/package.json index b96a70e073..a291d12229 100644 --- a/examples/framework-react/package.json +++ b/examples/framework-react/package.json @@ -11,10 +11,10 @@ "astro": "astro" }, "dependencies": { - "@astrojs/react": "^3.3.0", + "@astrojs/react": "^3.3.1", "@types/react": "^18.2.37", "@types/react-dom": "^18.2.15", - "astro": "^4.6.3", + "astro": "^4.6.4", "react": "^18.2.0", "react-dom": "^18.2.0" } diff --git a/examples/framework-solid/package.json b/examples/framework-solid/package.json index 410555d9f6..6b6a13de57 100644 --- a/examples/framework-solid/package.json +++ b/examples/framework-solid/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@astrojs/solid-js": "^4.1.0", - "astro": "^4.6.3", + "astro": "^4.6.4", "solid-js": "^1.8.5" } } diff --git a/examples/framework-svelte/package.json b/examples/framework-svelte/package.json index 9a37664b2e..3eaaf67fb6 100644 --- a/examples/framework-svelte/package.json +++ b/examples/framework-svelte/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@astrojs/svelte": "^5.4.0", - "astro": "^4.6.3", + "astro": "^4.6.4", "svelte": "^4.2.5" } } diff --git a/examples/framework-vue/package.json b/examples/framework-vue/package.json index b7a1e49e99..5ff7026d1e 100644 --- a/examples/framework-vue/package.json +++ b/examples/framework-vue/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@astrojs/vue": "^4.1.0", - "astro": "^4.6.3", + "astro": "^4.6.4", "vue": "^3.3.8" } } diff --git a/examples/hackernews/package.json b/examples/hackernews/package.json index a7ea4297ae..0abad55532 100644 --- a/examples/hackernews/package.json +++ b/examples/hackernews/package.json @@ -12,6 +12,6 @@ }, "dependencies": { "@astrojs/node": "^8.2.5", - "astro": "^4.6.3" + "astro": "^4.6.4" } } diff --git a/examples/integration/package.json b/examples/integration/package.json index 7121e8c347..295947d1ec 100644 --- a/examples/integration/package.json +++ b/examples/integration/package.json @@ -15,7 +15,7 @@ ], "scripts": {}, "devDependencies": { - "astro": "^4.6.3" + "astro": "^4.6.4" }, "peerDependencies": { "astro": "^4.0.0" diff --git a/examples/middleware/package.json b/examples/middleware/package.json index 1d84d85804..7c872f2b2d 100644 --- a/examples/middleware/package.json +++ b/examples/middleware/package.json @@ -13,7 +13,7 @@ }, "dependencies": { "@astrojs/node": "^8.2.5", - "astro": "^4.6.3", + "astro": "^4.6.4", "html-minifier": "^4.0.0" }, "devDependencies": { diff --git a/examples/minimal/package.json b/examples/minimal/package.json index 8b3a8dfedb..b350ff3efe 100644 --- a/examples/minimal/package.json +++ b/examples/minimal/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.6.3" + "astro": "^4.6.4" } } diff --git a/examples/non-html-pages/package.json b/examples/non-html-pages/package.json index 884f8d7591..34a84ff565 100644 --- a/examples/non-html-pages/package.json +++ b/examples/non-html-pages/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.6.3" + "astro": "^4.6.4" } } diff --git a/examples/portfolio/package.json b/examples/portfolio/package.json index 3af8adde6a..e2facb8153 100644 --- a/examples/portfolio/package.json +++ b/examples/portfolio/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.6.3" + "astro": "^4.6.4" } } diff --git a/examples/ssr/package.json b/examples/ssr/package.json index 8ebd90fd16..eb5e2ab4bc 100644 --- a/examples/ssr/package.json +++ b/examples/ssr/package.json @@ -14,7 +14,7 @@ "dependencies": { "@astrojs/node": "^8.2.5", "@astrojs/svelte": "^5.4.0", - "astro": "^4.6.3", + "astro": "^4.6.4", "svelte": "^4.2.5" } } diff --git a/examples/starlog/package.json b/examples/starlog/package.json index 0778ec8f88..7668d0d761 100644 --- a/examples/starlog/package.json +++ b/examples/starlog/package.json @@ -10,7 +10,7 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.6.3", + "astro": "^4.6.4", "sass": "^1.69.5", "sharp": "^0.32.6" } diff --git a/examples/view-transitions/package.json b/examples/view-transitions/package.json index 61865cdee0..116bcad529 100644 --- a/examples/view-transitions/package.json +++ b/examples/view-transitions/package.json @@ -12,6 +12,6 @@ "devDependencies": { "@astrojs/tailwind": "^5.1.0", "@astrojs/node": "^8.2.5", - "astro": "^4.6.3" + "astro": "^4.6.4" } } diff --git a/examples/with-markdoc/package.json b/examples/with-markdoc/package.json index 085a5b1b93..1ac4e0761f 100644 --- a/examples/with-markdoc/package.json +++ b/examples/with-markdoc/package.json @@ -11,7 +11,7 @@ "astro": "astro" }, "dependencies": { - "@astrojs/markdoc": "^0.10.0", - "astro": "^4.6.3" + "@astrojs/markdoc": "^0.11.0", + "astro": "^4.6.4" } } diff --git a/examples/with-markdown-plugins/package.json b/examples/with-markdown-plugins/package.json index 095b2e5d69..34a17734dc 100644 --- a/examples/with-markdown-plugins/package.json +++ b/examples/with-markdown-plugins/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@astrojs/markdown-remark": "^5.1.0", - "astro": "^4.6.3", + "astro": "^4.6.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 e06edaee9f..257d3b09fa 100644 --- a/examples/with-markdown-shiki/package.json +++ b/examples/with-markdown-shiki/package.json @@ -11,6 +11,6 @@ "astro": "astro" }, "dependencies": { - "astro": "^4.6.3" + "astro": "^4.6.4" } } diff --git a/examples/with-mdx/package.json b/examples/with-mdx/package.json index 056c1ad1aa..5725e958bd 100644 --- a/examples/with-mdx/package.json +++ b/examples/with-mdx/package.json @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/mdx": "^2.3.1", "@astrojs/preact": "^3.2.0", - "astro": "^4.6.3", + "astro": "^4.6.4", "preact": "^10.19.2" } } diff --git a/examples/with-nanostores/package.json b/examples/with-nanostores/package.json index 4c3093f01d..328eb99711 100644 --- a/examples/with-nanostores/package.json +++ b/examples/with-nanostores/package.json @@ -13,7 +13,7 @@ "dependencies": { "@astrojs/preact": "^3.2.0", "@nanostores/preact": "^0.5.0", - "astro": "^4.6.3", + "astro": "^4.6.4", "nanostores": "^0.9.5", "preact": "^10.19.2" } diff --git a/examples/with-tailwindcss/package.json b/examples/with-tailwindcss/package.json index b0322860f6..ba725f89c6 100644 --- a/examples/with-tailwindcss/package.json +++ b/examples/with-tailwindcss/package.json @@ -14,7 +14,7 @@ "@astrojs/mdx": "^2.3.1", "@astrojs/tailwind": "^5.1.0", "@types/canvas-confetti": "^1.6.3", - "astro": "^4.6.3", + "astro": "^4.6.4", "autoprefixer": "^10.4.15", "canvas-confetti": "^1.9.1", "postcss": "^8.4.28", diff --git a/examples/with-vitest/package.json b/examples/with-vitest/package.json index 989f1a301a..a1d0ee1b95 100644 --- a/examples/with-vitest/package.json +++ b/examples/with-vitest/package.json @@ -12,7 +12,7 @@ "test": "vitest" }, "dependencies": { - "astro": "^4.6.3", + "astro": "^4.6.4", "vitest": "^1.5.0" } } diff --git a/packages/astro/CHANGELOG.md b/packages/astro/CHANGELOG.md index 2cf022a658..5561b785ff 100644 --- a/packages/astro/CHANGELOG.md +++ b/packages/astro/CHANGELOG.md @@ -1,5 +1,29 @@ # astro +## 4.6.4 + +### Patch Changes + +- [#10846](https://github.com/withastro/astro/pull/10846) [`3294f7a`](https://github.com/withastro/astro/commit/3294f7a343e036d2ad9ac8d5f792ad0d4f43a399) Thanks [@matthewp](https://github.com/matthewp)! - Prevent getCollection breaking in vitest + +- [#10856](https://github.com/withastro/astro/pull/10856) [`30cf82a`](https://github.com/withastro/astro/commit/30cf82ac3e970a6a3c0f07db1340dd7152d1c35d) Thanks [@robertvanhoesel](https://github.com/robertvanhoesel)! - Prevents inputs with a name attribute of action or method to break ViewTransitions' form submission + +- [#10833](https://github.com/withastro/astro/pull/10833) [`8d5f3e8`](https://github.com/withastro/astro/commit/8d5f3e8656027023f9fda51c66b0213ffe16d3a5) Thanks [@renovate](https://github.com/apps/renovate)! - Updates `esbuild` dependency to v0.20. This should not affect projects in most cases. + +- [#10801](https://github.com/withastro/astro/pull/10801) [`204b782`](https://github.com/withastro/astro/commit/204b7820e6de22d97fa2a7b988180c42155c8387) Thanks [@rishi-raj-jain](https://github.com/rishi-raj-jain)! - Fixes an issue where images in MD required a relative specifier (e.g. `./`) + + Now, you can use the standard `![](relative/img.png)` syntax in MD files for images colocated in the same folder: no relative specifier required! + + There is no need to update your project; your existing images will still continue to work. However, you may wish to remove any relative specifiers from these MD images as they are no longer necessary: + + ```diff + - ![A cute dog](./dog.jpg) + + ![A cute dog](dog.jpg) + + ``` + +- [#10841](https://github.com/withastro/astro/pull/10841) [`a2df344`](https://github.com/withastro/astro/commit/a2df344bff15647c2bfb3f49e3f7b66aa069d6f4) Thanks [@martrapp](https://github.com/martrapp)! - Due to regression on mobile WebKit browsers, reverts a change made for JavaScript animations during view transitions. + ## 4.6.3 ### Patch Changes diff --git a/packages/astro/package.json b/packages/astro/package.json index a8d8824892..b28c73403c 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,6 +1,6 @@ { "name": "astro", - "version": "4.6.3", + "version": "4.6.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/db/CHANGELOG.md b/packages/db/CHANGELOG.md index b909fffe0a..2b89cae73c 100644 --- a/packages/db/CHANGELOG.md +++ b/packages/db/CHANGELOG.md @@ -1,5 +1,11 @@ # @astrojs/db +## 0.10.6 + +### Patch Changes + +- [#10816](https://github.com/withastro/astro/pull/10816) [`8e6eb62`](https://github.com/withastro/astro/commit/8e6eb624aee40bac66a58169a30107f624a8c539) Thanks [@bholmesdev](https://github.com/bholmesdev)! - Add `astro login` support from online editors like Stackblitz and GitHub Codespaces + ## 0.10.5 ### Patch Changes diff --git a/packages/db/package.json b/packages/db/package.json index 6b7357dca5..ac6b8a8053 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -1,6 +1,6 @@ { "name": "@astrojs/db", - "version": "0.10.5", + "version": "0.10.6", "description": "Add libSQL and Astro Studio support to your Astro site", "license": "MIT", "repository": { diff --git a/packages/integrations/markdoc/CHANGELOG.md b/packages/integrations/markdoc/CHANGELOG.md index 83f7dae2fd..b99674d424 100644 --- a/packages/integrations/markdoc/CHANGELOG.md +++ b/packages/integrations/markdoc/CHANGELOG.md @@ -1,5 +1,15 @@ # @astrojs/markdoc +## 0.11.0 + +### Minor Changes + +- [#10833](https://github.com/withastro/astro/pull/10833) [`8d5f3e8`](https://github.com/withastro/astro/commit/8d5f3e8656027023f9fda51c66b0213ffe16d3a5) Thanks [@renovate](https://github.com/apps/renovate)! - Updates `@markdoc/markdoc` to v0.4 + +### Patch Changes + +- [#10833](https://github.com/withastro/astro/pull/10833) [`8d5f3e8`](https://github.com/withastro/astro/commit/8d5f3e8656027023f9fda51c66b0213ffe16d3a5) Thanks [@renovate](https://github.com/apps/renovate)! - Updates `esbuild` dependency to v0.20. This should not affect projects in most cases. + ## 0.10.0 ### Minor Changes diff --git a/packages/integrations/markdoc/package.json b/packages/integrations/markdoc/package.json index ab0e193010..acb7720eb2 100644 --- a/packages/integrations/markdoc/package.json +++ b/packages/integrations/markdoc/package.json @@ -1,7 +1,7 @@ { "name": "@astrojs/markdoc", "description": "Add support for Markdoc in your Astro site", - "version": "0.10.0", + "version": "0.11.0", "type": "module", "types": "./dist/index.d.ts", "author": "withastro", diff --git a/packages/integrations/partytown/CHANGELOG.md b/packages/integrations/partytown/CHANGELOG.md index 51490a593b..1d2e86938a 100644 --- a/packages/integrations/partytown/CHANGELOG.md +++ b/packages/integrations/partytown/CHANGELOG.md @@ -1,5 +1,11 @@ # @astrojs/partytown +## 2.1.0 + +### Minor Changes + +- [#10833](https://github.com/withastro/astro/pull/10833) [`8d5f3e8`](https://github.com/withastro/astro/commit/8d5f3e8656027023f9fda51c66b0213ffe16d3a5) Thanks [@renovate](https://github.com/apps/renovate)! - Updates the `@builder.io/partytown` dependency to v0.10. This should not affect projects in most cases. + ## 2.0.4 ### Patch Changes diff --git a/packages/integrations/partytown/package.json b/packages/integrations/partytown/package.json index 065ed78c4d..74381e85f5 100644 --- a/packages/integrations/partytown/package.json +++ b/packages/integrations/partytown/package.json @@ -1,7 +1,7 @@ { "name": "@astrojs/partytown", "description": "Use Partytown to move scripts into a web worker in your Astro project", - "version": "2.0.4", + "version": "2.1.0", "type": "module", "types": "./dist/index.d.ts", "author": "withastro", diff --git a/packages/integrations/react/CHANGELOG.md b/packages/integrations/react/CHANGELOG.md index aa8f833b6e..b1664f6012 100644 --- a/packages/integrations/react/CHANGELOG.md +++ b/packages/integrations/react/CHANGELOG.md @@ -1,5 +1,11 @@ # @astrojs/react +## 3.3.1 + +### Patch Changes + +- [#10855](https://github.com/withastro/astro/pull/10855) [`f6bddd3`](https://github.com/withastro/astro/commit/f6bddd3a155cd10a9f85c92d43b1af8b74786a42) Thanks [@lamATnginx](https://github.com/lamATnginx)! - Fix Redoc usage in React integration + ## 3.3.0 ### Minor Changes diff --git a/packages/integrations/react/package.json b/packages/integrations/react/package.json index 3fe01d49fb..a3213503a3 100644 --- a/packages/integrations/react/package.json +++ b/packages/integrations/react/package.json @@ -1,7 +1,7 @@ { "name": "@astrojs/react", "description": "Use React components within Astro", - "version": "3.3.0", + "version": "3.3.1", "type": "module", "types": "./dist/index.d.ts", "author": "withastro", diff --git a/packages/integrations/vercel/CHANGELOG.md b/packages/integrations/vercel/CHANGELOG.md index 9b7d2ff51c..12ce0a3c25 100644 --- a/packages/integrations/vercel/CHANGELOG.md +++ b/packages/integrations/vercel/CHANGELOG.md @@ -1,5 +1,11 @@ # @astrojs/vercel +## 7.5.4 + +### Patch Changes + +- [#10833](https://github.com/withastro/astro/pull/10833) [`8d5f3e8`](https://github.com/withastro/astro/commit/8d5f3e8656027023f9fda51c66b0213ffe16d3a5) Thanks [@renovate](https://github.com/apps/renovate)! - Updates `esbuild` dependency to v0.20. This should not affect projects in most cases. + ## 7.5.3 ### Patch Changes diff --git a/packages/integrations/vercel/package.json b/packages/integrations/vercel/package.json index 0e1ea59adf..f826f5b8d7 100644 --- a/packages/integrations/vercel/package.json +++ b/packages/integrations/vercel/package.json @@ -1,7 +1,7 @@ { "name": "@astrojs/vercel", "description": "Deploy your site to Vercel", - "version": "7.5.3", + "version": "7.5.4", "type": "module", "author": "withastro", "license": "MIT", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 15bc13293c..f4f5d9cb67 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -134,7 +134,7 @@ importers: examples/basics: dependencies: astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro examples/blog: @@ -149,13 +149,13 @@ importers: specifier: ^3.1.4 version: link:../../packages/integrations/sitemap astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro examples/component: devDependencies: astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro examples/framework-alpine: @@ -170,7 +170,7 @@ importers: specifier: ^3.13.3 version: 3.13.8 astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro examples/framework-lit: @@ -182,7 +182,7 @@ importers: specifier: ^0.2.1 version: 0.2.1 astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro lit: specifier: ^3.1.2 @@ -194,7 +194,7 @@ importers: specifier: ^3.2.0 version: link:../../packages/integrations/preact '@astrojs/react': - specifier: ^3.3.0 + specifier: ^3.3.1 version: link:../../packages/integrations/react '@astrojs/solid-js': specifier: ^4.1.0 @@ -212,7 +212,7 @@ importers: specifier: ^18.2.15 version: 18.2.25 astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro preact: specifier: ^10.19.2 @@ -242,7 +242,7 @@ importers: specifier: ^1.2.1 version: 1.2.1(preact@10.20.2) astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro preact: specifier: ^10.19.2 @@ -251,7 +251,7 @@ importers: examples/framework-react: dependencies: '@astrojs/react': - specifier: ^3.3.0 + specifier: ^3.3.1 version: link:../../packages/integrations/react '@types/react': specifier: ^18.2.37 @@ -260,7 +260,7 @@ importers: specifier: ^18.2.15 version: 18.2.25 astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro react: specifier: ^18.2.0 @@ -275,7 +275,7 @@ importers: specifier: ^4.1.0 version: link:../../packages/integrations/solid astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro solid-js: specifier: ^1.8.5 @@ -287,7 +287,7 @@ importers: specifier: ^5.4.0 version: link:../../packages/integrations/svelte astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro svelte: specifier: ^4.2.5 @@ -299,7 +299,7 @@ importers: specifier: ^4.1.0 version: link:../../packages/integrations/vue astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro vue: specifier: ^3.3.8 @@ -311,13 +311,13 @@ importers: specifier: ^8.2.5 version: link:../../packages/integrations/node astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro examples/integration: devDependencies: astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro examples/middleware: @@ -326,7 +326,7 @@ importers: specifier: ^8.2.5 version: link:../../packages/integrations/node astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro html-minifier: specifier: ^4.0.0 @@ -339,19 +339,19 @@ importers: examples/minimal: dependencies: astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro examples/non-html-pages: dependencies: astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro examples/portfolio: dependencies: astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro examples/ssr: @@ -363,7 +363,7 @@ importers: specifier: ^5.4.0 version: link:../../packages/integrations/svelte astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro svelte: specifier: ^4.2.5 @@ -372,7 +372,7 @@ importers: examples/starlog: dependencies: astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro sass: specifier: ^1.69.5 @@ -390,16 +390,16 @@ importers: specifier: ^5.1.0 version: link:../../packages/integrations/tailwind astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro examples/with-markdoc: dependencies: '@astrojs/markdoc': - specifier: ^0.10.0 + specifier: ^0.11.0 version: link:../../packages/integrations/markdoc astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro examples/with-markdown-plugins: @@ -408,7 +408,7 @@ importers: specifier: ^5.1.0 version: link:../../packages/markdown/remark astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro hast-util-select: specifier: ^6.0.2 @@ -429,7 +429,7 @@ importers: examples/with-markdown-shiki: dependencies: astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro examples/with-mdx: @@ -441,7 +441,7 @@ importers: specifier: ^3.2.0 version: link:../../packages/integrations/preact astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro preact: specifier: ^10.19.2 @@ -456,7 +456,7 @@ importers: specifier: ^0.5.0 version: 0.5.1(nanostores@0.9.5)(preact@10.20.2) astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro nanostores: specifier: ^0.9.5 @@ -477,7 +477,7 @@ importers: specifier: ^1.6.3 version: 1.6.4 astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro autoprefixer: specifier: ^10.4.15 @@ -495,7 +495,7 @@ importers: examples/with-vitest: dependencies: astro: - specifier: ^4.6.3 + specifier: ^4.6.4 version: link:../../packages/astro vitest: specifier: ^1.5.0 @@ -15444,6 +15444,7 @@ packages: /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + requiresBuild: true dependencies: safe-buffer: 5.2.1 dev: false From b673bc850593d5af25793d0358c00797477fa373 Mon Sep 17 00:00:00 2001 From: Ming-jun Lu <40516784+mingjunlu@users.noreply.github.com> Date: Wed, 24 Apr 2024 19:01:51 +0800 Subject: [PATCH 16/21] Fix an issue where `astro build` writes type declaration files to `outDir` (#10861) * Fix an issue where `astro build` also writes type declaration files to `outDir` * Add changeset --- .changeset/curvy-humans-judge.md | 5 +++++ packages/astro/src/core/build/static-build.ts | 7 +++++++ 2 files changed, 12 insertions(+) create mode 100644 .changeset/curvy-humans-judge.md diff --git a/.changeset/curvy-humans-judge.md b/.changeset/curvy-humans-judge.md new file mode 100644 index 0000000000..a9768726ce --- /dev/null +++ b/.changeset/curvy-humans-judge.md @@ -0,0 +1,5 @@ +--- +"astro": patch +--- + +Fixes an issue where `astro build` writes type declaration files to `outDir` when it's outside of root directory. diff --git a/packages/astro/src/core/build/static-build.ts b/packages/astro/src/core/build/static-build.ts index cdd24e1c00..6e8fb0be44 100644 --- a/packages/astro/src/core/build/static-build.ts +++ b/packages/astro/src/core/build/static-build.ts @@ -442,6 +442,13 @@ async function cleanServerOutput( // Clean out directly if the outDir is outside of root if (out.toString() !== opts.settings.config.outDir.toString()) { + // Remove .d.ts files + const fileNames = await fs.promises.readdir(out); + await Promise.all( + fileNames + .filter((fileName) => fileName.endsWith('.d.ts')) + .map((fileName) => fs.promises.rm(new URL(fileName, out))) + ); // Copy assets before cleaning directory if outside root await copyFiles(out, opts.settings.config.outDir, true); await fs.promises.rm(out, { recursive: true }); From 8b59d5d078ff40576b8cbee432279c6ad044a1a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20Dr=C3=A4xler?= Date: Wed, 24 Apr 2024 11:20:07 -0300 Subject: [PATCH 17/21] Update sharp to 0.33 to fix issue with Alpine Linux (#10684) * Update sharp to 0.33 to fix issue with Alpine Linux It was impossible for me to use the Astro image service in an Alpine Linux docker container. Even though I would install sharp `0.33.3` in my app, pnpm would download version `0.32.6`, which doesn't work in Alpine Linux container. Currently, I have to override the downloaded version in my package.json. For more details see: - https://github.com/lovell/sharp/issues/4054 - https://discord.com/channels/830184174198718474/1224861729792458803/1224861729792458803 This PR updates the version of the `sharp` dependency to `^0.33` and thus makes Astro compatible with Alpine Linux. * update lock file * add changelog * Update packages/astro/package.json * Update pnpm-lock.yaml * ci: update check-merge.yml action (#10690) * test(@astrojs/node) listen for server setup errors in test-utils (#10692) * Add disableremoteplayback attribute to VideoHTMLAttributes interface (#10693) * Add disableremoteplayback attribute to VideoHTMLAttributes interface * Move disableremoteplayback from VideoHTMLAttributes to MediaHTMLAttributes * Create olive-camels-greet.md * Update packages/astro/astro-jsx.d.ts --------- Co-authored-by: Erika <3019731+Princesseuh@users.noreply.github.com> * test(@astrojs/node) wait for server listening in trailing-slash tests (#10694) * test(@astrojs/node) wait for server listening in trailing-slash tests * fix missing waitServerListen * fix import statement --------- Co-authored-by: Emanuele Stoppa * chore: add `test:citgm` command that would run tests without caching and `build:ci:no-cache` to skip caching for build as well (#10696) * chore: add test:citgm command that would run tests without caching * adding build ci with no cache * chore: fix build:ci:no-cache test:citgm (#10698) * Improve dev toolbar notification contrast on hover (#10657) * fix(#10399, PLT-1786): improve notification contrast on hover * chore: add changeset * fix test:citgm --force flag not passed correctly (#10706) * Skip prerender chunk in static output (#10695) * Remove unused config in Vue JSX integration (#10687) * Refactor MDX transformJSX handling (#10688) * Fix vue-jsx change (#10716) * Fix script inline with directRenderScript (#10686) * Provide better messaging when renaming a table (#10600) * Provide better messaging when renaming a table * Update based on review * [ci] format * [ci] update lockfile (#10718) Co-authored-by: matthewp * Increase log severity when a page's `getStaticPaths` fails (#10707) * [ci] release (#10680) Co-authored-by: github-actions[bot] * fix: use just pnpm to run the build and tests in citgm (#10727) * fix(devtool): do not trigger interaction check for `div` and `span` (#10719) * fix(devtool): do not trigger interaction check for `div` and `span` * add test * add tests * Rephrase changeset * remove log * add reference link * Update .changeset/swift-coats-teach.md Co-authored-by: Florian Lefebvre --------- Co-authored-by: Florian Lefebvre * fix: regression for astro attributes escaping (#10728) * Fix db seeding when srcDir is root (#10720) * ci: add ref when checking out the repository (#10733) * fix(dev): break implicit rerouting loop (#10737) * fix(dev): infinite implicit rerouting * test adapter * changeset * [ci] format * [ci] release (#10729) Co-authored-by: github-actions[bot] * fix: Fixed errorOverlay theme toggle bug. (#10661) * fix: save `localStorage.astroErrorOverlayTheme` when detected dark mode * add changeset * Fix theme toggle in ErrorOverlay * update changeset * [ci] format * feat: add origin check for CSRF protection (#10678) * feat: add origin check for CSRF protection * add tests * chore: documentation * changeset and grammar * chore: add casing check * split function * better naming * make the whole object experimental * remove unused type * update changeset * manually apply Sarah's suggestions * Apply suggestions from code review Co-authored-by: Sarah Rainsberger --------- Co-authored-by: Sarah Rainsberger * feat: upgrade the minimum Node.js maintainance LTS version (#10689) * feat: upgrade the minimum Node.js maintainance LTS version * chore: update minimum npm version * chore: revert npm change * chore: address Erika's feedback * chore: apply further suggestions * Update .changeset/empty-rules-type.md Co-authored-by: Sarah Rainsberger --------- Co-authored-by: Sarah Rainsberger * [ci] format * Accept common cookie attributes when deleting a cookie (#10671) * Accept common cookie attributes when deleting a cookie * Fix AstroCookieSetOptions IDE annotations * Use AstroCookieSetOptions to construct AstroCookieDeleteOptions * Update .changeset/shaggy-cats-film.md Co-authored-by: Florian Lefebvre --------- Co-authored-by: Florian Lefebvre * feat(i18n): manual routing (#10193) * feat(i18n): manual routing * one more function * different typing * tests * fix merge * throw error for missing middleware * rename function * fix conflicts * lock file update * fix options, error thrown and added tests * rebase * add tests * docs * lock file black magic * increase timeout? * fix regression * merge conflict * add changeset * chore: apply suggestions * apply suggestion * Update .changeset/little-hornets-give.md Co-authored-by: Erika <3019731+Princesseuh@users.noreply.github.com> * chore: address feedback * fix regression of last commit * update name * add comments * fix regression * remove unused code * Apply suggestions from code review Co-authored-by: Sarah Rainsberger * chore: update reference * Update packages/astro/src/@types/astro.ts Co-authored-by: Sarah Rainsberger * chore: improve types * fix regression in tests * apply Sarah's suggestion --------- Co-authored-by: Erika <3019731+Princesseuh@users.noreply.github.com> Co-authored-by: Sarah Rainsberger * [ci] format * feat(toolbar): allow the user to change the placement (#10591) * feat(toolbar): add `placement` to settings * feat(toolbar): update `settings.placement` with `