diff options
122 files changed, 1849 insertions, 1336 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d71c17afe..0458ddd85 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -95,7 +95,7 @@ jobs: run: pnpm run build - name: Lint - run: pnpm run lint + run: pnpm run lint:ci test: name: "Test: ${{ matrix.os }} (node@${{ matrix.NODE_VERSION }})" diff --git a/.github/workflows/congrats.yml b/.github/workflows/congrats.yml new file mode 100644 index 000000000..4052bdac8 --- /dev/null +++ b/.github/workflows/congrats.yml @@ -0,0 +1,16 @@ +name: Congratsbot + +on: + push: + branches: + - main + +jobs: + congrats: + name: congratsbot + if: ${{ github.repository_owner == 'withastro' && github.event.head_commit.message != '[ci] format' }} + uses: withastro/automation/.github/workflows/congratsbot.yml@main + with: + EMOJIS: '🎉,🎊,🧑🚀,🥳,🙌,🚀,👏,<:houston_golden:1068575433647456447>,<:astrocoin:894990669515489301>,<:astro_pride:1130501345326157854>' + secrets: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_CONGRATS }} diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index cb2cdd59d..000000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,77 +0,0 @@ -name: Main Checks - -on: - workflow_dispatch: - push: - branches: - - main - -env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - -# Automatically cancel in-progress actions on the same branch -concurrency: - group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.ref }} - cancel-in-progress: true - -jobs: - congrats: - name: congratsbot - if: ${{ github.repository_owner == 'withastro' && github.event.head_commit.message != '[ci] format' }} - uses: withastro/automation/.github/workflows/congratsbot.yml@main - with: - EMOJIS: '🎉,🎊,🧑🚀,🥳,🙌,🚀,👏,<:houston_golden:1068575433647456447>,<:astrocoin:894990669515489301>,<:astro_pride:1130501345326157854>' - secrets: - DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_CONGRATS }} - - check_for_update: - name: Check for Updates - runs-on: ubuntu-latest - outputs: - run_job: ${{ steps.check_files.outputs.run_job }} - steps: - - uses: actions/checkout@v4 - - - name: Setup PNPM - uses: pnpm/action-setup@v3 - - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: 18 - cache: "pnpm" - - - name: Install dependencies - run: pnpm install - - - name: Check Modified - run: pnpm exec changeset status --output ./status.json - - - name: Check Output - id: check_files - run: | - output=`echo $(cat status.json)` - if [[ $output = '{ "changesets": [], "releases": [] }' ]] - then - echo 'No changeset found' - echo "run_job=true" >> $GITHUB_OUTPUT - else - echo 'changes found, push to latest skipped' - echo "run_job=false" >> $GITHUB_OUTPUT - fi - - update: - name: Update the latest branch - needs: check_for_update - if: needs.check_for_update.outputs.run_job == 'true' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Push - uses: ad-m/github-push-action@master - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - branch: latest diff --git a/.github/workflows/sync-examples.yml b/.github/workflows/sync-examples.yml new file mode 100644 index 000000000..5cafeef2c --- /dev/null +++ b/.github/workflows/sync-examples.yml @@ -0,0 +1,87 @@ +name: Sync examples + +on: + workflow_dispatch: + inputs: + skip-unchanged-check: + type: boolean + default: false + dry-run: + type: boolean + default: false + push: + branches: + - main + - next + +# Automatically cancel in-progress actions on the same branch +concurrency: + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.ref }} + cancel-in-progress: true + +permissions: + # Allow auto-branch-sync-action to git push + contents: write + +jobs: + sync: + name: Sync branches + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 2 # fetch 2 to compare with previous commit for changes + + - name: Detect changesets + uses: bluwy/detect-changesets-action@v1 + id: detect + + # We only do sync if there are no changesets, so we don't accidentally allow users + # to clone examples that may rely on unreleased code + + - name: Sync from main branch to latest branch + if: steps.detect.outputs.has-changesets == 'false' && github.ref == 'refs/heads/main' + uses: bluwy/auto-branch-sync-action@v1 + with: + map: / -> latest + skip-unchanged-check: ${{ inputs.skip-unchanged-check == true }} + dry-run: ${{ inputs.dry-run == true }} + + - name: Check .changeset/pre.json for matching tag + if: steps.detect.outputs.has-changesets == 'false' && github.ref == 'refs/heads/next' + id: check-pre-mode + run: | + if [ -f ./.changeset/pre.json ]; then + if grep -q '"tag": "alpha"' ./.changeset/pre.json; then + echo "alpha=true" >> $GITHUB_OUTPUT + elif grep -q '"tag": "beta"' ./.changeset/pre.json; then + echo "beta=true" >> $GITHUB_OUTPUT + elif grep -q '"tag": "rc"' ./.changeset/pre.json; then + echo "rc=true" >> $GITHUB_OUTPUT + fi + fi + + - name: Sync from next branch to alpha branch + if: steps.detect.outputs.has-changesets == 'false' && steps.check-pre-mode.outputs.alpha == 'true' + uses: bluwy/auto-branch-sync-action@v1 + with: + map: / -> alpha + skip-unchanged-check: ${{ inputs.skip-unchanged-check == true }} + dry-run: ${{ inputs.dry-run == true }} + + - name: Sync from next branch to beta branch + if: steps.detect.outputs.has-changesets == 'false' && steps.check-pre-mode.outputs.beta == 'true' + uses: bluwy/auto-branch-sync-action@v1 + with: + map: / -> beta + skip-unchanged-check: ${{ inputs.skip-unchanged-check == true }} + dry-run: ${{ inputs.dry-run == true }} + + - name: Sync from next branch to rc branch + if: steps.detect.outputs.has-changesets == 'false' && steps.check-pre-mode.outputs.rc == 'true' + uses: bluwy/auto-branch-sync-action@v1 + with: + map: / -> rc + skip-unchanged-check: ${{ inputs.skip-unchanged-check == true }} + dry-run: ${{ inputs.dry-run == true }} diff --git a/benchmark/packages/timer/src/index.ts b/benchmark/packages/timer/src/index.ts index 2ea41af66..1c54e3727 100644 --- a/benchmark/packages/timer/src/index.ts +++ b/benchmark/packages/timer/src/index.ts @@ -27,7 +27,6 @@ export default function createIntegration(): AstroIntegration { setAdapter(getAdapter()); if (config.output === 'static') { - // eslint-disable-next-line no-console console.warn(`[@benchmark/timer] \`output: "server"\` is required to use this adapter.`); } }, diff --git a/benchmark/packages/timer/src/preview.ts b/benchmark/packages/timer/src/preview.ts index aa503c11b..9659a26be 100644 --- a/benchmark/packages/timer/src/preview.ts +++ b/benchmark/packages/timer/src/preview.ts @@ -9,7 +9,7 @@ const preview: CreatePreviewServer = async function ({ serverEntrypoint, host, p server.listen(port, host); enableDestroy(server); - // eslint-disable-next-line no-console + // biome-ignore lint/suspicious/noConsoleLog: allowed console.log(`Preview server listening on http://${host}:${port}`); // Resolves once the server is closed diff --git a/biome.json b/biome.json deleted file mode 100644 index 4714f3706..000000000 --- a/biome.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "$schema": "https://biomejs.dev/schemas/1.8.3/schema.json", - "files": { - "ignore": [ - "vendor", - "**/dist/**", - "**/smoke/**", - "**/fixtures/**", - "**/vendor/**", - "**/.vercel/**" - ], - "include": ["test/**", "e2e/**", "packages/**", "/scripts/**"] - }, - "formatter": { - "indentStyle": "tab", - "indentWidth": 2, - "lineWidth": 100, - "ignore": [ - "benchmark/projects/", - "benchmark/results/", - ".changeset", - "pnpm-lock.yaml", - "*.astro" - ] - }, - "organizeImports": { - "enabled": true - }, - "linter": { - "enabled": true, - "rules": { - "recommended": false, - "style": { - "useNodejsImportProtocol": "error", - "useImportType": "error" - } - } - }, - "javascript": { - "formatter": { - "trailingCommas": "all", - "quoteStyle": "single", - "semicolons": "always" - } - }, - "json": { - "parser": { - "allowComments": true, - "allowTrailingCommas": true - }, - "formatter": { - "indentStyle": "space", - "trailingCommas": "none" - } - }, - "overrides": [ - { - "include": ["package.json"], - "json": { - "formatter": { - "lineWidth": 1 - } - } - }, - { - "include": ["*.test.js"], - "linter": { - "rules": { - "suspicious": { - "noFocusedTests": "error" - } - } - } - } - ] -} diff --git a/biome.jsonc b/biome.jsonc new file mode 100644 index 000000000..a94930143 --- /dev/null +++ b/biome.jsonc @@ -0,0 +1,139 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.9.3/schema.json", + "files": { + "ignore": [ + "vendor", + "**/dist/**", + "**/smoke/**", + "**/fixtures/**", + "**/vendor/**", + "**/.vercel/**", + ], + "include": ["test/**", "e2e/**", "packages/**", "/scripts/**"], + }, + "formatter": { + "indentStyle": "tab", + "indentWidth": 2, + "lineWidth": 100, + "ignore": [ + "benchmark/projects/", + "benchmark/results/", + ".changeset", + "pnpm-lock.yaml", + "*.astro", + ], + }, + "organizeImports": { + "enabled": true, + }, + "linter": { + "enabled": true, + "rules": { + "recommended": false, + "style": { + "useNodejsImportProtocol": "error", + // Enforce separate type imports for type-only imports to avoid bundling unneeded code + "useImportType": "error", + }, + "suspicious": { + // This one is specific to catch `console.log`. The rest of logs are permitted + "noConsoleLog": "warn", + }, + "correctness": { + "noUnusedVariables": "info", + "noUnusedFunctionParameters": "info", + }, + }, + }, + "javascript": { + "formatter": { + "trailingCommas": "all", + "quoteStyle": "single", + "semicolons": "always", + }, + }, + "json": { + "parser": { + "allowComments": true, + "allowTrailingCommas": true, + }, + "formatter": { + "indentStyle": "space", + "trailingCommas": "none", + }, + }, + "overrides": [ + { + // Workaround to format files like npm does + "include": ["package.json"], + "json": { + "formatter": { + "lineWidth": 1, + }, + }, + }, + { + // We don"t want to have node modules in code that should be runtime agnostic + "include": ["packages/astro/src/runtime/**/*.ts"], + "linter": { + "rules": { + "correctness": { + "noNodejsModules": "error", + }, + }, + }, + }, + { + "include": ["*.test.js"], + "linter": { + "rules": { + "suspicious": { + "noFocusedTests": "error", + "noConsole": "off", + }, + }, + }, + }, + { + "include": ["*.astro", "client.d.ts"], + "linter": { + "rules": { + "correctness": { + "noUnusedVariables": "off", + }, + }, + }, + }, + { + "include": ["packages/integrations/**/*.ts"], + "linter": { + "rules": { + "suspicious": { + "noConsole": { + "level": "error", + "options": { + "allow": ["warn", "error", "info", "debug"], + }, + }, + }, + }, + }, + }, + { + "include": [ + "packages/db/**/cli/**/*.ts", + "benchmark/**/*.js", + "packages/astro/src/cli/**/*.ts", + "packages/astro/astro.js", + ], + "linter": { + "rules": { + "suspicious": { + "noConsole": "off", + "noConsoleLog": "off", + }, + }, + }, + }, + ], +} diff --git a/eslint.config.js b/eslint.config.js index dbd379d27..c5fbf3fbc 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,6 +1,5 @@ import path from 'node:path'; import { fileURLToPath } from 'node:url'; -import { builtinModules } from 'node:module'; import tseslint from 'typescript-eslint'; @@ -51,19 +50,11 @@ export default [ rules: { // These off/configured-differently-by-default rules fit well for us '@typescript-eslint/switch-exhaustiveness-check': 'error', - '@typescript-eslint/no-unused-vars': [ - 'error', - { - argsIgnorePattern: '^_', - varsIgnorePattern: '^_', - caughtErrorsIgnorePattern: '^_', - ignoreRestSiblings: true, - }, - ], '@typescript-eslint/no-shadow': 'error', - 'no-console': 'warn', + 'no-console': 'off', // Todo: do we want these? + '@typescript-eslint/no-unused-vars': 'off', '@typescript-eslint/array-type': 'off', '@typescript-eslint/ban-ts-comment': 'off', '@typescript-eslint/class-literal-property-style': 'off', @@ -95,16 +86,8 @@ export default [ '@typescript-eslint/unbound-method': 'off', '@typescript-eslint/no-explicit-any': 'off', - // Enforce separate type imports for type-only imports to avoid bundling unneeded code - '@typescript-eslint/consistent-type-imports': [ - 'error', - { - prefer: 'type-imports', - fixStyle: 'separate-type-imports', - disallowTypeAnnotations: false, - }, - ], - + // Used by Biome + '@typescript-eslint/consistent-type-imports': 'off', // These rules enabled by the preset configs don't work well for us '@typescript-eslint/await-thenable': 'off', 'prefer-const': 'off', @@ -115,20 +98,6 @@ export default [ 'regexp/prefer-regexp-test': 'warn', }, }, - - { - // Ensure Node builtins aren't included in Astro's server runtime - files: ['packages/astro/src/runtime/**/*.ts'], - rules: { - 'no-restricted-imports': [ - 'error', - { - paths: [...builtinModules], - patterns: ['node:*'], - }, - ], - }, - }, { files: ['packages/astro/src/runtime/client/**/*.ts'], languageOptions: { @@ -138,36 +107,6 @@ export default [ }, }, { - files: ['packages/**/test/*.js', 'packages/**/*.js'], - languageOptions: { - globals: { - globalThis: false, // false means read-only - }, - }, - rules: { - 'no-console': 'off', - }, - }, - { - files: ['packages/integrations/**/*.ts'], - rules: { - 'no-console': ['error', { allow: ['warn', 'error', 'info', 'debug'] }], - }, - }, - { - files: ['benchmark/**/*.js'], - rules: { - '@typescript-eslint/no-unused-vars': 'off', - 'no-console': 'off', - }, - }, - { - files: ['packages/db/**/cli/**/*.ts'], - rules: { - 'no-console': 'off', - }, - }, - { files: ['packages/astro/src/core/errors/errors-data.ts'], rules: { // This file is used for docs generation, as such the code need to be in a certain format, we can somewhat ensure this with these rules diff --git a/examples/blog/package.json b/examples/blog/package.json index 96344bcd7..5413f4b39 100644 --- a/examples/blog/package.json +++ b/examples/blog/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@astrojs/mdx": "^4.0.0-beta.2", - "@astrojs/rss": "^4.0.7", + "@astrojs/rss": "^4.0.8", "@astrojs/sitemap": "^3.2.0", "astro": "^5.0.0-beta.4" } diff --git a/examples/server-islands/package.json b/examples/server-islands/package.json index 9b05f38de..d139c5ad7 100644 --- a/examples/server-islands/package.json +++ b/examples/server-islands/package.json @@ -12,7 +12,7 @@ "devDependencies": { "@astrojs/node": "^9.0.0-alpha.1", "@astrojs/react": "^3.6.2", - "@astrojs/tailwind": "^5.1.1", + "@astrojs/tailwind": "^5.1.2", "@fortawesome/fontawesome-free": "^6.6.0", "@tailwindcss/forms": "^0.5.9", "@types/react": "^18.3.11", diff --git a/package.json b/package.json index d43186dba..cbd296cc7 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,8 @@ "test:e2e:hosts": "turbo run test:hosted", "benchmark": "astro-benchmark", "lint": "biome lint && eslint . --report-unused-disable-directives", + "lint:ci": "biome ci --formatter-enabled=false --organize-imports-enabled=false --reporter=github && eslint . --report-unused-disable-directives", + "lint:fix": "biome lint --write --unsafe", "version": "changeset version && node ./scripts/deps/update-example-versions.js && pnpm install --no-frozen-lockfile && pnpm run format", "preinstall": "npx only-allow pnpm" }, @@ -53,7 +55,7 @@ }, "devDependencies": { "@astrojs/check": "^0.9.4", - "@biomejs/biome": "1.8.3", + "@biomejs/biome": "1.9.3", "@changesets/changelog-github": "^0.5.0", "@changesets/cli": "^2.27.9", "@types/node": "^18.17.8", diff --git a/packages/astro-prism/src/highlighter.ts b/packages/astro-prism/src/highlighter.ts index c0e58054e..99810b435 100644 --- a/packages/astro-prism/src/highlighter.ts +++ b/packages/astro-prism/src/highlighter.ts @@ -26,7 +26,6 @@ export function runHighlighterWithAstro(lang: string | undefined, code: string) } if (lang && !Prism.languages[lang]) { - // eslint-disable-next-line no-console console.warn(`Unable to load the language: ${lang}`); } diff --git a/packages/astro-prism/src/plugin.ts b/packages/astro-prism/src/plugin.ts index 057433f40..eed02a304 100644 --- a/packages/astro-prism/src/plugin.ts +++ b/packages/astro-prism/src/plugin.ts @@ -8,7 +8,6 @@ export function addAstro(Prism: typeof import('prismjs')) { scriptLang = 'typescript'; } else { scriptLang = 'javascript'; - // eslint-disable-next-line no-console console.warn( 'Prism TypeScript language not loaded, Astro scripts will be treated as JavaScript.', ); diff --git a/packages/astro-rss/CHANGELOG.md b/packages/astro-rss/CHANGELOG.md index 042a36c55..be7c24e33 100644 --- a/packages/astro-rss/CHANGELOG.md +++ b/packages/astro-rss/CHANGELOG.md @@ -1,5 +1,13 @@ # @astrojs/rss +## 4.0.8 + +### Patch Changes + +- [#12137](https://github.com/withastro/astro/pull/12137) [`50dd88b`](https://github.com/withastro/astro/commit/50dd88bc6611243e3f1b2df643af6d0b551fe140) Thanks [@ArmandPhilippot](https://github.com/ArmandPhilippot)! - Fixes an error that occurred when the optional `pubDate` property was missing in an item. + +- [#12137](https://github.com/withastro/astro/pull/12137) [`50dd88b`](https://github.com/withastro/astro/commit/50dd88bc6611243e3f1b2df643af6d0b551fe140) Thanks [@ArmandPhilippot](https://github.com/ArmandPhilippot)! - Fixes an error where docs incorrectly stated the `title`, `link` and `pubDate` properties of RSS items was required. + ## 4.0.7 ### Patch Changes diff --git a/packages/astro-rss/README.md b/packages/astro-rss/README.md index 2a5d6a795..d24c5dabc 100644 --- a/packages/astro-rss/README.md +++ b/packages/astro-rss/README.md @@ -198,19 +198,19 @@ const item = { ### `title` -Type: `string (required)` +Type: `string (optional)` -The title of the item in the feed. +The title of the item in the feed. Optional only if a description is set. Otherwise, required. ### `link` -Type: `string (required)` +Type: `string (optional)` The URL of the item on the web. ### `pubDate` -Type: `Date (required)` +Type: `Date (optional)` Indicates when the item was published. @@ -218,7 +218,7 @@ Indicates when the item was published. Type: `string (optional)` -A synopsis of your item when you are publishing the full content of the item in the `content` field. The `description` may alternatively be the full content of the item in the feed if you are not using the `content` field (entity-coded HTML is permitted). +A synopsis of your item when you are publishing the full content of the item in the `content` field. The `description` may alternatively be the full content of the item in the feed if you are not using the `content` field (entity-coded HTML is permitted). Optional only if a title is set. Otherwise, required. ### `content` diff --git a/packages/astro-rss/package.json b/packages/astro-rss/package.json index d65b71c6d..509f31ee3 100644 --- a/packages/astro-rss/package.json +++ b/packages/astro-rss/package.json @@ -1,7 +1,7 @@ { "name": "@astrojs/rss", "description": "Add RSS feeds to your Astro projects", - "version": "4.0.7", + "version": "4.0.8", "type": "module", "types": "./dist/index.d.ts", "author": "withastro", diff --git a/packages/astro-rss/src/index.ts b/packages/astro-rss/src/index.ts index b84e81e73..33a8f66a0 100644 --- a/packages/astro-rss/src/index.ts +++ b/packages/astro-rss/src/index.ts @@ -70,7 +70,6 @@ const rssOptionsValidator = z.object({ .or(globResultValidator) .transform((items) => { if (!Array.isArray(items)) { - // eslint-disable-next-line console.warn( yellow( '[RSS] Passing a glob result directly has been deprecated. Please migrate to the `pagesGlobToRssItems()` helper: https://docs.astro.build/en/guides/rss/', diff --git a/packages/astro-rss/src/schema.ts b/packages/astro-rss/src/schema.ts index 1c2db762d..c4a0fec3f 100644 --- a/packages/astro-rss/src/schema.ts +++ b/packages/astro-rss/src/schema.ts @@ -5,9 +5,9 @@ export const rssSchema = z.object({ description: z.string().optional(), pubDate: z .union([z.string(), z.number(), z.date()]) - .optional() - .transform((value) => (value === undefined ? value : new Date(value))) - .refine((value) => (value === undefined ? value : !isNaN(value.getTime()))), + .transform((value) => new Date(value)) + .refine((value) => !isNaN(value.getTime())) + .optional(), customData: z.string().optional(), categories: z.array(z.string()).optional(), author: z.string().optional(), diff --git a/packages/astro-rss/test/rss.test.js b/packages/astro-rss/test/rss.test.js index 5a0fd1fd0..8014f87fe 100644 --- a/packages/astro-rss/test/rss.test.js +++ b/packages/astro-rss/test/rss.test.js @@ -10,6 +10,7 @@ import { phpFeedItem, phpFeedItemWithContent, phpFeedItemWithCustomData, + phpFeedItemWithoutDate, site, title, web1FeedItem, @@ -25,6 +26,8 @@ const validXmlResult = `<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" // biome-ignore format: keep in one line const validXmlWithContentResult = `<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title><![CDATA[${title}]]></title><description><![CDATA[${description}]]></description><link>${site}/</link><item><title><![CDATA[${phpFeedItemWithContent.title}]]></title><link>${site}${phpFeedItemWithContent.link}/</link><guid isPermaLink="true">${site}${phpFeedItemWithContent.link}/</guid><description><![CDATA[${phpFeedItemWithContent.description}]]></description><pubDate>${new Date(phpFeedItemWithContent.pubDate).toUTCString()}</pubDate><content:encoded><![CDATA[${phpFeedItemWithContent.content}]]></content:encoded></item><item><title><![CDATA[${web1FeedItemWithContent.title}]]></title><link>${site}${web1FeedItemWithContent.link}/</link><guid isPermaLink="true">${site}${web1FeedItemWithContent.link}/</guid><description><![CDATA[${web1FeedItemWithContent.description}]]></description><pubDate>${new Date(web1FeedItemWithContent.pubDate).toUTCString()}</pubDate><content:encoded><![CDATA[${web1FeedItemWithContent.content}]]></content:encoded></item></channel></rss>`; // biome-ignore format: keep in one line +const validXmlResultWithMissingDate = `<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title><![CDATA[${title}]]></title><description><![CDATA[${description}]]></description><link>${site}/</link><item><title><![CDATA[${phpFeedItemWithoutDate.title}]]></title><link>${site}${phpFeedItemWithoutDate.link}/</link><guid isPermaLink="true">${site}${phpFeedItemWithoutDate.link}/</guid><description><![CDATA[${phpFeedItemWithoutDate.description}]]></description></item><item><title><![CDATA[${phpFeedItem.title}]]></title><link>${site}${phpFeedItem.link}/</link><guid isPermaLink="true">${site}${phpFeedItem.link}/</guid><description><![CDATA[${phpFeedItem.description}]]></description><pubDate>${new Date(phpFeedItem.pubDate).toUTCString()}</pubDate></item></channel></rss>`; +// biome-ignore format: keep in one line const validXmlResultWithAllData = `<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title><![CDATA[${title}]]></title><description><![CDATA[${description}]]></description><link>${site}/</link><item><title><![CDATA[${phpFeedItem.title}]]></title><link>${site}${phpFeedItem.link}/</link><guid isPermaLink="true">${site}${phpFeedItem.link}/</guid><description><![CDATA[${phpFeedItem.description}]]></description><pubDate>${new Date(phpFeedItem.pubDate).toUTCString()}</pubDate></item><item><title><![CDATA[${web1FeedItemWithAllData.title}]]></title><link>${site}${web1FeedItemWithAllData.link}/</link><guid isPermaLink="true">${site}${web1FeedItemWithAllData.link}/</guid><description><![CDATA[${web1FeedItemWithAllData.description}]]></description><pubDate>${new Date(web1FeedItemWithAllData.pubDate).toUTCString()}</pubDate><category>${web1FeedItemWithAllData.categories[0]}</category><category>${web1FeedItemWithAllData.categories[1]}</category><author>${web1FeedItemWithAllData.author}</author><comments>${web1FeedItemWithAllData.commentsUrl}</comments><source url="${web1FeedItemWithAllData.source.url}">${web1FeedItemWithAllData.source.title}</source><enclosure url="${site}${web1FeedItemWithAllData.enclosure.url}" length="${web1FeedItemWithAllData.enclosure.length}" type="${web1FeedItemWithAllData.enclosure.type}"/></item></channel></rss>`; // biome-ignore format: keep in one line const validXmlWithCustomDataResult = `<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title><![CDATA[${title}]]></title><description><![CDATA[${description}]]></description><link>${site}/</link><item><title><![CDATA[${phpFeedItemWithCustomData.title}]]></title><link>${site}${phpFeedItemWithCustomData.link}/</link><guid isPermaLink="true">${site}${phpFeedItemWithCustomData.link}/</guid><description><![CDATA[${phpFeedItemWithCustomData.description}]]></description><pubDate>${new Date(phpFeedItemWithCustomData.pubDate).toUTCString()}</pubDate>${phpFeedItemWithCustomData.customData}</item><item><title><![CDATA[${web1FeedItemWithContent.title}]]></title><link>${site}${web1FeedItemWithContent.link}/</link><guid isPermaLink="true">${site}${web1FeedItemWithContent.link}/</guid><description><![CDATA[${web1FeedItemWithContent.description}]]></description><pubDate>${new Date(web1FeedItemWithContent.pubDate).toUTCString()}</pubDate><content:encoded><![CDATA[${web1FeedItemWithContent.content}]]></content:encoded></item></channel></rss>`; @@ -101,6 +104,17 @@ describe('getRssString', () => { assertXmlDeepEqual(str, validXmlWithContentResult); }); + it('should generate on valid RSSFeedItem array with missing date', async () => { + const str = await getRssString({ + title, + description, + items: [phpFeedItemWithoutDate, phpFeedItem], + site, + }); + + assertXmlDeepEqual(str, validXmlResultWithMissingDate); + }); + it('should generate on valid RSSFeedItem array with all RSS content included', async () => { const str = await getRssString({ title, diff --git a/packages/astro-rss/test/test-utils.js b/packages/astro-rss/test/test-utils.js index dcc57df21..d3ee8ca33 100644 --- a/packages/astro-rss/test/test-utils.js +++ b/packages/astro-rss/test/test-utils.js @@ -4,13 +4,16 @@ export const title = 'My RSS feed'; export const description = 'This sure is a nice RSS feed'; export const site = 'https://example.com'; -export const phpFeedItem = { +export const phpFeedItemWithoutDate = { link: '/php', title: 'Remember PHP?', - pubDate: '1994-05-03', description: 'PHP is a general-purpose scripting language geared toward web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1994.', }; +export const phpFeedItem = { + ...phpFeedItemWithoutDate, + pubDate: '1994-05-03', +}; export const phpFeedItemWithContent = { ...phpFeedItem, content: `<h1>${phpFeedItem.title}</h1><p>${phpFeedItem.description}</p>`, diff --git a/packages/astro/CHANGELOG.md b/packages/astro/CHANGELOG.md index a7ad85484..4c9772fa1 100644 --- a/packages/astro/CHANGELOG.md +++ b/packages/astro/CHANGELOG.md @@ -445,6 +445,79 @@ - [#11974](https://github.com/withastro/astro/pull/11974) [`60211de`](https://github.com/withastro/astro/commit/60211defbfb2992ba17d1369e71c146d8928b09a) Thanks [@ascorbic](https://github.com/ascorbic)! - Exports the `RenderResult` type +## 4.16.0 + +### Minor Changes + +- [#12039](https://github.com/withastro/astro/pull/12039) [`710a1a1`](https://github.com/withastro/astro/commit/710a1a11f488ff6ed3da6d3e0723b2322ccfe27b) Thanks [@ematipico](https://github.com/ematipico)! - Adds a `markdown.shikiConfig.langAlias` option that allows [aliasing a non-supported code language to a known language](https://shiki.style/guide/load-lang#custom-language-aliases). This is useful when the language of your code samples is not [a built-in Shiki language](https://shiki.style/languages), but you want your Markdown source to contain an accurate language while also displaying syntax highlighting. + + The following example configures Shiki to highlight `cjs` code blocks using the `javascript` syntax highlighter: + + ```js + import { defineConfig } from 'astro/config'; + + export default defineConfig({ + markdown: { + shikiConfig: { + langAlias: { + cjs: 'javascript', + }, + }, + }, + }); + ``` + + Then in your Markdown, you can use the alias as the language for a code block for syntax highlighting: + + ````md + ```cjs + 'use strict'; + + function commonJs() { + return 'I am a commonjs file'; + } + ``` + ```` + +- [#11984](https://github.com/withastro/astro/pull/11984) [`3ac2263`](https://github.com/withastro/astro/commit/3ac2263ff6070136bec9cffb863c38bcc31ccdfe) Thanks [@chaegumi](https://github.com/chaegumi)! - Adds a new `build.concurreny` configuration option to specify the number of pages to build in parallel + + **In most cases, you should not change the default value of `1`.** + + Use this option only when other attempts to reduce the overall rendering time (e.g. batch or cache long running tasks like fetch calls or data access) are not possible or are insufficient. + + Use this option only if the refactors are not possible. If the number is set too high, the page rendering may slow down due to insufficient memory resources and because JS is single-threaded. + + > [!WARNING] + > This feature is stable and is not considered experimental. However, this feature is only intended to address difficult performance issues, and breaking changes may occur in a [minor release](https://docs.astro.build/en/upgrade-astro/#semantic-versioning) to keep this option as performant as possible. + + ```js + // astro.config.mjs + import { defineConfig } from 'astro'; + + export default defineConfig({ + build: { + concurrency: 2, + }, + }); + ``` + +### Patch Changes + +- [#12160](https://github.com/withastro/astro/pull/12160) [`c6fd1df`](https://github.com/withastro/astro/commit/c6fd1df695d0f2a24bb49e6954064f92664ccf67) Thanks [@louisescher](https://github.com/louisescher)! - Fixes a bug where `astro.config.mts` and `astro.config.cts` weren't reloading the dev server upon modifications. + +- [#12130](https://github.com/withastro/astro/pull/12130) [`e96bcae`](https://github.com/withastro/astro/commit/e96bcae535ef2f0661f539c1d49690c531df2d4e) Thanks [@thehansys](https://github.com/thehansys)! - Fixes a bug in the parsing of `x-forwarded-\*` `Request` headers, where multiple values assigned to those headers were not correctly parsed. + + Now, headers like `x-forwarded-proto: https,http` are correctly parsed. + +- [#12147](https://github.com/withastro/astro/pull/12147) [`9db755a`](https://github.com/withastro/astro/commit/9db755ab7cfe658ec426387e297bdcd32c4bc8de) Thanks [@ascorbic](https://github.com/ascorbic)! - Skips setting statusMessage header for HTTP/2 response + + HTTP/2 doesn't support status message, so setting this was logging a warning. + +- [#12151](https://github.com/withastro/astro/pull/12151) [`bb6d37f`](https://github.com/withastro/astro/commit/bb6d37f94a283433994f9243189cb4386df0e11a) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where `Astro.currentLocale` wasn't incorrectly computed when the `defaultLocale` belonged to a custom locale path. + +- Updated dependencies [[`710a1a1`](https://github.com/withastro/astro/commit/710a1a11f488ff6ed3da6d3e0723b2322ccfe27b)]: + - @astrojs/markdown-remark@5.3.0 + ## 4.15.12 ### Patch Changes diff --git a/packages/astro/astro-jsx.d.ts b/packages/astro/astro-jsx.d.ts index 128709dfc..ca54b991e 100644 --- a/packages/astro/astro-jsx.d.ts +++ b/packages/astro/astro-jsx.d.ts @@ -1,5 +1,4 @@ /// <reference lib="dom" /> -/* eslint @typescript-eslint/no-unused-vars: off */ /** * Adapted from babel-plugin-react-html-attrs's TypeScript definition from DefinitelyTyped. * @see https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/babel-plugin-react-html-attrs/index.d.ts diff --git a/packages/astro/performance/content-benchmark.mjs b/packages/astro/performance/content-benchmark.mjs index 98ef5f0ea..c4081a9e9 100644 --- a/packages/astro/performance/content-benchmark.mjs +++ b/packages/astro/performance/content-benchmark.mjs @@ -1,5 +1,3 @@ -/* eslint-disable no-console */ - import { fileURLToPath } from 'node:url'; import { parseArgs } from 'node:util'; import { bold, cyan, dim } from 'kleur/colors'; @@ -25,15 +23,15 @@ async function benchmark({ fixtures, templates, numPosts }) { ext: extByFixture[fixture], template: templates[fixture], }); - console.log(`[${fixture}] Generated posts`); + console.info(`[${fixture}] Generated posts`); const { build } = await loadFixture({ root, }); const now = performance.now(); - console.log(`[${fixture}] Building...`); + console.info(`[${fixture}] Building...`); await build(); - console.log(cyan(`[${fixture}] Built in ${bold(getTimeStat(now, performance.now()))}.`)); + console.info(cyan(`[${fixture}] Built in ${bold(getTimeStat(now, performance.now()))}.`)); } } @@ -57,7 +55,9 @@ async function benchmark({ fixtures, templates, numPosts }) { if (test.includes('simple')) { const fixtures = formats; - console.log(`\n${bold('Simple')} ${dim(`${numPosts} posts (${formatsToString(fixtures)})`)}`); + console.info( + `\n${bold('Simple')} ${dim(`${numPosts} posts (${formatsToString(fixtures)})`)}`, + ); process.env.ASTRO_PERFORMANCE_TEST_NAME = 'simple'; await benchmark({ fixtures, @@ -72,7 +72,7 @@ async function benchmark({ fixtures, templates, numPosts }) { if (test.includes('with-astro-components')) { const fixtures = formats.filter((format) => format !== 'md'); - console.log( + console.info( `\n${bold('With Astro components')} ${dim( `${numPosts} posts (${formatsToString(fixtures)})`, )}`, @@ -90,7 +90,7 @@ async function benchmark({ fixtures, templates, numPosts }) { if (test.includes('with-react-components')) { const fixtures = formats.filter((format) => format !== 'md'); - console.log( + console.info( `\n${bold('With React components')} ${dim( `${numPosts} posts (${formatsToString(fixtures)})`, )}`, diff --git a/packages/astro/performance/scripts/generate-posts.cli.mjs b/packages/astro/performance/scripts/generate-posts.cli.mjs index 30f22e7b7..ee95ca34b 100644 --- a/packages/astro/performance/scripts/generate-posts.cli.mjs +++ b/packages/astro/performance/scripts/generate-posts.cli.mjs @@ -1,5 +1,3 @@ -/* eslint-disable no-console */ - import { generatePosts } from './generate-posts.mjs'; (async () => { @@ -14,5 +12,5 @@ import { generatePosts } from './generate-posts.mjs'; await generatePosts({ postsDir, numPosts, ext, template }); - console.log(`${numPosts} ${ext} posts written to ${JSON.stringify(postsDir)} 🚀`); + console.info(`${numPosts} ${ext} posts written to ${JSON.stringify(postsDir)} 🚀`); })(); diff --git a/packages/astro/src/actions/runtime/middleware.ts b/packages/astro/src/actions/runtime/middleware.ts index 22d4f9c7d..78c0e93a6 100644 --- a/packages/astro/src/actions/runtime/middleware.ts +++ b/packages/astro/src/actions/runtime/middleware.ts @@ -27,7 +27,6 @@ const encoder = new TextEncoder(); export const onRequest = defineMiddleware(async (context, next) => { if (context.isPrerendered) { if (context.request.method === 'POST') { - // eslint-disable-next-line no-console console.warn( yellow('[astro:actions]'), 'POST requests should not be sent to prerendered pages. If you\'re using Actions, disable prerendering with `export const prerender = "false".', @@ -145,7 +144,6 @@ async function redirectWithResult({ if (!referer) { throw new Error('Internal: Referer unexpectedly missing from Action POST request.'); } - return context.redirect(referer); } diff --git a/packages/astro/src/actions/runtime/route.ts b/packages/astro/src/actions/runtime/route.ts index 5827e431f..d1f4d1669 100644 --- a/packages/astro/src/actions/runtime/route.ts +++ b/packages/astro/src/actions/runtime/route.ts @@ -10,7 +10,6 @@ export const POST: APIRoute = async (context) => { baseAction = await getAction(url.pathname); } catch (e) { if (import.meta.env.DEV) throw e; - // eslint-disable-next-line no-console console.error(e); return new Response(e instanceof Error ? e.message : null, { status: 404 }); } diff --git a/packages/astro/src/actions/runtime/virtual/shared.ts b/packages/astro/src/actions/runtime/virtual/shared.ts index f250b0a1a..4067ad321 100644 --- a/packages/astro/src/actions/runtime/virtual/shared.ts +++ b/packages/astro/src/actions/runtime/virtual/shared.ts @@ -57,8 +57,7 @@ const statusToCodeMap: Record<number, ActionErrorCode> = Object.entries(codeToSt // T is used for error inference with SafeInput -> isInputError. // See: https://github.com/withastro/astro/pull/11173/files#r1622767246 -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export class ActionError<T extends ErrorInferenceObject = ErrorInferenceObject> extends Error { +export class ActionError<_T extends ErrorInferenceObject = ErrorInferenceObject> extends Error { type = 'AstroActionError'; code: ActionErrorCode = 'INTERNAL_SERVER_ERROR'; status = 500; diff --git a/packages/astro/src/assets/endpoint/generic.ts b/packages/astro/src/assets/endpoint/generic.ts index d453787fd..f8924134b 100644 --- a/packages/astro/src/assets/endpoint/generic.ts +++ b/packages/astro/src/assets/endpoint/generic.ts @@ -73,7 +73,6 @@ export const GET: APIRoute = async ({ request }) => { }, }); } catch (err: unknown) { - // eslint-disable-next-line no-console console.error('Could not process image request:', err); return new Response(`Server Error: ${err}`, { status: 500 }); } diff --git a/packages/astro/src/assets/endpoint/node.ts b/packages/astro/src/assets/endpoint/node.ts index 04275652c..4312e28cb 100644 --- a/packages/astro/src/assets/endpoint/node.ts +++ b/packages/astro/src/assets/endpoint/node.ts @@ -1,5 +1,5 @@ import { readFile } from 'node:fs/promises'; -/* eslint-disable no-console */ + import os from 'node:os'; import { isAbsolute } from 'node:path'; import { fileURLToPath, pathToFileURL } from 'node:url'; diff --git a/packages/astro/src/assets/internal.ts b/packages/astro/src/assets/internal.ts index 9a5926e8d..a984ff025 100644 --- a/packages/astro/src/assets/internal.ts +++ b/packages/astro/src/assets/internal.ts @@ -80,7 +80,7 @@ export async function getImage( // Causing our generate step to think the image is used outside of the image optimization pipeline const clonedSrc = isESMImportedImage(resolvedOptions.src) ? // @ts-expect-error - clone is a private, hidden prop - resolvedOptions.src.clone ?? resolvedOptions.src + (resolvedOptions.src.clone ?? resolvedOptions.src) : resolvedOptions.src; resolvedOptions.src = clonedSrc; diff --git a/packages/astro/src/assets/utils/imageKind.ts b/packages/astro/src/assets/utils/imageKind.ts index 7b42f9f70..e3e1b3341 100644 --- a/packages/astro/src/assets/utils/imageKind.ts +++ b/packages/astro/src/assets/utils/imageKind.ts @@ -9,5 +9,5 @@ export function isRemoteImage(src: ImageMetadata | string): src is string { } export async function resolveSrc(src: UnresolvedImageTransform['src']) { - return typeof src === 'object' && 'then' in src ? (await src).default ?? (await src) : src; + return typeof src === 'object' && 'then' in src ? ((await src).default ?? (await src)) : src; } diff --git a/packages/astro/src/cli/add/index.ts b/packages/astro/src/cli/add/index.ts index 313f4f89a..11ddaffbe 100644 --- a/packages/astro/src/cli/add/index.ts +++ b/packages/astro/src/cli/add/index.ts @@ -690,7 +690,6 @@ async function tryToInstallIntegrations({ spinner.error(); logger.debug('add', 'Error installing dependencies', err); // NOTE: `err.stdout` can be an empty string, so log the full error instead for a more helpful log - // eslint-disable-next-line no-console console.error('\n', err.stdout || err.message, '\n'); return UpdateResult.failure; } diff --git a/packages/astro/src/cli/create-key/index.ts b/packages/astro/src/cli/create-key/index.ts index d9b9f08ff..bc03c5357 100644 --- a/packages/astro/src/cli/create-key/index.ts +++ b/packages/astro/src/cli/create-key/index.ts @@ -23,7 +23,6 @@ ASTRO_KEY=${encoded}`, ); } catch (err: unknown) { if (err != null) { - // eslint-disable-next-line no-console console.error(err.toString()); } return 1; diff --git a/packages/astro/src/cli/index.ts b/packages/astro/src/cli/index.ts index 23486f938..5f1cc75a9 100644 --- a/packages/astro/src/cli/index.ts +++ b/packages/astro/src/cli/index.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-console */ import * as colors from 'kleur/colors'; import yargs from 'yargs-parser'; import { ASTRO_VERSION } from '../core/constants.js'; diff --git a/packages/astro/src/cli/info/index.ts b/packages/astro/src/cli/info/index.ts index ff0d35081..ab24e2213 100644 --- a/packages/astro/src/cli/info/index.ts +++ b/packages/astro/src/cli/info/index.ts @@ -1,6 +1,5 @@ import { execSync } from 'node:child_process'; import { arch, platform } from 'node:os'; -/* eslint-disable no-console */ import * as colors from 'kleur/colors'; import prompts from 'prompts'; import { resolveConfig } from '../../core/config/index.js'; diff --git a/packages/astro/src/cli/preferences/index.ts b/packages/astro/src/cli/preferences/index.ts index bd60343c2..c31841d24 100644 --- a/packages/astro/src/cli/preferences/index.ts +++ b/packages/astro/src/cli/preferences/index.ts @@ -1,12 +1,8 @@ -/* eslint-disable no-console */ -import type { AstroSettings } from '../../types/astro.js'; - import { fileURLToPath } from 'node:url'; -import { bgGreen, black, bold, dim, yellow } from 'kleur/colors'; - import { formatWithOptions } from 'node:util'; import dlv from 'dlv'; import { flattie } from 'flattie'; +import { bgGreen, black, bold, dim, yellow } from 'kleur/colors'; import { resolveConfig } from '../../core/config/config.js'; import { createSettings } from '../../core/config/settings.js'; import { collectErrorMetadata } from '../../core/errors/dev/utils.js'; @@ -14,6 +10,7 @@ import * as msg from '../../core/messages.js'; import { apply as applyPolyfill } from '../../core/polyfill.js'; import { DEFAULT_PREFERENCES } from '../../preferences/defaults.js'; import { type PreferenceKey, coerce, isValidKey } from '../../preferences/index.js'; +import type { AstroSettings } from '../../types/astro.js'; import { type Flags, createLoggerFromFlags, flagsToAstroInlineConfig } from '../flags.js'; interface PreferencesOptions { @@ -335,7 +332,7 @@ function formatTable(object: Record<string, AnnotatedValue>, columnLabels: [stri const colALength = [colA, ...Object.keys(object)].reduce(longest, 0) + 3; const colBLength = [colB, ...Object.values(object).map(annotatedFormat)].reduce(longest, 0) + 3; function formatRow( - i: number, + _i: number, a: string, b: AnnotatedValue, style: (value: string | number | boolean) => string = (v) => v.toString(), diff --git a/packages/astro/src/cli/telemetry/index.ts b/packages/astro/src/cli/telemetry/index.ts index 276f00ef1..a854220c3 100644 --- a/packages/astro/src/cli/telemetry/index.ts +++ b/packages/astro/src/cli/telemetry/index.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-console */ import * as msg from '../../core/messages.js'; import { telemetry } from '../../events/index.js'; import { type Flags, createLoggerFromFlags } from '../flags.js'; diff --git a/packages/astro/src/cli/throw-and-exit.ts b/packages/astro/src/cli/throw-and-exit.ts index 1a8916ede..b7821caa5 100644 --- a/packages/astro/src/cli/throw-and-exit.ts +++ b/packages/astro/src/cli/throw-and-exit.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-console */ import { collectErrorMetadata } from '../core/errors/dev/index.js'; import { isAstroConfigZodError } from '../core/errors/errors.js'; import { createSafeError } from '../core/errors/index.js'; diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index 82dc3058e..6a8d3f214 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -98,7 +98,6 @@ export function createGetCollection({ } return result; } else { - // eslint-disable-next-line no-console console.warn( `The collection ${JSON.stringify( collection, @@ -183,7 +182,6 @@ export function createGetEntryBySlug({ message: AstroErrorData.GetEntryDeprecationError.message(collection, 'getEntryBySlug'), }); } - // eslint-disable-next-line no-console console.warn( `The collection ${JSON.stringify(collection)} does not exist. Please ensure it is defined in your content config.`, ); @@ -228,7 +226,6 @@ export function createGetDataEntryById({ if (store.hasCollection(collection)) { return getEntry(collection, id); } - // eslint-disable-next-line no-console console.warn( `The collection ${JSON.stringify(collection)} does not exist. Please ensure it is defined in your content config.`, ); @@ -319,7 +316,6 @@ export function createGetEntry({ if (store.hasCollection(collection)) { const entry = store.get<DataEntry>(collection, lookupId); if (!entry) { - // eslint-disable-next-line no-console console.warn(`Entry ${collection} → ${lookupId} was not found.`); return; } @@ -337,7 +333,6 @@ export function createGetEntry({ } if (!collectionNames.has(collection)) { - // eslint-disable-next-line no-console console.warn( `The collection ${JSON.stringify(collection)} does not exist. Please ensure it is defined in your content config.`, ); @@ -487,7 +482,6 @@ export async function renderEntry( renderEntryImport, }); } catch (e) { - // eslint-disable-next-line console.error(e); } } diff --git a/packages/astro/src/content/types-generator.ts b/packages/astro/src/content/types-generator.ts index 7ed44bec8..9ede0ab66 100644 --- a/packages/astro/src/content/types-generator.ts +++ b/packages/astro/src/content/types-generator.ts @@ -477,7 +477,7 @@ async function writeContentFiles({ collection.type === 'unknown' ? // Add empty / unknown collections to the data type map by default // This ensures `getCollection('empty-collection')` doesn't raise a type error - collectionConfig?.type ?? 'data' + (collectionConfig?.type ?? 'data') : collection.type; const collectionEntryKeys = Object.keys(collection.entries).sort(); diff --git a/packages/astro/src/core/app/node.ts b/packages/astro/src/core/app/node.ts index 77c7b16e4..b7b485ea8 100644 --- a/packages/astro/src/core/app/node.ts +++ b/packages/astro/src/core/app/node.ts @@ -1,5 +1,6 @@ import fs from 'node:fs'; import type { IncomingMessage, ServerResponse } from 'node:http'; +import { Http2ServerResponse } from 'node:http2'; import type { RouteData } from '../../types/public/internal.js'; import { deserializeManifest } from './common.js'; import { createOutgoingHttpHeaders } from './createOutgoingHttpHeaders.js'; @@ -60,16 +61,34 @@ export class NodeApp extends App { * ``` */ static createRequest(req: NodeRequest, { skipBody = false } = {}): Request { - const protocol = - req.headers['x-forwarded-proto'] ?? - ('encrypted' in req.socket && req.socket.encrypted ? 'https' : 'http'); - const hostname = - req.headers['x-forwarded-host'] ?? req.headers.host ?? req.headers[':authority']; - const port = req.headers['x-forwarded-port']; + const isEncrypted = 'encrypted' in req.socket && req.socket.encrypted; + + // Parses multiple header and returns first value if available. + const getFirstForwardedValue = (multiValueHeader?: string | string[]) => { + return multiValueHeader + ?.toString() + ?.split(',') + .map((e) => e.trim())?.[0]; + }; + + // Get the used protocol between the end client and first proxy. + // NOTE: Some proxies append values with spaces and some do not. + // We need to handle it here and parse the header correctly. + // @example "https, http,http" => "http" + const forwardedProtocol = getFirstForwardedValue(req.headers['x-forwarded-proto']); + const protocol = forwardedProtocol ?? (isEncrypted ? 'https' : 'http'); + + // @example "example.com,www2.example.com" => "example.com" + const forwardedHostname = getFirstForwardedValue(req.headers['x-forwarded-host']); + const hostname = forwardedHostname ?? req.headers.host ?? req.headers[':authority']; + + // @example "443,8080,80" => "443" + const forwardedPort = getFirstForwardedValue(req.headers['x-forwarded-port']); + const port = + forwardedPort ?? req.socket?.remotePort?.toString() ?? (isEncrypted ? '443' : '80'); - const portInHostname = - typeof hostname === 'string' && typeof port === 'string' && hostname.endsWith(port); - const hostnamePort = portInHostname ? hostname : hostname + (port ? `:${port}` : ''); + const portInHostname = typeof hostname === 'string' && /:\d+$/.test(hostname); + const hostnamePort = portInHostname ? hostname : `${hostname}:${port}`; const url = `${protocol}://${hostnamePort}${req.url}`; const options: RequestInit = { @@ -80,14 +99,17 @@ export class NodeApp extends App { if (bodyAllowed) { Object.assign(options, makeRequestBody(req)); } + const request = new Request(url, options); - const clientIp = req.headers['x-forwarded-for']; + // Get the IP of end client behind the proxy. + // @example "1.1.1.1,8.8.8.8" => "1.1.1.1" + const forwardedClientIp = getFirstForwardedValue(req.headers['x-forwarded-for']); + const clientIp = forwardedClientIp || req.socket?.remoteAddress; if (clientIp) { Reflect.set(request, clientAddressSymbol, clientIp); - } else if (req.socket?.remoteAddress) { - Reflect.set(request, clientAddressSymbol, req.socket.remoteAddress); } + return request; } @@ -108,7 +130,10 @@ export class NodeApp extends App { */ static async writeResponse(source: Response, destination: ServerResponse) { const { status, headers, body, statusText } = source; - destination.statusMessage = statusText; + // HTTP/2 doesn't support statusMessage + if (!(destination instanceof Http2ServerResponse)) { + destination.statusMessage = statusText; + } destination.writeHead(status, createOutgoingHttpHeaders(headers)); if (!body) return destination.end(); try { @@ -118,7 +143,6 @@ export class NodeApp extends App { // an error in the ReadableStream's cancel callback, but // also because of an error anywhere in the stream. reader.cancel().catch((err) => { - // eslint-disable-next-line no-console console.error( `There was an uncaught error in the middle of the stream while rendering ${destination.req.url}.`, err, diff --git a/packages/astro/src/core/build/generate.ts b/packages/astro/src/core/build/generate.ts index 64ba64309..a26eca79b 100644 --- a/packages/astro/src/core/build/generate.ts +++ b/packages/astro/src/core/build/generate.ts @@ -1,6 +1,7 @@ import fs from 'node:fs'; import os from 'node:os'; import { bgGreen, black, blue, bold, dim, green, magenta, red } from 'kleur/colors'; +import PLimit from 'p-limit'; import PQueue from 'p-queue'; import { generateImagesForPath, @@ -173,6 +174,40 @@ async function generatePage( styles, mod: pageModule, }; + + async function generatePathWithLogs( + path: string, + route: RouteData, + index: number, + paths: string[], + isConcurrent: boolean, + ) { + const timeStart = performance.now(); + pipeline.logger.debug('build', `Generating: ${path}`); + + const filePath = getOutputFilename(config, path, pageData.route.type); + const lineIcon = + (index === paths.length - 1 && !isConcurrent) || paths.length === 1 ? '└─' : '├─'; + + // Log the rendering path first if not concurrent. We'll later append the time taken to render. + // We skip if it's concurrent as the logs may overlap + if (!isConcurrent) { + logger.info(null, ` ${blue(lineIcon)} ${dim(filePath)}`, false); + } + + await generatePath(path, pipeline, generationOptions, route); + + const timeEnd = performance.now(); + const isSlow = timeEnd - timeStart > THRESHOLD_SLOW_RENDER_TIME_MS; + const timeIncrease = (isSlow ? red : dim)(`(+${getTimeStat(timeStart, timeEnd)})`); + + if (isConcurrent) { + logger.info(null, ` ${blue(lineIcon)} ${dim(filePath)} ${timeIncrease}`); + } else { + logger.info('SKIP_FORMAT', ` ${timeIncrease}`); + } + } + // Now we explode the routes. A route render itself, and it can render its fallbacks (i18n routing) for (const route of eachRouteInRouteData(pageData)) { const icon = @@ -180,28 +215,24 @@ async function generatePage( ? green('▶') : magenta('λ'); logger.info(null, `${icon} ${getPrettyRouteName(route)}`); + // Get paths for the route, calling getStaticPaths if needed. const paths = await getPathsForRoute(route, pageModule, pipeline, builtPaths); - let timeStart = performance.now(); - let prevTimeEnd = timeStart; - for (let i = 0; i < paths.length; i++) { - const path = paths[i]; - pipeline.logger.debug('build', `Generating: ${path}`); - const filePath = getOutputFilename(config, path, pageData.route.type); - const lineIcon = i === paths.length - 1 ? '└─' : '├─'; - logger.info(null, ` ${blue(lineIcon)} ${dim(filePath)}`, false); - await generatePath(path, pipeline, generationOptions, route); - const timeEnd = performance.now(); - const timeChange = getTimeStat(prevTimeEnd, timeEnd); - const timeIncrease = `(+${timeChange})`; - let timeIncreaseLabel; - if (timeEnd - prevTimeEnd > THRESHOLD_SLOW_RENDER_TIME_MS) { - timeIncreaseLabel = red(timeIncrease); - } else { - timeIncreaseLabel = dim(timeIncrease); + + // Generate each paths + if (config.build.concurrency > 1) { + const limit = PLimit(config.build.concurrency); + const promises: Promise<void>[] = []; + for (let i = 0; i < paths.length; i++) { + const path = paths[i]; + promises.push(limit(() => generatePathWithLogs(path, route, i, paths, true))); + } + await Promise.allSettled(promises); + } else { + for (let i = 0; i < paths.length; i++) { + const path = paths[i]; + await generatePathWithLogs(path, route, i, paths, false); } - logger.info('SKIP_FORMAT', ` ${timeIncreaseLabel}`); - prevTimeEnd = timeEnd; } } } @@ -309,14 +340,6 @@ function getInvalidRouteSegmentError( }); } -interface GeneratePathOptions { - pageData: PageBuildData; - linkIds: string[]; - scripts: { type: 'inline' | 'external'; value: string } | null; - styles: StylesheetAsset[]; - mod: ComponentInstance; -} - function addPageName(pathname: string, opts: StaticBuildOptions): void { const trailingSlash = opts.settings.config.trailingSlash; const buildFormat = opts.settings.config.build.format; diff --git a/packages/astro/src/core/build/internal.ts b/packages/astro/src/core/build/internal.ts index 2de34467e..4e3675876 100644 --- a/packages/astro/src/core/build/internal.ts +++ b/packages/astro/src/core/build/internal.ts @@ -123,7 +123,7 @@ export function createBuildInternals(): BuildInternals { export function trackPageData( internals: BuildInternals, - component: string, + _component: string, pageData: PageBuildData, componentModuleId: string, componentURL: URL, diff --git a/packages/astro/src/core/build/plugins/plugin-ssr.ts b/packages/astro/src/core/build/plugins/plugin-ssr.ts index 68745817b..6acc236ae 100644 --- a/packages/astro/src/core/build/plugins/plugin-ssr.ts +++ b/packages/astro/src/core/build/plugins/plugin-ssr.ts @@ -100,7 +100,7 @@ function vitePluginSSR( contents.push(`const pageMap = new Map([\n ${pageMap.join(',\n ')}\n]);`); exports.push(`export { pageMap }`); const middleware = await this.resolve(MIDDLEWARE_MODULE_ID); - const ssrCode = generateSSRCode(options.settings, adapter, middleware!.id); + const ssrCode = generateSSRCode(adapter, middleware!.id); imports.push(...ssrCode.imports); contents.push(...ssrCode.contents); return [...imports, ...contents, ...exports].join('\n'); @@ -163,7 +163,7 @@ export function pluginSSR( }; } -function generateSSRCode(settings: AstroSettings, adapter: AstroAdapter, middlewareId: string) { +function generateSSRCode(adapter: AstroAdapter, middlewareId: string) { const edgeMiddleware = adapter?.adapterFeatures?.edgeMiddleware ?? false; const imports = [ diff --git a/packages/astro/src/core/config/config.ts b/packages/astro/src/core/config/config.ts index 3e19db801..ae15805ff 100644 --- a/packages/astro/src/core/config/config.ts +++ b/packages/astro/src/core/config/config.ts @@ -97,7 +97,6 @@ async function loadConfig( } catch (e) { const configPathText = configFile ? colors.bold(configFile) : 'your Astro config'; // Config errors should bypass log level as it breaks startup - // eslint-disable-next-line no-console console.error(`${colors.bold(colors.red('[astro]'))} Unable to load ${configPathText}\n`); throw e; } @@ -158,7 +157,6 @@ export async function resolveConfig( // Mark this error so the callee can decide to suppress Zod's error if needed. // We still want to throw the error to signal an error in validation. trackAstroConfigZodError(e); - // eslint-disable-next-line no-console console.error(formatConfigErrorMessage(e) + '\n'); telemetry.record(eventConfigError({ cmd: command, err: e, isFatal: true })); } diff --git a/packages/astro/src/core/config/schema.ts b/packages/astro/src/core/config/schema.ts index eec3d869d..48af43339 100644 --- a/packages/astro/src/core/config/schema.ts +++ b/packages/astro/src/core/config/schema.ts @@ -63,6 +63,7 @@ export const ASTRO_CONFIG_DEFAULTS = { serverEntry: 'entry.mjs', redirects: true, inlineStylesheets: 'auto', + concurrency: 1, }, image: { endpoint: { entrypoint: undefined, route: '/_image' }, @@ -187,6 +188,7 @@ export const AstroConfigSchema = z.object({ .enum(['always', 'auto', 'never']) .optional() .default(ASTRO_CONFIG_DEFAULTS.build.inlineStylesheets), + concurrency: z.number().min(1).optional().default(ASTRO_CONFIG_DEFAULTS.build.concurrency), }) .default({}), server: z.preprocess( @@ -316,6 +318,10 @@ export const AstroConfigSchema = z.object({ return langs; }) .default([]), + langAlias: z + .record(z.string(), z.string()) + .optional() + .default(ASTRO_CONFIG_DEFAULTS.markdown.shikiConfig.langAlias!), theme: z .enum(Object.keys(bundledThemes) as [BuiltinTheme, ...BuiltinTheme[]]) .or(z.custom<ShikiTheme>()) @@ -615,6 +621,7 @@ export function createRelativeSchema(cmd: string, fileProtocolRoot: string) { .enum(['always', 'auto', 'never']) .optional() .default(ASTRO_CONFIG_DEFAULTS.build.inlineStylesheets), + concurrency: z.number().min(1).optional().default(ASTRO_CONFIG_DEFAULTS.build.concurrency), }) .optional() .default({}), diff --git a/packages/astro/src/core/cookies/cookies.ts b/packages/astro/src/core/cookies/cookies.ts index 852be913d..f2679f23f 100644 --- a/packages/astro/src/core/cookies/cookies.ts +++ b/packages/astro/src/core/cookies/cookies.ts @@ -156,7 +156,6 @@ class AstroCookies implements AstroCookiesInterface { 'Please make sure that Astro.cookies.set() is only called in the frontmatter of the main page.', ); warning.name = 'Warning'; - // eslint-disable-next-line no-console console.warn(warning); } let serializedValue: string; diff --git a/packages/astro/src/core/dev/restart.ts b/packages/astro/src/core/dev/restart.ts index 9d68f4365..e9ac726f6 100644 --- a/packages/astro/src/core/dev/restart.ts +++ b/packages/astro/src/core/dev/restart.ts @@ -32,7 +32,7 @@ async function createRestartedContainer( return newContainer; } -const configRE = /.*astro.config.(?:mjs|cjs|js|ts)$/; +const configRE = /.*astro.config.(?:mjs|mts|cjs|cts|js|ts)$/; function shouldRestartContainer( { settings, inlineConfig, restartInFlight }: Container, diff --git a/packages/astro/src/core/logger/console.ts b/packages/astro/src/core/logger/console.ts index ae7241447..30368bd86 100644 --- a/packages/astro/src/core/logger/console.ts +++ b/packages/astro/src/core/logger/console.ts @@ -2,10 +2,8 @@ import { type LogMessage, type LogWritable, getEventPrefix, levels } from './cor export const consoleLogDestination: LogWritable<LogMessage> = { write(event: LogMessage) { - // eslint-disable-next-line no-console let dest = console.error; if (levels[event.level] < levels['error']) { - // eslint-disable-next-line no-console dest = console.log; } if (event.label === 'SKIP_FORMAT') { diff --git a/packages/astro/src/core/messages.ts b/packages/astro/src/core/messages.ts index 8104d993b..3081c0b6c 100644 --- a/packages/astro/src/core/messages.ts +++ b/packages/astro/src/core/messages.ts @@ -380,6 +380,6 @@ export function printHelp({ message.push(linebreak(), `${description}`); } - // eslint-disable-next-line no-console + // biome-ignore lint/suspicious/noConsoleLog: allowed console.log(message.join('\n') + '\n'); } diff --git a/packages/astro/src/core/middleware/index.ts b/packages/astro/src/core/middleware/index.ts index 1d604957b..facd64231 100644 --- a/packages/astro/src/core/middleware/index.ts +++ b/packages/astro/src/core/middleware/index.ts @@ -32,6 +32,11 @@ export type CreateContext = { * A list of locales that are supported by the user */ userDefinedLocales?: string[]; + + /** + * User defined default locale + */ + defaultLocale: string; }; /** @@ -41,6 +46,7 @@ function createContext({ request, params = {}, userDefinedLocales = [], + defaultLocale = '', }: CreateContext): APIContext { let preferredLocale: string | undefined = undefined; let preferredLocaleList: string[] | undefined = undefined; @@ -78,7 +84,7 @@ function createContext({ return (preferredLocaleList ??= computePreferredLocaleList(request, userDefinedLocales)); }, get currentLocale(): string | undefined { - return (currentLocale ??= computeCurrentLocale(route, userDefinedLocales)); + return (currentLocale ??= computeCurrentLocale(route, userDefinedLocales, defaultLocale)); }, url, get clientAddress() { diff --git a/packages/astro/src/core/preview/vite-plugin-astro-preview.ts b/packages/astro/src/core/preview/vite-plugin-astro-preview.ts index fd9bbae66..992f82f14 100644 --- a/packages/astro/src/core/preview/vite-plugin-astro-preview.ts +++ b/packages/astro/src/core/preview/vite-plugin-astro-preview.ts @@ -74,7 +74,7 @@ export function vitePluginAstroPreview(settings: AstroSettings): Plugin { return () => { // NOTE: the `base` is stripped from `req.url` for post middlewares - server.middlewares.use((req, res, next) => { + server.middlewares.use((req, _res, next) => { const pathname = cleanUrl(req.url!); // Vite doesn't handle /foo/ if /foo.html exists, we handle it anyways diff --git a/packages/astro/src/core/render-context.ts b/packages/astro/src/core/render-context.ts index 5a20b795d..1088accc1 100644 --- a/packages/astro/src/core/render-context.ts +++ b/packages/astro/src/core/render-context.ts @@ -520,8 +520,8 @@ export class RenderContext { // and url.pathname to pass Astro.currentLocale tests. // A single call with `routeData.pathname ?? routeData.route` as the pathname still fails. return (this.#currentLocale ??= - computeCurrentLocale(routeData.route, locales) ?? - computeCurrentLocale(url.pathname, locales) ?? + computeCurrentLocale(routeData.route, locales, defaultLocale) ?? + computeCurrentLocale(url.pathname, locales, defaultLocale) ?? fallbackTo); } diff --git a/packages/astro/src/events/error.ts b/packages/astro/src/events/error.ts index fc8eddfd8..65e0cabb7 100644 --- a/packages/astro/src/events/error.ts +++ b/packages/astro/src/events/error.ts @@ -101,7 +101,7 @@ function getSafeErrorMessage(message: string | Function): string { .slice(1, -1) .replace( /\$\{([^}]+)\}/g, - (str, match1) => + (_str, match1) => `${match1 .split(/\.?(?=[A-Z])/) .join('_') diff --git a/packages/astro/src/i18n/utils.ts b/packages/astro/src/i18n/utils.ts index 5dc58908a..98eb4c94a 100644 --- a/packages/astro/src/i18n/utils.ts +++ b/packages/astro/src/i18n/utils.ts @@ -148,7 +148,11 @@ export function computePreferredLocaleList(request: Request, locales: Locales): return result; } -export function computeCurrentLocale(pathname: string, locales: Locales): undefined | string { +export function computeCurrentLocale( + pathname: string, + locales: Locales, + defaultLocale: string, +): string | undefined { for (const segment of pathname.split('/')) { for (const locale of locales) { if (typeof locale === 'string') { @@ -171,6 +175,19 @@ export function computeCurrentLocale(pathname: string, locales: Locales): undefi } } } + // If we didn't exit, it's probably because we don't have any code/locale in the URL. + // We use the default locale. + for (const locale of locales) { + if (typeof locale === 'string') { + if (locale === defaultLocale) { + return locale; + } + } else { + if (locale.path === defaultLocale) { + return locale.codes.at(0); + } + } + } } export type RoutingStrategies = diff --git a/packages/astro/src/i18n/vite-plugin-i18n.ts b/packages/astro/src/i18n/vite-plugin-i18n.ts index 5ee79a883..11a1177c6 100644 --- a/packages/astro/src/i18n/vite-plugin-i18n.ts +++ b/packages/astro/src/i18n/vite-plugin-i18n.ts @@ -30,7 +30,7 @@ export default function astroInternationalization({ return { name: 'astro:i18n', enforce: 'pre', - config(config, { command }) { + config(_config, { command }) { const i18nConfig: I18nInternalConfig = { base, format, diff --git a/packages/astro/src/jsx/rehype.ts b/packages/astro/src/jsx/rehype.ts index a93a92d5d..3db1a3070 100644 --- a/packages/astro/src/jsx/rehype.ts +++ b/packages/astro/src/jsx/rehype.ts @@ -50,7 +50,6 @@ export const rehypeAnalyzeAstroMetadata: RehypePlugin = () => { (attr) => attr.type === 'mdxJsxAttribute' && attr.name.startsWith('client:'), ) as MdxJsxAttribute | undefined; if (clientAttribute) { - // eslint-disable-next-line console.warn( `You are attempting to render <${node.name!} ${ clientAttribute.name diff --git a/packages/astro/src/prefetch/index.ts b/packages/astro/src/prefetch/index.ts index 3eb8cd570..70f7052d3 100644 --- a/packages/astro/src/prefetch/index.ts +++ b/packages/astro/src/prefetch/index.ts @@ -2,7 +2,6 @@ NOTE: Do not add any dependencies or imports in this file so that it can load quickly in dev. */ -// eslint-disable-next-line no-console const debug = import.meta.env.DEV ? console.debug : undefined; const inBrowser = import.meta.env.SSR === false; // Track prefetched URLs so we don't prefetch twice diff --git a/packages/astro/src/runtime/client/dev-toolbar/settings.ts b/packages/astro/src/runtime/client/dev-toolbar/settings.ts index 538473326..8441afc2f 100644 --- a/packages/astro/src/runtime/client/dev-toolbar/settings.ts +++ b/packages/astro/src/runtime/client/dev-toolbar/settings.ts @@ -28,7 +28,6 @@ function getSettings() { } function log(message: string, level: 'log' | 'warn' | 'error' = 'log') { - // eslint-disable-next-line no-console console[level]( `%cAstro`, 'background: linear-gradient(66.77deg, #D83333 0%, #F041FF 100%); color: white; padding-inline: 4px; border-radius: 2px; font-family: monospace;', diff --git a/packages/astro/src/runtime/client/dev-toolbar/toolbar.ts b/packages/astro/src/runtime/client/dev-toolbar/toolbar.ts index 7f5f2ac47..1ab7e9d09 100644 --- a/packages/astro/src/runtime/client/dev-toolbar/toolbar.ts +++ b/packages/astro/src/runtime/client/dev-toolbar/toolbar.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-console */ import type { ResolvedDevToolbarApp as DevToolbarAppDefinition } from '../../../types/public/toolbar.js'; import { type ToolbarAppEventTarget, serverHelpers } from './helpers.js'; import { settings } from './settings.js'; diff --git a/packages/astro/src/runtime/client/dev-toolbar/ui-library/radio-checkbox.ts b/packages/astro/src/runtime/client/dev-toolbar/ui-library/radio-checkbox.ts index 79508cc69..a223bf1a8 100644 --- a/packages/astro/src/runtime/client/dev-toolbar/ui-library/radio-checkbox.ts +++ b/packages/astro/src/runtime/client/dev-toolbar/ui-library/radio-checkbox.ts @@ -14,7 +14,6 @@ export class DevToolbarRadioCheckbox extends HTMLElement { set radioStyle(value) { if (!styles.includes(value)) { - // eslint-disable-next-line no-console console.error(`Invalid style: ${value}, expected one of ${styles.join(', ')}.`); return; } diff --git a/packages/astro/src/runtime/server/astro-island.ts b/packages/astro/src/runtime/server/astro-island.ts index 252ed65c8..d9a13146e 100644 --- a/packages/astro/src/runtime/server/astro-island.ts +++ b/packages/astro/src/runtime/server/astro-island.ts @@ -45,7 +45,7 @@ declare const Astro: { return Object.fromEntries(Object.entries(raw).map(([key, value]) => [key, reviveTuple(value)])); }; - // 🌊🏝️🌴 + // 🌊🏝🌴 class AstroIsland extends HTMLElement { public Component: any; public hydrator: any; @@ -127,7 +127,6 @@ declare const Astro: { this, ); } catch (e) { - // eslint-disable-next-line no-console console.error(`[astro-island] Error hydrating ${this.getAttribute('component-url')}`, e); } } @@ -179,7 +178,6 @@ declare const Astro: { componentName += ` (export ${componentExport})`; } - // eslint-disable-next-line no-console console.error( `[hydrate] Error parsing props for component ${componentName}`, this.getAttribute('props'), diff --git a/packages/astro/src/runtime/server/render/astro/instance.ts b/packages/astro/src/runtime/server/render/astro/instance.ts index 029231a28..5ea2d5216 100644 --- a/packages/astro/src/runtime/server/render/astro/instance.ts +++ b/packages/astro/src/runtime/server/render/astro/instance.ts @@ -77,7 +77,6 @@ function validateComponentProps(props: any, displayName: string) { if (props != null) { for (const prop of Object.keys(props)) { if (prop.startsWith('client:')) { - // eslint-disable-next-line console.warn( `You are attempting to render <${displayName} ${prop} />, but ${displayName} is an Astro component. Astro components do not render in the client and should not have a hydration directive. Please use a framework component for client rendering.`, ); diff --git a/packages/astro/src/runtime/server/render/component.ts b/packages/astro/src/runtime/server/render/component.ts index 017594e75..b7af9cd92 100644 --- a/packages/astro/src/runtime/server/render/component.ts +++ b/packages/astro/src/runtime/server/render/component.ts @@ -264,7 +264,6 @@ If you're still stuck, please open an issue on GitHub or join us at https://astr : metadata.hydrateArgs; if (!clientOnlyValues.has(rendererName)) { // warning if provide incorrect client:only directive but find the renderer by guess - // eslint-disable-next-line no-console console.warn( `The client:only directive for ${metadata.displayName} is not recognized. The renderer ${renderer.name} will be used. If you intended to use a different renderer, please provide a valid client:only directive.`, ); diff --git a/packages/astro/src/runtime/server/render/util.ts b/packages/astro/src/runtime/server/render/util.ts index 953488a83..2373d624c 100644 --- a/packages/astro/src/runtime/server/render/util.ts +++ b/packages/astro/src/runtime/server/render/util.ts @@ -66,7 +66,6 @@ export function addAttribute(value: any, key: string, shouldEscape = true) { // compiler directives cannot be applied dynamically, log a warning and ignore. if (STATIC_DIRECTIVES.has(key)) { - // eslint-disable-next-line no-console console.warn(`[astro] The "${key}" directive cannot be applied dynamically at runtime. It will not be rendered as an attribute. Make sure to use the static attribute syntax (\`${key}={value}\`) instead of the dynamic spread syntax (\`{...{ "${key}": value }}\`).`); diff --git a/packages/astro/src/runtime/server/transition.ts b/packages/astro/src/runtime/server/transition.ts index 4baae442a..6f1cd5ba4 100644 --- a/packages/astro/src/runtime/server/transition.ts +++ b/packages/astro/src/runtime/server/transition.ts @@ -77,7 +77,7 @@ function reEncode(s: string) { codepoint < 0x80 ? codepoint === 95 ? '__' - : reEncodeValidChars[codepoint] ?? '_' + codepoint.toString(16).padStart(2, '0') + : (reEncodeValidChars[codepoint] ?? '_' + codepoint.toString(16).padStart(2, '0')) : String.fromCodePoint(codepoint); } } diff --git a/packages/astro/src/transitions/router.ts b/packages/astro/src/transitions/router.ts index e136da92d..3db5a7549 100644 --- a/packages/astro/src/transitions/router.ts +++ b/packages/astro/src/transitions/router.ts @@ -543,7 +543,7 @@ async function transition( // This log doesn't make it worse than before, where we got error messages about uncaught exceptions, which can't be caught when the trigger was a click or history traversal. // Needs more investigation on root causes if errors still occur sporadically const err = e as Error; - // eslint-disable-next-line no-console + // biome-ignore lint/suspicious/noConsoleLog: allowed console.log('[astro]', err.name, err.message, err.stack); } } @@ -558,7 +558,6 @@ export async function navigate(href: string, options?: Options) { 'The view transitions client API was called during a server side render. This may be unintentional as the navigate() function is expected to be called in response to user interactions. Please make sure that your usage is correct.', ); warning.name = 'Warning'; - // eslint-disable-next-line no-console console.warn(warning); navigateOnServerWarned = true; } diff --git a/packages/astro/src/types/public/config.ts b/packages/astro/src/types/public/config.ts index fda779bdc..66be4037b 100644 --- a/packages/astro/src/types/public/config.ts +++ b/packages/astro/src/types/public/config.ts @@ -727,6 +727,33 @@ export interface AstroUserConfig { * ``` */ inlineStylesheets?: 'always' | 'auto' | 'never'; + /** + * @docs + * @name build.concurrency + * @type { number } + * @default `1` + * @version 4.16.0 + * @description + * The number of pages to build in parallel. + * + * **In most cases, you should not change the default value of `1`.** + * + * Use this option only when other attempts to reduce the overall rendering time (e.g. batch or cache long running tasks like fetch calls or data access) are not possible or are insufficient. + * If the number is set too high, page rendering may slow down due to insufficient memory resources and because JS is single-threaded. + * + * ```js + * { + * build: { + * concurrency: 2 + * } + * } + * ``` + * + * :::caution[Breaking changes possible] + * This feature is stable and is not considered experimental. However, this feature is only intended to address difficult performance issues, and breaking changes may occur in a [minor release](https://docs.astro.build/en/upgrade-astro/#semantic-versioning) to keep this option as performant as possible. Please check the [Astro CHANGELOG](https://github.com/withastro/astro/blob/refs/heads/next/packages/astro/CHANGELOG.md) for every minor release if you are using this feature. + * ::: + */ + concurrency?: number; }; /** diff --git a/packages/astro/src/vite-plugin-astro-server/response.ts b/packages/astro/src/vite-plugin-astro-server/response.ts index bc316d7c2..a6257508e 100644 --- a/packages/astro/src/vite-plugin-astro-server/response.ts +++ b/packages/astro/src/vite-plugin-astro-server/response.ts @@ -1,4 +1,5 @@ import type http from 'node:http'; +import { Http2ServerResponse } from 'node:http2'; import type { ErrorWithMetadata } from '../core/errors/index.js'; import type { ModuleLoader } from '../core/module-loader/index.js'; @@ -67,7 +68,10 @@ export async function writeWebResponse(res: http.ServerResponse, webResponse: Re if (headers.has('set-cookie')) { _headers['set-cookie'] = headers.getSetCookie(); } - res.statusMessage = statusText; + // HTTP/2 doesn't support statusMessage + if (!(res instanceof Http2ServerResponse)) { + res.statusMessage = statusText; + } res.writeHead(status, _headers); if (body) { if (Symbol.for('astro.responseBody') in webResponse) { diff --git a/packages/astro/src/vite-plugin-astro-server/route.ts b/packages/astro/src/vite-plugin-astro-server/route.ts index 6568b3f1f..459d24cc3 100644 --- a/packages/astro/src/vite-plugin-astro-server/route.ts +++ b/packages/astro/src/vite-plugin-astro-server/route.ts @@ -239,7 +239,7 @@ export async function handleRoute({ req({ url: pathname, method: incomingRequest.method, - statusCode: isRewrite ? response.status : status ?? response.status, + statusCode: isRewrite ? response.status : (status ?? response.status), isRewrite, reqTime: timeEnd - timeStart, }), diff --git a/packages/astro/src/vite-plugin-astro-server/vite.ts b/packages/astro/src/vite-plugin-astro-server/vite.ts index 147853954..697174571 100644 --- a/packages/astro/src/vite-plugin-astro-server/vite.ts +++ b/packages/astro/src/vite-plugin-astro-server/vite.ts @@ -27,7 +27,7 @@ export async function* crawlGraph( ? // "getModulesByFile" pulls from a delayed module cache (fun implementation detail), // So we can get up-to-date info on initial server load. // Needed for slower CSS preprocessing like Tailwind - loader.getModulesByFile(id) ?? new Set() + (loader.getModulesByFile(id) ?? new Set()) : // For non-root files, we're safe to pull from "getModuleById" based on testing. // TODO: Find better invalidation strategy to use "getModuleById" in all cases! new Set([loader.getModuleById(id)]); diff --git a/packages/astro/templates/env.mjs b/packages/astro/templates/env.mjs index d7637af15..648556cf1 100644 --- a/packages/astro/templates/env.mjs +++ b/packages/astro/templates/env.mjs @@ -26,7 +26,6 @@ const _internalGetSecret = (key) => { }; // used while generating the virtual module -// eslint-disable-next-line @typescript-eslint/no-unused-vars -setOnSetGetEnv((reset) => { +setOnSetGetEnv((_reset) => { // @@ON_SET_GET_ENV@@ }); diff --git a/packages/astro/test/0-css.test.js b/packages/astro/test/0-css.test.js index a582f9e71..65010f580 100644 --- a/packages/astro/test/0-css.test.js +++ b/packages/astro/test/0-css.test.js @@ -75,7 +75,7 @@ describe('CSS', function () { assert.equal($('#no-scope').attr('class'), undefined); }); - it('Child inheritance', (t, done) => { + it('Child inheritance', (_t, done) => { for (const [key] of Object.entries($('#passed-in')[0].attribs)) { if (/^data-astro-cid-[A-Za-z\d-]+/.test(key)) { done(); diff --git a/packages/astro/test/alias-tsconfig-baseurl-only.test.js b/packages/astro/test/alias-tsconfig-baseurl-only.test.js index 20c2884cc..ecf1dea24 100644 --- a/packages/astro/test/alias-tsconfig-baseurl-only.test.js +++ b/packages/astro/test/alias-tsconfig-baseurl-only.test.js @@ -13,7 +13,7 @@ describe('Aliases with tsconfig.json - baseUrl only', () => { function getLinks(html) { let $ = cheerio.load(html); let out = []; - $('link[rel=stylesheet]').each((i, el) => { + $('link[rel=stylesheet]').each((_i, el) => { out.push($(el).attr('href')); }); return out; diff --git a/packages/astro/test/alias-tsconfig.test.js b/packages/astro/test/alias-tsconfig.test.js index 86853baf2..958251dda 100644 --- a/packages/astro/test/alias-tsconfig.test.js +++ b/packages/astro/test/alias-tsconfig.test.js @@ -13,7 +13,7 @@ describe('Aliases with tsconfig.json', () => { function getLinks(html) { let $ = cheerio.load(html); let out = []; - $('link[rel=stylesheet]').each((i, el) => { + $('link[rel=stylesheet]').each((_i, el) => { out.push($(el).attr('href')); }); return out; diff --git a/packages/astro/test/astro-assets-prefix-multi-cdn.test.js b/packages/astro/test/astro-assets-prefix-multi-cdn.test.js index 9dbf259b2..52db4225f 100644 --- a/packages/astro/test/astro-assets-prefix-multi-cdn.test.js +++ b/packages/astro/test/astro-assets-prefix-multi-cdn.test.js @@ -31,7 +31,7 @@ describe('Assets Prefix Multiple CDN - Static', () => { const html = await fixture.readFile('/index.html'); const $ = cheerio.load(html); const stylesheets = $('link[rel="stylesheet"]'); - stylesheets.each((i, el) => { + stylesheets.each((_i, el) => { assert.match(el.attribs.href, cssAssetsPrefixRegex); }); }); @@ -62,7 +62,7 @@ describe('Assets Prefix Multiple CDN - Static', () => { const html = await fixture.readFile('/markdown/index.html'); const $ = cheerio.load(html); const imgAssets = $('img'); - imgAssets.each((i, el) => { + imgAssets.each((_i, el) => { assert.match(el.attribs.src, defaultAssetsPrefixRegex); }); }); @@ -98,7 +98,7 @@ describe('Assets Prefix Multiple CDN, server', () => { const html = await response.text(); const $ = cheerio.load(html); const stylesheets = $('link[rel="stylesheet"]'); - stylesheets.each((i, el) => { + stylesheets.each((_i, el) => { assert.match(el.attribs.href, cssAssetsPrefixRegex); }); }); diff --git a/packages/astro/test/astro-assets-prefix.test.js b/packages/astro/test/astro-assets-prefix.test.js index 141adf1c1..739efefef 100644 --- a/packages/astro/test/astro-assets-prefix.test.js +++ b/packages/astro/test/astro-assets-prefix.test.js @@ -23,7 +23,7 @@ describe('Assets Prefix - Static', () => { const html = await fixture.readFile('/index.html'); const $ = cheerio.load(html); const stylesheets = $('link[rel="stylesheet"]'); - stylesheets.each((i, el) => { + stylesheets.each((_i, el) => { assert.match(el.attribs.href, assetsPrefixRegex); }); }); @@ -54,7 +54,7 @@ describe('Assets Prefix - Static', () => { const html = await fixture.readFile('/markdown/index.html'); const $ = cheerio.load(html); const imgAssets = $('img'); - imgAssets.each((i, el) => { + imgAssets.each((_i, el) => { assert.match(el.attribs.src, assetsPrefixRegex); }); }); @@ -85,7 +85,7 @@ describe('Assets Prefix - with path prefix', () => { const html = await fixture.readFile('/index.html'); const $ = cheerio.load(html); const stylesheets = $('link[rel="stylesheet"]'); - stylesheets.each((i, el) => { + stylesheets.each((_i, el) => { assert.match(el.attribs.href, /^\/starting-slash\/.*/); }); }); @@ -112,7 +112,7 @@ describe('Assets Prefix, server', () => { const html = await response.text(); const $ = cheerio.load(html); const stylesheets = $('link[rel="stylesheet"]'); - stylesheets.each((i, el) => { + stylesheets.each((_i, el) => { assert.match(el.attribs.href, assetsPrefixRegex); }); }); @@ -173,7 +173,7 @@ describe('Assets Prefix, with path prefix', () => { const html = await response.text(); const $ = cheerio.load(html); const stylesheets = $('link[rel="stylesheet"]'); - stylesheets.each((i, el) => { + stylesheets.each((_i, el) => { assert.match(el.attribs.href, /^\/starting-slash\/.*/); }); }); diff --git a/packages/astro/test/astro-component-code.test.js b/packages/astro/test/astro-component-code.test.js index b6f08ac57..adb77a33a 100644 --- a/packages/astro/test/astro-component-code.test.js +++ b/packages/astro/test/astro-component-code.test.js @@ -85,7 +85,7 @@ describe('<Code>', () => { assert.equal($('pre').attr('class'), 'astro-code css-variables'); assert.deepEqual( $('pre, pre span') - .map((i, f) => (f.attribs ? f.attribs.style : 'no style found')) + .map((_i, f) => (f.attribs ? f.attribs.style : 'no style found')) .toArray(), [ 'background-color:var(--astro-code-background);color:var(--astro-code-foreground); overflow-x: auto;', diff --git a/packages/astro/test/astro-dev-http2.test.js b/packages/astro/test/astro-dev-http2.test.js index 10521b8cb..a4ea53b3e 100644 --- a/packages/astro/test/astro-dev-http2.test.js +++ b/packages/astro/test/astro-dev-http2.test.js @@ -23,7 +23,6 @@ describe('Astro HTTP/2 support', () => { const result = await fixture.fetch('/'); assert.equal(result.status, 200); const html = await result.text(); - console.log(result.headers); const $ = cheerio.load(html); const urlString = $('main').text(); assert.equal(Boolean(urlString), true); diff --git a/packages/astro/test/astro-scripts.test.js b/packages/astro/test/astro-scripts.test.js index 38b7bd4ff..528a147cb 100644 --- a/packages/astro/test/astro-scripts.test.js +++ b/packages/astro/test/astro-scripts.test.js @@ -138,7 +138,7 @@ describe('Scripts', () => { let found = 0; let moduleScripts = $('[type=module]'); - moduleScripts.each((i, el) => { + moduleScripts.each((_i, el) => { if ( $(el).attr('src').includes('Glob/GlobComponent.astro?astro&type=script&index=0&lang.ts') ) { @@ -154,7 +154,7 @@ describe('Scripts', () => { let $ = cheerio.load(html); let found = 0; let moduleScripts = $('[type=module]'); - moduleScripts.each((i, el) => { + moduleScripts.each((_i, el) => { if ($(el).attr('src').includes('?astro&type=script&index=0&lang.ts')) { found++; } @@ -168,7 +168,7 @@ describe('Scripts', () => { let $ = cheerio.load(html); let found = 0; let moduleScripts = $('[type=module]'); - moduleScripts.each((i, el) => { + moduleScripts.each((_i, el) => { if ($(el).attr('src').includes('@id/astro:scripts/page.js')) { found++; } diff --git a/packages/astro/test/client-address-node.test.js b/packages/astro/test/client-address-node.test.js index 8114ea42d..2cc582ac1 100644 --- a/packages/astro/test/client-address-node.test.js +++ b/packages/astro/test/client-address-node.test.js @@ -5,23 +5,47 @@ import { loadFixture } from './test-utils.js'; import { createRequestAndResponse } from './units/test-utils.js'; describe('NodeClientAddress', () => { - it('clientAddress is 1.1.1.1', async () => { - const fixture = await loadFixture({ - root: './fixtures/client-address-node/', + describe('single value', () => { + it('clientAddress is 1.1.1.1', async () => { + const fixture = await loadFixture({ + root: './fixtures/client-address-node/', + }); + await fixture.build(); + const handle = await fixture.loadNodeAdapterHandler(); + const { req, res, text } = createRequestAndResponse({ + method: 'GET', + url: '/', + headers: { + 'x-forwarded-for': '1.1.1.1', + }, + }); + handle(req, res); + const html = await text(); + const $ = cheerio.load(html); + assert.equal(res.statusCode, 200); + assert.equal($('#address').text(), '1.1.1.1'); }); - await fixture.build(); - const handle = await fixture.loadNodeAdapterHandler(); - const { req, res, text } = createRequestAndResponse({ - method: 'GET', - url: '/', - headers: { - 'x-forwarded-for': '1.1.1.1', - }, + }); + + describe('multiple values', () => { + it('clientAddress is 1.1.1.1', async () => { + const fixture = await loadFixture({ + root: './fixtures/client-address-node/', + }); + await fixture.build(); + const handle = await fixture.loadNodeAdapterHandler(); + const { req, res, text } = createRequestAndResponse({ + method: 'GET', + url: '/', + headers: { + 'x-forwarded-for': '1.1.1.1,8.8.8.8, 8.8.8.2', + }, + }); + handle(req, res); + const html = await text(); + const $ = cheerio.load(html); + assert.equal(res.statusCode, 200); + assert.equal($('#address').text(), '1.1.1.1'); }); - handle(req, res); - const html = await text(); - const $ = cheerio.load(html); - assert.equal(res.statusCode, 200); - assert.equal($('#address').text(), '1.1.1.1'); }); }); diff --git a/packages/astro/test/content-layer.test.js b/packages/astro/test/content-layer.test.js index 5d89e82d8..7353c2384 100644 --- a/packages/astro/test/content-layer.test.js +++ b/packages/astro/test/content-layer.test.js @@ -228,7 +228,6 @@ describe('Content Layer', () => { }); it('handles remote images in custom loaders', async () => { - console.log(json.images[1].data.image); assert.ok(json.images[1].data.image.startsWith('https://')); }); diff --git a/packages/astro/test/core-image.test.js b/packages/astro/test/core-image.test.js index 9c3602961..04b741a69 100644 --- a/packages/astro/test/core-image.test.js +++ b/packages/astro/test/core-image.test.js @@ -562,7 +562,7 @@ describe('astro:image', () => { it('has proper sources for array of images', () => { let $img = $('#array-of-images img'); const imgsSrcs = []; - $img.each((i, img) => imgsSrcs.push(img.attribs['src'])); + $img.each((_i, img) => imgsSrcs.push(img.attribs['src'])); assert.equal($img.length, 2); assert.equal( imgsSrcs.every((img) => img.startsWith('/')), diff --git a/packages/astro/test/css-order-import.test.js b/packages/astro/test/css-order-import.test.js index 05b061499..f8a9cf5b2 100644 --- a/packages/astro/test/css-order-import.test.js +++ b/packages/astro/test/css-order-import.test.js @@ -22,7 +22,7 @@ describe('CSS ordering - import order', () => { function getLinks(html) { let $ = cheerio.load(html); let out = []; - $('link[rel=stylesheet]').each((i, el) => { + $('link[rel=stylesheet]').each((_i, el) => { out.push($(el).attr('href')); }); return out; @@ -31,7 +31,7 @@ describe('CSS ordering - import order', () => { function getStyles(html) { let $ = cheerio.load(html); let out = []; - $('style').each((i, el) => { + $('style').each((_i, el) => { out.push($(el).text()); }); return out; diff --git a/packages/astro/test/css-order-layout.test.js b/packages/astro/test/css-order-layout.test.js index 1871e812b..c08c5be1c 100644 --- a/packages/astro/test/css-order-layout.test.js +++ b/packages/astro/test/css-order-layout.test.js @@ -22,7 +22,7 @@ describe('CSS ordering - import order with layouts', () => { function getLinks(html) { let $ = cheerio.load(html); let out = []; - $('link[rel=stylesheet]').each((i, el) => { + $('link[rel=stylesheet]').each((_i, el) => { out.push($(el).attr('href')); }); return out; diff --git a/packages/astro/test/css-order.test.js b/packages/astro/test/css-order.test.js index e839ef744..46bacd0f8 100644 --- a/packages/astro/test/css-order.test.js +++ b/packages/astro/test/css-order.test.js @@ -8,7 +8,7 @@ describe('CSS production ordering', () => { function getLinks(html) { let $ = cheerio.load(html); let out = []; - $('link[rel=stylesheet]').each((i, el) => { + $('link[rel=stylesheet]').each((_i, el) => { out.push($(el).attr('href')); }); return out; diff --git a/packages/astro/test/fixtures/i18n-routing/astro.config.mjs b/packages/astro/test/fixtures/i18n-routing/astro.config.mjs index 8868d2b1f..8d9a83e8d 100644 --- a/packages/astro/test/fixtures/i18n-routing/astro.config.mjs +++ b/packages/astro/test/fixtures/i18n-routing/astro.config.mjs @@ -2,7 +2,7 @@ import { defineConfig} from "astro/config"; export default defineConfig({ i18n: { - defaultLocale: 'en', + defaultLocale: 'spanish', locales: [ 'en', 'pt', diff --git a/packages/astro/test/i18n-routing.test.js b/packages/astro/test/i18n-routing.test.js index 9b642f342..39ae3d4b8 100644 --- a/packages/astro/test/i18n-routing.test.js +++ b/packages/astro/test/i18n-routing.test.js @@ -1106,7 +1106,7 @@ describe('[SSG] i18n routing', () => { it('should return the default locale', async () => { const html = await fixture.readFile('/current-locale/index.html'); - assert.equal(html.includes('Current Locale: en'), true); + assert.equal(html.includes('Current Locale: es'), true); }); it('should return the default locale when rendering a route with spread operator', async () => { @@ -1121,7 +1121,7 @@ describe('[SSG] i18n routing', () => { it('should return the default locale when a route is dynamic', async () => { const html = await fixture.readFile('/dynamic/lorem/index.html'); - assert.equal(html.includes('Current Locale: en'), true); + assert.equal(html.includes('Current Locale: es'), true); }); it('should returns the correct locale when requesting a locale via path', async () => { @@ -1693,7 +1693,7 @@ describe('[SSR] i18n routing', () => { let request = new Request('http://example.com/current-locale', {}); let response = await app.render(request); assert.equal(response.status, 200); - assert.equal((await response.text()).includes('Current Locale: en'), true); + assert.equal((await response.text()).includes('Current Locale: es'), true); }); it('should return the default locale when rendering a route with spread operator', async () => { @@ -1714,7 +1714,7 @@ describe('[SSR] i18n routing', () => { let request = new Request('http://example.com/dynamic/lorem', {}); let response = await app.render(request); assert.equal(response.status, 200); - assert.equal((await response.text()).includes('Current Locale: en'), true); + assert.equal((await response.text()).includes('Current Locale: es'), true); }); }); diff --git a/packages/astro/test/page-format.test.js b/packages/astro/test/page-format.test.js index d6b98b4f7..3b12a79b1 100644 --- a/packages/astro/test/page-format.test.js +++ b/packages/astro/test/page-format.test.js @@ -73,7 +73,6 @@ describe('build.format', () => { it('Astro.url points to right file', async () => { let html = await fixture.readFile('/nested/index.html'); let $ = cheerio.load(html); - console.log(html); assert.equal($('h2').text(), '/test/nested/'); }); }); diff --git a/packages/astro/test/rewrite.test.js b/packages/astro/test/rewrite.test.js index 26cdac5c0..273e11d07 100644 --- a/packages/astro/test/rewrite.test.js +++ b/packages/astro/test/rewrite.test.js @@ -331,8 +331,6 @@ describe('SSR rewrite, hybrid/server', () => { const html = await response.text(); const $ = cheerioLoad(html); - console.log(html); - assert.match($('h1').text(), /Title/); assert.match($('p').text(), /some-slug/); }); diff --git a/packages/astro/test/ssr-dynamic.test.js b/packages/astro/test/ssr-dynamic.test.js index b532ac929..dc9037bb6 100644 --- a/packages/astro/test/ssr-dynamic.test.js +++ b/packages/astro/test/ssr-dynamic.test.js @@ -29,7 +29,6 @@ describe('Dynamic pages in SSR', () => { const entrypoint = fileURLToPath( new URL(`${root}.astro/test.astro`, import.meta.url), ); - console.log(entrypoint); mkdirSync(dirname(entrypoint), { recursive: true }); writeFileSync(entrypoint, '<h1>Index</h1>'); diff --git a/packages/astro/test/types/call-action.ts b/packages/astro/test/types/call-action.ts index 6d4019d38..e1f282d10 100644 --- a/packages/astro/test/types/call-action.ts +++ b/packages/astro/test/types/call-action.ts @@ -15,7 +15,6 @@ describe('Astro.callAction', () => { return { name }; }, }); - // eslint-disable-next-line @typescript-eslint/no-unused-vars const result = await context.callAction(action, { name: 'Ben' }); expectTypeOf<typeof result>().toEqualTypeOf<ActionReturnType<typeof action>>(); }); @@ -31,7 +30,6 @@ describe('Astro.callAction', () => { return { name }; }, }); - // eslint-disable-next-line @typescript-eslint/no-unused-vars const result = await context.callAction(action, new FormData()); expectTypeOf<typeof result>().toEqualTypeOf<ActionReturnType<typeof action>>(); }); @@ -47,7 +45,6 @@ describe('Astro.callAction', () => { return { name }; }, }); - // eslint-disable-next-line @typescript-eslint/no-unused-vars const result = await context.callAction(action.orThrow, new FormData()); expectTypeOf<typeof result>().toEqualTypeOf<ActionReturnType<(typeof action)['orThrow']>>(); }); diff --git a/packages/astro/test/units/app/node.test.js b/packages/astro/test/units/app/node.test.js new file mode 100644 index 000000000..d11a0a8aa --- /dev/null +++ b/packages/astro/test/units/app/node.test.js @@ -0,0 +1,174 @@ +import * as assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; +import { NodeApp } from '../../../dist/core/app/node.js'; + +const mockNodeRequest = { + url: '/', + method: 'GET', + headers: { + host: 'example.com', + }, + socket: { + encrypted: true, + remoteAddress: '2.2.2.2', + }, +}; + +describe('NodeApp', () => { + describe('createRequest', () => { + describe('x-forwarded-for', () => { + it('parses client IP from single-value x-forwarded-for header', () => { + const result = NodeApp.createRequest({ + ...mockNodeRequest, + headers: { + 'x-forwarded-for': '1.1.1.1', + }, + }); + assert.equal(result[Symbol.for('astro.clientAddress')], '1.1.1.1'); + }); + + it('parses client IP from multi-value x-forwarded-for header', () => { + const result = NodeApp.createRequest({ + ...mockNodeRequest, + headers: { + 'x-forwarded-for': '1.1.1.1,8.8.8.8', + }, + }); + assert.equal(result[Symbol.for('astro.clientAddress')], '1.1.1.1'); + }); + + it('parses client IP from multi-value x-forwarded-for header with spaces', () => { + const result = NodeApp.createRequest({ + ...mockNodeRequest, + headers: { + 'x-forwarded-for': ' 1.1.1.1, 8.8.8.8, 8.8.8.2', + }, + }); + assert.equal(result[Symbol.for('astro.clientAddress')], '1.1.1.1'); + }); + + it('fallbacks to remoteAddress when no x-forwarded-for header is present', () => { + const result = NodeApp.createRequest({ + ...mockNodeRequest, + headers: {}, + }); + assert.equal(result[Symbol.for('astro.clientAddress')], '2.2.2.2'); + }); + }); + + describe('x-forwarded-host', () => { + it('parses host from single-value x-forwarded-host header', () => { + const result = NodeApp.createRequest({ + ...mockNodeRequest, + headers: { + 'x-forwarded-host': 'www2.example.com', + }, + }); + assert.equal(result.url, 'https://www2.example.com/'); + }); + + it('parses host from multi-value x-forwarded-host header', () => { + const result = NodeApp.createRequest({ + ...mockNodeRequest, + headers: { + 'x-forwarded-host': 'www2.example.com,www3.example.com', + }, + }); + assert.equal(result.url, 'https://www2.example.com/'); + }); + + it('fallbacks to host header when no x-forwarded-host header is present', () => { + const result = NodeApp.createRequest({ + ...mockNodeRequest, + headers: { + host: 'example.com', + }, + }); + assert.equal(result.url, 'https://example.com/'); + }); + }); + + describe('x-forwarded-proto', () => { + it('parses protocol from single-value x-forwarded-proto header', () => { + const result = NodeApp.createRequest({ + ...mockNodeRequest, + headers: { + host: 'example.com', + 'x-forwarded-proto': 'http', + 'x-forwarded-port': '80', + }, + }); + assert.equal(result.url, 'http://example.com/'); + }); + + it('parses protocol from multi-value x-forwarded-proto header', () => { + const result = NodeApp.createRequest({ + ...mockNodeRequest, + headers: { + host: 'example.com', + 'x-forwarded-proto': 'http,https', + 'x-forwarded-port': '80,443', + }, + }); + assert.equal(result.url, 'http://example.com/'); + }); + + it('fallbacks to encrypted property when no x-forwarded-proto header is present', () => { + const result = NodeApp.createRequest({ + ...mockNodeRequest, + headers: { + host: 'example.com', + }, + }); + assert.equal(result.url, 'https://example.com/'); + }); + }); + + describe('x-forwarded-port', () => { + it('parses port from single-value x-forwarded-port header', () => { + const result = NodeApp.createRequest({ + ...mockNodeRequest, + headers: { + host: 'example.com', + 'x-forwarded-port': '8443', + }, + }); + assert.equal(result.url, 'https://example.com:8443/'); + }); + + it('parses port from multi-value x-forwarded-port header', () => { + const result = NodeApp.createRequest({ + ...mockNodeRequest, + headers: { + host: 'example.com', + 'x-forwarded-port': '8443,3000', + }, + }); + assert.equal(result.url, 'https://example.com:8443/'); + }); + + it('prefers port from host', () => { + const result = NodeApp.createRequest({ + ...mockNodeRequest, + headers: { + host: 'example.com:3000', + 'x-forwarded-port': '443', + }, + }); + assert.equal(result.url, 'https://example.com:3000/'); + }); + + it('prefers port from x-forwarded-host', () => { + const result = NodeApp.createRequest({ + ...mockNodeRequest, + headers: { + host: 'example.com:443', + 'x-forwarded-host': 'example.com:3000', + 'x-forwarded-port': '443', + }, + }); + assert.equal(result.url, 'https://example.com:3000/'); + }); + }); + }); +}); diff --git a/packages/astro/test/vue-component.test.js b/packages/astro/test/vue-component.test.js index c7770281f..afb0f604d 100644 --- a/packages/astro/test/vue-component.test.js +++ b/packages/astro/test/vue-component.test.js @@ -34,7 +34,7 @@ describe.skip('Vue component build', { todo: 'This test currently times out, inv assert.equal($('my-button').length, 7); // test 5: components with identical render output and props have been deduplicated - const uniqueRootUIDs = $('astro-island').map((i, el) => $(el).attr('uid')); + const uniqueRootUIDs = $('astro-island').map((_i, el) => $(el).attr('uid')); assert.equal(new Set(uniqueRootUIDs).size, 5); // test 6: import public files work diff --git a/packages/create-astro/CHANGELOG.md b/packages/create-astro/CHANGELOG.md index 59f6ab93f..2238bc056 100644 --- a/packages/create-astro/CHANGELOG.md +++ b/packages/create-astro/CHANGELOG.md @@ -1,5 +1,11 @@ # create-astro +## 4.9.2 + +### Patch Changes + +- [#12143](https://github.com/withastro/astro/pull/12143) [`2385d58`](https://github.com/withastro/astro/commit/2385d58389ee975a53f4089f2a7220d97cf3cdff) Thanks [@bluwy](https://github.com/bluwy)! - Uses `@bluwy/giget-core` instead of `giget` for smaller installation size when downloading the CLI + ## 4.9.1 ### Patch Changes diff --git a/packages/create-astro/create-astro.mjs b/packages/create-astro/create-astro.mjs index f9df779d8..5e25e5e94 100755 --- a/packages/create-astro/create-astro.mjs +++ b/packages/create-astro/create-astro.mjs @@ -1,5 +1,5 @@ #!/usr/bin/env node -/* eslint-disable no-console */ + 'use strict'; const currentVersion = process.versions.node; diff --git a/packages/create-astro/package.json b/packages/create-astro/package.json index 35f29e83c..f7aaa96a1 100644 --- a/packages/create-astro/package.json +++ b/packages/create-astro/package.json @@ -1,6 +1,6 @@ { "name": "create-astro", - "version": "4.9.1", + "version": "4.9.2", "type": "module", "author": "withastro", "license": "MIT", @@ -32,7 +32,7 @@ "//b": "DEPENDENCIES IS FOR UNBUNDLED PACKAGES", "dependencies": { "@astrojs/cli-kit": "^0.4.1", - "giget": "1.2.3" + "@bluwy/giget-core": "^0.1.0" }, "devDependencies": { "arg": "^5.0.2", diff --git a/packages/create-astro/src/actions/template.ts b/packages/create-astro/src/actions/template.ts index d67b54ee0..e1775ee51 100644 --- a/packages/create-astro/src/actions/template.ts +++ b/packages/create-astro/src/actions/template.ts @@ -3,7 +3,7 @@ import type { Context } from './context.js'; import fs from 'node:fs'; import path from 'node:path'; import { color } from '@astrojs/cli-kit'; -import { downloadTemplate } from 'giget'; +import { downloadTemplate } from '@bluwy/giget-core'; import { error, info, title } from '../messages.js'; export async function template( @@ -125,14 +125,6 @@ export default async function copyTemplate(tmpl: string, ctx: Context) { throw new Error(`Unable to download template ${color.reset(tmpl)}`); } - // It's possible the repo exists (ex. `withastro/astro`), - // But the template route is invalid (ex. `withastro/astro/examples/DNE`). - // `giget` doesn't throw for this case, - // so check if the directory is still empty as a heuristic. - if (fs.readdirSync(ctx.cwd).length === 0) { - throw new Error(`Template ${color.reset(tmpl)} ${color.dim('is empty!')}`); - } - // Post-process in parallel const removeFiles = FILES_TO_REMOVE.map(async (file) => { const fileLoc = path.resolve(path.join(ctx.cwd, file)); diff --git a/packages/create-astro/src/actions/verify.ts b/packages/create-astro/src/actions/verify.ts index e620a9ca8..7f446c869 100644 --- a/packages/create-astro/src/actions/verify.ts +++ b/packages/create-astro/src/actions/verify.ts @@ -2,6 +2,7 @@ import type { Context } from './context.js'; import dns from 'node:dns/promises'; import { color } from '@astrojs/cli-kit'; +import { verifyTemplate } from '@bluwy/giget-core'; import { bannerAbort, error, info, log } from '../messages.js'; import { getTemplateTarget } from './template.js'; @@ -19,7 +20,8 @@ export async function verify( } if (ctx.template) { - const ok = await verifyTemplate(ctx.template, ctx.ref); + const target = getTemplateTarget(ctx.template, ctx.ref); + const ok = await verifyTemplate(target); if (!ok) { bannerAbort(); log(''); @@ -36,59 +38,3 @@ function isOnline(): Promise<boolean> { () => false, ); } - -async function verifyTemplate(tmpl: string, ref?: string) { - const target = getTemplateTarget(tmpl, ref); - const { repo, subdir, ref: branch } = parseGitURI(target.replace('github:', '')); - const url = new URL(`/repos/${repo}/contents${subdir}?ref=${branch}`, 'https://api.github.com/'); - - let res = await fetch(url.toString(), { - headers: { - Accept: 'application/vnd.github+json', - 'X-GitHub-Api-Version': '2022-11-28', - }, - }); - - // If users hit a ratelimit, fallback to the GitHub website - if (res.status === 403) { - res = await fetch(`https://github.com/${repo}/tree/${branch}${subdir}`); - } - - return res.status === 200; -} - -// Adapted from https://github.com/unjs/giget/blob/main/src/_utils.ts -// MIT License - -// Copyright (c) Pooya Parsa <pooya@pi0.io> - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// Disable eslint rule to not touch the original code -// eslint-disable-next-line regexp/no-misleading-capturing-group -const GIT_RE = /^(?<repo>[\w.-]+\/[\w.-]+)(?<subdir>[^#]+)?(?<ref>#[\w.-]+)?/; - -function parseGitURI(input: string) { - const m = GIT_RE.exec(input)?.groups; - if (!m) throw new Error(`Unable to parse "${input}"`); - return { - repo: m.repo, - subdir: m.subdir || '/', - ref: m.ref ? m.ref.slice(1) : 'main', - }; -} diff --git a/packages/create-astro/src/index.ts b/packages/create-astro/src/index.ts index 9f2a50a8b..fdd0aa32c 100644 --- a/packages/create-astro/src/index.ts +++ b/packages/create-astro/src/index.ts @@ -18,7 +18,7 @@ process.on('SIGTERM', exit); export async function main() { // Add some extra spacing from the noisy npm/pnpm init output - // eslint-disable-next-line no-console + // biome-ignore lint/suspicious/noConsoleLog: allowed console.log(''); // NOTE: In the v7.x version of npm, the default behavior of `npm init` was changed // to no longer require `--` to pass args and instead pass `--` directly to us. This @@ -47,7 +47,7 @@ export async function main() { await step(ctx); } - // eslint-disable-next-line no-console + // biome-ignore lint/suspicious/noConsoleLog: allowed console.log(''); const labels = { diff --git a/packages/db/src/core/integration/index.ts b/packages/db/src/core/integration/index.ts index b51f98661..b96765870 100644 --- a/packages/db/src/core/integration/index.ts +++ b/packages/db/src/core/integration/index.ts @@ -135,7 +135,7 @@ function astroDBIntegration(): AstroIntegration { ...CONFIG_FILE_NAMES.map((c) => new URL(c, getDbDirectoryUrl(root))), ...configFileDependencies.map((c) => new URL(c, root)), ]; - server.watcher.on('all', (event, relativeEntry) => { + server.watcher.on('all', (_event, relativeEntry) => { const entry = new URL(relativeEntry, root); if (filesToWatch.some((f) => entry.href === f.href)) { server.restart(); diff --git a/packages/db/src/core/queries.ts b/packages/db/src/core/queries.ts index cf472d423..e77578ac2 100644 --- a/packages/db/src/core/queries.ts +++ b/packages/db/src/core/queries.ts @@ -191,7 +191,7 @@ function getDefaultValueSql(columnName: string, column: DBColumnWithDefault): st try { stringified = JSON.stringify(column.schema.default); } catch { - // eslint-disable-next-line no-console + // biome-ignore lint/suspicious/noConsoleLog: allowed console.log( `Invalid default value for column ${bold( columnName, diff --git a/packages/db/test/integrations.test.js b/packages/db/test/integrations.test.js index fb68d20f4..b05b28d6a 100644 --- a/packages/db/test/integrations.test.js +++ b/packages/db/test/integrations.test.js @@ -15,7 +15,6 @@ describe('astro:db with integrations', () => { let devServer; before(async () => { - console.log('starting dev server'); devServer = await fixture.startDevServer(); }); diff --git a/packages/integrations/markdoc/CHANGELOG.md b/packages/integrations/markdoc/CHANGELOG.md index 6ec83efbc..978f2ba91 100644 --- a/packages/integrations/markdoc/CHANGELOG.md +++ b/packages/integrations/markdoc/CHANGELOG.md @@ -33,6 +33,13 @@ - astro@5.0.0-alpha.0 - @astrojs/markdown-remark@6.0.0-alpha.0 +## 0.11.5 + +### Patch Changes + +- Updated dependencies [[`710a1a1`](https://github.com/withastro/astro/commit/710a1a11f488ff6ed3da6d3e0723b2322ccfe27b)]: + - @astrojs/markdown-remark@5.3.0 + ## 0.11.4 ### Patch Changes diff --git a/packages/integrations/markdoc/package.json b/packages/integrations/markdoc/package.json index 80ea22a0d..ddbe2b55e 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.11.5-beta.1", + "version": "0.12.0-beta.0", "type": "module", "types": "./dist/index.d.ts", "author": "withastro", diff --git a/packages/integrations/markdoc/src/index.ts b/packages/integrations/markdoc/src/index.ts index dfc4ebe37..d328d4a8d 100644 --- a/packages/integrations/markdoc/src/index.ts +++ b/packages/integrations/markdoc/src/index.ts @@ -38,7 +38,7 @@ export default function markdocIntegration(options?: MarkdocIntegrationOptions): }); }, 'astro:server:setup': async ({ server }) => { - server.watcher.on('all', (event, entry) => { + server.watcher.on('all', (_event, entry) => { if (SUPPORTED_MARKDOC_CONFIG_FILES.some((f) => entry.endsWith(f))) { server.restart(); } diff --git a/packages/integrations/mdx/CHANGELOG.md b/packages/integrations/mdx/CHANGELOG.md index 5a07363e4..b15b97308 100644 --- a/packages/integrations/mdx/CHANGELOG.md +++ b/packages/integrations/mdx/CHANGELOG.md @@ -1,29 +1,5 @@ # @astrojs/mdx -## 4.0.0-beta.2 - -### Patch Changes - -- [#12075](https://github.com/withastro/astro/pull/12075) [`a19530e`](https://github.com/withastro/astro/commit/a19530e377b7d7afad58a33b23c0a5df1c376819) Thanks [@bluwy](https://github.com/bluwy)! - Parses frontmatter ourselves - -- Updated dependencies [[`a19530e`](https://github.com/withastro/astro/commit/a19530e377b7d7afad58a33b23c0a5df1c376819)]: - - @astrojs/markdown-remark@6.0.0-beta.2 - -## 4.0.0-beta.1 - -### Major Changes - -- [#12008](https://github.com/withastro/astro/pull/12008) [`5608338`](https://github.com/withastro/astro/commit/560833843c6d3ce2b6c6c473ec4ae70e744bf255) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Welcome to the Astro 5 beta! This release has no changes from the latest alpha of this package, but it does bring us one step closer to the final, stable release. - - Starting from this release, no breaking changes will be introduced unless absolutely necessary. - - To learn how to upgrade, check out the [Astro v5.0 upgrade guide in our beta docs site](https://5-0-0-beta.docs.astro.build/en/guides/upgrade-to/v5/). - -### Patch Changes - -- Updated dependencies [[`5608338`](https://github.com/withastro/astro/commit/560833843c6d3ce2b6c6c473ec4ae70e744bf255)]: - - @astrojs/markdown-remark@6.0.0-beta.1 - ## 4.0.0-alpha.2 ### Patch Changes @@ -47,6 +23,13 @@ - astro@5.0.0-alpha.0 - @astrojs/markdown-remark@6.0.0-alpha.0 +## 3.1.8 + +### Patch Changes + +- Updated dependencies [[`710a1a1`](https://github.com/withastro/astro/commit/710a1a11f488ff6ed3da6d3e0723b2322ccfe27b)]: + - @astrojs/markdown-remark@5.3.0 + ## 3.1.7 ### Patch Changes diff --git a/packages/integrations/partytown/src/sirv.ts b/packages/integrations/partytown/src/sirv.ts index 9dc8f74a0..f0ae94026 100644 --- a/packages/integrations/partytown/src/sirv.ts +++ b/packages/integrations/partytown/src/sirv.ts @@ -89,7 +89,7 @@ function viaLocal(dir, isEtag, uri, extns) { } } -function is404(req, res) { +function is404(_req, res) { return (res.statusCode = 404), res.end(); } diff --git a/packages/integrations/react/test/react-component.test.js b/packages/integrations/react/test/react-component.test.js index 25a35f49d..fbe88d65f 100644 --- a/packages/integrations/react/test/react-component.test.js +++ b/packages/integrations/react/test/react-component.test.js @@ -46,7 +46,7 @@ describe('React Components', () => { assert.equal($('astro-island[uid]').length, 9); // test 9: Check island deduplication - const uniqueRootUIDs = new Set($('astro-island').map((i, el) => $(el).attr('uid'))); + const uniqueRootUIDs = new Set($('astro-island').map((_i, el) => $(el).attr('uid'))); assert.equal(uniqueRootUIDs.size, 8); // test 10: Should properly render children passed as props diff --git a/packages/integrations/tailwind/CHANGELOG.md b/packages/integrations/tailwind/CHANGELOG.md index c2985edef..0fe76096e 100644 --- a/packages/integrations/tailwind/CHANGELOG.md +++ b/packages/integrations/tailwind/CHANGELOG.md @@ -7,6 +7,19 @@ - Updated dependencies [[`b6fbdaa`](https://github.com/withastro/astro/commit/b6fbdaa94a9ecec706a99e1938fbf5cd028c72e0), [`89bab1e`](https://github.com/withastro/astro/commit/89bab1e70786123fbe933a9d7a1b80c9334dcc5f), [`d74617c`](https://github.com/withastro/astro/commit/d74617cbd3278feba05909ec83db2d73d57a153e), [`e90f559`](https://github.com/withastro/astro/commit/e90f5593d23043579611452a84b9e18ad2407ef9), [`2df49a6`](https://github.com/withastro/astro/commit/2df49a6fb4f6d92fe45f7429430abe63defeacd6), [`8a53517`](https://github.com/withastro/astro/commit/8a5351737d6a14fc55f1dafad8f3b04079e81af6)]: - astro@5.0.0-alpha.0 +## 5.1.2 + +### Patch Changes + +- [#12161](https://github.com/withastro/astro/pull/12161) [`8e500f2`](https://github.com/withastro/astro/commit/8e500f2f9656a98e4a14ef567f9bf072459f62c4) Thanks [@delucis](https://github.com/delucis)! - Adds keywords to `package.json` to improve categorization in the Astro integrations catalog + +## 6.0.0-alpha.0 + +### Patch Changes + +- Updated dependencies [[`b6fbdaa`](https://github.com/withastro/astro/commit/b6fbdaa94a9ecec706a99e1938fbf5cd028c72e0), [`89bab1e`](https://github.com/withastro/astro/commit/89bab1e70786123fbe933a9d7a1b80c9334dcc5f), [`d74617c`](https://github.com/withastro/astro/commit/d74617cbd3278feba05909ec83db2d73d57a153e), [`e90f559`](https://github.com/withastro/astro/commit/e90f5593d23043579611452a84b9e18ad2407ef9), [`2df49a6`](https://github.com/withastro/astro/commit/2df49a6fb4f6d92fe45f7429430abe63defeacd6), [`8a53517`](https://github.com/withastro/astro/commit/8a5351737d6a14fc55f1dafad8f3b04079e81af6)]: + - astro@5.0.0-alpha.0 + ## 5.1.1 ### Patch Changes diff --git a/packages/integrations/tailwind/package.json b/packages/integrations/tailwind/package.json index 7a4795fe2..89fffa5ae 100644 --- a/packages/integrations/tailwind/package.json +++ b/packages/integrations/tailwind/package.json @@ -1,7 +1,7 @@ { "name": "@astrojs/tailwind", "description": "Use Tailwind CSS to style your Astro site", - "version": "5.1.1", + "version": "5.1.2", "type": "module", "types": "./dist/index.d.ts", "author": "withastro", @@ -13,7 +13,9 @@ }, "keywords": [ "astro-integration", - "astro-component" + "withastro", + "css", + "tailwindcss" ], "bugs": "https://github.com/withastro/astro/issues", "homepage": "https://docs.astro.build/en/guides/integrations-guide/tailwind/", diff --git a/packages/markdown/remark/CHANGELOG.md b/packages/markdown/remark/CHANGELOG.md index f69ba23bd..87fe8fcf6 100644 --- a/packages/markdown/remark/CHANGELOG.md +++ b/packages/markdown/remark/CHANGELOG.md @@ -44,6 +44,40 @@ You can perform a global find and replace in your project to migrate to the new token names. +## 5.3.0 + +### Minor Changes + +- [#12039](https://github.com/withastro/astro/pull/12039) [`710a1a1`](https://github.com/withastro/astro/commit/710a1a11f488ff6ed3da6d3e0723b2322ccfe27b) Thanks [@ematipico](https://github.com/ematipico)! - Adds a `markdown.shikiConfig.langAlias` option that allows [aliasing a non-supported code language to a known language](https://shiki.style/guide/load-lang#custom-language-aliases). This is useful when the language of your code samples is not [a built-in Shiki language](https://shiki.style/languages), but you want your Markdown source to contain an accurate language while also displaying syntax highlighting. + + The following example configures Shiki to highlight `cjs` code blocks using the `javascript` syntax highlighter: + + ```js + import { defineConfig } from 'astro/config'; + + export default defineConfig({ + markdown: { + shikiConfig: { + langAlias: { + cjs: 'javascript', + }, + }, + }, + }); + ``` + + Then in your Markdown, you can use the alias as the language for a code block for syntax highlighting: + + ````md + ```cjs + 'use strict'; + + function commonJs() { + return 'I am a commonjs file'; + } + ``` + ```` + ## 5.2.0 ### Minor Changes diff --git a/packages/markdown/remark/src/index.ts b/packages/markdown/remark/src/index.ts index dd7d0444a..de13523fe 100644 --- a/packages/markdown/remark/src/index.ts +++ b/packages/markdown/remark/src/index.ts @@ -43,6 +43,7 @@ export const markdownConfigDefaults: Required<AstroMarkdownOptions> = { themes: {}, wrap: false, transformers: [], + langAlias: {}, }, remarkPlugins: [], rehypePlugins: [], @@ -143,7 +144,6 @@ export async function createMarkdownProcessor( // Ensure that the error message contains the input filename // to make it easier for the user to fix the issue err = prefixError(err, `Failed to parse Markdown file "${vfile.path}"`); - // eslint-disable-next-line no-console console.error(err); throw err; }); diff --git a/packages/markdown/remark/src/rehype-shiki.ts b/packages/markdown/remark/src/rehype-shiki.ts index 9344ddbb9..43b38f095 100644 --- a/packages/markdown/remark/src/rehype-shiki.ts +++ b/packages/markdown/remark/src/rehype-shiki.ts @@ -12,6 +12,7 @@ export const rehypeShiki: Plugin<[ShikiConfig?], Root> = (config) => { langs: config?.langs, theme: config?.theme, themes: config?.themes, + langAlias: config?.langAlias, }); const highlighter = await highlighterAsync; diff --git a/packages/markdown/remark/src/shiki.ts b/packages/markdown/remark/src/shiki.ts index fe46b60c2..ed4daf527 100644 --- a/packages/markdown/remark/src/shiki.ts +++ b/packages/markdown/remark/src/shiki.ts @@ -1,6 +1,7 @@ import type { Properties, Root } from 'hast'; import { type BundledLanguage, + type HighlighterCoreOptions, type LanguageRegistration, type ShikiTransformer, type ThemeRegistration, @@ -28,6 +29,7 @@ export interface CreateShikiHighlighterOptions { langs?: LanguageRegistration[]; theme?: ThemePresets | ThemeRegistration | ThemeRegistrationRaw; themes?: Record<string, ThemePresets | ThemeRegistration | ThemeRegistrationRaw>; + langAlias?: HighlighterCoreOptions['langAlias']; } export interface ShikiHighlighterHighlightOptions { @@ -63,17 +65,21 @@ export interface ShikiHighlighterHighlightOptions { let _cssVariablesTheme: ReturnType<typeof createCssVariablesTheme>; const cssVariablesTheme = () => _cssVariablesTheme ?? - (_cssVariablesTheme = createCssVariablesTheme({ variablePrefix: '--astro-code-' })); + (_cssVariablesTheme = createCssVariablesTheme({ + variablePrefix: '--astro-code-', + })); export async function createShikiHighlighter({ langs = [], theme = 'github-dark', themes = {}, + langAlias = {}, }: CreateShikiHighlighterOptions = {}): Promise<ShikiHighlighter> { theme = theme === 'css-variables' ? cssVariablesTheme() : theme; const highlighter = await createHighlighter({ langs: ['plaintext', ...langs], + langAlias, themes: Object.values(themes).length ? Object.values(themes) : [theme], }); @@ -83,14 +89,16 @@ export async function createShikiHighlighter({ options: ShikiHighlighterHighlightOptions, to: 'hast' | 'html', ) { + const resolvedLang = langAlias[lang] ?? lang; const loadedLanguages = highlighter.getLoadedLanguages(); - if (!isSpecialLang(lang) && !loadedLanguages.includes(lang)) { + if (!isSpecialLang(lang) && !loadedLanguages.includes(resolvedLang)) { try { - await highlighter.loadLanguage(lang as BundledLanguage); + await highlighter.loadLanguage(resolvedLang as BundledLanguage); } catch (_err) { - // eslint-disable-next-line no-console - console.warn(`[Shiki] The language "${lang}" doesn't exist, falling back to "plaintext".`); + const langStr = + lang === resolvedLang ? `"${lang}"` : `"${lang}" (aliased to "${resolvedLang}")`; + console.warn(`[Shiki] The language ${langStr} doesn't exist, falling back to "plaintext".`); lang = 'plaintext'; } } @@ -147,7 +155,7 @@ export async function createShikiHighlighter({ // Add "user-select: none;" for "+"/"-" diff symbols. // Transform `<span class="line"><span style="...">+ something</span></span> // into `<span class="line"><span style="..."><span style="user-select: none;">+</span> something</span></span>` - if (lang === 'diff') { + if (resolvedLang === 'diff') { const innerSpanNode = node.children[0]; const innerSpanTextNode = innerSpanNode?.type === 'element' && innerSpanNode.children?.[0]; diff --git a/packages/markdown/remark/src/types.ts b/packages/markdown/remark/src/types.ts index 6134bdf8a..e6a9d362b 100644 --- a/packages/markdown/remark/src/types.ts +++ b/packages/markdown/remark/src/types.ts @@ -36,7 +36,7 @@ export type RemarkRehype = RemarkRehypeOptions; export type ThemePresets = BuiltinTheme | 'css-variables'; export interface ShikiConfig - extends Pick<CreateShikiHighlighterOptions, 'langs' | 'theme' | 'themes'>, + extends Pick<CreateShikiHighlighterOptions, 'langs' | 'theme' | 'themes' | 'langAlias'>, Pick<ShikiHighlighterHighlightOptions, 'defaultColor' | 'wrap' | 'transformers'> {} export interface AstroMarkdownOptions { diff --git a/packages/markdown/remark/test/plugins.test.js b/packages/markdown/remark/test/plugins.test.js index dd0233baa..c52955f83 100644 --- a/packages/markdown/remark/test/plugins.test.js +++ b/packages/markdown/remark/test/plugins.test.js @@ -10,7 +10,7 @@ describe('plugins', () => { const processor = await createMarkdownProcessor({ remarkPlugins: [ () => { - const transformer = (tree, file) => { + const transformer = (_tree, file) => { context = file; }; return transformer; diff --git a/packages/markdown/remark/test/shiki.test.js b/packages/markdown/remark/test/shiki.test.js index d98028202..45582d752 100644 --- a/packages/markdown/remark/test/shiki.test.js +++ b/packages/markdown/remark/test/shiki.test.js @@ -109,4 +109,32 @@ describe('shiki syntax highlighting', () => { // Doesn't have `color` or `background-color` properties. assert.doesNotMatch(code, /color:/); }); + + it('the highlighter supports lang alias', async () => { + const highlighter = await createShikiHighlighter({ + langAlias: { + cjs: 'javascript', + }, + }); + + const html = await highlighter.codeToHtml(`let test = "some string"`, 'cjs', { + attributes: { 'data-foo': 'bar', autofocus: true }, + }); + + assert.match(html, /data-language="cjs"/); + }); + + it('the markdown processsor support lang alias', async () => { + const processor = await createMarkdownProcessor({ + shikiConfig: { + langAlias: { + cjs: 'javascript', + }, + }, + }); + + const { code } = await processor.render('```cjs\nlet foo = "bar"\n```'); + + assert.match(code, /data-language="cjs"/); + }); }); diff --git a/packages/studio/src/core/tokens.ts b/packages/studio/src/core/tokens.ts index 496093c0c..cb43d70ff 100644 --- a/packages/studio/src/core/tokens.ts +++ b/packages/studio/src/core/tokens.ts @@ -151,7 +151,6 @@ class ManagedRemoteAppToken implements ManagedAppToken { throw new Error(`Unexpected response: ${response.status} ${response.statusText}`); } } catch (error: any) { - // eslint-disable-next-line no-console console.error('Failed to delete token.', error?.message); } } @@ -187,17 +186,14 @@ export async function getManagedAppTokenOrExit(token?: string): Promise<ManagedA const sessionToken = await getSessionIdFromFile(); if (!sessionToken) { if (ci.isCI) { - // eslint-disable-next-line no-console console.error(MISSING_SESSION_ID_CI_ERROR); } else { - // eslint-disable-next-line no-console console.error(MISSING_SESSION_ID_ERROR); } process.exit(1); } const projectId = await getProjectIdFromFile(); if (!projectId) { - // eslint-disable-next-line no-console console.error(MISSING_PROJECT_ID_ERROR); process.exit(1); } diff --git a/packages/upgrade/upgrade.mjs b/packages/upgrade/upgrade.mjs index f9df779d8..5e25e5e94 100755 --- a/packages/upgrade/upgrade.mjs +++ b/packages/upgrade/upgrade.mjs @@ -1,5 +1,5 @@ #!/usr/bin/env node -/* eslint-disable no-console */ + 'use strict'; const currentVersion = process.versions.node; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index de1567c29..743ad2b76 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,8 +20,8 @@ importers: specifier: ^0.9.4 version: 0.9.4(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.6.2) '@biomejs/biome': - specifier: 1.8.3 - version: 1.8.3 + specifier: 1.9.3 + version: 1.9.3 '@changesets/changelog-github': specifier: ^0.5.0 version: 0.5.0 @@ -30,16 +30,16 @@ importers: version: 2.27.9 '@types/node': specifier: ^18.17.8 - version: 18.19.31 + version: 18.19.50 esbuild: specifier: ^0.21.5 version: 0.21.5 eslint: specifier: ^9.12.0 - version: 9.12.0(jiti@1.21.0) + version: 9.12.0(jiti@1.21.6) eslint-plugin-regexp: specifier: ^2.6.0 - version: 2.6.0(eslint@9.12.0(jiti@1.21.0)) + version: 2.6.0(eslint@9.12.0(jiti@1.21.6)) globby: specifier: ^14.0.2 version: 14.0.2 @@ -60,7 +60,7 @@ importers: version: 5.6.2 typescript-eslint: specifier: ^8.8.0 - version: 8.8.0(eslint@9.12.0(jiti@1.21.0))(typescript@5.6.2) + version: 8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.2) benchmark: dependencies: @@ -126,7 +126,7 @@ importers: specifier: ^4.0.0-beta.2 version: link:../../packages/integrations/mdx '@astrojs/rss': - specifier: ^4.0.7 + specifier: ^4.0.8 version: link:../../packages/astro-rss '@astrojs/sitemap': specifier: ^3.2.0 @@ -157,7 +157,7 @@ importers: version: 18.3.1(react@18.3.1) vitest: specifier: ^2.1.2 - version: 2.1.2(@types/node@18.19.31)(jsdom@23.2.0)(sass@1.79.4) + version: 2.1.2(@types/node@18.19.50)(jsdom@23.2.0)(sass@1.79.4) devDependencies: '@types/react': specifier: ^18.3.11 @@ -356,7 +356,7 @@ importers: specifier: ^3.6.2 version: link:../../packages/integrations/react '@astrojs/tailwind': - specifier: ^5.1.1 + specifier: ^5.1.2 version: link:../../packages/integrations/tailwind '@fortawesome/fontawesome-free': specifier: ^6.6.0 @@ -435,7 +435,7 @@ importers: dependencies: '@astrojs/markdoc': specifier: ^0.11.5-beta.1 - version: link:../../packages/integrations/markdoc + version: 0.11.5(@types/react@18.3.11)(astro@packages+astro)(react@18.3.1) astro: specifier: ^5.0.0-beta.4 version: link:../../packages/astro @@ -537,7 +537,7 @@ importers: version: link:../../packages/astro vitest: specifier: ^2.1.2 - version: 2.1.2(@types/node@18.19.31)(jsdom@23.2.0)(sass@1.79.4) + version: 2.1.2(@types/node@18.19.50)(jsdom@23.2.0)(sass@1.79.4) packages/astro: dependencies: @@ -696,10 +696,10 @@ importers: version: 6.0.3 vite: specifier: 6.0.0-beta.2 - version: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + version: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) vitefu: specifier: ^1.0.2 - version: 1.0.2(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)) + version: 1.0.2(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)) which-pm: specifier: ^3.0.0 version: 3.0.0 @@ -800,7 +800,7 @@ importers: version: 4.12.0 node-mocks-http: specifier: ^1.16.1 - version: 1.16.1(@types/node@18.19.31) + version: 1.16.1(@types/node@18.19.50) parse-srcset: specifier: ^1.0.2 version: 1.0.2 @@ -830,7 +830,7 @@ importers: version: 11.0.5 vitest: specifier: ^2.1.1 - version: 2.1.2(@types/node@18.19.31)(jsdom@23.2.0)(sass@1.79.4) + version: 2.1.2(@types/node@18.19.50)(jsdom@23.2.0)(sass@1.79.4) packages/astro-prism: dependencies: @@ -4187,7 +4187,7 @@ importers: version: link:../../.. vitest: specifier: ^2.1.1 - version: 2.1.2(@types/node@18.19.31)(jsdom@23.2.0)(sass@1.79.4) + version: 2.1.2(@types/node@18.19.50)(jsdom@23.2.0)(sass@1.79.4) packages/astro/test/fixtures/vue-component: dependencies: @@ -4254,9 +4254,9 @@ importers: '@astrojs/cli-kit': specifier: ^0.4.1 version: 0.4.1 - giget: - specifier: 1.2.3 - version: 1.2.3 + '@bluwy/giget-core': + specifier: ^0.1.0 + version: 0.1.0 devDependencies: arg: specifier: ^5.0.2 @@ -4335,7 +4335,7 @@ importers: version: 5.6.2 vite: specifier: 6.0.0-beta.2 - version: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + version: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) packages/db/test/fixtures/basics: dependencies: @@ -4491,7 +4491,7 @@ importers: version: link:../../../scripts vite: specifier: 6.0.0-beta.2 - version: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + version: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) packages/integrations/alpinejs/test/fixtures/basics: dependencies: @@ -4581,7 +4581,7 @@ importers: version: 0.18.5 vite: specifier: 6.0.0-beta.2 - version: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + version: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) packages/integrations/markdoc/test/fixtures/content-collections: dependencies: @@ -4831,7 +4831,7 @@ importers: version: 11.0.5 vite: specifier: 6.0.0-beta.2 - version: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + version: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) packages/integrations/mdx/test/fixtures/css-head-mdx: dependencies: @@ -5019,7 +5019,7 @@ importers: version: 7.25.7(@babel/core@7.25.7) '@preact/preset-vite': specifier: 2.8.2 - version: 2.8.2(@babel/core@7.25.7)(preact@10.24.2)(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)) + version: 2.8.2(@babel/core@7.25.7)(preact@10.24.2)(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)) '@preact/signals': specifier: ^1.3.0 version: 1.3.0(preact@10.24.2) @@ -5044,7 +5044,7 @@ importers: dependencies: '@vitejs/plugin-react': specifier: ^4.3.2 - version: 4.3.2(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)) + version: 4.3.2(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)) ultrahtml: specifier: ^1.5.3 version: 1.5.3 @@ -5072,7 +5072,7 @@ importers: version: 18.3.1(react@18.3.1) vite: specifier: 6.0.0-beta.2 - version: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + version: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) packages/integrations/react/test/fixtures/react-component: dependencies: @@ -5160,7 +5160,7 @@ importers: dependencies: vite-plugin-solid: specifier: ^2.10.2 - version: 2.10.2(solid-js@1.9.1)(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)) + version: 2.10.2(solid-js@1.9.1)(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)) devDependencies: astro: specifier: workspace:* @@ -5173,13 +5173,13 @@ importers: version: 1.9.1 vite: specifier: 6.0.0-beta.2 - version: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + version: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) packages/integrations/svelte: dependencies: '@sveltejs/vite-plugin-svelte': specifier: ^3.1.2 - version: 3.1.2(svelte@4.2.19)(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)) + version: 3.1.2(svelte@4.2.19)(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)) svelte2tsx: specifier: ^0.7.21 version: 0.7.21(svelte@4.2.19)(typescript@5.6.2) @@ -5195,7 +5195,7 @@ importers: version: 4.2.19 vite: specifier: 6.0.0-beta.2 - version: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + version: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) packages/integrations/tailwind: dependencies: @@ -5220,7 +5220,7 @@ importers: version: 3.4.13 vite: specifier: 6.0.0-beta.2 - version: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + version: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) packages/integrations/tailwind/test/fixtures/basic: dependencies: @@ -5237,16 +5237,16 @@ importers: dependencies: '@vitejs/plugin-vue': specifier: ^5.1.4 - version: 5.1.4(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4))(vue@3.5.11(typescript@5.6.2)) + version: 5.1.4(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4))(vue@3.5.11(typescript@5.6.2)) '@vitejs/plugin-vue-jsx': specifier: ^4.0.1 - version: 4.0.1(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4))(vue@3.5.11(typescript@5.6.2)) + version: 4.0.1(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4))(vue@3.5.11(typescript@5.6.2)) '@vue/compiler-sfc': specifier: ^3.5.11 version: 3.5.11 vite-plugin-vue-devtools: specifier: ^7.4.6 - version: 7.4.6(rollup@4.24.0)(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4))(vue@3.5.11(typescript@5.6.2)) + version: 7.4.6(rollup@4.24.0)(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4))(vue@3.5.11(typescript@5.6.2)) devDependencies: astro: specifier: workspace:* @@ -5262,7 +5262,7 @@ importers: version: 0.18.5 vite: specifier: 6.0.0-beta.2 - version: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + version: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) vue: specifier: ^3.5.11 version: 3.5.11(typescript@5.6.2) @@ -5496,7 +5496,7 @@ importers: version: 5.6.2 vite: specifier: 6.0.0-beta.2 - version: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + version: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) packages/telemetry: dependencies: @@ -5530,7 +5530,7 @@ importers: version: 1.1.4 '@types/node': specifier: ^18.17.8 - version: 18.19.31 + version: 18.19.50 '@types/which-pm-runs': specifier: ^1.0.2 version: 1.0.2 @@ -5598,10 +5598,6 @@ importers: packages: - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -5624,24 +5620,24 @@ packages: peerDependencies: astro: ^2.0.0 || ^3.0.0-beta || ^4.0.0-beta - '@astro-community/astro-embed-link-preview@0.2.0': - resolution: {integrity: sha512-yXWQv9nlI7IAQxJo/mpa93ZY4G4WwN7JjiTkKZKAce3ZQQyI1qZb6+x5gVRIhkMlyHlroVKelZHFk/NVcHDZkA==} + '@astro-community/astro-embed-link-preview@0.2.1': + resolution: {integrity: sha512-pl+KYhv5l2VpvvSwmZXTrCV+x3FxY3js4FX7/V/ABpLiSUsgF0yno90m0qd4Hx2y0XoeC4b/TB4T/Eu4AQIBTQ==} '@astro-community/astro-embed-twitter@0.5.4': resolution: {integrity: sha512-wQyros0Uh4L8fDOCZ9+UYMoq4u+YiJZEvjnL6ZP0KL6dcsyfma/XC2/Q2DBL5SBBiIkkFcFHmzDBIPl4HsENXw==} peerDependencies: astro: ^2.0.0 || ^3.0.0-beta || ^4.0.0-beta - '@astro-community/astro-embed-utils@0.1.2': - resolution: {integrity: sha512-BO5k8pDfbrTXcAvMlBak+K3p8IFcsGimdLPmiRz7HIMBuy9hI6R9PEuVhJs00sCp/rkkkZbwiw3IL8ncFfxRFw==} + '@astro-community/astro-embed-utils@0.1.3': + resolution: {integrity: sha512-eiMO+vfCdE9GtW6qE7X5Xl6YCKZDCoXJEWqRofQcoC3GHjqN2/WhJlnaxNVRq3demSO03UNtho57Em5p7o7AOA==} - '@astro-community/astro-embed-vimeo@0.3.7': - resolution: {integrity: sha512-0Y08IOudqSLC/RKiYZagaG/uvfblSt7of+hrIcRky7u+KZK3VrTbZ/Np+nIq81jXLGJQPXN8TNGsOUsY0mw9lw==} + '@astro-community/astro-embed-vimeo@0.3.8': + resolution: {integrity: sha512-N8nCAy/Q7XZroev+2XqNgy1uWa3l8hOGuEV+Nj0cjDk4OR20bWxbK7/fyL/eKOAz376VRlZ/0ym9dmAmqsjQAg==} peerDependencies: astro: ^2.0.0 || ^3.0.0-beta || ^4.0.0-beta - '@astro-community/astro-embed-youtube@0.5.2': - resolution: {integrity: sha512-cckWcq7mFCmI6uPpIlRolSafSQRYZBOaxIc8DaCUh8+JQAtPF7O4EdpRpZBUcvbARrWEEyHJCWrt0XOGppMniw==} + '@astro-community/astro-embed-youtube@0.5.3': + resolution: {integrity: sha512-O06Y6XwhDM5e72Hl/n3qgl7jDSrJpqTSTurFZZ7RQypJQzfyhlWgc99f0REdAtZSnLkq7069HfuMX4CzcaOdkg==} peerDependencies: astro: ^2.0.0 || ^3.0.0-beta || ^4.0.0-beta @@ -5658,6 +5654,9 @@ packages: '@astrojs/compiler@2.10.3': resolution: {integrity: sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==} + '@astrojs/internal-helpers@0.4.1': + resolution: {integrity: sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g==} + '@astrojs/language-server@2.15.0': resolution: {integrity: sha512-wJHSjGApm5X8Rg1GvkevoatZBfvaFizY4kCPvuSYgs3jGCobuY3KstJGKC1yNLsRJlDweHruP+J54iKn9vEKoA==} hasBin: true @@ -5670,6 +5669,15 @@ packages: prettier-plugin-astro: optional: true + '@astrojs/markdoc@0.11.5': + resolution: {integrity: sha512-paNSvJgUgld5kSU4RZelHYgvNKZSMWX2QX7SzWEeyPBTQ8gwOe30eJjq3czIbg7Se+8NcGtq7v5FU7lOyXxmnw==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + peerDependencies: + astro: ^3.0.0 || ^4.0.0 + + '@astrojs/markdown-remark@5.3.0': + resolution: {integrity: sha512-r0Ikqr0e6ozPb5bvhup1qdWnSPUvQu6tub4ZLYaKyG50BXZ0ej6FhGz3GpChKpH7kglRFPObJd/bDyf2VM9pkg==} + '@astrojs/node@8.3.3': resolution: {integrity: sha512-idrKhnnPSi0ABV+PCQsRQqVNwpOvVDF/+fkwcIiE8sr9J8EMvW9g/oyAt8T4X2OBJ8FUzYPL8klfCdG7r0eB5g==} peerDependencies: @@ -5685,9 +5693,17 @@ packages: peerDependencies: astro: ^5.0.0-alpha.0 + '@astrojs/prism@3.1.0': + resolution: {integrity: sha512-Z9IYjuXSArkAUx3N6xj6+Bnvx8OdUSHA8YoOgyepp3+zJmtVYJIl/I18GozdJVW1p5u/CNpl3Km7/gwTJK85cw==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + '@astrojs/yaml2ts@0.2.1': resolution: {integrity: sha512-CBaNwDQJz20E5WxzQh4thLVfhB3JEEGz72wRA+oJp6fQR37QLAqXZJU0mHC+yqMOQ6oj0GfRPJrz6hjf+zm6zA==} + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + '@babel/code-frame@7.25.7': resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} engines: {node: '>=6.9.0'} @@ -5700,10 +5716,18 @@ packages: resolution: {integrity: sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==} engines: {node: '>=6.9.0'} + '@babel/generator@7.25.6': + resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.25.7': resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==} engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.24.7': + resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.25.7': resolution: {integrity: sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==} engines: {node: '>=6.9.0'} @@ -5712,30 +5736,22 @@ packages: resolution: {integrity: sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.24.7': - resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==} + '@babel/helper-create-class-features-plugin@7.25.4': + resolution: {integrity: sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-environment-visitor@7.24.7': - resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-function-name@7.24.7': - resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-member-expression-to-functions@7.24.7': - resolution: {integrity: sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==} + '@babel/helper-member-expression-to-functions@7.24.8': + resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.18.6': resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.22.15': - resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.25.7': @@ -5752,12 +5768,16 @@ packages: resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.24.8': + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.25.7': resolution: {integrity: sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==} engines: {node: '>=6.9.0'} - '@babel/helper-replace-supers@7.24.7': - resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} + '@babel/helper-replace-supers@7.25.0': + resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -5770,14 +5790,14 @@ packages: resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} engines: {node: '>=6.9.0'} - '@babel/helper-split-export-declaration@7.24.7': - resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.25.7': resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.25.7': resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} engines: {node: '>=6.9.0'} @@ -5790,29 +5810,38 @@ packages: resolution: {integrity: sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==} engines: {node: '>=6.9.0'} + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + '@babel/highlight@7.25.7': resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} engines: {node: '>=6.9.0'} + '@babel/parser@7.25.6': + resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/parser@7.25.7': resolution: {integrity: sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-proposal-decorators@7.24.1': - resolution: {integrity: sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==} + '@babel/plugin-proposal-decorators@7.24.7': + resolution: {integrity: sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-decorators@7.24.1': - resolution: {integrity: sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==} + '@babel/plugin-syntax-decorators@7.24.7': + resolution: {integrity: sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.24.1': - resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} + '@babel/plugin-syntax-import-attributes@7.25.6': + resolution: {integrity: sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5822,14 +5851,20 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.24.7': + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.25.7': resolution: {integrity: sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.24.7': - resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} + '@babel/plugin-syntax-typescript@7.25.4': + resolution: {integrity: sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5858,20 +5893,28 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.24.7': - resolution: {integrity: sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==} + '@babel/plugin-transform-typescript@7.25.2': + resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.24.4': - resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} + '@babel/runtime@7.25.6': + resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.25.0': + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} '@babel/template@7.25.7': resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.25.6': + resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.25.7': resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==} engines: {node: '>=6.9.0'} @@ -5880,59 +5923,63 @@ packages: resolution: {integrity: sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==} engines: {node: '>=6.9.0'} - '@biomejs/biome@1.8.3': - resolution: {integrity: sha512-/uUV3MV+vyAczO+vKrPdOW0Iaet7UnJMU4bNMinggGJTAnBPjCoLEYcyYtYHNnUNYlv4xZMH6hVIQCAozq8d5w==} + '@biomejs/biome@1.9.3': + resolution: {integrity: sha512-POjAPz0APAmX33WOQFGQrwLvlu7WLV4CFJMlB12b6ZSg+2q6fYu9kZwLCOA+x83zXfcPd1RpuWOKJW0GbBwLIQ==} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@1.8.3': - resolution: {integrity: sha512-9DYOjclFpKrH/m1Oz75SSExR8VKvNSSsLnVIqdnKexj6NwmiMlKk94Wa1kZEdv6MCOHGHgyyoV57Cw8WzL5n3A==} + '@biomejs/cli-darwin-arm64@1.9.3': + resolution: {integrity: sha512-QZzD2XrjJDUyIZK+aR2i5DDxCJfdwiYbUKu9GzkCUJpL78uSelAHAPy7m0GuPMVtF/Uo+OKv97W3P9nuWZangQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@1.8.3': - resolution: {integrity: sha512-UeW44L/AtbmOF7KXLCoM+9PSgPo0IDcyEUfIoOXYeANaNXXf9mLUwV1GeF2OWjyic5zj6CnAJ9uzk2LT3v/wAw==} + '@biomejs/cli-darwin-x64@1.9.3': + resolution: {integrity: sha512-vSCoIBJE0BN3SWDFuAY/tRavpUtNoqiceJ5PrU3xDfsLcm/U6N93JSM0M9OAiC/X7mPPfejtr6Yc9vSgWlEgVw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@1.8.3': - resolution: {integrity: sha512-9yjUfOFN7wrYsXt/T/gEWfvVxKlnh3yBpnScw98IF+oOeCYb5/b/+K7YNqKROV2i1DlMjg9g/EcN9wvj+NkMuQ==} + '@biomejs/cli-linux-arm64-musl@1.9.3': + resolution: {integrity: sha512-VBzyhaqqqwP3bAkkBrhVq50i3Uj9+RWuj+pYmXrMDgjS5+SKYGE56BwNw4l8hR3SmYbLSbEo15GcV043CDSk+Q==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-arm64@1.8.3': - resolution: {integrity: sha512-fed2ji8s+I/m8upWpTJGanqiJ0rnlHOK3DdxsyVLZQ8ClY6qLuPc9uehCREBifRJLl/iJyQpHIRufLDeotsPtw==} + '@biomejs/cli-linux-arm64@1.9.3': + resolution: {integrity: sha512-vJkAimD2+sVviNTbaWOGqEBy31cW0ZB52KtpVIbkuma7PlfII3tsLhFa+cwbRAcRBkobBBhqZ06hXoZAN8NODQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-x64-musl@1.8.3': - resolution: {integrity: sha512-UHrGJX7PrKMKzPGoEsooKC9jXJMa28TUSMjcIlbDnIO4EAavCoVmNQaIuUSH0Ls2mpGMwUIf+aZJv657zfWWjA==} + '@biomejs/cli-linux-x64-musl@1.9.3': + resolution: {integrity: sha512-TJmnOG2+NOGM72mlczEsNki9UT+XAsMFAOo8J0me/N47EJ/vkLXxf481evfHLlxMejTY6IN8SdRSiPVLv6AHlA==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-linux-x64@1.8.3': - resolution: {integrity: sha512-I8G2QmuE1teISyT8ie1HXsjFRz9L1m5n83U1O6m30Kw+kPMPSKjag6QGUn+sXT8V+XWIZxFFBoTDEDZW2KPDDw==} + '@biomejs/cli-linux-x64@1.9.3': + resolution: {integrity: sha512-x220V4c+romd26Mu1ptU+EudMXVS4xmzKxPVb9mgnfYlN4Yx9vD5NZraSx/onJnd3Gh/y8iPUdU5CDZJKg9COA==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-win32-arm64@1.8.3': - resolution: {integrity: sha512-J+Hu9WvrBevfy06eU1Na0lpc7uR9tibm9maHynLIoAjLZpQU3IW+OKHUtyL8p6/3pT2Ju5t5emReeIS2SAxhkQ==} + '@biomejs/cli-win32-arm64@1.9.3': + resolution: {integrity: sha512-lg/yZis2HdQGsycUvHWSzo9kOvnGgvtrYRgoCEwPBwwAL8/6crOp3+f47tPwI/LI1dZrhSji7PNsGKGHbwyAhw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@1.8.3': - resolution: {integrity: sha512-/PJ59vA1pnQeKahemaQf4Nyj7IKUvGQSc3Ze1uIGi+Wvr1xF7rGobSrAAG01T/gUDG21vkDsZYM03NAmPiVkqg==} + '@biomejs/cli-win32-x64@1.9.3': + resolution: {integrity: sha512-cQMy2zanBkVLpmmxXdK6YePzmZx0s5Z7KEnwmrW54rcXK3myCNbQa09SwGZ8i/8sLw0H9F3X7K4rxVNGU8/D4Q==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] + '@bluwy/giget-core@0.1.0': + resolution: {integrity: sha512-cN/YvB0WW3hmYjAHeFqPMX4SWJNyWOBQCXwEbUP4kFPNFGK4xcB/+JDAclNXcL1MsTsB3FRqQtv5GGeRbXkv/A==} + engines: {node: '>=18'} + '@builder.io/partytown@0.10.2': resolution: {integrity: sha512-A9U+4PREWcS+CCYzKGIPovtGB/PBgnH/8oQyCE6Nr9drDJk6cMPpLQIEajpGPmG9tYF7N3FkRvhXm/AS9+0iKg==} engines: {node: '>=18.0.0'} @@ -6762,8 +6809,8 @@ packages: peerDependencies: tslib: '2' - '@jsonjoy.com/json-pack@1.0.4': - resolution: {integrity: sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==} + '@jsonjoy.com/json-pack@1.1.0': + resolution: {integrity: sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -6895,8 +6942,8 @@ packages: '@babel/core': 7.x vite: 2.x || 3.x || 4.x || 5.x - '@preact/signals-core@1.7.0': - resolution: {integrity: sha512-bEZLgmJGSBVP5PUPDowhPW3bVdMmp9Tr5OEl+SQK+8Tv9T7UsIfyN905cfkmmeqw8z4xp8T6zrl4M1uj9+HAfg==} + '@preact/signals-core@1.8.0': + resolution: {integrity: sha512-OBvUsRZqNmjzCZXWLxkZfhcgT+Fk8DDcT/8vD6a1xhDemodyy87UJRJfASMuSD8FaAIeGgGm85ydXhm7lr4fyA==} '@preact/signals@1.3.0': resolution: {integrity: sha512-EOMeg42SlLS72dhoq6Vjq08havnLseWmPQ8A0YsgIAqMgWgx7V1a39+Pxo6i7SY5NwJtH4849JogFq3M67AzWg==} @@ -7178,8 +7225,8 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@18.19.31': - resolution: {integrity: sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==} + '@types/node@18.19.50': + resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} '@types/prismjs@1.26.4': resolution: {integrity: sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==} @@ -7214,11 +7261,11 @@ packages: '@types/uglify-js@3.17.5': resolution: {integrity: sha512-TU+fZFBTBcXj/GpDpDaBmgWk/gn96kMZ+uocaFUlV2f8a6WdMzzI44QBCmGcCiYR0Y6ZlNRiyUyKKt5nl/lbzQ==} - '@types/ungap__structured-clone@0.3.3': - resolution: {integrity: sha512-RNmhIPwoip6K/zZOv3ypksTAqaqLEXvlNSXKyrC93xMSOAHZCR7PifW6xKZCwkbbnbM9dwB9X56PPoNTlNwEqw==} + '@types/ungap__structured-clone@1.2.0': + resolution: {integrity: sha512-ZoaihZNLeZSxESbk9PUAPZOlSpcKx81I1+4emtULDVmBLkYutTcMlCj2K9VNlf9EWODxdO6gkAqEaLorXwZQVA==} - '@types/unist@2.0.10': - resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} @@ -7226,8 +7273,8 @@ packages: '@types/which-pm-runs@1.0.2': resolution: {integrity: sha512-M0ZefeDApctHbjqtATOiixiwafG7pXD3exxnjku4XmX9+2DmONGghv5Z8Pnm0lNLBZKvDQyuG+4pLkH2UkP5gg==} - '@types/ws@8.5.10': - resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + '@types/ws@8.5.12': + resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} '@types/xml2js@0.4.14': resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==} @@ -7235,8 +7282,8 @@ packages: '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@typescript-eslint/eslint-plugin@8.8.0': - resolution: {integrity: sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A==} + '@typescript-eslint/eslint-plugin@8.8.1': + resolution: {integrity: sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -7246,8 +7293,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.8.0': - resolution: {integrity: sha512-uEFUsgR+tl8GmzmLjRqz+VrDv4eoaMqMXW7ruXfgThaAShO9JTciKpEsB+TvnfFfbg5IpujgMXVV36gOJRLtZg==} + '@typescript-eslint/parser@8.8.1': + resolution: {integrity: sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -7256,12 +7303,12 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@8.8.0': - resolution: {integrity: sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==} + '@typescript-eslint/scope-manager@8.8.1': + resolution: {integrity: sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.8.0': - resolution: {integrity: sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==} + '@typescript-eslint/type-utils@8.8.1': + resolution: {integrity: sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -7269,12 +7316,12 @@ packages: typescript: optional: true - '@typescript-eslint/types@8.8.0': - resolution: {integrity: sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==} + '@typescript-eslint/types@8.8.1': + resolution: {integrity: sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.8.0': - resolution: {integrity: sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==} + '@typescript-eslint/typescript-estree@8.8.1': + resolution: {integrity: sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -7282,14 +7329,14 @@ packages: typescript: optional: true - '@typescript-eslint/utils@8.8.0': - resolution: {integrity: sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==} + '@typescript-eslint/utils@8.8.1': + resolution: {integrity: sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/visitor-keys@8.8.0': - resolution: {integrity: sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==} + '@typescript-eslint/visitor-keys@8.8.1': + resolution: {integrity: sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript/twoslash@3.1.0': @@ -7379,25 +7426,31 @@ packages: '@vscode/l10n@0.0.18': resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} - '@vue/babel-helper-vue-transform-on@1.2.2': - resolution: {integrity: sha512-nOttamHUR3YzdEqdM/XXDyCSdxMA9VizUKoroLX6yTyRtggzQMHXcmwh8a7ZErcJttIBIc9s68a1B8GZ+Dmvsw==} + '@vue/babel-helper-vue-transform-on@1.2.5': + resolution: {integrity: sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==} - '@vue/babel-plugin-jsx@1.2.2': - resolution: {integrity: sha512-nYTkZUVTu4nhP199UoORePsql0l+wj7v/oyQjtThUVhJl1U+6qHuoVhIvR3bf7eVKjbCK+Cs2AWd7mi9Mpz9rA==} + '@vue/babel-plugin-jsx@1.2.5': + resolution: {integrity: sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==} peerDependencies: '@babel/core': ^7.0.0-0 peerDependenciesMeta: '@babel/core': optional: true - '@vue/babel-plugin-resolve-type@1.2.2': - resolution: {integrity: sha512-EntyroPwNg5IPVdUJupqs0CFzuf6lUrVvCspmv2J1FITLeGnUCuoGNNk78dgCusxEiYj6RMkTJflGSxk5aIC4A==} + '@vue/babel-plugin-resolve-type@1.2.5': + resolution: {integrity: sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==} peerDependencies: '@babel/core': ^7.0.0-0 + '@vue/compiler-core@3.5.10': + resolution: {integrity: sha512-iXWlk+Cg/ag7gLvY0SfVucU8Kh2CjysYZjhhP70w9qI4MvSox4frrP+vDGvtQuzIcgD8+sxM6lZvCtdxGunTAA==} + '@vue/compiler-core@3.5.11': resolution: {integrity: sha512-PwAdxs7/9Hc3ieBO12tXzmTD+Ln4qhT/56S+8DvrrZ4kLDn4Z/AMUr8tXJD0axiJBS0RKIoNaR0yMuQB9v9Udg==} + '@vue/compiler-dom@3.5.10': + resolution: {integrity: sha512-DyxHC6qPcktwYGKOIy3XqnHRrrXyWR2u91AjP+nLkADko380srsC2DC3s7Y1Rk6YfOlxOlvEQKa9XXmLI+W4ZA==} + '@vue/compiler-dom@3.5.11': resolution: {integrity: sha512-pyGf8zdbDDRkBrEzf8p7BQlMKNNF5Fk/Cf/fQ6PiUz9at4OaUfyXW0dGJTo2Vl1f5U9jSLCNf0EZJEogLXoeew==} @@ -7438,6 +7491,9 @@ packages: '@vue/shared@3.1.5': resolution: {integrity: sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==} + '@vue/shared@3.5.10': + resolution: {integrity: sha512-VkkBhU97Ki+XJ0xvl4C9YJsIZ2uIlQ7HqPpZOS3m9VCvmROPaChZU6DexdMJqvz9tbgG+4EtFVrSuailUq5KGQ==} + '@vue/shared@3.5.11': resolution: {integrity: sha512-W8GgysJVnFo81FthhzurdRAWP/byq3q2qIw70e0JWblzVhjgOMiC2GyovXrZTFQJnFVryYaKGP3Tc9vYzYm6PQ==} @@ -7486,8 +7542,8 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} ansi-styles@3.2.1: @@ -7536,8 +7592,8 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - astring@1.8.6: - resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} + astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true astro-auto-import@0.4.2: @@ -7577,8 +7633,8 @@ packages: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} - babel-plugin-jsx-dom-expressions@0.37.19: - resolution: {integrity: sha512-nef2eLpWBgFggwrYwN6O3dNKn3RnlX6n4DIamNEAeHwp03kVQUaKUiLaEPnHPJHwxie1KwPelyIY9QikU03vUA==} + babel-plugin-jsx-dom-expressions@0.38.5: + resolution: {integrity: sha512-JfjHYKOKGwoiOYQ56Oo8gbZPb9wNMpPuEEUhSCjMpnuHM9K21HFIUBm83TZPB40Av4caCIW4Tfjzpkp/MtFpMw==} peerDependencies: '@babel/core': ^7.20.12 @@ -7587,8 +7643,8 @@ packages: peerDependencies: '@babel/core': ^7.12.10 - babel-preset-solid@1.8.16: - resolution: {integrity: sha512-b4HFg/xaKM+H3Tu5iUlZ/43TJOZnhi85xrm3JrXDQ0s4cmtmU37bXXYzb2m55G4QKiFjxLAjvb7sUorPrAMs5w==} + babel-preset-solid@1.8.22: + resolution: {integrity: sha512-nKwisb//lZsiRF2NErlRP64zVTJqa1OSZiDnSl0YbcTiCZoMt52CY2Pg+9fsYAPtjYMT7RHBmzU41pxK6hFOcg==} peerDependencies: '@babel/core': ^7.0.0 @@ -7638,6 +7694,11 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + browserslist@4.24.0: resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -7665,14 +7726,13 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - camelcase@8.0.0: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} + caniuse-lite@1.0.30001660: + resolution: {integrity: sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==} + caniuse-lite@1.0.30001667: resolution: {integrity: sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==} @@ -7735,10 +7795,6 @@ packages: resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} engines: {node: '>= 14.16.0'} - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} @@ -7747,9 +7803,6 @@ packages: resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} engines: {node: '>=8'} - citty@0.1.6: - resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - clean-css@4.2.4: resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} engines: {node: '>= 4.0'} @@ -7762,8 +7815,8 @@ packages: resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - cli-table3@0.6.4: - resolution: {integrity: sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw==} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} cliui@8.0.1: @@ -7840,10 +7893,6 @@ 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} - content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -7993,9 +8042,6 @@ packages: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -8172,14 +8218,17 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.32: - resolution: {integrity: sha512-M+7ph0VGBQqqpTT2YrabjNKSQ2fEl9PVx6AK3N558gDH9NO8O6XN9SXXFWRo9u9PbEg/bWq+tjXQr+eXmxubCw==} + electron-to-chromium@1.5.22: + resolution: {integrity: sha512-tKYm5YHPU1djz0O+CGJ+oJIvimtsCcwR2Z9w7Skh08lUdyzXY5djods3q+z2JkWdb7tCcmM//eVavSRAiaPRNg==} + + electron-to-chromium@1.5.33: + resolution: {integrity: sha512-+cYTcFB1QqD4j4LegwLfpCNxifb6dDFUAwk6RsLusCwIaZI6or2f+q8rs5tTB2YC53HhOlIbEaqHMAAC8IOIwA==} emmet@2.4.7: resolution: {integrity: sha512-O5O5QNqtdlnQM2bmKHtJgyChcrFMgQuulI+WdiOw2NArzprUqqxUW6bgYtKvzKgrsYpuLWalOkdhNP+1jluhCA==} - emoji-regex@10.3.0: - resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -8226,8 +8275,8 @@ packages: engines: {node: '>=18'} hasBin: true - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} escape-html@1.0.3: @@ -8286,8 +8335,8 @@ packages: engines: {node: '>=4'} hasBin: true - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} esrecurse@4.3.0: @@ -8338,6 +8387,10 @@ packages: resolution: {integrity: sha512-WcdwgWmGAE48kSHjxPVLriBuvJdJdi1VKTh7HmHvcm6WPdIT1Z04wUVX8BLiqnq0Rz5SnfJ+P0kM1RBqSLLoPQ==} engines: {node: '>=12.0.0'} + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -8413,8 +8466,8 @@ packages: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} engines: {node: '>=8'} - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} form-data@4.0.0: @@ -8448,10 +8501,6 @@ packages: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -8484,10 +8533,6 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - giget@1.2.3: - resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} - hasBin: true - github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -8499,9 +8544,8 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob@10.3.12: - resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} - engines: {node: '>=16 || 14 >=14.17'} + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true globals@11.12.0: @@ -8526,6 +8570,10 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + has-async-hooks@1.0.0: resolution: {integrity: sha512-YF0VPGjkxr7AyyQQNykX8zK4PvtEDsUJAPqwu06UFz1lb6EvI53sPh5H1kWxg8NXI5LsfRCZ8uX9NkYDZBb/mw==} @@ -8562,8 +8610,8 @@ packages: hast-util-parse-selector@4.0.0: resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} - hast-util-raw@9.0.2: - resolution: {integrity: sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==} + hast-util-raw@9.0.4: + resolution: {integrity: sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==} hast-util-select@6.0.2: resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} @@ -8663,8 +8711,8 @@ packages: resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} engines: {node: '>=10.18'} - hyperid@3.2.0: - resolution: {integrity: sha512-PdTtDo+Rmza9nEhTunaDSUKwbC69TIzLEpZUwiB6f+0oqmY0UPfhyHCPt6K1NQ4WFv5yJBTG5vELztVWP+nEVQ==} + hyperid@3.3.0: + resolution: {integrity: sha512-7qhCVT4MJIoEsNcbhglhdmBKb09QtcmJNiIQGq7js/Khf5FtQQ9bzcAuloeqBeee7XD7JqDeve9KNlQya5tSGQ==} iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} @@ -8677,12 +8725,12 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - immutable@4.3.5: - resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==} + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -8701,8 +8749,8 @@ packages: inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - inline-style-parser@0.2.3: - resolution: {integrity: sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==} + inline-style-parser@0.2.4: + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} @@ -8717,8 +8765,9 @@ packages: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} @@ -8728,6 +8777,10 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -8789,12 +8842,11 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true js-base64@3.7.7: @@ -8811,8 +8863,8 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsdoc-type-pratt-parser@4.0.0: - resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} + jsdoc-type-pratt-parser@4.1.0: + resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} engines: {node: '>=12.0.0'} jsdom@23.2.0: @@ -8824,6 +8876,11 @@ packages: canvas: optional: true + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} @@ -8849,8 +8906,8 @@ packages: jsonc-parser@2.3.1: resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} - jsonc-parser@3.2.1: - resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -8861,13 +8918,17 @@ packages: just-map-values@3.2.0: resolution: {integrity: sha512-TyqCKtK3NxiUgOjRYMIKURvBTHesi3XzomDY0QVPZ3rYzLCF+nNq5rSi0B/L5aOd/WMTZo6ukzA4wih4HUbrDg==} - katex@0.16.10: - resolution: {integrity: sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA==} + katex@0.16.11: + resolution: {integrity: sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==} hasBin: true keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} @@ -8891,8 +8952,8 @@ packages: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - lilconfig@3.1.1: - resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} engines: {node: '>=14'} lines-and-columns@1.2.4: @@ -8913,8 +8974,8 @@ packages: lit@3.2.0: resolution: {integrity: sha512-s6tI33Lf6VpDu7u4YqsSX78D28bYQulM+VAzsGch4fx2H0eLZnJsUBsPWmGYSGoKDNbjtRv02rio1o+UdPVwvw==} - lite-youtube-embed@0.3.2: - resolution: {integrity: sha512-b1dgKyF4PHhinonmr3PB172Nj0qQgA/7DE9EmeIXHR1ksnFEC2olWjNJyJGdsN2cleKHRjjsmrziKlwXtPlmLQ==} + lite-youtube-embed@0.3.3: + resolution: {integrity: sha512-gFfVVnj6NRjxVfJKo3qoLtpi0v5mn3AcR4eKD45wrxQuxzveFJUb+7Cr6uV6n+DjO8X3p0UzPPquhGt0H/y+NA==} load-yaml-file@0.2.0: resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} @@ -8969,9 +9030,8 @@ packages: lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} @@ -9003,15 +9063,15 @@ packages: markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - marked-footnote@1.2.2: - resolution: {integrity: sha512-TFBEHwHLSSedub7P6XHHs+dMMOnDeNV5+kFDo4trU//gDd8iM57lg9jr9NGwDifPwLllHwKmFcRNp5uYvO2Fnw==} + marked-footnote@1.2.4: + resolution: {integrity: sha512-DB2Kl+wFh6YwZd70qABMY6WUkG1UuyqoNTFoDfGyG79Pz24neYtLBkB+45a7o72V7gkfvbC3CGzIYFobxfMT1Q==} peerDependencies: marked: '>=7.0.0' - marked-smartypants@1.1.6: - resolution: {integrity: sha512-38rdxcV3+EHrvoHioSrgBDvOmFb+TNcszZggrl15qe4MEfQxBArfSgsGgFP0YqHlGy8Rgoyi4gN4ThBWzwNJeA==} + marked-smartypants@1.1.8: + resolution: {integrity: sha512-2n8oSjL2gSkH6M0dSdRIyLgqqky03iKQkdmoaylmIzwIhYTW204S7ry6zP2iqwSl0zSlJH2xmWgxlZ/4XB1CdQ==} peerDependencies: - marked: '>=4 <13' + marked: '>=4 <15' marked@12.0.2: resolution: {integrity: sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==} @@ -9027,11 +9087,11 @@ packages: mdast-util-find-and-replace@3.0.1: resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} - mdast-util-from-markdown@2.0.0: - resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + mdast-util-from-markdown@2.0.1: + resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} - mdast-util-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} mdast-util-gfm-footnote@2.0.0: resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} @@ -9051,9 +9111,6 @@ packages: mdast-util-math@3.0.0: resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==} - mdast-util-mdx-expression@2.0.0: - resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} - mdast-util-mdx-expression@2.0.1: resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} @@ -9069,8 +9126,8 @@ packages: mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - mdast-util-to-hast@13.1.0: - resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} mdast-util-to-markdown@2.1.0: resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} @@ -9078,8 +9135,8 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - mdast-util-toc@7.0.0: - resolution: {integrity: sha512-C28UcSqjmnWuvgT8d97qpaItHKvySqVPAECUzqQ51xuMyNFFJwcFoKW77KoMjtXrclTidLQFDzLUmTmrshRweA==} + mdast-util-toc@7.1.0: + resolution: {integrity: sha512-2TVKotOQzqdY7THOdn2gGzS9d1Sdd66bvxUyw3aNpWfcPXCLYSJCCgfPy30sEtuzkDraJgqF35dzgmz6xlvH/w==} mdn-data@2.0.28: resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} @@ -9116,38 +9173,38 @@ packages: mhchemparser@4.2.1: resolution: {integrity: sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==} - micromark-core-commonmark@2.0.0: - resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} + micromark-core-commonmark@2.0.1: + resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} - micromark-extension-gfm-autolink-literal@2.0.0: - resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} - micromark-extension-gfm-footnote@2.0.0: - resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} - micromark-extension-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} - micromark-extension-gfm-table@2.0.0: - resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} + micromark-extension-gfm-table@2.1.0: + resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} micromark-extension-gfm-tagfilter@2.0.0: resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - micromark-extension-gfm-task-list-item@2.0.1: - resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} micromark-extension-gfm@3.0.0: resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - micromark-extension-math@3.0.0: - resolution: {integrity: sha512-iJ2Q28vBoEovLN5o3GO12CpqorQRYDPT+p4zW50tGwTfJB+iv/VnB6Ini+gqa24K97DwptMBBIvVX6Bjk49oyQ==} + micromark-extension-math@3.1.0: + resolution: {integrity: sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==} micromark-extension-mdx-expression@3.0.0: resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} - micromark-extension-mdx-jsx@3.0.0: - resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} + micromark-extension-mdx-jsx@3.0.1: + resolution: {integrity: sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==} micromark-extension-mdx-md@2.0.0: resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} @@ -9164,8 +9221,8 @@ packages: micromark-factory-label@2.0.0: resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} - micromark-factory-mdx-expression@2.0.1: - resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} + micromark-factory-mdx-expression@2.0.2: + resolution: {integrity: sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==} micromark-factory-space@2.0.0: resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} @@ -9212,8 +9269,8 @@ packages: micromark-util-sanitize-uri@2.0.0: resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} - micromark-util-subtokenize@2.0.0: - resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} + micromark-util-subtokenize@2.0.1: + resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} micromark-util-symbol@2.0.0: resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} @@ -9256,40 +9313,23 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} mj-context-menu@0.6.1: resolution: {integrity: sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==} - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -9324,6 +9364,9 @@ packages: resolution: {integrity: sha512-TUes3xKIX33re4QzdxwZ6tdbodjmn3tWXCEc1uokiEmo14sI1EaGYNs2k3bU2pyyGNmBqFGAVl6jAGWd06AVIg==} engines: {node: ^18.0.0 || >=20.0.0} + nanotar@0.1.1: + resolution: {integrity: sha512-AiJsGsSF3O0havL1BydvI4+wR76sKT+okKRwWIaK96cZUnXqH0uNBOsHlbwZq3+m2BR1VKqHDVudl3gO4mYjpQ==} + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -9348,9 +9391,6 @@ packages: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} - node-fetch-native@1.6.4: - resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} - node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -9400,11 +9440,6 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nypm@0.3.8: - resolution: {integrity: sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og==} - engines: {node: ^14.16.0 || >=16.10.0} - hasBin: true - object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -9413,9 +9448,6 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - ohash@1.1.3: - resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} - on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -9446,8 +9478,8 @@ packages: resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} engines: {node: '>=18'} - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} os-tmpdir@1.0.2: @@ -9497,6 +9529,9 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + package-manager-detector@0.2.0: resolution: {integrity: sha512-E385OSk9qDcXhcM9LNSe4sdhx8a9mAPrZ4sMLW+tmxl5ZuGtPUcdFu+MPP2jbgiWAZ6Pfe5soGFMd+0Db5Vrog==} @@ -9556,9 +9591,9 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.10.2: - resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} - engines: {node: '>=16 || 14 >=14.17'} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -9800,8 +9835,8 @@ packages: peerDependencies: postcss: ^8.4 - postcss-selector-parser@6.1.0: - resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} postcss-value-parser@4.2.0: @@ -10056,8 +10091,8 @@ packages: retext-latin@4.0.0: resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} - retext-smartypants@6.1.0: - resolution: {integrity: sha512-LDPXg95346bqFZnDMHo0S7Rq5p64+B+N8Vz733+wPMDtwb9rCOs9LIdIEhrUOU+TAywX9St+ocQWJt8wrzivcQ==} + retext-smartypants@6.1.1: + resolution: {integrity: sha512-onsHf34i/GzgElJgtT1K2V+31yEhWs7NJboKNxXJcmVMMPxLpgxZ9iADoMdydd6j/bHic5F/aNq0CGqElEtu2g==} retext-stringify@4.0.0: resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} @@ -10107,8 +10142,8 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - sax@1.3.0: - resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} @@ -10124,6 +10159,10 @@ packages: resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} engines: {node: ^14.0.0 || >=16.0.0} + section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -10317,6 +10356,10 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} + strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -10339,8 +10382,8 @@ packages: style-to-object@0.4.4: resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} - style-to-object@1.0.6: - resolution: {integrity: sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==} + style-to-object@1.0.8: + resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} subarg@1.0.0: resolution: {integrity: sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==} @@ -10392,8 +10435,8 @@ packages: svg-tags@1.0.0: resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} - svgo@3.2.0: - resolution: {integrity: sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==} + svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} engines: {node: '>=14.0.0'} hasBin: true @@ -10405,10 +10448,6 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} @@ -10443,16 +10482,16 @@ packages: tinyexec@0.3.0: resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} - tinypool@1.0.0: - resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==} + tinypool@1.0.1: + resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} engines: {node: ^18.0.0 || >=20.0.0} tinyrainbow@1.2.0: resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} engines: {node: '>=14.0.0'} - tinyspy@3.0.0: - resolution: {integrity: sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==} + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} tmp@0.0.33: @@ -10478,8 +10517,8 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} - tough-cookie@4.1.3: - resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} tr46@0.0.3: @@ -10489,8 +10528,8 @@ packages: resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} engines: {node: '>=18'} - tree-dump@1.0.1: - resolution: {integrity: sha512-WCkcRBVPSlHHq1dc/px9iOfqklvzCbdRwvlNfxGZsrHqf6aZttfPrd7DJTt6oR10dwUfpFFQeVTkPbBIZxX/YA==} + tree-dump@1.0.2: + resolution: {integrity: sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -10588,8 +10627,8 @@ packages: typescript-auto-import-cache@0.3.3: resolution: {integrity: sha512-ojEC7+Ci1ij9eE6hp8Jl9VUNnsEKzztktP5gtYNRMrTmfXVwA1PITYYAkpxCvvupdSYa/Re51B6KMcv1CTZEUA==} - typescript-eslint@8.8.0: - resolution: {integrity: sha512-BjIT/VwJ8+0rVO01ZQ2ZVnjE1svFBiRczcpr1t1Yxt7sT25VSbPfrJtDsQ8uQTy2pilX5nI9gwxhUyLULNentw==} + typescript-eslint@8.8.1: + resolution: {integrity: sha512-R0dsXFt6t4SAFjUSKFjMh4pXDtq04SsFKCVGDP3ZOzNP7itF0jBcZYU4fMsZr4y7O7V7Nc751dDeESbe4PbQMQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -10602,11 +10641,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - ufo@1.5.3: - resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} - - uglify-js@3.17.4: - resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} engines: {node: '>=0.8.0'} hasBin: true @@ -10721,8 +10757,8 @@ packages: validate-html-nesting@1.2.2: resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==} - vfile-location@5.0.2: - resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} + vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} @@ -10907,11 +10943,11 @@ packages: '@volar/language-service': optional: true - vscode-css-languageservice@6.3.0: - resolution: {integrity: sha512-nU92imtkgzpCL0xikrIb8WvedV553F2BENzgz23wFuok/HLN5BeQmroMy26pUwFxV2eV8oNRmYCUv8iO7kSMhw==} + vscode-css-languageservice@6.3.1: + resolution: {integrity: sha512-1BzTBuJfwMc3A0uX4JBdJgoxp74cjj4q2mDJdp49yD/GuAq4X0k5WtK6fNcMYr+FfJ9nqgR6lpfCSZDkARJ5qQ==} - vscode-html-languageservice@5.3.0: - resolution: {integrity: sha512-C4Z3KsP5Ih+fjHpiBc5jxmvCl+4iEwvXegIrzu2F5pktbWvQaBT3YkVPk8N+QlSSMk8oCG6PKtZ/Sq2YHb5e8g==} + vscode-html-languageservice@5.3.1: + resolution: {integrity: sha512-ysUh4hFeW/WOWz/TO9gm08xigiSsV/FOAZ+DolgJfeLftna54YdmZ4A+lIn46RbdO3/Qv5QHTn1ZGqmrXQhZyA==} vscode-json-languageservice@4.1.8: resolution: {integrity: sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==} @@ -10931,8 +10967,8 @@ packages: vscode-languageserver-protocol@3.17.5: resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} - vscode-languageserver-textdocument@1.0.11: - resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} + vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} vscode-languageserver-types@3.16.0: resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==} @@ -11036,6 +11072,10 @@ packages: resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} engines: {node: '>=18'} + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -11092,9 +11132,6 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml-language-server@1.15.0: resolution: {integrity: sha512-N47AqBDCMQmh6mBLmI6oqxryHRzi33aPFPsJhYy3VTUGCdLHYjGh4FZzpUjRlphaADBBkDmnkM/++KNIOHi5Rw==} hasBin: true @@ -11103,8 +11140,8 @@ packages: resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} engines: {node: '>= 14'} - yaml@2.5.0: - resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} + yaml@2.5.1: + resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} engines: {node: '>= 14'} hasBin: true @@ -11151,8 +11188,6 @@ packages: snapshots: - '@aashutoshrathi/word-wrap@1.2.6': {} - '@alloc/quick-lru@5.2.0': {} '@ampproject/remapping@2.3.0': @@ -11172,37 +11207,37 @@ snapshots: '@astro-community/astro-embed-integration@0.7.1(astro@packages+astro)': dependencies: - '@astro-community/astro-embed-link-preview': 0.2.0 + '@astro-community/astro-embed-link-preview': 0.2.1 '@astro-community/astro-embed-twitter': 0.5.4(astro@packages+astro) - '@astro-community/astro-embed-vimeo': 0.3.7(astro@packages+astro) - '@astro-community/astro-embed-youtube': 0.5.2(astro@packages+astro) - '@types/unist': 2.0.10 + '@astro-community/astro-embed-vimeo': 0.3.8(astro@packages+astro) + '@astro-community/astro-embed-youtube': 0.5.3(astro@packages+astro) + '@types/unist': 2.0.11 astro: link:packages/astro astro-auto-import: 0.4.2(astro@packages+astro) unist-util-select: 4.0.3 - '@astro-community/astro-embed-link-preview@0.2.0': + '@astro-community/astro-embed-link-preview@0.2.1': dependencies: - '@astro-community/astro-embed-utils': 0.1.2 + '@astro-community/astro-embed-utils': 0.1.3 '@astro-community/astro-embed-twitter@0.5.4(astro@packages+astro)': dependencies: - '@astro-community/astro-embed-utils': 0.1.2 + '@astro-community/astro-embed-utils': 0.1.3 astro: link:packages/astro - '@astro-community/astro-embed-utils@0.1.2': + '@astro-community/astro-embed-utils@0.1.3': dependencies: linkedom: 0.14.26 - '@astro-community/astro-embed-vimeo@0.3.7(astro@packages+astro)': + '@astro-community/astro-embed-vimeo@0.3.8(astro@packages+astro)': dependencies: - '@astro-community/astro-embed-utils': 0.1.2 + '@astro-community/astro-embed-utils': 0.1.3 astro: link:packages/astro - '@astro-community/astro-embed-youtube@0.5.2(astro@packages+astro)': + '@astro-community/astro-embed-youtube@0.5.3(astro@packages+astro)': dependencies: astro: link:packages/astro - lite-youtube-embed: 0.3.2 + lite-youtube-embed: 0.3.3 '@astrojs/check@0.9.4(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.6.2)': dependencies: @@ -11223,6 +11258,8 @@ snapshots: '@astrojs/compiler@2.10.3': {} + '@astrojs/internal-helpers@0.4.1': {} + '@astrojs/language-server@2.15.0(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.6.2)': dependencies: '@astrojs/compiler': 2.10.3 @@ -11241,7 +11278,7 @@ snapshots: volar-service-typescript: 0.0.61(@volar/language-service@2.4.6) volar-service-typescript-twoslash-queries: 0.0.61(@volar/language-service@2.4.6) volar-service-yaml: 0.0.61(@volar/language-service@2.4.6) - vscode-html-languageservice: 5.3.0 + vscode-html-languageservice: 5.3.1 vscode-uri: 3.0.8 optionalDependencies: prettier: 3.3.3 @@ -11249,6 +11286,45 @@ snapshots: transitivePeerDependencies: - typescript + '@astrojs/markdoc@0.11.5(@types/react@18.3.11)(astro@packages+astro)(react@18.3.1)': + dependencies: + '@astrojs/internal-helpers': 0.4.1 + '@astrojs/markdown-remark': 5.3.0 + '@astrojs/prism': 3.1.0 + '@markdoc/markdoc': 0.4.0(@types/react@18.3.11)(react@18.3.1) + astro: link:packages/astro + esbuild: 0.21.5 + github-slugger: 2.0.0 + gray-matter: 4.0.3 + htmlparser2: 9.1.0 + transitivePeerDependencies: + - '@types/react' + - react + - supports-color + + '@astrojs/markdown-remark@5.3.0': + dependencies: + '@astrojs/prism': 3.1.0 + github-slugger: 2.0.0 + hast-util-from-html: 2.0.3 + hast-util-to-text: 4.0.2 + import-meta-resolve: 4.1.0 + mdast-util-definitions: 6.0.0 + rehype-raw: 7.0.0 + rehype-stringify: 10.0.1 + remark-gfm: 4.0.0 + remark-parse: 11.0.0 + remark-rehype: 11.1.1 + remark-smartypants: 3.0.2 + shiki: 1.22.0 + unified: 11.0.5 + unist-util-remove-position: 5.0.0 + unist-util-visit: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + '@astrojs/node@8.3.3(astro@packages+astro)': dependencies: astro: link:packages/astro @@ -11273,9 +11349,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@astrojs/prism@3.1.0': + dependencies: + prismjs: 1.29.0 + '@astrojs/yaml2ts@0.2.1': dependencies: - yaml: 2.5.0 + yaml: 2.5.1 + + '@babel/code-frame@7.24.7': + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.1.0 '@babel/code-frame@7.25.7': dependencies: @@ -11304,6 +11389,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/generator@7.25.6': + dependencies: + '@babel/types': 7.25.7 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + '@babel/generator@7.25.7': dependencies: '@babel/types': 7.25.7 @@ -11311,6 +11403,10 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 + '@babel/helper-annotate-as-pure@7.24.7': + dependencies: + '@babel/types': 7.25.7 + '@babel/helper-annotate-as-pure@7.25.7': dependencies: '@babel/types': 7.25.7 @@ -11323,33 +11419,22 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.25.7)': + '@babel/helper-create-class-features-plugin@7.25.4(@babel/core@7.25.7)': dependencies: '@babel/core': 7.25.7 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-function-name': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.24.7(@babel/core@7.25.7) + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.7) '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 + '@babel/traverse': 7.25.6 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-environment-visitor@7.24.7': + '@babel/helper-member-expression-to-functions@7.24.8': dependencies: - '@babel/types': 7.25.7 - - '@babel/helper-function-name@7.24.7': - dependencies: - '@babel/template': 7.25.7 - '@babel/types': 7.25.7 - - '@babel/helper-member-expression-to-functions@7.24.7': - dependencies: - '@babel/traverse': 7.25.7 + '@babel/traverse': 7.25.6 '@babel/types': 7.25.7 transitivePeerDependencies: - supports-color @@ -11358,9 +11443,12 @@ snapshots: dependencies: '@babel/types': 7.25.7 - '@babel/helper-module-imports@7.22.15': + '@babel/helper-module-imports@7.24.7': dependencies: + '@babel/traverse': 7.25.6 '@babel/types': 7.25.7 + transitivePeerDependencies: + - supports-color '@babel/helper-module-imports@7.25.7': dependencies: @@ -11383,14 +11471,16 @@ snapshots: dependencies: '@babel/types': 7.25.7 + '@babel/helper-plugin-utils@7.24.8': {} + '@babel/helper-plugin-utils@7.25.7': {} - '@babel/helper-replace-supers@7.24.7(@babel/core@7.25.7)': + '@babel/helper-replace-supers@7.25.0(@babel/core@7.25.7)': dependencies: '@babel/core': 7.25.7 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color @@ -11403,17 +11493,15 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: - '@babel/traverse': 7.25.7 + '@babel/traverse': 7.25.6 '@babel/types': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/helper-split-export-declaration@7.24.7': - dependencies: - '@babel/types': 7.25.7 - '@babel/helper-string-parser@7.25.7': {} + '@babel/helper-validator-identifier@7.24.7': {} + '@babel/helper-validator-identifier@7.25.7': {} '@babel/helper-validator-option@7.25.7': {} @@ -11423,6 +11511,13 @@ snapshots: '@babel/template': 7.25.7 '@babel/types': 7.25.7 + '@babel/highlight@7.24.7': + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.0 + '@babel/highlight@7.25.7': dependencies: '@babel/helper-validator-identifier': 7.25.7 @@ -11430,43 +11525,52 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.0 + '@babel/parser@7.25.6': + dependencies: + '@babel/types': 7.25.7 + '@babel/parser@7.25.7': dependencies: '@babel/types': 7.25.7 - '@babel/plugin-proposal-decorators@7.24.1(@babel/core@7.25.7)': + '@babel/plugin-proposal-decorators@7.24.7(@babel/core@7.25.7)': dependencies: '@babel/core': 7.25.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.7) - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-decorators': 7.24.1(@babel/core@7.25.7) + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-decorators': 7.24.7(@babel/core@7.25.7) transitivePeerDependencies: - supports-color - '@babel/plugin-syntax-decorators@7.24.1(@babel/core@7.25.7)': + '@babel/plugin-syntax-decorators@7.24.7(@babel/core@7.25.7)': dependencies: '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.25.7)': + '@babel/plugin-syntax-import-attributes@7.25.6(@babel/core@7.25.7)': dependencies: '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.7)': dependencies: '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-jsx@7.25.7(@babel/core@7.25.7)': dependencies: '@babel/core': 7.25.7 '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.7)': + '@babel/plugin-syntax-typescript@7.25.4(@babel/core@7.25.7)': dependencies: '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-react-jsx-development@7.25.7(@babel/core@7.25.7)': dependencies: @@ -11478,12 +11582,12 @@ snapshots: '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.7)': dependencies: '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.7)': dependencies: '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-transform-react-jsx@7.25.7(@babel/core@7.25.7)': dependencies: @@ -11496,26 +11600,45 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-typescript@7.24.7(@babel/core@7.25.7)': + '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.25.7)': dependencies: '@babel/core': 7.25.7 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.25.7) - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.7) + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-typescript': 7.25.4(@babel/core@7.25.7) transitivePeerDependencies: - supports-color - '@babel/runtime@7.24.4': + '@babel/runtime@7.25.6': dependencies: regenerator-runtime: 0.14.1 + '@babel/template@7.25.0': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.7 + '@babel/template@7.25.7': dependencies: '@babel/code-frame': 7.25.7 '@babel/parser': 7.25.7 '@babel/types': 7.25.7 + '@babel/traverse@7.25.6': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/types': 7.25.7 + debug: 4.3.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/traverse@7.25.7': dependencies: '@babel/code-frame': 7.25.7 @@ -11534,41 +11657,45 @@ snapshots: '@babel/helper-validator-identifier': 7.25.7 to-fast-properties: 2.0.0 - '@biomejs/biome@1.8.3': + '@biomejs/biome@1.9.3': optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.8.3 - '@biomejs/cli-darwin-x64': 1.8.3 - '@biomejs/cli-linux-arm64': 1.8.3 - '@biomejs/cli-linux-arm64-musl': 1.8.3 - '@biomejs/cli-linux-x64': 1.8.3 - '@biomejs/cli-linux-x64-musl': 1.8.3 - '@biomejs/cli-win32-arm64': 1.8.3 - '@biomejs/cli-win32-x64': 1.8.3 - - '@biomejs/cli-darwin-arm64@1.8.3': + '@biomejs/cli-darwin-arm64': 1.9.3 + '@biomejs/cli-darwin-x64': 1.9.3 + '@biomejs/cli-linux-arm64': 1.9.3 + '@biomejs/cli-linux-arm64-musl': 1.9.3 + '@biomejs/cli-linux-x64': 1.9.3 + '@biomejs/cli-linux-x64-musl': 1.9.3 + '@biomejs/cli-win32-arm64': 1.9.3 + '@biomejs/cli-win32-x64': 1.9.3 + + '@biomejs/cli-darwin-arm64@1.9.3': optional: true - '@biomejs/cli-darwin-x64@1.8.3': + '@biomejs/cli-darwin-x64@1.9.3': optional: true - '@biomejs/cli-linux-arm64-musl@1.8.3': + '@biomejs/cli-linux-arm64-musl@1.9.3': optional: true - '@biomejs/cli-linux-arm64@1.8.3': + '@biomejs/cli-linux-arm64@1.9.3': optional: true - '@biomejs/cli-linux-x64-musl@1.8.3': + '@biomejs/cli-linux-x64-musl@1.9.3': optional: true - '@biomejs/cli-linux-x64@1.8.3': + '@biomejs/cli-linux-x64@1.9.3': optional: true - '@biomejs/cli-win32-arm64@1.8.3': + '@biomejs/cli-win32-arm64@1.9.3': optional: true - '@biomejs/cli-win32-x64@1.8.3': + '@biomejs/cli-win32-x64@1.9.3': optional: true + '@bluwy/giget-core@0.1.0': + dependencies: + nanotar: 0.1.1 + '@builder.io/partytown@0.10.2': {} '@changesets/apply-release-plan@7.0.5': @@ -11774,9 +11901,9 @@ snapshots: '@csstools/postcss-cascade-layers@5.0.0(postcss@8.4.47)': dependencies: - '@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.0) + '@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.2) postcss: 8.4.47 - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 '@csstools/postcss-color-function@4.0.2(postcss@8.4.47)': dependencies: @@ -11855,9 +11982,9 @@ snapshots: '@csstools/postcss-is-pseudo-class@5.0.0(postcss@8.4.47)': dependencies: - '@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.0) + '@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.2) postcss: 8.4.47 - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 '@csstools/postcss-light-dark-function@2.0.4(postcss@8.4.47)': dependencies: @@ -11942,7 +12069,7 @@ snapshots: '@csstools/postcss-scope-pseudo-class@4.0.0(postcss@8.4.47)': dependencies: postcss: 8.4.47 - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 '@csstools/postcss-stepped-value-functions@4.0.1(postcss@8.4.47)': dependencies: @@ -11968,13 +12095,13 @@ snapshots: dependencies: postcss: 8.4.47 - '@csstools/selector-resolve-nested@2.0.0(postcss-selector-parser@6.1.0)': + '@csstools/selector-resolve-nested@2.0.0(postcss-selector-parser@6.1.2)': dependencies: - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 - '@csstools/selector-specificity@4.0.0(postcss-selector-parser@6.1.0)': + '@csstools/selector-specificity@4.0.0(postcss-selector-parser@6.1.2)': dependencies: - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 '@csstools/utilities@2.0.0(postcss@8.4.47)': dependencies: @@ -12149,9 +12276,9 @@ snapshots: '@esbuild/win32-x64@0.24.0': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.12.0(jiti@1.21.0))': + '@eslint-community/eslint-utils@4.4.0(eslint@9.12.0(jiti@1.21.6))': dependencies: - eslint: 9.12.0(jiti@1.21.0) + eslint: 9.12.0(jiti@1.21.6) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.11.0': {} @@ -12172,7 +12299,7 @@ snapshots: debug: 4.3.7 espree: 10.2.0 globals: 14.0.0 - ignore: 5.3.1 + ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -12312,7 +12439,7 @@ snapshots: dependencies: tslib: 2.6.2 - '@jsonjoy.com/json-pack@1.0.4(tslib@2.6.2)': + '@jsonjoy.com/json-pack@1.1.0(tslib@2.6.2)': dependencies: '@jsonjoy.com/base64': 1.1.2(tslib@2.6.2) '@jsonjoy.com/util': 1.3.0(tslib@2.6.2) @@ -12359,7 +12486,7 @@ snapshots: '@libsql/isomorphic-ws@0.1.5': dependencies: - '@types/ws': 8.5.10 + '@types/ws': 8.5.12 ws: 8.16.0 transitivePeerDependencies: - bufferutil @@ -12388,14 +12515,14 @@ snapshots: '@manypkg/find-root@1.1.0': dependencies: - '@babel/runtime': 7.24.4 + '@babel/runtime': 7.25.6 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 '@manypkg/get-packages@1.1.3': dependencies: - '@babel/runtime': 7.24.4 + '@babel/runtime': 7.25.6 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -12466,12 +12593,12 @@ snapshots: '@polka/url@1.0.0-next.25': {} - '@preact/preset-vite@2.8.2(@babel/core@7.25.7)(preact@10.24.2)(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4))': + '@preact/preset-vite@2.8.2(@babel/core@7.25.7)(preact@10.24.2)(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4))': dependencies: '@babel/core': 7.25.7 '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.7) '@babel/plugin-transform-react-jsx-development': 7.25.7(@babel/core@7.25.7) - '@prefresh/vite': 2.4.5(preact@10.24.2)(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)) + '@prefresh/vite': 2.4.5(preact@10.24.2)(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)) '@rollup/pluginutils': 4.2.1 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.25.7) debug: 4.3.7 @@ -12481,16 +12608,16 @@ snapshots: resolve: 1.22.8 source-map: 0.7.4 stack-trace: 1.0.0-pre2 - vite: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + vite: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) transitivePeerDependencies: - preact - supports-color - '@preact/signals-core@1.7.0': {} + '@preact/signals-core@1.8.0': {} '@preact/signals@1.3.0(preact@10.24.2)': dependencies: - '@preact/signals-core': 1.7.0 + '@preact/signals-core': 1.8.0 preact: 10.24.2 '@prefresh/babel-plugin@0.5.1': {} @@ -12501,7 +12628,7 @@ snapshots: '@prefresh/utils@1.2.0': {} - '@prefresh/vite@2.4.5(preact@10.24.2)(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4))': + '@prefresh/vite@2.4.5(preact@10.24.2)(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4))': dependencies: '@babel/core': 7.25.7 '@prefresh/babel-plugin': 0.5.1 @@ -12509,7 +12636,7 @@ snapshots: '@prefresh/utils': 1.2.0 '@rollup/pluginutils': 4.2.1 preact: 10.24.2 - vite: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + vite: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) transitivePeerDependencies: - supports-color @@ -12607,26 +12734,26 @@ snapshots: dependencies: solid-js: 1.9.1 - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)))(svelte@4.2.19)(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4))': + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)))(svelte@4.2.19)(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)) + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)) debug: 4.3.7 svelte: 4.2.19 - vite: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + vite: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4))': + '@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)))(svelte@4.2.19)(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)))(svelte@4.2.19)(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)) debug: 4.3.7 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.11 svelte: 4.2.19 svelte-hmr: 0.16.0(svelte@4.2.19) - vite: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) - vitefu: 0.2.5(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)) + vite: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) + vitefu: 0.2.5(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)) transitivePeerDependencies: - supports-color @@ -12647,7 +12774,7 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.25.7 + '@babel/parser': 7.25.6 '@babel/types': 7.25.7 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 @@ -12659,7 +12786,7 @@ snapshots: '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.25.7 + '@babel/parser': 7.25.6 '@babel/types': 7.25.7 '@types/babel__traverse@7.20.6': @@ -12672,7 +12799,7 @@ snapshots: '@types/clean-css@4.2.11': dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.50 source-map: 0.6.1 '@types/common-ancestor-path@1.0.2': {} @@ -12756,7 +12883,7 @@ snapshots: '@types/node@17.0.45': {} - '@types/node@18.19.31': + '@types/node@18.19.50': dependencies: undici-types: 5.26.5 @@ -12764,7 +12891,7 @@ snapshots: '@types/prompts@2.4.9': dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.50 kleur: 3.0.3 '@types/prop-types@15.7.12': {} @@ -12782,13 +12909,13 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.50 '@types/semver@7.5.8': {} '@types/server-destroy@1.0.4': dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.50 '@types/trusted-types@2.0.7': {} @@ -12796,35 +12923,35 @@ snapshots: dependencies: source-map: 0.6.1 - '@types/ungap__structured-clone@0.3.3': {} + '@types/ungap__structured-clone@1.2.0': {} - '@types/unist@2.0.10': {} + '@types/unist@2.0.11': {} '@types/unist@3.0.3': {} '@types/which-pm-runs@1.0.2': {} - '@types/ws@8.5.10': + '@types/ws@8.5.12': dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.50 '@types/xml2js@0.4.14': dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.50 '@types/yargs-parser@21.0.3': {} - '@typescript-eslint/eslint-plugin@8.8.0(@typescript-eslint/parser@8.8.0(eslint@9.12.0(jiti@1.21.0))(typescript@5.6.2))(eslint@9.12.0(jiti@1.21.0))(typescript@5.6.2)': + '@typescript-eslint/eslint-plugin@8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.8.0(eslint@9.12.0(jiti@1.21.0))(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/type-utils': 8.8.0(eslint@9.12.0(jiti@1.21.0))(typescript@5.6.2) - '@typescript-eslint/utils': 8.8.0(eslint@9.12.0(jiti@1.21.0))(typescript@5.6.2) - '@typescript-eslint/visitor-keys': 8.8.0 - eslint: 9.12.0(jiti@1.21.0) + '@typescript-eslint/parser': 8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.8.1 + '@typescript-eslint/type-utils': 8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.8.1 + eslint: 9.12.0(jiti@1.21.6) graphemer: 1.4.0 - ignore: 5.3.1 + ignore: 5.3.2 natural-compare: 1.4.0 ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: @@ -12832,28 +12959,28 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.8.0(eslint@9.12.0(jiti@1.21.0))(typescript@5.6.2)': + '@typescript-eslint/parser@8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.6.2) - '@typescript-eslint/visitor-keys': 8.8.0 + '@typescript-eslint/scope-manager': 8.8.1 + '@typescript-eslint/types': 8.8.1 + '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.8.1 debug: 4.3.7 - eslint: 9.12.0(jiti@1.21.0) + eslint: 9.12.0(jiti@1.21.6) optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.8.0': + '@typescript-eslint/scope-manager@8.8.1': dependencies: - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/visitor-keys': 8.8.0 + '@typescript-eslint/types': 8.8.1 + '@typescript-eslint/visitor-keys': 8.8.1 - '@typescript-eslint/type-utils@8.8.0(eslint@9.12.0(jiti@1.21.0))(typescript@5.6.2)': + '@typescript-eslint/type-utils@8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.6.2) - '@typescript-eslint/utils': 8.8.0(eslint@9.12.0(jiti@1.21.0))(typescript@5.6.2) + '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.6.2) + '@typescript-eslint/utils': 8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.2) debug: 4.3.7 ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: @@ -12862,16 +12989,16 @@ snapshots: - eslint - supports-color - '@typescript-eslint/types@8.8.0': {} + '@typescript-eslint/types@8.8.1': {} - '@typescript-eslint/typescript-estree@8.8.0(typescript@5.6.2)': + '@typescript-eslint/typescript-estree@8.8.1(typescript@5.6.2)': dependencies: - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/visitor-keys': 8.8.0 + '@typescript-eslint/types': 8.8.1 + '@typescript-eslint/visitor-keys': 8.8.1 debug: 4.3.7 fast-glob: 3.3.2 is-glob: 4.0.3 - minimatch: 9.0.4 + minimatch: 9.0.5 semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: @@ -12879,20 +13006,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.8.0(eslint@9.12.0(jiti@1.21.0))(typescript@5.6.2)': + '@typescript-eslint/utils@8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0(jiti@1.21.0)) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.6.2) - eslint: 9.12.0(jiti@1.21.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0(jiti@1.21.6)) + '@typescript-eslint/scope-manager': 8.8.1 + '@typescript-eslint/types': 8.8.1 + '@typescript-eslint/typescript-estree': 8.8.1(typescript@5.6.2) + eslint: 9.12.0(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@8.8.0': + '@typescript-eslint/visitor-keys@8.8.1': dependencies: - '@typescript-eslint/types': 8.8.0 + '@typescript-eslint/types': 8.8.1 eslint-visitor-keys: 3.4.3 '@typescript/twoslash@3.1.0': @@ -12917,30 +13044,30 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-react@4.3.2(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4))': + '@vitejs/plugin-react@4.3.2(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4))': dependencies: '@babel/core': 7.25.7 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.7) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.7) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + vite: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue-jsx@4.0.1(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4))(vue@3.5.11(typescript@5.6.2))': + '@vitejs/plugin-vue-jsx@4.0.1(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4))(vue@3.5.11(typescript@5.6.2))': dependencies: '@babel/core': 7.25.7 - '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.25.7) - '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.25.7) - vite: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.7) + '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.25.7) + vite: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) vue: 3.5.11(typescript@5.6.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.1.4(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4))(vue@3.5.11(typescript@5.6.2))': + '@vitejs/plugin-vue@5.1.4(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4))(vue@3.5.11(typescript@5.6.2))': dependencies: - vite: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + vite: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) vue: 3.5.11(typescript@5.6.2) '@vitest/expect@2.1.2': @@ -12950,13 +13077,13 @@ snapshots: chai: 5.1.1 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.2(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4))': + '@vitest/mocker@2.1.2(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4))': dependencies: '@vitest/spy': 2.1.2 estree-walker: 3.0.3 magic-string: 0.30.11 optionalDependencies: - vite: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + vite: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) '@vitest/pretty-format@2.1.2': dependencies: @@ -12975,7 +13102,7 @@ snapshots: '@vitest/spy@2.1.2': dependencies: - tinyspy: 3.0.0 + tinyspy: 3.0.2 '@vitest/utils@2.1.2': dependencies: @@ -12989,7 +13116,7 @@ snapshots: '@volar/typescript': 2.4.6 typesafe-path: 0.2.2 typescript: 5.6.2 - vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 '@volar/language-core@2.4.6': @@ -13005,14 +13132,14 @@ snapshots: request-light: 0.7.0 vscode-languageserver: 9.0.1 vscode-languageserver-protocol: 3.17.5 - vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 '@volar/language-service@2.4.6': dependencies: '@volar/language-core': 2.4.6 vscode-languageserver-protocol: 3.17.5 - vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 '@volar/source-map@2.4.6': {} @@ -13027,25 +13154,24 @@ snapshots: dependencies: emmet: 2.4.7 jsonc-parser: 2.3.1 - vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 vscode-uri: 2.1.2 '@vscode/l10n@0.0.18': {} - '@vue/babel-helper-vue-transform-on@1.2.2': {} + '@vue/babel-helper-vue-transform-on@1.2.5': {} - '@vue/babel-plugin-jsx@1.2.2(@babel/core@7.25.7)': + '@vue/babel-plugin-jsx@1.2.5(@babel/core@7.25.7)': dependencies: - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.25.7) - '@babel/template': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.7) + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.6 '@babel/types': 7.25.7 - '@vue/babel-helper-vue-transform-on': 1.2.2 - '@vue/babel-plugin-resolve-type': 1.2.2(@babel/core@7.25.7) - camelcase: 6.3.0 + '@vue/babel-helper-vue-transform-on': 1.2.5 + '@vue/babel-plugin-resolve-type': 1.2.5(@babel/core@7.25.7) html-tags: 3.3.1 svg-tags: 1.0.0 optionalDependencies: @@ -13053,23 +13179,38 @@ snapshots: transitivePeerDependencies: - supports-color - '@vue/babel-plugin-resolve-type@1.2.2(@babel/core@7.25.7)': + '@vue/babel-plugin-resolve-type@1.2.5(@babel/core@7.25.7)': dependencies: - '@babel/code-frame': 7.25.7 + '@babel/code-frame': 7.24.7 '@babel/core': 7.25.7 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/parser': 7.25.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/parser': 7.25.6 '@vue/compiler-sfc': 3.5.11 + transitivePeerDependencies: + - supports-color + + '@vue/compiler-core@3.5.10': + dependencies: + '@babel/parser': 7.25.6 + '@vue/shared': 3.5.10 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 '@vue/compiler-core@3.5.11': dependencies: - '@babel/parser': 7.25.7 + '@babel/parser': 7.25.6 '@vue/shared': 3.5.11 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.0 + '@vue/compiler-dom@3.5.10': + dependencies: + '@vue/compiler-core': 3.5.10 + '@vue/shared': 3.5.10 + '@vue/compiler-dom@3.5.11': dependencies: '@vue/compiler-core': 3.5.11 @@ -13077,7 +13218,7 @@ snapshots: '@vue/compiler-sfc@3.5.11': dependencies: - '@babel/parser': 7.25.7 + '@babel/parser': 7.25.6 '@vue/compiler-core': 3.5.11 '@vue/compiler-dom': 3.5.11 '@vue/compiler-ssr': 3.5.11 @@ -13092,14 +13233,14 @@ snapshots: '@vue/compiler-dom': 3.5.11 '@vue/shared': 3.5.11 - '@vue/devtools-core@7.4.6(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4))(vue@3.5.11(typescript@5.6.2))': + '@vue/devtools-core@7.4.6(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4))(vue@3.5.11(typescript@5.6.2))': dependencies: '@vue/devtools-kit': 7.4.6 '@vue/devtools-shared': 7.4.6 mitt: 3.0.1 nanoid: 3.3.7 pathe: 1.1.2 - vite-hot-client: 0.2.3(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)) + vite-hot-client: 0.2.3(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)) vue: 3.5.11(typescript@5.6.2) transitivePeerDependencies: - vite @@ -13146,6 +13287,8 @@ snapshots: '@vue/shared@3.1.5': {} + '@vue/shared@3.5.10': {} + '@vue/shared@3.5.11': {} '@webcomponents/template-shadowroot@0.2.1': {} @@ -13197,7 +13340,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.0.1: {} + ansi-regex@6.1.0: {} ansi-styles@3.2.1: dependencies: @@ -13236,29 +13379,29 @@ snapshots: assertion-error@2.0.1: {} - astring@1.8.6: {} + astring@1.9.0: {} astro-auto-import@0.4.2(astro@packages+astro): dependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.50 acorn: 8.12.1 astro: link:packages/astro astro-embed@0.7.2(astro@packages+astro): dependencies: '@astro-community/astro-embed-integration': 0.7.1(astro@packages+astro) - '@astro-community/astro-embed-link-preview': 0.2.0 + '@astro-community/astro-embed-link-preview': 0.2.1 '@astro-community/astro-embed-twitter': 0.5.4(astro@packages+astro) - '@astro-community/astro-embed-vimeo': 0.3.7(astro@packages+astro) - '@astro-community/astro-embed-youtube': 0.5.2(astro@packages+astro) + '@astro-community/astro-embed-vimeo': 0.3.8(astro@packages+astro) + '@astro-community/astro-embed-youtube': 0.5.3(astro@packages+astro) astro: link:packages/astro astro-remote@0.3.3: dependencies: entities: 4.5.0 marked: 12.0.2 - marked-footnote: 1.2.2(marked@12.0.2) - marked-smartypants: 1.1.6(marked@12.0.2) + marked-footnote: 1.2.4(marked@12.0.2) + marked-smartypants: 1.1.8(marked@12.0.2) ultrahtml: 1.5.3 async-listen@3.0.1: {} @@ -13269,7 +13412,7 @@ snapshots: dependencies: chalk: 4.1.2 char-spinner: 1.0.1 - cli-table3: 0.6.4 + cli-table3: 0.6.5 color-support: 1.1.3 cross-argv: 2.0.0 form-data: 4.0.0 @@ -13277,7 +13420,7 @@ snapshots: hdr-histogram-js: 3.0.0 hdr-histogram-percentiles-obj: 3.0.0 http-parser-js: 0.5.8 - hyperid: 3.2.0 + hyperid: 3.3.0 lodash.chunk: 4.2.0 lodash.clonedeep: 4.5.0 lodash.flatten: 4.4.0 @@ -13293,8 +13436,8 @@ snapshots: autoprefixer@10.4.20(postcss@8.4.47): dependencies: - browserslist: 4.24.0 - caniuse-lite: 1.0.30001667 + browserslist: 4.23.3 + caniuse-lite: 1.0.30001660 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.0 @@ -13303,11 +13446,11 @@ snapshots: axobject-query@4.1.0: {} - babel-plugin-jsx-dom-expressions@0.37.19(@babel/core@7.25.7): + babel-plugin-jsx-dom-expressions@0.38.5(@babel/core@7.25.7): dependencies: '@babel/core': 7.25.7 '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.7) '@babel/types': 7.25.7 html-entities: 2.3.3 validate-html-nesting: 1.2.2 @@ -13316,10 +13459,10 @@ snapshots: dependencies: '@babel/core': 7.25.7 - babel-preset-solid@1.8.16(@babel/core@7.25.7): + babel-preset-solid@1.8.22(@babel/core@7.25.7): dependencies: '@babel/core': 7.25.7 - babel-plugin-jsx-dom-expressions: 0.37.19(@babel/core@7.25.7) + babel-plugin-jsx-dom-expressions: 0.38.5(@babel/core@7.25.7) bail@2.0.2: {} @@ -13369,10 +13512,17 @@ snapshots: dependencies: fill-range: 7.1.1 + browserslist@4.23.3: + dependencies: + caniuse-lite: 1.0.30001660 + electron-to-chromium: 1.5.22 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.3) + browserslist@4.24.0: dependencies: caniuse-lite: 1.0.30001667 - electron-to-chromium: 1.5.32 + electron-to-chromium: 1.5.33 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.24.0) @@ -13396,10 +13546,10 @@ snapshots: camelcase-css@2.0.1: {} - camelcase@6.3.0: {} - camelcase@8.0.0: {} + caniuse-lite@1.0.30001660: {} + caniuse-lite@1.0.30001667: {} canvas-confetti@1.9.3: {} @@ -13480,16 +13630,10 @@ snapshots: dependencies: readdirp: 4.0.1 - chownr@2.0.0: {} - ci-info@3.9.0: {} ci-info@4.0.0: {} - citty@0.1.6: - dependencies: - consola: 3.2.3 - clean-css@4.2.4: dependencies: source-map: 0.6.1 @@ -13500,7 +13644,7 @@ snapshots: dependencies: restore-cursor: 4.0.0 - cli-table3@0.6.4: + cli-table3@0.6.5: dependencies: string-width: 4.2.3 optionalDependencies: @@ -13570,8 +13714,6 @@ snapshots: concat-map@0.0.1: {} - consola@3.2.3: {} - content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 @@ -13601,13 +13743,13 @@ snapshots: css-blank-pseudo@7.0.0(postcss@8.4.47): dependencies: postcss: 8.4.47 - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 css-has-pseudo@7.0.0(postcss@8.4.47): dependencies: - '@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.0) + '@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.2) postcss: 8.4.47 - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 css-prefers-color-scheme@10.0.0(postcss@8.4.47): @@ -13696,8 +13838,6 @@ snapshots: define-lazy-prop@3.0.0: {} - defu@6.1.4: {} - delayed-stream@1.0.0: {} depd@1.1.2: {} @@ -13768,14 +13908,16 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.32: {} + electron-to-chromium@1.5.22: {} + + electron-to-chromium@1.5.33: {} emmet@2.4.7: dependencies: '@emmetio/abbreviation': 2.3.3 '@emmetio/css-abbreviation': 2.1.8 - emoji-regex@10.3.0: {} + emoji-regex@10.4.0: {} emoji-regex@8.0.0: {} @@ -13862,7 +14004,7 @@ snapshots: '@esbuild/win32-ia32': 0.24.0 '@esbuild/win32-x64': 0.24.0 - escalade@3.1.2: {} + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -13872,13 +14014,13 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-plugin-regexp@2.6.0(eslint@9.12.0(jiti@1.21.0)): + eslint-plugin-regexp@2.6.0(eslint@9.12.0(jiti@1.21.6)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0(jiti@1.21.0)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0(jiti@1.21.6)) '@eslint-community/regexpp': 4.11.0 comment-parser: 1.4.1 - eslint: 9.12.0(jiti@1.21.0) - jsdoc-type-pratt-parser: 4.0.0 + eslint: 9.12.0(jiti@1.21.6) + jsdoc-type-pratt-parser: 4.1.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 @@ -13892,9 +14034,9 @@ snapshots: eslint-visitor-keys@4.1.0: {} - eslint@9.12.0(jiti@1.21.0): + eslint@9.12.0(jiti@1.21.6): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0(jiti@1.21.0)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0(jiti@1.21.6)) '@eslint-community/regexpp': 4.11.0 '@eslint/config-array': 0.18.0 '@eslint/core': 0.6.0 @@ -13914,23 +14056,23 @@ snapshots: eslint-scope: 8.1.0 eslint-visitor-keys: 4.1.0 espree: 10.2.0 - esquery: 1.5.0 + esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - ignore: 5.3.1 + ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 text-table: 0.2.0 optionalDependencies: - jiti: 1.21.0 + jiti: 1.21.6 transitivePeerDependencies: - supports-color @@ -13944,7 +14086,7 @@ snapshots: esprima@4.0.1: {} - esquery@1.5.0: + esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -13970,7 +14112,7 @@ snapshots: estree-util-to-js@2.0.0: dependencies: '@types/estree-jsx': 1.0.5 - astring: 1.8.6 + astring: 1.9.0 source-map: 0.7.4 estree-util-visit@2.0.0: @@ -14004,6 +14146,10 @@ snapshots: expect-type@1.0.0: {} + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + extend@3.0.2: {} extendable-error@0.1.7: {} @@ -14079,7 +14225,7 @@ snapshots: flattie@1.1.1: {} - foreground-child@3.1.1: + foreground-child@3.3.0: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 @@ -14122,10 +14268,6 @@ snapshots: jsonfile: 4.0.0 universalify: 0.1.2 - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - fsevents@2.3.2: optional: true @@ -14144,17 +14286,6 @@ snapshots: get-stream@8.0.1: {} - giget@1.2.3: - dependencies: - citty: 0.1.6 - consola: 3.2.3 - defu: 6.1.4 - node-fetch-native: 1.6.4 - nypm: 0.3.8 - ohash: 1.1.3 - pathe: 1.1.2 - tar: 6.2.1 - github-slugger@2.0.0: {} glob-parent@5.1.2: @@ -14165,13 +14296,14 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@10.3.12: + glob@10.4.5: dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.4 + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 minipass: 7.1.2 - path-scurry: 1.10.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 globals@11.12.0: {} @@ -14182,7 +14314,7 @@ snapshots: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.3.1 + ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 @@ -14190,7 +14322,7 @@ snapshots: dependencies: '@sindresorhus/merge-streams': 2.3.0 fast-glob: 3.3.2 - ignore: 5.3.1 + ignore: 5.3.2 path-type: 5.0.0 slash: 5.1.0 unicorn-magic: 0.1.0 @@ -14199,6 +14331,13 @@ snapshots: graphemer@1.4.0: {} + gray-matter@4.0.3: + dependencies: + js-yaml: 3.14.1 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + has-async-hooks@1.0.0: {} has-flag@3.0.0: {} @@ -14232,7 +14371,7 @@ snapshots: hastscript: 8.0.0 property-information: 6.5.0 vfile: 6.0.3 - vfile-location: 5.0.2 + vfile-location: 5.0.3 web-namespaces: 2.0.1 hast-util-has-property@3.0.0: @@ -14251,7 +14390,7 @@ snapshots: dependencies: '@types/hast': 3.0.4 - hast-util-raw@9.0.2: + hast-util-raw@9.0.4: dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.3 @@ -14259,7 +14398,7 @@ snapshots: hast-util-from-parse5: 8.0.1 hast-util-to-parse5: 8.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.1.0 + mdast-util-to-hast: 13.2.0 parse5: 7.1.2 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 @@ -14315,7 +14454,7 @@ snapshots: comma-separated-tokens: 2.0.3 hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.1.0 + mdast-util-to-hast: 13.2.0 property-information: 6.5.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 @@ -14335,7 +14474,7 @@ snapshots: mdast-util-mdxjs-esm: 2.0.1 property-information: 6.5.0 space-separated-tokens: 2.0.2 - style-to-object: 1.0.6 + style-to-object: 1.0.8 unist-util-position: 5.0.0 vfile-message: 4.0.2 transitivePeerDependencies: @@ -14402,7 +14541,7 @@ snapshots: he: 1.2.0 param-case: 2.1.1 relateurl: 0.2.7 - uglify-js: 3.17.4 + uglify-js: 3.19.3 html-tags@3.3.1: {} @@ -14454,7 +14593,7 @@ snapshots: hyperdyperid@1.2.0: {} - hyperid@3.2.0: + hyperid@3.3.0: dependencies: buffer: 5.7.1 uuid: 8.3.2 @@ -14470,9 +14609,9 @@ snapshots: ieee754@1.2.1: {} - ignore@5.3.1: {} + ignore@5.3.2: {} - immutable@4.3.5: {} + immutable@4.3.7: {} import-fresh@3.3.0: dependencies: @@ -14487,7 +14626,7 @@ snapshots: inline-style-parser@0.1.1: {} - inline-style-parser@0.2.3: {} + inline-style-parser@0.2.4: {} is-alphabetical@2.0.1: {} @@ -14502,7 +14641,7 @@ snapshots: dependencies: binary-extensions: 2.3.0 - is-core-module@2.13.1: + is-core-module@2.15.1: dependencies: hasown: 2.0.2 @@ -14510,6 +14649,8 @@ snapshots: is-docker@3.0.0: {} + is-extendable@0.1.1: {} + is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} @@ -14552,13 +14693,13 @@ snapshots: isexe@2.0.0: {} - jackspeak@2.3.6: + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jiti@1.21.0: {} + jiti@1.21.6: {} js-base64@3.7.7: {} @@ -14573,7 +14714,7 @@ snapshots: dependencies: argparse: 2.0.1 - jsdoc-type-pratt-parser@4.0.0: {} + jsdoc-type-pratt-parser@4.1.0: {} jsdom@23.2.0: dependencies: @@ -14590,7 +14731,7 @@ snapshots: rrweb-cssom: 0.6.0 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 4.1.3 + tough-cookie: 4.1.4 w3c-xmlserializer: 5.0.0 webidl-conversions: 7.0.0 whatwg-encoding: 3.1.1 @@ -14603,6 +14744,8 @@ snapshots: - supports-color - utf-8-validate + jsesc@2.5.2: {} + jsesc@3.0.2: {} json-buffer@3.0.1: {} @@ -14617,7 +14760,7 @@ snapshots: jsonc-parser@2.3.1: {} - jsonc-parser@3.2.1: {} + jsonc-parser@3.3.1: {} jsonfile@4.0.0: optionalDependencies: @@ -14631,7 +14774,7 @@ snapshots: just-map-values@3.2.0: {} - katex@0.16.10: + katex@0.16.11: dependencies: commander: 8.3.0 @@ -14639,6 +14782,8 @@ snapshots: dependencies: json-buffer: 3.0.1 + kind-of@6.0.3: {} + kleur@3.0.3: {} kleur@4.1.5: {} @@ -14665,7 +14810,7 @@ snapshots: lilconfig@2.1.0: {} - lilconfig@3.1.1: {} + lilconfig@3.1.2: {} lines-and-columns@1.2.4: {} @@ -14701,7 +14846,7 @@ snapshots: lit-element: 4.1.0 lit-html: 3.2.0 - lite-youtube-embed@0.3.2: {} + lite-youtube-embed@0.3.3: {} load-yaml-file@0.2.0: dependencies: @@ -14756,7 +14901,7 @@ snapshots: dependencies: tslib: 2.6.2 - lru-cache@10.2.0: {} + lru-cache@10.4.3: {} lru-cache@4.1.5: dependencies: @@ -14779,7 +14924,7 @@ snapshots: magicast@0.3.5: dependencies: - '@babel/parser': 7.25.7 + '@babel/parser': 7.25.6 '@babel/types': 7.25.7 source-map-js: 1.2.1 @@ -14789,11 +14934,11 @@ snapshots: markdown-table@3.0.3: {} - marked-footnote@1.2.2(marked@12.0.2): + marked-footnote@1.2.4(marked@12.0.2): dependencies: marked: 12.0.2 - marked-smartypants@1.1.6(marked@12.0.2): + marked-smartypants@1.1.8(marked@12.0.2): dependencies: marked: 12.0.2 smartypants: 0.2.2 @@ -14820,7 +14965,7 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - mdast-util-from-markdown@2.0.0: + mdast-util-from-markdown@2.0.1: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 @@ -14837,7 +14982,7 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-gfm-autolink-literal@2.0.0: + mdast-util-gfm-autolink-literal@2.0.1: dependencies: '@types/mdast': 4.0.4 ccount: 2.0.1 @@ -14849,7 +14994,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 micromark-util-normalize-identifier: 2.0.0 transitivePeerDependencies: @@ -14858,7 +15003,7 @@ snapshots: mdast-util-gfm-strikethrough@2.0.0: dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color @@ -14868,7 +15013,7 @@ snapshots: '@types/mdast': 4.0.4 devlop: 1.1.0 markdown-table: 3.0.3 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color @@ -14877,15 +15022,15 @@ snapshots: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color mdast-util-gfm@3.0.0: dependencies: - mdast-util-from-markdown: 2.0.0 - mdast-util-gfm-autolink-literal: 2.0.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-gfm-autolink-literal: 2.0.1 mdast-util-gfm-footnote: 2.0.0 mdast-util-gfm-strikethrough: 2.0.0 mdast-util-gfm-table: 2.0.0 @@ -14900,30 +15045,19 @@ snapshots: '@types/mdast': 4.0.4 devlop: 1.1.0 longest-streak: 3.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 unist-util-remove-position: 5.0.0 transitivePeerDependencies: - supports-color - mdast-util-mdx-expression@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - mdast-util-mdx-expression@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color @@ -14936,7 +15070,7 @@ snapshots: '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 parse-entities: 4.0.1 stringify-entities: 4.0.4 @@ -14947,8 +15081,8 @@ snapshots: mdast-util-mdx@3.0.0: dependencies: - mdast-util-from-markdown: 2.0.0 - mdast-util-mdx-expression: 2.0.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-mdx-expression: 2.0.1 mdast-util-mdx-jsx: 3.1.3 mdast-util-mdxjs-esm: 2.0.1 mdast-util-to-markdown: 2.1.0 @@ -14961,7 +15095,7 @@ snapshots: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color @@ -14971,7 +15105,7 @@ snapshots: '@types/mdast': 4.0.4 unist-util-is: 6.0.0 - mdast-util-to-hast@13.1.0: + mdast-util-to-hast@13.2.0: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 @@ -14998,10 +15132,10 @@ snapshots: dependencies: '@types/mdast': 4.0.4 - mdast-util-toc@7.0.0: + mdast-util-toc@7.1.0: dependencies: '@types/mdast': 4.0.4 - '@types/ungap__structured-clone': 0.3.3 + '@types/ungap__structured-clone': 1.2.0 '@ungap/structured-clone': 1.2.0 github-slugger: 2.0.0 mdast-util-to-string: 4.0.0 @@ -15016,9 +15150,9 @@ snapshots: memfs@4.12.0: dependencies: - '@jsonjoy.com/json-pack': 1.0.4(tslib@2.6.2) + '@jsonjoy.com/json-pack': 1.1.0(tslib@2.6.2) '@jsonjoy.com/util': 1.3.0(tslib@2.6.2) - tree-dump: 1.0.1(tslib@2.6.2) + tree-dump: 1.0.2(tslib@2.6.2) tslib: 2.6.2 merge-anything@5.1.7: @@ -15035,7 +15169,7 @@ snapshots: mhchemparser@4.2.1: {} - micromark-core-commonmark@2.0.0: + micromark-core-commonmark@2.0.1: dependencies: decode-named-character-reference: 1.0.2 devlop: 1.1.0 @@ -15050,21 +15184,21 @@ snapshots: micromark-util-html-tag-name: 2.0.0 micromark-util-normalize-identifier: 2.0.0 micromark-util-resolve-all: 2.0.0 - micromark-util-subtokenize: 2.0.0 + micromark-util-subtokenize: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-extension-gfm-autolink-literal@2.0.0: + micromark-extension-gfm-autolink-literal@2.1.0: dependencies: micromark-util-character: 2.1.0 micromark-util-sanitize-uri: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-extension-gfm-footnote@2.0.0: + micromark-extension-gfm-footnote@2.1.0: dependencies: devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 + micromark-core-commonmark: 2.0.1 micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-normalize-identifier: 2.0.0 @@ -15072,7 +15206,7 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-extension-gfm-strikethrough@2.0.0: + micromark-extension-gfm-strikethrough@2.1.0: dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 @@ -15081,7 +15215,7 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-extension-gfm-table@2.0.0: + micromark-extension-gfm-table@2.1.0: dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 @@ -15093,7 +15227,7 @@ snapshots: dependencies: micromark-util-types: 2.0.0 - micromark-extension-gfm-task-list-item@2.0.1: + micromark-extension-gfm-task-list-item@2.1.0: dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 @@ -15103,20 +15237,20 @@ snapshots: micromark-extension-gfm@3.0.0: dependencies: - micromark-extension-gfm-autolink-literal: 2.0.0 - micromark-extension-gfm-footnote: 2.0.0 - micromark-extension-gfm-strikethrough: 2.0.0 - micromark-extension-gfm-table: 2.0.0 + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.0 micromark-extension-gfm-tagfilter: 2.0.0 - micromark-extension-gfm-task-list-item: 2.0.1 + micromark-extension-gfm-task-list-item: 2.1.0 micromark-util-combine-extensions: 2.0.0 micromark-util-types: 2.0.0 - micromark-extension-math@3.0.0: + micromark-extension-math@3.1.0: dependencies: '@types/katex': 0.16.7 devlop: 1.1.0 - katex: 0.16.10 + katex: 0.16.11 micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 @@ -15126,22 +15260,23 @@ snapshots: dependencies: '@types/estree': 1.0.6 devlop: 1.1.0 - micromark-factory-mdx-expression: 2.0.1 + micromark-factory-mdx-expression: 2.0.2 micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-events-to-acorn: 2.0.2 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-extension-mdx-jsx@3.0.0: + micromark-extension-mdx-jsx@3.0.1: dependencies: '@types/acorn': 4.0.6 '@types/estree': 1.0.6 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.1 + micromark-factory-mdx-expression: 2.0.2 micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 vfile-message: 4.0.2 @@ -15154,7 +15289,7 @@ snapshots: dependencies: '@types/estree': 1.0.6 devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 + micromark-core-commonmark: 2.0.1 micromark-util-character: 2.1.0 micromark-util-events-to-acorn: 2.0.2 micromark-util-symbol: 2.0.0 @@ -15167,7 +15302,7 @@ snapshots: acorn: 8.12.1 acorn-jsx: 5.3.2(acorn@8.12.1) micromark-extension-mdx-expression: 3.0.0 - micromark-extension-mdx-jsx: 3.0.0 + micromark-extension-mdx-jsx: 3.0.1 micromark-extension-mdx-md: 2.0.0 micromark-extension-mdxjs-esm: 3.0.0 micromark-util-combine-extensions: 2.0.0 @@ -15186,10 +15321,11 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - micromark-factory-mdx-expression@2.0.1: + micromark-factory-mdx-expression@2.0.2: dependencies: '@types/estree': 1.0.6 devlop: 1.1.0 + micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-events-to-acorn: 2.0.2 micromark-util-symbol: 2.0.0 @@ -15276,7 +15412,7 @@ snapshots: micromark-util-encode: 2.0.0 micromark-util-symbol: 2.0.0 - micromark-util-subtokenize@2.0.0: + micromark-util-subtokenize@2.0.1: dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 @@ -15293,7 +15429,7 @@ snapshots: debug: 4.3.7 decode-named-character-reference: 1.0.2 devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 + micromark-core-commonmark: 2.0.1 micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-chunked: 2.0.0 @@ -15303,7 +15439,7 @@ snapshots: micromark-util-normalize-identifier: 2.0.0 micromark-util-resolve-all: 2.0.0 micromark-util-sanitize-uri: 2.0.0 - micromark-util-subtokenize: 2.0.0 + micromark-util-subtokenize: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 transitivePeerDependencies: @@ -15332,31 +15468,18 @@ snapshots: dependencies: brace-expansion: 1.1.11 - minimatch@9.0.4: + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 minimist@1.2.8: {} - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - - minipass@5.0.0: {} - minipass@7.1.2: {} - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - mitt@3.0.1: {} mj-context-menu@0.6.1: {} - mkdirp@1.0.4: {} - mri@1.2.0: {} mrmime@2.0.0: {} @@ -15379,6 +15502,8 @@ snapshots: nanostores@0.11.3: {} + nanotar@0.1.1: {} + natural-compare@1.4.0: {} negotiator@0.6.3: {} @@ -15400,8 +15525,6 @@ snapshots: node-domexception@1.0.0: {} - node-fetch-native@1.6.4: {} - node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 @@ -15417,7 +15540,7 @@ snapshots: css-select: 5.1.0 he: 1.2.0 - node-mocks-http@1.16.1(@types/node@18.19.31): + node-mocks-http@1.16.1(@types/node@18.19.50): dependencies: accepts: 1.3.8 content-disposition: 0.5.4 @@ -15430,7 +15553,7 @@ snapshots: range-parser: 1.2.1 type-is: 1.6.18 optionalDependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.50 node-releases@2.0.18: {} @@ -15448,20 +15571,10 @@ snapshots: dependencies: boolbase: 1.0.0 - nypm@0.3.8: - dependencies: - citty: 0.1.6 - consola: 3.2.3 - execa: 8.0.1 - pathe: 1.1.2 - ufo: 1.5.3 - object-assign@4.1.1: {} object-hash@3.0.0: {} - ohash@1.1.3: {} - on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -15493,14 +15606,14 @@ snapshots: is-inside-container: 1.0.0 is-wsl: 3.1.0 - optionator@0.9.3: + optionator@0.9.4: dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 + word-wrap: 1.2.5 os-tmpdir@1.0.2: {} @@ -15541,6 +15654,8 @@ snapshots: p-try@2.2.0: {} + package-json-from-dist@1.0.0: {} + package-manager-detector@0.2.0: {} pako@1.0.11: {} @@ -15555,7 +15670,7 @@ snapshots: parse-entities@4.0.1: dependencies: - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 character-entities: 2.0.2 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 @@ -15607,9 +15722,9 @@ snapshots: path-parse@1.0.7: {} - path-scurry@1.10.2: + path-scurry@1.11.1: dependencies: - lru-cache: 10.2.0 + lru-cache: 10.4.3 minipass: 7.1.2 path-type@4.0.0: {} @@ -15655,7 +15770,7 @@ snapshots: postcss-attribute-case-insensitive@7.0.0(postcss@8.4.47): dependencies: postcss: 8.4.47 - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 postcss-clamp@4.1.0(postcss@8.4.47): dependencies: @@ -15706,12 +15821,12 @@ snapshots: '@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1) '@csstools/css-tokenizer': 3.0.1 postcss: 8.4.47 - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 postcss-dir-pseudo-class@9.0.0(postcss@8.4.47): dependencies: postcss: 8.4.47 - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 postcss-double-position-gradients@6.0.0(postcss@8.4.47): dependencies: @@ -15723,12 +15838,12 @@ snapshots: postcss-focus-visible@10.0.0(postcss@8.4.47): dependencies: postcss: 8.4.47 - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 postcss-focus-within@9.0.0(postcss@8.4.47): dependencies: postcss: 8.4.47 - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 postcss-font-variant@5.0.0(postcss@8.4.47): dependencies: @@ -15767,8 +15882,8 @@ snapshots: postcss-load-config@4.0.2(postcss@8.4.47): dependencies: - lilconfig: 3.1.1 - yaml: 2.5.0 + lilconfig: 3.1.2 + yaml: 2.5.1 optionalDependencies: postcss: 8.4.47 @@ -15780,14 +15895,14 @@ snapshots: postcss-nested@6.0.1(postcss@8.4.47): dependencies: postcss: 8.4.47 - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 postcss-nesting@13.0.0(postcss@8.4.47): dependencies: - '@csstools/selector-resolve-nested': 2.0.0(postcss-selector-parser@6.1.0) - '@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.0) + '@csstools/selector-resolve-nested': 2.0.0(postcss-selector-parser@6.1.2) + '@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.2) postcss: 8.4.47 - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 postcss-opacity-percentage@3.0.0(postcss@8.4.47): dependencies: @@ -15840,7 +15955,7 @@ snapshots: '@csstools/postcss-trigonometric-functions': 4.0.1(postcss@8.4.47) '@csstools/postcss-unset-value': 4.0.0(postcss@8.4.47) autoprefixer: 10.4.20(postcss@8.4.47) - browserslist: 4.24.0 + browserslist: 4.23.3 css-blank-pseudo: 7.0.0(postcss@8.4.47) css-has-pseudo: 7.0.0(postcss@8.4.47) css-prefers-color-scheme: 10.0.0(postcss@8.4.47) @@ -15875,7 +15990,7 @@ snapshots: postcss-pseudo-class-any-link@10.0.0(postcss@8.4.47): dependencies: postcss: 8.4.47 - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 postcss-replace-overflow-wrap@4.0.0(postcss@8.4.47): dependencies: @@ -15884,9 +15999,9 @@ snapshots: postcss-selector-not@8.0.0(postcss@8.4.47): dependencies: postcss: 8.4.47 - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 - postcss-selector-parser@6.1.0: + postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 @@ -16052,7 +16167,7 @@ snapshots: rehype-raw@7.0.0: dependencies: '@types/hast': 3.0.4 - hast-util-raw: 9.0.2 + hast-util-raw: 9.0.4 vfile: 6.0.3 rehype-slug@6.0.0: @@ -16103,7 +16218,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 mdast-util-math: 3.0.0 - micromark-extension-math: 3.0.0 + micromark-extension-math: 3.1.0 unified: 11.0.5 transitivePeerDependencies: - supports-color @@ -16118,7 +16233,7 @@ snapshots: remark-parse@11.0.0: dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.0 + mdast-util-from-markdown: 2.0.1 micromark-util-types: 2.0.0 unified: 11.0.5 transitivePeerDependencies: @@ -16128,13 +16243,13 @@ snapshots: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.1.0 + mdast-util-to-hast: 13.2.0 unified: 11.0.5 vfile: 6.0.3 remark-shiki-twoslash@3.1.3(typescript@5.6.2): dependencies: - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 '@typescript/twoslash': 3.1.0 '@typescript/vfs': 1.3.4 fenceparser: 1.1.1 @@ -16150,7 +16265,7 @@ snapshots: remark-smartypants@3.0.2: dependencies: retext: 9.0.0 - retext-smartypants: 6.1.0 + retext-smartypants: 6.1.1 unified: 11.0.5 unist-util-visit: 5.0.0 @@ -16163,7 +16278,7 @@ snapshots: remark-toc@9.0.0: dependencies: '@types/mdast': 4.0.4 - mdast-util-toc: 7.0.0 + mdast-util-toc: 7.1.0 request-light@0.5.8: {} @@ -16181,7 +16296,7 @@ snapshots: resolve@1.22.8: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -16196,7 +16311,7 @@ snapshots: parse-latin: 7.0.0 unified: 11.0.5 - retext-smartypants@6.1.0: + retext-smartypants@6.1.1: dependencies: '@types/nlcst': 2.0.3 nlcst-to-string: 4.0.0 @@ -16264,10 +16379,10 @@ snapshots: sass@1.79.4: dependencies: chokidar: 4.0.1 - immutable: 4.3.5 - source-map-js: 1.2.0 + immutable: 4.3.7 + source-map-js: 1.2.1 - sax@1.3.0: {} + sax@1.4.1: {} saxes@6.0.0: dependencies: @@ -16285,6 +16400,11 @@ snapshots: refa: 0.12.1 regexp-ast-analysis: 0.7.1 + section-matter@1.0.0: + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 + semver@6.3.1: {} semver@7.6.3: {} @@ -16385,7 +16505,7 @@ snapshots: shiki@0.10.1: dependencies: - jsonc-parser: 3.2.1 + jsonc-parser: 3.3.1 vscode-oniguruma: 1.7.0 vscode-textmate: 5.2.0 @@ -16430,7 +16550,7 @@ snapshots: '@types/node': 17.0.45 '@types/sax': 1.2.7 arg: 5.0.2 - sax: 1.3.0 + sax: 1.4.1 slash@3.0.0: {} @@ -16451,8 +16571,8 @@ snapshots: solid-refresh@0.6.3(solid-js@1.9.1): dependencies: - '@babel/generator': 7.25.7 - '@babel/helper-module-imports': 7.25.7 + '@babel/generator': 7.25.6 + '@babel/helper-module-imports': 7.24.7 '@babel/types': 7.25.7 solid-js: 1.9.1 transitivePeerDependencies: @@ -16507,7 +16627,7 @@ snapshots: string-width@7.2.0: dependencies: - emoji-regex: 10.3.0 + emoji-regex: 10.4.0 get-east-asian-width: 1.2.0 strip-ansi: 7.1.0 @@ -16522,7 +16642,9 @@ snapshots: strip-ansi@7.1.0: dependencies: - ansi-regex: 6.0.1 + ansi-regex: 6.1.0 + + strip-bom-string@1.0.0: {} strip-bom@3.0.0: {} @@ -16538,9 +16660,9 @@ snapshots: dependencies: inline-style-parser: 0.1.1 - style-to-object@1.0.6: + style-to-object@1.0.8: dependencies: - inline-style-parser: 0.2.3 + inline-style-parser: 0.2.4 subarg@1.0.0: dependencies: @@ -16550,7 +16672,7 @@ snapshots: dependencies: '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 - glob: 10.3.12 + glob: 10.4.5 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 @@ -16609,7 +16731,7 @@ snapshots: svg-tags@1.0.0: {} - svgo@3.2.0: + svgo@3.3.2: dependencies: '@trysound/sax': 0.2.0 commander: 7.2.0 @@ -16631,7 +16753,7 @@ snapshots: fast-glob: 3.3.2 glob-parent: 6.0.2 is-glob: 4.0.3 - jiti: 1.21.0 + jiti: 1.21.6 lilconfig: 2.1.0 micromatch: 4.0.8 normalize-path: 3.0.0 @@ -16642,21 +16764,12 @@ snapshots: postcss-js: 4.0.1(postcss@8.4.47) postcss-load-config: 4.0.2(postcss@8.4.47) postcss-nested: 6.0.1(postcss@8.4.47) - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 resolve: 1.22.8 sucrase: 3.35.0 transitivePeerDependencies: - ts-node - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - term-size@2.2.1: {} terminal-link@3.0.0: @@ -16684,11 +16797,11 @@ snapshots: tinyexec@0.3.0: {} - tinypool@1.0.0: {} + tinypool@1.0.1: {} tinyrainbow@1.2.0: {} - tinyspy@3.0.0: {} + tinyspy@3.0.2: {} tmp@0.0.33: dependencies: @@ -16706,7 +16819,7 @@ snapshots: totalist@3.0.1: {} - tough-cookie@4.1.3: + tough-cookie@4.1.4: dependencies: psl: 1.9.0 punycode: 2.3.1 @@ -16719,7 +16832,7 @@ snapshots: dependencies: punycode: 2.3.1 - tree-dump@1.0.1(tslib@2.6.2): + tree-dump@1.0.2(tslib@2.6.2): dependencies: tslib: 2.6.2 @@ -16795,11 +16908,11 @@ snapshots: dependencies: semver: 7.6.3 - typescript-eslint@8.8.0(eslint@9.12.0(jiti@1.21.0))(typescript@5.6.2): + typescript-eslint@8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.8.0(@typescript-eslint/parser@8.8.0(eslint@9.12.0(jiti@1.21.0))(typescript@5.6.2))(eslint@9.12.0(jiti@1.21.0))(typescript@5.6.2) - '@typescript-eslint/parser': 8.8.0(eslint@9.12.0(jiti@1.21.0))(typescript@5.6.2) - '@typescript-eslint/utils': 8.8.0(eslint@9.12.0(jiti@1.21.0))(typescript@5.6.2) + '@typescript-eslint/eslint-plugin': 8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/parser': 8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 8.8.1(eslint@9.12.0(jiti@1.21.6))(typescript@5.6.2) optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: @@ -16808,9 +16921,7 @@ snapshots: typescript@5.6.2: {} - ufo@1.5.3: {} - - uglify-js@3.17.4: {} + uglify-js@3.19.3: {} uhyphen@0.2.0: {} @@ -16865,7 +16976,7 @@ snapshots: unist-util-select@4.0.3: dependencies: - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 css-selector-parser: 1.4.1 nth-check: 2.1.1 zwitch: 2.0.4 @@ -16884,7 +16995,7 @@ snapshots: unist-util-visit-parents@3.1.1: dependencies: - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 unist-util-is: 4.1.0 unist-util-visit-parents@6.0.1: @@ -16898,7 +17009,7 @@ snapshots: unist-util-visit@2.0.3: dependencies: - '@types/unist': 2.0.10 + '@types/unist': 2.0.11 unist-util-is: 4.1.0 unist-util-visit-parents: 3.1.1 @@ -16914,10 +17025,16 @@ snapshots: universalify@2.0.1: {} + update-browserslist-db@1.1.0(browserslist@4.23.3): + dependencies: + browserslist: 4.23.3 + escalade: 3.2.0 + picocolors: 1.1.0 + update-browserslist-db@1.1.0(browserslist@4.24.0): dependencies: browserslist: 4.24.0 - escalade: 3.1.2 + escalade: 3.2.0 picocolors: 1.1.0 upper-case@1.1.3: {} @@ -16939,7 +17056,7 @@ snapshots: validate-html-nesting@1.2.2: {} - vfile-location@5.0.2: + vfile-location@5.0.3: dependencies: '@types/unist': 3.0.3 vfile: 6.0.3 @@ -16954,16 +17071,16 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-hot-client@0.2.3(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)): + vite-hot-client@0.2.3(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)): dependencies: - vite: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + vite: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) - vite-node@2.1.2(@types/node@18.19.31)(sass@1.79.4): + vite-node@2.1.2(@types/node@18.19.50)(sass@1.79.4): dependencies: cac: 6.7.14 debug: 4.3.7 pathe: 1.1.2 - vite: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + vite: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) transitivePeerDependencies: - '@types/node' - less @@ -16975,7 +17092,7 @@ snapshots: - supports-color - terser - vite-plugin-inspect@0.8.7(rollup@4.24.0)(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)): + vite-plugin-inspect@0.8.7(rollup@4.24.0)(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)): dependencies: '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.1.2(rollup@4.24.0) @@ -16986,82 +17103,82 @@ snapshots: perfect-debounce: 1.0.0 picocolors: 1.1.0 sirv: 2.0.4 - vite: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + vite: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) transitivePeerDependencies: - rollup - supports-color - vite-plugin-solid@2.10.2(solid-js@1.9.1)(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)): + vite-plugin-solid@2.10.2(solid-js@1.9.1)(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)): dependencies: '@babel/core': 7.25.7 '@types/babel__core': 7.20.5 - babel-preset-solid: 1.8.16(@babel/core@7.25.7) + babel-preset-solid: 1.8.22(@babel/core@7.25.7) merge-anything: 5.1.7 solid-js: 1.9.1 solid-refresh: 0.6.3(solid-js@1.9.1) - vite: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) - vitefu: 0.2.5(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)) + vite: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) + vitefu: 0.2.5(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)) transitivePeerDependencies: - supports-color - vite-plugin-vue-devtools@7.4.6(rollup@4.24.0)(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4))(vue@3.5.11(typescript@5.6.2)): + vite-plugin-vue-devtools@7.4.6(rollup@4.24.0)(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4))(vue@3.5.11(typescript@5.6.2)): dependencies: - '@vue/devtools-core': 7.4.6(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4))(vue@3.5.11(typescript@5.6.2)) + '@vue/devtools-core': 7.4.6(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4))(vue@3.5.11(typescript@5.6.2)) '@vue/devtools-kit': 7.4.6 '@vue/devtools-shared': 7.4.6 execa: 8.0.1 sirv: 2.0.4 - vite: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) - vite-plugin-inspect: 0.8.7(rollup@4.24.0)(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)) - vite-plugin-vue-inspector: 5.2.0(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)) + vite: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) + vite-plugin-inspect: 0.8.7(rollup@4.24.0)(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)) + vite-plugin-vue-inspector: 5.2.0(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)) transitivePeerDependencies: - '@nuxt/kit' - rollup - supports-color - vue - vite-plugin-vue-inspector@5.2.0(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)): + vite-plugin-vue-inspector@5.2.0(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)): dependencies: '@babel/core': 7.25.7 - '@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.25.7) - '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.25.7) + '@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.25.7) + '@babel/plugin-syntax-import-attributes': 7.25.6(@babel/core@7.25.7) '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.7) - '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.25.7) - '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.25.7) - '@vue/compiler-dom': 3.5.11 + '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.7) + '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.25.7) + '@vue/compiler-dom': 3.5.10 kolorist: 1.8.0 magic-string: 0.30.11 - vite: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + vite: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) transitivePeerDependencies: - supports-color vite-svg-loader@5.1.0(vue@3.5.11(typescript@5.6.2)): dependencies: - svgo: 3.2.0 + svgo: 3.3.2 vue: 3.5.11(typescript@5.6.2) - vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4): + vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4): dependencies: esbuild: 0.24.0 postcss: 8.4.47 rollup: 4.24.0 optionalDependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.50 fsevents: 2.3.3 sass: 1.79.4 - vitefu@0.2.5(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)): + vitefu@0.2.5(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)): optionalDependencies: - vite: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + vite: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) - vitefu@1.0.2(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)): + vitefu@1.0.2(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)): optionalDependencies: - vite: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) + vite: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) - vitest@2.1.2(@types/node@18.19.31)(jsdom@23.2.0)(sass@1.79.4): + vitest@2.1.2(@types/node@18.19.50)(jsdom@23.2.0)(sass@1.79.4): dependencies: '@vitest/expect': 2.1.2 - '@vitest/mocker': 2.1.2(vite@6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4)) + '@vitest/mocker': 2.1.2(vite@6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4)) '@vitest/pretty-format': 2.1.2 '@vitest/runner': 2.1.2 '@vitest/snapshot': 2.1.2 @@ -17074,13 +17191,13 @@ snapshots: std-env: 3.7.0 tinybench: 2.9.0 tinyexec: 0.3.0 - tinypool: 1.0.0 + tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 6.0.0-beta.2(@types/node@18.19.31)(sass@1.79.4) - vite-node: 2.1.2(@types/node@18.19.31)(sass@1.79.4) + vite: 6.0.0-beta.2(@types/node@18.19.50)(sass@1.79.4) + vite-node: 2.1.2(@types/node@18.19.50)(sass@1.79.4) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 18.19.31 + '@types/node': 18.19.50 jsdom: 23.2.0 transitivePeerDependencies: - less @@ -17095,8 +17212,8 @@ snapshots: volar-service-css@0.0.61(@volar/language-service@2.4.6): dependencies: - vscode-css-languageservice: 6.3.0 - vscode-languageserver-textdocument: 1.0.11 + vscode-css-languageservice: 6.3.1 + vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 optionalDependencies: '@volar/language-service': 2.4.6 @@ -17112,8 +17229,8 @@ snapshots: volar-service-html@0.0.61(@volar/language-service@2.4.6): dependencies: - vscode-html-languageservice: 5.3.0 - vscode-languageserver-textdocument: 1.0.11 + vscode-html-languageservice: 5.3.1 + vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 optionalDependencies: '@volar/language-service': 2.4.6 @@ -17136,7 +17253,7 @@ snapshots: path-browserify: 1.0.1 semver: 7.6.3 typescript-auto-import-cache: 0.3.3 - vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-textdocument: 1.0.12 vscode-nls: 5.2.0 vscode-uri: 3.0.8 optionalDependencies: @@ -17149,24 +17266,24 @@ snapshots: optionalDependencies: '@volar/language-service': 2.4.6 - vscode-css-languageservice@6.3.0: + vscode-css-languageservice@6.3.1: dependencies: '@vscode/l10n': 0.0.18 - vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 vscode-uri: 3.0.8 - vscode-html-languageservice@5.3.0: + vscode-html-languageservice@5.3.1: dependencies: '@vscode/l10n': 0.0.18 - vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 vscode-uri: 3.0.8 vscode-json-languageservice@4.1.8: dependencies: - jsonc-parser: 3.2.1 - vscode-languageserver-textdocument: 1.0.11 + jsonc-parser: 3.3.1 + vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 vscode-nls: 5.2.0 vscode-uri: 3.0.8 @@ -17185,7 +17302,7 @@ snapshots: vscode-jsonrpc: 8.2.0 vscode-languageserver-types: 3.17.5 - vscode-languageserver-textdocument@1.0.11: {} + vscode-languageserver-textdocument@1.0.12: {} vscode-languageserver-types@3.16.0: {} @@ -17274,6 +17391,8 @@ snapshots: dependencies: string-width: 7.2.0 + word-wrap@1.2.5: {} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -17298,7 +17417,7 @@ snapshots: xml2js@0.6.2: dependencies: - sax: 1.3.0 + sax: 1.4.1 xmlbuilder: 11.0.1 xmlbuilder@11.0.1: {} @@ -17315,8 +17434,6 @@ snapshots: yallist@3.1.1: {} - yallist@4.0.0: {} - yaml-language-server@1.15.0: dependencies: ajv: 8.17.1 @@ -17324,7 +17441,7 @@ snapshots: request-light: 0.5.8 vscode-json-languageservice: 4.1.8 vscode-languageserver: 7.0.0 - vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 vscode-nls: 5.2.0 vscode-uri: 3.0.8 @@ -17334,14 +17451,14 @@ snapshots: yaml@2.2.2: {} - yaml@2.5.0: {} + yaml@2.5.1: {} yargs-parser@21.1.1: {} yargs@17.7.2: dependencies: cliui: 8.0.1 - escalade: 3.1.2 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 |