From 5a130ffe4841e94dab13d9a6d6dd9577f50db3cf Mon Sep 17 00:00:00 2001 From: Ben Holmes Date: Fri, 27 May 2022 16:56:18 -0400 Subject: [PATCH 01/41] New: markdown `rawContent()` and `compiledContent()` helpers (#668) * new: rawContent and rawContent.html docs with examples * format: tab code blocks inline with bullets * fix: reading time ex syntax errors * edit: change to new content.raw() and content.compiled() * nit: capitalize Markdown * refactor: change API to rawContent, compiledContent --- src/pages/en/guides/markdown-content.md | 36 +++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/pages/en/guides/markdown-content.md b/src/pages/en/guides/markdown-content.md index 721808f7464f4..bd799dd122a79 100644 --- a/src/pages/en/guides/markdown-content.md +++ b/src/pages/en/guides/markdown-content.md @@ -222,6 +222,42 @@ Each Markdown file exports the following properties: - `file`: The absolute path of this file (e.g. `/home/user/projects/.../file.md`). - `url`: If it's a page, URL of the page (e.g. `/en/guides/markdown-content`). - `getHeaders()`: An async function that returns the headers of the Markdown file. The response follows this type: `{ depth: number; slug: string; text: string }[]`. +- `rawContent()`: A function that returns the raw content of the Markdown file (excluding the frontmatter block) as a string. This is helpful when, say, calculating "minutes read." This example uses the [popular reading-time package](https://www.npmjs.com/package/reading-time): + + ```astro + --- + import readingTime from 'reading-time'; + const posts = await Astro.glob('./posts/**/*.md'); + --- + + {posts.map((post) => ( + +

{post.frontmatter.title}

+

{readingTime(post.rawContent()).text}

+
+ ))} + ``` + +- `compiledContent()`: An asynchronous function that returns the raw content parsed to valid Astro syntax. Note: **This does not parse `{jsx expressions}`, `` or layouts**! Only standard Markdown blocks like `## headings` and `- lists` will be parsed to HTML. This is useful when, say, rendering a summary block for a blog post. Since Astro syntax is valid HTML, we can use popular libraries like [node-html-parser](https://www.npmjs.com/package/node-html-parser) to query for the first paragraph like so: + + ```astro + --- + import { parse } from 'node-html-parser'; + const posts = await Astro.glob('./posts/**/*.md'); + --- + + {posts.map(async (post) => { + const firstParagraph = parse(await post.compiledContent()) + .querySelector('p:first-of-type'); + return ( + +

{post.frontmatter.title}

+ {firstParagraph ?

{firstParagraph.innerText}

: null} +
+ ); + })} + ``` + - `Content`: A component that renders the contents of the Markdown file. Here is an example: ```astro From a5279885203710bcff84e526a66dd0dcd14160a0 Mon Sep 17 00:00:00 2001 From: Raimund Date: Sat, 28 May 2022 00:34:50 +0200 Subject: [PATCH 02/41] i18n(de): add `core-concepts/astro-pages.md` (#671) * i18n(de): add `core-concepts/astro-pages.md` * use German heading in link * Fix typos and wording * Apply suggestions from code review Co-authored-by: hippotastic <6137925+hippotastic@users.noreply.github.com> Co-authored-by: Sarah Rainsberger Co-authored-by: hippotastic <6137925+hippotastic@users.noreply.github.com> --- src/pages/de/core-concepts/astro-pages.md | 129 ++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 src/pages/de/core-concepts/astro-pages.md diff --git a/src/pages/de/core-concepts/astro-pages.md b/src/pages/de/core-concepts/astro-pages.md new file mode 100644 index 0000000000000..f7763e0d8aa25 --- /dev/null +++ b/src/pages/de/core-concepts/astro-pages.md @@ -0,0 +1,129 @@ +--- +layout: ~/layouts/MainLayout.astro +title: Seiten +description: Eine Einführung in die Astro-Seiten +--- + +**Seiten** sind ein spezieller Typ von [Astro-Komponenten](/de/core-concepts/astro-components/), die sich im Unterverzeichnis `src/pages/` befinden. Sie sind verantwortlich für das Routing, das Laden von Daten und das gesamte Seitenlayout für jede HTML-Seite in deiner Website. + +### Dateibasiertes Routing + +Astro nutzt eine Routing-Strategie, die **dateibasiertes Routing** genannt wird. Jede `.astro`-Datei im `src/pages`-Verzeichnis wird zu einer Seite oder einem Endpunkt auf deiner Website, basierend auf ihrem Dateipfad. + +📚 Lies mehr über [Routing in Astro](/de/core-concepts/routing/) + +### Seiten-HTML + +Astro-Seiten müssen eine vollständige `...`-Seitenantwort zurückgeben, einschließlich `` und ``. (`` ist optional und wird automatisch hinzugefügt.) + +```astro +--- +// Beispiel: src/pages/index.astro +--- + + + Meine Homepage + + +

Willkommen auf meiner Website!

+ + +``` + +### Nutzung von Seitenlayouts + +Um zu vermeiden, dass sich dieselben HTML-Elemente auf jeder Seite wiederholen, kannst du gemeinsame ``- und ``-Elemente in ihre eigenen [Layout-Komponenten](/de/core-concepts/layouts/) verschieben. Du kannst so viele oder so wenige Layout-Komponenten verwenden, wie du möchtest. + +```astro +--- +// Beispiel: src/pages/index.astro +import MeinLayout from '../layouts/MeinLayout.astro'; +--- + +

Mein Seiteninhalt, umgeben von einem Layout!

+
+``` + +📚 Lies mehr über [Layout-Komponenten](/de/core-concepts/layouts/) in Astro. + + +## Markdown-Seiten + +Astro behandelt auch alle Markdown-Dateien (`.md`) innerhalb von `/src/pages/` als Seiten in deiner finalen Website. Diese werden üblicherweise für textlastige Seiten wie Blogbeiträge und Dokumentationen verwendet. + +Seitenlayouts sind besonders nützlich für [Markdown-Dateien](#markdown-seiten). Markdown-Dateien können die spezielle Frontmatter-Eigenschaft `layout` verwenden, um eine [Layout-Komponente](/de/core-concepts/layouts/) zu spezifizieren, welche den Markdown-Inhalt in ein vollständiges `...`-Dokument einbettet. + +```md +--- +# Beispiel: src/pages/page.md +layout: '../layouts/MeinLayout.astro' +title: 'Meine Markdown-Seite' +--- +# Titel + +Das hier ist meine Seite, geschrieben in **Markdown.** +``` + +📚 Lies mehr über [Markdown](/de/guides/markdown-content/) in Astro. + + +## Nicht-HTML-Seiten + +Nicht-HTML-Seiten, z. B. `.json`, `.xml` oder sogar Bilder, können über API-Routen erstellt werden, die gemeinhin als **Dateirouten** bezeichnet werden. + +**Dateirouten** sind Skriptdateien, die mit der Erweiterung `.js` oder `.ts` enden und sich im Verzeichnis `src/pages/` befinden. + +Erstellte Dateinamen und Erweiterungen basieren auf den Namen der Quelldateien. Die Datei `src/pages/data.json.ts` wird z. B. so erstellt, dass sie der `/data.json`-Route in deinem endgültigen Build entspricht. + +Bei SSR (server-side rendering) spielt die Erweiterung keine Rolle und kann weggelassen werden, da zum Zeitpunkt der Erstellung keine Dateien erzeugt werden. Stattdessen erzeugt Astro eine einzige Serverdatei. + +```js +// Beispiel: src/pages/builtwith.json.ts +// Ausgabe: /builtwith.json + +// Dateirouten exportieren eine get()-Funktion, die aufgerufen wird, um die Datei zu erzeugen. +// Gib ein Objekt mit `body` zurück, um den Inhalt der Datei in deinem endgültigen Build zu speichern. +export async function get() { + return { + body: JSON.stringify({ + name: 'Astro', + url: 'https://astro.build/', + }), + }; +} +``` + +API-Routen erhalten ein `APIContext`-Objekt, das [Parameter (params)](/de/reference/api-reference/#params) und eine [Anfrage (request)](https://developer.mozilla.org/en-US/docs/Web/API/Request) enthält: + +```ts +import type { APIContext } from 'astro'; + +export async function get({ params, request }: APIContext) { + return { + body: JSON.stringify({ + path: new URL(request.url).pathname + }) + }; +} +``` + +Optional kannst du deine API-Routenfunktionen auch unter Verwendung des Typs `APIRoute` eingeben. Dadurch erhältst du bessere Fehlermeldungen, wenn deine API-Route den falschen Typ zurückgibt: + +```ts +import type { APIRoute } from 'astro'; + +export const get: APIRoute = ({ params, request }) => { + return { + body: JSON.stringify({ + path: new URL(request.url).pathname + }) + }; +}; +``` + +## Benutzerdefinierte 404-Fehlerseite + +Für eine benutzerdefinierte 404-Fehlerseite kannst du eine Datei namens `404.astro` oder `404.md` in `/src/pages` erstellen. + +Aus dieser wird die Seite `404.html` erstellt. Die meisten [Hosting-Anbieter](/de/guides/deploy/) werden sie finden und verwenden. + From 36d1b6acf9f798f320a2e7b7f27a09be65a78e7e Mon Sep 17 00:00:00 2001 From: Yan Thomas <61414485+Yan-Thomas@users.noreply.github.com> Date: Fri, 27 May 2022 21:43:23 -0300 Subject: [PATCH 03/41] Update pt-BR `markdown-content.md` (#680) --- src/pages/pt-BR/guides/markdown-content.md | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/pages/pt-BR/guides/markdown-content.md b/src/pages/pt-BR/guides/markdown-content.md index babbaca5d0aca..99e55cb46ec5b 100644 --- a/src/pages/pt-BR/guides/markdown-content.md +++ b/src/pages/pt-BR/guides/markdown-content.md @@ -221,6 +221,40 @@ Cada arquivo Markdown exporta as seguintes propriedades: - `file`: O caminho absoluto deste arquivo (e.g. `/home/user/projects/.../file.md`). - `url`: Se é uma página, o URL da página (e.g. `/pt-BR/guides/markdown-content`). - `getHeaders()`: Uma função assíncrona que retorna os cabeçalhos do arquivo Markdown. A resposta é desse tipo: `{ depth: number; slug: string; text: string }[]`. +- `rawContent()`: Uma função que retorna o conteúdo bruto do arquivo Markdown (excluindo o bloco de frontmatter) como uma string. Isso é útil quando, digamos, formos calcular o tempo médio de leitura. Este exemplo utiliza o [popular pacote reading-time](https://www.npmjs.com/package/reading-time): + + ```astro + --- + import readingTime from 'reading-time'; + const posts = await Astro.glob('./posts/**/*.md'); + --- + {posts.map((post) => ( + +

{post.frontmatter.title}

+

{readingTime(post.rawContent()).text}

+
+ ))} + ``` + +- `compiledContent()`: Uma função assíncrona que retorna o conteúdo bruto após parse, sendo sintaxe válida do Astro. Nota: **Isso não faz parse de `{expressões jsx}`, `` ou layouts**! Apenas blocos de Markdown padrão como `## cabeçalhos` e `- listas` passarão por parse para HTML. Isso é útil quando, digamos, formos renderizar um bloco de sumário para uma postagem de blog. Como a sintaxe do Astro é HTML válido, podemos utilizar bibliotecas populares como [node-html-parser](https://www.npmjs.com/package/node-html-parser) para fazer query do primeiro parágrafo assim: + + ```astro + --- + import { parse } from 'node-html-parser'; + const posts = await Astro.glob('./posts/**/*.md'); + --- + {posts.map(async (post) => { + const primeiroParagrafo = parse(await post.compiledContent()) + .querySelector('p:first-of-type'); + return ( + +

{post.frontmatter.title}

