diff --git a/.changeset/violet-geckos-hang.md b/.changeset/violet-geckos-hang.md new file mode 100644 index 0000000..4fa8a11 --- /dev/null +++ b/.changeset/violet-geckos-hang.md @@ -0,0 +1,5 @@ +--- +"astro-remote": minor +--- + +Add support for custom Heading, CodeBlock, and CodeSpan components. Improve documentation. diff --git a/packages/astro-remote/README.md b/packages/astro-remote/README.md index b3be594..0a5cb68 100644 --- a/packages/astro-remote/README.md +++ b/packages/astro-remote/README.md @@ -1,3 +1,136 @@ # Astro Remote -Render (and customize) remote HTML or Markdown content with Astro +Render remote HTML or Markdown content in Astro with full control over the output. + +Powered by [`ultrahtml`](https://github.com/natemoo-re/ultrahtml) and [`marked`](https://github.com/markedjs/marked). + +## Rendering Remote Content + +The most basic function of `astro-remote` is to convert a string of HTML or Markdown to HTML. Use the `Markup` and `Markdown` components depending on your input. + +```astro +--- +import { Markup, Markdown } from 'astro-remote'; +const { html, markdown } = await fetch('http://my-site.com/api/v1/post').then(res => res.json()); +--- + + + +``` + +### Sanitization + +By default, all content will be sanitized with sensible defaults (`script` blocks are dropped). This can be controlled using the [`SanitizeOptions`](https://github.com/natemoo-re/ultrahtml/blob/71e723f6093abea2584c9ea3bfecc0ce68d02d8d/src/index.ts#L251-L268) available in `ultrahtml`. Set to `false` to disable sanitization. + +```astro +--- +import { Markdown } from 'astro-remote'; +const content = await fetch('http://my-site.com/api/v1/post').then(res => res.text()); +--- + + + +``` + +### Customization + +Both `Markup` and `Markdown` allow full control over the rendering of output. The `components` option allows you to replace a standard HTML element with a custom component. + +```astro +--- +import { Markdown } from 'astro-remote'; +import Title from '../components/Title.astro'; +const content = await fetch('http://my-site.com/api/v1/post').then(res => res.text()); +--- + + + +``` + +In addition to built-in HTML Elements, `Markdown` also supports a few custom components for convenience. + +#### `` + +The `Heading` component renders all `h1` through `h6` elements. It receives the following props: + +- `as`, the `h1` through `h6` tag +- `href`, a pre-generated, slugified `href` +- `text`, the text content of the children (for generating a custom slug) + +```astro +--- +import { Markdown } from 'astro-remote'; +import Heading from '../components/Heading.astro'; +const content = await fetch('http://my-site.com/api/v1/post').then(res => res.text()); +--- + + + +``` + +A sample `Heading` component might look something like this. + +```astro +--- +const { as: Component, href } = Astro.props; +--- + + +``` + +#### `` + +The `CodeBlock` component allows you customize the rendering of code blocks. It receives the following props: + +- `lang`, the language specified after the three backticks (defaults to `plaintext`) +- `code`, the raw code to be highlighted. **Be sure to escape the output!** +- `...props`, any other attributes passed to the three backticks. These should follow HTML attribute format (`name="value"`) + +A sample `CodeBlock` component might look something like this. + +```astro +--- +const { lang, code, ...props } = Astro.props; +const highlighted = await highlight(code, { lang }); +--- + +
+``` + +#### `` + +The `CodeSpan` component allows you customize the rendering of inline code spans. It receives the following props: + +- `code`, the value of the code span + +A sample `CodeSpan` component might look something like this. + +```astro +--- +const { code } = Astro.props; +--- + + +``` + +### Custom Components in Markdown + +If you'd like to allow custom components in Markdown, you can do so using a combination of the `sanitize` and `components` options. By default, sanitization removes components. + +Given the following markdown source: + +```markdown +# Hello world! + +It works! +``` + +```astro +--- +import { Markdown } from 'astro-remote'; +import MyCustomComponent from '../components/MyCustomComponent.astro'; +const content = await fetch('http://my-site.com/api/v1/post').then(res => res.text()); +--- + + +``` diff --git a/packages/astro-remote/lib/utils.ts b/packages/astro-remote/lib/utils.ts index d31a410..7195045 100644 --- a/packages/astro-remote/lib/utils.ts +++ b/packages/astro-remote/lib/utils.ts @@ -3,14 +3,20 @@ import { transform } from 'ultrahtml'; import { jsx as h } from 'astro/jsx-runtime'; import { renderJSX } from 'astro/runtime/server/jsx'; import { __unsafeHTML } from 'ultrahtml'; +import 'he'; -export function createComponentProxy(result, _components: Record) { +declare var he: any; + +export function createComponentProxy(result, _components: Record = {}) { const components = {}; for (const [key, value] of Object.entries(_components)) { if (typeof value === 'string') { components[key] = value; } else { components[key] = async (props, children) => { + if (key === 'CodeBlock' || key === 'CodeSpan') { + props.code = he.decode(props.code); + } const output = await renderJSX( result, h(value, { ...props, 'set:html': children.value }) @@ -48,7 +54,36 @@ export async function markdown( input: string, opts: HTMLOptions = {} ): Promise { + const renderer: any = {}; + if (opts.components) { + if ('Heading' in opts.components) { + renderer.heading = (children: string, level: number, raw: string, slugger) => { + const slug = slugger.slug(raw); + return `${children}` + } + } + if ('CodeBlock' in opts.components) { + renderer.code = (code: string, meta = '') => { + const info = meta.split(/\s+/g) ?? []; + const lang = info[0] ?? 'plaintext'; + const value = he.encode(code) + return `` + } + } + if ('CodeSpan' in opts.components) { + renderer.codespan = (code: string) => { + const value = he.encode(code) + return `${code}` + } + } + } + marked.use({ + gfm: true, + smartypants: true, + renderer + }) const content = await marked.parse(dedent(input)); + return transform(content, { sanitize: opts.sanitize, components: opts.components, diff --git a/packages/astro-remote/package.json b/packages/astro-remote/package.json index 348a5d6..067185c 100644 --- a/packages/astro-remote/package.json +++ b/packages/astro-remote/package.json @@ -35,10 +35,11 @@ }, "license": "MIT", "dependencies": { + "he": "^1.2.0", "marked": "^4.0.18", "ultrahtml": "^0.1.1" }, "devDependencies": { - "astro": "1.0.0-rc.7" + "astro": "1.3.0" } } diff --git a/packages/demo/package.json b/packages/demo/package.json index 563404e..ddf2229 100644 --- a/packages/demo/package.json +++ b/packages/demo/package.json @@ -10,9 +10,9 @@ "astro": "astro" }, "devDependencies": { - "astro": "^1.0.0-rc.7" + "astro": "^1.3.0" }, "dependencies": { - "astro-remote": "link:../astro-remote" + "astro-remote": "^0.1.0" } } diff --git a/packages/demo/src/components/CodeBlock.astro b/packages/demo/src/components/CodeBlock.astro new file mode 100644 index 0000000..354861e --- /dev/null +++ b/packages/demo/src/components/CodeBlock.astro @@ -0,0 +1,5 @@ +--- +const { lang, code, ...props } = Astro.props; +--- + +
diff --git a/packages/demo/src/components/CodeSpan.astro b/packages/demo/src/components/CodeSpan.astro new file mode 100644 index 0000000..0d6ae63 --- /dev/null +++ b/packages/demo/src/components/CodeSpan.astro @@ -0,0 +1,5 @@ +--- +const { code } = Astro.props; +--- + + diff --git a/packages/demo/src/components/Heading.astro b/packages/demo/src/components/Heading.astro new file mode 100644 index 0000000..f28da81 --- /dev/null +++ b/packages/demo/src/components/Heading.astro @@ -0,0 +1,11 @@ +--- +const { as: Component, href } = Astro.props; +--- + + + + diff --git a/packages/demo/src/components/Title.astro b/packages/demo/src/components/Title.astro deleted file mode 100644 index 14f74be..0000000 --- a/packages/demo/src/components/Title.astro +++ /dev/null @@ -1,7 +0,0 @@ -

