diff --git a/.prettierignore b/.prettierignore index 96f77122a..111140a9c 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,6 +1,7 @@ **/dist **/node_modules **/fixtures +**/vendor **/.vercel .github .changeset diff --git a/examples/blog/src/pages/posts/index.md b/examples/blog/src/pages/posts/index.md index 40d329e3a..949dfb866 100644 --- a/examples/blog/src/pages/posts/index.md +++ b/examples/blog/src/pages/posts/index.md @@ -13,4 +13,4 @@ description: Just a Hello World Post! This is so cool! -Do variables work {frontmatter.value \* 2}? +Do variables work {frontmatter.value * 2}? diff --git a/examples/docs/src/languages.ts b/examples/docs/src/languages.ts index 069413fd2..5cdea0456 100644 --- a/examples/docs/src/languages.ts +++ b/examples/docs/src/languages.ts @@ -1,6 +1,6 @@ import { KNOWN_LANGUAGES } from './config'; -export { KNOWN_LANGUAGES }; +export { KNOWN_LANGUAGES } export const KNOWN_LANGUAGE_CODES = Object.values(KNOWN_LANGUAGES); export const langPathRegex = /\/([a-z]{2}-?[A-Z]{0,2})\//; diff --git a/examples/with-markdown-plugins/astro.config.mjs b/examples/with-markdown-plugins/astro.config.mjs index 8e70603a3..a7a644944 100644 --- a/examples/with-markdown-plugins/astro.config.mjs +++ b/examples/with-markdown-plugins/astro.config.mjs @@ -11,16 +11,13 @@ import astroRemark from '@astrojs/markdown-remark'; export default /** @type {import('astro').AstroUserConfig} */ ({ // Enable Custom Markdown options, plugins, etc. markdownOptions: { - render: [ - astroRemark, - { - remarkPlugins: ['remark-code-titles', 'remark-slug'], - rehypePlugins: [ - ['rehype-autolink-headings', { behavior: 'prepend' }], - ['rehype-toc', { headings: ['h2', 'h3'] }], - ['rehype-add-classes', { 'h1,h2,h3': 'title' }], - ], - }, - ], + render: [astroRemark, { + remarkPlugins: ['remark-code-titles', 'remark-slug'], + rehypePlugins: [ + ['rehype-autolink-headings', { behavior: 'prepend' }], + ['rehype-toc', { headings: ['h2', 'h3'] }], + ['rehype-add-classes', { 'h1,h2,h3': 'title' }], + ] + }] }, }); diff --git a/packages/astro-prism/index.d.ts b/packages/astro-prism/index.d.ts index 058e91da7..eb260d9b9 100644 --- a/packages/astro-prism/index.d.ts +++ b/packages/astro-prism/index.d.ts @@ -1 +1 @@ -export function addAstro(Prism: any): void; +export function addAstro(Prism: any): void; \ No newline at end of file diff --git a/packages/astro/src/core/util.ts b/packages/astro/src/core/util.ts index 4fb32634c..1abc6d1c6 100644 --- a/packages/astro/src/core/util.ts +++ b/packages/astro/src/core/util.ts @@ -66,7 +66,7 @@ export function codeFrame(src: string, loc: ErrorPayload['err']['loc']): string export function resolveDependency(dep: string, astroConfig: AstroConfig) { const resolved = resolve.sync(dep, { - basedir: fileURLToPath(astroConfig.projectRoot), + basedir: fileURLToPath(astroConfig.projectRoot) }); // For Windows compat, we need a fully resolved `file://` URL string return pathToFileURL(resolved).toString(); diff --git a/packages/astro/src/core/vite.ts b/packages/astro/src/core/vite.ts index 7ceb4d8a0..24b350b89 100644 --- a/packages/astro/src/core/vite.ts +++ b/packages/astro/src/core/vite.ts @@ -1,2 +1,2 @@ export * from '../../vendor/vite/dist/node/index.js'; -export { default } from '../../vendor/vite/dist/node/index.js'; +export { default } from '../../vendor/vite/dist/node/index.js'; \ No newline at end of file diff --git a/packages/astro/src/runtime/server/index.ts b/packages/astro/src/runtime/server/index.ts index 6e56a336e..7a41ef7ab 100644 --- a/packages/astro/src/runtime/server/index.ts +++ b/packages/astro/src/runtime/server/index.ts @@ -365,17 +365,13 @@ export async function renderToString(result: SSRResult, componentFactory: AstroC const uniqueElements = (item: any, index: number, all: any[]) => { const props = JSON.stringify(item.props); const children = item.children; - return index === all.findIndex((i) => JSON.stringify(i.props) === props && i.children == children); -}; + return index === all.findIndex(i => JSON.stringify(i.props) === props && i.children == children) +} export async function renderPage(result: SSRResult, Component: AstroComponentFactory, props: any, children: any) { const template = await renderToString(result, Component, props, children); - const styles = Array.from(result.styles) - .filter(uniqueElements) - .map((style) => renderElement('style', style)); - const scripts = Array.from(result.scripts) - .filter(uniqueElements) - .map((script) => renderElement('script', script)); + const styles = Array.from(result.styles).filter(uniqueElements).map((style) => renderElement('style', style)); + const scripts = Array.from(result.scripts).filter(uniqueElements).map((script) => renderElement('script', script)); return template.replace('', styles.join('\n') + scripts.join('\n') + ''); } diff --git a/packages/astro/src/runtime/server/metadata.ts b/packages/astro/src/runtime/server/metadata.ts index 2b318ad80..904afd8b5 100644 --- a/packages/astro/src/runtime/server/metadata.ts +++ b/packages/astro/src/runtime/server/metadata.ts @@ -60,7 +60,7 @@ class Metadata { } interface CreateMetadataOptions { - modules: ModuleInfo[]; + modules: ModuleInfo[]; hydratedComponents: any[]; hoisted: any[]; } diff --git a/packages/astro/src/vite-plugin-astro-postprocess/index.ts b/packages/astro/src/vite-plugin-astro-postprocess/index.ts index 2d4e2776c..c4f4f1ab5 100644 --- a/packages/astro/src/vite-plugin-astro-postprocess/index.ts +++ b/packages/astro/src/vite-plugin-astro-postprocess/index.ts @@ -11,7 +11,7 @@ interface AstroPluginOptions { devServer?: AstroDevServer; } -// esbuild transforms the component-scoped Astro into Astro2, so need to check both. +// esbuild transforms the component-scoped Astro into Astro2, so need to check both. const validAstroGlobalNames = new Set(['Astro', 'Astro2']); export default function astro({ config, devServer }: AstroPluginOptions): Plugin { diff --git a/packages/astro/test/astro-basic.test.js b/packages/astro/test/astro-basic.test.js index e1991634b..8be22d617 100644 --- a/packages/astro/test/astro-basic.test.js +++ b/packages/astro/test/astro-basic.test.js @@ -94,4 +94,4 @@ describe('Astro basics', () => { expect(result.status).to.equal(404); }); }); -}); +}); \ No newline at end of file diff --git a/packages/astro/test/astro-dynamic.test.js b/packages/astro/test/astro-dynamic.test.js index 82fdc3818..78f35a45d 100644 --- a/packages/astro/test/astro-dynamic.test.js +++ b/packages/astro/test/astro-dynamic.test.js @@ -13,8 +13,8 @@ describe('Dynamic components', () => { it('Loads packages that only run code in client', async () => { const html = await fixture.readFile('/index.html'); - const $ = cheerio.load(html); - expect($('script').length).to.eq(2); + const $ = cheerio.load(html) + expect($('script').length).to.eq(2) }); it('Loads pages using client:media hydrator', async () => { diff --git a/packages/astro/test/astro-markdown-plugins.test.js b/packages/astro/test/astro-markdown-plugins.test.js index 4aed4c295..a094b54be 100644 --- a/packages/astro/test/astro-markdown-plugins.test.js +++ b/packages/astro/test/astro-markdown-plugins.test.js @@ -3,6 +3,7 @@ import cheerio from 'cheerio'; import { loadFixture } from './test-utils.js'; import markdownRemark from '@astrojs/markdown-remark'; + describe('Astro Markdown plugins', () => { let fixture; @@ -11,16 +12,13 @@ describe('Astro Markdown plugins', () => { projectRoot: './fixtures/astro-markdown-plugins/', renderers: ['@astrojs/renderer-preact'], markdownOptions: { - render: [ - markdownRemark, - { - remarkPlugins: ['remark-code-titles', 'remark-slug', ['rehype-autolink-headings', { behavior: 'prepend' }]], - rehypePlugins: [ - ['rehype-toc', { headings: ['h2', 'h3'] }], - ['rehype-add-classes', { 'h1,h2,h3': 'title' }], - ], - }, - ], + render: [markdownRemark, { + remarkPlugins: ['remark-code-titles', 'remark-slug', ['rehype-autolink-headings', { behavior: 'prepend' }]], + rehypePlugins: [ + ['rehype-toc', { headings: ['h2', 'h3'] }], + ['rehype-add-classes', { 'h1,h2,h3': 'title' }], + ], + }], }, buildOptions: { sitemap: false, @@ -50,4 +48,4 @@ describe('Astro Markdown plugins', () => { // teste 2: Added .title to h1 expect($('#hello-world').hasClass('title')).to.equal(true); }); -}); +}); \ No newline at end of file diff --git a/packages/astro/test/astro-markdown.test.js b/packages/astro/test/astro-markdown.test.js index de3a1f996..a12625429 100644 --- a/packages/astro/test/astro-markdown.test.js +++ b/packages/astro/test/astro-markdown.test.js @@ -59,7 +59,7 @@ describe('Astro Markdown', () => { // test 1:
 tag has scopedStyle class passed down
     expect($('pre').is('[class]')).to.equal(true);
-    expect($('pre').attr('class').split(' ').length).to.equal(2);
+    expect($('pre').attr('class').split(' ').length).to.equal(2)
 
     // test 2: 
 tag has correct language
     expect($('pre').hasClass('language-js')).to.equal(true);
@@ -117,7 +117,7 @@ describe('Astro Markdown', () => {
     expect($('code:nth-child(2)').text()).to.equal('{...props}');
 
     // test 4: Rendered curly braces markdown content
-    expect($('code:last-child').text()).to.equal('{/* JavaScript */}');
+    expect($('code:last-child').text()).to.equal('{/* JavaScript *\/}');
   });
 
   it('Does not close parent early when using content attribute (#494)', async () => {
@@ -140,4 +140,4 @@ describe('Astro Markdown', () => {
     // test Markdown rendered correctly via content prop
     expect($('h1').text()).to.equal('Foo');
   });
-});
+});
\ No newline at end of file
diff --git a/packages/astro/test/astro-sitemap-rss.test.js b/packages/astro/test/astro-sitemap-rss.test.js
index 33a6621eb..f8736ee10 100644
--- a/packages/astro/test/astro-sitemap-rss.test.js
+++ b/packages/astro/test/astro-sitemap-rss.test.js
@@ -24,7 +24,7 @@ describe('Sitemaps', () => {
       );
     });
   });
-
+  
   describe('Sitemap Generation', () => {
     it('Generates Sitemap correctly', async () => {
       let sitemap = await fixture.readFile('/sitemap.xml');
@@ -33,4 +33,4 @@ describe('Sitemaps', () => {
       );
     });
   });
-});
+});
\ No newline at end of file
diff --git a/packages/astro/test/astro-slots.test.js b/packages/astro/test/astro-slots.test.js
index 1e65ce737..9401dc7f3 100644
--- a/packages/astro/test/astro-slots.test.js
+++ b/packages/astro/test/astro-slots.test.js
@@ -112,4 +112,4 @@ describe('Slots', () => {
       expect($('#default')).to.have.lengthOf(1); // the default slot is filled
     }
   });