+ {primeiroParagrafo ?

{primeiroParagrafo.innerText}

: null} +
+ ); + })} + ``` + - `Content`: Um componente que renderiza o conteúdo do arquivo Markdown. Eis um exemplo: ```astro From fb7ee47b76517ff55813851ce98872b44bc1d0e5 Mon Sep 17 00:00:00 2001 From: Yan Thomas <61414485+Yan-Thomas@users.noreply.github.com> Date: Sat, 28 May 2022 10:19:23 -0300 Subject: [PATCH 04/41] i18n(pt-BR): Add `directives-reference.md` translation (#605) * Add `directives-reference.md` PT-BR translation * Fix broken links * Apply suggestions Co-authored-by: victor0x16 <100092662+victor0x16@users.noreply.github.com> * Fix broken links Co-authored-by: victor0x16 <100092662+victor0x16@users.noreply.github.com> --- src/i18n/pt-BR/nav.ts | 1 + .../pt-BR/core-concepts/astro-components.md | 2 +- .../core-concepts/framework-components.md | 4 +- .../pt-BR/reference/directives-reference.md | 229 ++++++++++++++++++ 4 files changed, 233 insertions(+), 3 deletions(-) create mode 100644 src/pages/pt-BR/reference/directives-reference.md diff --git a/src/i18n/pt-BR/nav.ts b/src/i18n/pt-BR/nav.ts index b2c7631208e13..039537af93a60 100644 --- a/src/i18n/pt-BR/nav.ts +++ b/src/i18n/pt-BR/nav.ts @@ -23,6 +23,7 @@ export default NavDictionary({ 'guides/server-side-rendering': 'Renderização no lado do Servidor (SSR)', 'guides/typescript': 'TypeScript', reference: 'Referência', + 'reference/directives-reference': 'Diretivas de Template', 'reference/adapter-reference': 'API de Adaptadores', 'reference/integrations-reference': 'API de Integrações', }); diff --git a/src/pages/pt-BR/core-concepts/astro-components.md b/src/pages/pt-BR/core-concepts/astro-components.md index 84c94e9bc0b88..3103144a6f5b4 100644 --- a/src/pages/pt-BR/core-concepts/astro-components.md +++ b/src/pages/pt-BR/core-concepts/astro-components.md @@ -371,7 +371,7 @@ Múltiplas tags ` +``` + +📚 Veja como [scripts no lado do cliente](/pt-BR/core-concepts/astro-components/#scripts-no-lado-do-cliente) funcionam em componentes Astro. + +### `define:vars` + +`define:vars={...}` pode passar variáveis do front matter do seu componente no lado do servidor para o ` +``` + +>⚠️ Utilizar `define:vars` em uma tag ` +``` + +スクリプトをバンドルしないようにするには、 `is:inline` 属性を使用します。 + +```astro + +``` + +上記の方法を組み合わせることで、同じ `.astro` ファイルに複数の ` +``` +#### `src/`に配置されたスクリプトを使用する + +**使用するタイミング:** 外部スクリプトが `src/` 内にあり、かつ、ESMモジュールタイプをサポートしている場合。 + +Astroは、これらのJavaScriptクライアントサイドインポートを検出し、自動的にJSをビルドし、最適化し、ページに追加します。 + +```astro +// ESM import + +``` + + +## 次のステップ + +📚 [Astroの組み込みコンポーネント](/ja/reference/api-reference/#built-in-components)を学びます。 + +📚 Astroプロジェクトでの[JavaScriptフレームワークコンポーネント](/ja/core-concepts/framework-components/)の使用方法について学びます。 From bf123f20eee018547103f947be7610b4d5d8873f Mon Sep 17 00:00:00 2001 From: Yan Thomas <61414485+Yan-Thomas@users.noreply.github.com> Date: Mon, 30 May 2022 22:32:51 -0300 Subject: [PATCH 23/41] i18n(pt-BR) Add `migrate.md` translation (#688) * Add pt-BR `migrate.md` translation * Fix broken link * Apply suggestions Co-authored-by: victor0x16 <100092662+victor0x16@users.noreply.github.com> Co-authored-by: victor0x16 <100092662+victor0x16@users.noreply.github.com> Co-authored-by: Sarah Rainsberger --- src/i18n/pt-BR/nav.ts | 1 + src/pages/pt-BR/migrate.md | 510 +++++++++++++++++++++++++++++++++++++ 2 files changed, 511 insertions(+) create mode 100644 src/pages/pt-BR/migrate.md diff --git a/src/i18n/pt-BR/nav.ts b/src/i18n/pt-BR/nav.ts index de4a9937ba72e..1ffd8570b859a 100644 --- a/src/i18n/pt-BR/nav.ts +++ b/src/i18n/pt-BR/nav.ts @@ -5,6 +5,7 @@ export default NavDictionary({ 'getting-started': 'Introdução', install: 'Instalação', 'editor-setup': 'Configuração do Editor', + migrate: 'Guia de Migração', 'integrations/integrations': 'Feito com Astro', coreConcepts: 'Principais Conceitos', 'core-concepts/partial-hydration': 'Hidratação Parcial', diff --git a/src/pages/pt-BR/migrate.md b/src/pages/pt-BR/migrate.md new file mode 100644 index 0000000000000..e1fec324605de --- /dev/null +++ b/src/pages/pt-BR/migrate.md @@ -0,0 +1,510 @@ +--- +layout: ~/layouts/MainLayout.astro +title: Guia de Migração +description: Como migrar seu projeto para a versão mais recente do Astro. +i18nReady: true +--- + +Este guia vai te ajudar a migrar de versões mais antigas do Astro para a mais atualizada e recente versão. + +Leia o guia abaixo para os maiores destaques e instruções em como lidar com mudanças radicais (em inglês, "breaking changes"). + + +## Beta do Astro 1.0 + +Em 4 de Abril, 2022, nós lançamos a Beta do Astro 1.0! 🎉 + +**Nós não planejamos fazer mais mudanças radicais durante o período dessa beta até o lançamento oficial da v1.0.0 (planejado para 8 de Junho, 2022).** + +Se qualquer mudança radical precisar se feita, nós iremos a apontá-la nesta seção. + +## Migrando para a v1.0.0-beta.0 + +O lançamento `v1.0.0-beta.0` do Astro não teve nenhuma mudança radical. + +Se você estiver vindo da v0.25 ou anterior, se certifique de que você leu e seguiu o [Guia de Migração da v0.26](#migrando-para-a-v026) abaixo, que conteve várias grandes mudanças radicais. + +## Migrando para a v0.26 +### Nova API de Configuração + +Nossa API de Configuração foi reprojetada para resolver alguns pontos evidentes de confusão que foram se acumulando desde o ano passado. A maior parte da configuração foi apenas movida ou renomeada, o que esperamos ser só uma rápida atualização para a maioria dos usuários. Algumas opções foram mais refatoradas e podem necessitar outras mudanças adicionais: + +- `.buildOptions.site` foi substituída por `.site` (o seu domínio de deploy) e a nova opção `.base` (o subcaminho do seu deploy). +- `.markdownOptions` foi substituída por `.markdown`, um objeto de configuração similar com algumas pequenas mudanças para simplificar a configuração de Markdown. +- `.sitemap` foi movida para a integração [@astrojs/sitemap](https://www.npmjs.com/package/@astrojs/sitemap). + +Se você executar Astro com uma configuração desatualizada, você irá ver um aviso com instruções em como atualizar. Veja nossa atualizada [Referência de Configuração](/pt-BR/reference/configuration-reference/) para mais informações em como atualizar. + +Leia [RFC0019](https://github.com/withastro/rfcs/blob/main/proposals/0019-config-finalization.md) para um maior contexto sobre estas mudanças. + +### Nova API de Markdown + +Astro v0.26 lançou uma completamente nova API de Markdown para o seu conteúdo. Isso inclui três principais mudanças para o usuário: +- Agora você pode usar `import`/`import()` para conteúdo markdown utilizando uma importação ESM diretamente. +- A nova API `Astro.glob()`, para importações glob mais fáceis (especialmente para Markdown). +- **MUDANÇA RADICAL:** `Astro.fetchContent()` foi removido e substituído por `Astro.glob()` +- **MUDANÇA RADICAL:** Objetos Markdown tem uma nova interface atualizada. + +```diff +// v0.25 +- let todosPosts = Astro.fetchContent('./posts/*.md'); +// v0.26+ ++ let todosPosts = await Astro.glob('./posts/*.md'); +``` + +Quando migrar, tome cuidado com a nova interface do objeto Markdown. Frontmatter, por exemplo, foi movido para a propriedade `.frontmatter`, então referências como `post.titulo` devem ser modificadas para `post.frontmatter.title`. + +Isto deve resolver muitos dos problemas dos usuários de Markdown, incluindo algumas melhorias de performance para sites grandes. + +Leia [RFC0017](https://github.com/withastro/rfcs/blob/main/proposals/0017-markdown-content-redesign.md) para um maior contexto sobre estas mudanças. + +### Novo Comportamento Padrão de Script + +Tags `` +**Quando utilizar isto:** Se o seu script externo está dentro de `src/` e ele suporta o tipo de módulo ESM. + +Utilize uma importação ESM dentro de um elemento ` +``` + +Note que o Astro irá fazer bundle deste script externo com o resto do seu JavaScript no lado do cliente, e irá carregá-lo no contexto de script `type="module"`. Alguns arquivos JavaScript mais antigos podem não ter sido escritos para o contexto `module`, nesse caso, eles podem precisar ser atualizados para utilizar este método. + +#### Como Resolver Imagens e Outros Assets + +**1. URL de Caminho Absoluto (Recomendado)** + +**Exemplo:** `` +**Quando utilizar isto:** Se o seu asset está dentro de `public/`. + +Se você colocar suas imagens dentro de `public/` você pode então referenciá-las de forma segura por uma URL de caminho diretamente nos templates de seus componentes. Esta é a forma mais simples de referenciar um asset que você pode utilizar hoje, e é recomendado para a maioria dos usuários que estão começando com Astro. + +**2. Importação ESM** + +**Exemplo:** `import urlImg from './pinguin.png'` +**Quando utilizar isto:** Se o seu asset está dentro do diretório `src/` e você quer funcionalidades de otimização automática como fazer hash de nomes de arquivos. + +Isto funciona dentro de qualquer componente JavaScript ou Astro, e retorna a URL resolvida para a imagem final. Assim que você tiver resolvido a URL, você pode utilizá-la em qualquer lugar dentro do template do componente. + +```astro +--- +// Exemplo: Astro irá incluir esta imagem na sua build final +import urlImg from './pinguin.png'; +--- + +``` + +Similar a forma com que Astro lida com CSS, a importação ESM permite ao Astro realizar algumas simples otimizações de build para você automaticamente. Por exemplo, qualquer asset dentro de `src/` que é importado utilizando uma importação ESM (ex: `import urlImg from '/pinguin.png'`) terá seu nome de arquivo em hash automaticamente. Isto te permite fazer um cache mais agressivo do arquivo no servidor, melhorando a performance do usuário. No futuro, Astro pode adicionar mais otimizações como esta. + +**Dica:** Se você não gosta de importações ESM estáticas, Astro também suporta importações ESM dinâmicas. Nós apenas recomendados esta opção se você prefere esta sintaxe: ``. + +### Descontinuado: Processamento Padrão de ` + +``` + + +## Migrando para a v0.23 + +### Erro Sass Não Encontrado + +``` +Preprocessor dependency "sass" not found. Did you install it? +``` + +Em nossa missão para reduzir o tamanho de npm install, nós movemos o [Sass](https://sass-lang.com/) como uma dependência opcional. Se você utiliza Sass em seu projeto, você vai querer se certificar de que executou `npm install sass --save-dev` para salvá-lo como uma dependência. + +### Descontinuado: HTML não Sanitizado + +No Astro v0.23+, conteúdo HTML não sanitizado em expressões não é mais possível. +Em lançamentos futuros, conteúdo em expressões terão strings sanitizadas para protegê-lo de injeção HTML não-intencional. + +```diff +-

{titulo}

++

{titulo}

+``` + +Para continuar injetando HTML não-sanitizado, agora você pode utilizar `set:html`. + +```diff +-

{titulo}

++

+``` + +Para evitar o uso de um elemento de invólucro, `set:html` pode ser utilizado com ``. + +```diff +-

{titulo}!

++

!

+``` + +Você também pode ser proteger de injeção não-intencional de HTML com `set:text`. + +```astro +

+``` + +## Migrando para a v0.21 + +### Vite + +A partir da v0.21, Astro é construído com [Vite]. +Por consequência, configurações escritas em `snowpack.config.mjs` devem ser movidas para `astro.config.mjs`. + + +```js +// @ts-check + +/** @type {import('astro').AstroUserConfig} */ +export default { + renderers: [], + vite: { + plugins: [], + }, +}; +``` + +Para aprender mais sobre como configurar o Vite, por favor visite seu [guia de configuração](https://vitejs.dev/config/). + +#### Plugins Vite + +Em Astro v0.21+, plugins Vite podem ser configurados em `astro.config.mjs`. + +```js +import { imagetools } from 'vite-imagetools'; + +export default { + vite: { + plugins: [imagetools()], + }, +}; +``` + +Para aprender mais sobre plugins Vite, por favor visite seu [guia de plugins](https://vitejs.dev/guide/using-plugins.html). + +#### Mudanças do Vite para Renderers + +Em Astro v0.21+, plugins agora devem utilizar `viteConfig()`. + +```diff +// renderer-svelte/index.js ++ import { svelte } from '@sveltejs/vite-plugin-svelte'; + +export default { + name: '@astrojs/renderer-svelte', + client: './client.js', + server: './server.js', +- snowpackPlugin: '@snowpack/plugin-svelte', +- snowpackPluginOptions: { compilerOptions: { hydratable: true } }, ++ viteConfig() { ++ return { ++ optimizeDeps: { ++ include: ['@astrojs/renderer-svelte/client.js', 'svelte', 'svelte/internal'], ++ exclude: ['@astrojs/renderer-svelte/server.js'], ++ }, ++ plugins: [ ++ svelte({ ++ emitCss: true, ++ compilerOptions: { hydratable: true }, ++ }), ++ ], ++ }; ++ }, +} +``` + +Para aprender mais sobre plugins Vite, por favor visite seu [guia de plugins](https://vitejs.dev/guide/using-plugins.html). + +> Em lançamentos anteriores, esses plugins eram configurados com `snowpackPlugin` ou `snowpackPluginOptions`. + +### Atalhos + +Em Astro v0.21+, atalhos de importação podem ser adicionados em `tsconfig.json` ou `jsconfig.json`. + +```json +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/components/*": ["src/components/*"] + } + } +} +``` + +_Estes aliases são automaticamente integrados no [VSCode](https://code.visualstudio.com/docs/languages/jsconfig) e em outros editores._ + +### Extensões de Arquivos em Importações + +Em Astro v0.21+, arquivos precisam ser referenciados com suas extensões, exatamente como estão no disco. Neste exemplo, `Div.tsx` precisaria ser referenciado como `Div.tsx`, não `Div.jsx`. + +```diff +- import Div from './Div.jsx' // Astro v0.20 ++ import Div from './Div.tsx' // Astro v0.21 +``` + +Esta mesma mudança se aplica para arquivos que são compilados para CSS como `Div.scss`: + +```diff +- ++ +``` + +### Removido: Componentes no Frontmatter + +Anteriormente, você poderia criar mini componentes Astro dentro do Frontmatter Astro, utilizando sintaxe JSX ao invés da sintaxe de componentes Astro. Isto sempre foi um tipo de hack, mas no novo compilador isto se tornou impossível de dar suporte. Nós esperamos reintroduzir esta funcionalidade em um lançamento futuro do Astro utilizando uma API diferente e independente do JSX. + +Para migrar para a v0.21+, por favor converta todos os componentes Astro JSX (qualquer componente Astro criado dentro do frontmatter de outro componente) como seus próprios componentes isolados. + + +### Mudanças na Estilização + +#### Autoprefixer + +Autoprefixer não é mais executado por padrão. Para habilitá-lo: + +1. Instale a versão mais recente (`npm i autoprefixer`) +2. Crie um arquivo `postcss.config.cjs` na raiz do seu projeto com: + ```js + module.exports = { + plugins: { + autoprefixer: {}, + }, + }; + ``` + +#### Tailwind CSS + +Certifique-se de que você tem PostCSS instalado. Isto era opcional em versões anteriores, mas é obrigatório agora: + +1. Instale a versão mais recente do postcss (`npm i -D postcss`) +2. Crie um arquivo `postcss.config.cjs` na raiz do seu projeto com: + ```js + module.exports = { + plugins: { + tailwindcss: {}, + }, + }; + ``` + Para mais informações, leia a [documentação do Tailwind CSS](https://tailwindcss.com/docs/installation#add-tailwind-as-a-post-css-plugin). + + +### Problemas Conhecidos + +#### Importações no Topo + +No Astro v0.21+, um bug que foi introduzido faz com que seja obrigatório importações dentro de seus componentes estarem no topo do seu frontmatter. + +```astro +--- +import Componente from '../components/Componente.astro' +const aondeColocarMInhasImportacoes = "no topo!" +--- +``` + + +[vite]: https://vitejs.dev From c5fc59300789bc6214eac9b172f5949abaca5b5f Mon Sep 17 00:00:00 2001 From: Tony Sullivan Date: Tue, 31 May 2022 15:02:10 +0000 Subject: [PATCH 24/41] Updating PNPM engine version to 7.0 to match astro core (#701) * updating PNPM engine version to 7.0 to match astro core * didn't mean to include an Astro version bump for this PR * matching previous version pattern --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e6c868a0f8286..9dd635478950d 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ }, "engines": { "node": "^14.15.0 || >=16.0.0", - "pnpm": ">=6.32.3" + "pnpm": ">=7.0.0" }, - "packageManager": "pnpm@6.32.3" + "packageManager": "pnpm@7.0.0" } From 868955a363d0495890652463a74410725633d51f Mon Sep 17 00:00:00 2001 From: Kyosuke Date: Wed, 1 Jun 2022 16:57:38 +0900 Subject: [PATCH 25/41] Create astro-pages.md (#698) Co-authored-by: Chris Swithinbank --- src/pages/ja/core-concepts/astro-pages.md | 131 ++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 src/pages/ja/core-concepts/astro-pages.md diff --git a/src/pages/ja/core-concepts/astro-pages.md b/src/pages/ja/core-concepts/astro-pages.md new file mode 100644 index 0000000000000..39d322c704f0e --- /dev/null +++ b/src/pages/ja/core-concepts/astro-pages.md @@ -0,0 +1,131 @@ +--- +layout: ~/layouts/MainLayout.astro +title: ページ +description: Astroページの紹介 +i18nReady: true +--- + +**ページ**は、`src/pages/`サブディレクトリにある[Astroコンポーネント](/ja/core-concepts/astro-components/)の特殊なタイプです。Webサイトの各HTMLページのルーティング、データロード、全体的なページレイアウトを処理する役割を担っています。 + +### ファイルベースルーティング + +Astroは、**ファイルベースルーティング**と呼ばれるルーティング手法を採用しています。 `src/pages`ディレクトリ内のすべての`.astro`ファイルは、そのファイルパスに基づいてサイトのページ、またはエンドポイントになります。 + +📚 [Astroのルーティング](/ja/core-concepts/routing/)について詳しくみる。 + +### ページのHTML + +Astroページは、`` と `` を含む完全な `...` ページレスポンスを返す必要があります。(`` はオプションで、書かなくても自動的に追加されます)。 + +```astro +--- +// 例: src/pages/index.astro +--- + + + ホームページ + + +

私のホームページへようこそ!

+ + +``` + +### ページレイアウトの活用 + +すべてのページで同じHTML要素を繰り返すことを避けるために、共通の `` と `` 要素を独自の[レイアウトコンポーネント](/ja/core-concepts/layouts/)に移動できます。レイアウトコンポーネントはいくつでも使えます。 + +```astro +--- +// 例: src/pages/index.astro +import MySiteLayout from '../layouts/MySiteLayout.astro'; +--- + +

レイアウトに包まれたコンテンツ!

+
+``` + +📚 Astroの[レイアウトコンポーネント](/ja/core-concepts/layouts/)について詳しくみる。 + + +## Markdownページ + +Astroは `/src/pages/` にあるMarkdown (`.md`) ファイルも、最終的なWebサイトのページとして扱います。これらは一般的に、ブログの投稿やドキュメントのような、テキストを多用するページに使用されます。 + +ページレイアウトは[Markdownファイル](#markdownページ)に対して特に有効です。Markdownファイルは特別な `layout`というfront-matterプロパティを使用して、Markdownコンテンツを `...` ページドキュメントにラップする [レイアウトコンポーネント](/ja/core-concepts/layouts/)を指定できます。 + + +```md +--- +# 例: src/pages/page.md +layout: '../layouts/MySiteLayout.astro' +title: 'Markdownページ' +--- +# タイトル + +これは**Markdown**で書かれたページです。 +``` + +📚 Astroの[Markdown](/ja/guides/markdown-content/)について詳しくみる。 + + +## HTMLではないページ + +`.json`や`.xml`などのHTMLではないページや、画像などのアセットも、一般的に**ファイルルート**と呼ばれるAPIルートで構築できます。 + +**ファイルルート**は、拡張子が `.js` または `.ts` であるスクリプトファイルで、`src/pages/` ディレクトリに配置されたものです。 + +ビルドされるファイル名と拡張子はソースファイルの名前に基づいています。たとえば、`src/pages/data.json.ts` は、最終的に `/data.json` のパスとマッチするようにビルドされます。 + +SSR(サーバーサイドレンダリング)では、拡張子は関係ないので省略できます。これは、ビルド時にファイルが生成されないためです。その代わり、Astroは1つのサーバーファイルを生成します。 + +```js +// 例: src/pages/builtwith.json.ts +// 出力先: /builtwith.json + +// ファイルルートはget()関数をエクスポートし、それがファイルを生成するために呼び出されます。 +// 最終的なビルドでファイルの内容を保存するために、`body` を持つオブジェクトを返します。 +export async function get() { + return { + body: JSON.stringify({ + name: 'Astro', + url: 'https://astro.build/', + }), + }; +} +``` + +APIルートは、[params](/ja/reference/api-reference/#params)と[Request](https://developer.mozilla.org/ja/docs/Web/API/Request) を含む `APIContext` オブジェクトを受け取ります。 + + +```ts +import type { APIContext } from 'astro'; + +export async function get({ params, request }: APIContext) { + return { + body: JSON.stringify({ + path: new URL(request.url).pathname + }) + }; +} +``` + +オプションで、APIルートの関数を `APIRoute` 型にもできます。これにより、APIルートが間違った型を返した場合に、より適切なエラーメッセージを表示できます。 + +```ts +import type { APIRoute } from 'astro'; + +export const get: APIRoute = ({ params, request }) => { + return { + body: JSON.stringify({ + path: new URL(request.url).pathname + }) + }; +}; +``` + +## カスタム404エラーページ + +カスタムの404エラーページを作成するには、`src/pages`に `404.astro` または `404.md` ファイルを作成します。 + +これは `404.html` ページにビルドされます。ほとんどの[デプロイサービス](/ja/guides/deploy/)はこのファイルを見つけて使用します。 From e77a78688096b38a06012f78db66afe07123d6a2 Mon Sep 17 00:00:00 2001 From: Maurer Krisztian <48491140+MaurerKrisztian@users.noreply.github.com> Date: Wed, 1 Jun 2022 19:13:03 +0200 Subject: [PATCH 26/41] i18n(pages-hu): Fix typo (#706) --- src/pages/hu/getting-started.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/hu/getting-started.md b/src/pages/hu/getting-started.md index 9250af9b436de..9d4310188d345 100644 --- a/src/pages/hu/getting-started.md +++ b/src/pages/hu/getting-started.md @@ -73,7 +73,7 @@ Nem minden verizó kiadás érdemel meg egy külön posztot, de minden verzióho ## Valami hiányzik? -Ha valami hiányzik a dokumentációból, vagy valami féélreérthető, kérjük [készíts egy bejelentést hozzá](https://github.com/withastro/astro/issues/new/choose) a javaslataiddal, vagy tweetelj az [@astrodotbuild](https://twitter.com/astrodotbuild) Twitter fiókunknak. Örömmel hallanánk mit gondolsz! +Ha valami hiányzik a dokumentációból, vagy valami félreérthető, kérjük [készíts egy bejelentést hozzá](https://github.com/withastro/astro/issues/new/choose) a javaslataiddal, vagy tweetelj az [@astrodotbuild](https://twitter.com/astrodotbuild) Twitter fiókunknak. Örömmel hallanánk mit gondolsz! ## Elismerés From 46d79ebb7a05088d6ebff9dbb3507046f402a147 Mon Sep 17 00:00:00 2001 From: George B <705427+georgeblahblah@users.noreply.github.com> Date: Wed, 1 Jun 2022 18:30:06 +0100 Subject: [PATCH 27/41] typo: Remove duplicate "should" text (#703) --- src/pages/en/guides/markdown-content.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/en/guides/markdown-content.md b/src/pages/en/guides/markdown-content.md index bd799dd122a79..f0977975133a2 100644 --- a/src/pages/en/guides/markdown-content.md +++ b/src/pages/en/guides/markdown-content.md @@ -288,7 +288,7 @@ const posts = await Astro.glob('../pages/post/*.md'); ## Markdown Component -> NOTE: The `` component does not work in SSR and may be removed before v1.0. It should should be avoided if possible. To use Markdown in your templates, use a separate `.md` file and then [`import` Markdown](/en/guides/markdown-content/#importing-markdown) into your template as a component. +> NOTE: The `` component does not work in SSR and may be removed before v1.0. It should be avoided if possible. To use Markdown in your templates, use a separate `.md` file and then [`import` Markdown](/en/guides/markdown-content/#importing-markdown) into your template as a component. You can import the [built-in Astro Markdown component](/en/reference/api-reference/#markdown-) in your component script and then write any Markdown you want between `` tags. @@ -325,7 +325,7 @@ const expressions = 'Lorem ipsum'; ### Remote Markdown -> NOTE: The `` component does not work in SSR and may be removed before v1.0. It should should be avoided if possible. To use Markdown in your templates, use a separate `.md` file and then `import` it into your template as a component. Read this [RFC Discussion](https://github.com/withastro/rfcs/discussions/179) to learn more. +> NOTE: The `` component does not work in SSR and may be removed before v1.0. It should be avoided if possible. To use Markdown in your templates, use a separate `.md` file and then `import` it into your template as a component. Read this [RFC Discussion](https://github.com/withastro/rfcs/discussions/179) to learn more. If you have Markdown in a remote source, you may pass it directly to the Markdown component through the `content` attribute. @@ -342,7 +342,7 @@ const content = await fetch('https://raw.githubusercontent.com/withastro/docs/ma ### Nested Markdown -> NOTE: The `` component does not work in SSR and may be removed before v1.0. It should should be avoided if possible. To use Markdown in your templates, use a separate `.md` file and then `import` it into your template as a component. Read this [RFC Discussion](https://github.com/withastro/rfcs/discussions/179) to learn more. +> NOTE: The `` component does not work in SSR and may be removed before v1.0. It should be avoided if possible. To use Markdown in your templates, use a separate `.md` file and then `import` it into your template as a component. Read this [RFC Discussion](https://github.com/withastro/rfcs/discussions/179) to learn more. `` components can be nested. From 713169b7f0d9952ab769ab03029e7fa55abca538 Mon Sep 17 00:00:00 2001 From: Sarah Rainsberger Date: Wed, 1 Jun 2022 14:52:32 -0300 Subject: [PATCH 28/41] Text improvements to Partial Hydration (#699) * Text improvements to Partial Hydration Some wording updates based docs feedback on Ben's live stream. * stop falsely claiming we can use ANY frontend UI component in the whole world Co-authored-by: Chris Swithinbank Co-authored-by: Chris Swithinbank --- src/pages/en/core-concepts/partial-hydration.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/en/core-concepts/partial-hydration.md b/src/pages/en/core-concepts/partial-hydration.md index e603e656a8265..0edbc0cd350d0 100644 --- a/src/pages/en/core-concepts/partial-hydration.md +++ b/src/pages/en/core-concepts/partial-hydration.md @@ -7,7 +7,7 @@ setup: | i18nReady: true --- -**Astro generates every website with zero client-side JavaScript, by default.** Use any frontend UI component that you'd like ([React](https://reactjs.org/), [Preact](https://preactjs.com/), [Svelte](https://svelte.dev/), [Vue](https://vuejs.org/), [SolidJS](https://www.solidjs.com/), [AlpineJS](https://alpinejs.dev/) and [Lit](https://lit.dev/)) and Astro will automatically render it to HTML at build-time and strip away all JavaScript. This keeps every site fast by default. +**Astro generates every website with zero client-side JavaScript, by default.** Use a frontend UI component built with [React](https://reactjs.org/), [Preact](https://preactjs.com/), [Svelte](https://svelte.dev/), [Vue](https://vuejs.org/), [SolidJS](https://www.solidjs.com/), [AlpineJS](https://alpinejs.dev/) or [Lit](https://lit.dev/) and Astro will automatically render it to HTML at build-time and strip away all JavaScript. This keeps every site fast by default. ```astro --- @@ -18,7 +18,7 @@ import MyReactComponent from '../components/MyReactComponent.jsx'; ``` -But sometimes, client-side JavaScript is required for creating interactive UI. When you find yourself needing interactive UI on the page, Astro doesn't force you to go 100% JavaScript on the entire page. Instead, Astro uses a technique called **partial hydration** that lets you hydrate individual components on the page. This way, you only send down the absolutely essential JavaScript that you need to run your page. +But sometimes, client-side JavaScript is required for creating interactive UIs. When you find yourself needing interactive UI on the page, Astro doesn't force you to go 100% JavaScript on the entire page. Instead, Astro uses a technique called **partial hydration** that lets you hydrate individual components on the page. This way, you only send down the absolutely essential JavaScript that you need to run your page. ```astro --- From 7198014ade2c085cfee97df2e4a7458e29c228a1 Mon Sep 17 00:00:00 2001 From: Yan Thomas <61414485+Yan-Thomas@users.noreply.github.com> Date: Wed, 1 Jun 2022 16:12:02 -0300 Subject: [PATCH 29/41] i18n(pt-BR): Update `partial-hydration.md` based on #699 changes (#707) * Update PT-BR `partial-hydration.md` based on #699 changes * Remove extra parenthesis Co-authored-by: Chris Swithinbank * Change from plural to singular Co-authored-by: Chris Swithinbank --- src/pages/pt-BR/core-concepts/partial-hydration.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/pt-BR/core-concepts/partial-hydration.md b/src/pages/pt-BR/core-concepts/partial-hydration.md index f0aa54d615b2d..c5921b76e5895 100644 --- a/src/pages/pt-BR/core-concepts/partial-hydration.md +++ b/src/pages/pt-BR/core-concepts/partial-hydration.md @@ -7,7 +7,7 @@ setup: | i18nReady: true --- -**Astro gera todo website com zero JavaScript no lado do cliente, por padrão.** Use qualquer componente de UI frontend que você queira ([React](https://reactjs.org/), [Preact](https://preactjs.com/), [Svelte](https://svelte.dev/), [Vue](https://vuejs.org/), [SolidJS](https://www.solidjs.com/), [AlpineJS](https://alpinejs.dev/) e [Lit](https://lit.dev/)) e o Astro irá automaticamente renderizá-lo como HTML em tempo de build e remover todo o JavaScript. Isso faz todos os sites rápidos por padrão. +**Astro gera todo website com zero JavaScript no lado do cliente, por padrão.** Utilize um componente de UI frontend feito com [React](https://reactjs.org/), [Preact](https://preactjs.com/), [Svelte](https://svelte.dev/), [Vue](https://vuejs.org/), [SolidJS](https://www.solidjs.com/), [AlpineJS](https://alpinejs.dev/) ou [Lit](https://lit.dev/) e Astro irá automaticamente renderizá-lo como HTML em tempo de build e remover todo o JavaScript. Isso faz todos os sites rápidos por padrão. ```astro @@ -19,7 +19,7 @@ import MeuComponenteReact from '../components/MeuComponenteReact.jsx'; ``` -Porém as vezes, JavaScript no lado do cliente é necessário para criar interfaces de usuário interativas. Quando você se ver precisando de UI interativa na página, Astro não te força a utilizar JavaScript em 100% da página. Em vez disso, Astro utiliza uma técnica chamada **hidratação parcial** (do inglês, "Partial Hydration") que te deixa hidratar componentes individualmente na página. Dessa forma, você envia apenas o JavaScript absolutamente necessário que você precisa para carregar a página. +Porém as vezes, JavaScript no lado do cliente é necessário para criar UIs interativas. Quando você se ver precisando de UI interativa na página, Astro não te força a utilizar JavaScript em 100% da página. Em vez disso, Astro utiliza uma técnica chamada **hidratação parcial** (do inglês, "Partial Hydration") que te deixa hidratar componentes individualmente na página. Dessa forma, você envia apenas o JavaScript absolutamente necessário que você precisa para carregar a página. ```astro From 8becea48ecec51eba7d52cfce83b3a83819338d5 Mon Sep 17 00:00:00 2001 From: Yan Thomas <61414485+Yan-Thomas@users.noreply.github.com> Date: Wed, 1 Jun 2022 21:39:22 -0300 Subject: [PATCH 30/41] i18n(pt-BR): Add `comparing-astro-vs-other-tools.md` translation (#690) * Add PT-BR `comparing-astro-vs-other-tools.md` * Apply suggestions Co-authored-by: victor0x16 <100092662+victor0x16@users.noreply.github.com> * Apply more suggestions * Apply even more suggestions Co-authored-by: victor0x16 <100092662+victor0x16@users.noreply.github.com> Co-authored-by: Sarah Rainsberger --- src/i18n/pt-BR/nav.ts | 1 + .../pt-BR/comparing-astro-vs-other-tools.md | 298 ++++++++++++++++++ 2 files changed, 299 insertions(+) create mode 100644 src/pages/pt-BR/comparing-astro-vs-other-tools.md diff --git a/src/i18n/pt-BR/nav.ts b/src/i18n/pt-BR/nav.ts index 1ffd8570b859a..8dc46719c4188 100644 --- a/src/i18n/pt-BR/nav.ts +++ b/src/i18n/pt-BR/nav.ts @@ -5,6 +5,7 @@ export default NavDictionary({ 'getting-started': 'Introdução', install: 'Instalação', 'editor-setup': 'Configuração do Editor', + 'comparing-astro-vs-other-tools': 'Astro vs. X', migrate: 'Guia de Migração', 'integrations/integrations': 'Feito com Astro', coreConcepts: 'Principais Conceitos', diff --git a/src/pages/pt-BR/comparing-astro-vs-other-tools.md b/src/pages/pt-BR/comparing-astro-vs-other-tools.md new file mode 100644 index 0000000000000..e47119c91eae9 --- /dev/null +++ b/src/pages/pt-BR/comparing-astro-vs-other-tools.md @@ -0,0 +1,298 @@ +--- +layout: ~/layouts/MainLayout.astro +title: Astro vs. X +description: Comparando Astro com outros geradores de sites estáticos como Gatsby, Next.js, Nuxt, Hugo, Eleventy e outros. +i18nReady: true +--- + +Isso nos é perguntado frequentemente, "Como Astro se compara ao meu projeto favorito, **\_\_\_\_**?" + +Este guia foi escrito para te ajudar a responder essa pergunta para diversos construtores de sites e alternativas ao Astro. + +Duas funcionalidades-chave que fazem o Astro diferente da maioria das alternativas: + +- [Hidratação parcial](/pt-BR/core-concepts/partial-hydration/) +- [Usar seu(s) framework(s) favoritos](/pt-BR/core-concepts/framework-components/) + +Para mais detalhes, você pode ver nossas comparações aprofundadas nesta página. + +Se você não ver o seu construtor de sites favorito listado aqui, [nos pergunte no Discord](https://astro.build/chat/). + +## Docusaurus vs. Astro + +[Docusaurus](https://docusaurus.io/) é um popular construtor de websites de documentação. Docusaurus utiliza React para gerar a UI do seu website enquanto Astro suporta React, Preact, Vue.js, Svelte, SolidJS, AlpineJS, Lit e templates HTML. + +Docusaurus foi projetado para construir websites de documentação e tem algumas funcionalidades específicas para websites de documentação que o Astro não possui. No lugar, Astro oferece funcionalidades específicas para documentações através do tema oficial [`docs`](https://github.com/withastro/astro/tree/main/examples/docs) que você pode utilizar para o seu site. Este website foi feito utilizando esse template! + +#### Comparando a Performance do Docusaurus vs. Astro + +Na maioria dos casos, websites Astro irão carregar significantemente mais rápido do que websites Docusaurus. Isso acontece pois Astro automaticamente remove JavaScript desnecessário da página, hidratando apenas os componentes individuais que o precisam. Essa funcionalidade é chamada de [hidratação parcial](/pt-BR/core-concepts/partial-hydration/). + +Docusaurus não suporta hidratação parcial, fazendo o usuário carregar e hidratar novamente a página inteira no navegador, mesmo que a maioria do conteúdo da página seja estático. Isso cria um carregamento mais lento da página e piora a performance do seu website. Não há nenhuma forma de desabilitar esse comportamento no Docusaurus. + +#### Estudo de Caso: Construindo um Website de Documentação + +[docusaurus.io/docs](https://docusaurus.io/docs) é o website oficial da documentação do Docusaurus, construído com Docusaurus. O website oferece um conjunto parecido o suficiente de funcionalidades e design para ser comparado com o website da documentação oficial do Astro. Isso nos dá uma comparação **realista e aproximada** entre os dois construtores de sites. + +- **Pontuação de performance do Docusaurus**: 53 de 100 [(relatório completo)](/lighthouse/docusaurus/) +- **Pontuação de performance do Astro**: 92 de 100 [(relatório completo)](/lighthouse/astro/) + +## Elder.js vs. Astro + +[Elder.js](https://elderguide.com/tech/elderjs/) é um gerador de sites estáticos opinativo construído para Svelte. + +Elder.js utiliza Svelte para renderizar seu website. Astro é mais flexível: você está livre para construir sua UI com qualquer biblioteca de componentes (React, Preact, Vue, Svelte, Solid e outros) ou a sintaxe integrada de componentes que é similar a HTML + JSX. + +Elder.js é único nessa lista por ser o único outro gerador de sites estáticos que suporta [hidratação parcial](/pt-BR/core-concepts/partial-hydration/). Ambos Astro e Elder.js automaticamente removem JavaScript desnecessário da página, hidratando apenas os componentes que o precisam individualmente. A API do Elder para hidratação parcial é um pouco diferente e Astro suporta algumas funcionalidades que o Elder.js não suporta (como `client:media`). Porém, quando se trata de performance, ambos os projetos irão construir websites bem similares. + +Elder.js utiliza uma solução customizada de roteamento que pode soar pouco familiar para novos desenvolvedores. Astro utiliza [roteamento baseado em arquivos](/pt-BR/core-concepts/routing/) que deve soar familiar para qualquer um que tenha vindo do Next.js, SvelteKit e até de outros geradores de sites estáticos como Eleventy. + +Elder.js foi projetado para ser executado em websites grandes, assim como diz construir um website com aproximadamente 20 mil páginas em menos de 10 minutos (em uma máquina virtual modesta). No momento de escrita, Astro constrói aproximadamente mil páginas em 66 segundos mas ainda não foi testado em projetos com mais de 20 mil páginas. + +Elder.js suporta ambas a Geração de Sites Estáticos (SSG) e Renderização no Lado do Servidor (SSR). Astro pode fazer builds estaticamente via SSG, ou passar para deploy em ambientes de SSR via [adaptadores](/pt-BR/guides/server-side-rendering/#habilitando-o-ssr-em-seu-projeto): Deno, serverless da Vercel, serverless da Netlify e Node.js, com mais vindo no futuro. + +## Eleventy vs. Astro + +[Eleventy](https://www.11ty.dev/) é um popular gerador de sites estáticos, feito com Node.js. + +Eleventy utiliza várias [linguagens antigas de template de HTML](https://www.11ty.dev/docs/languages/) para renderizar seu website: Nunjuncks, Liquid, Pug, EJS, e outras. Astro deixa você criar páginas utilizando suas bibliotecas de componentes de UI favoritas (React, Preact, Vue, Svelte, e outras) ou a sintaxe integrada de componentes que é similar a HTML + JSX. Eleventy não suporta utilizar componentes de UI modernos para fazer o template do seu HTML. + +#### Comparando a Performance do Eleventy vs. Astro + +Conceitualmente, Eleventy e Astro compartilham a mesma visão de "minimizar o JavaScript no lado do cliente" para o desenvolvimento web. Ambos Eleventy e Astro oferecem uma performance similar por terem zero JavaScript por padrão. + +Eleventy realiza isso te forçando a evitar JavaScript inteiramente. Sites utilizando Eleventy são geralmente escritos com pouco e até nenhum JavaScript. Isso se torna um problema quando você precisa ter JavaScript no lado do cliente. Fica em suas mãos construir o seu próprio processo de build de assets para Eleventy. Isso pode ser desgastante e o força a configurar bundling, minificação e outras otimizações por si mesmo. + +Em contraste, Astro automaticamente faz build de seu JavaScript no lado do cliente e CSS para você. Astro automaticamente remove qualquer JavaScript desnecessário da página, hidratando apenas os componentes que o precisam individualmente. Essa funcionalidade é chamada de [hidratação parcial](/pt-BR/core-concepts/partial-hydration/). Enquanto se é possível realizar isso por si mesmo no Eleventy, Astro oferece por padrão. + +#### Estudo de Caso: Construindo um Website de Documentação + +[11ty.dev/docs](https://www.11ty.dev/docs/) é o website oficial da documentação do 11ty, construído com 11ty. Esse website possui um conjunto de funcionalidades e design similar o suficiente para ser comparado com o website oficial da documentação do Astro. Isso nos dá uma comparação **realista e aproximada** entre os dois construtores de sites. + +- **Pontuação de performance do 11ty**: 86 de 100 [(relatório completo)](/lighthouse/11ty/) +- **Pontuação de performance do Astro**: 92 de 100 [(relatório completo)](/lighthouse/astro/) + +## Gatsby vs. Astro + +[Gatsby](https://www.gatsbyjs.com/) é um popular framework de websites e aplicações para React. + +Gatsby utiliza React para renderizar seu website. Astro é mais flexível: você está livre para construir sua UI com qualquer biblioteca de componentes popular (React, Preact, Vue, Svelte, Solid e outros) ou a sintaxe de componentes do Astro que é similar a HTML + JSX. + +Gatsby v4 suporta tanto a Geração Estática de Sites (SSG) com rebuilds incrementais, a Geração Estática Deferida (DSG) e Renderização no Lado do Servidor (SSR). Astro pode fazer builds estaticamente via SSG, ou passar para deploy em ambientes de SSR via [adaptadores](/pt-BR/guides/server-side-rendering/#habilitando-o-ssr-em-seu-projeto): Deno, serverless da Vercel, serverless da Netlify e Node.js, com mais vindo no futuro. + +Gatsby requer uma API customizada de GraphQL para funcionar com todo o conteúdo do seu site. Enquanto alguns desenvolvedores gostam desse modelo, uma crítica comum ao Gatsby é que esse modelo se torna muito complexo e difícil de se manter conforme o tempo, especialmente em relação ao quanto os sites crescem. Astro não necessita de GraphQL, providenciando APIs familiares (como `fetch()` ou top-level `await`) para carregamento de dados próximo de onde os dados são necessários. Porém, você está livre para escolher utilizar qualquer biblioteca GraphQL no lado do servidor ou no lado do cliente com Astro. + +#### Comparando a Performance do Gatsby vs. Astro + +Na maioria dos casos, websites Astro irão carregar significantemente mais rápido que websites Gatsby. Isso acontece pois Astro automaticamente remove qualquer JavaScript desnecessário da página, hidratando apenas os componentes que o precisam individualmente. Essa funcionalidade é chamada de [hidratação parcial](/pt-BR/core-concepts/partial-hydration/). + +Gatsby não suporta hidratação parcial, e ao invés disso faz o usuário carregar e hidratar novamente a página inteira no navegador, mesmo que a maioria do conteúdo da página seja estático. Isso cria um carregamento mais lento da página e piora a performance do seu website. Gatsby tem um [plugin da comunidade](https://www.gatsbyjs.com/plugins/gatsby-plugin-no-javascript/) para remover todo o JavaScript da página, porém isso quebraria muitos websites. Isso te deixa numa situação de tudo ou nada com a interatividade de cada página. + +Gatsby tem um ótimo ecossistema de plugins, enquanto a [coleção de integrações](https://astro.build/integrations/) do Astro é menor, porém em constante crescimento. Gatsby fornece o plugin [gatsby-plugin-image](https://www.gatsbyjs.com/plugins/gatsby-plugin-image/) para otimizações avançadas de imagens. Enquanto Astro não tem uma solução oficial comparável, [astro-imagetools](https://github.com/RafidMuhymin/astro-imagetools#readme) é uma integração popular da comunidade para otimização de imagens, imagens de fundo e geração de imagens responsivas. + +#### Estudo de Caso: Construindo um Website de Documentação + +[gatsbyjs.com/docs](https://www.gatsbyjs.com/docs/quick-start/) é o website oficial da documentação do Gatsby, construído com Gatsby. O website possui um conjunto de funcionalidades e um design semelhante o suficiente para ser comparado com o website oficial da documentação do Astro. Isso nos dá uma comparação **_realista e aproximada_** entre os dois construtores de sites para esse comum caso de uso. + +- **Pontuação de Performance do Gatsby**: 46 de 100 [(relatório completo)](/lighthouse/gatsby/) +- **Pontuação de Performance do Astro**: 92 de 100 [(relatório completo)](/lighthouse/astro/) + +## Hugo vs. Astro + +[Hugo](https://gohugo.io/) é um popular gerador de sites estáticos, feito em Go. + +Hugo utiliza uma [linguagem de templates](https://gohugo.io/templates/introduction/) customizada para renderizar seu website. Astro te permite criar páginas utilizando sua biblioteca favorita de componentes de UI (React, Preact, Vue, Svelte, e outros) ou utilizar a sintaxe integrada de componentes que é similar ao HTML + JSX. Hugo não suporta utilizar componentes de UI modernos para fazer o template do seu HTML. + +#### Comparando a Performance do Hugo vs. Astro + +Conceitualmente, Hugo e Astro compartilham a mesma visão de "minimizar o JavaScript no lado do cliente" para o desenvolvimento web. Ambos Hugo e Astro oferecem uma performance similar por terem zero JavaScript por padrão. + +Ambos Hugo e Astro oferecem suporte integrado para fazer build, bundle e minificação de JavaScript. Astro automaticamente remove qualquer JavaScript desnecessário da página, hidratando apenas os componentes que o precisam individualmente. Esta funcionalidade é chamada de [hidratação parcial](/pt-BR/core-concepts/partial-hydration/). Apesar de ser possível realizar isso você mesmo no Hugo, Astro oferece isso de forma integrada por padrão. + +#### Estudo de Caso: Construindo um Website de Documentação + +[gohugo.io/documentation/](https://gohugo.io/documentation/) é o website oficial da documentação do Hugo, construído com Hugo. O website oferece um conjunto parecido o suficiente de funcionalidades e design para ser comparado com o website da documentação oficial do Astro. Isso nos dá uma comparação **realista e aproximada** entre os dois construtores de sites. + +- **Pontuação de Performance do Hugo**: 98 de 100 [(relatório completo)](/lighthouse/hugo/) +- **Pontuação de Performance do Astro**: 92 de 100 [(relatório completo)](/lighthouse/astro/) + + +## Jekyll vs. Astro + +[Jekyll](https://jekyllrb.com/) é um popular gerador de sites estáticos, feito com Ruby. + +Jekyll utiliza uma velha [linguagem de templates](https://jekyllrb.com/docs/liquid/) para renderizar o seu website chamado Liquid. Astro te permite criar páginas utilizando suas bibliotecas de componentes de UI favoritas (React, Preact, Vue, Svelte e outras) ou a sintaxe de componentes do Astro que é similar a HTML + JSX. Jekyll não suporta utilizar componentes de UI modernos para fazer o template do seu HTML. + +#### Comparando a Performance de Jekyll vs. Astro + +Conceitualmente, Jekyll e Astro compartilham a mesma visão de "minimizar o JavaScript no lado do cliente" para o desenvolvimento web. Ambos Jekyll e Astro oferecem uma performance similar por terem zero JavaScript por padrão. + +Jekyll realiza isso te forçando a evitar JavaScript inteiramente. Sites utilizando Jekyll são geralmente escritos com pouco e até nenhum JavaScript, e no lugar promove renderização de HTML no lado do servidor. Isso se torna um problema quando você precisa ter JavaScript no lado do cliente. Fica em suas mãos construir o seu próprio processo de build para Jekyll. Isso pode ser desgastante e o força a configurar bundling, minificação e outras otimizações por si mesmo. + +Em contraste, Astro automaticamente faz build de seu JavaScript no lado do cliente para você. Astro apenas envia a mínima quantidade de JavaScript para o navegador, minificado, com bundle feito e otimizado para produção. Enquanto se é possível realizar isso por si mesmo no Jekyll, Astro oferece por padrão. + +#### Estudo de Caso: Construindo um Website de Documentação + +[jekyllrb.com/docs](https://jekyllrb.com/docs) é o website oficial da documentação do Jekyll, construído com Jekyll. O website oferece um conjunto parecido o suficiente de funcionalidades e design para ser comparado com o website da documentação oficial do Astro. Isso nos dá uma comparação **realista e aproximada** entre os dois construtores de sites. + +- **Pontuação de performance do Jekyll**: 96 de 100 [(relatório completo)](/lighthouse/jekyll/) +- **Pontuação de performance do Astro**: 92 de 100 [(relatório completo)](/lighthouse/astro/) + +## SvelteKit vs. Astro + +[SvelteKit](https://kit.svelte.dev/) é um popular framework de websites e aplicações para Svelte. + +SvelteKit utiliza Svelte para renderizar seu website. Astro é mais flexível: você está livre para construir sua UI com qualquer biblioteca de componentes (React, Preact, Vue, Svelte, Solid e outros) ou a sintaxe integrada de componentes que é similar a HTML + JSX. + +Ambos SvelteKit e Astro são frameworks para construir websites. SvelteKit é melhor em websites altamente dinâmicos (como painéis de controle e caixas de entrada) enquanto Astro é melhor em websites altamente estáticos (como websites de conteúdo e Ecommerce). + +SvelteKit suporta ambas a Geração Estática de Sites (SSG) e a Renderização no Lado do Servidor (SSR). Astro pode fazer builds estaticamente via SSG, ou passar para deploy em ambientes de SSR via [adaptadores](/pt-BR/guides/server-side-rendering/#habilitando-o-ssr-em-seu-projeto): Deno, serverless da Vercel, serverless da Netlify e Node.js, com mais vindo no futuro. + +#### Comparando a Performance de SvelteKit vs. Astro + +Na maioria dos casos, websites Astro irão carregar mais rápido que websites SvelteKit. Isso acontece pois Astro automaticamente remove JavaScript desnecessário da página, hidratando apenas os componentes individuais que o precisam. Essa funcionalidade é chamada de [hidratação parcial](/pt-BR/core-concepts/partial-hydration/). + +SvelteKit não suporta hidratação parcial, fazendo o usuário carregar e hidratar novamente a página inteira no navegador, mesmo que a maioria do conteúdo da página seja estático. Isso cria um carregamento mais lento da página e piora a performance do seu website. SvelteKit oferece suporte para [páginas estáticas com zero JavaScript](https://kit.svelte.dev/docs#ssr-and-javascript-hydrate). Porém, não há suporte planejado para hidratar componentes individuais na página. Isso te deixa numa situação de tudo ou nada com a interatividade de cada página. + +#### Estudo de Caso: Criando um Website de Documentação + +[kit.svelte.dev](https://kit.svelte.dev/docs#ssr-and-javascript-hydrate) é o website oficial da documentação do SvelteKit, construído com SvelteKit. O website oferece um conjunto parecido o suficiente de funcionalidades e design para ser comparado com o website da documentação oficial do Astro. Isso nos dá uma comparação **realista e aproximada** entre os dois construtores de sites. + +Uma notável diferença entre ambos os websites sendo testados: A documentação do SvelteKit é servida como uma única página, enquanto a do Astro é dividida em várias páginas. Este maior carregamento de conteúdo deve causar um certo impacto negativo na performance que não é relacionado a ferramenta em si. + +- **Pontuação de Performance do SvelteKit**: 91 de 100 [(relatório completo)](/lighthouse/sveltekit/) +- **Pontuação de Performance do Astro**: 92 de 100 [(relatório completo)](/lighthouse/astro/) + +SvelteKit performou semelhantemente ao Astro nesse teste. + +## Next.js vs. Astro + +[Next.js](https://nextjs.org/) é um popular framework de websites e aplicações para React. + +Next.js utiliza React para renderizar seu website. Astro é mais flexível: você está livre para construir sua UI com qualquer biblioteca de componentes (React, Preact, Vue, Svelte, Solid e outros) ou a sintaxe integrada de componentes que é similar a HTML + JSX. + +Ambos Next.js e Astro são frameworks para construir websites. Next.js é melhor em websites altamente dinâmicos (como painéis de controle e caixas de entrada) enquanto Astro é melhor em websites altamente estáticos (como websites de conteúdo e Ecommerce). + +Next.js suporta ambas a Geração de Sites Estáticos (SSG) e Renderização no Lado do Servidor (SSR). Astro pode fazer builds estaticamente via SSG, ou passar para deploy em ambientes de SSR via [adaptadores](/pt-BR/guides/server-side-rendering/#habilitando-o-ssr-em-seu-projeto): Deno, serverless da Vercel, serverless da Netlify e Node.js, com mais vindo no futuro. + + +#### Comparando a Performance do Next.js vs. Astro + +Na maioria dos casos, websites Astro irão carregar significantemente mais rápido do que websites Next.js. Isso acontece pois Astro automaticamente remove JavaScript desnecessário da página, hidratando apenas os componentes individuais que o precisam. Essa funcionalidade é chamada de [hidratação parcial](/pt-BR/core-concepts/partial-hydration/). + +Next.js não suporta hidratação parcial, fazendo o usuário carregar e hidratar novamente a página inteira no navegador, mesmo que a maioria do conteúdo da página seja estático. Isso cria um carregamento mais lento da página e piora a performance do seu website. Next.js tem [suporte experimental](https://piccalil.li/blog/new-year-new-website/#heading-no-client-side-react-code) para páginas completamente estáticas, sem JavaScript. Porém, não há suporte planejado para hidratação de componentes individuais na página. Isso te deixa numa situação de tudo ou nada com a interatividade de cada página. + +Next.js tem ótimas otimizações de imagens integrada. Enquanto Astro não tem uma solução oficial comparável, [astro-imagetools](https://github.com/RafidMuhymin/astro-imagetools#readme) é uma integração popular da comunidade para otimização de imagens, imagens de fundo e geração de imagens responsivas. + +#### Estudo de Caso: Criando um Website de Documentação + +[nextjs.org/docs](https://nextjs.org/docs/getting-started) é o website oficial da documentação do Next.js, construído com Next.js. O website oferece um conjunto parecido o suficiente de funcionalidades e design para ser comparado com o website da documentação oficial do Astro. Isso nos dá uma comparação **realista e aproximada** entre os dois construtores de sites. + +- **Pontuação de Performance do Next.js**: 71 de 100 [(relatório completo)](/lighthouse/next/) +- **Pontuação de Performance do Astro**: 92 de 100 [(relatório completo)](/lighthouse/astro/) + +## Nuxt vs. Astro + +[Nuxt](https://nuxtjs.org/) é um popular framework de websites e aplicações para Vue. Ele é similar a Next.js. + +Nuxt utiliza Vue para renderizar seu website. Astro é mais flexível: você está livre para construir sua UI com qualquer biblioteca de componentes (React, Preact, Vue, Svelte, Solid e outros) ou a sintaxe integrada de componentes que é similar a HTML + JSX. + +Ambos Nuxt e Astro são frameworks para construir websites. Nuxt é melhor em websites altamente dinâmicos (como painéis de controle e caixas de entrada) enquanto Astro é melhor em websites altamente estáticos (como websites de conteúdo e Ecommerce). + +Nuxt suporta ambas a Geração de Sites Estáticos (SSG) e Renderização no Lado do Servidor (SSR). Astro pode fazer builds estaticamente via SSG, ou passar para deploy em ambientes de SSR via [adaptadores](/pt-BR/guides/server-side-rendering/#habilitando-o-ssr-em-seu-projeto): Deno, serverless da Vercel, serverless da Netlify e Node.js, com mais vindo no futuro. + + +#### Comparando a Performance do Nuxt vs. Astro + +Na maioria dos casos, websites Astro irão carregar significantemente mais rápido do que websites Nuxt. Isso acontece pois Astro automaticamente remove JavaScript desnecessário da página, hidratando apenas os componentes individuais que o precisam. Essa funcionalidade é chamada de [hidratação parcial](/pt-BR/core-concepts/partial-hydration/). + +Nuxt não suporta hidratação parcial, fazendo o usuário carregar e hidratar novamente a página inteira no navegador, mesmo que a maioria do conteúdo da página seja estático. Isso cria um carregamento mais lento da página e piora a performance do seu website. Não há nenhuma forma de desabilitar esse comportamento no Nuxt. + +Nuxt tem ótimas otimizações de imagens integrada. Enquanto Astro não tem uma solução oficial comparável, [astro-imagetools](https://github.com/RafidMuhymin/astro-imagetools#readme) é uma integração popular da comunidade para otimização de imagens, imagens de fundo e geração de imagens responsivas. + +#### Estudo de Caso: Criando um Website de Documentação + +[nuxtjs.org/docs](https://nuxtjs.org/docs/2.x/get-started/installation) é o website oficial da documentação do Nuxt, construído com Nuxt. O website oferece um conjunto parecido o suficiente de funcionalidades e design para ser comparado com o website da documentação oficial do Astro. Isso nos dá uma comparação **realista e aproximada** entre os dois construtores de sites. + +- **Pontuação de Performance do Nuxt**: 50 de 100 [(relatório completo)](/lighthouse/nuxt/) +- **Pontuação de Performance do Astro**: 92 de 100 [(relatório completo)](/lighthouse/astro/) + +## Remix vs. Astro + +[Remix](https://remix.run/) é um framework React inspirado no React Router. + +Remix utiliza React para renderizar seu website. Astro é mais flexível: você está livre para construir sua UI com qualquer biblioteca de componentes (React, Preact, Vue, Svelte, Solid e outros) ou a sintaxe integrada de componentes que é similar a HTML + JSX. + +Remix suporta apenas renderização no lado do servidor (SSR). Astro pode fazer builds estaticamente via SSG, ou passar para deploy em ambientes de SSR via [adaptadores](/pt-BR/guides/server-side-rendering/#habilitando-o-ssr-em-seu-projeto): Deno, serverless da Vercel, serverless da Netlify e Node.js, com mais vindo no futuro. + + +#### Estudo de Caso: Criando um Website de Documentação + +[remix.run/docs](https://remix.run/docs/) é o website oficial da documentação do Remix, construído com Remix. O website oferece um conjunto parecido o suficiente de funcionalidades e design para ser comparado com o website da documentação oficial do Astro. Isso nos dá uma comparação **realista e aproximada** entre os dois construtores de sites. + +- **Pontuação de Performance do Remix**: 89 de 100 [(relatório completo)](/lighthouse/remix/) +- **Pontuação de Performance do Astro**: 92 de 100 [(relatório completo)](/lighthouse/astro/) + +## VuePress vs. Astro + +[VuePress](https://vuepress.vuejs.org/guide/) é um popular construtor de websites de documentação dos criadores do Vue.js. VuePress utiliza Vue.js para gerar a UI do seu website enquanto Astro suporta React, Vue.js, Svelte, e templates HTML. + +VuePress foi projetado para construir websites de documentação e tem algumas funcionalidades específicas para websites de documentação que o Astro não possui. No lugar, Astro oferece funcionalidades específicas para documentações através do tema oficial [`docs`](https://github.com/withastro/astro/tree/main/examples/docs) que você pode utilizar para o seu site. Este website foi feito utilizando esse template! + +Evan You (criador do Vue.js) está atualmente trabalhando em uma nova versão do Vuepress chamada [VitePress](https://vitepress.vuejs.org/). Se você quiser uma alternativa moderna ao VuePress, [veja a postagem do Evan](https://github.com/withastro/astro/issues/1159#issue-974035962) do porquê VitePress pode ser uma opção melhor. + +#### Comparando a Performance do VuePress vs. Astro + +Na maioria dos casos, websites Astro irão carregar significantemente mais rápido do que websites VuePress. Isso acontece pois Astro automaticamente remove JavaScript desnecessário da página, hidratando apenas os componentes individuais que o precisam. Essa funcionalidade é chamada de [hidratação parcial](/pt-BR/core-concepts/partial-hydration/). + +VuePress não suporta hidratação parcial, fazendo o usuário carregar e hidratar novamente a página inteira no navegador, mesmo que a maioria do conteúdo da página seja estático. Isso cria um carregamento mais lento da página e piora a performance do seu website. Não há nenhuma forma de desabilitar esse comportamento no Vuepress. + +#### Estudo de Caso: Criando um Website de Documentação + +[vuepress.vuejs.org](https://vuepress.vuejs.org/guide/) é o website oficial da documentação do VuePress, construído com VuePress. O website oferece um conjunto parecido o suficiente de funcionalidades e design para ser comparado com o website da documentação oficial do Astro. Isso nos dá uma comparação **realista e aproximada** entre os dois construtores de sites. + +- **Pontuação de Performance do Vuepress**: 67 de 100 [(relatório completo)](/lighthouse/vuepress/) +- **Pontuação de Performance do Astro**: 92 de 100 [(relatório completo)](/lighthouse/astro/) + +## Zola vs. Astro + +[Zola](https://www.getzola.org/) é um popular e rápido gerador de sites estáticos, feito com Rust. + +Zola utiliza [Tera](https://tera.netlify.app/) para renderizar seu website. Astro te permite construir sua UI com qualquer biblioteca de componentes (React, Preact, Vue, Svelte, Solid e outros) ou a sintaxe integrada de componentes que é similar a HTML + JSX. Zola não suporta utilizar componentes de UI modernos para fazer o template do seu HTML. + +#### Comparando a Performance do Zola vs. Astro + +Conceitualmente, Zola e Astro compartilham a mesma visão de "minimizar o JavaScript no lado do cliente" para o desenvolvimento web. Ambos Jekyll e Astro oferecem uma performance similar por terem zero JavaScript por padrão. + +Astro oferece suporte integrado para fazer build, bundle e minificação de JavaScript. Astro automaticamente remove qualquer JavaScript desnecessário da página, hidratando apenas os componentes que o precisam individualmente. Esta funcionalidade é chamada de [hidratação parcial](/pt-BR/core-concepts/partial-hydration/). Apesar de ser possível realizar isso você mesmo no Zola, Astro oferece isso de forma integrada por padrão. + +#### Estudo de Caso: Criando um Website de Documentação + +[getzola.org/documentation](https://www.getzola.org/documentation/getting-started/overview/) é o website oficial da documentação do Zola, construído com Zola. O website oferece um conjunto parecido o suficiente de funcionalidades e design para ser comparado com o website da documentação oficial do Astro. Isso nos dá uma comparação **realista e aproximada** entre os dois construtores de sites. + +- **Pontuação de Performance do Zola**: 91 de 100 [(relatório completo)](/lighthouse/zola/) +- **Pontuação de Performance do Astro**: 92 de 100 [(relatório completo)](/lighthouse/astro/) + +## `.astro` vs `.jsx` + +A sintaxe de componentes Astro é um superset do HTML. Ela foi projetada para parecer familiar para qualquer um com experiência com HTML ou JSX. + +**Se você sabe HTML, você já sabe o suficiente para escrever seu primeiro componente Astro.** + +| Funcionalidade | Astro | JSX | +| ---------------------------- | ----- | --------- | +| Extensão de arquivo | `.astro` | `.jsx` ou `.tsx` | +| Componentes Definidos pelo Usuário | `` | `` | +| Sintaxe de Expressões | `{}` | `{}` | +| Atributos Spread | `{...props}` | `{...props}` | +| Atributos Boolean | `autocomplete` === `autocomplete={true}` | `autocomplete` === `autocomplete={true}` | +| Funções Inline | `{itens.map(item =>
  • {item}
  • )}` | `{itens.map(item =>
  • {item}
  • )}` | +| Renderização Condicional | `{condicao &&

    texto

    }` | `{condicao &&

    texto

    }` | +| Suporte de IDE | [VS Code (incluindo Open VSX), Nova](/pt-BR/editor-setup/) | Fenomenal | +| Requer Importação de JS | Não | Sim, `jsxPragma` (`React` ou `h`) devem estar no escopo | +| Fragmentos | Automático e top-level, `` ou `<>` dentro de funções | Envolver com `` ou `<>` | +| Múltiplos frameworks por arquivo | Sim | Não | +| Modificar `` | Apenas utilize `` em páginas top-level | Por framework (``, ``, etc) | +| Estilo de Comentários | `` | `{/_ JavaScript _/}` | +| Caracteres Especiais | ` ` | ` ` | +| Atributos | `dash-case` | `camelCase`| From 301aff48a3d7861f0ffbf35ee1e4b7b37200c73a Mon Sep 17 00:00:00 2001 From: Kyosuke Date: Thu, 2 Jun 2022 16:54:20 +0900 Subject: [PATCH 31/41] i18n(ja): Add Japanese `core-concepts/layouts.md` (#705) * i18n(ja): Add Japanese `core-concepts/layouts.md` * Update layouts.md Co-authored-by: Chris Swithinbank --- src/pages/ja/core-concepts/layouts.md | 88 +++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 src/pages/ja/core-concepts/layouts.md diff --git a/src/pages/ja/core-concepts/layouts.md b/src/pages/ja/core-concepts/layouts.md new file mode 100644 index 0000000000000..64bee6d0245a0 --- /dev/null +++ b/src/pages/ja/core-concepts/layouts.md @@ -0,0 +1,88 @@ +--- +layout: ~/layouts/MainLayout.astro +title: レイアウト +description: レイアウトの紹介です。Astroコンポーネントの一種で、共通のレイアウトのためにページ間で共有されます。 +i18nReady: true +--- + +**レイアウト**は、再利用可能なページテンプレートを作成するのに便利な[Astroコンポーネント](/ja/core-concepts/astro-components/)の特殊なタイプです。 + +レイアウトコンポーネントは、慣習的に [`.astro` または `.md` ページ](/ja/core-concepts/astro-pages/)に**ページシェル**(``, ``, `` タグ)と、レイアウト内のどこにページ内容を挿入するか指定する `` を提供するために使用されています。 + +レイアウトは多くの場合、共通の `` 要素や、ヘッダー、ナビゲーションバー、フッターなどのページの共通UI要素を提供します。 + +レイアウトコンポーネントは一般的に、プロジェクト内の `src/layouts` ディレクトリに配置されます。 + + +## レイアウトのサンプル + +```astro +--- +// 例: src/layouts/MySiteLayout.astro +--- + + + + + +

    +
    + +
    + + +``` + +```astro +--- +// 例: src/pages/index.astro +import MySiteLayout from '../layouts/MySiteLayout.astro'; +--- + +

    レイアウトに包まれたページのコンテンツ

    +
    +``` + +📚 [スロット](/ja/core-concepts/astro-components/#スロット)についてもっと学ぶ。 + + +## レイアウトの入れ子 + +レイアウトコンポーネントは、ページ全体に相当するHTMLを含む必要はありません。レイアウトをより小さなコンポーネントに分割し、そのコンポーネントを再利用して、プロジェクトでさらに柔軟で強力なレイアウトを作成できます。 + +たとえば、ブログの記事によくあるレイアウトは、タイトル、日付、作者を表示するものです。`BlogPostLayout.Astro`レイアウトコンポーネントは、このUIをページに追加し、さらに大きなサイト全体のレイアウトを利用して、ページの残りの部分を処理できます。 + +```astro +--- +// 例: src/layout/BlogPostLayout.astro +import BaseLayout from '../layouts/BaseLayout.astro' +const {content} = Astro.props; +--- + +

    {content.title}

    +

    投稿者: {content.author}

    + +
    +``` + +## Markdownのレイアウト + +ページレイアウトはとくに[Markdownファイル](/ja/guides/markdown-content/#markdown-pages)に対して便利です。Markdownファイルは特別な `layout`というfront-matterのプロパティを使用して、MarkdownコンテンツをフルページのHTMLドキュメントで包むレイアウトコンポーネントを指定できます。 + +Markdownページがレイアウトを使用する場合、レイアウトにはすべてのMarkdownのfront-matterデータと最終的なHTML出力を含む、単一の `content` プロパティを渡します。 レイアウトコンポーネントでこの `content` プロパティをどのように使用するかは、上記の `BlogPostLayout.Astro` の例を参照してください。 + +```markdown +// src/pages/posts/post-1.md +--- +title: ブログ記事 +description: 最初のブログ記事 +layout: ../layouts/BlogPostLayout.astro +--- +これはMarkdownで書かれた投稿です。 +``` + +📚 AstroのMarkdownサポートについては、[Markdownガイド](/ja/guides/markdown-content/)で詳しく説明しています。 From 791671fe7954dac0fbfa404e6d037e042bcb8fb1 Mon Sep 17 00:00:00 2001 From: Kevin Zuniga Cuellar <46791833+kevinzunigacuellar@users.noreply.github.com> Date: Thu, 2 Jun 2022 18:18:41 -0400 Subject: [PATCH 32/41] i18n(es): update `astro-pages.md` (#689) Co-authored-by: Chris Swithinbank --- src/pages/es/core-concepts/astro-pages.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/pages/es/core-concepts/astro-pages.md b/src/pages/es/core-concepts/astro-pages.md index 07f2b5b26d512..3a475459b6cea 100644 --- a/src/pages/es/core-concepts/astro-pages.md +++ b/src/pages/es/core-concepts/astro-pages.md @@ -33,7 +33,7 @@ Las páginas de Astro deben devolver una respuesta completa de la página `` y `` a sus propios [componentes de plantilla](/es/core-concepts/layouts/). Puede usar tantos o tan pocos componentes como crea conveniente. +Para evitar repetir los mismos elementos HTML en cada página, puedes mover los elementos comunes `` y `` a sus propios [componentes plantilla](/es/core-concepts/layouts/). Puede usar tantos o tan pocos componentes como crea conveniente. ```astro --- @@ -45,14 +45,14 @@ import MySiteLayout from '../layouts/MySiteLayout.astro'; ``` -📚 Lea más sobre [componentes de plantilla](/es/core-concepts/layouts/) en Astro. +📚 Lea más sobre [componentes plantilla](/es/core-concepts/layouts/) en Astro. ## Páginas Markdown Astro también trata cualquier archivo Markdown (`.md`) dentro de `/src/pages/` como páginas en su proyecto. Estos se usan comúnmente para páginas con mucho texto, como artículos de blog y documentación. -Las plantillas de página son especialmente útiles para [archivos Markdown](#páginas-markdown). Los archivos Markdown pueden usar la propiedad especial `layout` para especificar un [componente de plantilla](/es/core-concepts/layouts/) que envolverá su contenido Markdown en un documento completo de página `...`. +Los componentes plantilla son especialmente útiles para [archivos Markdown](#páginas-markdown). Los archivos Markdown pueden usar la propiedad especial `layout` para especificar un [componente plantilla](/es/core-concepts/layouts/) que envolverá su contenido Markdown en un documento de página completo `...`. ```md --- @@ -83,7 +83,7 @@ En SSR (server-side rendering), la extensión no importa y se puede omitir. Esto // Resultado: /builtwith.json // Las rutas de archivo exportan una función get(), que se llama para generar el archivo. -// Devuelve un objeto con `body` para guardar el contenido del archivo en tu compilación final. +// Devuelve un objeto con `body` para guardar el contenido del archivo en la compilación final. export async function get() { return { body: JSON.stringify({ @@ -122,8 +122,8 @@ export const get: APIRoute = ({ params, request }) => { }; ``` -## Página 404 personalizada +## Página de error 404 personalizada -Para crear una página de error 404 personalizada, puedes crear un archivo `404.astro` en `/src/pages`. +Para crear una página de error 404 personalizada, puedes crear un archivo `404.astro` o `404.md` en `/src/pages`. Esto generará una página `404.html` que la mayoría de los [servicios de despliegue](/es/guides/deploy/) encontrarán y usarán. From 9bdd7bf33f15083186eb2581189a431536de6def Mon Sep 17 00:00:00 2001 From: Kevin Zuniga Cuellar <46791833+kevinzunigacuellar@users.noreply.github.com> Date: Thu, 2 Jun 2022 18:24:11 -0400 Subject: [PATCH 33/41] i18n(es): Update `core-concepts/routing.md` (#691) Co-authored-by: Chris Swithinbank --- src/i18n/es/ui.ts | 2 +- src/pages/es/core-concepts/routing.md | 97 +++++++++++++++++---------- 2 files changed, 61 insertions(+), 38 deletions(-) diff --git a/src/i18n/es/ui.ts b/src/i18n/es/ui.ts index f05a0b8998c0e..a0bd1d5a13c7e 100644 --- a/src/i18n/es/ui.ts +++ b/src/i18n/es/ui.ts @@ -25,7 +25,7 @@ export default UIDictionary({ 'rightSidebar.github': 'Documentación de Astro en GitHub', // Used in previous/next page links at the bottom of pages 'articleNav.nextPage': 'Siguiente página', - 'articleNav.prevPage': 'Atras', + 'articleNav.prevPage': 'Página anterior', // Used in ``: Added in: v0.24.0 [NEW] 'since.addedIn': 'Agregado en:', 'since.new': 'Nuevo', diff --git a/src/pages/es/core-concepts/routing.md b/src/pages/es/core-concepts/routing.md index d2d7e2eab623d..2cf33b15b5c45 100644 --- a/src/pages/es/core-concepts/routing.md +++ b/src/pages/es/core-concepts/routing.md @@ -40,16 +40,16 @@ Puedes generar rutas con un parámetro `[nombrado]` proporcionando a la función ```astro --- -// src/pages/dogs/[dog].astro +// src/pages/perros/[perro].astro export function getStaticPaths() { return [ - // Generates: /dogs/clifford - {params: {dog: 'clifford'}}, - // Generates: /dogs/rover - {params: {dog: 'rover'}}, - // Generates: /dogs/spot - {params: {dog: 'spot'}}, + // Genera: /perros/clifford + {params: {perro: 'clifford'}}, + // Genera: /perros/rover + {params: {perro: 'rover'}}, + // Genera: /perros/spot + {params: {perro: 'spot'}}, ]; } --- @@ -65,7 +65,7 @@ Las rutas pueden ser generadas a partir de uno o varios parámetros nombrados, e #### El objeto `Astro.params` -Los componentes de Astro que generan rutas dinámicamente tienen acceso al objeto `Astro.params` para cada ruta. Esto le permite usar las variables de la URL en su script y maquetado. +Los componentes de Astro que generan rutas dinámicamente tienen acceso al objeto `Astro.params` para cada ruta. Esto le permite usar las variables de la URL dentro del script y maquetado. ```astro --- @@ -126,13 +126,9 @@ En este ejemplo, una solicitud a `/withastro/astro/tree/main/docs/public/favicon } ``` -### Advertencias +### Orden de prioridad de rutas -Las solicitudes de consulta de parámetros no siempre coincidirán con todas las rutas existentes en su proyecto. - -Las rutas estáticas sin parámetros tendrán prioridad sobre todas las demás rutas, y no coincidirán con las consultas de parámetros de ruta dinámicas. De manera similar, las rutas nombradas tienen prioridad sobre las rutas comodín. - -Considere el siguiente proyecto: +Es posible que varias rutas coincidan con la misma ruta URL. Por ejemplo, cada una de estas rutas coincidiría con `/posts/create`: ``` └── pages/ @@ -143,54 +139,81 @@ Considere el siguiente proyecto: ``` -- `pages/post/create.astro` - Coincidirá con `/post/create` -- `pages/post/[pid].astro` - Coincidirá con `/post/1`, `/post/abc`, etc. Pero no con `/post/create` -- `pages/post/[...slug].astro` - Coincidirá con `/post/1/2`, `/post/a/b/c`, etc. Pero no con `/post/create`, `/post/1`, `/post/abc` +Astro necesita saber qué ruta debe usarse para construir la página. Para ello, los ordena de acuerdo con las siguientes reglas: + +- Las rutas estáticas sin parámetros de ruta tendrán prioridad sobre todas las demás rutas +- Las rutas dinámicas que usan parámetros nombrados tienen prioridad sobre los parámetros comodín +- Los parámetros comodín tienen la prioridad más baja. +- Los empates se resuelven alfabéticamente +Dado el ejemplo anterior, aquí hay algunos ejemplos de cómo las reglas harán coincidir una URL solicitada con la ruta utilizada al compilar el HTML: + +- `pages/posts/create.astro` - Construirá `/posts/create` +- `pages/posts/[pid].astro` - Construirá `/posts/1`, `/posts/abc`, etc. Pero no `/posts/create` +- `pages/posts/[...slug].astro` - Construirá `/posts/1/2`, `/posts/a/b/c`, etc. Pero no `/posts/create`, ` /mensajes/1`, `/mensajes/abc` ## Paginación -Astro mantiene la paginación automática integrada para grandes colecciones de datos que deben dividirse en varias páginas. Astro incluirá automáticamente metadatos de paginación para cosas como la URL de la página anterior/siguiente, el número total de páginas y más. +Astro mantiene la paginación automática integrada para grandes colecciones de datos que deben dividirse en varias páginas. Astro incluirá automáticamente metadatos de paginación como la URL de la página anterior/siguiente, el número total de páginas y más. + +Los nombres de rutas paginadas deben usar la misma sintaxis `[corchete]` que una ruta dinámica estándar. Por ejemplo, el nombre de archivo `/astronautas/[page].astro` generará rutas para `/astronautas/1`, `/astronautas/2`, etc., donde `[page]` es el número de página generado. + +Puedes usar la función `paginate()` para generar estas páginas para un array de valores como este: ```astro --- -// Ejemplo: Usando paginate() en una ruta dinámica +// Ejemplo: /src/pages/astronauts/[page].astro export async function getStaticPaths({ paginate }) { - // Carga tus datos: - const response = await fetch(`https://pokeapi.co/api/v2/pokemon?limit=150`); - const result = await response.json(); - const allPokemon = result.results; - // Devuelve una colección paginada de rutas: - return paginate(allPokemon, { pageSize: 10 }); + const astronautPages = [{ + astronaut: 'Neil Armstrong', + }, { + astronaut: 'Buzz Aldrin', + }, { + astronaut: 'Sally Ride', + }, { + astronaut: 'John Glenn', + }]; + // Genera páginas para nuestro array de astronautas, con 2 elementos por página + return paginate(astronautPages, { pageSize: 2 }); } -// Los datos paginados se pasan como prop a cada página. +// Todos los datos paginados se pasan en la prop "page" const { page } = Astro.props; --- - -``` -La paginación es útil cuando se necesita generar varias páginas enumeradas a partir de un conjunto de datos más amplios: + +

    Page {page.currentPage}

    +
      + + {page.data.map(({ astronaut }) =>
    • {astronaut}
    • )} +
    +``` -- `/posts/1` (Página 1: Muestra los artículos del 1-10) -- `/posts/2` (Página 2: Muestra los artículos del 11-20) -- `/posts/3` (Página 3: Muestra los artículos del 21-30) +Esto genera las siguientes páginas, con 2 elementos por página: +- `/astronauts/1` - Página 1: muestra "Neil Armstrong" y "Buzz Aldrin" +- `/astronauts/2` - Página 2: Muestra "Sally Ride" y "John Glenn" ### La prop `page` -Cuando usas la función `paginate()`, a cada página de la colección se le pasarán sus datos a través de una prop `page`. La prop `page` tiene varias propiedades útiles, pero la más importante es `page.data`. Esta es el array que contiene la porción de datos de la página que pasaste a la función `paginate()`. +Cuando usas la función `paginate()`, a cada página se le pasarán los datos a través de una prop `page`. La prop `page` tiene muchas propiedades útiles, pero estas son las más destacadas: +- **page.data** - array que contiene la porción de datos de página que introdujo a la función `paginate()` +- **page.url.next** - enlace a la página siguiente del mismo conjunto de datos +- **page.url.prev** - enlace a la página anterior del mismo conjunto de datos ```astro --- -// Ejemplo: Usando la prop `page` de la paginación -export async function getStaticPaths() { /* ... */ } +// Ejemplo: /src/pages/astronauts/[page].astro +// Paginar la misma lista de objetos { astronaut } como en el ejemplo anterior +export async function getStaticPaths({ paginate }) { /* ... */ } const { page } = Astro.props; ---

    Page {page.currentPage}

      - {page.data.map(item =>
    • {item.title}
    • )} + {page.data.map(({ astronaut }) =>
    • {astronaut}
    • )}
    +{page.url.prev ? Previous : null} +{page.url.next ? Next : null} ``` -La propiedad `page` también incluye otros metadatos útiles, como `page.url.next`, `page.url.prev`, `page.total` y más. +#### Referencia API completa ```ts interface Page { From 22358aa7e73828a36229e72556462d782fa817a2 Mon Sep 17 00:00:00 2001 From: Kevin Zuniga Cuellar <46791833+kevinzunigacuellar@users.noreply.github.com> Date: Thu, 2 Jun 2022 18:28:00 -0400 Subject: [PATCH 34/41] i18n(es): add configuring-astro.md (#693) Co-authored-by: Chris Swithinbank --- src/i18n/es/nav.ts | 1 + src/pages/es/guides/configuring-astro.md | 113 +++++++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 src/pages/es/guides/configuring-astro.md diff --git a/src/i18n/es/nav.ts b/src/i18n/es/nav.ts index a84597e8378fc..eb74bf3ea9b4b 100644 --- a/src/i18n/es/nav.ts +++ b/src/i18n/es/nav.ts @@ -11,4 +11,5 @@ export default NavDictionary({ 'core-concepts/routing': 'Reglas de enrutamiento', 'core-concepts/partial-hydration': 'Hidratación parcial', 'guides/markdown-content': 'Markdown', + 'guides/configuring-astro': 'Configuración de Astro', }); diff --git a/src/pages/es/guides/configuring-astro.md b/src/pages/es/guides/configuring-astro.md new file mode 100644 index 0000000000000..5992d3710ad9d --- /dev/null +++ b/src/pages/es/guides/configuring-astro.md @@ -0,0 +1,113 @@ +--- +layout: ~/layouts/MainLayout.astro +title: Configuración de Astro +i18nReady: true +--- + +Personalice cómo funciona Astro agregando un archivo `astro.config.mjs` en su proyecto. Este es un archivo común en todos los proyectos de Astro; todas plantillas y temas de ejemplos oficiales se encuentran con uno de forma predeterminada. + +📚 Lea la [referencia de configuración](/es/reference/configuration-reference/) de Astro para obtener una descripción general y completa de todas las opciones de configuración. + +## Archivo de configuración de Astro + +Un archivo de configuración de Astro válido exporta la configuración usando la exportación `default`, además recomendamos usar `defineConfig` para definir la configuración de una manera más fácil. + +```js +// astro.config.mjs +import { defineConfig } from 'astro/config' + +export default defineConfig({ + // sus opciones de configuración van aquí... + // https://docs.astro.build/es/reference/configuration-reference/ +}) +``` + +Se recomienda usar `defineConfig()` para sugerencias de tipos automáticas en su IDE, pero también es opcional. Un archivo de configuración absolutamente mínimo y válido se vería así: + +```js +// Ejemplo: Archivo de configuración mínimo y vacío +export default {} +``` + +## Tipos de archivo de configuración compatibles + +Astro es compatible con varios formatos para el archivo de configuración de JavaScript como: `astro.config.js`, `astro.config.mjs`, `astro.config.cjs` y `astro.config.ts`. + +La carga del archivo de configuración de TypeScript se maneja usando [`tsm`](https://github.com/lukeed/tsm) el cual respetará las opciones de tsconfig de su proyecto. + +## Resolución de archivos de configuración + +Astro intentará resolver automáticamente el archivo de configuración llamado `astro.config.mjs` dentro de la raíz del proyecto. Si no se encuentra ningún archivo de configuración en la raíz de su proyecto, se utilizarán las opciones predeterminadas de Astro. + +```bash +# Ejemplo: Lee la configuración desde ./astro.config.mjs +astro build +``` + +Puedes configurar explícitamente un archivo de configuración usando el indicador CLI `--config`. Este indicador CLI siempre se resuelve en relación a la carpeta de trabajo actual desde donde se ejecutó el comando CLI `astro`. + +```bash +# Ejemplo: Lee la configuración de este archivo +astro build --config my-config-file.js +``` + +## Configurar Intellisense + +Astro recomienda usar `defineConfig()` en su archivo de configuración. `defineConfig()` proporciona IntelliSense automático para su IDE. Los editores como VSCode pueden leer las definiciones de tipo TypeScript de Astro y proporcionar sugerencias de tipo jsdoc automáticas, incluso si su archivo de configuración no está escrito en TypeScript. + +```js +// astro.config.mjs +import { defineConfig } from 'astro/config' + +export default defineConfig({ + // sus opciones de configuración van aquí... + // https://docs.astro.build/es/reference/configuration-reference/ +}) +``` + +También puedes proporcionar definiciones de tipo manualmente a VSCode, utilizando la notación JSDoc: + +```js +// astro.config.mjs + export default /** @type {import('astro').AstroUserConfig} */ ({ + // sus opciones de configuración van aquí... + // https://docs.astro.build/es/reference/configuration-reference/ +} +``` + +## Referenciando archivos relativos + +Si proporciona una ruta relativa a `root` o el indicador de CLI `--root`, Astro lo resolverá desde la carpeta de trabajo actual donde ejecutó el comando CLI `astro`. + +```js +export default defineConfig({ + // Se resuelve a la carpeta "./foo" con relación a la carpeta de trabajo actual + root: 'foo' +}) +``` + +Astro resolverá todos los archivos y carpetas relativos a la carpeta raíz del proyecto especificada en su archivo de configuración. + +```js +export default defineConfig({ + // Se resuelve a la carpeta "./foo" con relación a la carpeta de trabajo actual + root: 'foo', + // Se resuelve a la carpeta "./foo/public" con relación a la carpeta de trabajo actual + publicDir: 'public', +}) +``` + +Para hacer referencia a un archivo o carpeta relativo al archivo de configuración, use `import.meta.url` (a menos que esté escribiendo un archivo common.js `astro.config.cjs`). + +```js +export default defineConfig({ + // Se resuelve a la carpeta "./foo" con relación a este archivo de configuración + root: new URL("./foo", import.meta.url), + // Se resuelve a la carpeta "./public" con relación a este archivo de configuración + publicDir: new URL("./public", import.meta.url), +}) +``` + +## Referencia de configuración + +📚 Lea la [referencia de configuración](/es/reference/configuration-reference/) de Astro para obtener una descripción general y completa de todas las opciones de configuración. From b26b7a4e417e1070d0e9585ec31950787caab17f Mon Sep 17 00:00:00 2001 From: Kevin Zuniga Cuellar <46791833+kevinzunigacuellar@users.noreply.github.com> Date: Thu, 2 Jun 2022 18:31:47 -0400 Subject: [PATCH 35/41] i18n(es): Update `partial-hydration.md` (#708) Co-authored-by: Chris Swithinbank --- src/pages/es/core-concepts/partial-hydration.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pages/es/core-concepts/partial-hydration.md b/src/pages/es/core-concepts/partial-hydration.md index 52f1d37fbf19f..e09dedf2dd688 100644 --- a/src/pages/es/core-concepts/partial-hydration.md +++ b/src/pages/es/core-concepts/partial-hydration.md @@ -7,7 +7,7 @@ setup: | i18nReady: true --- -**Astro por defecto genera todas las páginas web sin JavaScript del lado del cliente.** Use cualquier componente de interfaz de usuario que desee ([React](https://reactjs.org/), [Preact](https://preactjs.com/), [Svelte](https://svelte.dev/), [Vue](https://vuejs.org/), [SolidJS](https://www.solidjs.com/), [AlpineJS](https://alpinejs.dev/) y [Lit](https://lit.dev/)), Astro lo renderizará automáticamente a HTML en la compilación final y eliminará todo el JavaScript. Esto mantiene cada página más rápida por defecto. +**Astro por defecto genera todas las páginas web sin JavaScript del lado del cliente.** Use componentes de interfaz de usuario como [React](https://reactjs.org/), [Preact](https://preactjs.com/), [Svelte](https://svelte.dev/), [Vue](https://vuejs.org/), [SolidJS](https://www.solidjs.com/), [AlpineJS](https://alpinejs.dev/) o [Lit](https://lit.dev/), Astro lo renderizará automáticamente a HTML en la compilación final y eliminará todo el JavaScript. Esto mantiene cada página más rápida por defecto. ```astro --- @@ -18,7 +18,7 @@ import MyReactComponent from '../components/MyReactComponent.jsx'; ``` -A veces, se requiere JavaScript del lado del cliente para crear una interfaz de usuario interactiva. Cuando necesites una interfaz de usuario interactiva en la página, Astro no lo obliga a usar 100% JavaScript en toda la página. En cambio, Astro usa una técnica llamada **hidratación parcial** que le permite hidratar componentes individuales en la página. De esta manera, solo envía el JavaScript absolutamente esencial que necesita para ejecutar su página. +A veces, se requiere JavaScript del lado del cliente para crear interfaz de usuario interactivas. Cuando necesites una interfaz de usuario interactiva en la página, Astro no lo obliga a usar 100% JavaScript en toda la página. En cambio, Astro usa una técnica llamada **hidratación parcial** que le permite hidratar componentes individuales en la página. De esta manera, solo se envía el JavaScript absolutamente esencial para ejecutar su página. ```astro --- @@ -30,7 +30,7 @@ import MyReactComponent from '../components/MyReactComponent.jsx'; ``` -La gran mayoría de su página web sigue siendo HTML y CSS, puro y ligero, con **islas de interactividad** aisladas. +La gran mayoría de su página web sigue siendo HTML y CSS, puro y ligero, junto con **islas de interactividad** aisladas. ## Hidratación parcial @@ -47,7 +47,7 @@ En Astro, depende de usted como desarrollador optar explícitamente por cualquie ## Arquitectura de Islas -La **arquitectura de islas** es la idea de usar hidratación parcial para construir páginas web. La arquitectura de islas es una alternativa al proceso común de construir una página web desde un paquete de JavaScript del lado del cliente que se envía al usuario. +La **arquitectura de islas** es la idea de usar hidratación parcial para construir páginas web interactivas. La arquitectura de islas es una alternativa al proceso común de construir una página web desde un paquete de JavaScript del lado del cliente que se envía al usuario. > La idea general de una "arquitectura de islas" es muy simple: renderiza las páginas HTML en el servidor e inyecta marcadores de posición o ranuras alrededor de regiones altamente dinámicas. >
    -- [Arquitectura de Islas: Jason Miller](https://jasonformat.com/islands-architecture/) From 8e38f2bf3b795eb8909e5f174adabb1fa00d3306 Mon Sep 17 00:00:00 2001 From: Kevin Zuniga Cuellar <46791833+kevinzunigacuellar@users.noreply.github.com> Date: Thu, 2 Jun 2022 18:37:41 -0400 Subject: [PATCH 36/41] i18n(es): add `guides/aliases.md` (#709) Co-authored-by: delucis --- src/i18n/es/nav.ts | 1 + src/pages/es/guides/aliases.md | 47 ++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 src/pages/es/guides/aliases.md diff --git a/src/i18n/es/nav.ts b/src/i18n/es/nav.ts index eb74bf3ea9b4b..357fb742ff25c 100644 --- a/src/i18n/es/nav.ts +++ b/src/i18n/es/nav.ts @@ -12,4 +12,5 @@ export default NavDictionary({ 'core-concepts/partial-hydration': 'Hidratación parcial', 'guides/markdown-content': 'Markdown', 'guides/configuring-astro': 'Configuración de Astro', + 'guides/aliases': 'Aliases de importación', }); diff --git a/src/pages/es/guides/aliases.md b/src/pages/es/guides/aliases.md new file mode 100644 index 0000000000000..9f11a875d1acb --- /dev/null +++ b/src/pages/es/guides/aliases.md @@ -0,0 +1,47 @@ +--- +layout: ~/layouts/MainLayout.astro +title: Aliases +description: Introducción a los alias en Astro. +i18nReady: true +--- + +Un **alias** es una forma de crear atajos para sus importaciones. + +Los alias ayudan a mejorar la experiencia de desarrollo en repositorios con muchas carpetas o importaciones relativas. + +```astro +--- +// my-project/src/pages/about/company.astro + +import Button from '../../components/controls/Button.astro'; +import logoUrl from '../../assets/logo.png?url'; +--- +``` + +En este ejemplo, un desarrollador necesitaría comprender la relación de archivos entre `src/pages/about/company.astro`, `src/components/controls/Button.astro` y `src/assets/logo.png`. Y luego, si se moviera el archivo `company.astro`, estas importaciones también tendrían que actualizarse. + +Puedes agregar alias de importación desde `tsconfig.json` o `jsconfig.json`. + +```json +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@components/*": ["src/components/*"] + } + } +} +``` + +Con este cambio, ahora puedes importar usando los alias desde cualquier parte de su proyecto: + +```astro +--- +// my-project/src/pages/about/company.astro + +import Button from '@components/Button'; +import logoUrl from '@assets/logo.png'; +--- +``` + +Estos alias también se integran automáticamente a [VSCode](https://code.visualstudio.com/docs/languages/jsconfig) y otros editores. From 5a540668ceee8ebea0a0afe142190bd3bf68abc7 Mon Sep 17 00:00:00 2001 From: Kevin Zuniga Cuellar <46791833+kevinzunigacuellar@users.noreply.github.com> Date: Thu, 2 Jun 2022 18:44:20 -0400 Subject: [PATCH 37/41] i18n(es): add `data-fetching.md` (#711) Co-authored-by: delucis --- src/i18n/es/nav.ts | 1 + src/pages/es/guides/data-fetching.md | 102 +++++++++++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 src/pages/es/guides/data-fetching.md diff --git a/src/i18n/es/nav.ts b/src/i18n/es/nav.ts index 357fb742ff25c..a88184532c838 100644 --- a/src/i18n/es/nav.ts +++ b/src/i18n/es/nav.ts @@ -12,5 +12,6 @@ export default NavDictionary({ 'core-concepts/partial-hydration': 'Hidratación parcial', 'guides/markdown-content': 'Markdown', 'guides/configuring-astro': 'Configuración de Astro', + 'guides/data-fetching': 'Obtención de datos', 'guides/aliases': 'Aliases de importación', }); diff --git a/src/pages/es/guides/data-fetching.md b/src/pages/es/guides/data-fetching.md new file mode 100644 index 0000000000000..a75193935d849 --- /dev/null +++ b/src/pages/es/guides/data-fetching.md @@ -0,0 +1,102 @@ +--- +layout: ~/layouts/MainLayout.astro +title: Obtención de datos +description: Aprenda como obtener datos remotos con Astro utilizando la API de fetch. +i18nReady: true +--- + +Los archivos `.astro` pueden obtener datos remotos al momento de la compilación para ayudar a generar sus páginas. + +## `fetch()` en Astro + +Todos los [componentes de Astro](/es/core-concepts/astro-components/) tienen acceso a la función global [`fetch()`](https://developer.mozilla.org/en-US/docs/Web/API/fetch) en el script de su componente para realizar solicitudes HTTP a las APIs. Esta llamada se ejecutará en el momento de la compilación y los datos estarán disponibles en su componente para generar el HTML dinámico. + +💡 Aproveche el [**top-level await**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await#top_level_await) dentro del script de su componente de Astro. + +💡 Pase los datos obtenidos a los componentes de Astro u otros UI frameworks, como props. + +```astro +--- +// src/components/User.astro +import Contact from '../components/Contact.jsx'; +import Location from '../components/Location.astro'; + +const response = await fetch('https://randomuser.me/api/'); +const data = await response.json(); +const randomUser = data.results[0] +--- + +

    User

    +

    {randomUser.name.first} {randomUser.name.last}

    + + + + +``` + +### Consultas en GraphQL + +Astro también puede usar `fetch()` para consultar a un servidor GraphQL con cualquier query de GraphQL válida. + +```astro +--- +const response = await fetch("https://graphql-weather-api.herokuapp.com", + { + method:'POST', + headers: {'Content-Type':'application/json'}, + body: JSON.stringify({ + query: ` + query getWeather($name:String!) { + getCityByName(name: $name){ + name + country + weather { + summary { + description + } + } + } + } + `, + variables: { + name: "Toronto", + }, + }), + }) + +const json = await response.json(); +const weather = json.data +--- +

    Obtenega datos sobre el clima en el momento de la compilación

    +

    {weather.getCityByName.name}, {weather.getCityByName.country}

    +

    Clima: {weather.getCityByName.weather.summary.description}

    +``` + +> 💡 Recuerde, todos los datos en los componentes de Astro se recuperan cuando un componente es renderizado. + +Al desplegar, su proyecto de Astro solicitará los datos **una sola vez en el momento de la compilación**. En desarrollo, verá solicitudes de datos al actualizar los componentes. Si necesita volver a obtener datos varias veces del lado del cliente, use un [componente de framework](/es/core-concepts/framework-components/) o un [script del lado del cliente](/es/core-concepts/astro-components/#scripts-del-lado-del-cliente) en un componente de Astro. + +## `fetch()` en componentes de framework + +La función `fetch()` también está disponible globalmente para cualquier [componentes de framework](/es/core-concepts/framework-components/): + +```tsx +// Movies.tsx +import type { FunctionalComponent } from 'preact'; +import { h } from 'preact'; + +const data = await fetch('https://example.com/movies.json').then((response) => + response.json() +); + +// Los componentes que se renderizan en tiempo de compilación también se registran en la CLI. +// Cuando se representan con una directiva client:*, también se registran en la consola del navegador. +console.log(data); + +const Movies: FunctionalComponent = () => { +// Envía el resultado a la página. + return
    {JSON.stringify(data)}
    ; +}; + +export default Movies; +``` From 55c8eb55a41d486150a5344ee378a7ddeb385f6a Mon Sep 17 00:00:00 2001 From: yuto <43196286+yuto343@users.noreply.github.com> Date: Fri, 3 Jun 2022 09:47:20 +0900 Subject: [PATCH 38/41] i18n(ja): Add Japanese configuring-astro.md (#713) * i18n(ja): Add Japanese configuring-astro.md * update configuring-astro.md * update configuiing-astro.md Co-authored-by: Sarah Rainsberger --- src/pages/ja/guides/configuring-astro.md | 111 +++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 src/pages/ja/guides/configuring-astro.md diff --git a/src/pages/ja/guides/configuring-astro.md b/src/pages/ja/guides/configuring-astro.md new file mode 100644 index 0000000000000..28863056aeb9e --- /dev/null +++ b/src/pages/ja/guides/configuring-astro.md @@ -0,0 +1,111 @@ +--- +layout: ~/layouts/MainLayout.astro +title: Astroの設定 +i18nReady: true +--- + +プロジェクトに`astro.config.mjs`ファイルを追加することで、Astroの動作をカスタマイズできます。これはAstroプロジェクトではよく使われるファイルで、公式のサンプルテンプレートやテーマはすべて、デフォルトでこのファイルを含んでいます。 + +📚 サポートされているすべてのオプションの概要については、Astroの[API設定リファレンス](/ja/reference/configuration-reference/)をお読みください。 + +## Astroの設定ファイル + +有効なAstro設定ファイルは、`default`エクスポートを使用して、設定をエクスポートします。`defineConfig`ヘルパーを用いるのがおすすめです。 + +```js +// astro.config.mjs +import { defineConfig } from 'astro/config' + +export default defineConfig({ + // オプションをここに書きます... + // https://docs.astro.build/ja/reference/configuration-reference/ +}) +``` + +`defineConfig()`を使うと、IDEで自動的にタイプヒントを表示できるのでおすすめですが、これはオプションです。最低限必要で、有効な設定ファイルは次のようなものです。 + +```js +// 例: 最低限必要な空の設定ファイル +export default {} +``` + +## サポートされている設定ファイルの種類 + +Astroは、JavaScriptの設定ファイルとして、次のようないくつかのファイル形式をサポートしています。 `astro.config.js`,`astro.config.mjs`,`astro.config.cjs`,`astro.config.ts` + +TypeScriptの設定ファイルの読み込みは、[`tsm`](https://github.com/lukeed/tsm)を使って処理され、プロジェクトのtsconfigのオプションを尊重します。 +## 設定ファイルの指定 + +Astroは、プロジェクトルート内にある`astro.config.mjs`という名前の設定ファイルを自動的に使用しようとします。プロジェクトルートに設定ファイルがない場合、Astroのデフォルトのオプションが使用されます。 + +```bash +# 例: ./astro.config.mjs から設定を読み込みます。 +astro build +``` + +`--config`フラグを使用して、使用する設定ファイルを明示的に設定できます。このCLIフラグは、常に`astro`コマンドを実行した現在の作業ディレクトリから相対パスで指定されます。 + +```bash +# 例: このファイルから設定を読み込みます。 +astro build --config my-config-file.js +``` + +## 設定のインテリセンス + +Astroでは、設定ファイルに`defineConfig()`ヘルパーを使用することをおすすめします。`defineConfig()`はIDEに自動的にインテリセンスを提供します。VSCodeのようなエディタは、設定ファイルがTypeScriptで書かれていなくても、AstroのTypeScriptの型定義を読み込んで、自動的にjsdocの型ヒントを提供してくれます。 + +```js +// astro.config.mjs +import { defineConfig } from 'astro/config' + +export default defineConfig({ + // オプションをここに書きます... + // https://docs.astro.build/ja/reference/configuration-reference/ +}) +``` +また、以下のJSDoc記法を用いてVSCodeに手動で型定義を提供できます。 + +```js +// astro.config.mjs + export default /** @type {import('astro').AstroUserConfig} */ ({ + // オプションをここに書きます... + // https://docs.astro.build/ja/reference/configuration-reference/ +}) +``` + +## 相対ファイルの参照 + +`root`または`--root`フラグで相対パスを指定すると、`astro`コマンドを実行した現在の作業ディレクトリに反して、指定した相対パスをルートとして使用します。 + +```js +export default defineConfig({ + // 現在の作業ディレクトリにある "./foo"ディレクトリを指します。 + root: 'foo' +}) +``` + +Astroは、他のすべての相対ファイルおよび相対ディレクトリを、プロジェクトルートからの相対パスとして解決します。 + +```js +export default defineConfig({ + // 現在の作業ディレクトリにある "./foo"ディレクトリを指します。 + root: 'foo', + // 現在の作業ディレクトリの "./foo/public" ディレクトリを指します。 + publicDir: 'public', +}) +``` + +設定ファイルから相対的にファイルやディレクトリを参照するには、`import.meta.url`を使用します(common.jsの`astro.config.cjs`ファイルを記述する場合を除きます)。 + +```js +export default defineConfig({ + // この設定ファイルからの相対パスで、"./foo"ディレクトリを指します。 + root: new URL("./foo", import.meta.url), + // この設定ファイルから相対パスで、"./public "ディレクトリを指します。 + publicDir: new URL("./public", import.meta.url), +}) +``` + +## 設定リファレンス + +📚 サポートされているすべての設定オプションの概要については、Astroの[API設定リファレンス](/ja/reference/configuration-reference/)を参照してください。 From 63b88389533d54af2988c0cdad7eb3ba30cae09e Mon Sep 17 00:00:00 2001 From: yuto <43196286+yuto343@users.noreply.github.com> Date: Fri, 3 Jun 2022 09:50:05 +0900 Subject: [PATCH 39/41] i18n(ja): Add Japanese migrate.md (#712) * i18n(ja): Add Japanese migrate.md * fix link error * update ja/migrate.md * update migrate.md * update migrate.md * update migrate.md * update migrate.md Co-authored-by: Sarah Rainsberger --- src/pages/ja/migrate.md | 505 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 505 insertions(+) create mode 100644 src/pages/ja/migrate.md diff --git a/src/pages/ja/migrate.md b/src/pages/ja/migrate.md new file mode 100644 index 0000000000000..77be0abf4989f --- /dev/null +++ b/src/pages/ja/migrate.md @@ -0,0 +1,505 @@ +--- +layout: ~/layouts/MainLayout.astro +title: アップグレードガイド +description: プロジェクトをAstroの最新バージョンにアップグレードする。 +i18nReady: true +--- + +このガイドは古いバージョンのAstroから最新のバージョンへの移行を支援するものです。 + +主なハイライトと、破壊的変更への対処方法については以下のガイドをご覧ください。 + +## Astro 1.0 Beta + +2022年4月4日、1.0 Betaがリリースされました!🎉 + +**正式なv1.0.0リリース(2022年6月8日予定)に向けて、このベータ期間中にこれ以上の破壊的変更を加えることは予定していません。** + +もし、何らかの破壊的変更が必要な場合は、このセクションで呼びかけます。 + +## v1.0.0-beta.0へアップグレード + +`v1.0.0-beta.0`に破壊的変更はありません。 + +v0.25以前からアップグレードする人は、いくつかの破壊的変更を含んだ以下の[v0.26へアップグレード](#v026へアップグレード)を読み、それに従っているか確認してください。 + +## v0.26へアップグレード +### 新しいConfiguration API + +Configuration APIは、昨年以来蓄積されたいくつかの顕著な混乱ポイントを解決するために再設計されました。ほとんどの設定は移動または名前が変更されているだけなので、ほとんどのユーザーはすぐにアップデートできるでしょう。いくつかのオプションは大きくリファクタリングされており、追加で変更が必要になるかもしれません。 + +- `.buildOptions.site`は`.site`(デプロイ先ドメイン)と新たな`.base`(デプロイ先のサブパス)オプションに置き換えられました。 +- `.markdownOptions`は、Markdownの設定を簡素化するためにいくつかの小さな変更を加えた、ほぼ同様の設定オブジェクトである`.markdown`に置き換わりました。 +- `.sitemap`は[@astrojs/sitemap](https://www.npmjs.com/package/@astrojs/sitemap)インテグレーションに移動しました。 + +レガシーな構成でAstroを実行すると、アップデート方法を示す警告が表示されます。アップグレードの詳細については、更新された[設定方法](/ja/reference/configuration-reference/)を参照してください。 + +これらの変更の背景については、[RFC0019](https://github.com/withastro/rfcs/blob/main/proposals/0019-config-finalization.md)をご覧ください。 + +### 新しいMarkdown API + +Astro v0.26は、コンテンツのために全く新しいMarkdown APIをリリースします。これには3つの大きな変更が含まれています。 +- ESMのimport(`import`/`import()`)を使用してマークダウンコンテンツを直接インポートできるようになりました。 +- 新しい`Astro.glob()`APIは、globのインポートをより簡単にします。(特に Markdownで)。 +- **破壊的変更:** `Astro.fetchContent()`は削除され、`Astro.glob()`に置き換わりました。 +- **破壊的変更:** Markdownオブジェクトのインターフェイスが更新されました。 + +```diff +// v0.25 +- let allPosts = Astro.fetchContent('./posts/*.md'); +// v0.26+ ++ let allPosts = await Astro.glob('./posts/*.md'); +``` + +アップグレードする際は、新しいMarkdownオブジェクトのインターフェースに注意してください。例えば、front-matterは `.frontmatter` プロパティに移動したので、`post.title`のような参照は`post.frontmatter.title`に変更する必要があります。 + +これは、大規模なサイトにおけるパフォーマンスの向上を含む、Markdownユーザーにとっての多くの問題を解決するはずです。 + +これらの変更の背景については、[RFC0017](https://github.com/withastro/rfcs/blob/main/proposals/0017-markdown-content-redesign.md)をご覧ください。 + +### スクリプトの新しいデフォルト動作 + +Astroコンポーネントの`` +**使いどころ:** 外部スクリプトが`src/`ディレクトリ内にあり、それがES Modulesをサポートしている場合。 + +Astroテンプレート内の` +``` + +Astroはこの外部スクリプトを残りのクライアントサイドJavaScriptと一緒にバンドルし、`type="module"`で読み込むことに注意してください。古いJavaScriptファイルは `type="module"`の文脈で書かれていない場合があり、その場合はこの方法を使用するために更新する必要があるかもしれません。 + +#### 画像や他のアセットのパスを解決する方法 + +**1. 絶対パス(おすすめ)** + +**例:** `` +**使いどころ:** アセットが`public/`ディレクトリ内にある場合 + +`public/`の中に画像を配置すれば、コンポーネントテンプレート内で直接絶対パスで安全に参照できます。これは現在使用できる最もシンプルなアセットを参照する方法であり、Astroを使い始めたほとんどのユーザーにおすすめの方法です。 + +**2. ESM Import** + +**例:** `import imgUrl from './penguin.png'` +**使いどころ:** アセットが `src/` ディレクトリ内にあり、ファイル名のハッシュ化のような自動最適化機能が必要な場合。 + +これは、あらゆるJavaScriptまたはAstroコンポーネントの内部で動作し、最終的な画像への解決されたURLを返します。そのURLはコンポーネントテンプレート内のどこでも使用できます。 + +```astro +--- +// 例: Astroはこの画像を最終的なビルドに含めます。 +import imgUrl from './penguin.png'; +--- + +``` + +AstroがCSSを処理する方法と同様に、ESMのimportによってAstroはいくつかの簡単なビルドの最適化を自動的に実行できます。例えば、ESMのimportを使用してインポートされた`src/`内のアセット(例:`import imgUrl from './penguin.png'`)には、そのファイル名が自動的にハッシュ化されます。これにより、サーバー上でより積極的にファイルをキャッシュでき、ユーザーのパフォーマンスを向上させます。将来、Astroはこのような最適化をさらに追加する可能性があります。 + +**ヒント:** 静的なESMのimportが嫌いな場合は、Astroは動的なESMのimportもサポートしています。このオプションを推奨するのは、この構文が好きな場合のみです。: ``. + + +### 非推奨: ` + +``` + + +## v0.23へアップグレード + +### Sassが欠落するエラー + +``` +Preprocessor dependency "sass" not found. Did you install it? +``` + +npmのインストールサイズを小さくするために、Sassをオプションの依存関係に移動しました。プロジェクトでSassを使用する場合は、`npm install sass --save-dev`を実行して依存関係として保存したか確認することをおすすめします。 + +### 非推奨: エスケープされていないHTML + +Astro v0.23+では、コード中のエスケープされていないHTMLコンテンツは非推奨になりました。 +今後のリリースでは、意図しないHTMLインジェクションから保護するために、コード内のコンテンツは文字列がエスケープされるようになります。 + +```diff +-

    {title}

    ++

    {title}

    +``` + +エスケープされていないHTMLを注入する場合、今後は`set:html`を使用する必要があります。 + +```diff +-

    {title}

    ++

    +``` + +ラッパー要素を避けるために、`set:html`は``と一緒に動作します。 + +```diff +-

    {title}!

    ++

    !

    +``` + +また、`set:text`を使えば、意図しないHTMLインジェクションから保護することができます。 + +```astro +

    +``` + +## v0.21へアップグレード + +### Vite + +v0.21から、Astroは[Vite]でビルドされるようになりました。 +そのため、`snowpack.config.mjs`に書かれている設定は`astro.config.mjs`に移動する必要があります。 + +```js +// @ts-check + +/** @type {import('astro').AstroUserConfig} */ +export default { + renderers: [], + vite: { + plugins: [], + }, +}; +``` + +Viteの設定について詳しく知りたい方は、Viteの[設定ガイド](https://vitejs.dev/config/)をご覧ください。 + +#### Viteプラグイン + +Astro v0.21+では、Viteプラグインは`astro.config.mjs`内で設定できます。 + +```js +import { imagetools } from 'vite-imagetools'; + +export default { + vite: { + plugins: [imagetools()], + }, +}; +``` + +Viteプラグインの詳細については、Viteの[プラグインガイド](https://vitejs.dev/guide/using-plugins.html)をご覧ください。 + +#### レンダラーに関するViteの変更 + +Astro v0.21+では、プラグインは`viteConfig()`を使用するようになりました。 + +```diff +// renderer-svelte/index.js ++ import { svelte } from '@sveltejs/vite-plugin-svelte'; + +export default { + name: '@astrojs/renderer-svelte', + client: './client.js', + server: './server.js', +- snowpackPlugin: '@snowpack/plugin-svelte', +- snowpackPluginOptions: { compilerOptions: { hydratable: true } }, ++ viteConfig() { ++ return { ++ optimizeDeps: { ++ include: ['@astrojs/renderer-svelte/client.js', 'svelte', 'svelte/internal'], ++ exclude: ['@astrojs/renderer-svelte/server.js'], ++ }, ++ plugins: [ ++ svelte({ ++ emitCss: true, ++ compilerOptions: { hydratable: true }, ++ }), ++ ], ++ }; ++ }, +} +``` + +Viteプラグインの詳細については、Viteの[プラグインガイド](https://vitejs.dev/guide/using-plugins.html)をご覧ください。 + +> 以前のリリースでは、これらは`snowpackPlugin`または`snowpackPluginOptions`で設定されていました。 + + +### エイリアス + +Astro v0.21+ では、インポートエイリアスを`tsconfig.json`または`jsconfig.json`から追加できるようになりました。 + +```json +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/components/*": ["src/components/*"] + } + } +} +``` + +_これらのエイリアスは、[VSCode](https://code.visualstudio.com/docs/languages/jsconfig)や他のエディタに自動的に統合されます_。 + +### インポート時の拡張子 + +Astro v0.21+では、ファイルはディスク上のものと同じ実際の拡張子で参照する必要があります。この例では、`Div.tsx`は`Div.jsx`ではなく`Div.tsx`として参照される必要があります。 + +```diff +- import Div from './Div.jsx' // Astro v0.20 ++ import Div from './Div.tsx' // Astro v0.21 +``` + +この変更は、`Div.scss`のようなコンパイル済みのCSSファイルにも同様に適用されます。 + +```diff +- ++ +``` + +### 削除: front-matter内のコンポーネント + +以前は、Astroのコンポーネント構文ではなくJSX構文を使って、Astroのfront-matterの中にミニAstroコンポーネントを作成できました。これは常にちょっとしたハックでしたが、新しいコンパイラではサポートが不可能になりました。Astroの将来のリリースでは、JSXではない別のAPIを使用して、この機能を再導入したいと考えています。 + +v0.21+に移行するには、すべてのJSX Astroコンポーネント(つまり、他のコンポーネントのfront-matter内に作成されたAstroコンポーネント)を独立したコンポーネントに変換してください。 + +### スタイリングの変更 + +#### Autoprefixer + +Autoprefixerは、デフォルトでは実行されなくなりました。有効にするには + +1. 最新版をインストールする。(`npm i autoprefixer`) +2. プロジェクトルートに`postcss.config.cjs`ファイルを以下のように作成する。 + ```js + module.exports = { + plugins: { + autoprefixer: {}, + }, + }; + ``` + +#### Tailwind CSS + +PostCSSがインストールされていることを確認します。これは以前のリリースではオプションでしたが、現在は必須です。 + +1. 最新版のpostcssをインストールする(`npm i -D postcss`) +2. プロジェクトのルートに以下のように`postcss.config.cjs`ファイルを作成する。 + ```js + module.exports = { + plugins: { + tailwindcss: {}, + }, + }; + ``` + 詳しくは、[Tailwind CSSドキュメント](https://tailwindcss.com/docs/installation#add-tailwind-as-a-post-css-plugin)をご覧ください。 + + +### 既知の問題 + +#### トップでのインポート + +Astro v0.21+では、コンポーネント内のインポートがfront-matterの先頭になければならないバグがあります。 + +```astro +--- +import Component from '../components/Component.astro' +const whereShouldIPutMyImports = "on top!" +--- +``` + + +[vite]: https://vitejs.dev From 00a052267df4bbb403791ccd0f187f58855852c7 Mon Sep 17 00:00:00 2001 From: Yosuke Ota Date: Fri, 3 Jun 2022 16:52:32 +0900 Subject: [PATCH 40/41] Use ESLint on .astro and .ts files (#710) Co-authored-by: Chris Swithinbank --- .eslintignore | 5 + .eslintrc.js | 33 + package.json | 9 +- pnpm-lock.yaml | 1012 +++++++++++------ scripts/lib/linkcheck/base/base.ts | 4 +- scripts/lib/linkcheck/checks/target-exists.ts | 2 +- scripts/lib/linkcheck/steps/find-issues.ts | 4 +- scripts/lib/linkcheck/steps/output-issues.ts | 2 +- src/components/Card.astro | 4 +- src/components/HeadCommon.astro | 1 + src/components/LeftSidebar/LeftSidebar.astro | 2 +- src/components/TabBox.astro | 2 +- src/pages/index.astro | 1 - 13 files changed, 698 insertions(+), 383 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc.js diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000000000..e83b4b129913c --- /dev/null +++ b/.eslintignore @@ -0,0 +1,5 @@ +dist +node_modules +.github +.changeset +/src/pages/lighthouse diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000000000..c86a4b4c4fb3e --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,33 @@ +module.exports = { + env: { + node: true, + es2022: true, + browser: true, + }, + extends: ['eslint:recommended', 'plugin:astro/recommended'], + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + }, + rules: {}, + overrides: [ + { + files: ["*.astro"], + parser: "astro-eslint-parser", + parserOptions: { + parser: "@typescript-eslint/parser", + extraFileExtensions: [".astro"], + }, + rules: {}, + }, + { + files: ['*.ts'], + parser: '@typescript-eslint/parser', + extends: ['plugin:@typescript-eslint/recommended'], + rules: { + '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', destructuredArrayIgnorePattern: '^_' }], + '@typescript-eslint/no-non-null-assertion': 'off', + }, + }, + ], +}; diff --git a/package.json b/package.json index 9dd635478950d..d1b13b0e6bc19 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "lint:linkcheck": "astro build && tsm --require=./scripts/lib/filter-warnings.cjs ./scripts/lint-linkcheck.ts", "lint:linkcheck:nobuild": "tsm --require=./scripts/lib/filter-warnings.cjs ./scripts/lint-linkcheck.ts", "lint:slugcheck": "node ./scripts/lint-slugcheck.mjs", + "lint:eslint": "eslint . --ext .js,.ts,.astro", "github:translation-status": "node ./scripts/github-translation-status.mjs" }, "devDependencies": { @@ -25,9 +26,14 @@ "@astrojs/sitemap": "^0.1.0", "@babel/core": "^7.17.9", "@types/react": "^17.0.43", + "@typescript-eslint/eslint-plugin": "^5.27.0", + "@typescript-eslint/parser": "^5.27.0", "astro": "^1.0.0-beta.17", + "astro-eslint-parser": "^0.2.2", "bcp-47-normalize": "^2.1.0", "dedent-js": "^1.0.1", + "eslint": "^8.16.0", + "eslint-plugin-astro": "^0.8.1", "fast-glob": "^3.2.11", "htmlparser2": "^7.2.0", "kleur": "^4.1.4", @@ -38,7 +44,8 @@ "react": "^17.0.2", "react-dom": "^17.0.2", "simple-git": "^3.7.1", - "tsm": "^2.2.1" + "tsm": "^2.2.1", + "typescript": "^4.7.2" }, "dependencies": { "@astropub/icons": "^0.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f3c0017320cb0..626a9492a11e5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,9 +10,14 @@ specifiers: '@babel/core': ^7.17.9 '@docsearch/react': ^3.0.0 '@types/react': ^17.0.43 + '@typescript-eslint/eslint-plugin': ^5.27.0 + '@typescript-eslint/parser': ^5.27.0 astro: ^1.0.0-beta.17 + astro-eslint-parser: ^0.2.2 bcp-47-normalize: ^2.1.0 dedent-js: ^1.0.1 + eslint: ^8.16.0 + eslint-plugin-astro: ^0.8.1 fast-glob: ^3.2.11 htmlparser2: ^7.2.0 jsdoc-api: ^7.1.1 @@ -30,6 +35,7 @@ specifiers: sass: ^1.50.0 simple-git: ^3.7.1 tsm: ^2.2.1 + typescript: ^4.7.2 dependencies: '@astropub/icons': 0.2.0_astro@1.0.0-beta.17 @@ -49,9 +55,14 @@ devDependencies: '@astrojs/sitemap': 0.1.0 '@babel/core': 7.17.9 '@types/react': 17.0.43 + '@typescript-eslint/eslint-plugin': 5.27.0_dszb5tb7atwkjjijmmov4qhi7i + '@typescript-eslint/parser': 5.27.0_xztl6dhthcahlo6akmb2bmjmle astro: 1.0.0-beta.17_sass@1.50.0 + astro-eslint-parser: 0.2.2 bcp-47-normalize: 2.1.0 dedent-js: 1.0.1 + eslint: 8.16.0 + eslint-plugin-astro: 0.8.1_wtnyy2apyieggkncrmd6jlo5ja fast-glob: 3.2.11 htmlparser2: 7.2.0 kleur: 4.1.4 @@ -63,6 +74,7 @@ devDependencies: react-dom: 17.0.2_react@17.0.2 simple-git: 3.7.1 tsm: 2.2.1 + typescript: 4.7.2 packages: @@ -111,7 +123,6 @@ packages: /@algolia/cache-common/4.13.0: resolution: {integrity: sha512-f9mdZjskCui/dA/fA/5a+6hZ7xnHaaZI5tM/Rw9X8rRB39SUlF/+o3P47onZ33n/AwkpSbi5QOyhs16wHd55kA==} - dev: true /@algolia/cache-in-memory/4.12.2: resolution: {integrity: sha512-opWpbBUloP1fcTG3wBDnAfcoyNXW5GFDgGtLXrSANdfnelPKkr3O8j01ZTkRlPIuBDR0izGZG8MVWMDlTf71Bw==} @@ -148,7 +159,6 @@ packages: dependencies: '@algolia/requester-common': 4.13.0 '@algolia/transporter': 4.13.0 - dev: true /@algolia/client-personalization/4.12.2: resolution: {integrity: sha512-JBW3vYFGIm5sAAy3cLUdmUCpmSAdreo5S1fERg7xgF6KyxGrwyy5BViTNWrOKG+av2yusk1wKydOYJ1Fbpbaxw==} @@ -172,7 +182,6 @@ packages: '@algolia/client-common': 4.13.0 '@algolia/requester-common': 4.13.0 '@algolia/transporter': 4.13.0 - dev: true /@algolia/logger-common/4.12.2: resolution: {integrity: sha512-iOiJAymLjq137G7+8EQuUEkrgta0cZGMg6scp8s4hJ+X6k+6By4nyptdkCWYwKLsW/Xy927QcIhGlkWV78vQIQ==} @@ -180,7 +189,6 @@ packages: /@algolia/logger-common/4.13.0: resolution: {integrity: sha512-8yqXk7rMtmQJ9wZiHOt/6d4/JDEg5VCk83gJ39I+X/pwUPzIsbKy9QiK4uJ3aJELKyoIiDT1hpYVt+5ia+94IA==} - dev: true /@algolia/logger-console/4.12.2: resolution: {integrity: sha512-veuQZyTSqHoHJtr9mLMnYeal9Mee6hCie4eqY+645VbeOrgT9p/kCMbKg5GLJGoLPlXGu7C0XpHyUj5k7/NQyw==} @@ -200,7 +208,6 @@ packages: /@algolia/requester-common/4.13.0: resolution: {integrity: sha512-BRTDj53ecK+gn7ugukDWOOcBRul59C4NblCHqj4Zm5msd5UnHFjd/sGX+RLOEoFMhetILAnmg6wMrRrQVac9vw==} - dev: true /@algolia/requester-node-http/4.12.2: resolution: {integrity: sha512-UXfJNZt2KMwjBjiOa3cJ/PyoXWZa/F1vy6rdyG4xQeZDcLbqKP3O2b+bOJcGPmFbmdwBhtAyMVLt+hvAvAVfOw==} @@ -222,20 +229,24 @@ packages: '@algolia/cache-common': 4.13.0 '@algolia/logger-common': 4.13.0 '@algolia/requester-common': 4.13.0 - dev: true /@ampproject/remapping/2.1.2: resolution: {integrity: sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/trace-mapping': 0.3.4 - dev: true /@astrojs/compiler/0.14.2: resolution: {integrity: sha512-kLj3iWkzPNk9TXWDY7bqGXRQ0XZbpwJNulQ7WrJCdv2zre7TG0E51x5ab8tCsiiTRZ2xORHuIz+gH2qFotXrKw==} dependencies: tsm: 2.2.1 uvu: 0.5.3 + + /@astrojs/compiler/0.15.2: + resolution: {integrity: sha512-YsxIyx026zPWbxv3wYrudr1jh8u6oSnhP6MW+9OAgiFuICHjSX4Rw+qm8wJj1D5IkJ3HsDtE+kFMMYIozZ5bvQ==} + dependencies: + tsm: 2.2.1 + uvu: 0.5.3 dev: true /@astrojs/language-server/0.13.4: @@ -254,7 +265,6 @@ packages: vscode-languageserver-textdocument: 1.0.4 vscode-languageserver-types: 3.16.0 vscode-uri: 3.0.3 - dev: true /@astrojs/markdown-remark/0.9.2: resolution: {integrity: sha512-0yOV1ucOvDyA9Bg1Rs56Zfe8EGtPxBfMReUQTAW/1hLZgIu8WgTCHuTRRT/z7UkjJHX8TiT9XMsUtBOI20cYWQ==} @@ -280,7 +290,6 @@ packages: unist-util-visit: 4.1.0 transitivePeerDependencies: - supports-color - dev: true /@astrojs/preact/0.0.2_4aogvlozmxuufv32kpculfbxce: resolution: {integrity: sha512-rpmQ+nffweQFQQnuSf6tGT8RDVzYURSve8R/fuuf02P0fTU7ZoqBzfG+BlQsAzkqJU8L9BHsnyRJOUoETrfK8w==} @@ -298,7 +307,6 @@ packages: /@astrojs/prism/0.4.1: resolution: {integrity: sha512-JxkrXFiFhfunOFBI2Xxwru9t4IzrLw+nfA7RkNnV8qP65BLidrwWS+NfZhOSVGTrbf+cQfF8QNe6O4gAX8wQHw==} engines: {node: ^14.15.0 || >=16.0.0} - dev: true /@astrojs/react/0.1.0_6nyponiwjib2clhkbtejle6l5y: resolution: {integrity: sha512-WWowT/TsrV5iiBuUstUdm2fBzDkL8EJt5B71xgEEC8OUcLonSD9+cHohVtbgOrNKHqEpm3Shoxx9GrjhK9tZPg==} @@ -327,11 +335,9 @@ packages: svelte2tsx: 0.5.7_liohzkyisnst3glff4denqdl5m transitivePeerDependencies: - typescript - dev: true /@astrojs/webapi/0.11.1: resolution: {integrity: sha512-pZXhYWz1C4dOAznnO1Qst58O+iZfkzn5QypiH4xHVl5GU9gkbq/mAJ/wZ34127GayF4AnCZO37DMlTOLR4fBAQ==} - dev: true /@astropub/icons/0.2.0_astro@1.0.0-beta.17: resolution: {integrity: sha512-qM/ldW/9rVHULNOZgz/23Yzgm2r3Iy2JJ1FuvJB6sFU67n61o1ImuXdHiaWSNoEHubD+IUkD9WG0hbhINgszqA==} @@ -346,12 +352,10 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.17.9 - dev: true /@babel/compat-data/7.17.7: resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==} engines: {node: '>=6.9.0'} - dev: true /@babel/core/7.17.9: resolution: {integrity: sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==} @@ -374,7 +378,6 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: true /@babel/generator/7.17.9: resolution: {integrity: sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==} @@ -383,7 +386,6 @@ packages: '@babel/types': 7.17.0 jsesc: 2.5.2 source-map: 0.5.7 - dev: true /@babel/helper-annotate-as-pure/7.16.7: resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} @@ -403,14 +405,12 @@ packages: '@babel/helper-validator-option': 7.16.7 browserslist: 4.20.2 semver: 6.3.0 - dev: true /@babel/helper-environment-visitor/7.16.7: resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 - dev: true /@babel/helper-function-name/7.17.9: resolution: {integrity: sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==} @@ -418,21 +418,18 @@ packages: dependencies: '@babel/template': 7.16.7 '@babel/types': 7.17.0 - dev: true /@babel/helper-hoist-variables/7.16.7: resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 - dev: true /@babel/helper-module-imports/7.16.7: resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 - dev: true /@babel/helper-module-transforms/7.17.7: resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==} @@ -448,7 +445,6 @@ packages: '@babel/types': 7.17.0 transitivePeerDependencies: - supports-color - dev: true /@babel/helper-plugin-utils/7.16.7: resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==} @@ -460,14 +456,12 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 - dev: true /@babel/helper-split-export-declaration/7.16.7: resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 - dev: true /@babel/helper-validator-identifier/7.16.7: resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} @@ -476,7 +470,6 @@ packages: /@babel/helper-validator-option/7.16.7: resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} engines: {node: '>=6.9.0'} - dev: true /@babel/helpers/7.17.9: resolution: {integrity: sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==} @@ -487,7 +480,6 @@ packages: '@babel/types': 7.17.0 transitivePeerDependencies: - supports-color - dev: true /@babel/highlight/7.17.9: resolution: {integrity: sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==} @@ -496,7 +488,6 @@ packages: '@babel/helper-validator-identifier': 7.16.7 chalk: 2.4.2 js-tokens: 4.0.0 - dev: true /@babel/parser/7.17.8: resolution: {integrity: sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==} @@ -512,7 +503,6 @@ packages: hasBin: true dependencies: '@babel/types': 7.17.0 - dev: true /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.17.9: resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} @@ -545,7 +535,6 @@ packages: '@babel/code-frame': 7.16.7 '@babel/parser': 7.17.9 '@babel/types': 7.17.0 - dev: true /@babel/traverse/7.17.9: resolution: {integrity: sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==} @@ -563,7 +552,6 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true /@babel/types/7.17.0: resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} @@ -598,33 +586,59 @@ packages: resolution: {integrity: sha512-87pltuCPt99aL+y9xS6GPZ+Wmmyhll2WXH73gG/xpGcQ84DRnptBsI2r0BeIQ0EB/SQTOe2ANPqFqj3Rj5FOGA==} dependencies: '@emmetio/scanner': 1.0.0 - dev: true /@emmetio/css-abbreviation/2.1.4: resolution: {integrity: sha512-qk9L60Y+uRtM5CPbB0y+QNl/1XKE09mSO+AhhSauIfr2YOx/ta3NJw2d8RtCFxgzHeRqFRr8jgyzThbu+MZ4Uw==} dependencies: '@emmetio/scanner': 1.0.0 - dev: true /@emmetio/scanner/1.0.0: resolution: {integrity: sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==} + + /@eslint/eslintrc/1.3.0: + resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.3.2 + globals: 13.15.0 + ignore: 5.2.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/config-array/0.9.5: + resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/object-schema/1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true /@jridgewell/resolve-uri/3.0.5: resolution: {integrity: sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==} engines: {node: '>=6.0.0'} - dev: true /@jridgewell/sourcemap-codec/1.4.11: resolution: {integrity: sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==} - dev: true /@jridgewell/trace-mapping/0.3.4: resolution: {integrity: sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==} dependencies: '@jridgewell/resolve-uri': 3.0.5 '@jridgewell/sourcemap-codec': 1.4.11 - dev: true /@kwsites/file-exists/1.1.1: resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} @@ -640,7 +654,6 @@ packages: /@ljharb/has-package-exports-patterns/0.0.2: resolution: {integrity: sha512-4/RWEeXDO6bocPONheFe6gX/oQdP/bEpv0oL4HqjPP5DCenBSt0mHgahppY49N0CpsaqffdwPq+TlX9CYOq2Dw==} - dev: true /@nodelib/fs.scandir/2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -648,12 +661,10 @@ packages: dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - dev: true /@nodelib/fs.stat/2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - dev: true /@nodelib/fs.walk/1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} @@ -661,18 +672,27 @@ packages: dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.13.0 + + /@pkgr/utils/2.2.0: + resolution: {integrity: sha512-/+EeY/T/NLCfF4rvgUetl7ERNwoPz5q/p+8CYeAIFblsKSQbVJjmMccs/Y7CsOPv47hXcBrhk5IqOf9AqRNfhg==} + engines: {node: '>=12'} + dependencies: + cross-spawn: 7.0.3 + is-glob: 4.0.3 + open: 8.4.0 + picocolors: 1.0.0 + tiny-glob: 0.2.9 + tslib: 2.4.0 dev: true /@polka/url/1.0.0-next.21: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} - dev: true /@proload/core/0.2.2: resolution: {integrity: sha512-HYQEblYXIpW77kvGyW4penEl9D9e9MouPhTqVaDz9+QVFliYjsq18inTfnfTa81s3oraPVtTk60tqCWOf2fKGQ==} dependencies: deepmerge: 4.2.2 escalade: 3.1.1 - dev: true /@proload/plugin-tsm/0.1.1_@proload+core@0.2.2: resolution: {integrity: sha512-qfGegg6I3YBCZDjYR9xb41MTc2EfL0sQQmw49Z/yi9OstIpUa/67MBy4AuNhoyG9FuOXia9gPoeBk5pGnBOGtA==} @@ -681,13 +701,11 @@ packages: dependencies: '@proload/core': 0.2.2 tsm: 2.2.1 - dev: true /@types/acorn/4.0.6: resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} dependencies: '@types/estree': 0.0.51 - dev: true /@types/debug/4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} @@ -698,24 +716,24 @@ packages: resolution: {integrity: sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A==} dependencies: '@types/estree': 0.0.51 - dev: true /@types/estree/0.0.50: resolution: {integrity: sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==} - dev: true /@types/estree/0.0.51: resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} - dev: true /@types/hast/2.3.4: resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} dependencies: '@types/unist': 2.0.6 + /@types/json-schema/7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + dev: true + /@types/json5/0.0.30: resolution: {integrity: sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==} - dev: true /@types/linkify-it/3.0.2: resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==} @@ -750,11 +768,9 @@ packages: /@types/parse5/6.0.3: resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} - dev: true /@types/prop-types/15.7.4: resolution: {integrity: sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==} - dev: true /@types/react/17.0.43: resolution: {integrity: sha512-8Q+LNpdxf057brvPu1lMtC5Vn7J119xrP1aq4qiaefNioQUYANF/CYeK4NsKorSZyUGJ66g0IM+4bbjwx45o2A==} @@ -762,11 +778,9 @@ packages: '@types/prop-types': 15.7.4 '@types/scheduler': 0.16.2 csstype: 3.0.11 - dev: true /@types/resolve/1.20.1: resolution: {integrity: sha512-Ku5+GPFa12S3W26Uwtw+xyrtIpaZsGYHH6zxNbZlstmlvMYSZRzOwzwsXbxlVUbHyUucctSyuFtu6bNxwYomIw==} - dev: true /@types/sax/1.2.4: resolution: {integrity: sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==} @@ -776,11 +790,136 @@ packages: /@types/scheduler/0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} - dev: true /@types/unist/2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + /@typescript-eslint/eslint-plugin/5.27.0_dszb5tb7atwkjjijmmov4qhi7i: + resolution: {integrity: sha512-DDrIA7GXtmHXr1VCcx9HivA39eprYBIFxbQEHI6NyraRDxCGpxAFiYQAT/1Y0vh1C+o2vfBiy4IuPoXxtTZCAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/parser': 5.27.0_xztl6dhthcahlo6akmb2bmjmle + '@typescript-eslint/scope-manager': 5.27.0 + '@typescript-eslint/type-utils': 5.27.0_xztl6dhthcahlo6akmb2bmjmle + '@typescript-eslint/utils': 5.27.0_xztl6dhthcahlo6akmb2bmjmle + debug: 4.3.4 + eslint: 8.16.0 + functional-red-black-tree: 1.0.1 + ignore: 5.2.0 + regexpp: 3.2.0 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.7.2 + typescript: 4.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser/5.27.0_xztl6dhthcahlo6akmb2bmjmle: + resolution: {integrity: sha512-8oGjQF46c52l7fMiPPvX4It3u3V3JipssqDfHQ2hcR0AeR8Zge+OYyKUCm5b70X72N1qXt0qgHenwN6Gc2SXZA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.27.0 + '@typescript-eslint/types': 5.27.0 + '@typescript-eslint/typescript-estree': 5.27.0_typescript@4.7.2 + debug: 4.3.4 + eslint: 8.16.0 + typescript: 4.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager/5.27.0: + resolution: {integrity: sha512-VnykheBQ/sHd1Vt0LJ1JLrMH1GzHO+SzX6VTXuStISIsvRiurue/eRkTqSrG0CexHQgKG8shyJfR4o5VYioB9g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.27.0 + '@typescript-eslint/visitor-keys': 5.27.0 + dev: true + + /@typescript-eslint/type-utils/5.27.0_xztl6dhthcahlo6akmb2bmjmle: + resolution: {integrity: sha512-vpTvRRchaf628Hb/Xzfek+85o//zEUotr1SmexKvTfs7czXfYjXVT/a5yDbpzLBX1rhbqxjDdr1Gyo0x1Fc64g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/utils': 5.27.0_xztl6dhthcahlo6akmb2bmjmle + debug: 4.3.4 + eslint: 8.16.0 + tsutils: 3.21.0_typescript@4.7.2 + typescript: 4.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types/5.27.0: + resolution: {integrity: sha512-lY6C7oGm9a/GWhmUDOs3xAVRz4ty/XKlQ2fOLr8GAIryGn0+UBOoJDWyHer3UgrHkenorwvBnphhP+zPmzmw0A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/typescript-estree/5.27.0_typescript@4.7.2: + resolution: {integrity: sha512-QywPMFvgZ+MHSLRofLI7BDL+UczFFHyj0vF5ibeChDAJgdTV8k4xgEwF0geFhVlPc1p8r70eYewzpo6ps+9LJQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.27.0 + '@typescript-eslint/visitor-keys': 5.27.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.7.2 + typescript: 4.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils/5.27.0_xztl6dhthcahlo6akmb2bmjmle: + resolution: {integrity: sha512-nZvCrkIJppym7cIbP3pOwIkAefXOmfGPnCM0LQfzNaKxJHI6VjI8NC662uoiPlaf5f6ymkTy9C3NQXev2mdXmA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@typescript-eslint/scope-manager': 5.27.0 + '@typescript-eslint/types': 5.27.0 + '@typescript-eslint/typescript-estree': 5.27.0_typescript@4.7.2 + eslint: 8.16.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@8.16.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys/5.27.0: + resolution: {integrity: sha512-46cYrteA2MrIAjv9ai44OQDUoCZyHeGIc4lsjCUX2WT6r4C+kidz1bNiR4017wHOPUythYeH+Sc7/cFP97KEAA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.27.0 + eslint-visitor-keys: 3.3.0 + dev: true + /@vscode/emmet-helper/2.8.4: resolution: {integrity: sha512-lUki5QLS47bz/U8IlG9VQ+1lfxMtxMZENmU5nu4Z71eOD5j9FK0SmYGL5NiVJg9WBWeAU0VxRADMY2Qpq7BfVg==} dependencies: @@ -790,6 +929,28 @@ packages: vscode-languageserver-types: 3.16.0 vscode-nls: 5.0.0 vscode-uri: 2.1.2 + + /acorn-jsx/5.3.2_acorn@8.7.1: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.7.1 + dev: true + + /acorn/8.7.1: + resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /ajv/6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 dev: true /algoliasearch/4.12.2: @@ -815,36 +976,30 @@ packages: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} dependencies: string-width: 4.2.3 - dev: true /ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - dev: true /ansi-regex/6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} - dev: true /ansi-styles/3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - dev: true /ansi-styles/4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - dev: true /ansi-styles/6.1.0: resolution: {integrity: sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==} engines: {node: '>=12'} - dev: true /anymatch/3.1.2: resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} @@ -852,7 +1007,6 @@ packages: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - dev: false /arg/5.0.1: resolution: {integrity: sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==} @@ -862,11 +1016,9 @@ packages: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 - dev: true /argparse/2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: false /array-back/1.0.4: resolution: {integrity: sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=} @@ -893,6 +1045,11 @@ packages: /array-iterate/1.1.4: resolution: {integrity: sha512-sNRaPGh9nnmdC8Zf+pT3UqP8rnWj5Hf9wiFGsX3wUQ2yVSIhO2ShFwCoceIPpB41QF6i2OEmrHmCo36xronCVA==} + /array-union/2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + /assert/2.0.0: resolution: {integrity: sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==} dependencies: @@ -900,13 +1057,25 @@ packages: is-nan: 1.3.2 object-is: 1.1.5 util: 0.12.4 - dev: true /ast-types/0.14.2: resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} engines: {node: '>=4'} dependencies: tslib: 2.3.1 + + /astro-eslint-parser/0.2.2: + resolution: {integrity: sha512-/b5kFxGN+e/YmRfilRF4YfgDqXC98mFlUxz+Ir2WlB2eL2yGXoSq/AJCGjvj5roJ5IsgQjPxfmvmIAGgCpfFTw==} + engines: {node: ^14.17.0 || >=16.0.0} + dependencies: + '@astrojs/compiler': 0.15.2 + '@typescript-eslint/types': 5.27.0 + debug: 4.3.4 + eslint-visitor-keys: 3.3.0 + espree: 9.3.2 + synckit: 0.7.1 + transitivePeerDependencies: + - supports-color dev: true /astro/1.0.0-beta.17_sass@1.50.0: @@ -978,23 +1147,19 @@ packages: - stylus - supports-color - ts-node - dev: true /available-typed-arrays/1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} - dev: true /bail/2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: false /base64-js/1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: true /bcp-47-match/2.0.2: resolution: {integrity: sha512-zy5swVXwQ25ttElhoN9Dgnqm6VFlMkeDNljvHSGqGNr4zClUosdFzxD+fQHJVmx3g3KY+r//wV/fmBHsa1ErnA==} @@ -1018,7 +1183,6 @@ packages: /binary-extensions/2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - dev: false /bl/5.0.0: resolution: {integrity: sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ==} @@ -1026,7 +1190,6 @@ packages: buffer: 6.0.3 inherits: 2.0.4 readable-stream: 3.6.0 - dev: true /bluebird/3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} @@ -1044,14 +1207,12 @@ packages: type-fest: 2.12.2 widest-line: 4.0.1 wrap-ansi: 8.0.1 - dev: true /brace-expansion/1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - dev: false /braces/3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} @@ -1069,14 +1230,12 @@ packages: escalade: 3.1.1 node-releases: 2.0.2 picocolors: 1.0.0 - dev: true /buffer/6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: true /cache-point/2.0.0: resolution: {integrity: sha512-4gkeHlFpSKgm3vm2gJN5sPqfmijYRFYCQ6tv5cLw0xVmT6r1z1vd4FNnpuOREco3cBs1G709sZ72LdgddKvL5w==} @@ -1092,16 +1251,18 @@ packages: dependencies: function-bind: 1.1.1 get-intrinsic: 1.1.1 + + /callsites/3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} dev: true /camelcase/6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - dev: true /caniuse-lite/1.0.30001325: resolution: {integrity: sha512-sB1bZHjseSjDtijV1Hb7PB2Zd58Kyx+n/9EotvZ4Qcz2K3d0lWB8dB4nb8wN/TsOGFq3UuAm0zQZNQ4SoR7TrQ==} - dev: true /catharsis/0.9.0: resolution: {integrity: sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==} @@ -1120,7 +1281,6 @@ packages: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - dev: true /chalk/4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -1128,27 +1288,22 @@ packages: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: true /chalk/5.0.1: resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: true /character-entities-html4/2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - dev: true /character-entities-legacy/3.0.0: resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - dev: true /character-entities/2.0.1: resolution: {integrity: sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ==} /character-reference-invalid/2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - dev: true /chokidar/3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} @@ -1163,33 +1318,27 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.2 - dev: false /ci-info/3.3.0: resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} - dev: true /cli-boxes/3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} - dev: true /cli-cursor/4.0.0: resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: restore-cursor: 4.0.0 - dev: true /cli-spinners/2.6.1: resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} engines: {node: '>=6'} - dev: true /clone/1.0.4: resolution: {integrity: sha1-2jCcwmPfFZlMaIypAheco8fNfH4=} engines: {node: '>=0.8'} - dev: true /collect-all/1.0.4: resolution: {integrity: sha512-RKZhRwJtJEP5FWul+gkSMEnaK6H3AGPTTWOiRimCcs+rc/OmQE3Yhy1Q7A7KsdkG3ZXVdZq68Y6ONSdvkeEcKA==} @@ -1203,40 +1352,32 @@ packages: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - dev: true /color-convert/2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - dev: true /color-name/1.1.3: - resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} - dev: true + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true /comma-separated-tokens/2.0.2: resolution: {integrity: sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==} - dev: true /common-ancestor-path/1.0.1: resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} - dev: true /concat-map/0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} - dev: false /convert-source-map/1.8.0: resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} dependencies: safe-buffer: 5.1.2 - dev: true /cross-spawn/7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} @@ -1245,11 +1386,9 @@ packages: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - dev: true /csstype/3.0.11: resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==} - dev: true /data-uri-to-buffer/4.0.0: resolution: {integrity: sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==} @@ -1274,17 +1413,23 @@ packages: /dedent-js/1.0.1: resolution: {integrity: sha1-vuX7fJ5yfYXf+iRZDRDsGrElUwU=} + + /deep-is/0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true /deepmerge/4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} engines: {node: '>=0.10.0'} - dev: true /defaults/1.0.3: resolution: {integrity: sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=} dependencies: clone: 1.0.4 + + /define-lazy-prop/2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} dev: true /define-properties/1.1.3: @@ -1292,7 +1437,6 @@ packages: engines: {node: '>= 0.4'} dependencies: object-keys: 1.1.1 - dev: true /dequal/2.0.2: resolution: {integrity: sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==} @@ -1302,24 +1446,35 @@ packages: resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} engines: {node: '>=0.3.1'} + /dir-glob/3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine/3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + /dom-serializer/1.3.2: resolution: {integrity: sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==} dependencies: domelementtype: 2.3.0 domhandler: 4.3.1 entities: 2.2.0 - dev: true /domelementtype/2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: true /domhandler/4.3.1: resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 - dev: true /domutils/2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} @@ -1327,30 +1482,24 @@ packages: dom-serializer: 1.3.2 domelementtype: 2.3.0 domhandler: 4.3.1 - dev: true /eastasianwidth/0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: true /electron-to-chromium/1.4.106: resolution: {integrity: sha512-ZYfpVLULm67K7CaaGP7DmjyeMY4naxsbTy+syVVxT6QHI1Ww8XbJjmr9fDckrhq44WzCrcC5kH3zGpdusxwwqg==} - dev: true /emmet/2.3.6: resolution: {integrity: sha512-pLS4PBPDdxuUAmw7Me7+TcHbykTsBKN/S9XJbUOMFQrNv9MoshzyMFK/R57JBm94/6HSL4vHnDeEmxlC82NQ4A==} dependencies: '@emmetio/abbreviation': 2.2.3 '@emmetio/css-abbreviation': 2.1.4 - dev: true /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true /emoji-regex/9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: true /entities/2.1.0: resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} @@ -1358,16 +1507,13 @@ packages: /entities/2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - dev: true /entities/3.0.1: resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} engines: {node: '>=0.12'} - dev: true /eol/0.9.1: resolution: {integrity: sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==} - dev: true /es-abstract/1.19.2: resolution: {integrity: sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==} @@ -1393,11 +1539,9 @@ packages: string.prototype.trimend: 1.0.4 string.prototype.trimstart: 1.0.4 unbox-primitive: 1.0.1 - dev: true /es-module-lexer/0.10.5: resolution: {integrity: sha512-+7IwY/kiGAacQfY+YBhKMvEmyAJnw5grTUgjG85Pe7vcUI/6b7pZjZG8nQ7+48YhzEAEqrEgD2dCz/JIK+AYvw==} - dev: true /es-to-primitive/1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} @@ -1406,11 +1550,9 @@ packages: is-callable: 1.2.4 is-date-object: 1.0.5 is-symbol: 1.0.4 - dev: true /es6-object-assign/1.1.0: resolution: {integrity: sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=} - dev: true /esbuild-android-64/0.14.38: resolution: {integrity: sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw==} @@ -1418,7 +1560,6 @@ packages: cpu: [x64] os: [android] requiresBuild: true - dev: true optional: true /esbuild-android-arm64/0.14.38: @@ -1427,7 +1568,6 @@ packages: cpu: [arm64] os: [android] requiresBuild: true - dev: true optional: true /esbuild-darwin-64/0.14.38: @@ -1436,7 +1576,6 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: true optional: true /esbuild-darwin-arm64/0.14.38: @@ -1445,7 +1584,6 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: true optional: true /esbuild-freebsd-64/0.14.38: @@ -1454,7 +1592,6 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true - dev: true optional: true /esbuild-freebsd-arm64/0.14.38: @@ -1463,7 +1600,6 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true - dev: true optional: true /esbuild-linux-32/0.14.38: @@ -1472,7 +1608,6 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-linux-64/0.14.38: @@ -1481,7 +1616,6 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-linux-arm/0.14.38: @@ -1490,7 +1624,6 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-linux-arm64/0.14.38: @@ -1499,7 +1632,6 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-linux-mips64le/0.14.38: @@ -1508,7 +1640,6 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-linux-ppc64le/0.14.38: @@ -1517,7 +1648,6 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-linux-riscv64/0.14.38: @@ -1526,7 +1656,6 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-linux-s390x/0.14.38: @@ -1535,7 +1664,6 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-netbsd-64/0.14.38: @@ -1544,7 +1672,6 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true - dev: true optional: true /esbuild-openbsd-64/0.14.38: @@ -1553,7 +1680,6 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true - dev: true optional: true /esbuild-sunos-64/0.14.38: @@ -1562,7 +1688,6 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true - dev: true optional: true /esbuild-windows-32/0.14.38: @@ -1571,7 +1696,6 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: true optional: true /esbuild-windows-64/0.14.38: @@ -1580,7 +1704,6 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: true optional: true /esbuild-windows-arm64/0.14.38: @@ -1589,7 +1712,6 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: true optional: true /esbuild/0.14.38: @@ -1618,46 +1740,176 @@ packages: esbuild-windows-32: 0.14.38 esbuild-windows-64: 0.14.38 esbuild-windows-arm64: 0.14.38 - dev: true /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - dev: true /escape-string-regexp/1.0.5: - resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - dev: true /escape-string-regexp/2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} dev: false + /escape-string-regexp/4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + /escape-string-regexp/5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + /eslint-plugin-astro/0.8.1_wtnyy2apyieggkncrmd6jlo5ja: + resolution: {integrity: sha512-Bex3lMm9L+azm97Ar1eCcPWy97n9E7eESeVwOxcsHVsoSE5NdvqKOug18rTT/9jBHCk6blQteg5Lu9QodliD7Q==} + peerDependencies: + '@typescript-eslint/parser': ^5.25.0 + astro-eslint-parser: ^0.2.0 + dependencies: + '@typescript-eslint/parser': 5.27.0_xztl6dhthcahlo6akmb2bmjmle + '@typescript-eslint/types': 5.27.0 + astro-eslint-parser: 0.2.2 + eslint-utils: 3.0.0_eslint@8.16.0 + transitivePeerDependencies: + - eslint + dev: true + + /eslint-scope/5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope/7.1.1: + resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-utils/3.0.0_eslint@8.16.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.16.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys/2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint-visitor-keys/3.3.0: + resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint/8.16.0: + resolution: {integrity: sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint/eslintrc': 1.3.0 + '@humanwhocodes/config-array': 0.9.5 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-utils: 3.0.0_eslint@8.16.0 + eslint-visitor-keys: 3.3.0 + espree: 9.3.2 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 6.0.2 + globals: 13.15.0 + ignore: 5.2.0 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + regexpp: 3.2.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + v8-compile-cache: 2.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree/9.3.2: + resolution: {integrity: sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.7.1 + acorn-jsx: 5.3.2_acorn@8.7.1 + eslint-visitor-keys: 3.3.0 + dev: true + /esprima/4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true + + /esquery/1.4.0: + resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse/4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse/4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse/5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} dev: true /estree-util-is-identifier-name/2.0.0: resolution: {integrity: sha512-aXXZFVMnBBDRP81vS4YtAYJ0hUkgEsXea7lNKWCOeaAquGb1Jm2rcONPB5fpzwgbNxulTvrWuKnp9UElUGAKeQ==} - dev: true /estree-util-visit/1.1.0: resolution: {integrity: sha512-3lXJ4Us9j8TUif9cWcQy81t9p5OLasnDuuhrFiqb+XstmKC1d1LmrQWYsY49/9URcfHE64mPypDBaNK9NwWDPQ==} dependencies: '@types/estree-jsx': 0.0.1 '@types/unist': 2.0.6 - dev: true /estree-walker/3.0.1: resolution: {integrity: sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==} + + /esutils/2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} dev: true /execa/6.1.0: @@ -1673,18 +1925,20 @@ packages: onetime: 6.0.0 signal-exit: 3.0.7 strip-final-newline: 3.0.0 - dev: true /extend-shallow/2.0.1: resolution: {integrity: sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=} engines: {node: '>=0.10.0'} dependencies: is-extendable: 0.1.1 - dev: true /extend/3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + /fast-deep-equal/3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + /fast-glob/3.2.11: resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} engines: {node: '>=8.6.0'} @@ -1694,6 +1948,13 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 + + /fast-json-stable-stringify/2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein/2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true /fast-xml-parser/4.0.7: @@ -1701,13 +1962,11 @@ packages: hasBin: true dependencies: strnum: 1.0.5 - dev: true /fastq/1.13.0: resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} dependencies: reusify: 1.0.4 - dev: true /fetch-blob/3.1.5: resolution: {integrity: sha512-N64ZpKqoLejlrwkIAnb9iLSA3Vx/kjgzpcDhygcqJ2KKjky8nCgUQ+dzXtbrLaWZGZNmNfQTsiQ0weZ1svglHg==} @@ -1717,6 +1976,13 @@ packages: web-streams-polyfill: 3.2.0 dev: true + /file-entry-cache/6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: true + /file-set/4.0.2: resolution: {integrity: sha512-fuxEgzk4L8waGXaAkd8cMr73Pm0FxOVkn8hztzUW7BAHhOGH90viQNXbiOsnecCWmfInqU6YmAMwxRMdKETceQ==} engines: {node: '>=10'} @@ -1737,7 +2003,6 @@ packages: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - dev: true /find-up/5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} @@ -1745,18 +2010,27 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: true /find-yarn-workspace-root2/1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} dependencies: micromatch: 4.0.5 pkg-dir: 4.2.0 + + /flat-cache/3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.5 + rimraf: 3.0.2 + dev: true + + /flatted/3.2.5: + resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==} dev: true /foreach/2.0.5: resolution: {integrity: sha1-C+4AUBiusmDQo6865ljdATbsG5k=} - dev: true /formdata-polyfill/4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} @@ -1771,8 +2045,7 @@ packages: dev: false /fs.realpath/1.0.0: - resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} - dev: false + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} /fsevents/2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} @@ -1783,12 +2056,14 @@ packages: /function-bind/1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + + /functional-red-black-tree/1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} dev: true /gensync/1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - dev: true /get-intrinsic/1.1.1: resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} @@ -1796,12 +2071,10 @@ packages: function-bind: 1.1.1 has: 1.0.3 has-symbols: 1.0.3 - dev: true /get-stream/6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - dev: true /get-symbol-description/1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} @@ -1809,7 +2082,6 @@ packages: dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.1 - dev: true /github-slugger/1.4.0: resolution: {integrity: sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==} @@ -1820,6 +2092,13 @@ packages: dependencies: is-glob: 4.0.3 + /glob-parent/6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + /glob/7.2.0: resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} dependencies: @@ -1829,16 +2108,40 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: false /globals/11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} + + /globals/13.15.0: + resolution: {integrity: sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalyzer/0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: true + + /globby/11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.11 + ignore: 5.2.0 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globrex/0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} dev: true /graceful-fs/4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - dev: true /gray-matter/4.0.3: resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} @@ -1848,46 +2151,38 @@ packages: kind-of: 6.0.3 section-matter: 1.0.0 strip-bom-string: 1.0.0 - dev: true /has-bigints/1.0.1: resolution: {integrity: sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==} - dev: true /has-flag/3.0.0: - resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - dev: true /has-flag/4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - dev: true /has-package-exports/1.3.0: resolution: {integrity: sha512-e9OeXPQnmPhYoJ63lXC4wWe34TxEGZDZ3OQX9XRqp2VwsfLl3bQBy7VehLnd34g3ef8CmYlBLGqEMKXuz8YazQ==} dependencies: '@ljharb/has-package-exports-patterns': 0.0.2 - dev: true /has-symbols/1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - dev: true /has-tostringtag/1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - dev: true /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - dev: true /hast-to-hyperscript/10.0.1: resolution: {integrity: sha512-dhIVGoKCQVewFi+vz3Vt567E4ejMppS1haBRL6TEmeLeJVB1i/FJIIg/e6s1Bwn0g5qtYojHEKvyGA+OZuyifw==} @@ -1899,7 +2194,6 @@ packages: style-to-object: 0.3.0 unist-util-is: 5.1.1 web-namespaces: 2.0.1 - dev: true /hast-util-from-parse5/7.1.0: resolution: {integrity: sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==} @@ -1912,7 +2206,6 @@ packages: vfile: 5.3.2 vfile-location: 4.0.1 web-namespaces: 2.0.1 - dev: true /hast-util-has-property/2.0.0: resolution: {integrity: sha512-4Qf++8o5v14us4Muv3HRj+Er6wTNGA/N9uCaZMty4JWvyFKLdhULrv4KE1b65AthsSO9TXSZnjuxS8ecIyhb0w==} @@ -1932,7 +2225,6 @@ packages: resolution: {integrity: sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==} dependencies: '@types/hast': 2.3.4 - dev: true /hast-util-raw/7.2.1: resolution: {integrity: sha512-wgtppqXVdXzkDXDFclLLdAyVUJSKMYYi6LWIAbA8oFqEdwksYIcPGM3RkKV1Dfn5GElvxhaOCs0jmCOMayxd3A==} @@ -1948,7 +2240,6 @@ packages: vfile: 5.3.2 web-namespaces: 2.0.1 zwitch: 2.0.2 - dev: true /hast-util-to-html/8.0.3: resolution: {integrity: sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==} @@ -1963,7 +2254,6 @@ packages: space-separated-tokens: 2.0.1 stringify-entities: 4.0.2 unist-util-is: 5.1.1 - dev: true /hast-util-to-parse5/7.0.0: resolution: {integrity: sha512-YHiS6aTaZ3N0Q3nxaY/Tj98D6kM8QX5Q8xqgg8G45zR7PvWnPGPP0vcKCgb/moIydEJ/QWczVrX0JODCVeoV7A==} @@ -1974,7 +2264,6 @@ packages: property-information: 6.1.1 web-namespaces: 2.0.1 zwitch: 2.0.2 - dev: true /hast-util-to-string/2.0.0: resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} @@ -1983,7 +2272,6 @@ packages: /hast-util-whitespace/2.0.0: resolution: {integrity: sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==} - dev: true /hastscript/7.0.2: resolution: {integrity: sha512-uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g==} @@ -1993,19 +2281,15 @@ packages: hast-util-parse-selector: 3.1.0 property-information: 6.1.1 space-separated-tokens: 2.0.1 - dev: true /html-entities/2.3.3: resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} - dev: true /html-escaper/3.0.3: resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} - dev: true /html-void-elements/2.0.1: resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} - dev: true /htmlparser2/7.2.0: resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} @@ -2014,34 +2298,46 @@ packages: domhandler: 4.3.1 domutils: 2.8.0 entities: 3.0.1 - dev: true /human-signals/3.0.1: resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} engines: {node: '>=12.20.0'} - dev: true /ieee754/1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + /ignore/5.2.0: + resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} + engines: {node: '>= 4'} dev: true /immutable/4.0.0: resolution: {integrity: sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==} - dev: false + + /import-fresh/3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /imurmurhash/0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true /inflight/1.0.6: - resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: false /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} /inline-style-parser/0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - dev: true /internal-slot/1.0.3: resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} @@ -2050,18 +2346,15 @@ packages: get-intrinsic: 1.1.1 has: 1.0.3 side-channel: 1.0.4 - dev: true /is-alphabetical/2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - dev: true /is-alphanumerical/2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} dependencies: is-alphabetical: 2.0.1 is-decimal: 2.0.1 - dev: true /is-arguments/1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} @@ -2069,20 +2362,17 @@ packages: dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - dev: true /is-bigint/1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.1 - dev: true /is-binary-path/2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 - dev: false /is-boolean-object/1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} @@ -2090,7 +2380,6 @@ packages: dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - dev: true /is-buffer/2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} @@ -2099,45 +2388,44 @@ packages: /is-callable/1.2.4: resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==} engines: {node: '>= 0.4'} - dev: true /is-core-module/2.8.1: resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} dependencies: has: 1.0.3 - dev: true /is-date-object/1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: true /is-decimal/2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + /is-docker/2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true dev: true /is-extendable/0.1.1: resolution: {integrity: sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=} engines: {node: '>=0.10.0'} - dev: true /is-extglob/2.1.1: - resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} /is-fullwidth-code-point/3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - dev: true /is-generator-function/1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: true /is-glob/4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} @@ -2147,12 +2435,10 @@ packages: /is-hexadecimal/2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - dev: true /is-interactive/2.0.0: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} - dev: true /is-nan/1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} @@ -2160,19 +2446,16 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - dev: true /is-negative-zero/2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} - dev: true /is-number-object/1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: true /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} @@ -2188,32 +2471,27 @@ packages: dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - dev: true /is-shared-array-buffer/1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 - dev: true /is-stream/3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true /is-string/1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: true /is-symbol/1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - dev: true /is-typed-array/1.1.8: resolution: {integrity: sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==} @@ -2224,26 +2502,28 @@ packages: es-abstract: 1.19.2 foreach: 2.0.5 has-tostringtag: 1.0.0 - dev: true /is-unicode-supported/1.2.0: resolution: {integrity: sha512-wH+U77omcRzevfIG8dDhTS0V9zZyweakfD01FULl97+0EHiJTTZtJqxPSkIIo/SDPv/i07k/C9jAPY+jwLLeUQ==} engines: {node: '>=12'} - dev: true /is-weakref/1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 + + /is-wsl/2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 dev: true /isexe/2.0.0: - resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} - dev: true + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true /js-yaml/3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} @@ -2251,6 +2531,12 @@ packages: dependencies: argparse: 1.0.10 esprima: 4.0.1 + + /js-yaml/4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 dev: true /js2xmlparser/4.0.2: @@ -2300,26 +2586,29 @@ packages: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true + + /json-schema-traverse/0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true /json5/2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} engines: {node: '>=6'} hasBin: true - dev: true /jsonc-parser/2.3.1: resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} - dev: true /jsonc-parser/3.0.0: resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==} - dev: true /kind-of/6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - dev: true /klaw/4.0.1: resolution: {integrity: sha512-pgsE40/SvC7st04AHiISNewaIMUbY5V/K8b21ekiPiFoYs/EYSdsGa+FJArB1d441uq4Q8zZyIxvAzkGNlBdRw==} @@ -2329,16 +2618,22 @@ packages: /kleur/3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - dev: true /kleur/4.1.4: resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==} engines: {node: '>=6'} + /levn/0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + /lilconfig/2.0.5: resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==} engines: {node: '>=10'} - dev: true /linkify-it/3.0.3: resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} @@ -2354,20 +2649,21 @@ packages: js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 - dev: true /locate-path/5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} dependencies: p-locate: 4.1.0 - dev: true /locate-path/6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 + + /lodash.merge/4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true /lodash/4.17.21: @@ -2379,7 +2675,6 @@ packages: dependencies: chalk: 5.0.1 is-unicode-supported: 1.2.0 - dev: true /longest-streak/3.0.1: resolution: {integrity: sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==} @@ -2389,26 +2684,22 @@ packages: hasBin: true dependencies: js-tokens: 4.0.0 - dev: true /lower-case/2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.3.1 - dev: true + tslib: 2.4.0 /lru-cache/6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 - dev: true /magic-string/0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: sourcemap-codec: 1.4.8 - dev: true /markdown-it-anchor/8.4.1_2zb4u3vubltivolgu556vv4aom: resolution: {integrity: sha512-sLODeRetZ/61KkKLJElaU3NuU2z7MhXf12Ml1WJMSdwpngeofneCRF+JBbat8HiSqhniOMuTemXMrsI7hA6XyA==} @@ -2446,7 +2737,6 @@ packages: '@types/mdast': 3.0.10 '@types/unist': 2.0.6 unist-util-visit: 3.1.0 - dev: true /mdast-util-find-and-replace/2.1.0: resolution: {integrity: sha512-1w1jbqAd13oU78QPBf5223+xB+37ecNtQ1JElq2feWols5oEYAl+SgNDnOZipe7NfLemoEt362yUS15/wip4mw==} @@ -2532,7 +2822,6 @@ packages: mdast-util-to-markdown: 1.3.0 transitivePeerDependencies: - supports-color - dev: true /mdast-util-mdx-jsx/1.2.0: resolution: {integrity: sha512-5+ot/kfxYd3ChgEMwsMUO71oAfYjyRI3pADEK4I7xTmWLGQ8Y7ghm1CG36zUoUvDPxMlIYwQV/9DYHAUWdG4dA==} @@ -2545,7 +2834,6 @@ packages: unist-util-remove-position: 4.0.1 unist-util-stringify-position: 3.0.2 vfile-message: 3.1.2 - dev: true /mdast-util-to-hast/12.1.1: resolution: {integrity: sha512-qE09zD6ylVP14jV4mjLIhDBOrpFdShHZcEsYvvKGABlr9mGbV7mTlRWdoFxL/EYSTNDiC9GZXy7y8Shgb9Dtzw==} @@ -2560,7 +2848,6 @@ packages: unist-util-generated: 2.0.0 unist-util-position: 4.0.3 unist-util-visit: 4.1.0 - dev: true /mdast-util-to-markdown/1.3.0: resolution: {integrity: sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==} @@ -2581,12 +2868,10 @@ packages: /merge-stream/2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true /merge2/1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - dev: true /micromark-core-commonmark/1.0.6: resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} @@ -2686,7 +2971,6 @@ packages: micromark-util-types: 1.0.2 uvu: 0.5.3 vfile-message: 3.1.2 - dev: true /micromark-factory-destination/1.0.0: resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==} @@ -2714,7 +2998,6 @@ packages: unist-util-position-from-estree: 1.1.1 uvu: 0.5.3 vfile-message: 3.1.2 - dev: true /micromark-factory-space/1.0.0: resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} @@ -2788,7 +3071,6 @@ packages: micromark-util-types: 1.0.2 uvu: 0.5.3 vfile-message: 3.1.2 - dev: true /micromark-util-html-tag-name/1.0.0: resolution: {integrity: sha512-NenEKIshW2ZI/ERv9HtFNsrn3llSPZtY337LID/24WeLqMzeZhBEE6BQ0vS2ZBjshm5n40chKtJ3qjAbVV8S0g==} @@ -2853,33 +3135,27 @@ packages: dependencies: braces: 3.0.2 picomatch: 2.3.1 - dev: true /micromorph/0.1.2: resolution: {integrity: sha512-pDEgWjUoCMBwME8z8UiCOO6FKH0It1LASFh8hFSk8uSyfyw6rqY4PBk2LiIEPaVHwtLDhozp4Pr0I+yAUfCpiA==} - dev: true /mime/3.0.0: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} hasBin: true - dev: true /mimic-fn/2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - dev: true /mimic-fn/4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} - dev: true /minimatch/3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - dev: false /mkdirp/1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} @@ -2898,7 +3174,6 @@ packages: /mrmime/1.0.0: resolution: {integrity: sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==} engines: {node: '>=10'} - dev: true /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -2907,6 +3182,9 @@ packages: resolution: {integrity: sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + + /natural-compare/1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true /nlcst-to-string/2.0.4: @@ -2921,8 +3199,7 @@ packages: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.3.1 - dev: true + tslib: 2.4.0 /node-domexception/1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} @@ -2940,28 +3217,23 @@ packages: /node-releases/2.0.2: resolution: {integrity: sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==} - dev: true /normalize-path/3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - dev: false /npm-run-path/5.1.0: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 - dev: true /object-assign/4.1.1: resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} engines: {node: '>=0.10.0'} - dev: true /object-inspect/1.12.0: resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} - dev: true /object-is/1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} @@ -2969,12 +3241,10 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - dev: true /object-keys/1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - dev: true /object-to-spawn-args/2.0.1: resolution: {integrity: sha512-6FuKFQ39cOID+BMZ3QaphcC8Y4cw6LXBLyIgPU+OhIYwviJamPAn+4mITapnSBQrejB+NNp+FMskhD8Cq+Ys3w==} @@ -2989,26 +3259,43 @@ packages: define-properties: 1.1.3 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: true /once/1.4.0: resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} dependencies: wrappy: 1.0.2 - dev: false /onetime/5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 - dev: true /onetime/6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 + + /open/8.4.0: + resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: true + + /optionator/0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} + dependencies: + 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.3 dev: true /ora/6.1.0: @@ -3024,39 +3311,40 @@ packages: log-symbols: 5.1.0 strip-ansi: 7.0.1 wcwidth: 1.0.1 - dev: true /p-limit/2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} dependencies: p-try: 2.2.0 - dev: true /p-limit/3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - dev: true /p-locate/4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} dependencies: p-limit: 2.3.0 - dev: true /p-locate/5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - dev: true /p-try/2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + + /parent-module/1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 dev: true /parse-entities/4.0.0: @@ -3070,7 +3358,6 @@ packages: is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 - dev: true /parse-latin/5.0.0: resolution: {integrity: sha512-Ht+4/+AUySMS5HKGAiQpBmkFsHSoGrj6Y83flLCa5OIBdtsVkO3UD4OtboJ0O0vZiOznH02x8qlwg9KLUVXuNg==} @@ -3081,50 +3368,45 @@ packages: /parse5/6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - dev: true /pascal-case/3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 - tslib: 2.3.1 - dev: true + tslib: 2.4.0 /path-browserify/1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - dev: true /path-exists/4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - dev: true /path-is-absolute/1.0.1: resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} engines: {node: '>=0.10.0'} - dev: false /path-key/3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - dev: true /path-key/4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} - dev: true /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true /path-to-regexp/6.2.0: resolution: {integrity: sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg==} + + /path-type/4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} dev: true /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true /picomatch/2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -3133,14 +3415,12 @@ packages: /pify/4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} - dev: true /pkg-dir/4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} dependencies: find-up: 4.1.0 - dev: true /postcss-load-config/3.1.4_postcss@8.4.12: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} @@ -3157,7 +3437,6 @@ packages: lilconfig: 2.0.5 postcss: 8.4.12 yaml: 1.10.2 - dev: true /postcss/8.4.12: resolution: {integrity: sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==} @@ -3166,7 +3445,6 @@ packages: nanoid: 3.3.2 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: true /preact-render-to-string/5.1.20_preact@10.7.1: resolution: {integrity: sha512-ivh2oOGzth0o7XqbatWUQ81WQGoJwSqDKP5z917SoqTWYCAr7dlBzMv3SAMTAu3Gr5g47BJwrvyO44H2Y10ubg==} @@ -3189,6 +3467,10 @@ packages: find-yarn-workspace-root2: 1.2.16 path-exists: 4.0.0 which-pm: 2.0.0 + + /prelude-ls/1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} dev: true /prettier/2.6.2: @@ -3204,7 +3486,6 @@ packages: /prismjs/1.28.0: resolution: {integrity: sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==} engines: {node: '>=6'} - dev: true /prompts/2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} @@ -3212,21 +3493,22 @@ packages: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - dev: true /property-information/6.1.1: resolution: {integrity: sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==} + + /punycode/2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + engines: {node: '>=6'} dev: true /queue-microtask/1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true /randombytes/2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 - dev: true /react-dom/17.0.2_react@17.0.2: resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} @@ -3237,7 +3519,6 @@ packages: object-assign: 4.1.1 react: 17.0.2 scheduler: 0.20.2 - dev: true /react/17.0.2: resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} @@ -3245,7 +3526,6 @@ packages: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 - dev: true /readable-stream/3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} @@ -3254,14 +3534,12 @@ packages: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - dev: true /readdirp/3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - dev: false /recast/0.20.5: resolution: {integrity: sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==} @@ -3271,6 +3549,10 @@ packages: esprima: 4.0.1 source-map: 0.6.1 tslib: 2.3.1 + + /regexpp/3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} dev: true /rehype-autolink-headings/6.1.1: @@ -3291,7 +3573,6 @@ packages: '@types/hast': 2.3.4 hast-util-raw: 7.2.1 unified: 10.1.2 - dev: true /rehype-slug/5.0.1: resolution: {integrity: sha512-X5v3wV/meuOX9NFcGhJvUpEjIvQl2gDvjg3z40RVprYFt7q3th4qMmYLULiu3gXvbNX1ppx+oaa6JyY1W67pTA==} @@ -3310,7 +3591,6 @@ packages: '@types/hast': 2.3.4 hast-util-to-html: 8.0.3 unified: 10.1.2 - dev: true /remark-gfm/3.0.1: resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} @@ -3330,7 +3610,6 @@ packages: unified: 10.1.2 transitivePeerDependencies: - supports-color - dev: true /remark-rehype/10.1.0: resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} @@ -3339,7 +3618,6 @@ packages: '@types/mdast': 3.0.10 mdast-util-to-hast: 12.1.1 unified: 10.1.2 - dev: true /remark-smartypants/2.0.0: resolution: {integrity: sha512-Rc0VDmr/yhnMQIz8n2ACYXlfw/P/XZev884QU1I5u+5DgJls32o97Vc1RbK3pfumLsJomS2yy8eT4Fxj/2MDVA==} @@ -3355,6 +3633,11 @@ packages: lodash: 4.17.21 dev: false + /resolve-from/4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + /resolve/1.22.0: resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} hasBin: true @@ -3362,7 +3645,6 @@ packages: is-core-module: 2.8.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true /restore-cursor/4.0.0: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} @@ -3370,7 +3652,6 @@ packages: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - dev: true /retext-latin/3.1.0: resolution: {integrity: sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==} @@ -3406,6 +3687,12 @@ packages: /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + /rimraf/3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.0 dev: true /rollup/2.70.2: @@ -3414,13 +3701,11 @@ packages: hasBin: true optionalDependencies: fsevents: 2.3.2 - dev: true /run-parallel/1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - dev: true /sade/1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} @@ -3430,11 +3715,9 @@ packages: /safe-buffer/5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true /safe-buffer/5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true /sass/1.50.0: resolution: {integrity: sha512-cLsD6MEZ5URXHStxApajEh7gW189kkjn4Rc8DQweMyF+o5HF5nfEz8QYLMlPsTOD88DknatTmBWkOcw5/LnJLQ==} @@ -3444,7 +3727,6 @@ packages: chokidar: 3.5.3 immutable: 4.0.0 source-map-js: 1.0.2 - dev: false /sax/1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} @@ -3455,7 +3737,6 @@ packages: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 - dev: true /section-matter/1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} @@ -3463,12 +3744,10 @@ packages: dependencies: extend-shallow: 2.0.1 kind-of: 6.0.3 - dev: true /semver/6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true - dev: true /semver/7.3.7: resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} @@ -3476,25 +3755,21 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 - dev: true /serialize-javascript/6.0.0: resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} dependencies: randombytes: 2.1.0 - dev: true /shebang-command/2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - dev: true /shebang-regex/3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - dev: true /shiki/0.10.1: resolution: {integrity: sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==} @@ -3502,11 +3777,9 @@ packages: jsonc-parser: 3.0.0 vscode-oniguruma: 1.6.2 vscode-textmate: 5.2.0 - dev: true /shorthash/0.0.2: resolution: {integrity: sha1-WbJo7sveWQOLMNogK8+93rLEpOs=} - dev: true /side-channel/1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} @@ -3514,11 +3787,9 @@ packages: call-bind: 1.0.2 get-intrinsic: 1.1.1 object-inspect: 1.12.0 - dev: true /signal-exit/3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true /simple-git/3.7.1: resolution: {integrity: sha512-+Osjtsumbtew2y9to0pOYjNzSIr4NkKGBg7Po5SUtjQhaJf2QBmiTX/9E9cv9rmc7oUiSGFIB9e7ys5ibnT9+A==} @@ -3537,11 +3808,9 @@ packages: '@polka/url': 1.0.0-next.21 mrmime: 1.0.0 totalist: 3.0.0 - dev: true /sisteransi/1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: true /sitemap/7.1.1: resolution: {integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==} @@ -3554,10 +3823,14 @@ packages: sax: 1.2.4 dev: true + /slash/3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + /slash/4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} - dev: true /source-map-js/1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} @@ -3566,29 +3839,23 @@ packages: /source-map/0.5.7: resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} engines: {node: '>=0.10.0'} - dev: true /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: true /source-map/0.7.3: resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} engines: {node: '>= 8'} - dev: true /sourcemap-codec/1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - dev: true /space-separated-tokens/2.0.1: resolution: {integrity: sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==} - dev: true /sprintf-js/1.0.3: resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} - dev: true /stream-connect/1.0.2: resolution: {integrity: sha1-GLyB8u2zW4tdmoAJIAqYUxRCipc=} @@ -3609,7 +3876,6 @@ packages: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - dev: true /string-width/5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} @@ -3618,113 +3884,94 @@ packages: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.0.1 - dev: true /string.prototype.trimend/1.0.4: resolution: {integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==} dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - dev: true /string.prototype.trimstart/1.0.4: resolution: {integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==} dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - dev: true /string_decoder/1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 - dev: true /stringify-entities/4.0.2: resolution: {integrity: sha512-MTxTVcEkorNtBbNpoFJPEh0kKdM6+QbMjLbaxmvaPMmayOXdr/AIVIIJX7FReUVweRBFJfZepK4A4AKgwuFpMQ==} dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 - dev: true /strip-ansi/6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - dev: true /strip-ansi/7.0.1: resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 - dev: true /strip-bom-string/1.0.0: resolution: {integrity: sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=} engines: {node: '>=0.10.0'} - dev: true /strip-bom/3.0.0: resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} engines: {node: '>=4'} - dev: true /strip-bom/4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} - dev: true /strip-final-newline/3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} - dev: true /strip-json-comments/3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - dev: false /strnum/1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - dev: true /style-to-object/0.3.0: resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} dependencies: inline-style-parser: 0.1.1 - dev: true /supports-color/5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - dev: true /supports-color/7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - dev: true /supports-esm/1.0.0: resolution: {integrity: sha512-96Am8CDqUaC0I2+C/swJ0yEvM8ZnGn4unoers/LSdE4umhX7mELzqyLzx3HnZAluq5PXIsGMKqa7NkqaeHMPcg==} dependencies: has-package-exports: 1.3.0 - dev: true /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - dev: true /svelte/3.46.6: resolution: {integrity: sha512-o9nNft/OzCz/9kJpmWa1S52GAM+huCjPIsNWydYmgei74ZWlOA9/hN9+Z12INdklghu31seEXZMRHhS1+8DETw==} engines: {node: '>= 8'} - dev: true /svelte2tsx/0.5.7_liohzkyisnst3glff4denqdl5m: resolution: {integrity: sha512-rekPWR5at7DNvIlJRSCyKFZ6Go/KyqjDRL/zRWQSNMbvTIocsm/gDtSbLz64ZP5Qz3tUeod7QzDqX13lF60kCg==} @@ -3736,6 +3983,13 @@ packages: pascal-case: 3.1.2 svelte: 3.46.6 typescript: 4.6.3 + + /synckit/0.7.1: + resolution: {integrity: sha512-Cvv0Nzgs4Z0V6761qp4CU2+C15HRmnHaDd+sAtisbOnzIZ5wgl3ne076k28cHo+oY6eN/w0RNzRrf7CJz8dWJg==} + engines: {node: '>=12.20'} + dependencies: + '@pkgr/utils': 2.2.0 + tslib: 2.4.0 dev: true /taffydb/2.6.2: @@ -3746,6 +4000,17 @@ packages: resolution: {integrity: sha1-JLFUOXOrRCiW2a02fdnL2/r+kYs=} dev: false + /text-table/0.2.0: + resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} + dev: true + + /tiny-glob/0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + dev: true + /to-fast-properties/2.0.0: resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} engines: {node: '>=4'} @@ -3759,7 +4024,6 @@ packages: /totalist/3.0.0: resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} engines: {node: '>=6'} - dev: true /trough/2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} @@ -3773,11 +4037,16 @@ packages: resolve: 1.22.0 strip-bom: 4.0.0 type-fest: 0.13.1 + + /tslib/1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true /tslib/2.3.1: resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} - dev: true + + /tslib/2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} /tsm/2.2.1: resolution: {integrity: sha512-qvJB0baPnxQJolZru11mRgGTdNlx17WqgJnle7eht3Vhb+VUR4/zFA5hFl6NqRe7m8BD9w/6yu0B2XciRrdoJA==} @@ -3785,6 +4054,15 @@ packages: hasBin: true dependencies: esbuild: 0.14.38 + + /tsutils/3.21.0_typescript@4.7.2: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 4.7.2 dev: true /tunnel/0.0.6: @@ -3792,20 +4070,35 @@ packages: engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} dev: true + /type-check/0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + /type-fest/0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} + + /type-fest/0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} dev: true /type-fest/2.12.2: resolution: {integrity: sha512-qt6ylCGpLjZ7AaODxbpyBZSs9fCI9SkL3Z9q2oxMBQhs/uyY+VD8jHA8ULCGmWQJlBgqvO3EJeAngOHD8zQCrQ==} engines: {node: '>=12.20'} - dev: true /typescript/4.6.3: resolution: {integrity: sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==} engines: {node: '>=4.2.0'} hasBin: true + + /typescript/4.7.2: + resolution: {integrity: sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==} + engines: {node: '>=4.2.0'} + hasBin: true dev: true /typical/2.6.1: @@ -3823,7 +4116,6 @@ packages: has-bigints: 1.0.1 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - dev: true /underscore/1.13.2: resolution: {integrity: sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==} @@ -3859,11 +4151,9 @@ packages: resolution: {integrity: sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==} dependencies: '@types/unist': 2.0.6 - dev: true /unist-util-generated/2.0.0: resolution: {integrity: sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==} - dev: true /unist-util-is/5.1.1: resolution: {integrity: sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==} @@ -3872,7 +4162,6 @@ packages: resolution: {integrity: sha512-TOLoGOyT6pYI3JjTBZ1z76Rp7g+xcfgzuQDESuOUTZIkqpOIXsqZTvI25fKCYjMAmADbeulxusIgoB5IBPGZuQ==} dependencies: '@types/unist': 2.0.6 - dev: true /unist-util-modify-children/2.0.0: resolution: {integrity: sha512-HGrj7JQo9DwZt8XFsX8UD4gGqOsIlCih9opG6Y+N11XqkBGKzHo8cvDi+MfQQgiZ7zXRUiQREYHhjOBHERTMdg==} @@ -3883,20 +4172,17 @@ packages: resolution: {integrity: sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw==} dependencies: '@types/unist': 2.0.6 - dev: true /unist-util-position/4.0.3: resolution: {integrity: sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==} dependencies: '@types/unist': 2.0.6 - dev: true /unist-util-remove-position/4.0.1: resolution: {integrity: sha512-0yDkppiIhDlPrfHELgB+NLQD5mfjup3a8UYclHruTJWmY74je8g+CIFr79x5f6AkmzSwlvKLbs63hC0meOMowQ==} dependencies: '@types/unist': 2.0.6 unist-util-visit: 4.1.0 - dev: true /unist-util-stringify-position/3.0.2: resolution: {integrity: sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==} @@ -3924,7 +4210,6 @@ packages: '@types/unist': 2.0.6 unist-util-is: 5.1.1 unist-util-visit-parents: 4.1.1 - dev: true /unist-util-visit/4.1.0: resolution: {integrity: sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==} @@ -3933,9 +4218,14 @@ packages: unist-util-is: 5.1.1 unist-util-visit-parents: 5.1.0 + /uri-js/4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.1.1 + dev: true + /util-deprecate/1.0.2: resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} - dev: true /util/0.12.4: resolution: {integrity: sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==} @@ -3946,7 +4236,6 @@ packages: is-typed-array: 1.1.8 safe-buffer: 5.2.1 which-typed-array: 1.1.7 - dev: true /uvu/0.5.3: resolution: {integrity: sha512-brFwqA3FXzilmtnIyJ+CxdkInkY/i4ErvP7uV0DnUVxQcQ55reuHphorpF+tZoVHK2MniZ/VJzI7zJQoc9T9Yw==} @@ -3958,12 +4247,15 @@ packages: kleur: 4.1.4 sade: 1.8.1 + /v8-compile-cache/2.3.0: + resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} + dev: true + /vfile-location/4.0.1: resolution: {integrity: sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==} dependencies: '@types/unist': 2.0.6 vfile: 5.3.2 - dev: true /vfile-message/3.1.2: resolution: {integrity: sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==} @@ -4002,7 +4294,6 @@ packages: sass: 1.50.0 optionalDependencies: fsevents: 2.3.2 - dev: true /vscode-css-languageservice/5.4.1: resolution: {integrity: sha512-W7D3GKFXf97ReAaU4EZ2nxVO1kQhztbycJgc1b/Ipr0h8zYWr88BADmrXu02z+lsCS84D7Sr4hoUzDKeaFn2Kg==} @@ -4011,7 +4302,6 @@ packages: vscode-languageserver-types: 3.16.0 vscode-nls: 5.0.0 vscode-uri: 3.0.3 - dev: true /vscode-html-languageservice/4.2.4: resolution: {integrity: sha512-1HqvXKOq9WlZyW4HTD+0XzrjZoZ/YFrgQY2PZqktbRloHXVAUKm6+cAcvZi4YqKPVn05/CK7do+KBHfuSaEdbg==} @@ -4020,54 +4310,43 @@ packages: vscode-languageserver-types: 3.16.0 vscode-nls: 5.0.0 vscode-uri: 3.0.3 - dev: true /vscode-jsonrpc/6.0.0: resolution: {integrity: sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==} engines: {node: '>=8.0.0 || >=10.0.0'} - dev: true /vscode-languageserver-protocol/3.16.0: resolution: {integrity: sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==} dependencies: vscode-jsonrpc: 6.0.0 vscode-languageserver-types: 3.16.0 - dev: true /vscode-languageserver-textdocument/1.0.4: resolution: {integrity: sha512-/xhqXP/2A2RSs+J8JNXpiiNVvvNM0oTosNVmQnunlKvq9o4mupHOBAnnzH0lwIPKazXKvAKsVp1kr+H/K4lgoQ==} - dev: true /vscode-languageserver-types/3.16.0: resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==} - dev: true /vscode-languageserver/7.0.0: resolution: {integrity: sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==} hasBin: true dependencies: vscode-languageserver-protocol: 3.16.0 - dev: true /vscode-nls/5.0.0: resolution: {integrity: sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==} - dev: true /vscode-oniguruma/1.6.2: resolution: {integrity: sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==} - dev: true /vscode-textmate/5.2.0: resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} - dev: true /vscode-uri/2.1.2: resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} - dev: true /vscode-uri/3.0.3: resolution: {integrity: sha512-EcswR2S8bpR7fD0YPeS7r2xXExrScVMxg4MedACaWHEtx9ftCF/qHG1xGkolzTPcEmjTavCQgbVzHUIdTMzFGA==} - dev: true /walk-back/5.1.0: resolution: {integrity: sha512-Uhxps5yZcVNbLEAnb+xaEEMdgTXl9qAQDzKYejG2AZ7qPwRQ81lozY9ECDbjLPNWm7YsO1IK5rsP1KoQzXAcGA==} @@ -4078,11 +4357,9 @@ packages: resolution: {integrity: sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=} dependencies: defaults: 1.0.3 - dev: true /web-namespaces/2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - dev: true /web-streams-polyfill/3.2.0: resolution: {integrity: sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA==} @@ -4097,7 +4374,6 @@ packages: is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 - dev: true /which-pm/2.0.0: resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} @@ -4105,7 +4381,6 @@ packages: dependencies: load-yaml-file: 0.2.0 path-exists: 4.0.0 - dev: true /which-typed-array/1.1.7: resolution: {integrity: sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==} @@ -4117,7 +4392,6 @@ packages: foreach: 2.0.5 has-tostringtag: 1.0.0 is-typed-array: 1.1.8 - dev: true /which/2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -4125,13 +4399,16 @@ packages: hasBin: true dependencies: isexe: 2.0.0 - dev: true /widest-line/4.0.1: resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} engines: {node: '>=12'} dependencies: string-width: 5.1.2 + + /word-wrap/1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} dev: true /wrap-ansi/8.0.1: @@ -4141,11 +4418,9 @@ packages: ansi-styles: 6.1.0 string-width: 5.1.2 strip-ansi: 7.0.1 - dev: true /wrappy/1.0.2: resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} - dev: false /xmlcreate/2.0.4: resolution: {integrity: sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==} @@ -4153,26 +4428,21 @@ packages: /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true /yaml/1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - dev: true /yargs-parser/21.0.1: resolution: {integrity: sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==} engines: {node: '>=12'} - dev: true /yocto-queue/0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - dev: true /zod/3.14.4: resolution: {integrity: sha512-U9BFLb2GO34Sfo9IUYp0w3wJLlmcyGoMd75qU9yf+DrdGA4kEx6e+l9KOkAlyUO0PSQzZCa3TR4qVlcmwqSDuw==} - dev: true /zwitch/2.0.2: resolution: {integrity: sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==} diff --git a/scripts/lib/linkcheck/base/base.ts b/scripts/lib/linkcheck/base/base.ts index 3421160a07dcf..794a871fb8c3d 100644 --- a/scripts/lib/linkcheck/base/base.ts +++ b/scripts/lib/linkcheck/base/base.ts @@ -24,8 +24,8 @@ export function indexOfHref (input: string, href: string, startIndex?: number) { let i = input.indexOf(href, startIndex); while (i !== -1) { // Get the characters surrounding the current match (if any) - let charBefore = input[i - 1] || ''; - let charAfter = input[i + href.length] || ''; + const charBefore = input[i - 1] || ''; + const charAfter = input[i + href.length] || ''; // If both characters are not a part of URLs in Markdown, // we have a proper (non-partial) match, so return the index if ((charBefore + charAfter).match(/^[\s"'()[\],.]*$/)) diff --git a/scripts/lib/linkcheck/checks/target-exists.ts b/scripts/lib/linkcheck/checks/target-exists.ts index 7af961d6e089f..c5b9e12d27f06 100644 --- a/scripts/lib/linkcheck/checks/target-exists.ts +++ b/scripts/lib/linkcheck/checks/target-exists.ts @@ -33,7 +33,7 @@ export class TargetExists extends CheckBase { return; // Report links to missing page fragments (unknown URL hashes) - let decodedHash = url.hash && decodeURIComponent(url.hash); + const decodedHash = url.hash && decodeURIComponent(url.hash); if (decodedHash && !linkedPage.hashes.includes(decodedHash)) { context.report({ type: TargetExists.BrokenFragmentLink, diff --git a/scripts/lib/linkcheck/steps/find-issues.ts b/scripts/lib/linkcheck/steps/find-issues.ts index 3f7c14b7c0989..d111861e6b998 100644 --- a/scripts/lib/linkcheck/steps/find-issues.ts +++ b/scripts/lib/linkcheck/steps/find-issues.ts @@ -14,7 +14,7 @@ export function findLinkIssues ( options: LinkCheckerOptions, state: LinkCheckerState, ) { - var linkIssues: LinkIssue[] = []; + const linkIssues: LinkIssue[] = []; Object.values(allPages).forEach(page => { linkIssues.push(...findLinkIssuesOnPage(page, allPages, options, state)); @@ -30,7 +30,7 @@ function findLinkIssuesOnPage ( state: LinkCheckerState, checkSingleLinkHref?: string, ) { - var linkIssues: LinkIssue[] = []; + const linkIssues: LinkIssue[] = []; options.checks.forEach(check => { check.checkHtmlPage({ diff --git a/scripts/lib/linkcheck/steps/output-issues.ts b/scripts/lib/linkcheck/steps/output-issues.ts index 4e64cba970987..0e3c98fcb247b 100644 --- a/scripts/lib/linkcheck/steps/output-issues.ts +++ b/scripts/lib/linkcheck/steps/output-issues.ts @@ -66,7 +66,7 @@ export function outputIssues (linkIssues: LinkIssue[], state: LinkCheckerState) console.log(); if (issuesNotFoundInSource > 0) { - let warningText = dedentMd`*** Warning: + const warningText = dedentMd`*** Warning: ${formatCount(issuesNotFoundInSource, 'issue was|issues were')} found in the build output, but not the Markdown source. diff --git a/src/components/Card.astro b/src/components/Card.astro index 1c45c83ff4777..bc83f44afd750 100644 --- a/src/components/Card.astro +++ b/src/components/Card.astro @@ -1,5 +1,5 @@ --- -const { data, index } = Astro.props; +const { data } = Astro.props; const hasScreenshot = !!data.demo; const backgroundStyle = hasScreenshot ? `url('https://v1.screenshot.11ty.dev/${encodeURIComponent(data.demo)}/medium/9:16/')` @@ -32,7 +32,7 @@ const backgroundStyle = hasScreenshot border-radius: 2px; border: 1px solid var(--theme-glow-highlight); box-shadow: - 0 0 var(--theme-glow-blur) var(--theme-glow-diffuse), + 0 0 var(--theme-glow-blur) var(--theme-glow-diffuse), inset 0 0 var(--theme-glow-blur) var(--theme-glow-diffuse); } .card-header { diff --git a/src/components/HeadCommon.astro b/src/components/HeadCommon.astro index eb54a6eb91cc7..5f5eb7574d10e 100644 --- a/src/components/HeadCommon.astro +++ b/src/components/HeadCommon.astro @@ -49,6 +49,7 @@