- - diff --git a/packages/demo/src/pages/index.astro b/packages/demo/src/pages/index.astro index c901bd0..56b7001 100644 --- a/packages/demo/src/pages/index.astro +++ b/packages/demo/src/pages/index.astro @@ -1,26 +1,50 @@ --- -import { Markdown, Markup } from 'astro-remote'; -import Title from '../components/Title.astro'; +import { Markdown, Markup } from "astro-remote"; +import CodeSpan from "../components/CodeSpan.astro"; +import CodeBlock from "../components/CodeBlock.astro"; +import Heading from "../components/Heading.astro"; -const example = await fetch('https://example.com/').then(res => res.text()); -const readme = await fetch('https://raw.githubusercontent.com/natemoo-re/astro-remote/main/README.md').then(res => res.text()); +const example = await fetch("https://example.com/").then((res) => res.text()); +const readme = ` +# Hello \`world\` + +"Nice" + +\`inline\` + +\`\`\`html filename="cool" +
Hello world!
+\`\`\` +`; +// const readme = await fetch( +// "https://raw.githubusercontent.com/natemoo-re/astro-remote/main/packages/astro-remote/README.md" +// ).then((res) => res.text()); --- - - - - Astro - - -
-

Markup

- -
- -
-

Markdown

- -
- + + + + Astro + + +
+

Markup

+ +
+ +
+

Markdown