-});
+});
\ No newline at end of file
diff --git a/packages/astro/test/config.test.js b/packages/astro/test/config.test.js
index 693a74ab7..b36065945 100644
--- a/packages/astro/test/config.test.js
+++ b/packages/astro/test/config.test.js
@@ -4,7 +4,7 @@ import { devCLI, loadFixture } from './test-utils.js';
 describe('config', () => {
   let hostnameFixture;
   let portFixture;
-
+  
   before(async () => {
     [hostnameFixture, portFixture] = await Promise.all([loadFixture({ projectRoot: './fixtures/config-hostname/' }), loadFixture({ projectRoot: './fixtures/config-port/' })]);
   });
diff --git a/packages/astro/vendor/vite/LICENSE.md b/packages/astro/vendor/vite/LICENSE.md
index aa985c3e5..73e3dcd0a 100644
--- a/packages/astro/vendor/vite/LICENSE.md
+++ b/packages/astro/vendor/vite/LICENSE.md
@@ -1,5 +1,4 @@
 # Vite core license
-
 Vite is released under the MIT license:
 
 MIT License
@@ -25,197 +24,194 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
 
 # Licenses of bundled dependencies
-
 The published Vite artifact additionally contains code with the following licenses:
 Apache-2.0, BSD-2-Clause, BSD-3-Clause, CC0-1.0, ISC, MIT, (BSD-3-Clause OR GPL-2.0)
 
 # Bundled dependencies:
-
 ## @ampproject/remapping
-
 License: Apache-2.0
 By: Justin Ridgewell
 Repository: git+https://github.com/ampproject/remapping.git
 
 > Apache License
-> Version 2.0, January 2004
-> http://www.apache.org/licenses/
->
-> TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
->
-> 1.  Definitions.
->
->     "License" shall mean the terms and conditions for use, reproduction,
->     and distribution as defined by Sections 1 through 9 of this document.
->
->     "Licensor" shall mean the copyright owner or entity authorized by
->     the copyright owner that is granting the License.
->
->     "Legal Entity" shall mean the union of the acting entity and all
->     other entities that control, are controlled by, or are under common
->     control with that entity. For the purposes of this definition,
->     "control" means (i) the power, direct or indirect, to cause the
->     direction or management of such entity, whether by contract or
->     otherwise, or (ii) ownership of fifty percent (50%) or more of the
->     outstanding shares, or (iii) beneficial ownership of such entity.
->
->     "You" (or "Your") shall mean an individual or Legal Entity
->     exercising permissions granted by this License.
->
->     "Source" form shall mean the preferred form for making modifications,
->     including but not limited to software source code, documentation
->     source, and configuration files.
->
->     "Object" form shall mean any form resulting from mechanical
->     transformation or translation of a Source form, including but
->     not limited to compiled object code, generated documentation,
->     and conversions to other media types.
->
->     "Work" shall mean the work of authorship, whether in Source or
->     Object form, made available under the License, as indicated by a
->     copyright notice that is included in or attached to the work
->     (an example is provided in the Appendix below).
->
->     "Derivative Works" shall mean any work, whether in Source or Object
->     form, that is based on (or derived from) the Work and for which the
->     editorial revisions, annotations, elaborations, or other modifications
->     represent, as a whole, an original work of authorship. For the purposes
->     of this License, Derivative Works shall not include works that remain
->     separable from, or merely link (or bind by name) to the interfaces of,
->     the Work and Derivative Works thereof.
->
->     "Contribution" shall mean any work of authorship, including
->     the original version of the Work and any modifications or additions
->     to that Work or Derivative Works thereof, that is intentionally
->     submitted to Licensor for inclusion in the Work by the copyright owner
->     or by an individual or Legal Entity authorized to submit on behalf of
->     the copyright owner. For the purposes of this definition, "submitted"
->     means any form of electronic, verbal, or written communication sent
->     to the Licensor or its representatives, including but not limited to
->     communication on electronic mailing lists, source code control systems,
->     and issue tracking systems that are managed by, or on behalf of, the
->     Licensor for the purpose of discussing and improving the Work, but
->     excluding communication that is conspicuously marked or otherwise
->     designated in writing by the copyright owner as "Not a Contribution."
->
->     "Contributor" shall mean Licensor and any individual or Legal Entity
->     on behalf of whom a Contribution has been received by Licensor and
->     subsequently incorporated within the Work.
->
-> 2.  Grant of Copyright License. Subject to the terms and conditions of
->     this License, each Contributor hereby grants to You a perpetual,
->     worldwide, non-exclusive, no-charge, royalty-free, irrevocable
->     copyright license to reproduce, prepare Derivative Works of,
->     publicly display, publicly perform, sublicense, and distribute the
->     Work and such Derivative Works in Source or Object form.
->
-> 3.  Grant of Patent License. Subject to the terms and conditions of
->     this License, each Contributor hereby grants to You a perpetual,
->     worldwide, non-exclusive, no-charge, royalty-free, irrevocable
->     (except as stated in this section) patent license to make, have made,
->     use, offer to sell, sell, import, and otherwise transfer the Work,
->     where such license applies only to those patent claims licensable
->     by such Contributor that are necessarily infringed by their
->     Contribution(s) alone or by combination of their Contribution(s)
->     with the Work to which such Contribution(s) was submitted. If You
->     institute patent litigation against any entity (including a
->     cross-claim or counterclaim in a lawsuit) alleging that the Work
->     or a Contribution incorporated within the Work constitutes direct
->     or contributory patent infringement, then any patent licenses
->     granted to You under this License for that Work shall terminate
->     as of the date such litigation is filed.
->
-> 4.  Redistribution. You may reproduce and distribute copies of the
->     Work or Derivative Works thereof in any medium, with or without
->     modifications, and in Source or Object form, provided that You
->     meet the following conditions:
->
->     (a) You must give any other recipients of the Work or
->     Derivative Works a copy of this License; and
->
->     (b) You must cause any modified files to carry prominent notices
->     stating that You changed the files; and
->
->     (c) You must retain, in the Source form of any Derivative Works
->     that You distribute, all copyright, patent, trademark, and
->     attribution notices from the Source form of the Work,
->     excluding those notices that do not pertain to any part of
->     the Derivative Works; and
->
->     (d) If the Work includes a "NOTICE" text file as part of its
->     distribution, then any Derivative Works that You distribute must
->     include a readable copy of the attribution notices contained
->     within such NOTICE file, excluding those notices that do not
->     pertain to any part of the Derivative Works, in at least one
->     of the following places: within a NOTICE text file distributed
->     as part of the Derivative Works; within the Source form or
->     documentation, if provided along with the Derivative Works; or,
->     within a display generated by the Derivative Works, if and
->     wherever such third-party notices normally appear. The contents
->     of the NOTICE file are for informational purposes only and
->     do not modify the License. You may add Your own attribution
->     notices within Derivative Works that You distribute, alongside
->     or as an addendum to the NOTICE text from the Work, provided
->     that such additional attribution notices cannot be construed
->     as modifying the License.
->
->     You may add Your own copyright statement to Your modifications and
->     may provide additional or different license terms and conditions
->     for use, reproduction, or distribution of Your modifications, or
->     for any such Derivative Works as a whole, provided Your use,
->     reproduction, and distribution of the Work otherwise complies with
->     the conditions stated in this License.
->
-> 5.  Submission of Contributions. Unless You explicitly state otherwise,
->     any Contribution intentionally submitted for inclusion in the Work
->     by You to the Licensor shall be under the terms and conditions of
->     this License, without any additional terms or conditions.
->     Notwithstanding the above, nothing herein shall supersede or modify
->     the terms of any separate license agreement you may have executed
->     with Licensor regarding such Contributions.
->
-> 6.  Trademarks. This License does not grant permission to use the trade
->     names, trademarks, service marks, or product names of the Licensor,
->     except as required for reasonable and customary use in describing the
->     origin of the Work and reproducing the content of the NOTICE file.
->
-> 7.  Disclaimer of Warranty. Unless required by applicable law or
->     agreed to in writing, Licensor provides the Work (and each
->     Contributor provides its Contributions) on an "AS IS" BASIS,
->     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
->     implied, including, without limitation, any warranties or conditions
->     of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
->     PARTICULAR PURPOSE. You are solely responsible for determining the
->     appropriateness of using or redistributing the Work and assume any
->     risks associated with Your exercise of permissions under this License.
->
-> 8.  Limitation of Liability. In no event and under no legal theory,
->     whether in tort (including negligence), contract, or otherwise,
->     unless required by applicable law (such as deliberate and grossly
->     negligent acts) or agreed to in writing, shall any Contributor be
->     liable to You for damages, including any direct, indirect, special,
->     incidental, or consequential damages of any character arising as a
->     result of this License or out of the use or inability to use the
->     Work (including but not limited to damages for loss of goodwill,
->     work stoppage, computer failure or malfunction, or any and all
->     other commercial damages or losses), even if such Contributor
->     has been advised of the possibility of such damages.
->
-> 9.  Accepting Warranty or Additional Liability. While redistributing
->     the Work or Derivative Works thereof, You may choose to offer,
->     and charge a fee for, acceptance of support, warranty, indemnity,
->     or other liability obligations and/or rights consistent with this
->     License. However, in accepting such obligations, You may act only
->     on Your own behalf and on Your sole responsibility, not on behalf
->     of any other Contributor, and only if You agree to indemnify,
->     defend, and hold each Contributor harmless for any liability
->     incurred by, or claims asserted against, such Contributor by reason
->     of your accepting any such warranty or additional liability.
->
-> END OF TERMS AND CONDITIONS
->
-> APPENDIX: How to apply the Apache License to your work.
->
+>                            Version 2.0, January 2004
+>                         http://www.apache.org/licenses/
+> 
+>    TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+> 
+>    1. Definitions.
+> 
+>       "License" shall mean the terms and conditions for use, reproduction,
+>       and distribution as defined by Sections 1 through 9 of this document.
+> 
+>       "Licensor" shall mean the copyright owner or entity authorized by
+>       the copyright owner that is granting the License.
+> 
+>       "Legal Entity" shall mean the union of the acting entity and all
+>       other entities that control, are controlled by, or are under common
+>       control with that entity. For the purposes of this definition,
+>       "control" means (i) the power, direct or indirect, to cause the
+>       direction or management of such entity, whether by contract or
+>       otherwise, or (ii) ownership of fifty percent (50%) or more of the
+>       outstanding shares, or (iii) beneficial ownership of such entity.
+> 
+>       "You" (or "Your") shall mean an individual or Legal Entity
+>       exercising permissions granted by this License.
+> 
+>       "Source" form shall mean the preferred form for making modifications,
+>       including but not limited to software source code, documentation
+>       source, and configuration files.
+> 
+>       "Object" form shall mean any form resulting from mechanical
+>       transformation or translation of a Source form, including but
+>       not limited to compiled object code, generated documentation,
+>       and conversions to other media types.
+> 
+>       "Work" shall mean the work of authorship, whether in Source or
+>       Object form, made available under the License, as indicated by a
+>       copyright notice that is included in or attached to the work
+>       (an example is provided in the Appendix below).
+> 
+>       "Derivative Works" shall mean any work, whether in Source or Object
+>       form, that is based on (or derived from) the Work and for which the
+>       editorial revisions, annotations, elaborations, or other modifications
+>       represent, as a whole, an original work of authorship. For the purposes
+>       of this License, Derivative Works shall not include works that remain
+>       separable from, or merely link (or bind by name) to the interfaces of,
+>       the Work and Derivative Works thereof.
+> 
+>       "Contribution" shall mean any work of authorship, including
+>       the original version of the Work and any modifications or additions
+>       to that Work or Derivative Works thereof, that is intentionally
+>       submitted to Licensor for inclusion in the Work by the copyright owner
+>       or by an individual or Legal Entity authorized to submit on behalf of
+>       the copyright owner. For the purposes of this definition, "submitted"
+>       means any form of electronic, verbal, or written communication sent
+>       to the Licensor or its representatives, including but not limited to
+>       communication on electronic mailing lists, source code control systems,
+>       and issue tracking systems that are managed by, or on behalf of, the
+>       Licensor for the purpose of discussing and improving the Work, but
+>       excluding communication that is conspicuously marked or otherwise
+>       designated in writing by the copyright owner as "Not a Contribution."
+> 
+>       "Contributor" shall mean Licensor and any individual or Legal Entity
+>       on behalf of whom a Contribution has been received by Licensor and
+>       subsequently incorporated within the Work.
+> 
+>    2. Grant of Copyright License. Subject to the terms and conditions of
+>       this License, each Contributor hereby grants to You a perpetual,
+>       worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+>       copyright license to reproduce, prepare Derivative Works of,
+>       publicly display, publicly perform, sublicense, and distribute the
+>       Work and such Derivative Works in Source or Object form.
+> 
+>    3. Grant of Patent License. Subject to the terms and conditions of
+>       this License, each Contributor hereby grants to You a perpetual,
+>       worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+>       (except as stated in this section) patent license to make, have made,
+>       use, offer to sell, sell, import, and otherwise transfer the Work,
+>       where such license applies only to those patent claims licensable
+>       by such Contributor that are necessarily infringed by their
+>       Contribution(s) alone or by combination of their Contribution(s)
+>       with the Work to which such Contribution(s) was submitted. If You
+>       institute patent litigation against any entity (including a
+>       cross-claim or counterclaim in a lawsuit) alleging that the Work
+>       or a Contribution incorporated within the Work constitutes direct
+>       or contributory patent infringement, then any patent licenses
+>       granted to You under this License for that Work shall terminate
+>       as of the date such litigation is filed.
+> 
+>    4. Redistribution. You may reproduce and distribute copies of the
+>       Work or Derivative Works thereof in any medium, with or without
+>       modifications, and in Source or Object form, provided that You
+>       meet the following conditions:
+> 
+>       (a) You must give any other recipients of the Work or
+>           Derivative Works a copy of this License; and
+> 
+>       (b) You must cause any modified files to carry prominent notices
+>           stating that You changed the files; and
+> 
+>       (c) You must retain, in the Source form of any Derivative Works
+>           that You distribute, all copyright, patent, trademark, and
+>           attribution notices from the Source form of the Work,
+>           excluding those notices that do not pertain to any part of
+>           the Derivative Works; and
+> 
+>       (d) If the Work includes a "NOTICE" text file as part of its
+>           distribution, then any Derivative Works that You distribute must
+>           include a readable copy of the attribution notices contained
+>           within such NOTICE file, excluding those notices that do not
+>           pertain to any part of the Derivative Works, in at least one
+>           of the following places: within a NOTICE text file distributed
+>           as part of the Derivative Works; within the Source form or
+>           documentation, if provided along with the Derivative Works; or,
+>           within a display generated by the Derivative Works, if and
+>           wherever such third-party notices normally appear. The contents
+>           of the NOTICE file are for informational purposes only and
+>           do not modify the License. You may add Your own attribution
+>           notices within Derivative Works that You distribute, alongside
+>           or as an addendum to the NOTICE text from the Work, provided
+>           that such additional attribution notices cannot be construed
+>           as modifying the License.
+> 
+>       You may add Your own copyright statement to Your modifications and
+>       may provide additional or different license terms and conditions
+>       for use, reproduction, or distribution of Your modifications, or
+>       for any such Derivative Works as a whole, provided Your use,
+>       reproduction, and distribution of the Work otherwise complies with
+>       the conditions stated in this License.
+> 
+>    5. Submission of Contributions. Unless You explicitly state otherwise,
+>       any Contribution intentionally submitted for inclusion in the Work
+>       by You to the Licensor shall be under the terms and conditions of
+>       this License, without any additional terms or conditions.
+>       Notwithstanding the above, nothing herein shall supersede or modify
+>       the terms of any separate license agreement you may have executed
+>       with Licensor regarding such Contributions.
+> 
+>    6. Trademarks. This License does not grant permission to use the trade
+>       names, trademarks, service marks, or product names of the Licensor,
+>       except as required for reasonable and customary use in describing the
+>       origin of the Work and reproducing the content of the NOTICE file.
+> 
+>    7. Disclaimer of Warranty. Unless required by applicable law or
+>       agreed to in writing, Licensor provides the Work (and each
+>       Contributor provides its Contributions) on an "AS IS" BASIS,
+>       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+>       implied, including, without limitation, any warranties or conditions
+>       of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+>       PARTICULAR PURPOSE. You are solely responsible for determining the
+>       appropriateness of using or redistributing the Work and assume any
+>       risks associated with Your exercise of permissions under this License.
+> 
+>    8. Limitation of Liability. In no event and under no legal theory,
+>       whether in tort (including negligence), contract, or otherwise,
+>       unless required by applicable law (such as deliberate and grossly
+>       negligent acts) or agreed to in writing, shall any Contributor be
+>       liable to You for damages, including any direct, indirect, special,
+>       incidental, or consequential damages of any character arising as a
+>       result of this License or out of the use or inability to use the
+>       Work (including but not limited to damages for loss of goodwill,
+>       work stoppage, computer failure or malfunction, or any and all
+>       other commercial damages or losses), even if such Contributor
+>       has been advised of the possibility of such damages.
+> 
+>    9. Accepting Warranty or Additional Liability. While redistributing
+>       the Work or Derivative Works thereof, You may choose to offer,
+>       and charge a fee for, acceptance of support, warranty, indemnity,
+>       or other liability obligations and/or rights consistent with this
+>       License. However, in accepting such obligations, You may act only
+>       on Your own behalf and on Your sole responsibility, not on behalf
+>       of any other Contributor, and only if You agree to indemnify,
+>       defend, and hold each Contributor harmless for any liability
+>       incurred by, or claims asserted against, such Contributor by reason
+>       of your accepting any such warranty or additional liability.
+> 
+>    END OF TERMS AND CONDITIONS
+> 
+>    APPENDIX: How to apply the Apache License to your work.
+> 
 >       To apply the Apache License to your work, attach the following
 >       boilerplate notice, with the fields enclosed by brackets "[]"
 >       replaced with your own identifying information. (Don't include
@@ -224,80 +220,74 @@ Repository: git+https://github.com/ampproject/remapping.git
 >       file or class name and description of purpose be included on the
 >       same "printed page" as the copyright notice for easier
 >       identification within third-party archives.
->
-> Copyright 2019 Google LLC
->
-> Licensed under the Apache License, Version 2.0 (the "License");
-> you may not use this file except in compliance with the License.
-> You may obtain a copy of the License at
->
+> 
+>    Copyright 2019 Google LLC
+> 
+>    Licensed under the Apache License, Version 2.0 (the "License");
+>    you may not use this file except in compliance with the License.
+>    You may obtain a copy of the License at
+> 
 >        http://www.apache.org/licenses/LICENSE-2.0
->
-> Unless required by applicable law or agreed to in writing, software
-> distributed under the License is distributed on an "AS IS" BASIS,
-> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-> See the License for the specific language governing permissions and
-> limitations under the License.
+> 
+>    Unless required by applicable law or agreed to in writing, software
+>    distributed under the License is distributed on an "AS IS" BASIS,
+>    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+>    See the License for the specific language governing permissions and
+>    limitations under the License.
 
----
+---------------------------------------
 
 ## @nodelib/fs.scandir
-
 License: MIT
 Repository: https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.scandir
 
----
+---------------------------------------
 
 ## @nodelib/fs.stat
-
 License: MIT
 Repository: https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.stat
 
----
+---------------------------------------
 
 ## @nodelib/fs.walk
-
 License: MIT
 Repository: https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.walk
 
----
+---------------------------------------
 
 ## @polka/url
-
 License: MIT
 By: Luke Edwards
 Repository: lukeed/polka
 
----
+---------------------------------------
 
 ## @rollup/plugin-alias
-
 License: MIT
 By: Johannes Stein
 Repository: rollup/plugins
 
----
+---------------------------------------
 
 ## @rollup/plugin-commonjs
-
 License: MIT
 By: Rich Harris
 Repository: rollup/plugins
 
 > The MIT License (MIT)
->
+> 
 > Copyright (c) 2019 RollupJS Plugin Contributors (https://github.com/rollup/plugins/graphs/contributors)
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy
 > of this software and associated documentation files (the "Software"), to deal
 > in the Software without restriction, including without limitation the rights
 > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 > copies of the Software, and to permit persons to whom the Software is
 > furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in
 > all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -306,52 +296,48 @@ Repository: rollup/plugins
 > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 > THE SOFTWARE.
 
----
+---------------------------------------
 
 ## @rollup/plugin-dynamic-import-vars
-
 License: MIT
 By: LarsDenBakker
 Repository: rollup/plugins
 
----
+---------------------------------------
 
 ## @rollup/pluginutils
-
 License: MIT
 By: Rich Harris
 Repository: rollup/plugins
 
----
+---------------------------------------
 
 ## @vue/compiler-core
-
 License: MIT
 By: Evan You
 Repository: git+https://github.com/vuejs/vue-next.git
 
----
+---------------------------------------
 
 ## @vue/compiler-dom
-
 License: MIT
 By: Evan You
 Repository: git+https://github.com/vuejs/vue-next.git
 
 > The MIT License (MIT)
->
+> 
 > Copyright (c) 2018-present, Yuxi (Evan) You
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy
 > of this software and associated documentation files (the "Software"), to deal
 > in the Software without restriction, including without limitation the rights
 > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 > copies of the Software, and to permit persons to whom the Software is
 > furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in
 > all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -360,44 +346,41 @@ Repository: git+https://github.com/vuejs/vue-next.git
 > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 > THE SOFTWARE.
 
----
+---------------------------------------
 
 ## @vue/shared
-
 License: MIT
 By: Evan You
 Repository: git+https://github.com/vuejs/vue-next.git
 
----
+---------------------------------------
 
 ## accepts
-
 License: MIT
 By: Douglas Christopher Wilson, Jonathan Ong
 Repository: jshttp/accepts
 
----
+---------------------------------------
 
 ## acorn
-
 License: MIT
 By: Marijn Haverbeke, Ingvar Stepanyan, Adrian Heine
 Repository: https://github.com/acornjs/acorn.git
 
 > MIT License
->
+> 
 > Copyright (C) 2012-2020 by various contributors (see AUTHORS)
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy
 > of this software and associated documentation files (the "Software"), to deal
 > in the Software without restriction, including without limitation the rights
 > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 > copies of the Software, and to permit persons to whom the Software is
 > furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in
 > all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -406,26 +389,25 @@ Repository: https://github.com/acornjs/acorn.git
 > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 > THE SOFTWARE.
 
----
+---------------------------------------
 
 ## acorn-class-fields
-
 License: MIT
 By: Adrian Heine
 Repository: https://github.com/acornjs/acorn-class-fields
 
 > Copyright (C) 2017-2018 by Adrian Heine
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy
 > of this software and associated documentation files (the "Software"), to deal
 > in the Software without restriction, including without limitation the rights
 > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 > copies of the Software, and to permit persons to whom the Software is
 > furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in
 > all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -434,34 +416,32 @@ Repository: https://github.com/acornjs/acorn-class-fields
 > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 > THE SOFTWARE.
 
----
+---------------------------------------
 
 ## acorn-private-class-elements
-
 License: MIT
 By: Adrian Heine
 Repository: https://github.com/acornjs/acorn-private-class-elements
 
----
+---------------------------------------
 
 ## acorn-static-class-features
-
 License: MIT
 By: Adrian Heine
 Repository: https://github.com/acornjs/acorn-static-class-features
 
 > Copyright (C) 2017-2018 by Adrian Heine
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy
 > of this software and associated documentation files (the "Software"), to deal
 > in the Software without restriction, including without limitation the rights
 > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 > copies of the Software, and to permit persons to whom the Software is
 > furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in
 > all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -470,126 +450,114 @@ Repository: https://github.com/acornjs/acorn-static-class-features
 > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 > THE SOFTWARE.
 
----
+---------------------------------------
 
 ## ansi-regex
-
 License: MIT
 By: Sindre Sorhus
 Repository: chalk/ansi-regex
 
----
+---------------------------------------
 
 ## ansi-styles
-
 License: MIT
 By: Sindre Sorhus
 Repository: chalk/ansi-styles
 
----
+---------------------------------------
 
 ## anymatch
-
 License: ISC
 By: Elan Shanker
 Repository: https://github.com/micromatch/anymatch
 
----
+---------------------------------------
 
 ## array-union
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/array-union
 
----
+---------------------------------------
 
 ## balanced-match
-
 License: MIT
 By: Julian Gruber
 Repository: git://github.com/juliangruber/balanced-match.git
 
----
+---------------------------------------
 
 ## big.js
-
 License: MIT
 By: Michael Mclaughlin
 Repository: https://github.com/MikeMcl/big.js.git
 
----
+---------------------------------------
 
 ## binary-extensions
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/binary-extensions
 
----
+---------------------------------------
 
 ## brace-expansion
-
 License: MIT
 By: Julian Gruber
 Repository: git://github.com/juliangruber/brace-expansion.git
 
----
+---------------------------------------
 
 ## braces
-
 License: MIT
 By: Jon Schlinkert, Brian Woodward, Elan Shanker, Eugene Sharygin, hemanth.hm
 Repository: micromatch/braces
 
----
+---------------------------------------
 
 ## builtin-modules
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/builtin-modules
 
 > MIT License
->
+> 
 > Copyright (c) Sindre Sorhus  (https://sindresorhus.com)
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
----
+---------------------------------------
 
 ## bytes
-
 License: MIT
 By: TJ Holowaychuk, Jed Watson, Théo FIDRY
 Repository: visionmedia/bytes.js
 
----
+---------------------------------------
 
 ## cac
-
 License: MIT
 By: egoist
 Repository: egoist/cac
 
 > The MIT License (MIT)
->
+> 
 > Copyright (c) EGOIST <0x142857@gmail.com> (https://github.com/egoist)
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy
 > of this software and associated documentation files (the "Software"), to deal
 > in the Software without restriction, including without limitation the rights
 > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 > copies of the Software, and to permit persons to whom the Software is
 > furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in
 > all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -598,45 +566,43 @@ Repository: egoist/cac
 > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 > THE SOFTWARE.
 
----
+---------------------------------------
 
 ## chalk
-
 License: MIT
 Repository: chalk/chalk
 
 > MIT License
->
+> 
 > Copyright (c) Sindre Sorhus  (sindresorhus.com)
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
----
+---------------------------------------
 
 ## chokidar
-
 License: MIT
 By: Paul Miller, Elan Shanker
 Repository: git+https://github.com/paulmillr/chokidar.git
 
 > The MIT License (MIT)
->
+> 
 > Copyright (c) 2012-2019 Paul Miller (https://paulmillr.com), Elan Shanker
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy
 > of this software and associated documentation files (the “Software”), to deal
 > in the Software without restriction, including without limitation the rights
 > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 > copies of the Software, and to permit persons to whom the Software is
 > furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in
 > all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -645,51 +611,46 @@ Repository: git+https://github.com/paulmillr/chokidar.git
 > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 > THE SOFTWARE.
 
----
+---------------------------------------
 
 ## color-convert
-
 License: MIT
 By: Heather Arthur
 Repository: Qix-/color-convert
 
----
+---------------------------------------
 
 ## color-name
-
 License: MIT
 By: DY
 Repository: git@github.com:colorjs/color-name.git
 
----
+---------------------------------------
 
 ## commondir
-
 License: MIT
 By: James Halliday
 Repository: http://github.com/substack/node-commondir.git
 
----
+---------------------------------------
 
 ## compressible
-
 License: MIT
 By: Douglas Christopher Wilson, Jonathan Ong, Jeremiah Senkpiel
 Repository: jshttp/compressible
 
----
+---------------------------------------
 
 ## compression
-
 License: MIT
 By: Douglas Christopher Wilson, Jonathan Ong
 Repository: expressjs/compression
 
 > (The MIT License)
->
+> 
 > Copyright (c) 2014 Jonathan Ong 
 > Copyright (c) 2014-2015 Douglas Christopher Wilson 
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining
 > a copy of this software and associated documentation files (the
 > 'Software'), to deal in the Software without restriction, including
@@ -697,10 +658,10 @@ Repository: expressjs/compression
 > distribute, sublicense, and/or sell copies of the Software, and to
 > permit persons to whom the Software is furnished to do so, subject to
 > the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be
 > included in all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
 > EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 > MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
@@ -709,29 +670,27 @@ Repository: expressjs/compression
 > TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 > SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
----
+---------------------------------------
 
 ## concat-map
-
 License: MIT
 By: James Halliday
 Repository: git://github.com/substack/node-concat-map.git
 
----
+---------------------------------------
 
 ## connect
-
 License: MIT
 By: TJ Holowaychuk, Douglas Christopher Wilson, Jonathan Ong, Tim Caswell
 Repository: senchalabs/connect
 
 > (The MIT License)
->
+> 
 > Copyright (c) 2010 Sencha Inc.
 > Copyright (c) 2011 LearnBoost
 > Copyright (c) 2011-2014 TJ Holowaychuk
 > Copyright (c) 2015 Douglas Christopher Wilson
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining
 > a copy of this software and associated documentation files (the
 > 'Software'), to deal in the Software without restriction, including
@@ -739,10 +698,10 @@ Repository: senchalabs/connect
 > distribute, sublicense, and/or sell copies of the Software, and to
 > permit persons to whom the Software is furnished to do so, subject to
 > the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be
 > included in all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
 > EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 > MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
@@ -751,28 +710,27 @@ Repository: senchalabs/connect
 > TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 > SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
----
+---------------------------------------
 
 ## connect-history-api-fallback
-
 License: MIT
 By: Ben Ripkens, Craig Myles
 Repository: http://github.com/bripkens/connect-history-api-fallback.git
 
 > The MIT License
->
+> 
 > Copyright (c) 2012 Ben Ripkens http://bripkens.de
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy
 > of this software and associated documentation files (the "Software"), to deal
 > in the Software without restriction, including without limitation the rights
 > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 > copies of the Software, and to permit persons to whom the Software is
 > furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in
 > all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -781,17 +739,16 @@ Repository: http://github.com/bripkens/connect-history-api-fallback.git
 > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 > THE SOFTWARE.
 
----
+---------------------------------------
 
 ## convert-source-map
-
 License: MIT
 By: Thorsten Lorenz
 Repository: git://github.com/thlorenz/convert-source-map.git
 
-> Copyright 2013 Thorsten Lorenz.
+> Copyright 2013 Thorsten Lorenz. 
 > All rights reserved.
->
+> 
 > Permission is hereby granted, free of charge, to any person
 > obtaining a copy of this software and associated documentation
 > files (the "Software"), to deal in the Software without
@@ -800,10 +757,10 @@ Repository: git://github.com/thlorenz/convert-source-map.git
 > copies of the Software, and to permit persons to whom the
 > Software is furnished to do so, subject to the following
 > conditions:
->
+> 
 > The above copyright notice and this permission notice shall be
 > included in all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 > EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 > OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -813,18 +770,17 @@ Repository: git://github.com/thlorenz/convert-source-map.git
 > FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 > OTHER DEALINGS IN THE SOFTWARE.
 
----
+---------------------------------------
 
 ## cors
-
 License: MIT
 By: Troy Goode
 Repository: expressjs/cors
 
 > (The MIT License)
->
+> 
 > Copyright (c) 2013 Troy Goode 
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining
 > a copy of this software and associated documentation files (the
 > 'Software'), to deal in the Software without restriction, including
@@ -832,10 +788,10 @@ Repository: expressjs/cors
 > distribute, sublicense, and/or sell copies of the Software, and to
 > permit persons to whom the Software is furnished to do so, subject to
 > the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be
 > included in all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
 > EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 > MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
@@ -844,85 +800,79 @@ Repository: expressjs/cors
 > TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 > SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
----
+---------------------------------------
 
 ## cross-spawn
-
 License: MIT
 By: André Cruz
 Repository: git@github.com:moxystudio/node-cross-spawn.git
 
----
+---------------------------------------
 
 ## cssesc
-
 License: MIT
 By: Mathias Bynens
 Repository: https://github.com/mathiasbynens/cssesc.git
 
----
+---------------------------------------
 
 ## debug
-
 License: MIT
 By: TJ Holowaychuk, Nathan Rajlich, Andrew Rhyne, Josh Junon
 Repository: git://github.com/visionmedia/debug.git
 
 > (The MIT License)
->
+> 
 > Copyright (c) 2014 TJ Holowaychuk 
->
-> Permission is hereby granted, free of charge, to any person obtaining a copy of this software
-> and associated documentation files (the 'Software'), to deal in the Software without restriction,
-> including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+> 
+> Permission is hereby granted, free of charge, to any person obtaining a copy of this software 
+> and associated documentation files (the 'Software'), to deal in the Software without restriction, 
+> including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, 
 > and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
 > subject to the following conditions:
->
-> The above copyright notice and this permission notice shall be included in all copies or substantial
+> 
+> The above copyright notice and this permission notice shall be included in all copies or substantial 
 > portions of the Software.
->
-> THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
-> LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-> WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+> 
+> THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT 
+> LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
+> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
+> WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
 > SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
----
+---------------------------------------
 
 ## define-lazy-prop
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/define-lazy-prop
 
----
+---------------------------------------
 
 ## dir-glob
-
 License: MIT
 By: Kevin Mårtensson
 Repository: kevva/dir-glob
 
----
+---------------------------------------
 
 ## dotenv
-
 License: BSD-2-Clause
 Repository: git://github.com/motdotla/dotenv.git
 
 > Copyright (c) 2015, Scott Motte
 > All rights reserved.
->
+> 
 > Redistribution and use in source and binary forms, with or without
 > modification, are permitted provided that the following conditions are met:
->
-> - Redistributions of source code must retain the above copyright notice, this
+> 
+> * Redistributions of source code must retain the above copyright notice, this
 >   list of conditions and the following disclaimer.
->
-> - Redistributions in binary form must reproduce the above copyright notice,
+> 
+> * Redistributions in binary form must reproduce the above copyright notice,
 >   this list of conditions and the following disclaimer in the documentation
 >   and/or other materials provided with the distribution.
->
+> 
 > THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 > AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 > IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
@@ -934,26 +884,25 @@ Repository: git://github.com/motdotla/dotenv.git
 > OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 > OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
----
+---------------------------------------
 
 ## dotenv-expand
-
 License: BSD-2-Clause
 By: motdotla
 
 > Copyright (c) 2016, Scott Motte
 > All rights reserved.
->
+> 
 > Redistribution and use in source and binary forms, with or without
 > modification, are permitted provided that the following conditions are met:
->
-> - Redistributions of source code must retain the above copyright notice, this
+> 
+> * Redistributions of source code must retain the above copyright notice, this
 >   list of conditions and the following disclaimer.
->
-> - Redistributions in binary form must reproduce the above copyright notice,
+> 
+> * Redistributions in binary form must reproduce the above copyright notice,
 >   this list of conditions and the following disclaimer in the documentation
 >   and/or other materials provided with the distribution.
->
+> 
 > THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 > AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 > IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
@@ -965,91 +914,84 @@ By: motdotla
 > OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 > OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
----
+---------------------------------------
 
 ## ee-first
-
 License: MIT
 By: Jonathan Ong, Douglas Christopher Wilson
 Repository: jonathanong/ee-first
 
----
+---------------------------------------
 
 ## emojis-list
-
 License: MIT
 By: Kiko Beats
 Repository: git+https://github.com/kikobeats/emojis-list.git
 
----
+---------------------------------------
 
 ## encodeurl
-
 License: MIT
 By: Douglas Christopher Wilson
 Repository: pillarjs/encodeurl
 
----
+---------------------------------------
 
 ## es-module-lexer
-
 License: MIT
 By: Guy Bedford
 Repository: git+https://github.com/guybedford/es-module-lexer.git
 
-> ## MIT License
->
+> MIT License
+> -----------
+> 
 > Copyright (C) 2018-2021 Guy Bedford
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
----
+---------------------------------------
 
 ## escape-html
-
 License: MIT
 Repository: component/escape-html
 
----
+---------------------------------------
 
 ## escape-string-regexp
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/escape-string-regexp
 
----
+---------------------------------------
 
 ## estree-walker
-
 License: MIT
 By: Rich Harris
 Repository: https://github.com/Rich-Harris/estree-walker
 
 > Copyright (c) 2015-20 [these people](https://github.com/Rich-Harris/estree-walker/graphs/contributors)
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
----
+---------------------------------------
 
 ## etag
-
 License: MIT
 By: Douglas Christopher Wilson, David Björklund
 Repository: jshttp/etag
 
 > (The MIT License)
->
+> 
 > Copyright (c) 2014-2016 Douglas Christopher Wilson
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining
 > a copy of this software and associated documentation files (the
 > 'Software'), to deal in the Software without restriction, including
@@ -1057,10 +999,10 @@ Repository: jshttp/etag
 > distribute, sublicense, and/or sell copies of the Software, and to
 > permit persons to whom the Software is furnished to do so, subject to
 > the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be
 > included in all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
 > EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 > MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
@@ -1069,54 +1011,51 @@ Repository: jshttp/etag
 > TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 > SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
----
+---------------------------------------
 
 ## eventemitter3
-
 License: MIT
 By: Arnout Kazemier
 Repository: git://github.com/primus/eventemitter3.git
 
----
+---------------------------------------
 
 ## execa
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/execa
 
 > MIT License
->
+> 
 > Copyright (c) Sindre Sorhus  (https://sindresorhus.com)
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
----
+---------------------------------------
 
 ## fast-glob
-
 License: MIT
 By: Denis Malinochkin
 Repository: mrmlnc/fast-glob
 
 > The MIT License (MIT)
->
+> 
 > Copyright (c) Denis Malinochkin
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy
 > of this software and associated documentation files (the "Software"), to deal
 > in the Software without restriction, including without limitation the rights
 > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 > copies of the Software, and to permit persons to whom the Software is
 > furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in all
 > copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -1125,369 +1064,329 @@ Repository: mrmlnc/fast-glob
 > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 > SOFTWARE.
 
----
+---------------------------------------
 
 ## fastq
-
 License: ISC
 By: Matteo Collina
 Repository: git+https://github.com/mcollina/fastq.git
 
----
+---------------------------------------
 
 ## fill-range
-
 License: MIT
 By: Jon Schlinkert, Edo Rivai, Paul Miller, Rouven Weßling
 Repository: jonschlinkert/fill-range
 
----
+---------------------------------------
 
 ## finalhandler
-
 License: MIT
 By: Douglas Christopher Wilson
 Repository: pillarjs/finalhandler
 
----
+---------------------------------------
 
 ## follow-redirects
-
 License: MIT
 By: Ruben Verborgh, Olivier Lalonde, James Talmage
 Repository: git@github.com:follow-redirects/follow-redirects.git
 
----
+---------------------------------------
 
 ## fs.realpath
-
 License: ISC
 By: Isaac Z. Schlueter
 Repository: git+https://github.com/isaacs/fs.realpath.git
 
----
+---------------------------------------
 
 ## generic-names
-
 License: MIT
 By: Alexey Litvinov
 Repository: git+https://github.com/css-modules/generic-names.git
 
----
+---------------------------------------
 
 ## get-stream
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/get-stream
 
----
+---------------------------------------
 
 ## glob
-
 License: ISC
 By: Isaac Z. Schlueter
 Repository: git://github.com/isaacs/node-glob.git
 
----
+---------------------------------------
 
 ## glob-parent
-
 License: ISC
 By: Gulp Team, Elan Shanker, Blaine Bublitz
 Repository: gulpjs/glob-parent
 
----
+---------------------------------------
 
 ## globby
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/globby
 
----
+---------------------------------------
 
 ## has-flag
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/has-flag
 
----
+---------------------------------------
 
 ## http-proxy
-
 License: MIT
 By: Charlie Robbins
 Repository: https://github.com/http-party/node-http-proxy.git
 
 > node-http-proxy
->
-> Copyright (c) 2010-2016 Charlie Robbins, Jarrett Cruger & the Contributors.
->
-> Permission is hereby granted, free of charge, to any person obtaining
-> a copy of this software and associated documentation files (the
-> "Software"), to deal in the Software without restriction, including
-> without limitation the rights to use, copy, modify, merge, publish,
-> distribute, sublicense, and/or sell copies of the Software, and to
-> permit persons to whom the Software is furnished to do so, subject to
-> the following conditions:
->
-> The above copyright notice and this permission notice shall be
-> included in all copies or substantial portions of the Software.
->
-> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-> NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-> LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-> OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-> WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+> 
+>   Copyright (c) 2010-2016 Charlie Robbins, Jarrett Cruger & the Contributors.
+> 
+>   Permission is hereby granted, free of charge, to any person obtaining
+>   a copy of this software and associated documentation files (the
+>   "Software"), to deal in the Software without restriction, including
+>   without limitation the rights to use, copy, modify, merge, publish,
+>   distribute, sublicense, and/or sell copies of the Software, and to
+>   permit persons to whom the Software is furnished to do so, subject to
+>   the following conditions:
+> 
+>   The above copyright notice and this permission notice shall be
+>   included in all copies or substantial portions of the Software.
+> 
+>   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+>   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+>   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+>   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+>   LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+>   OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+>   WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
----
+---------------------------------------
 
 ## human-signals
-
 License: Apache-2.0
 By: ehmicky
 Repository: ehmicky/human-signals
 
----
+---------------------------------------
 
 ## icss-replace-symbols
-
 License: ISC
 By: Glen Maddern
 Repository: git+https://github.com/css-modules/icss-replace-symbols.git
 
----
+---------------------------------------
 
 ## icss-utils
-
 License: ISC
 By: Glen Maddern
 Repository: git+https://github.com/css-modules/icss-utils.git
 
----
+---------------------------------------
 
 ## ignore
-
 License: MIT
 By: kael
 Repository: git@github.com:kaelzhang/node-ignore.git
 
----
+---------------------------------------
 
 ## import-cwd
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/import-cwd
 
----
+---------------------------------------
 
 ## import-from
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/import-from
 
----
+---------------------------------------
 
 ## inflight
-
 License: ISC
 By: Isaac Z. Schlueter
 Repository: https://github.com/npm/inflight.git
 
----
+---------------------------------------
 
 ## inherits
-
 License: ISC
 Repository: git://github.com/isaacs/inherits
 
----
+---------------------------------------
 
 ## is-binary-path
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/is-binary-path
 
----
+---------------------------------------
 
 ## is-docker
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/is-docker
 
----
+---------------------------------------
 
 ## is-extglob
-
 License: MIT
 By: Jon Schlinkert
 Repository: jonschlinkert/is-extglob
 
----
+---------------------------------------
 
 ## is-glob
-
 License: MIT
 By: Jon Schlinkert, Brian Woodward, Daniel Perez
 Repository: micromatch/is-glob
 
----
+---------------------------------------
 
 ## is-number
-
 License: MIT
 By: Jon Schlinkert, Olsten Larck, Rouven Weßling
 Repository: jonschlinkert/is-number
 
----
+---------------------------------------
 
 ## is-reference
-
 License: MIT
 By: Rich Harris
 Repository: git+https://github.com/Rich-Harris/is-reference.git
 
----
+---------------------------------------
 
 ## is-stream
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/is-stream
 
----
+---------------------------------------
 
 ## is-wsl
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/is-wsl
 
----
+---------------------------------------
 
 ## isexe
-
 License: ISC
 By: Isaac Z. Schlueter
 Repository: git+https://github.com/isaacs/isexe.git
 
----
+---------------------------------------
 
 ## json5
-
 License: MIT
 By: Aseem Kishore, Max Nanasy, Andrew Eisenberg, Jordan Tucker
 Repository: git+https://github.com/json5/json5.git
 
----
+---------------------------------------
 
 ## launch-editor
-
 License: MIT
 By: Evan You
 Repository: git+https://github.com/yyx990803/launch-editor.git
 
----
+---------------------------------------
 
 ## launch-editor-middleware
-
 License: MIT
 By: Evan You
 Repository: git+https://github.com/yyx990803/launch-editor.git
 
----
+---------------------------------------
 
 ## lilconfig
-
 License: MIT
 By: antonk52
 Repository: https://github.com/antonk52/lilconfig
 
----
+---------------------------------------
 
 ## loader-utils
-
 License: MIT
 By: Tobias Koppers @sokra
 Repository: https://github.com/webpack/loader-utils.git
 
----
+---------------------------------------
 
 ## lodash.camelcase
-
 License: MIT
 By: John-David Dalton, Blaine Bublitz, Mathias Bynens
 Repository: lodash/lodash
 
----
+---------------------------------------
 
 ## magic-string
-
 License: MIT
 By: Rich Harris
 Repository: https://github.com/rich-harris/magic-string
 
 > Copyright 2018 Rich Harris
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
----
+---------------------------------------
 
 ## merge-stream
-
 License: MIT
 By: Stephen Sugden
 Repository: grncdr/merge-stream
 
----
+---------------------------------------
 
 ## merge2
-
 License: MIT
 Repository: git@github.com:teambition/merge2.git
 
----
+---------------------------------------
 
 ## micromatch
-
 License: MIT
 By: Jon Schlinkert, Amila Welihinda, Bogdan Chadkin, Brian Woodward, Devon Govett, Elan Shanker, Fabrício Matté, Martin Kolárik, Olsten Larck, Paul Miller, Tom Byrer, Tyler Akins, Peter Bright, Kuba Juszczyk
 Repository: micromatch/micromatch
 
----
+---------------------------------------
 
 ## mime
-
 License: MIT
 By: Robert Kieffer
 Repository: https://github.com/broofa/mime
 
 > The MIT License (MIT)
->
+> 
 > Copyright (c) 2010 Benjamin Thomas, Robert Kieffer
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy
 > of this software and associated documentation files (the "Software"), to deal
 > in the Software without restriction, including without limitation the rights
 > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 > copies of the Software, and to permit persons to whom the Software is
 > furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in
 > all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -1496,27 +1395,25 @@ Repository: https://github.com/broofa/mime
 > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 > THE SOFTWARE.
 
----
+---------------------------------------
 
 ## mime-db
-
 License: MIT
 By: Douglas Christopher Wilson, Jonathan Ong, Robert Kieffer
 Repository: jshttp/mime-db
 
----
+---------------------------------------
 
 ## mime-types
-
 License: MIT
 By: Douglas Christopher Wilson, Jeremiah Senkpiel, Jonathan Ong
 Repository: jshttp/mime-types
 
 > (The MIT License)
->
+> 
 > Copyright (c) 2014 Jonathan Ong 
 > Copyright (c) 2015 Douglas Christopher Wilson 
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining
 > a copy of this software and associated documentation files (the
 > 'Software'), to deal in the Software without restriction, including
@@ -1524,10 +1421,10 @@ Repository: jshttp/mime-types
 > distribute, sublicense, and/or sell copies of the Software, and to
 > permit persons to whom the Software is furnished to do so, subject to
 > the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be
 > included in all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
 > EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 > MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
@@ -1536,30 +1433,28 @@ Repository: jshttp/mime-types
 > TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 > SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
----
+---------------------------------------
 
 ## mimic-fn
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/mimic-fn
 
----
+---------------------------------------
 
 ## minimatch
-
 License: ISC
 By: Isaac Z. Schlueter
 Repository: git://github.com/isaacs/minimatch.git
 
 > The ISC License
->
+> 
 > Copyright (c) Isaac Z. Schlueter and Contributors
->
+> 
 > Permission to use, copy, modify, and/or distribute this software for any
 > purpose with or without fee is hereby granted, provided that the above
 > copyright notice and this permission notice appear in all copies.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 > WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 > MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
@@ -1568,75 +1463,68 @@ Repository: git://github.com/isaacs/minimatch.git
 > ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
 > IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
----
+---------------------------------------
 
 ## ms
-
 License: MIT
 Repository: zeit/ms
 
----
+---------------------------------------
 
 ## negotiator
-
 License: MIT
 By: Douglas Christopher Wilson, Federico Romero, Isaac Z. Schlueter
 Repository: jshttp/negotiator
 
----
+---------------------------------------
 
 ## node-forge
-
 License: (BSD-3-Clause OR GPL-2.0)
 By: Digital Bazaar, Inc., Dave Longley, David I. Lehn, Stefan Siegl, Christoph Dorn
 Repository: https://github.com/digitalbazaar/forge
 
----
+---------------------------------------
 
 ## normalize-path
-
 License: MIT
 By: Jon Schlinkert, Blaine Bublitz
 Repository: jonschlinkert/normalize-path
 
----
+---------------------------------------
 
 ## npm-run-path
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/npm-run-path
 
----
+---------------------------------------
 
 ## object-assign
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/object-assign
 
----
+---------------------------------------
 
 ## okie
-
 License: MIT
 By: Evan You
 Repository: git+https://github.com/yyx990803/okie.git
 
 > MIT License
->
+> 
 > Copyright (c) 2020-present, Yuxi (Evan) You
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy
 > of this software and associated documentation files (the "Software"), to deal
 > in the Software without restriction, including without limitation the rights
 > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 > copies of the Software, and to permit persons to whom the Software is
 > furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in all
 > copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -1645,141 +1533,128 @@ Repository: git+https://github.com/yyx990803/okie.git
 > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 > SOFTWARE.
 
----
+---------------------------------------
 
 ## on-finished
-
 License: MIT
 By: Douglas Christopher Wilson, Jonathan Ong
 Repository: jshttp/on-finished
 
----
+---------------------------------------
 
 ## on-headers
-
 License: MIT
 By: Douglas Christopher Wilson
 Repository: jshttp/on-headers
 
----
+---------------------------------------
 
 ## once
-
 License: ISC
 By: Isaac Z. Schlueter
 Repository: git://github.com/isaacs/once
 
----
+---------------------------------------
 
 ## onetime
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/onetime
 
----
+---------------------------------------
 
 ## open
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/open
 
 > MIT License
->
+> 
 > Copyright (c) Sindre Sorhus  (https://sindresorhus.com)
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
----
+---------------------------------------
 
 ## parseurl
-
 License: MIT
 By: Douglas Christopher Wilson, Jonathan Ong
 Repository: pillarjs/parseurl
 
----
+---------------------------------------
 
 ## path-is-absolute
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/path-is-absolute
 
----
+---------------------------------------
 
 ## path-key
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/path-key
 
----
+---------------------------------------
 
 ## path-type
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/path-type
 
----
+---------------------------------------
 
 ## periscopic
-
 License: MIT
 Repository: Rich-Harris/periscopic
 
 > Copyright (c) 2019 Rich Harris
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
----
+---------------------------------------
 
 ## picomatch
-
 License: MIT
 By: Jon Schlinkert
 Repository: micromatch/picomatch
 
----
+---------------------------------------
 
 ## pify
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/pify
 
----
+---------------------------------------
 
 ## postcss-import
-
 License: MIT
 By: Maxime Thirouin
 Repository: https://github.com/postcss/postcss-import.git
 
 > The MIT License (MIT)
->
+> 
 > Copyright (c) 2014 Maxime Thirouin, Jason Campbell & Kevin Mårtensson
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy of
 > this software and associated documentation files (the "Software"), to deal in
 > the Software without restriction, including without limitation the rights to
 > use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
 > the Software, and to permit persons to whom the Software is furnished to do so,
 > subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in all
 > copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 > FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
@@ -1787,28 +1662,27 @@ Repository: https://github.com/postcss/postcss-import.git
 > IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 > CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
----
+---------------------------------------
 
 ## postcss-load-config
-
 License: MIT
 By: Michael Ciniawky, Ryan Dunckel, Mateusz Derks, Dalton Santos, Patrick Gilday
 Repository: postcss/postcss-load-config
 
 > The MIT License (MIT)
->
+> 
 > Copyright Michael Ciniawsky 
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy of
 > this software and associated documentation files (the "Software"), to deal in
 > the Software without restriction, including without limitation the rights to
 > use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
 > the Software, and to permit persons to whom the Software is furnished to do so,
 > subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in all
 > copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 > FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
@@ -1816,28 +1690,27 @@ Repository: postcss/postcss-load-config
 > IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 > CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
----
+---------------------------------------
 
 ## postcss-modules
-
 License: MIT
 By: Alexander Madyankin
 Repository: https://github.com/css-modules/postcss-modules.git
 
 > The MIT License (MIT)
->
+> 
 > Copyright 2015-2016 Alexander Madyankin 
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy of
 > this software and associated documentation files (the "Software"), to deal in
 > the Software without restriction, including without limitation the rights to
 > use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
 > the Software, and to permit persons to whom the Software is furnished to do so,
 > subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in all
 > copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 > FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
@@ -1845,116 +1718,104 @@ Repository: https://github.com/css-modules/postcss-modules.git
 > IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 > CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
----
+---------------------------------------
 
 ## postcss-modules-extract-imports
-
 License: ISC
 By: Glen Maddern
 Repository: https://github.com/css-modules/postcss-modules-extract-imports.git
 
----
+---------------------------------------
 
 ## postcss-modules-local-by-default
-
 License: MIT
 By: Mark Dalgleish
 Repository: https://github.com/css-modules/postcss-modules-local-by-default.git
 
----
+---------------------------------------
 
 ## postcss-modules-scope
-
 License: ISC
 By: Glen Maddern
 Repository: https://github.com/css-modules/postcss-modules-scope.git
 
----
+---------------------------------------
 
 ## postcss-modules-values
-
 License: ISC
 By: Glen Maddern
 Repository: git+https://github.com/css-modules/postcss-modules-values.git
 
----
+---------------------------------------
 
 ## postcss-selector-parser
-
 License: MIT
 By: Ben Briggs, Chris Eppstein
 Repository: postcss/postcss-selector-parser
 
----
+---------------------------------------
 
 ## postcss-value-parser
-
 License: MIT
 By: Bogdan Chadkin
 Repository: https://github.com/TrySound/postcss-value-parser.git
 
----
+---------------------------------------
 
 ## queue-microtask
-
 License: MIT
 By: Feross Aboukhadijeh
 Repository: git://github.com/feross/queue-microtask.git
 
----
+---------------------------------------
 
 ## read-cache
-
 License: MIT
 By: Bogdan Chadkin
 Repository: git+https://github.com/TrySound/read-cache.git
 
----
+---------------------------------------
 
 ## readdirp
-
 License: MIT
 By: Thorsten Lorenz, Paul Miller
 Repository: git://github.com/paulmillr/readdirp.git
 
----
+---------------------------------------
 
 ## requires-port
-
 License: MIT
 By: Arnout Kazemier
 Repository: https://github.com/unshiftio/requires-port
 
----
+---------------------------------------
 
 ## resolve-from
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/resolve-from
 
----
+---------------------------------------
 
 ## resolve.exports
-
 License: MIT
 By: Luke Edwards
 Repository: lukeed/resolve.exports
 
 > The MIT License (MIT)
->
+> 
 > Copyright (c) Luke Edwards  (lukeed.com)
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy
 > of this software and associated documentation files (the "Software"), to deal
 > in the Software without restriction, including without limitation the rights
 > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 > copies of the Software, and to permit persons to whom the Software is
 > furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in
 > all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -1963,52 +1824,48 @@ Repository: lukeed/resolve.exports
 > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 > THE SOFTWARE.
 
----
+---------------------------------------
 
 ## reusify
-
 License: MIT
 By: Matteo Collina
 Repository: git+https://github.com/mcollina/reusify.git
 
----
+---------------------------------------
 
 ## run-parallel
-
 License: MIT
 By: Feross Aboukhadijeh
 Repository: git://github.com/feross/run-parallel.git
 
----
+---------------------------------------
 
 ## safe-buffer
-
 License: MIT
 By: Feross Aboukhadijeh
 Repository: git://github.com/feross/safe-buffer.git
 
----
+---------------------------------------
 
 ## selfsigned
-
 License: MIT
 By: José F. Romaniello, Paolo Fragomeni, Charles Bushong
 Repository: git://github.com/jfromaniello/selfsigned.git
 
 > MIT License
->
+> 
 > Copyright (c) 2013 José F. Romaniello
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy
 > of this software and associated documentation files (the "Software"), to deal
 > in the Software without restriction, including without limitation the rights
 > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 > copies of the Software, and to permit persons to whom the Software is
 > furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in all
 > copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -2017,79 +1874,72 @@ Repository: git://github.com/jfromaniello/selfsigned.git
 > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 > SOFTWARE.
 
----
+---------------------------------------
 
 ## shebang-command
-
 License: MIT
 By: Kevin Mårtensson
 Repository: kevva/shebang-command
 
----
+---------------------------------------
 
 ## shebang-regex
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/shebang-regex
 
----
+---------------------------------------
 
 ## shell-quote
-
 License: MIT
 By: James Halliday
 Repository: http://github.com/substack/node-shell-quote.git
 
----
+---------------------------------------
 
 ## signal-exit
-
 License: ISC
 By: Ben Coe
 Repository: https://github.com/tapjs/signal-exit.git
 
----
+---------------------------------------
 
 ## sirv
-
 License: MIT
 By: Luke Edwards
 Repository: lukeed/sirv
 
----
+---------------------------------------
 
 ## slash
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/slash
 
----
+---------------------------------------
 
 ## source-map
-
 License: BSD-3-Clause
 By: Nick Fitzgerald, Tobias Koppers, Duncan Beevers, Stephen Crane, Ryan Seddon, Miles Elam, Mihai Bazon, Michael Ficarra, Todd Wolfson, Alexander Solovyov, Felix Gnass, Conrad Irwin, usrbincc, David Glasser, Chase Douglas, Evan Wallace, Heather Arthur, Hugh Kennedy, Simon Lydell, Jmeas Smith, Michael Z Goddard, azu, John Gozde, Adam Kirkton, Chris Montgomery, J. Ryan Stinnett, Jack Herrington, Chris Truter, Daniel Espeset, Jamie Wong, Eddy Bruël, Hawken Rives, Gilad Peleg, djchie, Gary Ye, Nicolas Lalevée
 Repository: http://github.com/mozilla/source-map.git
 
 > Copyright (c) 2009-2011, Mozilla Foundation and contributors
 > All rights reserved.
->
+> 
 > Redistribution and use in source and binary forms, with or without
 > modification, are permitted provided that the following conditions are met:
->
-> - Redistributions of source code must retain the above copyright notice, this
+> 
+> * Redistributions of source code must retain the above copyright notice, this
 >   list of conditions and the following disclaimer.
->
-> - Redistributions in binary form must reproduce the above copyright notice,
+> 
+> * Redistributions in binary form must reproduce the above copyright notice,
 >   this list of conditions and the following disclaimer in the documentation
 >   and/or other materials provided with the distribution.
->
-> - Neither the names of the Mozilla Foundation nor the names of project
+> 
+> * Neither the names of the Mozilla Foundation nor the names of project
 >   contributors may be used to endorse or promote products derived from this
 >   software without specific prior written permission.
->
+> 
 > THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 > ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 > WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
@@ -2101,102 +1951,93 @@ Repository: http://github.com/mozilla/source-map.git
 > OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 > OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
----
+---------------------------------------
 
 ## sourcemap-codec
-
 License: MIT
 By: Rich Harris
 Repository: https://github.com/Rich-Harris/sourcemap-codec
 
----
+---------------------------------------
 
 ## statuses
-
 License: MIT
 By: Douglas Christopher Wilson, Jonathan Ong
 Repository: jshttp/statuses
 
----
+---------------------------------------
 
 ## string-hash
-
 License: CC0-1.0
 By: The Dark Sky Company
 Repository: git://github.com/darkskyapp/string-hash.git
 
----
+---------------------------------------
 
 ## strip-ansi
-
 License: MIT
 By: Sindre Sorhus
 Repository: chalk/strip-ansi
 
 > MIT License
->
+> 
 > Copyright (c) Sindre Sorhus  (sindresorhus.com)
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
----
+---------------------------------------
 
 ## strip-final-newline
-
 License: MIT
 By: Sindre Sorhus
 Repository: sindresorhus/strip-final-newline
 
----
+---------------------------------------
 
 ## supports-color
-
 License: MIT
 By: Sindre Sorhus
 Repository: chalk/supports-color
 
----
+---------------------------------------
 
 ## to-regex-range
-
 License: MIT
 By: Jon Schlinkert, Rouven Weßling
 Repository: micromatch/to-regex-range
 
----
+---------------------------------------
 
 ## totalist
-
 License: MIT
 By: Luke Edwards
 Repository: lukeed/totalist
 
----
+---------------------------------------
 
 ## tsconfck
-
 License: MIT
 By: dominikg
 Repository: git+https://github.com/dominikg/tsconfck.git
 
 > MIT License
->
+> 
 > Copyright (c) 2021-present dominikg and [contributors](https://github.com/dominikg/tsconfck/graphs/contributors)
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy
 > of this software and associated documentation files (the "Software"), to deal
 > in the Software without restriction, including without limitation the rights
 > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 > copies of the Software, and to permit persons to whom the Software is
 > furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in all
 > copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -2204,25 +2045,24 @@ Repository: git+https://github.com/dominikg/tsconfck.git
 > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 > SOFTWARE.
->
+> 
 > -- Licenses for 3rd-party code included in tsconfck --
->
+> 
 > # strip-bom and strip-json-comments
->
 > MIT License
->
+> 
 > Copyright (c) Sindre Sorhus  (https://sindresorhus.com)
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy
 > of this software and associated documentation files (the "Software"), to deal
 > in the Software without restriction, including without limitation the rights
 > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 > copies of the Software, and to permit persons to whom the Software is
 > furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in all
 > copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -2231,76 +2071,69 @@ Repository: git+https://github.com/dominikg/tsconfck.git
 > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 > SOFTWARE.
 
----
+---------------------------------------
 
 ## unpipe
-
 License: MIT
 By: Douglas Christopher Wilson
 Repository: stream-utils/unpipe
 
----
+---------------------------------------
 
 ## util-deprecate
-
 License: MIT
 By: Nathan Rajlich
 Repository: git://github.com/TooTallNate/util-deprecate.git
 
----
+---------------------------------------
 
 ## utils-merge
-
 License: MIT
 By: Jared Hanson
 Repository: git://github.com/jaredhanson/utils-merge.git
 
----
+---------------------------------------
 
 ## vary
-
 License: MIT
 By: Douglas Christopher Wilson
 Repository: jshttp/vary
 
----
+---------------------------------------
 
 ## which
-
 License: ISC
 By: Isaac Z. Schlueter
 Repository: git://github.com/isaacs/node-which.git
 
----
+---------------------------------------
 
 ## wrappy
-
 License: ISC
 By: Isaac Z. Schlueter
 Repository: https://github.com/npm/wrappy
 
----
+---------------------------------------
 
 ## ws
-
 License: MIT
 By: Einar Otto Stangvik
 Repository: websockets/ws
 
 > The MIT License (MIT)
->
+> 
 > Copyright (c) 2011 Einar Otto Stangvik 
->
+> 
 > Permission is hereby granted, free of charge, to any person obtaining a copy
 > of this software and associated documentation files (the "Software"), to deal
 > in the Software without restriction, including without limitation the rights
 > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 > copies of the Software, and to permit persons to whom the Software is
 > furnished to do so, subject to the following conditions:
->
+> 
 > The above copyright notice and this permission notice shall be included in all
 > copies or substantial portions of the Software.
->
+> 
 > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -2309,10 +2142,9 @@ Repository: websockets/ws
 > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 > SOFTWARE.
 
----
+---------------------------------------
 
 ## yaml
-
 License: ISC
 By: Eemeli Aro
 Repository: github:eemeli/yaml
diff --git a/packages/astro/vendor/vite/client.d.ts b/packages/astro/vendor/vite/client.d.ts
index 546365ce4..2586f0781 100644
--- a/packages/astro/vendor/vite/client.d.ts
+++ b/packages/astro/vendor/vite/client.d.ts
@@ -2,65 +2,65 @@
 /// 
 
 // CSS modules
-type CSSModuleClasses = { readonly [key: string]: string };
+type CSSModuleClasses = { readonly [key: string]: string }
 
 declare module '*.module.css' {
-  const classes: CSSModuleClasses;
-  export default classes;
+  const classes: CSSModuleClasses
+  export default classes
 }
 declare module '*.module.scss' {
-  const classes: CSSModuleClasses;
-  export default classes;
+  const classes: CSSModuleClasses
+  export default classes
 }
 declare module '*.module.sass' {
-  const classes: CSSModuleClasses;
-  export default classes;
+  const classes: CSSModuleClasses
+  export default classes
 }
 declare module '*.module.less' {
-  const classes: CSSModuleClasses;
-  export default classes;
+  const classes: CSSModuleClasses
+  export default classes
 }
 declare module '*.module.styl' {
-  const classes: CSSModuleClasses;
-  export default classes;
+  const classes: CSSModuleClasses
+  export default classes
 }
 declare module '*.module.stylus' {
-  const classes: CSSModuleClasses;
-  export default classes;
+  const classes: CSSModuleClasses
+  export default classes
 }
 declare module '*.module.pcss' {
-  const classes: CSSModuleClasses;
-  export default classes;
+  const classes: CSSModuleClasses
+  export default classes
 }
 
 // CSS
 declare module '*.css' {
-  const css: string;
-  export default css;
+  const css: string
+  export default css
 }
 declare module '*.scss' {
-  const css: string;
-  export default css;
+  const css: string
+  export default css
 }
 declare module '*.sass' {
-  const css: string;
-  export default css;
+  const css: string
+  export default css
 }
 declare module '*.less' {
-  const css: string;
-  export default css;
+  const css: string
+  export default css
 }
 declare module '*.styl' {
-  const css: string;
-  export default css;
+  const css: string
+  export default css
 }
 declare module '*.stylus' {
-  const css: string;
-  export default css;
+  const css: string
+  export default css
 }
 declare module '*.pcss' {
-  const css: string;
-  export default css;
+  const css: string
+  export default css
 }
 
 // Built-in asset types
@@ -68,137 +68,137 @@ declare module '*.pcss' {
 
 // images
 declare module '*.jpg' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 declare module '*.jpeg' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 declare module '*.png' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 declare module '*.gif' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 declare module '*.svg' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 declare module '*.ico' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 declare module '*.webp' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 declare module '*.avif' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 
 // media
 declare module '*.mp4' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 declare module '*.webm' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 declare module '*.ogg' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 declare module '*.mp3' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 declare module '*.wav' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 declare module '*.flac' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 declare module '*.aac' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 
 // fonts
 declare module '*.woff' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 declare module '*.woff2' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 declare module '*.eot' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 declare module '*.ttf' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 declare module '*.otf' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 
 // other
 declare module '*.wasm' {
-  const initWasm: (options: WebAssembly.Imports) => Promise;
-  export default initWasm;
+  const initWasm: (options: WebAssembly.Imports) => Promise
+  export default initWasm
 }
 declare module '*.webmanifest' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 declare module '*.pdf' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 
 // web worker
 declare module '*?worker' {
   const workerConstructor: {
-    new (): Worker;
-  };
-  export default workerConstructor;
+    new (): Worker
+  }
+  export default workerConstructor
 }
 
 declare module '*?worker&inline' {
   const workerConstructor: {
-    new (): Worker;
-  };
-  export default workerConstructor;
+    new (): Worker
+  }
+  export default workerConstructor
 }
 
 declare module '*?sharedworker' {
   const sharedWorkerConstructor: {
-    new (): SharedWorker;
-  };
-  export default sharedWorkerConstructor;
+    new (): SharedWorker
+  }
+  export default sharedWorkerConstructor
 }
 
 declare module '*?raw' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 
 declare module '*?url' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
 
 declare module '*?inline' {
-  const src: string;
-  export default src;
+  const src: string
+  export default src
 }
diff --git a/packages/astro/vendor/vite/types/alias.d.ts b/packages/astro/vendor/vite/types/alias.d.ts
index ffeca2e9e..aa70ec5bb 100644
--- a/packages/astro/vendor/vite/types/alias.d.ts
+++ b/packages/astro/vendor/vite/types/alias.d.ts
@@ -27,24 +27,24 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 */
 
-import { PluginHooks } from 'rollup';
+import { PluginHooks } from 'rollup'
 
 export interface Alias {
-  find: string | RegExp;
-  replacement: string;
+  find: string | RegExp
+  replacement: string
   /**
    * Instructs the plugin to use an alternative resolving algorithm,
    * rather than the Rollup's resolver.
    * @default null
    */
-  customResolver?: ResolverFunction | ResolverObject | null;
+  customResolver?: ResolverFunction | ResolverObject | null
 }
 
-export type ResolverFunction = PluginHooks['resolveId'];
+export type ResolverFunction = PluginHooks['resolveId']
 
 export interface ResolverObject {
-  buildStart?: PluginHooks['buildStart'];
-  resolveId: ResolverFunction;
+  buildStart?: PluginHooks['buildStart']
+  resolveId: ResolverFunction
 }
 
 /**
@@ -56,4 +56,4 @@ export interface ResolverObject {
  * This is passed to \@rollup/plugin-alias as the "entries" field
  * https://github.com/rollup/plugins/tree/master/packages/alias#entries
  */
-export type AliasOptions = readonly Alias[] | { [find: string]: string };
+export type AliasOptions = readonly Alias[] | { [find: string]: string }
diff --git a/packages/astro/vendor/vite/types/anymatch.d.ts b/packages/astro/vendor/vite/types/anymatch.d.ts
index c95454fa2..920458858 100644
--- a/packages/astro/vendor/vite/types/anymatch.d.ts
+++ b/packages/astro/vendor/vite/types/anymatch.d.ts
@@ -1,5 +1,5 @@
-export type AnymatchFn = (testString: string) => boolean;
-export type AnymatchPattern = string | RegExp | AnymatchFn;
-type AnymatchMatcher = AnymatchPattern | AnymatchPattern[];
+export type AnymatchFn = (testString: string) => boolean
+export type AnymatchPattern = string | RegExp | AnymatchFn
+type AnymatchMatcher = AnymatchPattern | AnymatchPattern[]
 
-export { AnymatchMatcher as Matcher };
+export { AnymatchMatcher as Matcher }
diff --git a/packages/astro/vendor/vite/types/chokidar.d.ts b/packages/astro/vendor/vite/types/chokidar.d.ts
index cd1f33563..8882f0263 100644
--- a/packages/astro/vendor/vite/types/chokidar.d.ts
+++ b/packages/astro/vendor/vite/types/chokidar.d.ts
@@ -28,28 +28,28 @@ THE SOFTWARE.
 */
 /// 
 
-import * as fs from 'fs';
-import { Matcher } from './anymatch';
+import * as fs from 'fs'
+import { Matcher } from './anymatch'
 
 export interface FSWatcher extends fs.FSWatcher {
-  options: WatchOptions;
+  options: WatchOptions
 
   /**
    * Constructs a new FSWatcher instance with optional WatchOptions parameter.
    */
-  (options?: WatchOptions): void;
+  (options?: WatchOptions): void
 
   /**
    * Add files, directories, or glob patterns for tracking. Takes an array of strings or just one
    * string.
    */
-  add(paths: string | ReadonlyArray): void;
+  add(paths: string | ReadonlyArray): void
 
   /**
    * Stop watching files, directories, or glob patterns. Takes an array of strings or just one
    * string.
    */
-  unwatch(paths: string | ReadonlyArray): void;
+  unwatch(paths: string | ReadonlyArray): void
 
   /**
    * Returns an object representing all the paths on the file system being watched by this
@@ -58,36 +58,49 @@ export interface FSWatcher extends fs.FSWatcher {
    * each directory.
    */
   getWatched(): {
-    [directory: string]: string[];
-  };
+    [directory: string]: string[]
+  }
 
   /**
    * Removes all listeners from watched files.
    */
-  close(): Promise;
+  close(): Promise
 
-  on(event: 'add' | 'addDir' | 'change', listener: (path: string, stats?: fs.Stats) => void): this;
+  on(
+    event: 'add' | 'addDir' | 'change',
+    listener: (path: string, stats?: fs.Stats) => void
+  ): this
 
-  on(event: 'all', listener: (eventName: 'add' | 'addDir' | 'change' | 'unlink' | 'unlinkDir', path: string, stats?: fs.Stats) => void): this;
+  on(
+    event: 'all',
+    listener: (
+      eventName: 'add' | 'addDir' | 'change' | 'unlink' | 'unlinkDir',
+      path: string,
+      stats?: fs.Stats
+    ) => void
+  ): this
 
   /**
    * Error occurred
    */
-  on(event: 'error', listener: (error: Error) => void): this;
+  on(event: 'error', listener: (error: Error) => void): this
 
   /**
    * Exposes the native Node `fs.FSWatcher events`
    */
-  on(event: 'raw', listener: (eventName: string, path: string, details: any) => void): this;
+  on(
+    event: 'raw',
+    listener: (eventName: string, path: string, details: any) => void
+  ): this
 
   /**
    * Fires when the initial scan is complete
    */
-  on(event: 'ready', listener: () => void): this;
+  on(event: 'ready', listener: () => void): this
 
-  on(event: 'unlink' | 'unlinkDir', listener: (path: string) => void): this;
+  on(event: 'unlink' | 'unlinkDir', listener: (path: string) => void): this
 
-  on(event: string, listener: (...args: any[]) => void): this;
+  on(event: string, listener: (...args: any[]) => void): this
 }
 
 export interface WatchOptions {
@@ -96,7 +109,7 @@ export interface WatchOptions {
    * set to `false` when using `fsevents` to watch, no more events will be emitted after `ready`,
    * even if the process continues to run.
    */
-  persistent?: boolean;
+  persistent?: boolean
 
   /**
    * ([anymatch](https://github.com/micromatch/anymatch)-compatible definition) Defines files/paths to
@@ -105,31 +118,31 @@ export interface WatchOptions {
    * (the path), second time with two arguments (the path and the
    * [`fs.Stats`](https://nodejs.org/api/fs.html#fs_class_fs_stats) object of that path).
    */
-  ignored?: Matcher;
+  ignored?: Matcher
 
   /**
    * If set to `false` then `add`/`addDir` events are also emitted for matching paths while
    * instantiating the watching as chokidar discovers these file paths (before the `ready` event).
    */
-  ignoreInitial?: boolean;
+  ignoreInitial?: boolean
 
   /**
    * When `false`, only the symlinks themselves will be watched for changes instead of following
    * the link references and bubbling events through the link's path.
    */
-  followSymlinks?: boolean;
+  followSymlinks?: boolean
 
   /**
    * The base directory from which watch `paths` are to be derived. Paths emitted with events will
    * be relative to this.
    */
-  cwd?: string;
+  cwd?: string
 
   /**
    *  If set to true then the strings passed to .watch() and .add() are treated as literal path
    *  names, even if they look like globs. Default: false.
    */
-  disableGlobbing?: boolean;
+  disableGlobbing?: boolean
 
   /**
    * Whether to use fs.watchFile (backed by polling), or fs.watch. If polling leads to high CPU
@@ -138,44 +151,44 @@ export interface WatchOptions {
    * watch files in other non-standard situations. Setting to `true` explicitly on OS X overrides
    * the `useFsEvents` default.
    */
-  usePolling?: boolean;
+  usePolling?: boolean
 
   /**
    * Whether to use the `fsevents` watching interface if available. When set to `true` explicitly
    * and `fsevents` is available this supersedes the `usePolling` setting. When set to `false` on
    * OS X, `usePolling: true` becomes the default.
    */
-  useFsEvents?: boolean;
+  useFsEvents?: boolean
 
   /**
    * If relying upon the [`fs.Stats`](https://nodejs.org/api/fs.html#fs_class_fs_stats) object that
    * may get passed with `add`, `addDir`, and `change` events, set this to `true` to ensure it is
    * provided even in cases where it wasn't already available from the underlying watch events.
    */
-  alwaysStat?: boolean;
+  alwaysStat?: boolean
 
   /**
    * If set, limits how many levels of subdirectories will be traversed.
    */
-  depth?: number;
+  depth?: number
 
   /**
    * Interval of file system polling.
    */
-  interval?: number;
+  interval?: number
 
   /**
    * Interval of file system polling for binary files. ([see list of binary extensions](https://gi
    * thub.com/sindresorhus/binary-extensions/blob/master/binary-extensions.json))
    */
-  binaryInterval?: number;
+  binaryInterval?: number
 
   /**
    *  Indicates whether to watch files that don't have read permissions if possible. If watching
    *  fails due to `EPERM` or `EACCES` with this set to `true`, the errors will be suppressed
    *  silently.
    */
-  ignorePermissionErrors?: boolean;
+  ignorePermissionErrors?: boolean
 
   /**
    * `true` if `useFsEvents` and `usePolling` are `false`). Automatically filters out artifacts
@@ -184,7 +197,7 @@ export interface WatchOptions {
    * event rather than `unlink` then `add`. If the default of 100 ms does not work well for you,
    * you can override it by setting `atomic` to a custom value, in milliseconds.
    */
-  atomic?: boolean | number;
+  atomic?: boolean | number
 
   /**
    * can be set to an object in order to adjust timing params:
@@ -194,12 +207,12 @@ export interface WatchOptions {
         /**
          * Amount of time in milliseconds for a file size to remain constant before emitting its event.
          */
-        stabilityThreshold?: number;
+        stabilityThreshold?: number
 
         /**
          * File size polling interval.
          */
-        pollInterval?: number;
+        pollInterval?: number
       }
-    | boolean;
+    | boolean
 }
diff --git a/packages/astro/vendor/vite/types/commonjs.d.ts b/packages/astro/vendor/vite/types/commonjs.d.ts
index 142107abe..fd9ab8aa1 100644
--- a/packages/astro/vendor/vite/types/commonjs.d.ts
+++ b/packages/astro/vendor/vite/types/commonjs.d.ts
@@ -15,7 +15,7 @@ export interface RollupCommonJSOptions {
    * statements or `transformMixedEsModules` is `true`.
    * @default undefined
    */
-  include?: string | RegExp | readonly (string | RegExp)[];
+  include?: string | RegExp | readonly (string | RegExp)[]
   /**
    * A minimatch pattern, or array of patterns, which specifies the files in
    * the build the plugin should _ignore_. By default, all files with
@@ -23,24 +23,24 @@ export interface RollupCommonJSOptions {
    * can exclude additional files. See also the `include` option.
    * @default undefined
    */
-  exclude?: string | RegExp | readonly (string | RegExp)[];
+  exclude?: string | RegExp | readonly (string | RegExp)[]
   /**
    * For extensionless imports, search for extensions other than .js in the
    * order specified. Note that you need to make sure that non-JavaScript files
    * are transpiled by another plugin first.
    * @default [ '.js' ]
    */
-  extensions?: ReadonlyArray;
+  extensions?: ReadonlyArray
   /**
    * If true then uses of `global` won't be dealt with by this plugin
    * @default false
    */
-  ignoreGlobal?: boolean;
+  ignoreGlobal?: boolean
   /**
    * If false, skips source map generation for CommonJS modules. This will improve performance.
    * @default true
    */
-  sourceMap?: boolean;
+  sourceMap?: boolean
   /**
    * Some `require` calls cannot be resolved statically to be translated to
    * imports.
@@ -52,7 +52,7 @@ export interface RollupCommonJSOptions {
    * code or use it as a fallback for `dynamicRequireTargets`.
    * @default false
    */
-  ignoreDynamicRequires?: boolean;
+  ignoreDynamicRequires?: boolean
   /**
    * Instructs the plugin whether to enable mixed module transformations. This
    * is useful in scenarios with modules that contain a mix of ES `import`
@@ -64,13 +64,13 @@ export interface RollupCommonJSOptions {
    * ElectronJS. See also the `ignore` option.
    * @default false
    */
-  transformMixedEsModules?: boolean;
+  transformMixedEsModules?: boolean
   /**
    * Sometimes you have to leave require statements unconverted. Pass an array
    * containing the IDs or a `id => boolean` function.
    * @default []
    */
-  ignore?: ReadonlyArray | ((id: string) => boolean);
+  ignore?: ReadonlyArray | ((id: string) => boolean)
   /**
    * Controls how to render imports from external dependencies. By default,
    * this plugin assumes that all external dependencies are CommonJS. This
@@ -88,7 +88,7 @@ export interface RollupCommonJSOptions {
    * module.
    * @default false
    */
-  esmExternals?: boolean | ReadonlyArray | ((id: string) => boolean);
+  esmExternals?: boolean | ReadonlyArray | ((id: string) => boolean)
   /**
    * Controls what is returned when requiring an ES module from a CommonJS file.
    * When using the `esmExternals` option, this will also apply to external
@@ -139,7 +139,12 @@ export interface RollupCommonJSOptions {
    * and allows you to return different values for different modules.
    * @default false
    */
-  requireReturnsDefault?: boolean | 'auto' | 'preferred' | 'namespace' | ((id: string) => boolean | 'auto' | 'preferred' | 'namespace');
+  requireReturnsDefault?:
+    | boolean
+    | 'auto'
+    | 'preferred'
+    | 'namespace'
+    | ((id: string) => boolean | 'auto' | 'preferred' | 'namespace')
   /**
    * Some modules contain dynamic `require` calls, or require modules that
    * contain circular dependencies, which are not handled well by static
@@ -153,5 +158,5 @@ export interface RollupCommonJSOptions {
    * with paths that are far away from your project's folder, that may require
    * replacing strings like `"/Users/John/Desktop/foo-project/"` -\> `"/"`.
    */
-  dynamicRequireTargets?: string | ReadonlyArray;
+  dynamicRequireTargets?: string | ReadonlyArray
 }
diff --git a/packages/astro/vendor/vite/types/connect.d.ts b/packages/astro/vendor/vite/types/connect.d.ts
index 640df44a1..753569ccb 100644
--- a/packages/astro/vendor/vite/types/connect.d.ts
+++ b/packages/astro/vendor/vite/types/connect.d.ts
@@ -8,32 +8,47 @@
 // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
 
 /// 
-import * as http from 'http';
+import * as http from 'http'
 
 export namespace Connect {
-  export type ServerHandle = HandleFunction | http.Server;
+  export type ServerHandle = HandleFunction | http.Server
 
   export class IncomingMessage extends http.IncomingMessage {
-    originalUrl?: http.IncomingMessage['url'];
+    originalUrl?: http.IncomingMessage['url']
   }
 
-  export type NextFunction = (err?: any) => void;
+  export type NextFunction = (err?: any) => void
 
-  export type SimpleHandleFunction = (req: IncomingMessage, res: http.ServerResponse) => void;
-  export type NextHandleFunction = (req: IncomingMessage, res: http.ServerResponse, next: NextFunction) => void;
-  export type ErrorHandleFunction = (err: any, req: IncomingMessage, res: http.ServerResponse, next: NextFunction) => void;
-  export type HandleFunction = SimpleHandleFunction | NextHandleFunction | ErrorHandleFunction;
+  export type SimpleHandleFunction = (
+    req: IncomingMessage,
+    res: http.ServerResponse
+  ) => void
+  export type NextHandleFunction = (
+    req: IncomingMessage,
+    res: http.ServerResponse,
+    next: NextFunction
+  ) => void
+  export type ErrorHandleFunction = (
+    err: any,
+    req: IncomingMessage,
+    res: http.ServerResponse,
+    next: NextFunction
+  ) => void
+  export type HandleFunction =
+    | SimpleHandleFunction
+    | NextHandleFunction
+    | ErrorHandleFunction
 
   export interface ServerStackItem {
-    route: string;
-    handle: ServerHandle;
+    route: string
+    handle: ServerHandle
   }
 
   export interface Server extends NodeJS.EventEmitter {
-    (req: http.IncomingMessage, res: http.ServerResponse, next?: Function): void;
+    (req: http.IncomingMessage, res: http.ServerResponse, next?: Function): void
 
-    route: string;
-    stack: ServerStackItem[];
+    route: string
+    stack: ServerStackItem[]
 
     /**
      * Utilize the given middleware `handle` to the given `route`,
@@ -46,16 +61,20 @@ export namespace Connect {
      * be invoked on _/admin_, and _/admin/settings_, however it would
      * not be invoked for _/_, or _/posts_.
      */
-    use(fn: NextHandleFunction): Server;
-    use(fn: HandleFunction): Server;
-    use(route: string, fn: NextHandleFunction): Server;
-    use(route: string, fn: HandleFunction): Server;
+    use(fn: NextHandleFunction): Server
+    use(fn: HandleFunction): Server
+    use(route: string, fn: NextHandleFunction): Server
+    use(route: string, fn: HandleFunction): Server
 
     /**
      * Handle server requests, punting them down
      * the middleware stack.
      */
-    handle(req: http.IncomingMessage, res: http.ServerResponse, next: Function): void;
+    handle(
+      req: http.IncomingMessage,
+      res: http.ServerResponse,
+      next: Function
+    ): void
 
     /**
      * Listen for connections.
@@ -79,9 +98,14 @@ export namespace Connect {
      *      http.createServer(app).listen(80);
      *      https.createServer(options, app).listen(443);
      */
-    listen(port: number, hostname?: string, backlog?: number, callback?: Function): http.Server;
-    listen(port: number, hostname?: string, callback?: Function): http.Server;
-    listen(path: string, callback?: Function): http.Server;
-    listen(handle: any, listeningListener?: Function): http.Server;
+    listen(
+      port: number,
+      hostname?: string,
+      backlog?: number,
+      callback?: Function
+    ): http.Server
+    listen(port: number, hostname?: string, callback?: Function): http.Server
+    listen(path: string, callback?: Function): http.Server
+    listen(handle: any, listeningListener?: Function): http.Server
   }
 }
diff --git a/packages/astro/vendor/vite/types/customEvent.d.ts b/packages/astro/vendor/vite/types/customEvent.d.ts
index 4a9692d04..c38a4ac94 100644
--- a/packages/astro/vendor/vite/types/customEvent.d.ts
+++ b/packages/astro/vendor/vite/types/customEvent.d.ts
@@ -1,2 +1,5 @@
 // See https://stackoverflow.com/a/63549561.
-export type CustomEventName = (T extends `vite:${T}` ? never : T) & (`vite:${T}` extends T ? never : T);
+export type CustomEventName = (T extends `vite:${T}`
+  ? never
+  : T) &
+  (`vite:${T}` extends T ? never : T)
diff --git a/packages/astro/vendor/vite/types/dynamicImportVars.d.ts b/packages/astro/vendor/vite/types/dynamicImportVars.d.ts
index 4f5ea2687..99f1b5c45 100644
--- a/packages/astro/vendor/vite/types/dynamicImportVars.d.ts
+++ b/packages/astro/vendor/vite/types/dynamicImportVars.d.ts
@@ -3,15 +3,15 @@ export interface RollupDynamicImportVarsOptions {
    * Files to include in this plugin (default all).
    * @default []
    */
-  include?: string | RegExp | (string | RegExp)[];
+  include?: string | RegExp | (string | RegExp)[]
   /**
    * Files to exclude in this plugin (default none).
    * @default []
    */
-  exclude?: string | RegExp | (string | RegExp)[];
+  exclude?: string | RegExp | (string | RegExp)[]
   /**
    * By default, the plugin quits the build process when it encounters an error. If you set this option to true, it will throw a warning instead and leave the code untouched.
    * @default false
    */
-  warnOnError?: boolean;
+  warnOnError?: boolean
 }
diff --git a/packages/astro/vendor/vite/types/hmrPayload.d.ts b/packages/astro/vendor/vite/types/hmrPayload.d.ts
index 3b4ceeb79..2fbed3a82 100644
--- a/packages/astro/vendor/vite/types/hmrPayload.d.ts
+++ b/packages/astro/vendor/vite/types/hmrPayload.d.ts
@@ -1,51 +1,57 @@
-export type HMRPayload = ConnectedPayload | UpdatePayload | FullReloadPayload | CustomPayload | ErrorPayload | PrunePayload;
+export type HMRPayload =
+  | ConnectedPayload
+  | UpdatePayload
+  | FullReloadPayload
+  | CustomPayload
+  | ErrorPayload
+  | PrunePayload
 
 export interface ConnectedPayload {
-  type: 'connected';
+  type: 'connected'
 }
 
 export interface UpdatePayload {
-  type: 'update';
-  updates: Update[];
+  type: 'update'
+  updates: Update[]
 }
 
 export interface Update {
-  type: 'js-update' | 'css-update';
-  path: string;
-  acceptedPath: string;
-  timestamp: number;
+  type: 'js-update' | 'css-update'
+  path: string
+  acceptedPath: string
+  timestamp: number
 }
 
 export interface PrunePayload {
-  type: 'prune';
-  paths: string[];
+  type: 'prune'
+  paths: string[]
 }
 
 export interface FullReloadPayload {
-  type: 'full-reload';
-  path?: string;
+  type: 'full-reload'
+  path?: string
 }
 
 export interface CustomPayload {
-  type: 'custom';
-  event: string;
-  data?: any;
+  type: 'custom'
+  event: string
+  data?: any
 }
 
 export interface ErrorPayload {
-  type: 'error';
+  type: 'error'
   err: {
-    [name: string]: any;
-    message: string;
-    stack: string;
-    id?: string;
-    frame?: string;
-    plugin?: string;
-    pluginCode?: string;
+    [name: string]: any
+    message: string
+    stack: string
+    id?: string
+    frame?: string
+    plugin?: string
+    pluginCode?: string
     loc?: {
-      file?: string;
-      line: number;
-      column: number;
-    };
-  };
+      file?: string
+      line: number
+      column: number
+    }
+  }
 }
diff --git a/packages/astro/vendor/vite/types/http-proxy.d.ts b/packages/astro/vendor/vite/types/http-proxy.d.ts
index 720d837f6..3ad701f12 100644
--- a/packages/astro/vendor/vite/types/http-proxy.d.ts
+++ b/packages/astro/vendor/vite/types/http-proxy.d.ts
@@ -13,40 +13,45 @@
 
 /// 
 
-import * as net from 'net';
-import * as http from 'http';
-import * as events from 'events';
-import * as url from 'url';
-import * as stream from 'stream';
+import * as net from 'net'
+import * as http from 'http'
+import * as events from 'events'
+import * as url from 'url'
+import * as stream from 'stream'
 
 export namespace HttpProxy {
-  export type ProxyTarget = ProxyTargetUrl | ProxyTargetDetailed;
+  export type ProxyTarget = ProxyTargetUrl | ProxyTargetDetailed
 
-  export type ProxyTargetUrl = string | Partial;
+  export type ProxyTargetUrl = string | Partial
 
   export interface ProxyTargetDetailed {
-    host: string;
-    port: number;
-    protocol?: string;
-    hostname?: string;
-    socketPath?: string;
-    key?: string;
-    passphrase?: string;
-    pfx?: Buffer | string;
-    cert?: string;
-    ca?: string;
-    ciphers?: string;
-    secureProtocol?: string;
+    host: string
+    port: number
+    protocol?: string
+    hostname?: string
+    socketPath?: string
+    key?: string
+    passphrase?: string
+    pfx?: Buffer | string
+    cert?: string
+    ca?: string
+    ciphers?: string
+    secureProtocol?: string
   }
 
-  export type ErrorCallback = (err: Error, req: http.IncomingMessage, res: http.ServerResponse, target?: ProxyTargetUrl) => void;
+  export type ErrorCallback = (
+    err: Error,
+    req: http.IncomingMessage,
+    res: http.ServerResponse,
+    target?: ProxyTargetUrl
+  ) => void
 
   export class Server extends events.EventEmitter {
     /**
      * Creates the proxy server with specified options.
      * @param options - Config object passed to the proxy
      */
-    constructor(options?: ServerOptions);
+    constructor(options?: ServerOptions)
 
     /**
      * Used for proxying regular HTTP(S) requests
@@ -54,7 +59,12 @@ export namespace HttpProxy {
      * @param res - Client response.
      * @param options - Additionnal options.
      */
-    web(req: http.IncomingMessage, res: http.ServerResponse, options?: ServerOptions, callback?: ErrorCallback): void;
+    web(
+      req: http.IncomingMessage,
+      res: http.ServerResponse,
+      options?: ServerOptions,
+      callback?: ErrorCallback
+    ): void
 
     /**
      * Used for proxying regular HTTP(S) requests
@@ -63,111 +73,170 @@ export namespace HttpProxy {
      * @param head - Client head.
      * @param options - Additional options.
      */
-    ws(req: http.IncomingMessage, socket: unknown, head: unknown, options?: ServerOptions, callback?: ErrorCallback): void;
+    ws(
+      req: http.IncomingMessage,
+      socket: unknown,
+      head: unknown,
+      options?: ServerOptions,
+      callback?: ErrorCallback
+    ): void
 
     /**
      * A function that wraps the object in a webserver, for your convenience
      * @param port - Port to listen on
      */
-    listen(port: number): Server;
+    listen(port: number): Server
 
     /**
      * A function that closes the inner webserver and stops listening on given port
      */
-    close(callback?: () => void): void;
+    close(callback?: () => void): void
 
     /**
      * Creates the proxy server with specified options.
      * @param options - Config object passed to the proxy
      * @returns Proxy object with handlers for `ws` and `web` requests
      */
-    static createProxyServer(options?: ServerOptions): Server;
+    static createProxyServer(options?: ServerOptions): Server
 
     /**
      * Creates the proxy server with specified options.
      * @param options - Config object passed to the proxy
      * @returns Proxy object with handlers for `ws` and `web` requests
      */
-    static createServer(options?: ServerOptions): Server;
+    static createServer(options?: ServerOptions): Server
 
     /**
      * Creates the proxy server with specified options.
      * @param options - Config object passed to the proxy
      * @returns Proxy object with handlers for `ws` and `web` requests
      */
-    static createProxy(options?: ServerOptions): Server;
+    static createProxy(options?: ServerOptions): Server
 
-    addListener(event: string, listener: () => void): this;
-    on(event: string, listener: () => void): this;
-    on(event: 'error', listener: ErrorCallback): this;
-    on(event: 'start', listener: (req: http.IncomingMessage, res: http.ServerResponse, target: ProxyTargetUrl) => void): this;
-    on(event: 'proxyReq', listener: (proxyReq: http.ClientRequest, req: http.IncomingMessage, res: http.ServerResponse, options: ServerOptions) => void): this;
-    on(event: 'proxyRes', listener: (proxyRes: http.IncomingMessage, req: http.IncomingMessage, res: http.ServerResponse) => void): this;
-    on(event: 'proxyReqWs', listener: (proxyReq: http.ClientRequest, req: http.IncomingMessage, socket: net.Socket, options: ServerOptions, head: any) => void): this;
-    on(event: 'econnreset', listener: (err: Error, req: http.IncomingMessage, res: http.ServerResponse, target: ProxyTargetUrl) => void): this;
-    on(event: 'end', listener: (req: http.IncomingMessage, res: http.ServerResponse, proxyRes: http.IncomingMessage) => void): this;
-    on(event: 'close', listener: (proxyRes: http.IncomingMessage, proxySocket: net.Socket, proxyHead: any) => void): this;
+    addListener(event: string, listener: () => void): this
+    on(event: string, listener: () => void): this
+    on(event: 'error', listener: ErrorCallback): this
+    on(
+      event: 'start',
+      listener: (
+        req: http.IncomingMessage,
+        res: http.ServerResponse,
+        target: ProxyTargetUrl
+      ) => void
+    ): this
+    on(
+      event: 'proxyReq',
+      listener: (
+        proxyReq: http.ClientRequest,
+        req: http.IncomingMessage,
+        res: http.ServerResponse,
+        options: ServerOptions
+      ) => void
+    ): this
+    on(
+      event: 'proxyRes',
+      listener: (
+        proxyRes: http.IncomingMessage,
+        req: http.IncomingMessage,
+        res: http.ServerResponse
+      ) => void
+    ): this
+    on(
+      event: 'proxyReqWs',
+      listener: (
+        proxyReq: http.ClientRequest,
+        req: http.IncomingMessage,
+        socket: net.Socket,
+        options: ServerOptions,
+        head: any
+      ) => void
+    ): this
+    on(
+      event: 'econnreset',
+      listener: (
+        err: Error,
+        req: http.IncomingMessage,
+        res: http.ServerResponse,
+        target: ProxyTargetUrl
+      ) => void
+    ): this
+    on(
+      event: 'end',
+      listener: (
+        req: http.IncomingMessage,
+        res: http.ServerResponse,
+        proxyRes: http.IncomingMessage
+      ) => void
+    ): this
+    on(
+      event: 'close',
+      listener: (
+        proxyRes: http.IncomingMessage,
+        proxySocket: net.Socket,
+        proxyHead: any
+      ) => void
+    ): this
 
-    once(event: string, listener: () => void): this;
-    removeListener(event: string, listener: () => void): this;
-    removeAllListeners(event?: string): this;
-    getMaxListeners(): number;
-    setMaxListeners(n: number): this;
-    listeners(event: string): Array<() => void>;
-    emit(event: string, ...args: any[]): boolean;
-    listenerCount(type: string): number;
+    once(event: string, listener: () => void): this
+    removeListener(event: string, listener: () => void): this
+    removeAllListeners(event?: string): this
+    getMaxListeners(): number
+    setMaxListeners(n: number): this
+    listeners(event: string): Array<() => void>
+    emit(event: string, ...args: any[]): boolean
+    listenerCount(type: string): number
   }
 
   export interface ServerOptions {
     /** URL string to be parsed with the url module. */
-    target?: ProxyTarget;
+    target?: ProxyTarget
     /** URL string to be parsed with the url module. */
-    forward?: ProxyTargetUrl;
+    forward?: ProxyTargetUrl
     /** Object to be passed to http(s).request. */
-    agent?: any;
+    agent?: any
     /** Object to be passed to https.createServer(). */
-    ssl?: any;
+    ssl?: any
     /** If you want to proxy websockets. */
-    ws?: boolean;
+    ws?: boolean
     /** Adds x- forward headers. */
-    xfwd?: boolean;
+    xfwd?: boolean
     /** Verify SSL certificate. */
-    secure?: boolean;
+    secure?: boolean
     /** Explicitly specify if we are proxying to another proxy. */
-    toProxy?: boolean;
+    toProxy?: boolean
     /** Specify whether you want to prepend the target's path to the proxy path. */
-    prependPath?: boolean;
+    prependPath?: boolean
     /** Specify whether you want to ignore the proxy path of the incoming request. */
-    ignorePath?: boolean;
+    ignorePath?: boolean
     /** Local interface string to bind for outgoing connections. */
-    localAddress?: string;
+    localAddress?: string
     /** Changes the origin of the host header to the target URL. */
-    changeOrigin?: boolean;
+    changeOrigin?: boolean
     /** specify whether you want to keep letter case of response header key */
-    preserveHeaderKeyCase?: boolean;
+    preserveHeaderKeyCase?: boolean
     /** Basic authentication i.e. 'user:password' to compute an Authorization header. */
-    auth?: string;
+    auth?: string
     /** Rewrites the location hostname on (301 / 302 / 307 / 308) redirects, Default: null. */
-    hostRewrite?: string;
+    hostRewrite?: string
     /** Rewrites the location host/ port on (301 / 302 / 307 / 308) redirects based on requested host/ port.Default: false. */
-    autoRewrite?: boolean;
+    autoRewrite?: boolean
     /** Rewrites the location protocol on (301 / 302 / 307 / 308) redirects to 'http' or 'https'.Default: null. */
-    protocolRewrite?: string;
+    protocolRewrite?: string
     /** rewrites domain of set-cookie headers. */
-    cookieDomainRewrite?: false | string | { [oldDomain: string]: string };
+    cookieDomainRewrite?: false | string | { [oldDomain: string]: string }
     /** rewrites path of set-cookie headers. Default: false */
-    cookiePathRewrite?: false | string | { [oldPath: string]: string };
+    cookiePathRewrite?: false | string | { [oldPath: string]: string }
     /** object with extra headers to be added to target requests. */
-    headers?: { [header: string]: string };
+    headers?: { [header: string]: string }
     /** Timeout (in milliseconds) when proxy receives no response from target. Default: 120000 (2 minutes) */
-    proxyTimeout?: number;
+    proxyTimeout?: number
     /** Timeout (in milliseconds) for incoming requests */
-    timeout?: number;
+    timeout?: number
     /** Specify whether you want to follow redirects. Default: false */
-    followRedirects?: boolean;
+    followRedirects?: boolean
     /** If set to true, none of the webOutgoing passes are called and it's your responsibility to appropriately return the response by listening and acting on the proxyRes event */
-    selfHandleResponse?: boolean;
+    selfHandleResponse?: boolean
     /** Buffer */
-    buffer?: stream.Stream;
+    buffer?: stream.Stream
   }
 }
diff --git a/packages/astro/vendor/vite/types/importMeta.d.ts b/packages/astro/vendor/vite/types/importMeta.d.ts
index 43b20b07b..7a96d76fe 100644
--- a/packages/astro/vendor/vite/types/importMeta.d.ts
+++ b/packages/astro/vendor/vite/types/importMeta.d.ts
@@ -1,54 +1,69 @@
 interface ImportMeta {
-  url: string;
+  url: string
 
   readonly hot?: {
-    readonly data: any;
+    readonly data: any
 
-    accept(): void;
-    accept(cb: (mod: any) => void): void;
-    accept(dep: string, cb: (mod: any) => void): void;
-    accept(deps: readonly string[], cb: (mods: any[]) => void): void;
+    accept(): void
+    accept(cb: (mod: any) => void): void
+    accept(dep: string, cb: (mod: any) => void): void
+    accept(deps: readonly string[], cb: (mods: any[]) => void): void
 
     /**
      * @deprecated
      */
-    acceptDeps(): never;
+    acceptDeps(): never
 
-    dispose(cb: (data: any) => void): void;
-    decline(): void;
-    invalidate(): void;
+    dispose(cb: (data: any) => void): void
+    decline(): void
+    invalidate(): void
 
     on: {
-      (event: 'vite:beforeUpdate', cb: (payload: import('./hmrPayload').UpdatePayload) => void): void;
-      (event: 'vite:beforePrune', cb: (payload: import('./hmrPayload').PrunePayload) => void): void;
-      (event: 'vite:beforeFullReload', cb: (payload: import('./hmrPayload').FullReloadPayload) => void): void;
-      (event: 'vite:error', cb: (payload: import('./hmrPayload').ErrorPayload) => void): void;
-      (event: import('./customEvent').CustomEventName, cb: (data: any) => void): void;
-    };
-  };
+      (
+        event: 'vite:beforeUpdate',
+        cb: (payload: import('./hmrPayload').UpdatePayload) => void
+      ): void
+      (
+        event: 'vite:beforePrune',
+        cb: (payload: import('./hmrPayload').PrunePayload) => void
+      ): void
+      (
+        event: 'vite:beforeFullReload',
+        cb: (payload: import('./hmrPayload').FullReloadPayload) => void
+      ): void
+      (
+        event: 'vite:error',
+        cb: (payload: import('./hmrPayload').ErrorPayload) => void
+      ): void
+      (
+        event: import('./customEvent').CustomEventName,
+        cb: (data: any) => void
+      ): void
+    }
+  }
 
-  readonly env: ImportMetaEnv;
+  readonly env: ImportMetaEnv
 
   glob(pattern: string): Record<
     string,
     () => Promise<{
-      [key: string]: any;
+      [key: string]: any
     }>
-  >;
+  >
 
   globEager(pattern: string): Record<
     string,
     {
-      [key: string]: any;
+      [key: string]: any
     }
-  >;
+  >
 }
 
 interface ImportMetaEnv {
-  [key: string]: string | boolean | undefined;
-  BASE_URL: string;
-  MODE: string;
-  DEV: boolean;
-  PROD: boolean;
-  SSR: boolean;
+  [key: string]: string | boolean | undefined
+  BASE_URL: string
+  MODE: string
+  DEV: boolean
+  PROD: boolean
+  SSR: boolean
 }
diff --git a/packages/astro/vendor/vite/types/shims.d.ts b/packages/astro/vendor/vite/types/shims.d.ts
index 2944ce158..80a251b3f 100644
--- a/packages/astro/vendor/vite/types/shims.d.ts
+++ b/packages/astro/vendor/vite/types/shims.d.ts
@@ -1,102 +1,108 @@
 declare module 'connect' {
-  const connect: () => any;
-  export = connect;
+  const connect: () => any
+  export = connect
 }
 
 declare module 'cors' {
-  function cors(options: any): any;
-  export = cors;
+  function cors(options: any): any
+  export = cors
 }
 
 declare module 'selfsigned' {
-  export function generate(attrs: any, options: any, done?: any): any;
+  export function generate(attrs: any, options: any, done?: any): any
 }
 
 declare module 'http-proxy' {
-  const proxy: any;
-  export = proxy;
+  const proxy: any
+  export = proxy
 }
 
 declare module 'acorn-class-fields' {
-  const plugin: any;
-  export = plugin;
+  const plugin: any
+  export = plugin
 }
 
 declare module 'acorn-static-class-features' {
-  const plugin: any;
-  export default plugin;
+  const plugin: any
+  export default plugin
 }
 
 declare module 'connect-history-api-fallback' {
-  const plugin: any;
-  export = plugin;
+  const plugin: any
+  export = plugin
 }
 
 declare module 'launch-editor-middleware' {
-  const plugin: any;
-  export = plugin;
+  const plugin: any
+  export = plugin
 }
 
 declare module 'postcss-load-config' {
-  import { ProcessOptions, Plugin } from 'postcss';
+  import { ProcessOptions, Plugin } from 'postcss'
   function load(
     inline: any,
     root: string
   ): Promise<{
-    options: ProcessOptions;
-    plugins: Plugin[];
-  }>;
-  export = load;
+    options: ProcessOptions
+    plugins: Plugin[]
+  }>
+  export = load
 }
 
 declare module 'postcss-import' {
-  import { Plugin } from 'postcss';
-  const plugin: (options: { resolve: (id: string, basedir: string, importOptions: any) => string | string[] | Promise }) => Plugin;
-  export = plugin;
+  import { Plugin } from 'postcss'
+  const plugin: (options: {
+    resolve: (
+      id: string,
+      basedir: string,
+      importOptions: any
+    ) => string | string[] | Promise
+  }) => Plugin
+  export = plugin
 }
 
 declare module 'postcss-modules' {
-  import { Plugin } from 'postcss';
-  const plugin: (options: any) => Plugin;
-  export = plugin;
+  import { Plugin } from 'postcss'
+  const plugin: (options: any) => Plugin
+  export = plugin
 }
 
 declare module '@rollup/plugin-dynamic-import-vars' {
-  import { Plugin } from 'rollup';
+  import { Plugin } from 'rollup'
 
   interface Options {
-    include?: string | RegExp | (string | RegExp)[];
-    exclude?: string | RegExp | (string | RegExp)[];
-    warnOnError?: boolean;
+    include?: string | RegExp | (string | RegExp)[]
+    exclude?: string | RegExp | (string | RegExp)[]
+    warnOnError?: boolean
   }
 
-  const p: (o?: Options) => Plugin;
-  export default p;
+  const p: (o?: Options) => Plugin
+  export default p
 }
 
 declare module 'rollup-plugin-web-worker-loader' {
-  import { Plugin } from 'rollup';
+  import { Plugin } from 'rollup'
 
   interface Options {
-    targetPlatform?: string;
-    pattern?: RegExp;
-    extensions?: string[];
-    sourcemap?: boolean;
-    inline?: boolean;
+    targetPlatform?: string
+    pattern?: RegExp
+    extensions?: string[]
+    sourcemap?: boolean
+    inline?: boolean
   }
 
-  const p: (o?: Options) => Plugin;
-  export default p;
+  const p: (o?: Options) => Plugin
+  export default p
 }
 
 declare module 'minimatch' {
-  function match(path: string, pattern: string): boolean;
-  export default match;
+  function match(path: string, pattern: string): boolean
+  export default match
 }
 
 declare module 'compression' {
-  function compression(): any;
-  export default compression;
+  function compression(): any
+  export default compression
 }
 
 // LESS' types somewhat references this which doesn't make sense in Node,
diff --git a/packages/astro/vendor/vite/types/terser.d.ts b/packages/astro/vendor/vite/types/terser.d.ts
index 488b2253e..44c7398d5 100644
--- a/packages/astro/vendor/vite/types/terser.d.ts
+++ b/packages/astro/vendor/vite/types/terser.d.ts
@@ -35,102 +35,102 @@ SUCH DAMAGE.
 */
 
 export namespace Terser {
-  export type ECMA = 5 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020;
+  export type ECMA = 5 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020
 
   export interface ParseOptions {
-    bare_returns?: boolean;
-    ecma?: ECMA;
-    html5_comments?: boolean;
-    shebang?: boolean;
+    bare_returns?: boolean
+    ecma?: ECMA
+    html5_comments?: boolean
+    shebang?: boolean
   }
 
   export interface CompressOptions {
-    arguments?: boolean;
-    arrows?: boolean;
-    booleans_as_integers?: boolean;
-    booleans?: boolean;
-    collapse_vars?: boolean;
-    comparisons?: boolean;
-    computed_props?: boolean;
-    conditionals?: boolean;
-    dead_code?: boolean;
-    defaults?: boolean;
-    directives?: boolean;
-    drop_console?: boolean;
-    drop_debugger?: boolean;
-    ecma?: ECMA;
-    evaluate?: boolean;
-    expression?: boolean;
-    global_defs?: object;
-    hoist_funs?: boolean;
-    hoist_props?: boolean;
-    hoist_vars?: boolean;
-    ie8?: boolean;
-    if_return?: boolean;
-    inline?: boolean | InlineFunctions;
-    join_vars?: boolean;
-    keep_classnames?: boolean | RegExp;
-    keep_fargs?: boolean;
-    keep_fnames?: boolean | RegExp;
-    keep_infinity?: boolean;
-    loops?: boolean;
-    module?: boolean;
-    negate_iife?: boolean;
-    passes?: number;
-    properties?: boolean;
-    pure_funcs?: string[];
-    pure_getters?: boolean | 'strict';
-    reduce_funcs?: boolean;
-    reduce_vars?: boolean;
-    sequences?: boolean | number;
-    side_effects?: boolean;
-    switches?: boolean;
-    toplevel?: boolean;
-    top_retain?: null | string | string[] | RegExp;
-    typeofs?: boolean;
-    unsafe_arrows?: boolean;
-    unsafe?: boolean;
-    unsafe_comps?: boolean;
-    unsafe_Function?: boolean;
-    unsafe_math?: boolean;
-    unsafe_symbols?: boolean;
-    unsafe_methods?: boolean;
-    unsafe_proto?: boolean;
-    unsafe_regexp?: boolean;
-    unsafe_undefined?: boolean;
-    unused?: boolean;
+    arguments?: boolean
+    arrows?: boolean
+    booleans_as_integers?: boolean
+    booleans?: boolean
+    collapse_vars?: boolean
+    comparisons?: boolean
+    computed_props?: boolean
+    conditionals?: boolean
+    dead_code?: boolean
+    defaults?: boolean
+    directives?: boolean
+    drop_console?: boolean
+    drop_debugger?: boolean
+    ecma?: ECMA
+    evaluate?: boolean
+    expression?: boolean
+    global_defs?: object
+    hoist_funs?: boolean
+    hoist_props?: boolean
+    hoist_vars?: boolean
+    ie8?: boolean
+    if_return?: boolean
+    inline?: boolean | InlineFunctions
+    join_vars?: boolean
+    keep_classnames?: boolean | RegExp
+    keep_fargs?: boolean
+    keep_fnames?: boolean | RegExp
+    keep_infinity?: boolean
+    loops?: boolean
+    module?: boolean
+    negate_iife?: boolean
+    passes?: number
+    properties?: boolean
+    pure_funcs?: string[]
+    pure_getters?: boolean | 'strict'
+    reduce_funcs?: boolean
+    reduce_vars?: boolean
+    sequences?: boolean | number
+    side_effects?: boolean
+    switches?: boolean
+    toplevel?: boolean
+    top_retain?: null | string | string[] | RegExp
+    typeofs?: boolean
+    unsafe_arrows?: boolean
+    unsafe?: boolean
+    unsafe_comps?: boolean
+    unsafe_Function?: boolean
+    unsafe_math?: boolean
+    unsafe_symbols?: boolean
+    unsafe_methods?: boolean
+    unsafe_proto?: boolean
+    unsafe_regexp?: boolean
+    unsafe_undefined?: boolean
+    unused?: boolean
   }
 
   export enum InlineFunctions {
     Disabled = 0,
     SimpleFunctions = 1,
     WithArguments = 2,
-    WithArgumentsAndVariables = 3,
+    WithArgumentsAndVariables = 3
   }
 
   export interface MangleOptions {
-    eval?: boolean;
-    keep_classnames?: boolean | RegExp;
-    keep_fnames?: boolean | RegExp;
-    module?: boolean;
-    properties?: boolean | ManglePropertiesOptions;
-    reserved?: string[];
-    safari10?: boolean;
-    toplevel?: boolean;
+    eval?: boolean
+    keep_classnames?: boolean | RegExp
+    keep_fnames?: boolean | RegExp
+    module?: boolean
+    properties?: boolean | ManglePropertiesOptions
+    reserved?: string[]
+    safari10?: boolean
+    toplevel?: boolean
   }
 
   export interface ManglePropertiesOptions {
-    builtins?: boolean;
-    debug?: boolean;
-    keep_quoted?: boolean | 'strict';
-    regex?: RegExp | string;
-    reserved?: string[];
+    builtins?: boolean
+    debug?: boolean
+    keep_quoted?: boolean | 'strict'
+    regex?: RegExp | string
+    reserved?: string[]
   }
 
   export interface FormatOptions {
-    ascii_only?: boolean;
-    beautify?: boolean;
-    braces?: boolean;
+    ascii_only?: boolean
+    beautify?: boolean
+    braces?: boolean
     comments?:
       | boolean
       | 'all'
@@ -139,71 +139,71 @@ export namespace Terser {
       | ((
           node: any,
           comment: {
-            value: string;
-            type: 'comment1' | 'comment2' | 'comment3' | 'comment4';
-            pos: number;
-            line: number;
-            col: number;
+            value: string
+            type: 'comment1' | 'comment2' | 'comment3' | 'comment4'
+            pos: number
+            line: number
+            col: number
           }
-        ) => boolean);
-    ecma?: ECMA;
-    ie8?: boolean;
-    indent_level?: number;
-    indent_start?: number;
-    inline_script?: boolean;
-    keep_quoted_props?: boolean;
-    max_line_len?: number | false;
-    preamble?: string;
-    preserve_annotations?: boolean;
-    quote_keys?: boolean;
-    quote_style?: OutputQuoteStyle;
-    safari10?: boolean;
-    semicolons?: boolean;
-    shebang?: boolean;
-    shorthand?: boolean;
-    source_map?: SourceMapOptions;
-    webkit?: boolean;
-    width?: number;
-    wrap_iife?: boolean;
-    wrap_func_args?: boolean;
+        ) => boolean)
+    ecma?: ECMA
+    ie8?: boolean
+    indent_level?: number
+    indent_start?: number
+    inline_script?: boolean
+    keep_quoted_props?: boolean
+    max_line_len?: number | false
+    preamble?: string
+    preserve_annotations?: boolean
+    quote_keys?: boolean
+    quote_style?: OutputQuoteStyle
+    safari10?: boolean
+    semicolons?: boolean
+    shebang?: boolean
+    shorthand?: boolean
+    source_map?: SourceMapOptions
+    webkit?: boolean
+    width?: number
+    wrap_iife?: boolean
+    wrap_func_args?: boolean
   }
 
   export enum OutputQuoteStyle {
     PreferDouble = 0,
     AlwaysSingle = 1,
     AlwaysDouble = 2,
-    AlwaysOriginal = 3,
+    AlwaysOriginal = 3
   }
 
   export interface MinifyOptions {
-    compress?: boolean | CompressOptions;
-    ecma?: ECMA;
-    ie8?: boolean;
-    keep_classnames?: boolean | RegExp;
-    keep_fnames?: boolean | RegExp;
-    mangle?: boolean | MangleOptions;
-    module?: boolean;
-    nameCache?: object;
-    format?: FormatOptions;
+    compress?: boolean | CompressOptions
+    ecma?: ECMA
+    ie8?: boolean
+    keep_classnames?: boolean | RegExp
+    keep_fnames?: boolean | RegExp
+    mangle?: boolean | MangleOptions
+    module?: boolean
+    nameCache?: object
+    format?: FormatOptions
     /** @deprecated use format instead */
-    output?: FormatOptions;
-    parse?: ParseOptions;
-    safari10?: boolean;
-    sourceMap?: boolean | SourceMapOptions;
-    toplevel?: boolean;
+    output?: FormatOptions
+    parse?: ParseOptions
+    safari10?: boolean
+    sourceMap?: boolean | SourceMapOptions
+    toplevel?: boolean
   }
 
   export interface MinifyOutput {
-    code?: string;
-    map?: object | string;
+    code?: string
+    map?: object | string
   }
 
   export interface SourceMapOptions {
     /** Source map object, 'inline' or source map file content */
-    content?: object | string;
-    includeSources?: boolean;
-    filename?: string;
-    root?: string;
-    url?: string | 'inline';
+    content?: object | string
+    includeSources?: boolean
+    filename?: string
+    root?: string
+    url?: string | 'inline'
   }
 }
diff --git a/packages/astro/vendor/vite/types/ws.d.ts b/packages/astro/vendor/vite/types/ws.d.ts
index 0fb73c3b5..3a174f9df 100644
--- a/packages/astro/vendor/vite/types/ws.d.ts
+++ b/packages/astro/vendor/vite/types/ws.d.ts
@@ -14,144 +14,317 @@
 
 /// 
 
-import { EventEmitter } from 'events';
-import { Agent, ClientRequest, ClientRequestArgs, IncomingMessage, OutgoingHttpHeaders, Server as HTTPServer } from 'http';
-import { Server as HTTPSServer } from 'https';
-import { Socket } from 'net';
-import { Duplex, DuplexOptions } from 'stream';
-import { SecureContextOptions } from 'tls';
-import { URL } from 'url';
-import { ZlibOptions } from 'zlib';
+import { EventEmitter } from 'events'
+import {
+  Agent,
+  ClientRequest,
+  ClientRequestArgs,
+  IncomingMessage,
+  OutgoingHttpHeaders,
+  Server as HTTPServer
+} from 'http'
+import { Server as HTTPSServer } from 'https'
+import { Socket } from 'net'
+import { Duplex, DuplexOptions } from 'stream'
+import { SecureContextOptions } from 'tls'
+import { URL } from 'url'
+import { ZlibOptions } from 'zlib'
 
 export declare namespace WebSocket {
   // WebSocket socket.
   export class WebSocket extends EventEmitter {
     /** The connection is not yet open. */
-    static readonly CONNECTING: 0;
+    static readonly CONNECTING: 0
     /** The connection is open and ready to communicate. */
-    static readonly OPEN: 1;
+    static readonly OPEN: 1
     /** The connection is in the process of closing. */
-    static readonly CLOSING: 2;
+    static readonly CLOSING: 2
     /** The connection is closed. */
-    static readonly CLOSED: 3;
+    static readonly CLOSED: 3
 
-    binaryType: 'nodebuffer' | 'arraybuffer' | 'fragments';
-    readonly bufferedAmount: number;
-    readonly extensions: string;
-    readonly protocol: string;
+    binaryType: 'nodebuffer' | 'arraybuffer' | 'fragments'
+    readonly bufferedAmount: number
+    readonly extensions: string
+    readonly protocol: string
     /** The current state of the connection */
-    readonly readyState: typeof WebSocket.CONNECTING | typeof WebSocket.OPEN | typeof WebSocket.CLOSING | typeof WebSocket.CLOSED;
-    readonly url: string;
+    readonly readyState:
+      | typeof WebSocket.CONNECTING
+      | typeof WebSocket.OPEN
+      | typeof WebSocket.CLOSING
+      | typeof WebSocket.CLOSED
+    readonly url: string
 
     /** The connection is not yet open. */
-    readonly CONNECTING: 0;
+    readonly CONNECTING: 0
     /** The connection is open and ready to communicate. */
-    readonly OPEN: 1;
+    readonly OPEN: 1
     /** The connection is in the process of closing. */
-    readonly CLOSING: 2;
+    readonly CLOSING: 2
     /** The connection is closed. */
-    readonly CLOSED: 3;
+    readonly CLOSED: 3
 
-    onopen: (event: WebSocket.OpenEvent) => void;
-    onerror: (event: WebSocket.ErrorEvent) => void;
-    onclose: (event: WebSocket.CloseEvent) => void;
-    onmessage: (event: WebSocket.MessageEvent) => void;
+    onopen: (event: WebSocket.OpenEvent) => void
+    onerror: (event: WebSocket.ErrorEvent) => void
+    onclose: (event: WebSocket.CloseEvent) => void
+    onmessage: (event: WebSocket.MessageEvent) => void
 
-    constructor(address: string | URL, options?: WebSocket.ClientOptions | ClientRequestArgs);
-    constructor(address: string | URL, protocols?: string | string[], options?: WebSocket.ClientOptions | ClientRequestArgs);
+    constructor(
+      address: string | URL,
+      options?: WebSocket.ClientOptions | ClientRequestArgs
+    )
+    constructor(
+      address: string | URL,
+      protocols?: string | string[],
+      options?: WebSocket.ClientOptions | ClientRequestArgs
+    )
 
-    close(code?: number, data?: string): void;
-    ping(data?: any, mask?: boolean, cb?: (err: Error) => void): void;
-    pong(data?: any, mask?: boolean, cb?: (err: Error) => void): void;
-    send(data: any, cb?: (err?: Error) => void): void;
+    close(code?: number, data?: string): void
+    ping(data?: any, mask?: boolean, cb?: (err: Error) => void): void
+    pong(data?: any, mask?: boolean, cb?: (err: Error) => void): void
+    send(data: any, cb?: (err?: Error) => void): void
     send(
       data: any,
       options: {
-        mask?: boolean | undefined;
-        binary?: boolean | undefined;
-        compress?: boolean | undefined;
-        fin?: boolean | undefined;
+        mask?: boolean | undefined
+        binary?: boolean | undefined
+        compress?: boolean | undefined
+        fin?: boolean | undefined
       },
       cb?: (err?: Error) => void
-    ): void;
-    terminate(): void;
+    ): void
+    terminate(): void
 
     // HTML5 WebSocket events
-    addEventListener(method: 'message', cb: (event: { data: any; type: string; target: WebSocket }) => void, options?: WebSocket.EventListenerOptions): void;
-    addEventListener(method: 'close', cb: (event: { wasClean: boolean; code: number; reason: string; target: WebSocket }) => void, options?: WebSocket.EventListenerOptions): void;
-    addEventListener(method: 'error', cb: (event: { error: any; message: any; type: string; target: WebSocket }) => void, options?: WebSocket.EventListenerOptions): void;
-    addEventListener(method: 'open', cb: (event: { target: WebSocket }) => void, options?: WebSocket.EventListenerOptions): void;
-    addEventListener(method: string, listener: () => void, options?: WebSocket.EventListenerOptions): void;
+    addEventListener(
+      method: 'message',
+      cb: (event: { data: any; type: string; target: WebSocket }) => void,
+      options?: WebSocket.EventListenerOptions
+    ): void
+    addEventListener(
+      method: 'close',
+      cb: (event: {
+        wasClean: boolean
+        code: number
+        reason: string
+        target: WebSocket
+      }) => void,
+      options?: WebSocket.EventListenerOptions
+    ): void
+    addEventListener(
+      method: 'error',
+      cb: (event: {
+        error: any
+        message: any
+        type: string
+        target: WebSocket
+      }) => void,
+      options?: WebSocket.EventListenerOptions
+    ): void
+    addEventListener(
+      method: 'open',
+      cb: (event: { target: WebSocket }) => void,
+      options?: WebSocket.EventListenerOptions
+    ): void
+    addEventListener(
+      method: string,
+      listener: () => void,
+      options?: WebSocket.EventListenerOptions
+    ): void
 
-    removeEventListener(method: 'message', cb?: (event: { data: any; type: string; target: WebSocket }) => void): void;
-    removeEventListener(method: 'close', cb?: (event: { wasClean: boolean; code: number; reason: string; target: WebSocket }) => void): void;
-    removeEventListener(method: 'error', cb?: (event: { error: any; message: any; type: string; target: WebSocket }) => void): void;
-    removeEventListener(method: 'open', cb?: (event: { target: WebSocket }) => void): void;
-    removeEventListener(method: string, listener?: () => void): void;
+    removeEventListener(
+      method: 'message',
+      cb?: (event: { data: any; type: string; target: WebSocket }) => void
+    ): void
+    removeEventListener(
+      method: 'close',
+      cb?: (event: {
+        wasClean: boolean
+        code: number
+        reason: string
+        target: WebSocket
+      }) => void
+    ): void
+    removeEventListener(
+      method: 'error',
+      cb?: (event: {
+        error: any
+        message: any
+        type: string
+        target: WebSocket
+      }) => void
+    ): void
+    removeEventListener(
+      method: 'open',
+      cb?: (event: { target: WebSocket }) => void
+    ): void
+    removeEventListener(method: string, listener?: () => void): void
 
     // Events
-    on(event: 'close', listener: (this: WebSocket, code: number, reason: string) => void): this;
-    on(event: 'error', listener: (this: WebSocket, err: Error) => void): this;
-    on(event: 'upgrade', listener: (this: WebSocket, request: IncomingMessage) => void): this;
-    on(event: 'message', listener: (this: WebSocket, data: WebSocket.Data) => void): this;
-    on(event: 'open', listener: (this: WebSocket) => void): this;
-    on(event: 'ping' | 'pong', listener: (this: WebSocket, data: Buffer) => void): this;
-    on(event: 'unexpected-response', listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void): this;
-    on(event: string | symbol, listener: (this: WebSocket, ...args: any[]) => void): this;
+    on(
+      event: 'close',
+      listener: (this: WebSocket, code: number, reason: string) => void
+    ): this
+    on(event: 'error', listener: (this: WebSocket, err: Error) => void): this
+    on(
+      event: 'upgrade',
+      listener: (this: WebSocket, request: IncomingMessage) => void
+    ): this
+    on(
+      event: 'message',
+      listener: (this: WebSocket, data: WebSocket.Data) => void
+    ): this
+    on(event: 'open', listener: (this: WebSocket) => void): this
+    on(
+      event: 'ping' | 'pong',
+      listener: (this: WebSocket, data: Buffer) => void
+    ): this
+    on(
+      event: 'unexpected-response',
+      listener: (
+        this: WebSocket,
+        request: ClientRequest,
+        response: IncomingMessage
+      ) => void
+    ): this
+    on(
+      event: string | symbol,
+      listener: (this: WebSocket, ...args: any[]) => void
+    ): this
 
-    once(event: 'close', listener: (this: WebSocket, code: number, reason: string) => void): this;
-    once(event: 'error', listener: (this: WebSocket, err: Error) => void): this;
-    once(event: 'upgrade', listener: (this: WebSocket, request: IncomingMessage) => void): this;
-    once(event: 'message', listener: (this: WebSocket, data: WebSocket.Data) => void): this;
-    once(event: 'open', listener: (this: WebSocket) => void): this;
-    once(event: 'ping' | 'pong', listener: (this: WebSocket, data: Buffer) => void): this;
-    once(event: 'unexpected-response', listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void): this;
-    once(event: string | symbol, listener: (this: WebSocket, ...args: any[]) => void): this;
+    once(
+      event: 'close',
+      listener: (this: WebSocket, code: number, reason: string) => void
+    ): this
+    once(event: 'error', listener: (this: WebSocket, err: Error) => void): this
+    once(
+      event: 'upgrade',
+      listener: (this: WebSocket, request: IncomingMessage) => void
+    ): this
+    once(
+      event: 'message',
+      listener: (this: WebSocket, data: WebSocket.Data) => void
+    ): this
+    once(event: 'open', listener: (this: WebSocket) => void): this
+    once(
+      event: 'ping' | 'pong',
+      listener: (this: WebSocket, data: Buffer) => void
+    ): this
+    once(
+      event: 'unexpected-response',
+      listener: (
+        this: WebSocket,
+        request: ClientRequest,
+        response: IncomingMessage
+      ) => void
+    ): this
+    once(
+      event: string | symbol,
+      listener: (this: WebSocket, ...args: any[]) => void
+    ): this
 
-    off(event: 'close', listener: (this: WebSocket, code: number, reason: string) => void): this;
-    off(event: 'error', listener: (this: WebSocket, err: Error) => void): this;
-    off(event: 'upgrade', listener: (this: WebSocket, request: IncomingMessage) => void): this;
-    off(event: 'message', listener: (this: WebSocket, data: WebSocket.Data) => void): this;
-    off(event: 'open', listener: (this: WebSocket) => void): this;
-    off(event: 'ping' | 'pong', listener: (this: WebSocket, data: Buffer) => void): this;
-    off(event: 'unexpected-response', listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void): this;
-    off(event: string | symbol, listener: (this: WebSocket, ...args: any[]) => void): this;
+    off(
+      event: 'close',
+      listener: (this: WebSocket, code: number, reason: string) => void
+    ): this
+    off(event: 'error', listener: (this: WebSocket, err: Error) => void): this
+    off(
+      event: 'upgrade',
+      listener: (this: WebSocket, request: IncomingMessage) => void
+    ): this
+    off(
+      event: 'message',
+      listener: (this: WebSocket, data: WebSocket.Data) => void
+    ): this
+    off(event: 'open', listener: (this: WebSocket) => void): this
+    off(
+      event: 'ping' | 'pong',
+      listener: (this: WebSocket, data: Buffer) => void
+    ): this
+    off(
+      event: 'unexpected-response',
+      listener: (
+        this: WebSocket,
+        request: ClientRequest,
+        response: IncomingMessage
+      ) => void
+    ): this
+    off(
+      event: string | symbol,
+      listener: (this: WebSocket, ...args: any[]) => void
+    ): this
 
-    addListener(event: 'close', listener: (code: number, message: string) => void): this;
-    addListener(event: 'error', listener: (err: Error) => void): this;
-    addListener(event: 'upgrade', listener: (request: IncomingMessage) => void): this;
-    addListener(event: 'message', listener: (data: WebSocket.Data) => void): this;
-    addListener(event: 'open', listener: () => void): this;
-    addListener(event: 'ping' | 'pong', listener: (data: Buffer) => void): this;
-    addListener(event: 'unexpected-response', listener: (request: ClientRequest, response: IncomingMessage) => void): this;
-    addListener(event: string | symbol, listener: (...args: any[]) => void): this;
+    addListener(
+      event: 'close',
+      listener: (code: number, message: string) => void
+    ): this
+    addListener(event: 'error', listener: (err: Error) => void): this
+    addListener(
+      event: 'upgrade',
+      listener: (request: IncomingMessage) => void
+    ): this
+    addListener(
+      event: 'message',
+      listener: (data: WebSocket.Data) => void
+    ): this
+    addListener(event: 'open', listener: () => void): this
+    addListener(event: 'ping' | 'pong', listener: (data: Buffer) => void): this
+    addListener(
+      event: 'unexpected-response',
+      listener: (request: ClientRequest, response: IncomingMessage) => void
+    ): this
+    addListener(
+      event: string | symbol,
+      listener: (...args: any[]) => void
+    ): this
 
-    removeListener(event: 'close', listener: (code: number, message: string) => void): this;
-    removeListener(event: 'error', listener: (err: Error) => void): this;
-    removeListener(event: 'upgrade', listener: (request: IncomingMessage) => void): this;
-    removeListener(event: 'message', listener: (data: WebSocket.Data) => void): this;
-    removeListener(event: 'open', listener: () => void): this;
-    removeListener(event: 'ping' | 'pong', listener: (data: Buffer) => void): this;
-    removeListener(event: 'unexpected-response', listener: (request: ClientRequest, response: IncomingMessage) => void): this;
-    removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
+    removeListener(
+      event: 'close',
+      listener: (code: number, message: string) => void
+    ): this
+    removeListener(event: 'error', listener: (err: Error) => void): this
+    removeListener(
+      event: 'upgrade',
+      listener: (request: IncomingMessage) => void
+    ): this
+    removeListener(
+      event: 'message',
+      listener: (data: WebSocket.Data) => void
+    ): this
+    removeListener(event: 'open', listener: () => void): this
+    removeListener(
+      event: 'ping' | 'pong',
+      listener: (data: Buffer) => void
+    ): this
+    removeListener(
+      event: 'unexpected-response',
+      listener: (request: ClientRequest, response: IncomingMessage) => void
+    ): this
+    removeListener(
+      event: string | symbol,
+      listener: (...args: any[]) => void
+    ): this
   }
 
   /**
    * Data represents the message payload received over the WebSocket.
    */
-  type Data = string | Buffer | ArrayBuffer | Buffer[];
+  type Data = string | Buffer | ArrayBuffer | Buffer[]
 
   /**
    * CertMeta represents the accepted types for certificate & key data.
    */
-  type CertMeta = string | string[] | Buffer | Buffer[];
+  type CertMeta = string | string[] | Buffer | Buffer[]
 
   /**
    * VerifyClientCallbackSync is a synchronous callback used to inspect the
    * incoming message. The return value (boolean) of the function determines
    * whether or not to accept the handshake.
    */
-  type VerifyClientCallbackSync = (info: { origin: string; secure: boolean; req: IncomingMessage }) => boolean;
+  type VerifyClientCallbackSync = (info: {
+    origin: string
+    secure: boolean
+    req: IncomingMessage
+  }) => boolean
 
   /**
    * VerifyClientCallbackAsync is an asynchronous callback used to inspect the
@@ -160,145 +333,200 @@ export declare namespace WebSocket {
    */
   type VerifyClientCallbackAsync = (
     info: { origin: string; secure: boolean; req: IncomingMessage },
-    callback: (res: boolean, code?: number, message?: string, headers?: OutgoingHttpHeaders) => void
-  ) => void;
+    callback: (
+      res: boolean,
+      code?: number,
+      message?: string,
+      headers?: OutgoingHttpHeaders
+    ) => void
+  ) => void
 
   interface ClientOptions extends SecureContextOptions {
-    protocol?: string | undefined;
-    followRedirects?: boolean | undefined;
-    handshakeTimeout?: number | undefined;
-    maxRedirects?: number | undefined;
-    perMessageDeflate?: boolean | PerMessageDeflateOptions | undefined;
-    localAddress?: string | undefined;
-    protocolVersion?: number | undefined;
-    headers?: { [key: string]: string } | undefined;
-    origin?: string | undefined;
-    agent?: Agent | undefined;
-    host?: string | undefined;
-    family?: number | undefined;
-    checkServerIdentity?(servername: string, cert: CertMeta): boolean;
-    rejectUnauthorized?: boolean | undefined;
-    maxPayload?: number | undefined;
+    protocol?: string | undefined
+    followRedirects?: boolean | undefined
+    handshakeTimeout?: number | undefined
+    maxRedirects?: number | undefined
+    perMessageDeflate?: boolean | PerMessageDeflateOptions | undefined
+    localAddress?: string | undefined
+    protocolVersion?: number | undefined
+    headers?: { [key: string]: string } | undefined
+    origin?: string | undefined
+    agent?: Agent | undefined
+    host?: string | undefined
+    family?: number | undefined
+    checkServerIdentity?(servername: string, cert: CertMeta): boolean
+    rejectUnauthorized?: boolean | undefined
+    maxPayload?: number | undefined
   }
 
   interface PerMessageDeflateOptions {
-    serverNoContextTakeover?: boolean | undefined;
-    clientNoContextTakeover?: boolean | undefined;
-    serverMaxWindowBits?: number | undefined;
-    clientMaxWindowBits?: number | undefined;
+    serverNoContextTakeover?: boolean | undefined
+    clientNoContextTakeover?: boolean | undefined
+    serverMaxWindowBits?: number | undefined
+    clientMaxWindowBits?: number | undefined
     zlibDeflateOptions?:
       | {
-          flush?: number | undefined;
-          finishFlush?: number | undefined;
-          chunkSize?: number | undefined;
-          windowBits?: number | undefined;
-          level?: number | undefined;
-          memLevel?: number | undefined;
-          strategy?: number | undefined;
-          dictionary?: Buffer | Buffer[] | DataView | undefined;
-          info?: boolean | undefined;
+          flush?: number | undefined
+          finishFlush?: number | undefined
+          chunkSize?: number | undefined
+          windowBits?: number | undefined
+          level?: number | undefined
+          memLevel?: number | undefined
+          strategy?: number | undefined
+          dictionary?: Buffer | Buffer[] | DataView | undefined
+          info?: boolean | undefined
         }
-      | undefined;
-    zlibInflateOptions?: ZlibOptions | undefined;
-    threshold?: number | undefined;
-    concurrencyLimit?: number | undefined;
+      | undefined
+    zlibInflateOptions?: ZlibOptions | undefined
+    threshold?: number | undefined
+    concurrencyLimit?: number | undefined
   }
 
   interface OpenEvent {
-    type: string;
-    target: WebSocket;
+    type: string
+    target: WebSocket
   }
 
   interface ErrorEvent {
-    error: any;
-    message: string;
-    type: string;
-    target: WebSocket;
+    error: any
+    message: string
+    type: string
+    target: WebSocket
   }
 
   interface CloseEvent {
-    wasClean: boolean;
-    code: number;
-    reason: string;
-    type: string;
-    target: WebSocket;
+    wasClean: boolean
+    code: number
+    reason: string
+    type: string
+    target: WebSocket
   }
 
   interface MessageEvent {
-    data: Data;
-    type: string;
-    target: WebSocket;
+    data: Data
+    type: string
+    target: WebSocket
   }
 
   interface EventListenerOptions {
-    once?: boolean | undefined;
+    once?: boolean | undefined
   }
 
   interface ServerOptions {
-    host?: string | undefined;
-    port?: number | undefined;
-    backlog?: number | undefined;
-    server?: HTTPServer | HTTPSServer | undefined;
-    verifyClient?: VerifyClientCallbackAsync | VerifyClientCallbackSync | undefined;
-    handleProtocols?: any;
-    path?: string | undefined;
-    noServer?: boolean | undefined;
-    clientTracking?: boolean | undefined;
-    perMessageDeflate?: boolean | PerMessageDeflateOptions | undefined;
-    maxPayload?: number | undefined;
+    host?: string | undefined
+    port?: number | undefined
+    backlog?: number | undefined
+    server?: HTTPServer | HTTPSServer | undefined
+    verifyClient?:
+      | VerifyClientCallbackAsync
+      | VerifyClientCallbackSync
+      | undefined
+    handleProtocols?: any
+    path?: string | undefined
+    noServer?: boolean | undefined
+    clientTracking?: boolean | undefined
+    perMessageDeflate?: boolean | PerMessageDeflateOptions | undefined
+    maxPayload?: number | undefined
   }
 
   interface AddressInfo {
-    address: string;
-    family: string;
-    port: number;
+    address: string
+    family: string
+    port: number
   }
 
   // WebSocket Server
   export class Server extends EventEmitter {
-    options: ServerOptions;
-    path: string;
-    clients: Set;
+    options: ServerOptions
+    path: string
+    clients: Set
 
-    constructor(options?: ServerOptions, callback?: () => void);
+    constructor(options?: ServerOptions, callback?: () => void)
 
-    address(): AddressInfo | string;
-    close(cb?: (err?: Error) => void): void;
-    handleUpgrade(request: IncomingMessage, socket: Socket, upgradeHead: Buffer, callback: (client: WebSocket, request: IncomingMessage) => void): void;
-    shouldHandle(request: IncomingMessage): boolean | Promise;
+    address(): AddressInfo | string
+    close(cb?: (err?: Error) => void): void
+    handleUpgrade(
+      request: IncomingMessage,
+      socket: Socket,
+      upgradeHead: Buffer,
+      callback: (client: WebSocket, request: IncomingMessage) => void
+    ): void
+    shouldHandle(request: IncomingMessage): boolean | Promise
 
     // Events
-    on(event: 'connection', cb: (this: Server, socket: WebSocket, request: IncomingMessage) => void): this;
-    on(event: 'error', cb: (this: Server, error: Error) => void): this;
-    on(event: 'headers', cb: (this: Server, headers: string[], request: IncomingMessage) => void): this;
-    on(event: 'close' | 'listening', cb: (this: Server) => void): this;
-    on(event: string | symbol, listener: (this: Server, ...args: any[]) => void): this;
+    on(
+      event: 'connection',
+      cb: (this: Server, socket: WebSocket, request: IncomingMessage) => void
+    ): this
+    on(event: 'error', cb: (this: Server, error: Error) => void): this
+    on(
+      event: 'headers',
+      cb: (this: Server, headers: string[], request: IncomingMessage) => void
+    ): this
+    on(event: 'close' | 'listening', cb: (this: Server) => void): this
+    on(
+      event: string | symbol,
+      listener: (this: Server, ...args: any[]) => void
+    ): this
 
-    once(event: 'connection', cb: (this: Server, socket: WebSocket, request: IncomingMessage) => void): this;
-    once(event: 'error', cb: (this: Server, error: Error) => void): this;
-    once(event: 'headers', cb: (this: Server, headers: string[], request: IncomingMessage) => void): this;
-    once(event: 'close' | 'listening', cb: (this: Server) => void): this;
-    once(event: string | symbol, listener: (...args: any[]) => void): this;
+    once(
+      event: 'connection',
+      cb: (this: Server, socket: WebSocket, request: IncomingMessage) => void
+    ): this
+    once(event: 'error', cb: (this: Server, error: Error) => void): this
+    once(
+      event: 'headers',
+      cb: (this: Server, headers: string[], request: IncomingMessage) => void
+    ): this
+    once(event: 'close' | 'listening', cb: (this: Server) => void): this
+    once(event: string | symbol, listener: (...args: any[]) => void): this
 
-    off(event: 'connection', cb: (this: Server, socket: WebSocket, request: IncomingMessage) => void): this;
-    off(event: 'error', cb: (this: Server, error: Error) => void): this;
-    off(event: 'headers', cb: (this: Server, headers: string[], request: IncomingMessage) => void): this;
-    off(event: 'close' | 'listening', cb: (this: Server) => void): this;
-    off(event: string | symbol, listener: (this: Server, ...args: any[]) => void): this;
+    off(
+      event: 'connection',
+      cb: (this: Server, socket: WebSocket, request: IncomingMessage) => void
+    ): this
+    off(event: 'error', cb: (this: Server, error: Error) => void): this
+    off(
+      event: 'headers',
+      cb: (this: Server, headers: string[], request: IncomingMessage) => void
+    ): this
+    off(event: 'close' | 'listening', cb: (this: Server) => void): this
+    off(
+      event: string | symbol,
+      listener: (this: Server, ...args: any[]) => void
+    ): this
 
-    addListener(event: 'connection', cb: (client: WebSocket, request: IncomingMessage) => void): this;
-    addListener(event: 'error', cb: (err: Error) => void): this;
-    addListener(event: 'headers', cb: (headers: string[], request: IncomingMessage) => void): this;
-    addListener(event: 'close' | 'listening', cb: () => void): this;
-    addListener(event: string | symbol, listener: (...args: any[]) => void): this;
+    addListener(
+      event: 'connection',
+      cb: (client: WebSocket, request: IncomingMessage) => void
+    ): this
+    addListener(event: 'error', cb: (err: Error) => void): this
+    addListener(
+      event: 'headers',
+      cb: (headers: string[], request: IncomingMessage) => void
+    ): this
+    addListener(event: 'close' | 'listening', cb: () => void): this
+    addListener(
+      event: string | symbol,
+      listener: (...args: any[]) => void
+    ): this
 
-    removeListener(event: 'connection', cb: (client: WebSocket) => void): this;
-    removeListener(event: 'error', cb: (err: Error) => void): this;
-    removeListener(event: 'headers', cb: (headers: string[], request: IncomingMessage) => void): this;
-    removeListener(event: 'close' | 'listening', cb: () => void): this;
-    removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
+    removeListener(event: 'connection', cb: (client: WebSocket) => void): this
+    removeListener(event: 'error', cb: (err: Error) => void): this
+    removeListener(
+      event: 'headers',
+      cb: (headers: string[], request: IncomingMessage) => void
+    ): this
+    removeListener(event: 'close' | 'listening', cb: () => void): this
+    removeListener(
+      event: string | symbol,
+      listener: (...args: any[]) => void
+    ): this
   }
 
   // WebSocket stream
-  function createWebSocketStream(websocket: WebSocket, options?: DuplexOptions): Duplex;
+  function createWebSocketStream(
+    websocket: WebSocket,
+    options?: DuplexOptions
+  ): Duplex
 }
diff --git a/packages/markdown/remark/src/index.ts b/packages/markdown/remark/src/index.ts
index 5c707a4db..a5fb403d4 100644
--- a/packages/markdown/remark/src/index.ts
+++ b/packages/markdown/remark/src/index.ts
@@ -32,17 +32,17 @@ export const DEFAULT_REMARK_PLUGINS = [
   'remark-footnotes',
   // TODO: reenable smartypants!
   // '@silvenon/remark-smartypants'
-];
+]
 
 export const DEFAULT_REHYPE_PLUGINS = [
   // empty
-];
+]
 
 /** Shared utility for rendering markdown */
 export async function renderMarkdown(content: string, opts?: MarkdownRenderingOptions | null) {
   const { remarkPlugins = DEFAULT_REMARK_PLUGINS, rehypePlugins = DEFAULT_REHYPE_PLUGINS } = opts ?? {};
   const scopedClassName = opts?.$?.scopedClassName;
-  const mode = opts?.mode ?? 'mdx';
+  const mode = opts?.mode ?? "mdx";
   const isMDX = mode === 'mdx';
   const { headers, rehypeCollectHeaders } = createCollectHeaders();
 
@@ -52,7 +52,7 @@ export async function renderMarkdown(content: string, opts?: MarkdownRenderingOp
     .use(markdown)
     .use(isMDX ? [remarkJsx] : [])
     .use(isMDX ? [remarkExpressions] : [])
-    .use([remarkUnwrap]);
+    .use([remarkUnwrap])
 
   const loadedRemarkPlugins = await Promise.all(loadPlugins(remarkPlugins));
   const loadedRehypePlugins = await Promise.all(loadPlugins(rehypePlugins));
@@ -62,25 +62,28 @@ export async function renderMarkdown(content: string, opts?: MarkdownRenderingOp
   });
 
   if (scopedClassName) {
-    parser.use([scopedStyles(scopedClassName)]);
+     parser.use([scopedStyles(scopedClassName)]);
   }
 
   parser.use([remarkPrism(scopedClassName)]);
-  parser.use([[markdownToHtml as any, { allowDangerousHtml: true, passThrough: ['raw', 'mdxTextExpression', 'mdxJsxTextElement', 'mdxJsxFlowElement'] }]]);
+  parser.use([[markdownToHtml as any, { allowDangerousHtml: true, passThrough: ['raw', 'mdxTextExpression', 'mdxJsxTextElement', 'mdxJsxFlowElement']}]]);
 
   loadedRehypePlugins.forEach(([plugin, opts]) => {
     parser.use([[plugin, opts]]);
   });
-
+  
   parser
     .use(isMDX ? [rehypeJsx] : [])
     .use(isMDX ? [rehypeExpressions] : [])
     .use(isMDX ? [] : [rehypeRaw])
-    .use(rehypeIslands);
+    .use(rehypeIslands)
 
   let result: string;
   try {
-    const vfile = await parser.use([rehypeCollectHeaders]).use(rehypeStringify, { allowDangerousHtml: true }).process(content);
+    const vfile = await parser
+    .use([rehypeCollectHeaders])
+      .use(rehypeStringify, { allowDangerousHtml: true })
+      .process(content);
     result = vfile.toString();
   } catch (err) {
     console.error(err);
diff --git a/packages/markdown/remark/src/rehype-islands.ts b/packages/markdown/remark/src/rehype-islands.ts
index b98419cd4..099dc4d75 100644
--- a/packages/markdown/remark/src/rehype-islands.ts
+++ b/packages/markdown/remark/src/rehype-islands.ts
@@ -1,4 +1,4 @@
-import { SKIP, visit } from 'unist-util-visit';
+import {SKIP, visit} from 'unist-util-visit';
 
 // This fixes some confusing bugs coming from somewhere inside of our Markdown pipeline.
 // `unist`/`remark`/`rehype` (not sure) often generate malformed HTML inside of 
@@ -11,11 +11,11 @@ export default function rehypeIslands(): any {
       if (el.tagName == 'astro-root') {
         visit(el, 'text', (child, index, parent) => {
           if (child.type === 'text') {
-            // Sometimes comments can be trapped as text, which causes them to be escaped
+            // Sometimes comments can be trapped as text, which causes them to be escaped 
             // This casts them back to real HTML comments
             if (parent && child.value.indexOf('', '').trim() });
-              return [SKIP, index];
+              parent.children.splice(index, 1, { ...child, type: 'comment', value: child.value.replace('', '').trim()});
+              return [SKIP, index]
             }
             // For some reason `rehype` likes to inject extra linebreaks,
             // but React and Vue throw hydration errors when they see these!
@@ -24,7 +24,7 @@ export default function rehypeIslands(): any {
             child.value = child.value.replace(/\n+/g, '');
             return child;
           }
-        });
+        })
       }
     });
   };
diff --git a/packages/markdown/remark/src/rehype-jsx.ts b/packages/markdown/remark/src/rehype-jsx.ts
index 94632efed..c5270e2af 100644
--- a/packages/markdown/remark/src/rehype-jsx.ts
+++ b/packages/markdown/remark/src/rehype-jsx.ts
@@ -5,22 +5,22 @@ export default function rehypeJsx(): any {
   return function (node: any): any {
     return map(node, (child: any) => {
       if (child.type === 'element') {
-        return { ...child, tagName: `${child.tagName}` };
+        return { ...child, tagName: `${child.tagName}` }
       }
       if (MDX_ELEMENTS.has(child.type)) {
-        return {
+        return { 
           ...child,
           type: 'element',
           tagName: `${child.name}`,
           properties: child.attributes.reduce((acc: any[], entry: any) => {
             let attr = entry.value;
             if (attr && typeof attr === 'object') {
-              attr = `{${attr.value}}`;
+              attr = `{${attr.value}}`
             } else if (attr === null) {
-              attr = `{true}`;
+              attr = `{true}`
             }
             return Object.assign(acc, { [entry.name]: attr });
-          }, {}),
+          }, {})
         };
       }
       return child;
diff --git a/packages/markdown/remark/src/remark-prism.ts b/packages/markdown/remark/src/remark-prism.ts
index d7a4ff996..d8dd8d922 100644
--- a/packages/markdown/remark/src/remark-prism.ts
+++ b/packages/markdown/remark/src/remark-prism.ts
@@ -4,24 +4,26 @@ import { addAstro } from '@astrojs/prism';
 import loadLanguages from 'prismjs/components/index.js';
 const noVisit = new Set(['root', 'html', 'text']);
 
-const languageMap = new Map([['ts', 'typescript']]);
+const languageMap = new Map([
+  ['ts', 'typescript']
+]);
 
 function runHighlighter(lang: string, code: string) {
-  let classLanguage = `language-${lang}`;
+  let classLanguage = `language-${lang}`
 
   if (lang == null) {
     lang = 'plaintext';
   }
 
   const ensureLoaded = (lang: string) => {
-    if (lang && !Prism.languages[lang]) {
+    if(lang && !Prism.languages[lang]) {
       loadLanguages([lang]);
     }
   };
 
-  if (languageMap.has(lang)) {
+  if(languageMap.has(lang)) {
     ensureLoaded(languageMap.get(lang)!);
-  } else if (lang === 'astro') {
+  } else if(lang === 'astro') {
     ensureLoaded('typescript');
     addAstro(Prism);
   } else {
@@ -29,7 +31,7 @@ function runHighlighter(lang: string, code: string) {
     ensureLoaded(lang);
   }
 
-  if (lang && !Prism.languages[lang]) {
+  if(lang && !Prism.languages[lang]) {
     console.warn(`Unable to load the language: ${lang}`);
   }
 
@@ -46,25 +48,26 @@ type MaybeString = string | null | undefined;
 
 /**  */
 function transformer(className: MaybeString) {
-  return function (tree: any) {
+  return function(tree: any) {
     const visitor = (node: any) => {
-      let { lang, value } = node;
+      let {lang, value} = node;
       node.type = 'html';
 
       let { html, classLanguage } = runHighlighter(lang, value);
       let classes = [classLanguage];
-      if (className) {
+      if(className) {
         classes.push(className);
       }
       node.value = `
${html}
`; return node; }; - return visit(tree, 'code', visitor); - }; + return visit(tree, 'code', visitor) + } } + function plugin(className: MaybeString) { return transformer.bind(null, className); } -export default plugin; +export default plugin; \ No newline at end of file diff --git a/packages/markdown/remark/src/remark-slug.ts b/packages/markdown/remark/src/remark-slug.ts index 4454d1087..b7c9c29de 100644 --- a/packages/markdown/remark/src/remark-slug.ts +++ b/packages/markdown/remark/src/remark-slug.ts @@ -3,11 +3,11 @@ * @typedef {import('hast').Properties} Properties */ -import { toString } from 'mdast-util-to-string'; -import { visit } from 'unist-util-visit'; -import BananaSlug from 'github-slugger'; +import {toString} from 'mdast-util-to-string' +import {visit} from 'unist-util-visit' +import BananaSlug from 'github-slugger' -const slugs = new BananaSlug(); +const slugs = new BananaSlug() /** * Plugin to add anchors headings using GitHub’s algorithm. @@ -16,17 +16,19 @@ const slugs = new BananaSlug(); */ export default function remarkSlug() { return (tree: any) => { - slugs.reset(); + slugs.reset() visit(tree, (node) => { console.log(node); }); visit(tree, 'heading', (node) => { - const data = node.data || (node.data = {}); - const props = /** @type {Properties} */ data.hProperties || (data.hProperties = {}); - let id = props.id; - id = id ? slugs.slug(String(id), true) : slugs.slug(toString(node)); + const data = node.data || (node.data = {}) + const props = /** @type {Properties} */ ( + data.hProperties || (data.hProperties = {}) + ) + let id = props.id + id = id ? slugs.slug(String(id), true) : slugs.slug(toString(node)) data.id = id; props.id = id; - }); - }; + }) + } } diff --git a/packages/markdown/remark/src/remark-unwrap.ts b/packages/markdown/remark/src/remark-unwrap.ts index d6f3275ab..e43a57a0c 100644 --- a/packages/markdown/remark/src/remark-unwrap.ts +++ b/packages/markdown/remark/src/remark-unwrap.ts @@ -1,4 +1,4 @@ -import { visit, SKIP } from 'unist-util-visit'; +import {visit, SKIP} from 'unist-util-visit' // Remove the wrapping paragraph for islands export default function remarkUnwrap() { @@ -18,17 +18,21 @@ export default function remarkUnwrap() { insideAstroRoot = false; } astroRootNodes.add(node); - }); + }) visit(tree, 'paragraph', (node, index, parent) => { - if (parent && typeof index === 'number' && containsAstroRootNode(node)) { - parent.children.splice(index, 1, ...node.children); - return [SKIP, index]; + if ( + parent && + typeof index === 'number' && + containsAstroRootNode(node) + ) { + parent.children.splice(index, 1, ...node.children) + return [SKIP, index] } - }); - }; + }) + } function containsAstroRootNode(node: any) { - return node.children.map((child: any) => astroRootNodes.has(child)).reduce((all: boolean, v: boolean) => (all ? all : v), false); + return node.children.map((child: any) => astroRootNodes.has(child)).reduce((all: boolean, v: boolean) => all ? all : v, false) } } diff --git a/packages/markdown/remark/src/types.ts b/packages/markdown/remark/src/types.ts index 8ae7795d0..201e50931 100644 --- a/packages/markdown/remark/src/types.ts +++ b/packages/markdown/remark/src/types.ts @@ -4,7 +4,7 @@ export type UnifiedPluginImport = Promise<{ default: unified.Plugin }>; export type Plugin = string | [string, any] | UnifiedPluginImport | [UnifiedPluginImport, any]; export interface AstroMarkdownOptions { - mode?: 'md' | 'mdx'; + mode?: 'md'|'mdx'; remarkPlugins?: Plugin[]; rehypePlugins?: Plugin[]; } diff --git a/packages/renderers/renderer-lit/hydration-support.js b/packages/renderers/renderer-lit/hydration-support.js index 0c21646fb..a7508a6c1 100644 --- a/packages/renderers/renderer-lit/hydration-support.js +++ b/packages/renderers/renderer-lit/hydration-support.js @@ -1 +1 @@ -import 'lit/experimental-hydrate-support.js'; +import 'lit/experimental-hydrate-support.js'; \ No newline at end of file diff --git a/packages/renderers/renderer-lit/index.js b/packages/renderers/renderer-lit/index.js index f08c2fef8..5050618fd 100644 --- a/packages/renderers/renderer-lit/index.js +++ b/packages/renderers/renderer-lit/index.js @@ -20,7 +20,7 @@ export default { '@webcomponents/template-shadowroot/template-shadowroot.js', 'lit/experimental-hydrate-support.js', ], - exclude: ['@astrojs/renderer-lit/server.js'], + exclude: ['@astrojs/renderer-lit/server.js'] }, ssr: { external: [ diff --git a/packages/renderers/renderer-preact/compat/index.js b/packages/renderers/renderer-preact/compat/index.js index d88b598a7..f79998fa4 100644 --- a/packages/renderers/renderer-preact/compat/index.js +++ b/packages/renderers/renderer-preact/compat/index.js @@ -15,7 +15,7 @@ export default { return { alias: { react: 'preact/compat', - 'react-dom': 'preact/compat', + 'react-dom': 'preact/compat' }, resolve: { dedupe: ['react', 'react-dom'],