+ +
+ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 13b09a0..8e14465 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,23 +15,25 @@ importers: packages/astro-remote: specifiers: - astro: 1.0.0-rc.7 + astro: 1.3.0 + he: ^1.2.0 marked: ^4.0.18 ultrahtml: ^0.1.1 dependencies: + he: 1.2.0 marked: 4.0.18 ultrahtml: 0.1.1 devDependencies: - astro: 1.0.0-rc.7 + astro: 1.3.0 packages/demo: specifiers: - astro: ^1.0.0-rc.7 - astro-remote: link:../astro-remote + astro: ^1.3.0 + astro-remote: ^0.1.0 dependencies: astro-remote: link:../astro-remote devDependencies: - astro: 1.0.0-rc.7 + astro: 1.3.0 packages: @@ -43,17 +45,23 @@ packages: '@jridgewell/trace-mapping': 0.3.14 dev: true - /@astrojs/compiler/0.23.1: - resolution: {integrity: sha512-KsoDrASGwTKZoWXbjy8SlIeoDv7y1OfBJtHVLuPuzhConA8e0SZpGzFqIuVRfG4bhisSTptZLDQZ7oxwgPv2jA==} + /@astrojs/compiler/0.23.5: + resolution: {integrity: sha512-vBMPy9ok4iLapSyCCT1qsZ9dK7LkVFl9mObtLEmWiec9myGHS9h2kQY2xzPeFNJiWXUf9O6tSyQpQTy5As/p3g==} + dev: true + + /@astrojs/compiler/0.24.0: + resolution: {integrity: sha512-xZ81C/oMfExdF18I1Tyd2BKKzBqO+qYYctSy4iCwH4UWSo/4Y8A8MAzV1hG67uuE7hFRourSl6H5KUbhyChv/A==} dev: true - /@astrojs/language-server/0.20.3: - resolution: {integrity: sha512-MuzTsSpUjtmMXfrBThtZwgO39Jc+Bbl5hLevumkp01N/YCKE+Iipd3ELSdbk7+TPiuBV+/SKrVmaQPvJBnWPkA==} + /@astrojs/language-server/0.26.2: + resolution: {integrity: sha512-9nkfdd6CMXLDIJojnwbYu5XrYfOI+g63JlktOlpFCwFjFNpm1u0e/+pXXmj6Zs+PkSTo0kV1UM77dRKRS5OC1Q==} hasBin: true dependencies: '@vscode/emmet-helper': 2.8.4 + events: 3.3.0 + prettier: 2.7.1 + prettier-plugin-astro: 0.5.4 source-map: 0.7.4 - typescript: 4.6.4 vscode-css-languageservice: 6.0.1 vscode-html-languageservice: 5.0.1 vscode-languageserver: 8.0.2 @@ -63,14 +71,15 @@ packages: vscode-uri: 3.0.3 dev: true - /@astrojs/markdown-remark/0.14.1: - resolution: {integrity: sha512-u072l5Nvb7GGMIBXmm65+IakPoF3nQ0ICIrDyFolznUB6e51AEa0ZGdpZa1jiT5fugR1gZgFPPJGcwWlSadZJA==} + /@astrojs/markdown-remark/1.1.2: + resolution: {integrity: sha512-afZWKRX7HFq1DdXq1jsUiqYee67Ln0Qan0yNgjNP2Nht0dxYD6JAK40+uiptKiRmP73cQjAVLGh54sgrruBDwA==} dependencies: '@astrojs/micromark-extension-mdx-jsx': 1.0.3 - '@astrojs/prism': 0.7.0 + '@astrojs/prism': 1.0.1 acorn: 8.8.0 acorn-jsx: 5.3.2_acorn@8.8.0 github-slugger: 1.4.0 + hast-util-to-html: 8.0.3 mdast-util-mdx-expression: 1.3.0 mdast-util-mdx-jsx: 1.2.0 micromark-extension-mdx-expression: 1.0.3 @@ -82,7 +91,7 @@ packages: remark-parse: 10.0.1 remark-rehype: 10.1.0 remark-smartypants: 2.0.0 - shiki: 0.10.1 + shiki: 0.11.1 unified: 10.1.2 unist-util-map: 3.1.1 unist-util-visit: 4.1.0 @@ -105,15 +114,15 @@ packages: vfile-message: 3.1.2 dev: true - /@astrojs/prism/0.7.0: - resolution: {integrity: sha512-5gh4BL9BlgCKBru0crQI3Y7GQCCC389wLBy+0yPnfss/pA0rVgCupRnGcs3oinsRopymOlNblEDfJXdTbCWEtg==} + /@astrojs/prism/1.0.1: + resolution: {integrity: sha512-HxEFslvbv+cfOs51q/C7aMVFuW3EAGg0d1xXU/0e/QeScDzfrp5Ra4SOb8mV082SgENVjtVvet4zR84t3at4VQ==} engines: {node: ^14.18.0 || >=16.12.0} dependencies: prismjs: 1.28.0 dev: true - /@astrojs/telemetry/0.4.1: - resolution: {integrity: sha512-xssM9IxVQGQHPNfzNlmbaQyevnD5CjSFNEszdYEoJRgsN0yzkxjgGzzVZ4Toq+7gwM5oSO2/oxNWVbP9loHEKg==} + /@astrojs/telemetry/1.0.0: + resolution: {integrity: sha512-a8edSHK2CpWrGubLp2RR2D/uC9Paa614hQM/lS4In2lhmcCjaQA9ZyYT6l44peuDwUNt1V82DqXk3TFiDBWM8g==} engines: {node: ^14.18.0 || >=16.12.0} dependencies: ci-info: 3.3.2 @@ -128,8 +137,8 @@ packages: - supports-color dev: true - /@astrojs/webapi/0.12.0: - resolution: {integrity: sha512-rie5SYbvXVykKYBsNFnkUtDe7/0mGmrvj7Gg5pOKV34Cg/CrCJbvUSwH2oyCG2OLGtN2ttUOLvSgnVq3eipCsQ==} + /@astrojs/webapi/1.0.0: + resolution: {integrity: sha512-+klQ75oQbRdAMEbvAgrKE14hxh6GVHsQWZE4j/eJ2qhnvMSu7pw13MVQtFaAV96+pUkcYSjwWd1k+Oxoxkuo3g==} dependencies: node-fetch: 3.2.10 dev: true @@ -585,6 +594,15 @@ packages: resolution: {integrity: sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==} dev: true + /@esbuild/android-arm/0.15.9: + resolution: {integrity: sha512-VZPy/ETF3fBG5PiinIkA0W/tlsvlEgJccyN2DzWZEl0DlVKRbu91PvY2D6Lxgluj4w9QtYHjOWjAT44C+oQ+EQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64/0.14.53: resolution: {integrity: sha512-W2dAL6Bnyn4xa/QRSU3ilIK4EzD5wgYXKXJiS1HDF5vU3675qc2bvFyLwbUcdmssDveyndy7FbitrCoiV/eMLg==} engines: {node: '>=12'} @@ -594,6 +612,15 @@ packages: dev: true optional: true + /@esbuild/linux-loong64/0.15.9: + resolution: {integrity: sha512-O+NfmkfRrb3uSsTa4jE3WApidSe3N5++fyOVGP1SmMZi4A3BZELkhUUvj5hwmMuNdlpzAZ8iAPz2vmcR7DCFQA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@jridgewell/gen-mapping/0.1.1: resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} engines: {node: '>=6.0.0'} @@ -674,23 +701,35 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.13.0 + /@pkgr/utils/2.3.1: + resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + is-glob: 4.0.3 + open: 8.4.0 + picocolors: 1.0.0 + tiny-glob: 0.2.9 + tslib: 2.4.0 + dev: true + /@polka/url/1.0.0-next.21: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: true - /@proload/core/0.3.2: - resolution: {integrity: sha512-4ga4HpS0ieVYWVMS+F62W++6SNACBu0lkw8snw3tEdH6AeqZu8i8262n3I81jWAWXVcg3sMfhb+kBexrfGrTUQ==} + /@proload/core/0.3.3: + resolution: {integrity: sha512-7dAFWsIK84C90AMl24+N/ProHKm4iw0akcnoKjRvbfHifJZBLhaDsDus1QJmhG12lXj4e/uB/8mB/0aduCW+NQ==} dependencies: deepmerge: 4.2.2 escalade: 3.1.1 dev: true - /@proload/plugin-tsm/0.2.1_@proload+core@0.3.2: + /@proload/plugin-tsm/0.2.1_@proload+core@0.3.3: resolution: {integrity: sha512-Ex1sL2BxU+g8MHdAdq9SZKz+pU34o8Zcl9PHWo2WaG9hrnlZme607PU6gnpoAYsDBpHX327+eu60wWUk+d/b+A==} peerDependencies: '@proload/core': ^0.3.2 dependencies: - '@proload/core': 0.3.2 + '@proload/core': 0.3.3 tsm: 2.2.2 dev: true @@ -700,6 +739,35 @@ packages: '@types/estree': 1.0.0 dev: true + /@types/babel__core/7.1.19: + resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} + dependencies: + '@babel/parser': 7.18.11 + '@babel/types': 7.18.10 + '@types/babel__generator': 7.6.4 + '@types/babel__template': 7.4.1 + '@types/babel__traverse': 7.18.2 + dev: true + + /@types/babel__generator/7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + dependencies: + '@babel/types': 7.18.10 + dev: true + + /@types/babel__template/7.4.1: + resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + dependencies: + '@babel/parser': 7.18.11 + '@babel/types': 7.18.10 + dev: true + + /@types/babel__traverse/7.18.2: + resolution: {integrity: sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==} + dependencies: + '@babel/types': 7.18.10 + dev: true + /@types/debug/4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: @@ -728,6 +796,10 @@ packages: '@types/unist': 2.0.6 dev: true + /@types/html-escaper/3.0.0: + resolution: {integrity: sha512-OcJcvP3Yk8mjYwf/IdXZtTE1tb/u0WF0qa29ER07ZHCYUBZXSN29Z1mBS+/96+kNMGTFUAbSz9X+pHmHpZrTCw==} + dev: true + /@types/is-ci/3.0.0: resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} dependencies: @@ -786,6 +858,10 @@ packages: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: true + /@types/yargs-parser/21.0.0: + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + dev: true + /@vscode/emmet-helper/2.8.4: resolution: {integrity: sha512-lUki5QLS47bz/U8IlG9VQ+1lfxMtxMZENmU5nu4Z71eOD5j9FK0SmYGL5NiVJg9WBWeAU0VxRADMY2Qpq7BfVg==} dependencies: @@ -884,25 +960,27 @@ packages: tslib: 2.4.0 dev: true - /astro/1.0.0-rc.7: - resolution: {integrity: sha512-FXUvSO2A40m7A7rMf3811yh5XA9X4qaJWlDg4m6TL9PkTIFfp9nyAl3EuX7r8rPmNTJ7EYevV0bDLk8ETWtN9w==} + /astro/1.3.0: + resolution: {integrity: sha512-cWBtLkkUcj38J0knrTaZvyoVFJxjOAWPRbECIXFxvGZ/ASNr+FNumeUk/u3uAGIF0pbqEgc+5zAvmPoe0pCd9w==} engines: {node: ^14.18.0 || >=16.12.0, npm: '>=6.14.0'} hasBin: true dependencies: - '@astrojs/compiler': 0.23.1 - '@astrojs/language-server': 0.20.3 - '@astrojs/markdown-remark': 0.14.1 - '@astrojs/telemetry': 0.4.1 - '@astrojs/webapi': 0.12.0 + '@astrojs/compiler': 0.24.0 + '@astrojs/language-server': 0.26.2 + '@astrojs/markdown-remark': 1.1.2 + '@astrojs/telemetry': 1.0.0 + '@astrojs/webapi': 1.0.0 '@babel/core': 7.18.10 '@babel/generator': 7.18.12 '@babel/parser': 7.18.11 '@babel/plugin-transform-react-jsx': 7.18.10_@babel+core@7.18.10 '@babel/traverse': 7.18.11 '@babel/types': 7.18.10 - '@proload/core': 0.3.2 - '@proload/plugin-tsm': 0.2.1_@proload+core@0.3.2 - ast-types: 0.14.2 + '@proload/core': 0.3.3 + '@proload/plugin-tsm': 0.2.1_@proload+core@0.3.3 + '@types/babel__core': 7.1.19 + '@types/html-escaper': 3.0.0 + '@types/yargs-parser': 21.0.0 boxen: 6.2.1 ci-info: 3.3.2 common-ancestor-path: 1.0.1 @@ -930,18 +1008,19 @@ packages: recast: 0.20.5 rehype: 12.0.1 resolve: 1.22.1 - rollup: 2.77.2 + rollup: 2.78.1 semver: 7.3.7 - shiki: 0.10.1 + shiki: 0.11.1 sirv: 2.0.2 slash: 4.0.0 string-width: 5.1.2 strip-ansi: 7.0.1 supports-esm: 1.0.0 tsconfig-resolver: 3.0.1 + typescript: 4.6.4 unist-util-visit: 4.1.0 vfile: 5.3.4 - vite: 3.0.4 + vite: 3.1.3 yargs-parser: 21.1.1 zod: 3.17.10 transitivePeerDependencies: @@ -1254,6 +1333,11 @@ packages: dependencies: clone: 1.0.4 + /define-lazy-prop/2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + dev: true + /define-properties/1.1.4: resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} engines: {node: '>= 0.4'} @@ -1394,6 +1478,15 @@ packages: dev: true optional: true + /esbuild-android-64/0.15.9: + resolution: {integrity: sha512-HQCX7FJn9T4kxZQkhPjNZC7tBWZqJvhlLHPU2SFzrQB/7nDXjmTIFpFTjt7Bd1uFpeXmuwf5h5fZm+x/hLnhbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /esbuild-android-arm64/0.14.53: resolution: {integrity: sha512-PC7KaF1v0h/nWpvlU1UMN7dzB54cBH8qSsm7S9mkwFA1BXpaEOufCg8hdoEI1jep0KeO/rjZVWrsH8+q28T77A==} engines: {node: '>=12'} @@ -1403,6 +1496,15 @@ packages: dev: true optional: true + /esbuild-android-arm64/0.15.9: + resolution: {integrity: sha512-E6zbLfqbFVCNEKircSHnPiSTsm3fCRxeIMPfrkS33tFjIAoXtwegQfVZqMGR0FlsvVxp2NEDOUz+WW48COCjSg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /esbuild-darwin-64/0.14.53: resolution: {integrity: sha512-gE7P5wlnkX4d4PKvLBUgmhZXvL7lzGRLri17/+CmmCzfncIgq8lOBvxGMiQ4xazplhxq+72TEohyFMZLFxuWvg==} engines: {node: '>=12'} @@ -1412,6 +1514,15 @@ packages: dev: true optional: true + /esbuild-darwin-64/0.15.9: + resolution: {integrity: sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /esbuild-darwin-arm64/0.14.53: resolution: {integrity: sha512-otJwDU3hnI15Q98PX4MJbknSZ/WSR1I45il7gcxcECXzfN4Mrpft5hBDHXNRnCh+5858uPXBXA1Vaz2jVWLaIA==} engines: {node: '>=12'} @@ -1421,6 +1532,15 @@ packages: dev: true optional: true + /esbuild-darwin-arm64/0.15.9: + resolution: {integrity: sha512-VZIMlcRN29yg/sv7DsDwN+OeufCcoTNaTl3Vnav7dL/nvsApD7uvhVRbgyMzv0zU/PP0xRhhIpTyc7lxEzHGSw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /esbuild-freebsd-64/0.14.53: resolution: {integrity: sha512-WkdJa8iyrGHyKiPF4lk0MiOF87Q2SkE+i+8D4Cazq3/iqmGPJ6u49je300MFi5I2eUsQCkaOWhpCVQMTKGww2w==} engines: {node: '>=12'} @@ -1430,6 +1550,15 @@ packages: dev: true optional: true + /esbuild-freebsd-64/0.15.9: + resolution: {integrity: sha512-uM4z5bTvuAXqPxrI204txhlsPIolQPWRMLenvGuCPZTnnGlCMF2QLs0Plcm26gcskhxewYo9LkkmYSS5Czrb5A==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /esbuild-freebsd-arm64/0.14.53: resolution: {integrity: sha512-9T7WwCuV30NAx0SyQpw8edbKvbKELnnm1FHg7gbSYaatH+c8WJW10g/OdM7JYnv7qkimw2ZTtSA+NokOLd2ydQ==} engines: {node: '>=12'} @@ -1439,6 +1568,15 @@ packages: dev: true optional: true + /esbuild-freebsd-arm64/0.15.9: + resolution: {integrity: sha512-HHDjT3O5gWzicGdgJ5yokZVN9K9KG05SnERwl9nBYZaCjcCgj/sX8Ps1jvoFSfNCO04JSsHSOWo4qvxFuj8FoA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-32/0.14.53: resolution: {integrity: sha512-VGanLBg5en2LfGDgLEUxQko2lqsOS7MTEWUi8x91YmsHNyzJVT/WApbFFx3MQGhkf+XdimVhpyo5/G0PBY91zg==} engines: {node: '>=12'} @@ -1448,6 +1586,15 @@ packages: dev: true optional: true + /esbuild-linux-32/0.15.9: + resolution: {integrity: sha512-AQIdE8FugGt1DkcekKi5ycI46QZpGJ/wqcMr7w6YUmOmp2ohQ8eO4sKUsOxNOvYL7hGEVwkndSyszR6HpVHLFg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-64/0.14.53: resolution: {integrity: sha512-pP/FA55j/fzAV7N9DF31meAyjOH6Bjuo3aSKPh26+RW85ZEtbJv9nhoxmGTd9FOqjx59Tc1ZbrJabuiXlMwuZQ==} engines: {node: '>=12'} @@ -1457,6 +1604,15 @@ packages: dev: true optional: true + /esbuild-linux-64/0.15.9: + resolution: {integrity: sha512-4RXjae7g6Qs7StZyiYyXTZXBlfODhb1aBVAjd+ANuPmMhWthQilWo7rFHwJwL7DQu1Fjej2sODAVwLbcIVsAYQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-arm/0.14.53: resolution: {integrity: sha512-/u81NGAVZMopbmzd21Nu/wvnKQK3pT4CrvQ8BTje1STXcQAGnfyKgQlj3m0j2BzYbvQxSy+TMck4TNV2onvoPA==} engines: {node: '>=12'} @@ -1466,6 +1622,15 @@ packages: dev: true optional: true + /esbuild-linux-arm/0.15.9: + resolution: {integrity: sha512-3Zf2GVGUOI7XwChH3qrnTOSqfV1V4CAc/7zLVm4lO6JT6wbJrTgEYCCiNSzziSju+J9Jhf9YGWk/26quWPC6yQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-arm64/0.14.53: resolution: {integrity: sha512-GDmWITT+PMsjCA6/lByYk7NyFssW4Q6in32iPkpjZ/ytSyH+xeEx8q7HG3AhWH6heemEYEWpTll/eui3jwlSnw==} engines: {node: '>=12'} @@ -1475,6 +1640,15 @@ packages: dev: true optional: true + /esbuild-linux-arm64/0.15.9: + resolution: {integrity: sha512-a+bTtxJmYmk9d+s2W4/R1SYKDDAldOKmWjWP0BnrWtDbvUBNOm++du0ysPju4mZVoEFgS1yLNW+VXnG/4FNwdQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-mips64le/0.14.53: resolution: {integrity: sha512-d6/XHIQW714gSSp6tOOX2UscedVobELvQlPMkInhx1NPz4ThZI9uNLQ4qQJHGBGKGfu+rtJsxM4NVHLhnNRdWQ==} engines: {node: '>=12'} @@ -1484,6 +1658,15 @@ packages: dev: true optional: true + /esbuild-linux-mips64le/0.15.9: + resolution: {integrity: sha512-Zn9HSylDp89y+TRREMDoGrc3Z4Hs5u56ozZLQCiZAUx2+HdbbXbWdjmw3FdTJ/i7t5Cew6/Q+6kfO3KCcFGlyw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-ppc64le/0.14.53: resolution: {integrity: sha512-ndnJmniKPCB52m+r6BtHHLAOXw+xBCWIxNnedbIpuREOcbSU/AlyM/2dA3BmUQhsHdb4w3amD5U2s91TJ3MzzA==} engines: {node: '>=12'} @@ -1493,6 +1676,15 @@ packages: dev: true optional: true + /esbuild-linux-ppc64le/0.15.9: + resolution: {integrity: sha512-OEiOxNAMH9ENFYqRsWUj3CWyN3V8P3ZXyfNAtX5rlCEC/ERXrCEFCJji/1F6POzsXAzxvUJrTSTCy7G6BhA6Fw==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-riscv64/0.14.53: resolution: {integrity: sha512-yG2sVH+QSix6ct4lIzJj329iJF3MhloLE6/vKMQAAd26UVPVkhMFqFopY+9kCgYsdeWvXdPgmyOuKa48Y7+/EQ==} engines: {node: '>=12'} @@ -1502,6 +1694,15 @@ packages: dev: true optional: true + /esbuild-linux-riscv64/0.15.9: + resolution: {integrity: sha512-ukm4KsC3QRausEFjzTsOZ/qqazw0YvJsKmfoZZm9QW27OHjk2XKSQGGvx8gIEswft/Sadp03/VZvAaqv5AIwNA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-s390x/0.14.53: resolution: {integrity: sha512-OCJlgdkB+XPYndHmw6uZT7jcYgzmx9K+28PVdOa/eLjdoYkeAFvH5hTwX4AXGLZLH09tpl4bVsEtvuyUldaNCg==} engines: {node: '>=12'} @@ -1511,6 +1712,15 @@ packages: dev: true optional: true + /esbuild-linux-s390x/0.15.9: + resolution: {integrity: sha512-uDOQEH55wQ6ahcIKzQr3VyjGc6Po/xblLGLoUk3fVL1qjlZAibtQr6XRfy5wPJLu/M2o0vQKLq4lyJ2r1tWKcw==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-netbsd-64/0.14.53: resolution: {integrity: sha512-gp2SB+Efc7MhMdWV2+pmIs/Ja/Mi5rjw+wlDmmbIn68VGXBleNgiEZG+eV2SRS0kJEUyHNedDtwRIMzaohWedQ==} engines: {node: '>=12'} @@ -1520,6 +1730,15 @@ packages: dev: true optional: true + /esbuild-netbsd-64/0.15.9: + resolution: {integrity: sha512-yWgxaYTQz+TqX80wXRq6xAtb7GSBAp6gqLKfOdANg9qEmAI1Bxn04IrQr0Mzm4AhxvGKoHzjHjMgXbCCSSDxcw==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /esbuild-openbsd-64/0.14.53: resolution: {integrity: sha512-eKQ30ZWe+WTZmteDYg8S+YjHV5s4iTxeSGhJKJajFfQx9TLZJvsJX0/paqwP51GicOUruFpSUAs2NCc0a4ivQQ==} engines: {node: '>=12'} @@ -1529,6 +1748,15 @@ packages: dev: true optional: true + /esbuild-openbsd-64/0.15.9: + resolution: {integrity: sha512-JmS18acQl4iSAjrEha1MfEmUMN4FcnnrtTaJ7Qg0tDCOcgpPPQRLGsZqhes0vmx8VA6IqRyScqXvaL7+Q0Uf3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /esbuild-sunos-64/0.14.53: resolution: {integrity: sha512-OWLpS7a2FrIRukQqcgQqR1XKn0jSJoOdT+RlhAxUoEQM/IpytS3FXzCJM6xjUYtpO5GMY0EdZJp+ur2pYdm39g==} engines: {node: '>=12'} @@ -1538,6 +1766,15 @@ packages: dev: true optional: true + /esbuild-sunos-64/0.15.9: + resolution: {integrity: sha512-UKynGSWpzkPmXW3D2UMOD9BZPIuRaSqphxSCwScfEE05Be3KAmvjsBhht1fLzKpiFVJb0BYMd4jEbWMyJ/z1hQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /esbuild-windows-32/0.14.53: resolution: {integrity: sha512-m14XyWQP5rwGW0tbEfp95U6A0wY0DYPInWBB7D69FAXUpBpBObRoGTKRv36lf2RWOdE4YO3TNvj37zhXjVL5xg==} engines: {node: '>=12'} @@ -1547,6 +1784,15 @@ packages: dev: true optional: true + /esbuild-windows-32/0.15.9: + resolution: {integrity: sha512-aqXvu4/W9XyTVqO/hw3rNxKE1TcZiEYHPsXM9LwYmKSX9/hjvfIJzXwQBlPcJ/QOxedfoMVH0YnhhQ9Ffb0RGA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /esbuild-windows-64/0.14.53: resolution: {integrity: sha512-s9skQFF0I7zqnQ2K8S1xdLSfZFsPLuOGmSx57h2btSEswv0N0YodYvqLcJMrNMXh6EynOmWD7rz+0rWWbFpIHQ==} engines: {node: '>=12'} @@ -1556,6 +1802,15 @@ packages: dev: true optional: true + /esbuild-windows-64/0.15.9: + resolution: {integrity: sha512-zm7h91WUmlS4idMtjvCrEeNhlH7+TNOmqw5dJPJZrgFaxoFyqYG6CKDpdFCQXdyKpD5yvzaQBOMVTCBVKGZDEg==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /esbuild-windows-arm64/0.14.53: resolution: {integrity: sha512-E+5Gvb+ZWts+00T9II6wp2L3KG2r3iGxByqd/a1RmLmYWVsSVUjkvIxZuJ3hYTIbhLkH5PRwpldGTKYqVz0nzQ==} engines: {node: '>=12'} @@ -1565,6 +1820,15 @@ packages: dev: true optional: true + /esbuild-windows-arm64/0.15.9: + resolution: {integrity: sha512-yQEVIv27oauAtvtuhJVfSNMztJJX47ismRS6Sv2QMVV9RM+6xjbMWuuwM2nxr5A2/gj/mu2z9YlQxiwoFRCfZA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /esbuild/0.14.53: resolution: {integrity: sha512-ohO33pUBQ64q6mmheX1mZ8mIXj8ivQY/L4oVuAshr+aJI+zLl+amrp3EodrUNDNYVrKJXGPfIHFGhO8slGRjuw==} engines: {node: '>=12'} @@ -1594,6 +1858,36 @@ packages: esbuild-windows-arm64: 0.14.53 dev: true + /esbuild/0.15.9: + resolution: {integrity: sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.15.9 + '@esbuild/linux-loong64': 0.15.9 + esbuild-android-64: 0.15.9 + esbuild-android-arm64: 0.15.9 + esbuild-darwin-64: 0.15.9 + esbuild-darwin-arm64: 0.15.9 + esbuild-freebsd-64: 0.15.9 + esbuild-freebsd-arm64: 0.15.9 + esbuild-linux-32: 0.15.9 + esbuild-linux-64: 0.15.9 + esbuild-linux-arm: 0.15.9 + esbuild-linux-arm64: 0.15.9 + esbuild-linux-mips64le: 0.15.9 + esbuild-linux-ppc64le: 0.15.9 + esbuild-linux-riscv64: 0.15.9 + esbuild-linux-s390x: 0.15.9 + esbuild-netbsd-64: 0.15.9 + esbuild-openbsd-64: 0.15.9 + esbuild-sunos-64: 0.15.9 + esbuild-windows-32: 0.15.9 + esbuild-windows-64: 0.15.9 + esbuild-windows-arm64: 0.15.9 + dev: true + /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -1623,6 +1917,11 @@ packages: '@types/unist': 2.0.6 dev: true + /events/3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: true + /execa/6.1.0: resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1807,6 +2106,10 @@ packages: engines: {node: '>=4'} dev: true + /globalyzer/0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: true + /globby/11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -1819,6 +2122,10 @@ packages: slash: 3.0.0 dev: false + /globrex/0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: true + /graceful-fs/4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} @@ -1977,6 +2284,11 @@ packages: space-separated-tokens: 2.0.1 dev: true + /he/1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: false + /hosted-git-info/2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: false @@ -2992,6 +3304,15 @@ packages: mimic-fn: 4.0.0 dev: true + /open/8.4.0: + resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: true + /ora/6.1.2: resolution: {integrity: sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3174,6 +3495,16 @@ packages: path-exists: 4.0.0 which-pm: 2.0.0 + /prettier-plugin-astro/0.5.4: + resolution: {integrity: sha512-ILs/WgUYtKBOn3Zh217/PwjCFtUWEKQjcCFJDevri0hGEBwEnnda9aqSLL0/nhCOmQn/UE7M9zLQvThu970ZHw==} + engines: {node: ^14.15.0 || >=16.0.0, npm: '>=6.14.0'} + dependencies: + '@astrojs/compiler': 0.23.5 + prettier: 2.7.1 + sass-formatter: 0.7.5 + synckit: 0.7.3 + dev: true + /prettier/1.19.1: resolution: {integrity: sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==} engines: {node: '>=4'} @@ -3426,8 +3757,8 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - /rollup/2.77.2: - resolution: {integrity: sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g==} + /rollup/2.78.1: + resolution: {integrity: sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==} engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: @@ -3439,6 +3770,10 @@ packages: dependencies: queue-microtask: 1.2.3 + /s.color/0.0.15: + resolution: {integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==} + dev: true + /sade/1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} @@ -3458,6 +3793,12 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: false + /sass-formatter/0.7.5: + resolution: {integrity: sha512-NKFP8ddjhUYi6A/iD1cEtzkEs91U61kzqe3lY9SVNuvX7LGc88xnEN0mmsWL7Ol//YTi2GL/ol7b9XZ2+hgXuA==} + dependencies: + suf-log: 2.5.3 + dev: true + /section-matter/1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} @@ -3512,12 +3853,12 @@ packages: engines: {node: '>=8'} dev: true - /shiki/0.10.1: - resolution: {integrity: sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==} + /shiki/0.11.1: + resolution: {integrity: sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==} dependencies: jsonc-parser: 3.1.0 vscode-oniguruma: 1.6.2 - vscode-textmate: 5.2.0 + vscode-textmate: 6.0.0 dev: true /side-channel/1.0.4: @@ -3719,6 +4060,12 @@ packages: inline-style-parser: 0.1.1 dev: true + /suf-log/2.5.3: + resolution: {integrity: sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==} + dependencies: + s.color: 0.0.15 + dev: true + /supports-color/5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -3741,11 +4088,26 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + /synckit/0.7.3: + resolution: {integrity: sha512-jNroMv7Juy+mJ/CHW5H6TzsLWpa1qck6sCHbkv8YTur+irSq2PjbvmGnm2gy14BUQ6jF33vyR4DPssHqmqsDQw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.3.1 + tslib: 2.4.0 + dev: true + /term-size/2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} dev: false + /tiny-glob/0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + dev: true + /tmp/0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -4008,8 +4370,8 @@ packages: vfile-message: 3.1.2 dev: true - /vite/3.0.4: - resolution: {integrity: sha512-NU304nqnBeOx2MkQnskBQxVsa0pRAH5FphokTGmyy8M3oxbvw7qAXts2GORxs+h/2vKsD+osMhZ7An6yK6F1dA==} + /vite/3.1.3: + resolution: {integrity: sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -4027,10 +4389,10 @@ packages: terser: optional: true dependencies: - esbuild: 0.14.53 + esbuild: 0.15.9 postcss: 8.4.16 resolve: 1.22.1 - rollup: 2.77.2 + rollup: 2.78.1 optionalDependencies: fsevents: 2.3.2 dev: true @@ -4088,8 +4450,8 @@ packages: resolution: {integrity: sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==} dev: true - /vscode-textmate/5.2.0: - resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} + /vscode-textmate/6.0.0: + resolution: {integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==} dev: true /vscode-uri/2.1.2: