diff --git a/.vitepress/config.ts b/.vitepress/config.ts index 271dc22e..3144bab4 100644 --- a/.vitepress/config.ts +++ b/.vitepress/config.ts @@ -129,38 +129,14 @@ export default defineConfigWithTheme({ }, }); -function getAnalyticsTags({ - VITE_GTM_ID = '', - VITE_GTAG_ID = '', -}: NodeJS.ProcessEnv): HeadConfig[] { - // Fail the build if we have a defined but malformed analytics id - const idPattern = /^(G|GTM)-[A-Z\d]+$/; - for (const [name, value] of Object.entries({ VITE_GTM_ID, VITE_GTAG_ID })) { - if (value && !idPattern.test(value)) { - throw new Error(`Invalid ${name} value: '${value}'`); - } - } - +function getAnalyticsTags({ VITE_GTM_ID = '' }: NodeJS.ProcessEnv): HeadConfig[] { + const idPattern = /^GTM-[A-Z\d]+$/; const tags: HeadConfig[] = []; - if (VITE_GTAG_ID) { - const source = ` - window.dataLayer = window.dataLayer || []; - function gtag(){ dataLayer.push(arguments) } - gtag('js', new Date); - gtag('config', '${VITE_GTAG_ID}', { anonymize_ip: true }); - `; - tags.push(['script', {}, source]); - if (!VITE_GTM_ID) { - const url = `https://www.googletagmanager.com/gtag/js?id=${VITE_GTAG_ID}`; - tags.push(['script', { async: '', src: url }]); - } - } - - // We're migrating from gtag.js to gtm.js, but using both as we verify this change. - // According to https://support.google.com/tagmanager/answer/6103696 this should be - // inserted after any script declaring a dataLayer. if (VITE_GTM_ID) { + if (!idPattern.test(VITE_GTM_ID)) { + throw new Error(`Invalid VITE_GTM_ID value: '${VITE_GTM_ID}'`); + } const source = ` (function(w, d, s, l, i){ w[l] = w[l] || []; diff --git a/.vitepress/config.ts.timestamp-1700579699301-7af714195b443.mjs b/.vitepress/config.ts.timestamp-1700579699301-7af714195b443.mjs deleted file mode 100644 index 935b7b53..00000000 --- a/.vitepress/config.ts.timestamp-1700579699301-7af714195b443.mjs +++ /dev/null @@ -1,252 +0,0 @@ -// .vitepress/config.ts -import dotenv from "file:///home/stackblitz/docs/node_modules/dotenv/lib/main.js"; -import mdFootnote from "file:///home/stackblitz/docs/node_modules/markdown-it-footnote/index.js"; -import { defineConfig } from "file:///home/stackblitz/docs/node_modules/vitepress/dist/node/index.js"; - -// docs/links.ts -var groupLinks = { - userGuide: [ - { text: "What is StackBlitz", link: "/guides/user-guide/what-is-stackblitz" }, - { text: "Getting started", link: "/guides/user-guide/getting-started" }, - { text: "Starter projects", link: "/guides/user-guide/starter-projects" }, - { text: "Available environments", link: "/guides/user-guide/available-environments" }, - { text: "Importing projects", link: "/guides/user-guide/importing-projects" }, - { text: "IDE: what\u2019s on your screen", link: "/guides/user-guide/ide-whats-on-your-screen" }, - { text: "Collections", link: "/guides/user-guide/collections" }, - { text: "Keyboard shortcuts", link: "/guides/user-guide/keyboard-shortcuts" }, - { text: "General FAQs", link: "/guides/user-guide/general-faqs" } - ], - integrationGuide: [ - { text: "Embedding projects", link: "/guides/integration/embedding" }, - { text: "Launching projects from GitHub", link: "/guides/integration/open-from-github" }, - { text: "Creating projects with the SDK", link: "/guides/integration/create-with-sdk" }, - { text: "Bug reproductions", link: "/guides/integration/bug-reproductions" } - ], - codeflow: [ - { text: "What is Codeflow?", link: "/codeflow/what-is-codeflow" }, - { text: "Using pr.new", link: "/codeflow/using-pr-new" }, - { text: "Working in Codeflow IDE", link: "/codeflow/working-in-codeflow-ide" }, - { text: "Integrating CodeflowApp bot", link: "/codeflow/integrating-codeflowapp-bot" }, - { text: "Environment Variables", link: "/codeflow/environment-variables" }, - { - text: "Content updates with Web Publisher", - link: "/codeflow/content-updates-with-web-publisher" - }, - { text: "Integrating Web Publisher", link: "/codeflow/integrating-web-publisher" }, - { text: "Codeflow FAQ", link: "/codeflow/codeflow-faq" } - ], - teams: [ - { text: "What is StackBlitz Teams", link: "/teams/what-is-stackblitz-teams.md" }, - { text: "Setting Up Your Team", link: "/teams/setting-up-your-team" }, - { text: "Collaboration and Access Control", link: "/teams/collaboration-and-access-control" }, - { text: "Pull Request Review Integration", link: "/teams/pull-request-review-integration" }, - { text: "Environment Variables", link: "/teams/environment-variables" }, - { text: "Private NPM Registry Integration", link: "/teams/private-npm-registry-integration" } - ], - api: [ - { - text: "JavaScript SDK", - link: "/platform/api/javascript-sdk", - items: [ - { text: "SDK overview", link: "/platform/api/javascript-sdk" }, - { text: "Options reference", link: "/platform/api/javascript-sdk-options" }, - { text: "Controlling embeds", link: "/platform/api/javascript-sdk-vm" }, - { text: "Managing dependencies", link: "/platform/api/javascript-sdk-dependencies" } - ] - }, - { text: "POST API", link: "/platform/api/post-api" }, - { text: "WebContainer API", link: "/platform/api/webcontainer-api" } - ], - webcontainers: [ - { text: "Roadmap", link: "/platform/webcontainers/roadmap" }, - { text: "Browser support", link: "/platform/webcontainers/browser-support" }, - { text: "Browser configuration", link: "/platform/webcontainers/browser-config" }, - { text: "Project configuration", link: "/platform/webcontainers/project-config" }, - { text: "Turbo package manager", link: "/platform/webcontainers/turbo-package-manager" }, - { text: "Troubleshooting", link: "/platform/webcontainers/troubleshooting-webcontainers" } - ], - enterprise: [ - { text: "Overview", link: "/enterprise/overview" }, - { - text: "Installation", - link: "/enterprise/installation/quickstart", - items: [ - { text: "Quickstart on Bare Metal", link: "/enterprise/installation/quickstart" }, - { text: "Quickstart on GCP (Non-GKE)", link: "/enterprise/installation/quickstart-gcp" }, - { - text: "Quickstart (Existing Cluster)", - link: "/enterprise/installation/quickstart-existing-cluster" - }, - { text: "Administrator Guide", link: "/enterprise/installation/administrator-guide" }, - { text: "Air Gapped Installs", link: "/enterprise/installation/air-gapped-installs" } - ] - }, - { text: "Configuring DNS & TLS", link: "/enterprise/configuring-dns" }, - { text: "Configuring Firewall Rules", link: "/enterprise/configuring-firewall-rules" }, - { text: "Setting up SSO", link: "/enterprise/sso" }, - { text: "Setting up SSO with Okta", link: "/enterprise/okta-sso" }, - { text: "Setting up SSO with ADFS", link: "/enterprise/adfs-sso" }, - { text: "Connect npm Registry", link: "/enterprise/npm" }, - { text: "Starter Projects", link: "/enterprise/starter-projects" }, - { text: "User Management", link: "/enterprise/user-management" }, - { text: "Aggregating Logs", link: "/enterprise/log-aggregation" }, - { text: "Data Migration", link: "/enterprise/data-migration" } - ] -}; -var linkGroups = { - userGuide: { - text: "User Guide", - items: groupLinks.userGuide - }, - integrationGuide: { - text: "Integration Guide", - items: groupLinks.integrationGuide - }, - codeflow: { - text: "Codeflow", - items: groupLinks.codeflow - }, - teams: { - text: "Teams", - items: groupLinks.teams - }, - api: { - text: "StackBlitz API", - items: groupLinks.api - }, - webcontainers: { - text: "WebContainers", - items: groupLinks.webcontainers - }, - enterprise: { - text: "Enterprise Server", - items: groupLinks.enterprise - } -}; -var defaultGroupLink = (linkGroup) => groupLinks[linkGroup][0].link; -var sidebarLinks = (sidebar, activeLinkGroups = []) => { - if (sidebar === "enterprise") { - return [linkGroups.enterprise]; - } - return Object.entries(linkGroups).filter(([key]) => key !== "enterprise").map(([key, data]) => ({ - ...data, - collapsed: !activeLinkGroups.includes(key) - })); -}; - -// .vitepress/config.ts -dotenv.config(); -var BASE = "/"; -var BASE_WITH_ORIGIN = `https://developer.stackblitz.com${BASE}`; -var config_default = defineConfig({ - srcDir: "./docs", - outDir: `./build${BASE}`, - assetsDir: "assets", - base: BASE, - // Generate files as `/path/to/page.html` and URLs as `/path/to/page` - cleanUrls: true, - // Prevent builds when content has dead links - ignoreDeadLinks: false, - // Metadata - lang: "en-US", - title: "StackBlitz Docs", - description: "Discover how to use StackBlitz, an online development environment for frontend, Node.js and the JavaScript ecosystem.", - head: [ - ["link", { rel: "icon", type: "image/png", href: `${BASE}img/theme/favicon.png` }], - ...getAnalyticsTags(process.env) - ], - // Sitemap - lastUpdated: true, - sitemap: { - hostname: BASE_WITH_ORIGIN - }, - /** - * Generate social media metadata tags at build time. - * Note: this does not run when using the development server, - * so it must be tested by doing a full build with `npm run build`. - */ - transformHead({ pageData, page }) { - const { title, description, og_image } = pageData.frontmatter; - const og_type = page === "index.md" ? "website" : "article"; - const tags = []; - tags.push(["meta", { property: "og:type", content: og_type }]); - tags.push(["meta", { property: "og:title", content: title }]); - if (og_image) { - const url = `${BASE_WITH_ORIGIN}img/og/${og_image}`; - tags.push(["meta", { property: "og:image", content: url }]); - } - tags.push(["meta", { name: "twitter:site", content: "@StackBlitz" }]); - tags.push(["meta", { name: "twitter:card", content: "summary_large_image" }]); - tags.push(["meta", { name: "twitter:title", content: title }]); - if (description) { - tags.push(["meta", { name: "twitter:description", content: description }]); - } - return tags; - }, - // Theme - themeConfig: { - siteTitle: "StackBlitz Docs", - logo: "/img/theme/docs-logo.svg", - search: getSearchConfig(process.env), - editLink: { - pattern: "https://pr.new/stackblitz/docs/edit/main/docs/:path", - text: "Edit this page" - }, - nav: [ - { text: "Guides", link: defaultGroupLink("userGuide") }, - { text: "Codeflow", link: defaultGroupLink("codeflow") }, - { text: "API", link: defaultGroupLink("api") }, - { text: "WebContainers", link: defaultGroupLink("webcontainers") }, - { text: "Teams", link: defaultGroupLink("teams") }, - { text: "Enterprise", link: defaultGroupLink("enterprise") } - ], - sidebar: { - "/guides/": sidebarLinks("main", ["userGuide", "integrationGuide"]), - "/codeflow/": sidebarLinks("main", ["codeflow"]), - "/teams/": sidebarLinks("main", ["teams"]), - "/platform/api/": sidebarLinks("main", ["api"]), - "/platform/webcontainers/": sidebarLinks("main", ["webcontainers"]), - "/enterprise/": sidebarLinks("enterprise", ["enterprise"]) - } - }, - postRender(context) { - context.teleports; - }, - markdown: { - config: (md) => { - md.use(mdFootnote); - } - } -}); -function getAnalyticsTags(env) { - if (!env.VITE_GTM_ID) { - return []; - } - return [ - [ - "script", - { src: `https://www.googletagmanager.com/gtag/js?id=${env.VITE_GTM_ID}`, async: "" } - ], - [ - "script", - {}, - `function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag('js',new Date),gtag('config','${env.VITE_GTM_ID}',{anonymize_ip:true})` - ] - ]; -} -function getSearchConfig(env) { - if (env.VITE_ALGOLIA_ID && env.VITE_ALGOLIA_KEY) { - return { - provider: "algolia", - options: { - indexName: "stackblitz", - appId: env.VITE_ALGOLIA_ID, - apiKey: env.VITE_ALGOLIA_KEY - } - }; - } -} -export { - config_default as default -}; -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLnZpdGVwcmVzcy9jb25maWcudHMiLCAiZG9jcy9saW5rcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIi9ob21lL3N0YWNrYmxpdHovZG9jcy8udml0ZXByZXNzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCIvaG9tZS9zdGFja2JsaXR6L2RvY3MvLnZpdGVwcmVzcy9jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL2hvbWUvc3RhY2tibGl0ei9kb2NzLy52aXRlcHJlc3MvY29uZmlnLnRzXCI7aW1wb3J0IGRvdGVudiBmcm9tICdkb3RlbnYnO1xuLyogQHRzLWV4cGVjdC1lcnJvciAqL1xuaW1wb3J0IG1kRm9vdG5vdGUgZnJvbSAnbWFya2Rvd24taXQtZm9vdG5vdGUnO1xuaW1wb3J0IHsgZGVmaW5lQ29uZmlnLCB0eXBlIEhlYWRDb25maWcgfSBmcm9tICd2aXRlcHJlc3MnO1xuaW1wb3J0IHsgZGVmYXVsdEdyb3VwTGluaywgc2lkZWJhckxpbmtzIH0gZnJvbSAnLi4vZG9jcy9saW5rcyc7XG5cbmRvdGVudi5jb25maWcoKTtcblxuY29uc3QgQkFTRSA9ICcvJztcbmNvbnN0IEJBU0VfV0lUSF9PUklHSU4gPSBgaHR0cHM6Ly9kZXZlbG9wZXIuc3RhY2tibGl0ei5jb20ke0JBU0V9YDtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHtcbiAgc3JjRGlyOiAnLi9kb2NzJyxcbiAgb3V0RGlyOiBgLi9idWlsZCR7QkFTRX1gLFxuICBhc3NldHNEaXI6ICdhc3NldHMnLFxuICBiYXNlOiBCQVNFLFxuXG4gIC8vIEdlbmVyYXRlIGZpbGVzIGFzIGAvcGF0aC90by9wYWdlLmh0bWxgIGFuZCBVUkxzIGFzIGAvcGF0aC90by9wYWdlYFxuICBjbGVhblVybHM6IHRydWUsXG5cbiAgLy8gUHJldmVudCBidWlsZHMgd2hlbiBjb250ZW50IGhhcyBkZWFkIGxpbmtzXG4gIGlnbm9yZURlYWRMaW5rczogZmFsc2UsXG5cbiAgLy8gTWV0YWRhdGFcbiAgbGFuZzogJ2VuLVVTJyxcbiAgdGl0bGU6ICdTdGFja0JsaXR6IERvY3MnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnRGlzY292ZXIgaG93IHRvIHVzZSBTdGFja0JsaXR6LCBhbiBvbmxpbmUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgZm9yIGZyb250ZW5kLCBOb2RlLmpzIGFuZCB0aGUgSmF2YVNjcmlwdCBlY29zeXN0ZW0uJyxcbiAgaGVhZDogW1xuICAgIFsnbGluaycsIHsgcmVsOiAnaWNvbicsIHR5cGU6ICdpbWFnZS9wbmcnLCBocmVmOiBgJHtCQVNFfWltZy90aGVtZS9mYXZpY29uLnBuZ2AgfV0sXG4gICAgLi4uZ2V0QW5hbHl0aWNzVGFncyhwcm9jZXNzLmVudiksXG4gIF0sXG5cbiAgLy8gU2l0ZW1hcFxuICBsYXN0VXBkYXRlZDogdHJ1ZSxcbiAgc2l0ZW1hcDoge1xuICAgIGhvc3RuYW1lOiBCQVNFX1dJVEhfT1JJR0lOLFxuICB9LFxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBzb2NpYWwgbWVkaWEgbWV0YWRhdGEgdGFncyBhdCBidWlsZCB0aW1lLlxuICAgKiBOb3RlOiB0aGlzIGRvZXMgbm90IHJ1biB3aGVuIHVzaW5nIHRoZSBkZXZlbG9wbWVudCBzZXJ2ZXIsXG4gICAqIHNvIGl0IG11c3QgYmUgdGVzdGVkIGJ5IGRvaW5nIGEgZnVsbCBidWlsZCB3aXRoIGBucG0gcnVuIGJ1aWxkYC5cbiAgICovXG4gIHRyYW5zZm9ybUhlYWQoeyBwYWdlRGF0YSwgcGFnZSB9KSB7XG4gICAgLy8gR2V0IHRoZSByYXcgdGl0bGUgYW5kIGRlc2NyaXB0aW9uIGZyb20gZnJvbnRtYXR0ZXIsXG4gICAgLy8gcmF0aGVyIHRoYW4gdGhlIHRpdGxlIHdoaWNoIGhhcyB0aGUgc2l0ZSBzdWZmaXhcbiAgICBjb25zdCB7IHRpdGxlLCBkZXNjcmlwdGlvbiwgb2dfaW1hZ2UgfSA9IHBhZ2VEYXRhLmZyb250bWF0dGVyO1xuICAgIGNvbnN0IG9nX3R5cGUgPSBwYWdlID09PSAnaW5kZXgubWQnID8gJ3dlYnNpdGUnIDogJ2FydGljbGUnO1xuXG4gICAgLy8gTmV3IG1ldGEgdGFncyB0byBhZGQgdG8gdGhlIDxoZWFkPlxuICAgIGNvbnN0IHRhZ3M6IEhlYWRDb25maWdbXSA9IFtdO1xuXG4gICAgLy8gQWRkIG9wZW5ncmFwaCB0YWdzXG4gICAgdGFncy5wdXNoKFsnbWV0YScsIHsgcHJvcGVydHk6ICdvZzp0eXBlJywgY29udGVudDogb2dfdHlwZSB9XSk7XG4gICAgdGFncy5wdXNoKFsnbWV0YScsIHsgcHJvcGVydHk6ICdvZzp0aXRsZScsIGNvbnRlbnQ6IHRpdGxlIH1dKTtcbiAgICBpZiAob2dfaW1hZ2UpIHtcbiAgICAgIGNvbnN0IHVybCA9IGAke0JBU0VfV0lUSF9PUklHSU59aW1nL29nLyR7b2dfaW1hZ2V9YDtcbiAgICAgIHRhZ3MucHVzaChbJ21ldGEnLCB7IHByb3BlcnR5OiAnb2c6aW1hZ2UnLCBjb250ZW50OiB1cmwgfV0pO1xuICAgIH1cblxuICAgIC8vIEFkZCB0d2l0dGVyIHRhZ3NcbiAgICB0YWdzLnB1c2goWydtZXRhJywgeyBuYW1lOiAndHdpdHRlcjpzaXRlJywgY29udGVudDogJ0BTdGFja0JsaXR6JyB9XSk7XG4gICAgdGFncy5wdXNoKFsnbWV0YScsIHsgbmFtZTogJ3R3aXR0ZXI6Y2FyZCcsIGNvbnRlbnQ6ICdzdW1tYXJ5X2xhcmdlX2ltYWdlJyB9XSk7XG4gICAgdGFncy5wdXNoKFsnbWV0YScsIHsgbmFtZTogJ3R3aXR0ZXI6dGl0bGUnLCBjb250ZW50OiB0aXRsZSB9XSk7XG4gICAgaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgICB0YWdzLnB1c2goWydtZXRhJywgeyBuYW1lOiAndHdpdHRlcjpkZXNjcmlwdGlvbicsIGNvbnRlbnQ6IGRlc2NyaXB0aW9uIH1dKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGFncztcbiAgfSxcblxuICAvLyBUaGVtZVxuICB0aGVtZUNvbmZpZzoge1xuICAgIHNpdGVUaXRsZTogJ1N0YWNrQmxpdHogRG9jcycsXG4gICAgbG9nbzogJy9pbWcvdGhlbWUvZG9jcy1sb2dvLnN2ZycsXG4gICAgc2VhcmNoOiBnZXRTZWFyY2hDb25maWcocHJvY2Vzcy5lbnYpLFxuICAgIGVkaXRMaW5rOiB7XG4gICAgICBwYXR0ZXJuOiAnaHR0cHM6Ly9wci5uZXcvc3RhY2tibGl0ei9kb2NzL2VkaXQvbWFpbi9kb2NzLzpwYXRoJyxcbiAgICAgIHRleHQ6ICdFZGl0IHRoaXMgcGFnZScsXG4gICAgfSxcbiAgICBuYXY6IFtcbiAgICAgIHsgdGV4dDogJ0d1aWRlcycsIGxpbms6IGRlZmF1bHRHcm91cExpbmsoJ3VzZXJHdWlkZScpIH0sXG4gICAgICB7IHRleHQ6ICdDb2RlZmxvdycsIGxpbms6IGRlZmF1bHRHcm91cExpbmsoJ2NvZGVmbG93JykgfSxcbiAgICAgIHsgdGV4dDogJ0FQSScsIGxpbms6IGRlZmF1bHRHcm91cExpbmsoJ2FwaScpIH0sXG4gICAgICB7IHRleHQ6ICdXZWJDb250YWluZXJzJywgbGluazogZGVmYXVsdEdyb3VwTGluaygnd2ViY29udGFpbmVycycpIH0sXG4gICAgICB7IHRleHQ6ICdUZWFtcycsIGxpbms6IGRlZmF1bHRHcm91cExpbmsoJ3RlYW1zJykgfSxcbiAgICAgIHsgdGV4dDogJ0VudGVycHJpc2UnLCBsaW5rOiBkZWZhdWx0R3JvdXBMaW5rKCdlbnRlcnByaXNlJykgfSxcbiAgICBdLFxuICAgIHNpZGViYXI6IHtcbiAgICAgICcvZ3VpZGVzLyc6IHNpZGViYXJMaW5rcygnbWFpbicsIFsndXNlckd1aWRlJywgJ2ludGVncmF0aW9uR3VpZGUnXSksXG4gICAgICAnL2NvZGVmbG93Lyc6IHNpZGViYXJMaW5rcygnbWFpbicsIFsnY29kZWZsb3cnXSksXG4gICAgICAnL3RlYW1zLyc6IHNpZGViYXJMaW5rcygnbWFpbicsIFsndGVhbXMnXSksXG4gICAgICAnL3BsYXRmb3JtL2FwaS8nOiBzaWRlYmFyTGlua3MoJ21haW4nLCBbJ2FwaSddKSxcbiAgICAgICcvcGxhdGZvcm0vd2ViY29udGFpbmVycy8nOiBzaWRlYmFyTGlua3MoJ21haW4nLCBbJ3dlYmNvbnRhaW5lcnMnXSksXG4gICAgICAnL2VudGVycHJpc2UvJzogc2lkZWJhckxpbmtzKCdlbnRlcnByaXNlJywgWydlbnRlcnByaXNlJ10pLFxuICAgIH0sXG4gIH0sXG5cbiAgcG9zdFJlbmRlcihjb250ZXh0KSB7XG4gICAgY29udGV4dC50ZWxlcG9ydHM7XG4gIH0sXG5cbiAgbWFya2Rvd246IHtcbiAgICBjb25maWc6IChtZCkgPT4ge1xuICAgICAgbWQudXNlKG1kRm9vdG5vdGUpO1xuICAgIH0sXG4gIH0sXG59KTtcblxuZnVuY3Rpb24gZ2V0QW5hbHl0aWNzVGFncyhlbnY6IE5vZGVKUy5Qcm9jZXNzRW52KTogSGVhZENvbmZpZ1tdIHtcbiAgaWYgKCFlbnYuVklURV9HVE1fSUQpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIFtcbiAgICBbXG4gICAgICAnc2NyaXB0JyxcbiAgICAgIHsgc3JjOiBgaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD0ke2Vudi5WSVRFX0dUTV9JRH1gLCBhc3luYzogJycgfSxcbiAgICBdLFxuICAgIFtcbiAgICAgICdzY3JpcHQnLFxuICAgICAge30sXG4gICAgICBgZnVuY3Rpb24gZ3RhZygpe2RhdGFMYXllci5wdXNoKGFyZ3VtZW50cyl9d2luZG93LmRhdGFMYXllcj13aW5kb3cuZGF0YUxheWVyfHxbXSxndGFnKCdqcycsbmV3IERhdGUpLGd0YWcoJ2NvbmZpZycsJyR7ZW52LlZJVEVfR1RNX0lEfScse2Fub255bWl6ZV9pcDp0cnVlfSlgLFxuICAgIF0sXG4gIF07XG59XG5cbmZ1bmN0aW9uIGdldFNlYXJjaENvbmZpZyhlbnY6IE5vZGVKUy5Qcm9jZXNzRW52KSB7XG4gIGlmIChlbnYuVklURV9BTEdPTElBX0lEICYmIGVudi5WSVRFX0FMR09MSUFfS0VZKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3ZpZGVyOiAnYWxnb2xpYScsXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGluZGV4TmFtZTogJ3N0YWNrYmxpdHonLFxuICAgICAgICBhcHBJZDogZW52LlZJVEVfQUxHT0xJQV9JRCxcbiAgICAgICAgYXBpS2V5OiBlbnYuVklURV9BTEdPTElBX0tFWSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvaG9tZS9zdGFja2JsaXR6L2RvY3MvZG9jc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL2hvbWUvc3RhY2tibGl0ei9kb2NzL2RvY3MvbGlua3MudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL2hvbWUvc3RhY2tibGl0ei9kb2NzL2RvY3MvbGlua3MudHNcIjtpbXBvcnQgdHlwZSB7IENhcmRMaW5rLCBGb290ZXJTZWN0aW9uLCBNZW51TGlua0dyb3VwLCBNZW51TGlua0l0ZW0gfSBmcm9tICdAdGhlbWUvZGF0YS90eXBlcyc7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBMaW5rIEdyb3VwcyAvIFNpZGViYXJcblxuY29uc3QgZ3JvdXBMaW5rczogUmVjb3JkPE1lbnVMaW5rR3JvdXAsIE1lbnVMaW5rSXRlbVtdPiA9IHtcbiAgdXNlckd1aWRlOiBbXG4gICAgeyB0ZXh0OiAnV2hhdCBpcyBTdGFja0JsaXR6JywgbGluazogJy9ndWlkZXMvdXNlci1ndWlkZS93aGF0LWlzLXN0YWNrYmxpdHonIH0sXG4gICAgeyB0ZXh0OiAnR2V0dGluZyBzdGFydGVkJywgbGluazogJy9ndWlkZXMvdXNlci1ndWlkZS9nZXR0aW5nLXN0YXJ0ZWQnIH0sXG4gICAgeyB0ZXh0OiAnU3RhcnRlciBwcm9qZWN0cycsIGxpbms6ICcvZ3VpZGVzL3VzZXItZ3VpZGUvc3RhcnRlci1wcm9qZWN0cycgfSxcbiAgICB7IHRleHQ6ICdBdmFpbGFibGUgZW52aXJvbm1lbnRzJywgbGluazogJy9ndWlkZXMvdXNlci1ndWlkZS9hdmFpbGFibGUtZW52aXJvbm1lbnRzJyB9LFxuICAgIHsgdGV4dDogJ0ltcG9ydGluZyBwcm9qZWN0cycsIGxpbms6ICcvZ3VpZGVzL3VzZXItZ3VpZGUvaW1wb3J0aW5nLXByb2plY3RzJyB9LFxuICAgIHsgdGV4dDogJ0lERTogd2hhdFx1MjAxOXMgb24geW91ciBzY3JlZW4nLCBsaW5rOiAnL2d1aWRlcy91c2VyLWd1aWRlL2lkZS13aGF0cy1vbi15b3VyLXNjcmVlbicgfSxcbiAgICB7IHRleHQ6ICdDb2xsZWN0aW9ucycsIGxpbms6ICcvZ3VpZGVzL3VzZXItZ3VpZGUvY29sbGVjdGlvbnMnIH0sXG4gICAgeyB0ZXh0OiAnS2V5Ym9hcmQgc2hvcnRjdXRzJywgbGluazogJy9ndWlkZXMvdXNlci1ndWlkZS9rZXlib2FyZC1zaG9ydGN1dHMnIH0sXG4gICAgeyB0ZXh0OiAnR2VuZXJhbCBGQVFzJywgbGluazogJy9ndWlkZXMvdXNlci1ndWlkZS9nZW5lcmFsLWZhcXMnIH0sXG4gIF0sXG4gIGludGVncmF0aW9uR3VpZGU6IFtcbiAgICB7IHRleHQ6ICdFbWJlZGRpbmcgcHJvamVjdHMnLCBsaW5rOiAnL2d1aWRlcy9pbnRlZ3JhdGlvbi9lbWJlZGRpbmcnIH0sXG4gICAgeyB0ZXh0OiAnTGF1bmNoaW5nIHByb2plY3RzIGZyb20gR2l0SHViJywgbGluazogJy9ndWlkZXMvaW50ZWdyYXRpb24vb3Blbi1mcm9tLWdpdGh1YicgfSxcbiAgICB7IHRleHQ6ICdDcmVhdGluZyBwcm9qZWN0cyB3aXRoIHRoZSBTREsnLCBsaW5rOiAnL2d1aWRlcy9pbnRlZ3JhdGlvbi9jcmVhdGUtd2l0aC1zZGsnIH0sXG4gICAgeyB0ZXh0OiAnQnVnIHJlcHJvZHVjdGlvbnMnLCBsaW5rOiAnL2d1aWRlcy9pbnRlZ3JhdGlvbi9idWctcmVwcm9kdWN0aW9ucycgfSxcbiAgXSxcbiAgY29kZWZsb3c6IFtcbiAgICB7IHRleHQ6ICdXaGF0IGlzIENvZGVmbG93PycsIGxpbms6ICcvY29kZWZsb3cvd2hhdC1pcy1jb2RlZmxvdycgfSxcbiAgICB7IHRleHQ6ICdVc2luZyBwci5uZXcnLCBsaW5rOiAnL2NvZGVmbG93L3VzaW5nLXByLW5ldycgfSxcbiAgICB7IHRleHQ6ICdXb3JraW5nIGluIENvZGVmbG93IElERScsIGxpbms6ICcvY29kZWZsb3cvd29ya2luZy1pbi1jb2RlZmxvdy1pZGUnIH0sXG4gICAgeyB0ZXh0OiAnSW50ZWdyYXRpbmcgQ29kZWZsb3dBcHAgYm90JywgbGluazogJy9jb2RlZmxvdy9pbnRlZ3JhdGluZy1jb2RlZmxvd2FwcC1ib3QnIH0sXG4gICAgeyB0ZXh0OiAnRW52aXJvbm1lbnQgVmFyaWFibGVzJywgbGluazogJy9jb2RlZmxvdy9lbnZpcm9ubWVudC12YXJpYWJsZXMnIH0sXG4gICAge1xuICAgICAgdGV4dDogJ0NvbnRlbnQgdXBkYXRlcyB3aXRoIFdlYiBQdWJsaXNoZXInLFxuICAgICAgbGluazogJy9jb2RlZmxvdy9jb250ZW50LXVwZGF0ZXMtd2l0aC13ZWItcHVibGlzaGVyJyxcbiAgICB9LFxuICAgIHsgdGV4dDogJ0ludGVncmF0aW5nIFdlYiBQdWJsaXNoZXInLCBsaW5rOiAnL2NvZGVmbG93L2ludGVncmF0aW5nLXdlYi1wdWJsaXNoZXInIH0sXG4gICAgeyB0ZXh0OiAnQ29kZWZsb3cgRkFRJywgbGluazogJy9jb2RlZmxvdy9jb2RlZmxvdy1mYXEnIH0sXG4gIF0sXG4gIHRlYW1zOiBbXG4gICAgeyB0ZXh0OiAnV2hhdCBpcyBTdGFja0JsaXR6IFRlYW1zJywgbGluazogJy90ZWFtcy93aGF0LWlzLXN0YWNrYmxpdHotdGVhbXMubWQnIH0sXG4gICAgeyB0ZXh0OiAnU2V0dGluZyBVcCBZb3VyIFRlYW0nLCBsaW5rOiAnL3RlYW1zL3NldHRpbmctdXAteW91ci10ZWFtJyB9LFxuICAgIHsgdGV4dDogJ0NvbGxhYm9yYXRpb24gYW5kIEFjY2VzcyBDb250cm9sJywgbGluazogJy90ZWFtcy9jb2xsYWJvcmF0aW9uLWFuZC1hY2Nlc3MtY29udHJvbCcgfSxcbiAgICB7IHRleHQ6ICdQdWxsIFJlcXVlc3QgUmV2aWV3IEludGVncmF0aW9uJywgbGluazogJy90ZWFtcy9wdWxsLXJlcXVlc3QtcmV2aWV3LWludGVncmF0aW9uJyB9LFxuICAgIHsgdGV4dDogJ0Vudmlyb25tZW50IFZhcmlhYmxlcycsIGxpbms6ICcvdGVhbXMvZW52aXJvbm1lbnQtdmFyaWFibGVzJyB9LFxuICAgIHsgdGV4dDogJ1ByaXZhdGUgTlBNIFJlZ2lzdHJ5IEludGVncmF0aW9uJywgbGluazogJy90ZWFtcy9wcml2YXRlLW5wbS1yZWdpc3RyeS1pbnRlZ3JhdGlvbicgfSxcbiAgXSxcbiAgYXBpOiBbXG4gICAge1xuICAgICAgdGV4dDogJ0phdmFTY3JpcHQgU0RLJyxcbiAgICAgIGxpbms6ICcvcGxhdGZvcm0vYXBpL2phdmFzY3JpcHQtc2RrJyxcbiAgICAgIGl0ZW1zOiBbXG4gICAgICAgIHsgdGV4dDogJ1NESyBvdmVydmlldycsIGxpbms6ICcvcGxhdGZvcm0vYXBpL2phdmFzY3JpcHQtc2RrJyB9LFxuICAgICAgICB7IHRleHQ6ICdPcHRpb25zIHJlZmVyZW5jZScsIGxpbms6ICcvcGxhdGZvcm0vYXBpL2phdmFzY3JpcHQtc2RrLW9wdGlvbnMnIH0sXG4gICAgICAgIHsgdGV4dDogJ0NvbnRyb2xsaW5nIGVtYmVkcycsIGxpbms6ICcvcGxhdGZvcm0vYXBpL2phdmFzY3JpcHQtc2RrLXZtJyB9LFxuICAgICAgICB7IHRleHQ6ICdNYW5hZ2luZyBkZXBlbmRlbmNpZXMnLCBsaW5rOiAnL3BsYXRmb3JtL2FwaS9qYXZhc2NyaXB0LXNkay1kZXBlbmRlbmNpZXMnIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAgeyB0ZXh0OiAnUE9TVCBBUEknLCBsaW5rOiAnL3BsYXRmb3JtL2FwaS9wb3N0LWFwaScgfSxcbiAgICB7IHRleHQ6ICdXZWJDb250YWluZXIgQVBJJywgbGluazogJy9wbGF0Zm9ybS9hcGkvd2ViY29udGFpbmVyLWFwaScgfSxcbiAgXSxcbiAgd2ViY29udGFpbmVyczogW1xuICAgIHsgdGV4dDogJ1JvYWRtYXAnLCBsaW5rOiAnL3BsYXRmb3JtL3dlYmNvbnRhaW5lcnMvcm9hZG1hcCcgfSxcbiAgICB7IHRleHQ6ICdCcm93c2VyIHN1cHBvcnQnLCBsaW5rOiAnL3BsYXRmb3JtL3dlYmNvbnRhaW5lcnMvYnJvd3Nlci1zdXBwb3J0JyB9LFxuICAgIHsgdGV4dDogJ0Jyb3dzZXIgY29uZmlndXJhdGlvbicsIGxpbms6ICcvcGxhdGZvcm0vd2ViY29udGFpbmVycy9icm93c2VyLWNvbmZpZycgfSxcbiAgICB7IHRleHQ6ICdQcm9qZWN0IGNvbmZpZ3VyYXRpb24nLCBsaW5rOiAnL3BsYXRmb3JtL3dlYmNvbnRhaW5lcnMvcHJvamVjdC1jb25maWcnIH0sXG4gICAgeyB0ZXh0OiAnVHVyYm8gcGFja2FnZSBtYW5hZ2VyJywgbGluazogJy9wbGF0Zm9ybS93ZWJjb250YWluZXJzL3R1cmJvLXBhY2thZ2UtbWFuYWdlcicgfSxcbiAgICB7IHRleHQ6ICdUcm91Ymxlc2hvb3RpbmcnLCBsaW5rOiAnL3BsYXRmb3JtL3dlYmNvbnRhaW5lcnMvdHJvdWJsZXNob290aW5nLXdlYmNvbnRhaW5lcnMnIH0sXG4gIF0sXG4gIGVudGVycHJpc2U6IFtcbiAgICB7IHRleHQ6ICdPdmVydmlldycsIGxpbms6ICcvZW50ZXJwcmlzZS9vdmVydmlldycgfSxcbiAgICB7XG4gICAgICB0ZXh0OiAnSW5zdGFsbGF0aW9uJyxcbiAgICAgIGxpbms6ICcvZW50ZXJwcmlzZS9pbnN0YWxsYXRpb24vcXVpY2tzdGFydCcsXG4gICAgICBpdGVtczogW1xuICAgICAgICB7IHRleHQ6ICdRdWlja3N0YXJ0IG9uIEJhcmUgTWV0YWwnLCBsaW5rOiAnL2VudGVycHJpc2UvaW5zdGFsbGF0aW9uL3F1aWNrc3RhcnQnIH0sXG4gICAgICAgIHsgdGV4dDogJ1F1aWNrc3RhcnQgb24gR0NQIChOb24tR0tFKScsIGxpbms6ICcvZW50ZXJwcmlzZS9pbnN0YWxsYXRpb24vcXVpY2tzdGFydC1nY3AnIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnUXVpY2tzdGFydCAoRXhpc3RpbmcgQ2x1c3RlciknLFxuICAgICAgICAgIGxpbms6ICcvZW50ZXJwcmlzZS9pbnN0YWxsYXRpb24vcXVpY2tzdGFydC1leGlzdGluZy1jbHVzdGVyJyxcbiAgICAgICAgfSxcbiAgICAgICAgeyB0ZXh0OiAnQWRtaW5pc3RyYXRvciBHdWlkZScsIGxpbms6ICcvZW50ZXJwcmlzZS9pbnN0YWxsYXRpb24vYWRtaW5pc3RyYXRvci1ndWlkZScgfSxcbiAgICAgICAgeyB0ZXh0OiAnQWlyIEdhcHBlZCBJbnN0YWxscycsIGxpbms6ICcvZW50ZXJwcmlzZS9pbnN0YWxsYXRpb24vYWlyLWdhcHBlZC1pbnN0YWxscycgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7IHRleHQ6ICdDb25maWd1cmluZyBETlMgJiBUTFMnLCBsaW5rOiAnL2VudGVycHJpc2UvY29uZmlndXJpbmctZG5zJyB9LFxuICAgIHsgdGV4dDogJ0NvbmZpZ3VyaW5nIEZpcmV3YWxsIFJ1bGVzJywgbGluazogJy9lbnRlcnByaXNlL2NvbmZpZ3VyaW5nLWZpcmV3YWxsLXJ1bGVzJyB9LFxuICAgIHsgdGV4dDogJ1NldHRpbmcgdXAgU1NPJywgbGluazogJy9lbnRlcnByaXNlL3NzbycgfSxcbiAgICB7IHRleHQ6ICdTZXR0aW5nIHVwIFNTTyB3aXRoIE9rdGEnLCBsaW5rOiAnL2VudGVycHJpc2Uvb2t0YS1zc28nIH0sXG4gICAgeyB0ZXh0OiAnU2V0dGluZyB1cCBTU08gd2l0aCBBREZTJywgbGluazogJy9lbnRlcnByaXNlL2FkZnMtc3NvJyB9LFxuICAgIHsgdGV4dDogJ0Nvbm5lY3QgbnBtIFJlZ2lzdHJ5JywgbGluazogJy9lbnRlcnByaXNlL25wbScgfSxcbiAgICB7IHRleHQ6ICdTdGFydGVyIFByb2plY3RzJywgbGluazogJy9lbnRlcnByaXNlL3N0YXJ0ZXItcHJvamVjdHMnIH0sXG4gICAgeyB0ZXh0OiAnVXNlciBNYW5hZ2VtZW50JywgbGluazogJy9lbnRlcnByaXNlL3VzZXItbWFuYWdlbWVudCcgfSxcbiAgICB7IHRleHQ6ICdBZ2dyZWdhdGluZyBMb2dzJywgbGluazogJy9lbnRlcnByaXNlL2xvZy1hZ2dyZWdhdGlvbicgfSxcbiAgICB7IHRleHQ6ICdEYXRhIE1pZ3JhdGlvbicsIGxpbms6ICcvZW50ZXJwcmlzZS9kYXRhLW1pZ3JhdGlvbicgfSxcbiAgXSxcbn07XG5cbmNvbnN0IGxpbmtHcm91cHM6IFJlY29yZDxNZW51TGlua0dyb3VwLCB7IHRleHQ6IHN0cmluZzsgaXRlbXM6IE1lbnVMaW5rSXRlbVtdIH0+ID0ge1xuICB1c2VyR3VpZGU6IHtcbiAgICB0ZXh0OiAnVXNlciBHdWlkZScsXG4gICAgaXRlbXM6IGdyb3VwTGlua3MudXNlckd1aWRlLFxuICB9LFxuICBpbnRlZ3JhdGlvbkd1aWRlOiB7XG4gICAgdGV4dDogJ0ludGVncmF0aW9uIEd1aWRlJyxcbiAgICBpdGVtczogZ3JvdXBMaW5rcy5pbnRlZ3JhdGlvbkd1aWRlLFxuICB9LFxuICBjb2RlZmxvdzoge1xuICAgIHRleHQ6ICdDb2RlZmxvdycsXG4gICAgaXRlbXM6IGdyb3VwTGlua3MuY29kZWZsb3csXG4gIH0sXG4gIHRlYW1zOiB7XG4gICAgdGV4dDogJ1RlYW1zJyxcbiAgICBpdGVtczogZ3JvdXBMaW5rcy50ZWFtcyxcbiAgfSxcbiAgYXBpOiB7XG4gICAgdGV4dDogJ1N0YWNrQmxpdHogQVBJJyxcbiAgICBpdGVtczogZ3JvdXBMaW5rcy5hcGksXG4gIH0sXG4gIHdlYmNvbnRhaW5lcnM6IHtcbiAgICB0ZXh0OiAnV2ViQ29udGFpbmVycycsXG4gICAgaXRlbXM6IGdyb3VwTGlua3Mud2ViY29udGFpbmVycyxcbiAgfSxcbiAgZW50ZXJwcmlzZToge1xuICAgIHRleHQ6ICdFbnRlcnByaXNlIFNlcnZlcicsXG4gICAgaXRlbXM6IGdyb3VwTGlua3MuZW50ZXJwcmlzZSxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0R3JvdXBMaW5rID0gKGxpbmtHcm91cDogTWVudUxpbmtHcm91cCkgPT4gZ3JvdXBMaW5rc1tsaW5rR3JvdXBdWzBdLmxpbms7XG5cbmV4cG9ydCBjb25zdCBzaWRlYmFyTGlua3MgPSAoXG4gIHNpZGViYXI6ICdtYWluJyB8ICdlbnRlcnByaXNlJyxcbiAgYWN0aXZlTGlua0dyb3VwczogTWVudUxpbmtHcm91cFtdID0gW11cbikgPT4ge1xuICBpZiAoc2lkZWJhciA9PT0gJ2VudGVycHJpc2UnKSB7XG4gICAgcmV0dXJuIFtsaW5rR3JvdXBzLmVudGVycHJpc2VdO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGxpbmtHcm91cHMpXG4gICAgLmZpbHRlcigoW2tleV0pID0+IGtleSAhPT0gJ2VudGVycHJpc2UnKVxuICAgIC5tYXAoKFtrZXksIGRhdGFdKSA9PiAoe1xuICAgICAgLi4uZGF0YSxcbiAgICAgIGNvbGxhcHNlZDogIWFjdGl2ZUxpbmtHcm91cHMuaW5jbHVkZXMoa2V5IGFzIE1lbnVMaW5rR3JvdXApLFxuICAgIH0pKTtcbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBIb21lXG5cbmV4cG9ydCBjb25zdCBob21lVG9wTGlua3M6IENhcmRMaW5rW10gPSBbXG4gIHtcbiAgICBpY29uOiAnZmEtZmlsZS1pbXBvcnQnLFxuICAgIHRpdGxlOiAnR2V0IFN0YXJ0ZWQnLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0V4cGxvcmUgdGhlIGZ1bGwgcG90ZW50aWFsIG9mIFN0YWNrQmxpdHo6IGZyb20gd3JpdGluZyBjb2RlIG9yIHNwaW5uaW5nIHF1aWNrIGRlbW9zIHRvIG1ha2luZyB5b3VyIGRvY3MgZGVsaWdodGZ1bC4nLFxuICAgIHVybDogJy9ndWlkZXMvdXNlci1ndWlkZS93aGF0LWlzLXN0YWNrYmxpdHonLFxuICB9LFxuICB7XG4gICAgaWNvbjogJ2ZhLWJyb3dzZXInLFxuICAgIHRpdGxlOiAnQ29kZWZsb3cnLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ09uZSBjbGljayBvcGVucyBhIGZ1bGwgaW4tYnJvd3NlciBJREUgZm9yIHlvdXIgcmVwb3MsIGlzc3VlcywgYW5kIFBScy4gTm8gbW9yZSBjbG9uaW5nLCBpbnN0YWxsaW5nLCBzdGFzaGluZyEnLFxuICAgIHVybDogJy9jb2RlZmxvdy93aGF0LWlzLWNvZGVmbG93JyxcbiAgfSxcbiAge1xuICAgIGljb246ICdmYS1icmFja2V0cy1jdXJseScsXG4gICAgdGl0bGU6ICdBUEkgUmVmZXJlbmNlJyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdFbWJlZCBHaXRIdWIgcmVwb3MsIGNyZWF0ZSBuZXcgcHJvamVjdHMsIGJ1aWxkIGVkdWNhdGlvbmFsIGV4cGVyaWVuY2VzLCBhbGwgcHJvZ3JhbW1hdGljYWxseSB3aXRoIG91ciBTREsuJyxcbiAgICB1cmw6ICcvcGxhdGZvcm0vYXBpL2phdmFzY3JpcHQtc2RrJyxcbiAgfSxcbiAge1xuICAgIGljb246ICdmYS1saWZlLXJpbmcnLFxuICAgIHRpdGxlOiAnSW50ZWdyYXRpbmcgU3RhY2tCbGl0eicsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnRm9sbG93IGd1aWRlcyBvbiBidWlsZGluZyBpbnRlcmFjdGl2ZSBwbGF5Z3JvdW5kcywgaW1wcm92aW5nIGJ1ZyByZXByb3MsIGFuZCB1c2luZyBTdGFja0JsaXR6IGZvciB0ZWNoIGVkdWNhdGlvbi4nLFxuICAgIHVybDogJy9ndWlkZXMvaW50ZWdyYXRpb24vb3Blbi1mcm9tLWdpdGh1YicsXG4gIH0sXG4gIHtcbiAgICBpY29uOiAnZmEtdXNlcnMnLFxuICAgIHRpdGxlOiAnVGVhbXMnLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1dpdGggU3RhY2tCbGl0eiBUZWFtcyB5b3UgY3JlYXRlIGEgc2VjdXJlLCBwcml2YXRlIHdvcmtzcGFjZSBmb3IgeW91IGFuZCB5b3VyIHRlYW1tYXRlcy4nLFxuICAgIHVybDogJy90ZWFtcy93aGF0LWlzLXN0YWNrYmxpdHotdGVhbXMnLFxuICB9LFxuICB7XG4gICAgaWNvbjogJ2ZhLXNlcnZlcicsXG4gICAgdGl0bGU6ICdFbnRlcnByaXNlIFNlcnZlcicsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnUnVuIFN0YWNrQmxpdHogYmVoaW5kIHlvdXIgZmlyZXdhbGwsIG9uIG5ldyBvciBleGlzdGluZyBLdWJlcm5ldGVzIGNsdXN0ZXJzLCB3aXRoIG9wdGlvbnMgZm9yIGFpciBnYXBwaW5nIGFuZCBTU08uJyxcbiAgICB1cmw6ICcvZW50ZXJwcmlzZS9vdmVydmlldycsXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgaG9tZUV4dGVybmFsTGlua3M6IENhcmRMaW5rW10gPSBbXG4gIHtcbiAgICB0aXRsZTogJ1N0YWNrQmxpdHogQmxvZycsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnU3RheSB1cCB0byBkYXRlIHdpdGggb3VyIG5ld3MsIHJlYWQgdGVjaCBwb3N0cyBmcm9tIG91ciBlbmdpbmVlcnMsIGFuZCBqb2luIGluIGNlbGVicmF0aW5nIG91ciBjb21tdW5pdHkuJyxcbiAgICB1cmw6ICdodHRwczovL2Jsb2cuc3RhY2tibGl0ei5jb20vJyxcbiAgICBsYXJnZTogdHJ1ZSxcbiAgICBiZ0ltZzogJ2JvbHQnLFxuICB9LFxuICB7XG4gICAgdGl0bGU6ICdDb21tdW5pdHknLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0pvaW4gb3VyIHN1cHBvcnRpdmUgY29tbXVuaXR5IG9uIERpc2NvcmQsIGFzayBxdWVzdGlvbnMsIGFuZCBzaGFyZSB5b3VyIFN0YWNrQmxpdHogcHJvamVjdHMuJyxcbiAgICB1cmw6ICdodHRwczovL2Rpc2NvcmQuZ2cvc3RhY2tibGl0eicsXG4gICAgbGFyZ2U6IHRydWUsXG4gICAgYmdJbWc6ICdzcXVhcmVzJyxcbiAgfSxcbl07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBGb290ZXJcblxuZXhwb3J0IGNvbnN0IGZvb3RlclNlY3Rpb25zOiBGb290ZXJTZWN0aW9uW10gPSBbXG4gIHtcbiAgICB0aXRsZTogJ1dvcmtzcGFjZXMnLFxuICAgIGl0ZW1zOiBbXG4gICAgICB7IHRleHQ6ICdQb3B1bGFyJywgbGluazogJ2h0dHBzOi8vc3RhY2tibGl0ei5jb20vP3N0YXJ0ZXJzPXBvcHVsYXInIH0sXG4gICAgICB7IHRleHQ6ICdGcm9udGVuZCcsIGxpbms6ICdodHRwczovL3N0YWNrYmxpdHouY29tLz9zdGFydGVycz1mcm9udGVuZCcgfSxcbiAgICAgIHsgdGV4dDogJ0JhY2tlbmQnLCBsaW5rOiAnaHR0cHM6Ly9zdGFja2JsaXR6LmNvbS8/c3RhcnRlcnM9YmFja2VuZCcgfSxcbiAgICAgIHsgdGV4dDogJ0Z1bGxzdGFjaycsIGxpbms6ICdodHRwczovL3N0YWNrYmxpdHouY29tLz9zdGFydGVycz1mdWxsc3RhY2snIH0sXG4gICAgICB7IHRleHQ6ICdWaXRlJywgbGluazogJ2h0dHBzOi8vc3RhY2tibGl0ei5jb20vP3N0YXJ0ZXJzPXZpdGUnIH0sXG4gICAgICB7IHRleHQ6ICdEb2NzLCBCbG9ncyAmIFNsaWRlcycsIGxpbms6ICdodHRwczovL3N0YWNrYmxpdHouY29tLz9zdGFydGVycz1kb2NzJyB9LFxuICAgICAgeyB0ZXh0OiAnVmFuaWxsYScsIGxpbms6ICdodHRwczovL3N0YWNrYmxpdHouY29tLz9zdGFydGVycz12YW5pbGxhJyB9LFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICB0aXRsZTogJ1N0YXJ0IGEgbmV3IFByb2plY3QnLFxuICAgIGl0ZW1zOiBbXG4gICAgICB7IHRleHQ6ICdGcm9tIGEgV29ya3NwYWNlJywgbGluazogJ2h0dHBzOi8vc3RhY2tibGl0ei5jb20vP3N0YXJ0ZXJzPXBvcHVsYXInIH0sXG4gICAgICB7XG4gICAgICAgIHRleHQ6ICdGcm9tIGEgR2l0SHViIFJlcG9zaXRvcnknLFxuICAgICAgICBsaW5rOiAnL2d1aWRlcy91c2VyLWd1aWRlL2ltcG9ydGluZy1wcm9qZWN0cyNpbXBvcnQtZnJvbS1naXRodWInLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGV4dDogJ0Zyb20geW91ciBjb21wdXRlcicsXG4gICAgICAgIGxpbms6ICcvZ3VpZGVzL3VzZXItZ3VpZGUvaW1wb3J0aW5nLXByb2plY3RzI3VwbG9hZC1mcm9tLXlvdXItY29tcHV0ZXInLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgdGl0bGU6ICdQcm9kdWN0JyxcbiAgICBpdGVtczogW1xuICAgICAgeyB0ZXh0OiAnRG9jcycsIGxpbms6ICdodHRwczovL2RldmVsb3Blci5zdGFja2JsaXR6LmNvbS8nIH0sXG4gICAgICB7IHRleHQ6ICdFbnRlcnByaXNlJywgbGluazogJ2h0dHBzOi8vc3RhY2tibGl0ei5jb20vZW50ZXJwcmlzZScgfSxcbiAgICAgIHsgdGV4dDogJ1ByaWNpbmcnLCBsaW5rOiAnaHR0cHM6Ly9zdGFja2JsaXR6LmNvbS9tZW1iZXJzaGlwJyB9LFxuICAgICAgeyB0ZXh0OiAnQ2FzZSBTdHVkaWVzJywgbGluazogJ2h0dHBzOi8vc3RhY2tibGl0ei5jb20vY2FzZS1zdHVkaWVzJyB9LFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICB0aXRsZTogJ0NvbXBhbnknLFxuICAgIGl0ZW1zOiBbXG4gICAgICB7IHRleHQ6ICdCbG9nJywgbGluazogJ2h0dHBzOi8vYmxvZy5zdGFja2JsaXR6LmNvbS8nIH0sXG4gICAgICB7IHRleHQ6ICdDYXJlZXJzJywgbGluazogJ2h0dHBzOi8vc3RhY2tibGl0ei5jb20vY2FyZWVycycgfSxcbiAgICAgIHsgdGV4dDogJ0NvbW11bml0eScsIGxpbms6ICdodHRwczovL2Rpc2NvcmQuZ2cvc3RhY2tibGl0eicgfSxcbiAgICAgIHsgdGV4dDogJ0VudGVycHJpc2UgU2FsZXMnLCBsaW5rOiAnaHR0cHM6Ly9zdGFja2JsaXR6LmNvbS9lbnRlcnByaXNlLWNvbnRhY3QnIH0sXG4gICAgICB7IHRleHQ6ICdQcml2YWN5JywgbGluazogJ2h0dHBzOi8vc3RhY2tibGl0ei5jb20vcHJpdmFjeS1wb2xpY3knIH0sXG4gICAgICB7IHRleHQ6ICdUZXJtcyBvZiBTZXJ2aWNlJywgbGluazogJ2h0dHBzOi8vc3RhY2tibGl0ei5jb20vdGVybXMtb2Ytc2VydmljZScgfSxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgdGl0bGU6ICdDb25uZWN0JyxcbiAgICBpdGVtczogW1xuICAgICAgeyB0ZXh0OiAnR2l0SHViJywgbGluazogJ2h0dHBzOi8vZ2l0aHViLmNvbS9zdGFja2JsaXR6L2NvcmUnIH0sXG4gICAgICB7IHRleHQ6ICdUd2l0dGVyJywgbGluazogJ2h0dHBzOi8vdHdpdHRlci5jb20vc3RhY2tibGl0eicgfSxcbiAgICAgIHsgdGV4dDogJ0Rpc2NvcmQnLCBsaW5rOiAnaHR0cHM6Ly9kaXNjb3JkLmdnL3N0YWNrYmxpdHonIH0sXG4gICAgXSxcbiAgfSxcbl07XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQXdRLE9BQU8sWUFBWTtBQUUzUixPQUFPLGdCQUFnQjtBQUN2QixTQUFTLG9CQUFxQzs7O0FDRTlDLElBQU0sYUFBb0Q7QUFBQSxFQUN4RCxXQUFXO0FBQUEsSUFDVCxFQUFFLE1BQU0sc0JBQXNCLE1BQU0sd0NBQXdDO0FBQUEsSUFDNUUsRUFBRSxNQUFNLG1CQUFtQixNQUFNLHFDQUFxQztBQUFBLElBQ3RFLEVBQUUsTUFBTSxvQkFBb0IsTUFBTSxzQ0FBc0M7QUFBQSxJQUN4RSxFQUFFLE1BQU0sMEJBQTBCLE1BQU0sNENBQTRDO0FBQUEsSUFDcEYsRUFBRSxNQUFNLHNCQUFzQixNQUFNLHdDQUF3QztBQUFBLElBQzVFLEVBQUUsTUFBTSxtQ0FBOEIsTUFBTSw4Q0FBOEM7QUFBQSxJQUMxRixFQUFFLE1BQU0sZUFBZSxNQUFNLGlDQUFpQztBQUFBLElBQzlELEVBQUUsTUFBTSxzQkFBc0IsTUFBTSx3Q0FBd0M7QUFBQSxJQUM1RSxFQUFFLE1BQU0sZ0JBQWdCLE1BQU0sa0NBQWtDO0FBQUEsRUFDbEU7QUFBQSxFQUNBLGtCQUFrQjtBQUFBLElBQ2hCLEVBQUUsTUFBTSxzQkFBc0IsTUFBTSxnQ0FBZ0M7QUFBQSxJQUNwRSxFQUFFLE1BQU0sa0NBQWtDLE1BQU0sdUNBQXVDO0FBQUEsSUFDdkYsRUFBRSxNQUFNLGtDQUFrQyxNQUFNLHNDQUFzQztBQUFBLElBQ3RGLEVBQUUsTUFBTSxxQkFBcUIsTUFBTSx3Q0FBd0M7QUFBQSxFQUM3RTtBQUFBLEVBQ0EsVUFBVTtBQUFBLElBQ1IsRUFBRSxNQUFNLHFCQUFxQixNQUFNLDZCQUE2QjtBQUFBLElBQ2hFLEVBQUUsTUFBTSxnQkFBZ0IsTUFBTSx5QkFBeUI7QUFBQSxJQUN2RCxFQUFFLE1BQU0sMkJBQTJCLE1BQU0sb0NBQW9DO0FBQUEsSUFDN0UsRUFBRSxNQUFNLCtCQUErQixNQUFNLHdDQUF3QztBQUFBLElBQ3JGLEVBQUUsTUFBTSx5QkFBeUIsTUFBTSxrQ0FBa0M7QUFBQSxJQUN6RTtBQUFBLE1BQ0UsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLElBQ1I7QUFBQSxJQUNBLEVBQUUsTUFBTSw2QkFBNkIsTUFBTSxzQ0FBc0M7QUFBQSxJQUNqRixFQUFFLE1BQU0sZ0JBQWdCLE1BQU0seUJBQXlCO0FBQUEsRUFDekQ7QUFBQSxFQUNBLE9BQU87QUFBQSxJQUNMLEVBQUUsTUFBTSw0QkFBNEIsTUFBTSxxQ0FBcUM7QUFBQSxJQUMvRSxFQUFFLE1BQU0sd0JBQXdCLE1BQU0sOEJBQThCO0FBQUEsSUFDcEUsRUFBRSxNQUFNLG9DQUFvQyxNQUFNLDBDQUEwQztBQUFBLElBQzVGLEVBQUUsTUFBTSxtQ0FBbUMsTUFBTSx5Q0FBeUM7QUFBQSxJQUMxRixFQUFFLE1BQU0seUJBQXlCLE1BQU0sK0JBQStCO0FBQUEsSUFDdEUsRUFBRSxNQUFNLG9DQUFvQyxNQUFNLDBDQUEwQztBQUFBLEVBQzlGO0FBQUEsRUFDQSxLQUFLO0FBQUEsSUFDSDtBQUFBLE1BQ0UsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sT0FBTztBQUFBLFFBQ0wsRUFBRSxNQUFNLGdCQUFnQixNQUFNLCtCQUErQjtBQUFBLFFBQzdELEVBQUUsTUFBTSxxQkFBcUIsTUFBTSx1Q0FBdUM7QUFBQSxRQUMxRSxFQUFFLE1BQU0sc0JBQXNCLE1BQU0sa0NBQWtDO0FBQUEsUUFDdEUsRUFBRSxNQUFNLHlCQUF5QixNQUFNLDRDQUE0QztBQUFBLE1BQ3JGO0FBQUEsSUFDRjtBQUFBLElBQ0EsRUFBRSxNQUFNLFlBQVksTUFBTSx5QkFBeUI7QUFBQSxJQUNuRCxFQUFFLE1BQU0sb0JBQW9CLE1BQU0saUNBQWlDO0FBQUEsRUFDckU7QUFBQSxFQUNBLGVBQWU7QUFBQSxJQUNiLEVBQUUsTUFBTSxXQUFXLE1BQU0sa0NBQWtDO0FBQUEsSUFDM0QsRUFBRSxNQUFNLG1CQUFtQixNQUFNLDBDQUEwQztBQUFBLElBQzNFLEVBQUUsTUFBTSx5QkFBeUIsTUFBTSx5Q0FBeUM7QUFBQSxJQUNoRixFQUFFLE1BQU0seUJBQXlCLE1BQU0seUNBQXlDO0FBQUEsSUFDaEYsRUFBRSxNQUFNLHlCQUF5QixNQUFNLGdEQUFnRDtBQUFBLElBQ3ZGLEVBQUUsTUFBTSxtQkFBbUIsTUFBTSx3REFBd0Q7QUFBQSxFQUMzRjtBQUFBLEVBQ0EsWUFBWTtBQUFBLElBQ1YsRUFBRSxNQUFNLFlBQVksTUFBTSx1QkFBdUI7QUFBQSxJQUNqRDtBQUFBLE1BQ0UsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sT0FBTztBQUFBLFFBQ0wsRUFBRSxNQUFNLDRCQUE0QixNQUFNLHNDQUFzQztBQUFBLFFBQ2hGLEVBQUUsTUFBTSwrQkFBK0IsTUFBTSwwQ0FBMEM7QUFBQSxRQUN2RjtBQUFBLFVBQ0UsTUFBTTtBQUFBLFVBQ04sTUFBTTtBQUFBLFFBQ1I7QUFBQSxRQUNBLEVBQUUsTUFBTSx1QkFBdUIsTUFBTSwrQ0FBK0M7QUFBQSxRQUNwRixFQUFFLE1BQU0sdUJBQXVCLE1BQU0sK0NBQStDO0FBQUEsTUFDdEY7QUFBQSxJQUNGO0FBQUEsSUFDQSxFQUFFLE1BQU0seUJBQXlCLE1BQU0sOEJBQThCO0FBQUEsSUFDckUsRUFBRSxNQUFNLDhCQUE4QixNQUFNLHlDQUF5QztBQUFBLElBQ3JGLEVBQUUsTUFBTSxrQkFBa0IsTUFBTSxrQkFBa0I7QUFBQSxJQUNsRCxFQUFFLE1BQU0sNEJBQTRCLE1BQU0sdUJBQXVCO0FBQUEsSUFDakUsRUFBRSxNQUFNLDRCQUE0QixNQUFNLHVCQUF1QjtBQUFBLElBQ2pFLEVBQUUsTUFBTSx3QkFBd0IsTUFBTSxrQkFBa0I7QUFBQSxJQUN4RCxFQUFFLE1BQU0sb0JBQW9CLE1BQU0sK0JBQStCO0FBQUEsSUFDakUsRUFBRSxNQUFNLG1CQUFtQixNQUFNLDhCQUE4QjtBQUFBLElBQy9ELEVBQUUsTUFBTSxvQkFBb0IsTUFBTSw4QkFBOEI7QUFBQSxJQUNoRSxFQUFFLE1BQU0sa0JBQWtCLE1BQU0sNkJBQTZCO0FBQUEsRUFDL0Q7QUFDRjtBQUVBLElBQU0sYUFBNkU7QUFBQSxFQUNqRixXQUFXO0FBQUEsSUFDVCxNQUFNO0FBQUEsSUFDTixPQUFPLFdBQVc7QUFBQSxFQUNwQjtBQUFBLEVBQ0Esa0JBQWtCO0FBQUEsSUFDaEIsTUFBTTtBQUFBLElBQ04sT0FBTyxXQUFXO0FBQUEsRUFDcEI7QUFBQSxFQUNBLFVBQVU7QUFBQSxJQUNSLE1BQU07QUFBQSxJQUNOLE9BQU8sV0FBVztBQUFBLEVBQ3BCO0FBQUEsRUFDQSxPQUFPO0FBQUEsSUFDTCxNQUFNO0FBQUEsSUFDTixPQUFPLFdBQVc7QUFBQSxFQUNwQjtBQUFBLEVBQ0EsS0FBSztBQUFBLElBQ0gsTUFBTTtBQUFBLElBQ04sT0FBTyxXQUFXO0FBQUEsRUFDcEI7QUFBQSxFQUNBLGVBQWU7QUFBQSxJQUNiLE1BQU07QUFBQSxJQUNOLE9BQU8sV0FBVztBQUFBLEVBQ3BCO0FBQUEsRUFDQSxZQUFZO0FBQUEsSUFDVixNQUFNO0FBQUEsSUFDTixPQUFPLFdBQVc7QUFBQSxFQUNwQjtBQUNGO0FBRU8sSUFBTSxtQkFBbUIsQ0FBQyxjQUE2QixXQUFXLFNBQVMsRUFBRSxDQUFDLEVBQUU7QUFFaEYsSUFBTSxlQUFlLENBQzFCLFNBQ0EsbUJBQW9DLENBQUMsTUFDbEM7QUFDSCxNQUFJLFlBQVksY0FBYztBQUM1QixXQUFPLENBQUMsV0FBVyxVQUFVO0FBQUEsRUFDL0I7QUFFQSxTQUFPLE9BQU8sUUFBUSxVQUFVLEVBQzdCLE9BQU8sQ0FBQyxDQUFDLEdBQUcsTUFBTSxRQUFRLFlBQVksRUFDdEMsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLE9BQU87QUFBQSxJQUNyQixHQUFHO0FBQUEsSUFDSCxXQUFXLENBQUMsaUJBQWlCLFNBQVMsR0FBb0I7QUFBQSxFQUM1RCxFQUFFO0FBQ047OztBRHhJQSxPQUFPLE9BQU87QUFFZCxJQUFNLE9BQU87QUFDYixJQUFNLG1CQUFtQixtQ0FBbUMsSUFBSTtBQUVoRSxJQUFPLGlCQUFRLGFBQWE7QUFBQSxFQUMxQixRQUFRO0FBQUEsRUFDUixRQUFRLFVBQVUsSUFBSTtBQUFBLEVBQ3RCLFdBQVc7QUFBQSxFQUNYLE1BQU07QUFBQTtBQUFBLEVBR04sV0FBVztBQUFBO0FBQUEsRUFHWCxpQkFBaUI7QUFBQTtBQUFBLEVBR2pCLE1BQU07QUFBQSxFQUNOLE9BQU87QUFBQSxFQUNQLGFBQ0U7QUFBQSxFQUNGLE1BQU07QUFBQSxJQUNKLENBQUMsUUFBUSxFQUFFLEtBQUssUUFBUSxNQUFNLGFBQWEsTUFBTSxHQUFHLElBQUksd0JBQXdCLENBQUM7QUFBQSxJQUNqRixHQUFHLGlCQUFpQixRQUFRLEdBQUc7QUFBQSxFQUNqQztBQUFBO0FBQUEsRUFHQSxhQUFhO0FBQUEsRUFDYixTQUFTO0FBQUEsSUFDUCxVQUFVO0FBQUEsRUFDWjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLGNBQWMsRUFBRSxVQUFVLEtBQUssR0FBRztBQUdoQyxVQUFNLEVBQUUsT0FBTyxhQUFhLFNBQVMsSUFBSSxTQUFTO0FBQ2xELFVBQU0sVUFBVSxTQUFTLGFBQWEsWUFBWTtBQUdsRCxVQUFNLE9BQXFCLENBQUM7QUFHNUIsU0FBSyxLQUFLLENBQUMsUUFBUSxFQUFFLFVBQVUsV0FBVyxTQUFTLFFBQVEsQ0FBQyxDQUFDO0FBQzdELFNBQUssS0FBSyxDQUFDLFFBQVEsRUFBRSxVQUFVLFlBQVksU0FBUyxNQUFNLENBQUMsQ0FBQztBQUM1RCxRQUFJLFVBQVU7QUFDWixZQUFNLE1BQU0sR0FBRyxnQkFBZ0IsVUFBVSxRQUFRO0FBQ2pELFdBQUssS0FBSyxDQUFDLFFBQVEsRUFBRSxVQUFVLFlBQVksU0FBUyxJQUFJLENBQUMsQ0FBQztBQUFBLElBQzVEO0FBR0EsU0FBSyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLFNBQVMsY0FBYyxDQUFDLENBQUM7QUFDcEUsU0FBSyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLFNBQVMsc0JBQXNCLENBQUMsQ0FBQztBQUM1RSxTQUFLLEtBQUssQ0FBQyxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsU0FBUyxNQUFNLENBQUMsQ0FBQztBQUM3RCxRQUFJLGFBQWE7QUFDZixXQUFLLEtBQUssQ0FBQyxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsU0FBUyxZQUFZLENBQUMsQ0FBQztBQUFBLElBQzNFO0FBRUEsV0FBTztBQUFBLEVBQ1Q7QUFBQTtBQUFBLEVBR0EsYUFBYTtBQUFBLElBQ1gsV0FBVztBQUFBLElBQ1gsTUFBTTtBQUFBLElBQ04sUUFBUSxnQkFBZ0IsUUFBUSxHQUFHO0FBQUEsSUFDbkMsVUFBVTtBQUFBLE1BQ1IsU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLElBQ1I7QUFBQSxJQUNBLEtBQUs7QUFBQSxNQUNILEVBQUUsTUFBTSxVQUFVLE1BQU0saUJBQWlCLFdBQVcsRUFBRTtBQUFBLE1BQ3RELEVBQUUsTUFBTSxZQUFZLE1BQU0saUJBQWlCLFVBQVUsRUFBRTtBQUFBLE1BQ3ZELEVBQUUsTUFBTSxPQUFPLE1BQU0saUJBQWlCLEtBQUssRUFBRTtBQUFBLE1BQzdDLEVBQUUsTUFBTSxpQkFBaUIsTUFBTSxpQkFBaUIsZUFBZSxFQUFFO0FBQUEsTUFDakUsRUFBRSxNQUFNLFNBQVMsTUFBTSxpQkFBaUIsT0FBTyxFQUFFO0FBQUEsTUFDakQsRUFBRSxNQUFNLGNBQWMsTUFBTSxpQkFBaUIsWUFBWSxFQUFFO0FBQUEsSUFDN0Q7QUFBQSxJQUNBLFNBQVM7QUFBQSxNQUNQLFlBQVksYUFBYSxRQUFRLENBQUMsYUFBYSxrQkFBa0IsQ0FBQztBQUFBLE1BQ2xFLGNBQWMsYUFBYSxRQUFRLENBQUMsVUFBVSxDQUFDO0FBQUEsTUFDL0MsV0FBVyxhQUFhLFFBQVEsQ0FBQyxPQUFPLENBQUM7QUFBQSxNQUN6QyxrQkFBa0IsYUFBYSxRQUFRLENBQUMsS0FBSyxDQUFDO0FBQUEsTUFDOUMsNEJBQTRCLGFBQWEsUUFBUSxDQUFDLGVBQWUsQ0FBQztBQUFBLE1BQ2xFLGdCQUFnQixhQUFhLGNBQWMsQ0FBQyxZQUFZLENBQUM7QUFBQSxJQUMzRDtBQUFBLEVBQ0Y7QUFBQSxFQUVBLFdBQVcsU0FBUztBQUNsQixZQUFRO0FBQUEsRUFDVjtBQUFBLEVBRUEsVUFBVTtBQUFBLElBQ1IsUUFBUSxDQUFDLE9BQU87QUFDZCxTQUFHLElBQUksVUFBVTtBQUFBLElBQ25CO0FBQUEsRUFDRjtBQUNGLENBQUM7QUFFRCxTQUFTLGlCQUFpQixLQUFzQztBQUM5RCxNQUFJLENBQUMsSUFBSSxhQUFhO0FBQ3BCLFdBQU8sQ0FBQztBQUFBLEVBQ1Y7QUFDQSxTQUFPO0FBQUEsSUFDTDtBQUFBLE1BQ0U7QUFBQSxNQUNBLEVBQUUsS0FBSywrQ0FBK0MsSUFBSSxXQUFXLElBQUksT0FBTyxHQUFHO0FBQUEsSUFDckY7QUFBQSxJQUNBO0FBQUEsTUFDRTtBQUFBLE1BQ0EsQ0FBQztBQUFBLE1BQ0Qsc0hBQXNILElBQUksV0FBVztBQUFBLElBQ3ZJO0FBQUEsRUFDRjtBQUNGO0FBRUEsU0FBUyxnQkFBZ0IsS0FBd0I7QUFDL0MsTUFBSSxJQUFJLG1CQUFtQixJQUFJLGtCQUFrQjtBQUMvQyxXQUFPO0FBQUEsTUFDTCxVQUFVO0FBQUEsTUFDVixTQUFTO0FBQUEsUUFDUCxXQUFXO0FBQUEsUUFDWCxPQUFPLElBQUk7QUFBQSxRQUNYLFFBQVEsSUFBSTtBQUFBLE1BQ2Q7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo= diff --git a/.vitepress/theme/components/AuthButtons/linkStyles.scss b/.vitepress/theme/components/AuthButtons/linkStyles.scss index 7aaa0fde..9089ee4c 100644 --- a/.vitepress/theme/components/AuthButtons/linkStyles.scss +++ b/.vitepress/theme/components/AuthButtons/linkStyles.scss @@ -1,48 +1,47 @@ - .link { - --outline-color-hsl: 0, 0%, 100%; - --outline-opacity: 0.08; - --text-strong-color: #fff; - display: flex; - align-items: center; - height: 36px; - padding: 0 20px; - border-radius: 8px; - color: var(--text-strong-color); - font-size: 13px; - font-weight: 500; - text-decoration: none; - box-shadow: inset 0 0 0 1px hsla(var(--outline-color-hsl), var(--outline-opacity)); - background-color: hsla(224, 32%, 28%, 0.24); - backdrop-filter: blur(8px); - transition: 0.1s ease; - transition-property: background-color, box-shadow, color; - } - - .light { - &:hover { - --outline-opacity: 0.14; - color: var(--text-strong-color); - background-color: hsla(224, 32%, 28%, 0.54); - } - :root:not(.dark) & { - --outline-color-hsl: 224, 32%, 28%; - --outline-opacity: 0.1; - color: hsl(240, 6%, 23%); - background-color: hsla(224, 32%, 28%, 0.1); - &:hover { - --outline-opacity: 0.2; - background-color: transparent; - } - } - } - - .accent { + --outline-color-hsl: 0, 0%, 100%; + --outline-opacity: 0.08; + --text-strong-color: #fff; + display: flex; + align-items: center; + height: 36px; + padding: 0 20px; + border-radius: 8px; + color: var(--text-strong-color); + font-size: 13px; + font-weight: 500; + text-decoration: none; + box-shadow: inset 0 0 0 1px hsla(var(--outline-color-hsl), var(--outline-opacity)); + background-color: hsla(224, 32%, 28%, 0.24); + backdrop-filter: blur(8px); + transition: 0.1s ease; + transition-property: background-color, box-shadow, color; +} + +.light { + &:hover { --outline-opacity: 0.14; color: var(--text-strong-color); - background-color: hsl(214, 87%, 51%); + background-color: hsla(224, 32%, 28%, 0.54); + } + :root:not(.dark) & { + --outline-color-hsl: 224, 32%, 28%; + --outline-opacity: 0.1; + color: hsl(240, 6%, 23%); + background-color: hsla(224, 32%, 28%, 0.1); &:hover { - --outline-opacity: 0.24; - background-color: hsl(208, 100%, 53%); + --outline-opacity: 0.2; + background-color: transparent; } - } \ No newline at end of file + } +} + +.accent { + --outline-opacity: 0.14; + color: var(--text-strong-color); + background-color: hsl(214, 87%, 51%); + &:hover { + --outline-opacity: 0.24; + background-color: hsl(208, 100%, 53%); + } +} diff --git a/.vitepress/theme/components/Helpers/CardLink.vue b/.vitepress/theme/components/Helpers/CardLink.vue index d5d1d99e..6c0a9e0e 100644 --- a/.vitepress/theme/components/Helpers/CardLink.vue +++ b/.vitepress/theme/components/Helpers/CardLink.vue @@ -102,8 +102,7 @@ export default { min-width: 100px; height: 64px; &:not(.has-bg)::before { - -webkit-mask-size: 32px; - mask-size: 32px; + mask-size: 32px; } } @@ -120,14 +119,10 @@ export default { height: 100%; transition: background-color 0.14s ease; background-color: var(--vp-c-text-3); - -webkit-mask-image: var(--icon-img); - mask-image: var(--icon-img); - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: var(--icon-mask-size); - mask-size: var(--icon-mask-size); + mask-image: var(--icon-img); + mask-position: center; + mask-repeat: no-repeat; + mask-size: var(--icon-mask-size); .card-body:hover & { background-color: var(--vp-c-text-2); } @@ -149,8 +144,7 @@ export default { min-width: 84px; height: 48px; &::before { - -webkit-mask-size: 28px; - mask-size: 28px; + mask-size: 28px; } } &.is-podcast.small, @@ -159,7 +153,6 @@ export default { min-width: 64px; height: 48px; &::before { - -webkit-mask-size: 24px; mask-size: 24px; } } diff --git a/.vitepress/theme/components/HomeIntro.vue b/.vitepress/theme/components/HomeIntro.vue index f927d295..9fcd4a70 100644 --- a/.vitepress/theme/components/HomeIntro.vue +++ b/.vitepress/theme/components/HomeIntro.vue @@ -31,14 +31,11 @@ header { } } -$icon-mask: linear-gradient(to bottom, #fff9 10%, #fffa 30%, #fff0 74%); - header .icon { width: 160px; height: 160px; color: var(--sb-foreground-highlight); - -webkit-mask-image: $icon-mask; - mask-image: $icon-mask; + mask-image: linear-gradient(to bottom, #fff9 10%, #fffa 30%, #fff0 74%); @media (prefers-contrast: more) { display: none; diff --git a/.vitepress/theme/components/Icons/SvgIcon.vue b/.vitepress/theme/components/Icons/SvgIcon.vue index 68bf2182..4b05acc2 100644 --- a/.vitepress/theme/components/Icons/SvgIcon.vue +++ b/.vitepress/theme/components/Icons/SvgIcon.vue @@ -10,10 +10,14 @@ const props = defineProps<{ const styleObj = computed(() => { const style: Record = {}; - const url = iconsUrls[props.icon]; + if (url) { - style['--icon'] = `url('${url}')`; + // Vite may transform SVG assets to data URLs, using single quotes for XML + // attribute values for some reason. This means we can't always quote URLs + // with single quotes, or the CSS value might be invalid. + const quote = url.includes(`"`) ? `'` : `"`; + style['--icon'] = `url(${quote}${url}${quote})`; } else { style['visibility'] = 'hidden'; style['--error'] = `'${props.icon} not found'`; @@ -39,10 +43,12 @@ const styleObj = computed(() => { flex: none; width: var(--size, 1em); height: var(--size, 1em); - color: inherit; - // Use SVG icon as mask for background - -webkit-mask: var(--icon) center/contain no-repeat; - mask: var(--icon) center/contain no-repeat; + // Use inherited text color to paint a square background-color: currentColor; + // Then use the SVG icon as mask + mask-image: var(--icon); + mask-position: center; + mask-repeat: no-repeat; + mask-size: contain; } diff --git a/.vitepress/theme/icons/index.ts b/.vitepress/theme/icons/index.ts index 4c198422..d9609748 100644 --- a/.vitepress/theme/icons/index.ts +++ b/.vitepress/theme/icons/index.ts @@ -1,6 +1,7 @@ // Tell Vite to load all SVG icons in the icons folder as part of the build. const importedIconsUrls = import.meta.glob('./*.svg', { - as: 'url', + query: '?url', + import: 'default', eager: true, }); @@ -9,6 +10,6 @@ const iconNamePattern = /([0-9a-zA-Z-]+)\.svg$/; export const iconsUrls: Record = Object.fromEntries( Object.entries(importedIconsUrls).map(([path, url]) => { const nameMatches = path.match(iconNamePattern); - return [nameMatches ? nameMatches[1] : path, url]; - }) + return [nameMatches ? nameMatches[1] : path, url as string]; + }), ); diff --git a/.vitepress/theme/styles/content-aside.scss b/.vitepress/theme/styles/content-aside.scss new file mode 100644 index 00000000..00f049ec --- /dev/null +++ b/.vitepress/theme/styles/content-aside.scss @@ -0,0 +1,47 @@ +// -------------------------------- +// -- Aside / Table of Contents + +// Widen aside +.VPDoc .aside { + max-width: 300px !important; + position: relative; + padding-left: 0; + @media (min-width: 1380px) { + max-width: 248px; + } + @media (min-width: 1500px) { + max-width: 300px; + } + @media (min-width: 1600px) { + max-width: 328px; + } +} +.aside-container { + width: 300px !important; + max-width: 300px; +} +.aside-content { + padding-top: 56px; +} + +// Add gap between title and list, but account for hardcoded `outline-marker` `top` +.VPDocAside .outline-title { + margin-block-end: -1px; + transform: translateY(-6px); +} + +// Space out links without affecting `outline-marker` too much +.VPDocAside .outline-link { + padding: 6px 0; + font-size: 12.5px; + transition-duration: 0.1s; +} + +// Don't clip text in the outline +.VPDocAsideOutline .outline-link { + white-space: normal; + text-overflow: initial; + padding: 5px 0; + font-size: 13px; + line-height: 18px; +} diff --git a/.vitepress/theme/styles/content.scss b/.vitepress/theme/styles/content.scss index be466a45..c9c8b5d5 100644 --- a/.vitepress/theme/styles/content.scss +++ b/.vitepress/theme/styles/content.scss @@ -1,11 +1,81 @@ +.vp-doc a { + transition: 0.1s ease; +} + +.vp-doc p > strong > a, +.vp-doc p > a, +.vp-doc li > strong > a, +.vp-doc li > a, +.vp-doc td > strong > a, +.vp-doc td > a { + text-decoration: underline; + text-underline-offset: 2px; + text-decoration-thickness: 1px; + transition: 0.1s ease; + transition-property: color, text-underline-offset; + :root.dark & { + color: rgb(131, 222, 255); + } + &:hover, + :root.dark &:hover { + color: var(--vp-c-text-1); + text-decoration-thickness: 1px; + text-underline-offset: 4px; + } +} + +.vp-doc h1, +.vp-doc h2, +.vp-doc h3, +.vp-doc h4, +.vp-doc h5, +.vp-doc h6 { + width: max-content; + max-width: 100%; +} + +.vp-doc .header-anchor { + @media (min-width: 960px) { + position: absolute; + left: -28px; + padding: 0 18px; + transform: scale(0.94); + } +} + +.vp-doc h1 + p, +.vp-doc h2 + p { + margin-top: 0; +} + .vp-doc h1 { margin-bottom: 24px; } .vp-doc h2 { margin: 44px 0 24px; + padding-top: 16px !important; border-top: 1px solid var(--vp-c-divider-light); - padding-top: 32px; +} + +.vp-doc h2 .header-anchor { + top: 16px; +} + +.vp-doc h3 { + margin-top: 40px !important; +} + +.vp-doc pre code { + font-size: 13px !important; +} + +.vp-doc :not(pre) > code { + color: var(--vp-text-code); +} + +.vp-doc div[class*='language-'] { + margin: 32px 0 40px; } // Wrap code examples @@ -16,6 +86,15 @@ word-break: break-word; } +.vp-doc p, +.vp-doc li { + font-size: 15px; + line-height: 1.8; +} +.vp-doc p { + margin: 24px 0; +} + .vp-doc td, .vp-doc th { font-size: 14px; @@ -29,10 +108,22 @@ cursor: default; } +.vp-doc p a { + display: inline-block; + text-underline-offset: 2px; + text-decoration-thickness: 1px; +} + .vp-doc img { margin: 8px 0; } +.vp-doc p > img, +.vp-doc > div > img { + margin: 40px 0; + border-radius: 6px; +} + .vp-doc figure { margin-top: 1.5rem; margin-bottom: 1.5rem; @@ -75,6 +166,11 @@ } } +.vp-code-group .tabs label { + font-size: 13px !important; + font-weight: 600; +} + .vp-doc .footnotes-sep { margin: 44px 0 32px; border-top: 1px solid var(--vp-c-divider-light); @@ -91,3 +187,93 @@ .content-container .VPDocFooter { margin-top: 30px; } + +.mx-auto { + margin-left: auto !important; + margin-right: auto !important; +} + +// -------------------------------- +// Community Projects + +.community-project-screenshot { + width: 100%; + max-width: 760px; + border-radius: 12px; + overflow: hidden; + img { + max-width: min(100%, 800px); + margin: 0 !important; + } + @media screen and (max-height: 768px) { + max-width: 680px; + max-height: 352px; + } + @media screen and (max-width: 960px) { + max-width: 680px; + max-height: 352px; + } +} + +// -------------------------------- +// Twitter Tweet Embed + +.twitter-tweet { + position: relative; + display: block; + max-width: 640px; + padding: 64px 32px 16px !important; + margin: 52px 0 !important; + color: var(--vp-c-text-2); + font-size: 14px; + font-weight: 500; + @media screen and (max-width: 960px) { + padding: 64px 24px 16px !important; + padding-right: 0 !important; + } + + & > p { + margin-bottom: 16px !important; + color: var(--vp-c-text-1) !important; + font-size: 16px; + @media screen and (max-width: 500px) { + font-size: 14px !important; + } + } + + &::before { + --twitter-icon-mask-size: 26px; + --block-icon-url: url('@theme/icons/fa-twitter.svg'); + content: ''; + position: absolute; + top: 16px; + left: 32px; + width: var(--twitter-icon-mask-size); + height: var(--twitter-icon-mask-size); + transition: background-color 0.14s ease; + background-color: #1da1f2; + mask-image: var(--twitter-icon-img); + mask-position: center; + mask-repeat: no-repeat; + mask-size: cover; + } +} + +// -------------------------------- +// Footer / Above Footer + +.VPLink.link.edit-link-button { + gap: 4px; + font-size: 13px; + svg { + transform: scale(0.92); + } +} + +.content-container footer.VPDocFooter .edit-info { + margin-top: 20px; +} + +.edit-info { + padding-bottom: 24px !important; +} diff --git a/.vitepress/theme/styles/custom-block.scss b/.vitepress/theme/styles/custom-block.scss new file mode 100644 index 00000000..10d4ddfa --- /dev/null +++ b/.vitepress/theme/styles/custom-block.scss @@ -0,0 +1,142 @@ +// -------------------------------- +// Custom Blocks + +.vp-doc .custom-block { + margin: 44px 0; + padding: 32px 32px; + padding-left: 76px; + border: none; + border-radius: 8px; + box-shadow: + inset 0 0 0 1px var(--block-border-color), + inset 40px 92px 64px -40px rgba(255, 255, 255, 0.6); + + @media (max-width: 500px) { + padding-left: 18px; + padding-right: 18px; + } + + &:not(:root.dark &) { + --vp-custom-block-tip-bg: rgb(246, 252, 250); + --vp-custom-block-tip-border: rgba(0, 136, 120, 0.5); + --vp-custom-block-tip-text: rgb(0, 125, 111); + --vp-custom-block-warning-text: rgb(202, 135, 0); + --vp-custom-block-warning-border: rgb(255, 200, 0); + --vp-custom-block-warning-bg: rgba(255, 200, 0, 0.032); + } + :root.dark & { + --vp-custom-block-tip-bg: var(--vp-c-green-dim-1); + --vp-custom-block-tip-text: hsl(165 100% 60%); + --vp-custom-block-tip-border: hsl(172, 100%, 19%); + --vp-custom-block-warning-text: rgb(255, 183, 0); + box-shadow: + inset 0 0 0 1px var(--block-border-color), + inset 40px 92px 84px -40px rgba(0, 0, 0, 0.6); + background-color: var(--vp-c-bg-alt); + } + + &.info { + --block-border-color: var(--vp-custom-block-info-border); + --block-icon-color: var(--vp-custom-block-info-text); + --block-icon-url: url('@theme/icons/fa-books-light.svg'); + } + &.tip { + --block-border-color: var(--vp-custom-block-tip-border); + --block-icon-color: var(--vp-custom-block-tip-text); + --block-icon-url: url('@theme/icons/fa-sparkles-regular.svg'); + } + &.warning { + --block-border-color: var(--vp-custom-block-warning-border); + --block-icon-color: var(--vp-custom-block-warning-text); + --block-icon-url: url('@theme/icons/fa-triangle-exclamation-regular.svg'); + } + &.danger { + --block-border-color: var(--vp-custom-block-danger-border); + --block-icon-color: var(--vp-custom-block-danger-text); + --block-icon-url: url('@theme/icons/fa-triangle-exclamation-regular.svg'); + } + &.details { + --block-border-color: var(--vp-custom-block-details-border); + --block-icon-color: var(--vp-custom-block-details-text); + --block-icon-url: url('@theme/icons/fa-gear.svg'); + } +} + +.vp-doc h2 + .custom-block { + margin-top: 32px; +} + +.vp-doc .custom-block p { + margin: 2px 0 0; + font-size: 14px; + line-height: 1.8; + + &.custom-block-title { + position: relative; + margin-bottom: 8px; + @media (max-width: 500px) { + margin-left: 42px; + margin-bottom: 14px; + } + &::before { + content: ''; + position: absolute; + top: 0; + left: -44px; + width: 24px; + height: 24px; + background-color: var(--block-icon-color); + mask-image: var(--block-icon-url); + mask-position: center; + mask-repeat: no-repeat; + mask-size: contain; + @media (max-width: 500px) { + left: -40px; + } + } + } +} + +.vp-doc .custom-block p:not(.custom-block-title), +.vp-doc .custom-block ol, +.vp-doc .custom-block ul { + color: var(--vp-c-text-1); +} +.vp-doc .custom-block ol, +.vp-doc .custom-block ul { + margin: 12px 0; +} + +.vp-doc .custom-block a { + transition-duration: 0.1s; +} + +.vp-doc .custom-block code { + color: var(--vp-c-text-1); + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1); + :root.dark & { + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.16); + } +} + +.vp-doc .custom-block ul { + margin-bottom: 0; +} + +.vp-doc .custom-block summary { + position: relative; + margin: 0; + &::marker { + content: '▷\a0\a0\a0'; + } +} +.vp-doc .custom-block[open] summary::marker { + content: '▽\a0\a0\a0'; +} + +.vp-doc .custom-block div[class*='language-'] { + margin: 24px 0; + &:last-child { + margin-bottom: 0; + } +} diff --git a/.vitepress/theme/styles/fixes.scss b/.vitepress/theme/styles/fixes.scss deleted file mode 100644 index 4835e896..00000000 --- a/.vitepress/theme/styles/fixes.scss +++ /dev/null @@ -1,658 +0,0 @@ -// MaintenanceBanner related -// Only show it in big screen for now -.Layout.with-banner { - --sbdocs-top-banner-height: 48px; - .VPNav { - --vp-layout-top-height: var(--sbdocs-top-banner-height); - } - .VPContent .VPDoc { - padding: 90px 32px 0; - } - .VPSidebar { - --vp-nav-height: 90px; - } - - @media (max-width: 600px) { - --sbdocs-top-banner-height: 60px; - } -} - -// Remove nav border -.VPNavBar { - border-bottom: none !important; -} - -// No content-body transition (background-color fix) -.VPNavBar .content-body { - transition: none !important; -} - -// Fix enormous line-height of navbar items -.VPNavBarMenu .VPNavBarMenuLink { - min-height: var(--vp-nav-height-mobile); - line-height: 1.32; - @media (min-width: 960px) { - min-height: var(--vp-nav-height-desktop); - } -} - -// Don't clip text in the outline -.VPDocAsideOutline .outline-link { - white-space: normal; - text-overflow: initial; - padding: 5px 0; - font-size: 13px; - line-height: 18px; -} - -// We would like to have single pages in the sidebar (e.g. API Reference, Enterprise). -// VitPress expects to have you section title text + items and when you only have one item it looks like there are extra spacing. -// These styles are to adjust spacing between groups. -#VPSidebarNav .group { - padding-top: 0; -} - -.VPSidebarItem.collapsible { - padding-top: 8px; -} - -.VPSidebarGroup.collapsible.collapsed .items { - margin-bottom: -14px; -} - -.VPSidebarItem .items { - margin-top: 8px; -} - -// Move search away from logo -.VPNavBarSearch.search { - justify-content: flex-end; - margin-right: 32px; - - @media screen and (max-width: 500px) { - margin-right: 10px; - } -} - -// Post 1.0.0-rc.20 - -.VPSidebarItem { - margin: 0 -14px; -} - -.VPSidebarItem.link { - transition-duration: 0.1s; - transition-property: opacity, box-shadow; -} - -.VPSidebarItem.level-0 { - padding-bottom: 8px !important; -} - -.VPSidebarItem.is-active { - position: relative; - box-shadow: inset 0 0 0 1px rgba(0,0,0,0.08); - border-radius: 8px; - background-color: #fff; - - .text { - color: var(--vp-c-text-1) !important; - } - - :root.dark & { - box-shadow: inset 0 0 0 1px rgba(255,255,255,0.08); - background-color: var(--vp-c-bg); - } -} - -.VPSidebarItem.level-0 { - font-size: 13px; - margin: 0 4px; - &:hover:not(.is-active) { - opacity: 1; - color: var(--vp-c-text-1); - } -} - -// -------------------------------- -// Customize Navs -// -------------------------------- -// -- Content - -// Reduce .VPContent's dependency on calculated sizes -.VPContent.has-sidebar { - @media (min-width: 960px) { - padding-left: calc(var(--vp-sidebar-width) + 16px) !important; - } - @media (min-width: 1440px) { - padding-right: 0 !important; - } -} - -// Fill in space to accommodate Sidebar's width changes -.VPDoc.has-sidebar.has-aside { - @media (min-width: 960px) and (max-width: 1500px) { - padding-left: 0; - } -} - -// Increase body content width if space available. -.VPDoc.has-aside .content-container { - max-width: 820px !important; -} - -.VPDoc.has-sidebar.has-aside .container > .content { - @media (min-width: 1500px) { - padding-left: 52px; - padding-right: 52px; - } -} - -// New body styles -.vp-doc p, -.vp-doc li { - font-size: 15px; - line-height: 1.8; -} -.vp-doc p { - margin: 24px 0; -} - -.vp-doc a { - transition: 0.1s ease; -} - -.vp-doc p a { - display: inline-block; - text-underline-offset: 2px; - text-decoration-thickness: 1px; -} - -.vp-doc p > img, -.vp-doc > div > img { - margin: 40px 0; - border-radius: 6px; -} - -.vp-doc pre code { - font-size: 12.5px !important; -} - -.vp-doc :not(pre) > code { - color: var(--vp-text-code); -} - -.vp-code-group .tabs label { - font-size: 13px !important; - font-weight: 600; -} - -.vp-doc div[class*='language-'] { - margin: 32px 0 40px; -} - -.vp-doc .header-anchor { - @media (min-width: 960px) { - position: absolute; - left: -28px; - padding: 0 18px; - transform: scale(0.94); - } -} - -.vp-doc h1, -.vp-doc h2, -.vp-doc h3, -.vp-doc h4, -.vp-doc h5, -.vp-doc h6 { - width: max-content; - max-width: 100%; -} -.vp-doc h1 + p, -.vp-doc h2 + p { - margin-top: 0; -} -.vp-doc h2 { - padding-top: 16px !important; -} -.vp-doc h3 { - margin-top: 40px !important; -} - -.vp-doc p > strong > a, -.vp-doc p > a, -.vp-doc li > strong > a, -.vp-doc li > a, -.vp-doc td > strong > a, -.vp-doc td > a { - text-decoration: underline; - text-underline-offset: 2px; - text-decoration-thickness: 1px; - transition: 0.1s ease; - transition-property: color, text-underline-offset; - :root.dark & { - color: rgb(131, 222, 255); - } - &:hover, - :root.dark &:hover { - color: var(--vp-c-text-1); - text-decoration-thickness: 1px; - text-underline-offset: 4px; - } -} - -// -------------------------------- -// -- Top - -// Remove extraneous fade elements -.VPNavBar .curtain { - display: none; -} - -// Correct width on non-docs pages -.VPNavBar .container { - max-width: unset; -} - -// // Semi-transparent background above content -// .VPNavBar .content-body { -// background-color: rgba(255,255,255,0.8) !important; -// backdrop-filter: blur(6px); -// :root.dark & { -// background-color: rgba(7,8,11,0.8) !important; -// } -// } - -// Size according to Sidebar width to limit zone affected by nav overlay -.VPNavBar.has-sidebar .content { - --vp-sidebar-width: 320px; - padding-left: var(--vp-sidebar-width) !important; - padding-right: 32px !important; - @media (max-width: 960px) { - --vp-sidebar-width: 32px; - padding-right: 0 !important; - } -} - -// Position title/logo to hug left -.VPNavBar.has-sidebar .title { - padding-left: 16px !important; - border-bottom: none; - @media (max-width: 960px) { - padding-left: 0 !important; - } -} - -// Restyle top NavBarMenu links -.VPNavBarMenu.menu { - height: calc(100% - 16px); -} - -.VPNavBarMenu.menu a { - font-size: 13px; - margin: 0 4px; - opacity: 0.8; - transition-duration: 0.1s; - transition-property: color, opacity, box-shadow; - opacity: 0.7; - &:hover:not(.active) { - opacity: 1; - color: var(--vp-c-text-1); - } -} - -.VPNavBarMenuLink.active { - color: var(--vp-c-text-1) !important; - box-shadow: inset 0 -1px 0 0 var(--vp-c-brand); - opacity: 1 !important; -} - -// -------------------------------- -// -- Sidebar - -// Use empty space in docs navs more effectively. -// Using existing default fallback styles where possible to negate calc()-type sizes. -.VPSidebar { - --active-indicator-padding: 16px; - --vp-sidebar-width: 308px; - --vp-new-padding: calc(32px - var(--active-indicator-padding)); - padding-left: var(--vp-new-padding) !important; - padding-right: var(--vp-new-padding) !important; - padding-bottom: 32px !important; - width: var(--vp-sidebar-width) !important; - @media (max-width: 1500px) { - --vp-sidebar-width: 272px; - } - @media (max-width: 960px) { - --vp-sidebar-width: 308px; - } -} -// Allow .VPLink to take up all horizontal space available -#VPSidebarNav .group { - @media (min-width: 960px) { - width: unset; - } -} -#VPSidebarNav.nav { - margin-top: 24px; -} - // Hide extraneous visual elements when parent group is collapsed -// without messing with individual elements themselves. -.VPSidebarGroup.collapsed .items { - opacity: 0; -} -// Align item group container's collapsed border with child item list's -// first item's top border/box-shadow. -.VPSidebarGroup.collapsible:not(.collapsed) .items { - margin-top: 9px; -} -// Align group title with item links -.VPSidebarGroup .title { - padding-left: var(--active-indicator-padding); -} -// Ignore top nav and mobile nav -.VPLink:not(.VPNavBarMenuLink):not(.VPNavScreenMenuLink) { - line-height: 1.1; - // New link styles - &.link { - margin: 0; - padding: 9px var(--active-indicator-padding) !important; - transition-duration: 0.1s; - transition-property: background-color, box-shadow, color; - } -} - -// Post 1.0.0-rc.20 - -.VPLink .text { - padding: 0; - font-size: 13px !important; - line-height: 1.32 !important; - transition-duration: 0.1s; - transition-property: color, opacity; -} - -.VPLink:hover .text { - color: var(--vp-c-text-1) !important; -} - -// -------------------------------- -// -- Aside / Table of Contents - -// Widen aside -.VPDoc .aside { - max-width: 300px !important; - position: relative; - padding-left: 0; - @media (min-width: 1380px) { - max-width: 248px; - } - @media (min-width: 1500px) { - max-width: 300px; - } - @media (min-width: 1600px) { - max-width: 328px; - } -} -.aside-container { - width: 300px !important; - max-width: 300px; -} -.aside-content { - padding-top: 56px; -} - -// Add gap between title and list, but account for hardcoded `outline-marker` `top` -.VPDocAside .outline-title { - margin-block-end: -1px; - transform: translateY(-6px); -} - -// Space out links without affecting `outline-marker` too much -.VPDocAside .outline-link { - padding: 6px 0; - font-size: 12.5px; - transition-duration: 0.1s; -} - - -// -------------------------------- -// Custom Blocks - -.vp-doc .custom-block { - margin: 44px 0; - padding: 32px 32px; - padding-left: 76px; - border: none; - border-radius: 8px; - box-shadow: - inset 0 0 0 1px var(--block-border-color), - inset 40px 92px 64px -40px rgba(255,255,255,0.6); - - @media (max-width: 500px) { - padding-left: 18px; - padding-right: 18px; - } - - &:not(:root.dark &) { - --vp-custom-block-tip-bg: rgb(246, 252, 250); - --vp-custom-block-tip-border: rgba(0, 136, 120, 0.5); - --vp-custom-block-tip-text: rgb(0, 125, 111); - --vp-custom-block-warning-text: rgb(202, 135, 0); - --vp-custom-block-warning-border: rgb(255, 200, 0); - --vp-custom-block-warning-bg: rgba(255, 200, 0, 0.032); - } - :root.dark & { - --vp-custom-block-tip-bg: var(--vp-c-green-dim-1); - --vp-custom-block-tip-text: hsl(165 100% 60%); - --vp-custom-block-tip-border: hsl(172, 100%, 19%); - --vp-custom-block-warning-text: rgb(255, 183, 0); - box-shadow: - inset 0 0 0 1px var(--block-border-color), - inset 40px 92px 84px -40px rgba(0,0,0,0.6); - background-color: var(--vp-c-bg-alt); - } - - &.info { - --block-border-color: var(--vp-custom-block-info-border); - --block-icon-color: var(--vp-custom-block-info-text); - --block-icon-url: url('@theme/icons/fa-books-light.svg'); - } - &.tip { - --block-border-color: var(--vp-custom-block-tip-border); - --block-icon-color: var(--vp-custom-block-tip-text); - --block-icon-url: url('@theme/icons/fa-sparkles-regular.svg'); - } - &.warning { - --block-border-color: var(--vp-custom-block-warning-border); - --block-icon-color: var(--vp-custom-block-warning-text); - --block-icon-url: url('@theme/icons/fa-triangle-exclamation-regular.svg'); - } - &.danger { - --block-border-color: var(--vp-custom-block-danger-border); - --block-icon-color: var(--vp-custom-block-danger-text); - --block-icon-url: url('@theme/icons/fa-triangle-exclamation-regular.svg'); - } - &.details { - --block-border-color: var(--vp-custom-block-details-border); - --block-icon-color: var(--vp-custom-block-details-text); - --block-icon-url: url('@theme/icons/fa-gear.svg'); - } -} - -h2 + .custom-block { - margin-top: 32px !important; -} - -.vp-doc h2 { - padding-top: 0; -} - -.vp-doc .custom-block p { - margin: 2px 0 0; - font-size: 14px; - line-height: 1.8; - - &.custom-block-title { - position: relative; - margin-bottom: 8px; - @media (max-width: 500px) { - margin-left: 42px; - margin-bottom: 14px; - } - &::before { - content: ''; - position: absolute; - top: 0; - left: -44px; - width: 24px; - height: 24px; - background-color: var(--block-icon-color); - -webkit-mask-image: var(--block-icon-url); - mask-image: var(--block-icon-url); - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - @media (max-width: 500px) { - left: -40px; - } - } - } -} - -.vp-doc .custom-block p:not(.custom-block-title), -.vp-doc .custom-block ol, -.vp-doc .custom-block ul { - color: var(--vp-c-text-1); -} -.vp-doc .custom-block ol, -.vp-doc .custom-block ul { - margin: 12px 0; -} - -.vp-doc .custom-block a { - transition-duration: 0.1s; -} - -.vp-doc .custom-block code { - color: var(--vp-c-text-1); - box-shadow: 0 0 0 1px rgba(0,0,0,0.1); - :root.dark & { - box-shadow: 0 0 0 1px rgba(255,255,255,0.16); - } -} - -.vp-doc .custom-block ul { - margin-bottom: 0; -} - -.vp-doc .custom-block summary { - position: relative; - margin: 0; - &::marker { - content: '▷\a0\a0\a0'; - } -} -.vp-doc .custom-block[open] summary::marker { - content: '▽\a0\a0\a0'; -} - -.vp-doc .custom-block div[class*='language-'] { - margin: 24px 0; - &:last-child { - margin-bottom: 0; - } -} - -// -------------------------------- -// Footer / Above Footer - -.VPLink.link.edit-link-button { - gap: 4px; - font-size: 13px; - svg { - transform: scale(0.92); - } -} - -.content-container footer.VPDocFooter .edit-info { - margin-top: 20px; -} - -.edit-info { - padding-bottom: 24px !important; -} - -// -------------------------------- -// Community Projects - -.community-project-screenshot { - width: 100%; - max-width: 760px; - border-radius: 12px; - overflow: hidden; - img { - max-width: min(100%, 800px); - margin: 0 !important; - } - @media screen and (max-height: 768px) { - max-width: 680px; - max-height: 352px; - } - @media screen and (max-width: 960px) { - max-width: 680px; - max-height: 352px; - } -} - -// -------------------------------- -// Twitter Tweet Embed - -.twitter-tweet { - position: relative; - display: block; - max-width: 640px; - padding: 64px 32px 16px !important; - margin: 52px 0 !important; - color: var(--vp-c-text-2); - font-size: 14px; - font-weight: 500; - @media screen and (max-width: 960px) { - padding: 64px 24px 16px !important; - padding-right: 0 !important; - } - - & > p { - margin-bottom: 16px !important; - color: var(--vp-c-text-1) !important; - font-size: 16px; - @media screen and (max-width: 500px) { - font-size: 14px !important; - } - } - - &::before { - --twitter-icon-mask-size: 26px; - --block-icon-url: url('@theme/icons/fa-twitter.svg'); - content: ''; - position: absolute; - top: 16px; - left: 32px; - width: var(--twitter-icon-mask-size); - height: var(--twitter-icon-mask-size); - transition: background-color 0.14s ease; - background-color: #1DA1F2; - -webkit-mask-image: var(--twitter-icon-img); - mask-image: var(--twitter-icon-img); - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: cover; - mask-size: cover; - } -} diff --git a/.vitepress/theme/styles/index.scss b/.vitepress/theme/styles/index.scss index 1909afba..78c9feeb 100644 --- a/.vitepress/theme/styles/index.scss +++ b/.vitepress/theme/styles/index.scss @@ -1,4 +1,8 @@ @import './fonts.scss'; @import './colors.scss'; -@import './fixes.scss'; +@import './layout.scss'; +@import './navbar.scss'; +@import './sidebar.scss'; @import './content.scss'; +@import './content-aside.scss'; +@import './custom-block.scss'; diff --git a/.vitepress/theme/styles/layout.scss b/.vitepress/theme/styles/layout.scss new file mode 100644 index 00000000..869a6e39 --- /dev/null +++ b/.vitepress/theme/styles/layout.scss @@ -0,0 +1,52 @@ +// MaintenanceBanner related +// Only show it in big screen for now +.Layout.with-banner { + --sbdocs-top-banner-height: 48px; + .VPNav { + --vp-layout-top-height: var(--sbdocs-top-banner-height); + } + .VPContent .VPDoc { + padding: 90px 32px 0; + } + .VPSidebar { + --vp-nav-height: 90px; + } + + @media (max-width: 600px) { + --sbdocs-top-banner-height: 60px; + } +} + +// -------------------------------- +// Customize Navs +// -------------------------------- +// -- Content + +// Reduce .VPContent's dependency on calculated sizes +.VPContent.has-sidebar { + @media (min-width: 960px) { + padding-left: calc(var(--vp-sidebar-width) + 16px) !important; + } + @media (min-width: 1440px) { + padding-right: 0 !important; + } +} + +// Fill in space to accommodate Sidebar's width changes +.VPDoc.has-sidebar.has-aside { + @media (min-width: 960px) and (max-width: 1500px) { + padding-left: 0; + } +} + +// Increase body content width if space available. +.VPDoc.has-aside .content-container { + max-width: 820px !important; +} + +.VPDoc.has-sidebar.has-aside .container > .content { + @media (min-width: 1500px) { + padding-left: 52px; + padding-right: 52px; + } +} diff --git a/.vitepress/theme/styles/navbar.scss b/.vitepress/theme/styles/navbar.scss new file mode 100644 index 00000000..b47f504c --- /dev/null +++ b/.vitepress/theme/styles/navbar.scss @@ -0,0 +1,94 @@ +// -------------------------------- +// -- Top + +// Remove nav border +.VPNavBar > .divider { + display: none !important; +} + +// Remove extraneous fade elements +.VPNavBar .curtain { + display: none; +} + +// Correct width on non-docs pages +.VPNavBar .container { + max-width: unset; +} + +// No content-body transition (background-color fix) +.VPNavBar .content-body { + transition: none !important; +} + +// // Semi-transparent background above content +// .VPNavBar .content-body { +// background-color: rgba(255,255,255,0.8) !important; +// backdrop-filter: blur(6px); +// :root.dark & { +// background-color: rgba(7,8,11,0.8) !important; +// } +// } + +// Size according to Sidebar width to limit zone affected by nav overlay +.VPNavBar.has-sidebar .content { + --vp-sidebar-width: 320px; + padding-left: var(--vp-sidebar-width) !important; + padding-right: 32px !important; + @media (max-width: 960px) { + --vp-sidebar-width: 32px; + padding-right: 0 !important; + } +} + +// Position title/logo to hug left +.VPNavBar.has-sidebar .title { + padding-left: 16px !important; + border-bottom: none; + @media (max-width: 960px) { + padding-left: 0 !important; + } +} + +// Move search away from logo +.VPNavBarSearch.search { + justify-content: flex-end; + margin-right: 32px; + + @media screen and (max-width: 500px) { + margin-right: 10px; + } +} + +// Restyle top NavBarMenu links +.VPNavBarMenu.menu { + height: calc(100% - 16px); +} + +.VPNavBarMenu.menu a { + font-size: 13px; + margin: 0 4px; + opacity: 0.8; + transition-duration: 0.1s; + transition-property: color, opacity, box-shadow; + opacity: 0.7; + &:hover:not(.active) { + opacity: 1; + color: var(--vp-c-text-1); + } +} + +// Fix enormous line-height of navbar items +.VPNavBarMenu .VPNavBarMenuLink { + min-height: var(--vp-nav-height-mobile); + line-height: 1.32; + @media (min-width: 960px) { + min-height: var(--vp-nav-height-desktop); + } +} + +.VPNavBarMenuLink.active { + color: var(--vp-c-text-1) !important; + box-shadow: inset 0 -1px 0 0 var(--vp-c-brand); + opacity: 1 !important; +} diff --git a/.vitepress/theme/styles/sidebar.scss b/.vitepress/theme/styles/sidebar.scss new file mode 100644 index 00000000..f73a01e2 --- /dev/null +++ b/.vitepress/theme/styles/sidebar.scss @@ -0,0 +1,105 @@ +// -------------------------------- +// -- Sidebar + +// Use empty space in docs navs more effectively. +// Using existing default fallback styles where possible to negate calc()-type sizes. +.VPSidebar { + --active-indicator-padding: 16px; + --vp-sidebar-width: 308px; + --vp-new-padding: calc(32px - var(--active-indicator-padding)); + padding-left: var(--vp-new-padding) !important; + padding-right: var(--vp-new-padding) !important; + padding-bottom: 32px !important; + width: var(--vp-sidebar-width) !important; + @media (max-width: 1500px) { + --vp-sidebar-width: 272px; + } + @media (max-width: 960px) { + --vp-sidebar-width: 308px; + } +} + +.VPSidebar > .nav { + margin-top: 24px; +} + +.VPSidebar > .nav > .group { + width: unset; + margin-inline: 8px; +} + +.VPSidebarItem.link { + transition-duration: 0.1s; + transition-property: opacity, box-shadow; +} + +.VPSidebarItem.level-0 { + font-size: 13px; + &:hover:not(.is-active) { + opacity: 1; + color: var(--vp-c-text-1); + } +} + +.VPSidebarItem.level-0 > .items { + margin-top: 10px; +} + +.VPSidebarItem .VPLink { + line-height: 1.1; + margin: 0; + padding: 9px 12px; + transition-duration: 0.1s; + transition-property: background-color, box-shadow, color; + + & .text { + padding: 0; + font-size: 13px !important; + line-height: 1.32 !important; + transition-duration: 0.1s; + transition-property: color, opacity; + } + + &:hover .text { + color: var(--vp-c-text-1) !important; + } +} + +.VPSidebarItem.is-active > .item > .link > .text { + color: var(--vp-c-text-1) !important; +} + +.VPSidebarItem.level-1 { + margin-inline: -12px; + &:has(.items) { + padding-bottom: 8px; + } +} + +.VPSidebarItem.level-1.has-active { + position: relative; + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08); + border-radius: 8px; + background-color: #fff; + + :root.dark & { + box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08); + background-color: var(--vp-c-bg); + } +} + +#VPSidebarNav .VPSidebarItem.level-1 > .items { + margin-left: 14px; + padding-left: 0; + + .indicator { + left: 0px; + } + .VPLink { + padding-block: 7px; + } +} + +#VPSidebarNav .VPSidebarItem.level-1.has-active > .items { + border-color: transparent; +} diff --git a/README.md b/README.md index c019cf14..694f1df5 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ There are numerous ways to contribute to docs: - **Create demos** - We'd like to help our users see our SDK methods in action. Would you like to create a Vanilla JS or TS demo? Before you do, please read our [contributing guide](CONTRIBUTING.md) and reach out to us on [GitHub discussions](https://github.com/stackblitz/docs/discussions). - **Fix an issue** - - You see an issue you'd like to worn on? Ask to be assigned to fix it. Before you start your work, please read our [contributing guide](CONTRIBUTING.md). + - You see an issue you'd like to work on? Ask to be assigned to fix it. Before you start your work, please read our [contributing guide](CONTRIBUTING.md). - **Reviews** - Please feel free to check existing PRs and issues. Share your loving feedback, help the other contributor approach the task in a better way, spot lurking bugs, errors, and mistakes. You can use pr.new to that end - in the URL of the issue or PR, swap "github.com" with "pr.new" to spin up the environment and the preview. @@ -72,7 +72,7 @@ There are three ways to interact with this repository: Use Web Publisher for small content updates for a pleasant editing experience: -1. Open the page on our [docs site](developer.stackblitz.com), scroll down, and click "edit this page". +1. Open any page on our docs site ([Like this one](https://developer.stackblitz.com/guides/user-guide/what-is-stackblitz)), scroll down, and click "edit this page". 2. Update the document in the editor on the left and see the rendered change in the preview window on the right. 3. Once you're done, in the top right corner click on the green button that says "Propose changes". 4. You will be redirected to a GitHub PR template page prepared for you to submit a PR. @@ -106,7 +106,6 @@ For production, the docs expect the following environment variables to be define - `VITE_ALGOLIA_ID`: Algolia `appId`. - `VITE_ALGOLIA_KEY`: Algolia `apiKey`. - `VITE_GTM_ID`: Google Tag Manager id. -- `VITE_GTAG_ID`: Google Analytics id. They can be defined in CI configuration, or in a `.env` file: @@ -115,7 +114,6 @@ They can be defined in CI configuration, or in a `.env` file: VITE_ALGOLIA_ID='******' VITE_ALGOLIA_KEY='******' VITE_GTM_ID='******' -VITE_GTAG_ID='******' ``` --- diff --git a/docs/enterprise/adfs-sso.md b/docs/enterprise/adfs-sso.md index 14e9ca2b..80a93ceb 100644 --- a/docs/enterprise/adfs-sso.md +++ b/docs/enterprise/adfs-sso.md @@ -19,7 +19,10 @@ StackBlitz is excited to offer SAML-based Single Sign-on (SSO) to organizations ## StackBlitz Admin Panel Auth Settings Page :::warning IMPORTANT: -Admin accounts should not be made with an individual work email that will be used to create a separate user account later. Should this happen, we recommend the following steps: +Each user account (including the Admin User) must have a unique email address. Use a service account email address (like IT@yourcompany.com) to ensure that the admin account doesn't cause email collisions for SSO users. If your admin email address matches an SSO user's email address, said SSO user will receive an "invalid login or password" error when signing in. +\ +  +Should this happen, we recommend the following steps: - Log in as admin - Navigate to `https://editor.stackblitz.[COMPANY.COM]/users/edit` to change your email address to a different one. It will show the same screen as the changing email/password when first logging in as an admin, but you only need to change your email. ::: diff --git a/docs/enterprise/assets/okta-sso/okta-integration-5.png b/docs/enterprise/assets/okta-sso/okta-integration-5.png index 8455176b..9853d530 100644 Binary files a/docs/enterprise/assets/okta-sso/okta-integration-5.png and b/docs/enterprise/assets/okta-sso/okta-integration-5.png differ diff --git a/docs/enterprise/assets/saml-config.png b/docs/enterprise/assets/saml-config.png index 2617fae2..7892f82e 100644 Binary files a/docs/enterprise/assets/saml-config.png and b/docs/enterprise/assets/saml-config.png differ diff --git a/docs/enterprise/configuring-dns.md b/docs/enterprise/configuring-dns.md index 087f2e45..2d12c369 100644 --- a/docs/enterprise/configuring-dns.md +++ b/docs/enterprise/configuring-dns.md @@ -11,7 +11,6 @@ Based off the root DNS zone set in EE Site Configuration (for instance, `stackbl ``` A stackblitz.example.com 172.16.4.20 A *.stackblitz.example.com 172.16.4.20 -A *.preview.stackblitz.example.com 172.16.4.20 ``` ## TLS @@ -20,7 +19,6 @@ For TLS, your certificate should have `stackblitz.example.com` as the Common Nam - `stackblitz.example.com` - `*.stackblitz.example.com` -- `*.preview.stackblitz.example.com` ### TLS Certificate Renewal diff --git a/docs/enterprise/okta-sso.md b/docs/enterprise/okta-sso.md index 530c4539..5b805a43 100644 --- a/docs/enterprise/okta-sso.md +++ b/docs/enterprise/okta-sso.md @@ -19,7 +19,10 @@ StackBlitz SAML integration relies on a user-level token. To ensure consistent d ### Navigate to Auth Settings Page Within the Admin Panel :::warning IMPORTANT: -Admin accounts should not be made with an individual work email that will be used to create a separate user account later. Should this happen, we recommend the following steps: +Each user account (including the Admin User) must have a unique email address. Use a service account email address (like IT@yourcompany.com) to ensure that the admin account doesn't cause email collisions for SSO users. If your admin email address matches an SSO user's email address, said SSO user will receive an "invalid login or password" error when signing in. +\ +  +Should this happen, we recommend the following steps: - Log in as admin - Navigate to `https://editor.stackblitz.[COMPANY.COM]/users/edit` to change your email address to a different one. It will show the same screen as the changing email/password when first logging in as an admin, but you only need to change your email. ::: @@ -43,7 +46,7 @@ Next, fill out the `App name` for the SAML integration. This is what the App wil On the next page, you'll need to fill out a few options using values from the Auth Settings page in the StackBlitz admin dashboard. - For the `Single sign on URL`, use the `Assertion Customer Service URL` from the StackBlitz Auth Settings page. -- For `Audience URI (SP Entity ID)`, choose an identifier for the SAML application. We recommend using `stackblitz`. Use the same value in your StackBlitz SAML settings for `Issuer (Service Provider Entity ID)`. +- For `Audience URI (SP Entity ID)`, choose an identifier for the SAML application. We recommend using `stackblitz`. Use the same value in your StackBlitz SAML settings for `Client ID (Service Provider Entity ID / Issuer)`. - In the `Attribute Statements (optional)` section, you must configure the `email` and `name` attributes for your users. We recommend using `user.email` for the `email` attribute, and `user.firstName + " " + user.lastName` for the `name` attribute. ![Configure SAML Integration in Okta](./assets/okta-sso/okta-integration-3.png) diff --git a/docs/enterprise/sso.md b/docs/enterprise/sso.md index a070a217..89a781c0 100644 --- a/docs/enterprise/sso.md +++ b/docs/enterprise/sso.md @@ -17,10 +17,15 @@ StackBlitz SAML integration relies on a user-level token. To ensure consistent d - StackBlitz offers just-in-time provisioning. This means that if a user logs into StackBlitz for the first time using SSO, an account will automatically be created. ::: + + ### Configure your IdP :::warning IMPORTANT: -Admin accounts should not be made with an individual work email that will be used to create a separate user account later. Should this happen, we recommend the following steps: +Each user account (including the Admin User) must have a unique email address. Use a service account email address (like IT@yourcompany.com) to ensure that the admin account doesn't cause email collisions for SSO users. If your admin email address matches an SSO user's email address, said SSO user will receive an "invalid login or password" error when signing in. +\ +  +Should this happen, we recommend the following steps: - Log in as admin - Navigate to `https://editor.stackblitz.[COMPANY.COM]/users/edit` to change your email address to a different one. It will show the same screen as the changing email/password when first logging in as an admin, but you only need to change your email. ::: @@ -57,4 +62,4 @@ Please ensure that the email addresses in the IdP are what your users will be us ### Troubleshooting -If you're unable to login after verifying these things, please reach out to [enterprise@stackblitz.com](mailto:enterprise@stackblitz.com) for support. \ No newline at end of file +If you're unable to login after verifying these things, please reach out to [enterprise@stackblitz.com](mailto:enterprise@stackblitz.com) for support. diff --git a/docs/guides/user-guide/what-is-stackblitz.md b/docs/guides/user-guide/what-is-stackblitz.md index 4f555fad..5cc38184 100644 --- a/docs/guides/user-guide/what-is-stackblitz.md +++ b/docs/guides/user-guide/what-is-stackblitz.md @@ -60,6 +60,10 @@ You like the idea of running Node.js in the browser and feel inspired to build y Speed up your entire development process with **realtime hot-reloading in the fastest dev environment ever made**. Collaborate remotely on different devices, send and receive instant feedback, and **get to market faster**. +### Coding interviews + +Asking candidates to set up new local environments slows down the hiring process. With StackBlitz, you can create starter projects to assess candidates' skills without needing to set up a local environment. + ## What about other online IDEs? Unlike StackBlitz, legacy online IDEs run on remote servers and stream the results back to your browser. This approach yields **few security benefits** and **provides a worse experience** than your local machine in nearly every way. diff --git a/docs/links.ts b/docs/links.ts index 584f0a91..f6019582 100644 --- a/docs/links.ts +++ b/docs/links.ts @@ -130,7 +130,7 @@ export const defaultGroupLink = (linkGroup: MenuLinkGroup) => groupLinks[linkGro export const sidebarLinks = ( sidebar: 'main' | 'enterprise', - activeLinkGroups: MenuLinkGroup[] = [] + activeLinkGroups: MenuLinkGroup[] = [], ) => { if (sidebar === 'enterprise') { return [linkGroups.enterprise]; diff --git a/docs/platform/api/javascript-sdk.md b/docs/platform/api/javascript-sdk.md index 30ed982f..9714f581 100644 --- a/docs/platform/api/javascript-sdk.md +++ b/docs/platform/api/javascript-sdk.md @@ -8,6 +8,11 @@ og_image: javascript-sdk.png The StackBlitz JavaScript SDK lets you programmatically create StackBlitz projects to be opened in a new window or embedded in your docs, example pages, or blog posts. Once embedded, the projects can be controlled by using [the SDK’s VM interface][sdk_vm_docs]. +:::tip Interactive Tutorial +In addition to this guide, you can also play with our _interactive_ StackBlitz SDK tutorial (build with [TutorialKit](https://tutorialkit.dev/)): [StackBlitz SDK Tutorial](https://stackblitz-sdk-tutorial.pages.dev/) +::: + + ## Install the SDK The SDK is _3kB gzipped_ and can be installed from npm: diff --git a/docs/platform/webcontainers/assets/chrome-enable-sp.png b/docs/platform/webcontainers/assets/chrome-enable-sp.png index 22d32eac..1631b3b2 100644 Binary files a/docs/platform/webcontainers/assets/chrome-enable-sp.png and b/docs/platform/webcontainers/assets/chrome-enable-sp.png differ diff --git a/docs/platform/webcontainers/assets/chrome-memory-saver.png b/docs/platform/webcontainers/assets/chrome-memory-saver.png new file mode 100644 index 00000000..65648356 Binary files /dev/null and b/docs/platform/webcontainers/assets/chrome-memory-saver.png differ diff --git a/docs/platform/webcontainers/assets/chrome-settings-cookies-1.png b/docs/platform/webcontainers/assets/chrome-settings-cookies-1.png index 109322f4..357ef610 100644 Binary files a/docs/platform/webcontainers/assets/chrome-settings-cookies-1.png and b/docs/platform/webcontainers/assets/chrome-settings-cookies-1.png differ diff --git a/docs/platform/webcontainers/assets/chrome-settings-cookies-2.png b/docs/platform/webcontainers/assets/chrome-settings-cookies-2.png index a4105a48..1702fb5a 100644 Binary files a/docs/platform/webcontainers/assets/chrome-settings-cookies-2.png and b/docs/platform/webcontainers/assets/chrome-settings-cookies-2.png differ diff --git a/docs/platform/webcontainers/assets/chrome-settings-cookies-3.png b/docs/platform/webcontainers/assets/chrome-settings-cookies-3.png index 4288835b..a720c08f 100644 Binary files a/docs/platform/webcontainers/assets/chrome-settings-cookies-3.png and b/docs/platform/webcontainers/assets/chrome-settings-cookies-3.png differ diff --git a/docs/platform/webcontainers/assets/chrome-settings-popups.png b/docs/platform/webcontainers/assets/chrome-settings-popups.png new file mode 100644 index 00000000..01aaf569 Binary files /dev/null and b/docs/platform/webcontainers/assets/chrome-settings-popups.png differ diff --git a/docs/platform/webcontainers/assets/firefox-settings-cookies-2.png b/docs/platform/webcontainers/assets/firefox-settings-cookies-2.png index fe100a56..3c026404 100644 Binary files a/docs/platform/webcontainers/assets/firefox-settings-cookies-2.png and b/docs/platform/webcontainers/assets/firefox-settings-cookies-2.png differ diff --git a/docs/platform/webcontainers/assets/firefox-settings-popups.png b/docs/platform/webcontainers/assets/firefox-settings-popups.png new file mode 100644 index 00000000..60d39ec9 Binary files /dev/null and b/docs/platform/webcontainers/assets/firefox-settings-popups.png differ diff --git a/docs/platform/webcontainers/browser-config.md b/docs/platform/webcontainers/browser-config.md index d99b1600..a66d5305 100644 --- a/docs/platform/webcontainers/browser-config.md +++ b/docs/platform/webcontainers/browser-config.md @@ -16,38 +16,72 @@ WebContainers use a combination of browser technologies, such as [Service Worker In some browsers, this feature is blocked by “third-party cookie” or “third-party storage” restrictions. These are legitimate restrictions when the third-party domain is an ad server or a tracking server, but in the case of WebContainers the third-party domain is where your project code runs. -## Chrome: enabling Service Workers {#chrome-service-workers} +## Chrome -If you use the “Block Third Party Cookies” option in Chrome and you have "Third-party Storage Partitioning" disabled, you will need to either: +With Chrome's defaults, starting with version 118 or later, you should get a pretty good experience out of the box. + +Read on if you run into issues or want an even smoother experience. + +### Previews in a separate tab {#chrome-preview-separate-tab} + +Previews opened in a separate tab are not connected by default to the editor and require an extra step. To complete this step, you are usually prompted to click a button. + +This can happen automatically if your popups settings, [chrome://settings/content/popups](chrome://settings/content/popups), are adjusted with the following exception: + +``` +https://[*.]webcontainer.io +https://[*.]webcontainer-api.io +``` + +Chrome popups settings showing the *.webcontainer.io origins as exceptions + +Once done, whenever the preview needs to reconnect to the editor, it will open a popup that gets immediately closed. + +Lastly, if Chrome's [memory saver][CHROME_MEMORY_SAVER] is turned on, this step might be necessary more often than required. To avoid it, you can add the following exception in [chrome://settings/performance](chrome://settings/performance): + +``` +https://webcontainer.io +https://webcontainer-api.io +https://stackblitz.com +``` + +Your performance settings should be similar to this: + +Chrome performance settings showing the memory saver section with an exception for stackblitz.com + +### Enabling Service Workers {#chrome-service-workers} + +If you use the “Block Third Party Cookies” option in Chrome and you have “Third-party Storage Partitioning” disabled, you will need to either: - Enable Storage partitioning - Or add exceptions for StackBlitz projects. The first option should be preferred because this is a [new feature][GOOGLE_SP] of Chrome which improves your privacy when you visit websites that embed third-party sites. -### Enable Storage partitioning +#### Enable Storage partitioning Visit `chrome://flags/#third-party-storage-partitioning` and choose `Enabled` in the drop down. In recent version of Chrome, choosing the `Default` value should work too. -Chrome flags showing the third-party Storage Partitioning option enabled. +Chrome flags showing the third-party Storage Partitioning option enabled. -### Or add exceptions for Stackblitz +#### Or add exceptions for Stackblitz To allow all StackBlitz projects to use Service Workers, go to your browser’s cookie preferences, and add exceptions for the following URL patterns: ``` https://[*.]stackblitz.io https://[*.]webcontainer.io +https://[*.]webcontainer-api.io ``` For instance, in Chrome, go to `chrome://settings/cookies` and add those exceptions in the “Sites that can always use cookies” section. -Chrome cookie settings with an empty list of “Sites that can always use cookies”. +Chrome cookie settings with an empty list of “Sites that can always use cookies”. -Chrome cookie settings showing a modal dialog for adding a site to list of third-party cookie exceptions. +Chrome cookie settings showing a modal dialog for adding a site to list of third-party cookie exceptions. -Chrome cookie settings with exceptions for stackblitz.io and local.webcontainer.io domains. +Chrome cookie settings with exceptions for stackblitz.io and local.webcontainer.io domains. :::details Advanced: enabling Service Workers for a single project @@ -67,7 +101,9 @@ Note that the list of blocked domains might look different for you. In particula ::: -## Firefox: enabling Service Workers {#firefox-service-workers} +## Firefox + +### Enabling Service Workers {#firefox-service-workers} When Firefox’s Enhanced Tracking Protection is configured in “Custom” mode with the cookie blocking option set to “All cross-site cookies”, Firefox will block the Service Workers used by WebContainers. @@ -81,7 +117,8 @@ To do so, visit `about:preferences#privacy` to check what your current settings The Firefox “Privacy & Security” settings page showing that Enhanced Tracking Protection is set to “Custom”, and to “Cookies: All cross-site cookies (may cause websites to break)”. To add exceptions for StackBlitz, scroll down to the “Cookies and Site Data” section, click on “Manage Exceptions…”, and add exceptions for the following sites: @@ -89,16 +126,32 @@ To add exceptions for StackBlitz, scroll down to the “Cookies and Site Data” ``` https://stackblitz.io https://webcontainer.io +https://webcontainer-api.io ``` The Cookies and site data exceptions management window in Firefox settings. It shows a couple entries for stackblitz.io and webcontainer.io, both with the value “Allow”. Don’t forget to click “Save Changes”. Then you should be able to reload the tab with your StackBlitz project, and hopefully everything should work! +### Previews in a separate tab {#firefox-preview-separate-tab} + +Previews opened in a separate tab are not connected by default to the editor and require an extra step. To complete this step, you are usually prompted to click a button. + +This can happen automatically if your popups settings, [about:preferences#privacy](about:preferences#privacy), are adjusted with the following exception: + +``` +https://webcontainer.io +https://webcontainer-api.io +``` + +Firefox popups settings showing the webcontainer.io site allowed as an exception + + ## Brave: enabling Service Workers {#brave-service-workers} By default, Brave’s “Shields” feature blocks [Service Workers][MDN_SERVICE_WORKER] and cookies from third-party domains. @@ -107,19 +160,19 @@ To allow WebContainers to run in Brave, you will need to add an exception for St 1. Visit a WebContainers-based project, for instance https://stackblitz.com/edit/nextjs. The project’s boot sequence might stay stuck on the “Running start command” step: -![Screenshot of Brave on a WebContainers project with the Brave Shields feature on. Loading the project’s web server is stuck on the last step.](./assets/brave-stuck-project.png) +Screenshot of Brave on a WebContainers project with the Brave Shields feature on. Loading the project’s web server is stuck on the last step 2. Click on the “Shields” icon at the right of the address bar, then click on “Advanced View”. -Screenshot showing the Shields configuration popup for stackblitz.com. +Screenshot showing the Shields configuration popup for stackblitz.com. 3. In the advanced view, change the “Cross-site cookies blocked” option to “All cookies allowed”. -![Screenshot showing the advanced view of the Shields configuration popup, with a drop-down selector for cross-site cookie permissions.](./assets/brave-shields-details.png) +Screenshot showing the advanced view of the Shields configuration popup, with a drop-down selector for cross-site cookie permissions. Brave will reload the page, and you should get a working project: -![Screenshot of Brave on a WebContainers project with the Brave Shields feature tweaked to allow third-party cookies and Service Workers. Loading the web server works, and shows the default page for Next.js’s starter project.](./assets/brave-working-project.png) +Screenshot of Brave on a WebContainers project with the Brave Shields feature tweaked to allow third-party cookies and Service Workers. Loading the web server works, and shows the default page for Next.js’s starter project. ## Edge: enabling WebAssembly {#edge-webassembly} @@ -143,4 +196,5 @@ stackblitz.com [MDN_SERVICE_WORKER]: https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API [MDN_WEB_ASSEMBLY]: https://developer.mozilla.org/en-US/docs/WebAssembly -[GOOGLE_SP]: https://developers.google.com/privacy-sandbox/3pcd/storage-partitioning \ No newline at end of file +[GOOGLE_SP]: https://developers.google.com/privacy-sandbox/3pcd/storage-partitioning +[CHROME_MEMORY_SAVER]: https://support.google.com/chrome/answer/12929150 \ No newline at end of file diff --git a/docs/platform/webcontainers/turbo-package-manager.md b/docs/platform/webcontainers/turbo-package-manager.md index 4098474c..ad3538bc 100644 --- a/docs/platform/webcontainers/turbo-package-manager.md +++ b/docs/platform/webcontainers/turbo-package-manager.md @@ -7,7 +7,7 @@ og_image: webcontainer-turbo-package-manager.png # {{ $frontmatter.title }} :::warning -Starting on January 1, 2024, turbo will no longer be supported and will be removed. We now offer built-in support for npm, pnpm, and yarn v1. +Starting on April 2024, turbo ceased to be supported and was removed. We offer built-in support for npm, pnpm, and yarn v1. Support for native package managers out-of-the-box offers a lot of benefits. All features of your favorite package manager will be immediately available. diff --git a/docs/public/img/logo/readme.md b/docs/public/img/logo/readme.md new file mode 100644 index 00000000..cd31f559 --- /dev/null +++ b/docs/public/img/logo/readme.md @@ -0,0 +1,16 @@ +# StackBlitz Logo + +The files in this folder serve as a resource for third parties to access StackBlitz logos. + +- ![](https://developer.stackblitz.com/img/logo/stackblitz-bolt-blue.svg) + https://developer.stackblitz.com/img/logo/stackblitz-bolt-blue.svg +- ![](https://developer.stackblitz.com/img/logo/stackblitz-bolt-white.svg) + https://developer.stackblitz.com/img/logo/stackblitz-bolt-white.svg +- ![](https://developer.stackblitz.com/img/logo/stackblitz-logo-black_blue.svg) + https://developer.stackblitz.com/img/logo/stackblitz-logo-black_blue.svg +- ![](https://developer.stackblitz.com/img/logo/stackblitz-logo-black.svg) + https://developer.stackblitz.com/img/logo/stackblitz-logo-black.svg +- ![](https://developer.stackblitz.com/img/logo/stackblitz-logo-white_blue.svg) + https://developer.stackblitz.com/img/logo/stackblitz-logo-white_blue.svg +- ![](https://developer.stackblitz.com/img/logo/stackblitz-logo-white.svg) + https://developer.stackblitz.com/img/logo/stackblitz-logo-white.svg diff --git a/docs/public/img/logo/stackblitz-bolt-blue.svg b/docs/public/img/logo/stackblitz-bolt-blue.svg new file mode 100644 index 00000000..2ffb7ab2 --- /dev/null +++ b/docs/public/img/logo/stackblitz-bolt-blue.svg @@ -0,0 +1,3 @@ + + + diff --git a/docs/public/img/logo/stackblitz-bolt-white.svg b/docs/public/img/logo/stackblitz-bolt-white.svg new file mode 100644 index 00000000..ce0fb292 --- /dev/null +++ b/docs/public/img/logo/stackblitz-bolt-white.svg @@ -0,0 +1,3 @@ + + + diff --git a/docs/public/img/logo/stackblitz-logo-black.svg b/docs/public/img/logo/stackblitz-logo-black.svg new file mode 100644 index 00000000..d14a5329 --- /dev/null +++ b/docs/public/img/logo/stackblitz-logo-black.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs/public/img/logo/stackblitz-logo-black_blue.svg b/docs/public/img/logo/stackblitz-logo-black_blue.svg new file mode 100644 index 00000000..e61c10aa --- /dev/null +++ b/docs/public/img/logo/stackblitz-logo-black_blue.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs/public/img/logo/stackblitz-logo-white.svg b/docs/public/img/logo/stackblitz-logo-white.svg new file mode 100644 index 00000000..ae8e361f --- /dev/null +++ b/docs/public/img/logo/stackblitz-logo-white.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs/public/img/logo/stackblitz-logo-white_blue.svg b/docs/public/img/logo/stackblitz-logo-white_blue.svg new file mode 100644 index 00000000..67961d53 --- /dev/null +++ b/docs/public/img/logo/stackblitz-logo-white_blue.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs/teams/assets/project-access-settings.png b/docs/teams/assets/project-access-settings.png new file mode 100644 index 00000000..538ccd87 Binary files /dev/null and b/docs/teams/assets/project-access-settings.png differ diff --git a/docs/teams/collaboration-and-access-control.md b/docs/teams/collaboration-and-access-control.md index 151df978..b31eff4b 100644 --- a/docs/teams/collaboration-and-access-control.md +++ b/docs/teams/collaboration-and-access-control.md @@ -12,6 +12,14 @@ By default, all StackBlitz projects created within a Team are publicly viewable ![Sharing settings](./assets/sharing-settings.png) +### Team settings +When collaborating inside a StackBlitz Team, you have these additional controls: +- Allow or disallow team members from inviting external users to collaborate on projects created inside the team. +- Select the highest level of external visibility (to those outside the team) allowed for projects created inside the team (private, secret, or public). +- Default member role allows you to set the default level of access that members of the team have to newly created projects (co-owner, editor, or viewer). This can be changed on an individual project-by-project basis as well. + +![Sharing settings](./assets/project-access-settings.png) + :::tip -Currently it is not possible to hide projects (or remove edit access) from other members within the StackBlitz Team. Selecting Visibility: Private will only hide the project from users NOT in the Team. [Let us know](mailto:hello@stackblitz.com) if additional configurability here is important to you. +Currently it is not possible to hide projects from other members within the StackBlitz Team. Selecting Visibility: Private will only hide the project from users NOT in the Team. [Let us know](mailto:hello@stackblitz.com) if additional configurability here is important to you. ::: \ No newline at end of file diff --git a/docs/teams/private-npm-registry-integration.md b/docs/teams/private-npm-registry-integration.md index c4190e99..33a8d5c4 100644 --- a/docs/teams/private-npm-registry-integration.md +++ b/docs/teams/private-npm-registry-integration.md @@ -16,7 +16,7 @@ If you can ping/access your registry without a proxy or firewall then you can fo These items can be found in your private npm registry server settings. - [Jfrog Artifactory Documentation](https://jfrog.com/help/r/jfrog-artifactory-documentation/jfrog-artifactory) - [Sonatype Nexus Documentation](https://help.sonatype.com/repomanager3) -2. Navigate to `https://stackblitz.com/orgs/github/[YOUR_ORG_NAME]/settings` and scroll to the bottom of the page +2. Navigate to `https://stackblitz.com/orgs/github/[YOUR_ORG_NAME]/npm_registries` and scroll to the bottom of the page 3. Click “Add new registry” ![Add registry](./assets/add-registry.png) 4. Enter the URL and Access Token, and click “Add registry” diff --git a/netlify.toml b/netlify.toml index 1469e706..e13e1b91 100644 --- a/netlify.toml +++ b/netlify.toml @@ -2,3 +2,4 @@ for = "/img/*" [headers.values] Cross-Origin-Resource-Policy = "cross-origin" + Access-Control-Allow-Origin = "*" diff --git a/package-lock.json b/package-lock.json index 8e80ee16..0f71e765 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7 +1,7 @@ { "name": "stackblitz-docs", "version": "0.0.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -11,13 +11,13 @@ "@stackblitz/sdk": "^1.9.0" }, "devDependencies": { - "@types/node": "^20.8.9", - "@vue/tsconfig": "^0.4.0", - "dotenv": "^16.3.1", + "@types/node": "^20.11.30", + "@vue/tsconfig": "^0.5.1", + "dotenv": "^16.4.5", "markdown-it-footnote": "^3.0.3", - "prettier": "^3.0.3", - "sass": "^1.69.5", - "vitepress": "^1.0.0-rc.24" + "prettier": "^3.2.5", + "sass": "^1.72.0", + "vitepress": "~1.0.2" } }, "node_modules/@algolia/autocomplete-core": { @@ -66,138 +66,138 @@ } }, "node_modules/@algolia/cache-browser-local-storage": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.20.0.tgz", - "integrity": "sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.22.1.tgz", + "integrity": "sha512-Sw6IAmOCvvP6QNgY9j+Hv09mvkvEIDKjYW8ow0UDDAxSXy664RBNQk3i/0nt7gvceOJ6jGmOTimaZoY1THmU7g==", "dev": true, "dependencies": { - "@algolia/cache-common": "4.20.0" + "@algolia/cache-common": "4.22.1" } }, "node_modules/@algolia/cache-common": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.20.0.tgz", - "integrity": "sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.22.1.tgz", + "integrity": "sha512-TJMBKqZNKYB9TptRRjSUtevJeQVXRmg6rk9qgFKWvOy8jhCPdyNZV1nB3SKGufzvTVbomAukFR8guu/8NRKBTA==", "dev": true }, "node_modules/@algolia/cache-in-memory": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.20.0.tgz", - "integrity": "sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.22.1.tgz", + "integrity": "sha512-ve+6Ac2LhwpufuWavM/aHjLoNz/Z/sYSgNIXsinGofWOysPilQZPUetqLj8vbvi+DHZZaYSEP9H5SRVXnpsNNw==", "dev": true, "dependencies": { - "@algolia/cache-common": "4.20.0" + "@algolia/cache-common": "4.22.1" } }, "node_modules/@algolia/client-account": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.20.0.tgz", - "integrity": "sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.22.1.tgz", + "integrity": "sha512-k8m+oegM2zlns/TwZyi4YgCtyToackkOpE+xCaKCYfBfDtdGOaVZCM5YvGPtK+HGaJMIN/DoTL8asbM3NzHonw==", "dev": true, "dependencies": { - "@algolia/client-common": "4.20.0", - "@algolia/client-search": "4.20.0", - "@algolia/transporter": "4.20.0" + "@algolia/client-common": "4.22.1", + "@algolia/client-search": "4.22.1", + "@algolia/transporter": "4.22.1" } }, "node_modules/@algolia/client-analytics": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.20.0.tgz", - "integrity": "sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.22.1.tgz", + "integrity": "sha512-1ssi9pyxyQNN4a7Ji9R50nSdISIumMFDwKNuwZipB6TkauJ8J7ha/uO60sPJFqQyqvvI+px7RSNRQT3Zrvzieg==", "dev": true, "dependencies": { - "@algolia/client-common": "4.20.0", - "@algolia/client-search": "4.20.0", - "@algolia/requester-common": "4.20.0", - "@algolia/transporter": "4.20.0" + "@algolia/client-common": "4.22.1", + "@algolia/client-search": "4.22.1", + "@algolia/requester-common": "4.22.1", + "@algolia/transporter": "4.22.1" } }, "node_modules/@algolia/client-common": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.20.0.tgz", - "integrity": "sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.22.1.tgz", + "integrity": "sha512-IvaL5v9mZtm4k4QHbBGDmU3wa/mKokmqNBqPj0K7lcR8ZDKzUorhcGp/u8PkPC/e0zoHSTvRh7TRkGX3Lm7iOQ==", "dev": true, "dependencies": { - "@algolia/requester-common": "4.20.0", - "@algolia/transporter": "4.20.0" + "@algolia/requester-common": "4.22.1", + "@algolia/transporter": "4.22.1" } }, "node_modules/@algolia/client-personalization": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.20.0.tgz", - "integrity": "sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.22.1.tgz", + "integrity": "sha512-sl+/klQJ93+4yaqZ7ezOttMQ/nczly/3GmgZXJ1xmoewP5jmdP/X/nV5U7EHHH3hCUEHeN7X1nsIhGPVt9E1cQ==", "dev": true, "dependencies": { - "@algolia/client-common": "4.20.0", - "@algolia/requester-common": "4.20.0", - "@algolia/transporter": "4.20.0" + "@algolia/client-common": "4.22.1", + "@algolia/requester-common": "4.22.1", + "@algolia/transporter": "4.22.1" } }, "node_modules/@algolia/client-search": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.20.0.tgz", - "integrity": "sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.22.1.tgz", + "integrity": "sha512-yb05NA4tNaOgx3+rOxAmFztgMTtGBi97X7PC3jyNeGiwkAjOZc2QrdZBYyIdcDLoI09N0gjtpClcackoTN0gPA==", "dev": true, "dependencies": { - "@algolia/client-common": "4.20.0", - "@algolia/requester-common": "4.20.0", - "@algolia/transporter": "4.20.0" + "@algolia/client-common": "4.22.1", + "@algolia/requester-common": "4.22.1", + "@algolia/transporter": "4.22.1" } }, "node_modules/@algolia/logger-common": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.20.0.tgz", - "integrity": "sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.22.1.tgz", + "integrity": "sha512-OnTFymd2odHSO39r4DSWRFETkBufnY2iGUZNrMXpIhF5cmFE8pGoINNPzwg02QLBlGSaLqdKy0bM8S0GyqPLBg==", "dev": true }, "node_modules/@algolia/logger-console": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.20.0.tgz", - "integrity": "sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.22.1.tgz", + "integrity": "sha512-O99rcqpVPKN1RlpgD6H3khUWylU24OXlzkavUAMy6QZd1776QAcauE3oP8CmD43nbaTjBexZj2nGsBH9Tc0FVA==", "dev": true, "dependencies": { - "@algolia/logger-common": "4.20.0" + "@algolia/logger-common": "4.22.1" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.20.0.tgz", - "integrity": "sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.22.1.tgz", + "integrity": "sha512-dtQGYIg6MteqT1Uay3J/0NDqD+UciHy3QgRbk7bNddOJu+p3hzjTRYESqEnoX/DpEkaNYdRHUKNylsqMpgwaEw==", "dev": true, "dependencies": { - "@algolia/requester-common": "4.20.0" + "@algolia/requester-common": "4.22.1" } }, "node_modules/@algolia/requester-common": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.20.0.tgz", - "integrity": "sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.22.1.tgz", + "integrity": "sha512-dgvhSAtg2MJnR+BxrIFqlLtkLlVVhas9HgYKMk2Uxiy5m6/8HZBL40JVAMb2LovoPFs9I/EWIoFVjOrFwzn5Qg==", "dev": true }, "node_modules/@algolia/requester-node-http": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.20.0.tgz", - "integrity": "sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.22.1.tgz", + "integrity": "sha512-JfmZ3MVFQkAU+zug8H3s8rZ6h0ahHZL/SpMaSasTCGYR5EEJsCc8SI5UZ6raPN2tjxa5bxS13BRpGSBUens7EA==", "dev": true, "dependencies": { - "@algolia/requester-common": "4.20.0" + "@algolia/requester-common": "4.22.1" } }, "node_modules/@algolia/transporter": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.20.0.tgz", - "integrity": "sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.22.1.tgz", + "integrity": "sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ==", "dev": true, "dependencies": { - "@algolia/cache-common": "4.20.0", - "@algolia/logger-common": "4.20.0", - "@algolia/requester-common": "4.20.0" + "@algolia/cache-common": "4.22.1", + "@algolia/logger-common": "4.22.1", + "@algolia/requester-common": "4.22.1" } }, "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", + "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -207,30 +207,30 @@ } }, "node_modules/@docsearch/css": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.5.2.tgz", - "integrity": "sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.0.tgz", + "integrity": "sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==", "dev": true }, "node_modules/@docsearch/js": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.5.2.tgz", - "integrity": "sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.6.0.tgz", + "integrity": "sha512-QujhqINEElrkIfKwyyyTfbsfMAYCkylInLYMRqHy7PHc8xTBQCow73tlo/Kc7oIwBrCLf0P3YhjlOeV4v8hevQ==", "dev": true, "dependencies": { - "@docsearch/react": "3.5.2", + "@docsearch/react": "3.6.0", "preact": "^10.0.0" } }, "node_modules/@docsearch/react": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.5.2.tgz", - "integrity": "sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.0.tgz", + "integrity": "sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==", "dev": true, "dependencies": { "@algolia/autocomplete-core": "1.9.3", "@algolia/autocomplete-preset-algolia": "1.9.3", - "@docsearch/css": "3.5.2", + "@docsearch/css": "3.6.0", "algoliasearch": "^4.19.1" }, "peerDependencies": { @@ -254,10 +254,26 @@ } } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", "cpu": [ "arm" ], @@ -271,9 +287,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", "cpu": [ "arm64" ], @@ -287,9 +303,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", "cpu": [ "x64" ], @@ -303,9 +319,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", "cpu": [ "arm64" ], @@ -319,9 +335,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", "cpu": [ "x64" ], @@ -335,9 +351,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", "cpu": [ "arm64" ], @@ -351,9 +367,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", "cpu": [ "x64" ], @@ -367,9 +383,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", "cpu": [ "arm" ], @@ -383,9 +399,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", "cpu": [ "arm64" ], @@ -399,9 +415,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", "cpu": [ "ia32" ], @@ -415,9 +431,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", "cpu": [ "loong64" ], @@ -431,9 +447,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", "cpu": [ "mips64el" ], @@ -447,9 +463,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", "cpu": [ "ppc64" ], @@ -463,9 +479,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", "cpu": [ "riscv64" ], @@ -479,9 +495,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", "cpu": [ "s390x" ], @@ -495,9 +511,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", "cpu": [ "x64" ], @@ -511,9 +527,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", "cpu": [ "x64" ], @@ -527,9 +543,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", "cpu": [ "x64" ], @@ -543,9 +559,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", "cpu": [ "x64" ], @@ -559,9 +575,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", "cpu": [ "arm64" ], @@ -575,9 +591,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", "cpu": [ "ia32" ], @@ -591,9 +607,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", "cpu": [ "x64" ], @@ -612,21 +628,211 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.0.tgz", + "integrity": "sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.0.tgz", + "integrity": "sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.0.tgz", + "integrity": "sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.0.tgz", + "integrity": "sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.0.tgz", + "integrity": "sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.0.tgz", + "integrity": "sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.0.tgz", + "integrity": "sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.0.tgz", + "integrity": "sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.0.tgz", + "integrity": "sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.0.tgz", + "integrity": "sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.0.tgz", + "integrity": "sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.0.tgz", + "integrity": "sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.0.tgz", + "integrity": "sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.2.0.tgz", + "integrity": "sha512-OlFvx+nyr5C8zpcMBnSGir0YPD6K11uYhouqhNmm1qLiis4GA7SsGtu07r9gKS9omks8RtQqHrJL4S+lqWK01A==", + "dev": true + }, + "node_modules/@shikijs/transformers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.2.0.tgz", + "integrity": "sha512-xKn7DtA65DQV4FOfYsrvqM80xOy2xuXnxWWKsZmHv1VII/IOuDUDsWDu3KnpeLH6wqNJWp1GRoNUsHR1aw/VhQ==", + "dev": true, + "dependencies": { + "shiki": "1.2.0" + } + }, "node_modules/@stackblitz/sdk": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@stackblitz/sdk/-/sdk-1.9.0.tgz", "integrity": "sha512-3m6C7f8pnR5KXys/Hqx2x6ylnpqOak6HtnZI6T5keEO0yT+E4Spkw37VEbdwuC+2oxmjdgq6YZEgiKX7hM1GmQ==" }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, "node_modules/@types/linkify-it": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.4.tgz", - "integrity": "sha512-hPpIeeHb/2UuCw06kSNAOVWgehBLXEo0/fUs0mw3W2qhqX89PI2yvok83MnuctYGCPrabGIoi0fFso4DQ+sNUQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz", + "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==", "dev": true }, "node_modules/@types/markdown-it": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.5.tgz", - "integrity": "sha512-QhJP7hkq3FCrFNx0szMNCT/79CXfcEgUIA3jc5GBfeXqoKsk3R8JZm2wRXJ2DiyjbPE4VMFOSDemLFcUTZmHEQ==", + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.7.tgz", + "integrity": "sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==", "dev": true, "dependencies": { "@types/linkify-it": "*", @@ -634,182 +840,197 @@ } }, "node_modules/@types/mdurl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.4.tgz", - "integrity": "sha512-ARVxjAEX5TARFRzpDRVC6cEk0hUIXCCwaMhz8y7S1/PxU6zZS1UMjyobz7q4w/D/R552r4++EhwmXK1N2rAy0A==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz", + "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==", "dev": true }, "node_modules/@types/node": { - "version": "20.8.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.9.tgz", - "integrity": "sha512-UzykFsT3FhHb1h7yD4CA4YhBHq545JC0YnEz41xkipN88eKQtL6rSgocL5tbAP6Ola9Izm/Aw4Ora8He4x0BHg==", + "version": "20.11.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz", + "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==", "dev": true, "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@types/web-bluetooth": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.18.tgz", - "integrity": "sha512-v/ZHEj9xh82usl8LMR3GarzFY1IrbXJw5L4QfQhokjRV91q+SelFqxQWSep1ucXEZ22+dSTwLFkXeur25sPIbw==", + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", "dev": true }, "node_modules/@vitejs/plugin-vue": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.3.1.tgz", - "integrity": "sha512-tUBEtWcF7wFtII7ayNiLNDTCE1X1afySEo+XNVMNkFXaThENyCowIEX095QqbJZGTgoOcSVDJGlnde2NG4jtbQ==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz", + "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==", "dev": true, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^18.0.0 || >=20.0.0" }, "peerDependencies": { - "vite": "^4.0.0", + "vite": "^5.0.0", "vue": "^3.2.25" } }, "node_modules/@vue/compiler-core": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.7.tgz", - "integrity": "sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.21.tgz", + "integrity": "sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==", "dev": true, "dependencies": { - "@babel/parser": "^7.23.0", - "@vue/shared": "3.3.7", + "@babel/parser": "^7.23.9", + "@vue/shared": "3.4.21", + "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.0.2" } }, "node_modules/@vue/compiler-dom": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.7.tgz", - "integrity": "sha512-0LwkyJjnUPssXv/d1vNJ0PKfBlDoQs7n81CbO6Q0zdL7H1EzqYRrTVXDqdBVqro0aJjo/FOa1qBAPVI4PGSHBw==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz", + "integrity": "sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==", "dev": true, "dependencies": { - "@vue/compiler-core": "3.3.7", - "@vue/shared": "3.3.7" + "@vue/compiler-core": "3.4.21", + "@vue/shared": "3.4.21" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.7.tgz", - "integrity": "sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz", + "integrity": "sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==", "dev": true, "dependencies": { - "@babel/parser": "^7.23.0", - "@vue/compiler-core": "3.3.7", - "@vue/compiler-dom": "3.3.7", - "@vue/compiler-ssr": "3.3.7", - "@vue/reactivity-transform": "3.3.7", - "@vue/shared": "3.3.7", + "@babel/parser": "^7.23.9", + "@vue/compiler-core": "3.4.21", + "@vue/compiler-dom": "3.4.21", + "@vue/compiler-ssr": "3.4.21", + "@vue/shared": "3.4.21", "estree-walker": "^2.0.2", - "magic-string": "^0.30.5", - "postcss": "^8.4.31", + "magic-string": "^0.30.7", + "postcss": "^8.4.35", "source-map-js": "^1.0.2" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.7.tgz", - "integrity": "sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz", + "integrity": "sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==", "dev": true, "dependencies": { - "@vue/compiler-dom": "3.3.7", - "@vue/shared": "3.3.7" + "@vue/compiler-dom": "3.4.21", + "@vue/shared": "3.4.21" } }, "node_modules/@vue/devtools-api": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", - "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==", - "dev": true + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.0.21.tgz", + "integrity": "sha512-hIkqpU3I9BM/qNUGhb/RAfEkRtFZTM4QFrBBH5gxGYubBIRctqgQk4ukLAkhaW+VmOw5DAPxQHXH4W6Oh36L6g==", + "dev": true, + "dependencies": { + "@vue/devtools-kit": "^7.0.21" + } }, - "node_modules/@vue/reactivity": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.7.tgz", - "integrity": "sha512-cZNVjWiw00708WqT0zRpyAgduG79dScKEPYJXq2xj/aMtk3SKvL3FBt2QKUlh6EHBJ1m8RhBY+ikBUzwc7/khg==", + "node_modules/@vue/devtools-kit": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.0.21.tgz", + "integrity": "sha512-tNDtcQkPHfLDH1wtZuSZ2ZfE+r/aGswkBmKmXjwfpZTsOTk/YXsgrMnBKtHOL6dpsG3GyP09gIgNkCkA5lBIPQ==", "dev": true, "dependencies": { - "@vue/shared": "3.3.7" + "@vue/devtools-shared": "^7.0.21", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1" + }, + "peerDependencies": { + "vue": "^3.0.0" } }, - "node_modules/@vue/reactivity-transform": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.7.tgz", - "integrity": "sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA==", + "node_modules/@vue/devtools-shared": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.0.21.tgz", + "integrity": "sha512-wuIakRkSqwsk9+Y4z5QTdsmhTJRAt4aX0ROXyOOEPL+ROrN26YsPbXyqlzroU5uoOoAvx81iObIlmwZWtZztgw==", "dev": true, "dependencies": { - "@babel/parser": "^7.23.0", - "@vue/compiler-core": "3.3.7", - "@vue/shared": "3.3.7", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.5" + "rfdc": "^1.3.1" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.21.tgz", + "integrity": "sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==", + "dev": true, + "dependencies": { + "@vue/shared": "3.4.21" } }, "node_modules/@vue/runtime-core": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.7.tgz", - "integrity": "sha512-LHq9du3ubLZFdK/BP0Ysy3zhHqRfBn80Uc+T5Hz3maFJBGhci1MafccnL3rpd5/3wVfRHAe6c+PnlO2PAavPTQ==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.21.tgz", + "integrity": "sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==", "dev": true, "dependencies": { - "@vue/reactivity": "3.3.7", - "@vue/shared": "3.3.7" + "@vue/reactivity": "3.4.21", + "@vue/shared": "3.4.21" } }, "node_modules/@vue/runtime-dom": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.7.tgz", - "integrity": "sha512-PFQU1oeJxikdDmrfoNQay5nD4tcPNYixUBruZzVX/l0eyZvFKElZUjW4KctCcs52nnpMGO6UDK+jF5oV4GT5Lw==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.21.tgz", + "integrity": "sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==", "dev": true, "dependencies": { - "@vue/runtime-core": "3.3.7", - "@vue/shared": "3.3.7", - "csstype": "^3.1.2" + "@vue/runtime-core": "3.4.21", + "@vue/shared": "3.4.21", + "csstype": "^3.1.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.7.tgz", - "integrity": "sha512-UlpKDInd1hIZiNuVVVvLgxpfnSouxKQOSE2bOfQpBuGwxRV/JqqTCyyjXUWiwtVMyeRaZhOYYqntxElk8FhBhw==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.21.tgz", + "integrity": "sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==", "dev": true, "dependencies": { - "@vue/compiler-ssr": "3.3.7", - "@vue/shared": "3.3.7" + "@vue/compiler-ssr": "3.4.21", + "@vue/shared": "3.4.21" }, "peerDependencies": { - "vue": "3.3.7" + "vue": "3.4.21" } }, "node_modules/@vue/shared": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.7.tgz", - "integrity": "sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.21.tgz", + "integrity": "sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==", "dev": true }, "node_modules/@vue/tsconfig": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.4.0.tgz", - "integrity": "sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.5.1.tgz", + "integrity": "sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==", "dev": true }, "node_modules/@vueuse/core": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.5.0.tgz", - "integrity": "sha512-z/tI2eSvxwLRjOhDm0h/SXAjNm8N5ld6/SC/JQs6o6kpJ6Ya50LnEL8g5hoYu005i28L0zqB5L5yAl8Jl26K3A==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.9.0.tgz", + "integrity": "sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==", "dev": true, "dependencies": { - "@types/web-bluetooth": "^0.0.18", - "@vueuse/metadata": "10.5.0", - "@vueuse/shared": "10.5.0", - "vue-demi": ">=0.14.6" + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "10.9.0", + "@vueuse/shared": "10.9.0", + "vue-demi": ">=0.14.7" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@vueuse/core/node_modules/vue-demi": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", "dev": true, "hasInstallScript": true, "bin": { @@ -833,14 +1054,14 @@ } }, "node_modules/@vueuse/integrations": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.5.0.tgz", - "integrity": "sha512-fm5sXLCK0Ww3rRnzqnCQRmfjDURaI4xMsx+T+cec0ngQqHx/JgUtm8G0vRjwtonIeTBsH1Q8L3SucE+7K7upJQ==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.9.0.tgz", + "integrity": "sha512-acK+A01AYdWSvL4BZmCoJAcyHJ6EqhmkQEXbQLwev1MY7NBnS+hcEMx/BzVoR9zKI+UqEPMD9u6PsyAuiTRT4Q==", "dev": true, "dependencies": { - "@vueuse/core": "10.5.0", - "@vueuse/shared": "10.5.0", - "vue-demi": ">=0.14.6" + "@vueuse/core": "10.9.0", + "@vueuse/shared": "10.9.0", + "vue-demi": ">=0.14.7" }, "funding": { "url": "https://github.com/sponsors/antfu" @@ -899,9 +1120,9 @@ } }, "node_modules/@vueuse/integrations/node_modules/vue-demi": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", "dev": true, "hasInstallScript": true, "bin": { @@ -925,30 +1146,30 @@ } }, "node_modules/@vueuse/metadata": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.5.0.tgz", - "integrity": "sha512-fEbElR+MaIYyCkeM0SzWkdoMtOpIwO72x8WsZHRE7IggiOlILttqttM69AS13nrDxosnDBYdyy3C5mR1LCxHsw==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.9.0.tgz", + "integrity": "sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==", "dev": true, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@vueuse/shared": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.5.0.tgz", - "integrity": "sha512-18iyxbbHYLst9MqU1X1QNdMHIjks6wC7XTVf0KNOv5es/Ms6gjVFCAAWTVP2JStuGqydg3DT+ExpFORUEi9yhg==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.9.0.tgz", + "integrity": "sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==", "dev": true, "dependencies": { - "vue-demi": ">=0.14.6" + "vue-demi": ">=0.14.7" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@vueuse/shared/node_modules/vue-demi": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", "dev": true, "hasInstallScript": true, "bin": { @@ -972,32 +1193,26 @@ } }, "node_modules/algoliasearch": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.20.0.tgz", - "integrity": "sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.22.1.tgz", + "integrity": "sha512-jwydKFQJKIx9kIZ8Jm44SdpigFwRGPESaxZBaHSV0XWN2yBJAOT4mT7ppvlrpA4UGzz92pqFnVKr/kaZXrcreg==", "dev": true, "dependencies": { - "@algolia/cache-browser-local-storage": "4.20.0", - "@algolia/cache-common": "4.20.0", - "@algolia/cache-in-memory": "4.20.0", - "@algolia/client-account": "4.20.0", - "@algolia/client-analytics": "4.20.0", - "@algolia/client-common": "4.20.0", - "@algolia/client-personalization": "4.20.0", - "@algolia/client-search": "4.20.0", - "@algolia/logger-common": "4.20.0", - "@algolia/logger-console": "4.20.0", - "@algolia/requester-browser-xhr": "4.20.0", - "@algolia/requester-common": "4.20.0", - "@algolia/requester-node-http": "4.20.0", - "@algolia/transporter": "4.20.0" - } - }, - "node_modules/ansi-sequence-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", - "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", - "dev": true + "@algolia/cache-browser-local-storage": "4.22.1", + "@algolia/cache-common": "4.22.1", + "@algolia/cache-in-memory": "4.22.1", + "@algolia/client-account": "4.22.1", + "@algolia/client-analytics": "4.22.1", + "@algolia/client-common": "4.22.1", + "@algolia/client-personalization": "4.22.1", + "@algolia/client-search": "4.22.1", + "@algolia/logger-common": "4.22.1", + "@algolia/logger-console": "4.22.1", + "@algolia/requester-browser-xhr": "4.22.1", + "@algolia/requester-common": "4.22.1", + "@algolia/requester-node-http": "4.22.1", + "@algolia/transporter": "4.22.1" + } }, "node_modules/anymatch": { "version": "3.1.3", @@ -1061,27 +1276,39 @@ } }, "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "dev": true }, "node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "dev": true, "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" + "url": "https://dotenvx.com" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", "dev": true, "hasInstallScript": true, "bin": { @@ -1091,28 +1318,29 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" } }, "node_modules/estree-walker": { @@ -1143,9 +1371,9 @@ } }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "optional": true, @@ -1168,6 +1396,12 @@ "node": ">= 6" } }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true + }, "node_modules/immutable": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", @@ -1216,16 +1450,10 @@ "node": ">=0.12.0" } }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, "node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "version": "0.30.8", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", + "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" @@ -1247,15 +1475,21 @@ "dev": true }, "node_modules/minisearch": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-6.1.0.tgz", - "integrity": "sha512-PNxA/X8pWk+TiqPbsoIYH0GQ5Di7m6326/lwU/S4mlo4wGQddIcf/V//1f9TB0V4j59b57b+HZxt8h3iMROGvg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-6.3.0.tgz", + "integrity": "sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==", + "dev": true + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", "dev": true }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, "funding": [ { @@ -1279,6 +1513,12 @@ "node": ">=0.10.0" } }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -1298,9 +1538,9 @@ } }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "dev": true, "funding": [ { @@ -1317,18 +1557,18 @@ } ], "dependencies": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" } }, "node_modules/preact": { - "version": "10.18.1", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.18.1.tgz", - "integrity": "sha512-mKUD7RRkQQM6s7Rkmi7IFkoEHjuFqRQUaXamO61E6Nn7vqF/bo7EZCmSyrUnp2UWHw0O7XjZ2eeXis+m7tf4lg==", + "version": "10.20.1", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.20.1.tgz", + "integrity": "sha512-JIFjgFg9B2qnOoGiYMVBtrcFxHqn+dNXbq76bVmcaHYJFYR4lW67AOcXgAYQQTDYXDOg/kTZrKPNCdRgJ2UJmw==", "dev": true, "funding": { "type": "opencollective", @@ -1336,9 +1576,9 @@ } }, "node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -1362,26 +1602,48 @@ "node": ">=8.10.0" } }, + "node_modules/rfdc": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", + "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", + "dev": true + }, "node_modules/rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.0.tgz", + "integrity": "sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==", "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=14.18.0", + "node": ">=18.0.0", "npm": ">=8.0.0" }, "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.13.0", + "@rollup/rollup-android-arm64": "4.13.0", + "@rollup/rollup-darwin-arm64": "4.13.0", + "@rollup/rollup-darwin-x64": "4.13.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.13.0", + "@rollup/rollup-linux-arm64-gnu": "4.13.0", + "@rollup/rollup-linux-arm64-musl": "4.13.0", + "@rollup/rollup-linux-riscv64-gnu": "4.13.0", + "@rollup/rollup-linux-x64-gnu": "4.13.0", + "@rollup/rollup-linux-x64-musl": "4.13.0", + "@rollup/rollup-win32-arm64-msvc": "4.13.0", + "@rollup/rollup-win32-ia32-msvc": "4.13.0", + "@rollup/rollup-win32-x64-msvc": "4.13.0", "fsevents": "~2.3.2" } }, "node_modules/sass": { - "version": "1.69.5", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", - "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", + "version": "1.72.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.72.0.tgz", + "integrity": "sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -1396,28 +1658,34 @@ } }, "node_modules/search-insights": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.8.3.tgz", - "integrity": "sha512-W9rZfQ9XEfF0O6ntgQOTI7Txc8nkZrO4eJ/pTHK0Br6wWND2sPGPoWg+yGhdIW7wMbLqk8dc23IyEtLlNGpeNw==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.13.0.tgz", + "integrity": "sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==", "dev": true, "peer": true }, "node_modules/shiki": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.5.tgz", - "integrity": "sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.2.0.tgz", + "integrity": "sha512-xLhiTMOIUXCv5DqJ4I70GgQCtdlzsTqFLZWcMHHG3TAieBUbvEGthdrlPDlX4mL/Wszx9C6rEcxU6kMlg4YlxA==", "dev": true, "dependencies": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" + "@shikijs/core": "1.2.0" } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -1448,29 +1716,29 @@ "dev": true }, "node_modules/vite": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", - "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.6.tgz", + "integrity": "sha512-FPtnxFlSIKYjZ2eosBQamz4CbyrTizbZ3hnGJlh/wMtCrlp1Hah6AzBLjGI5I2urTfNnpovpHdrL6YRuBOPnCA==", "dev": true, "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.27", - "rollup": "^3.27.1" + "esbuild": "^0.20.1", + "postcss": "^8.4.36", + "rollup": "^4.13.0" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^18.0.0 || >=20.0.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" }, "optionalDependencies": { - "fsevents": "~2.3.2" + "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": ">= 14", + "@types/node": "^18.0.0 || >=20.0.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", @@ -1503,31 +1771,33 @@ } }, "node_modules/vitepress": { - "version": "1.0.0-rc.24", - "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.0-rc.24.tgz", - "integrity": "sha512-RpnL8cnOGwiRlBbrYQUm9sYkJbtyOt/wYXk2diTcokY4yvks/5lq9LuSt+MURWB6ZqwpSNHvTmxgaSfLoG0/OA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.2.tgz", + "integrity": "sha512-bEj9yTEdWyewJFOhEREZF+mXuAgOq27etuJZT6DZSp+J3XpQstXMJc5piSVwhZBtuj8OfA0iXy+jdP1c71KMYQ==", "dev": true, "dependencies": { - "@docsearch/css": "^3.5.2", - "@docsearch/js": "^3.5.2", - "@types/markdown-it": "^13.0.4", - "@vitejs/plugin-vue": "4.3.1", - "@vue/devtools-api": "^6.5.1", - "@vueuse/core": "^10.5.0", - "@vueuse/integrations": "^10.5.0", + "@docsearch/css": "^3.6.0", + "@docsearch/js": "^3.6.0", + "@shikijs/core": "^1.2.0", + "@shikijs/transformers": "^1.2.0", + "@types/markdown-it": "^13.0.7", + "@vitejs/plugin-vue": "^5.0.4", + "@vue/devtools-api": "^7.0.16", + "@vueuse/core": "^10.9.0", + "@vueuse/integrations": "^10.9.0", "focus-trap": "^7.5.4", "mark.js": "8.11.1", - "minisearch": "^6.1.0", - "shiki": "^0.14.5", - "vite": "^4.5.0", - "vue": "^3.3.6" + "minisearch": "^6.3.0", + "shiki": "^1.2.0", + "vite": "^5.2.2", + "vue": "^3.4.21" }, "bin": { "vitepress": "bin/vitepress.js" }, "peerDependencies": { - "markdown-it-mathjax3": "^4.3.2", - "postcss": "^8.4.31" + "markdown-it-mathjax3": "^4", + "postcss": "^8" }, "peerDependenciesMeta": { "markdown-it-mathjax3": { @@ -1538,29 +1808,17 @@ } } }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true - }, - "node_modules/vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", - "dev": true - }, "node_modules/vue": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.7.tgz", - "integrity": "sha512-YEMDia1ZTv1TeBbnu6VybatmSteGOS3A3YgfINOfraCbf85wdKHzscD6HSS/vB4GAtI7sa1XPX7HcQaJ1l24zA==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.21.tgz", + "integrity": "sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==", "dev": true, "dependencies": { - "@vue/compiler-dom": "3.3.7", - "@vue/compiler-sfc": "3.3.7", - "@vue/runtime-dom": "3.3.7", - "@vue/server-renderer": "3.3.7", - "@vue/shared": "3.3.7" + "@vue/compiler-dom": "3.4.21", + "@vue/compiler-sfc": "3.4.21", + "@vue/runtime-dom": "3.4.21", + "@vue/server-renderer": "3.4.21", + "@vue/shared": "3.4.21" }, "peerDependencies": { "typescript": "*" @@ -1571,1000 +1829,5 @@ } } } - }, - "dependencies": { - "@algolia/autocomplete-core": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", - "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", - "dev": true, - "requires": { - "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", - "@algolia/autocomplete-shared": "1.9.3" - } - }, - "@algolia/autocomplete-plugin-algolia-insights": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", - "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", - "dev": true, - "requires": { - "@algolia/autocomplete-shared": "1.9.3" - } - }, - "@algolia/autocomplete-preset-algolia": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", - "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", - "dev": true, - "requires": { - "@algolia/autocomplete-shared": "1.9.3" - } - }, - "@algolia/autocomplete-shared": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", - "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", - "dev": true, - "requires": {} - }, - "@algolia/cache-browser-local-storage": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.20.0.tgz", - "integrity": "sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==", - "dev": true, - "requires": { - "@algolia/cache-common": "4.20.0" - } - }, - "@algolia/cache-common": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.20.0.tgz", - "integrity": "sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==", - "dev": true - }, - "@algolia/cache-in-memory": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.20.0.tgz", - "integrity": "sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==", - "dev": true, - "requires": { - "@algolia/cache-common": "4.20.0" - } - }, - "@algolia/client-account": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.20.0.tgz", - "integrity": "sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==", - "dev": true, - "requires": { - "@algolia/client-common": "4.20.0", - "@algolia/client-search": "4.20.0", - "@algolia/transporter": "4.20.0" - } - }, - "@algolia/client-analytics": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.20.0.tgz", - "integrity": "sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==", - "dev": true, - "requires": { - "@algolia/client-common": "4.20.0", - "@algolia/client-search": "4.20.0", - "@algolia/requester-common": "4.20.0", - "@algolia/transporter": "4.20.0" - } - }, - "@algolia/client-common": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.20.0.tgz", - "integrity": "sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==", - "dev": true, - "requires": { - "@algolia/requester-common": "4.20.0", - "@algolia/transporter": "4.20.0" - } - }, - "@algolia/client-personalization": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.20.0.tgz", - "integrity": "sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==", - "dev": true, - "requires": { - "@algolia/client-common": "4.20.0", - "@algolia/requester-common": "4.20.0", - "@algolia/transporter": "4.20.0" - } - }, - "@algolia/client-search": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.20.0.tgz", - "integrity": "sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==", - "dev": true, - "requires": { - "@algolia/client-common": "4.20.0", - "@algolia/requester-common": "4.20.0", - "@algolia/transporter": "4.20.0" - } - }, - "@algolia/logger-common": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.20.0.tgz", - "integrity": "sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==", - "dev": true - }, - "@algolia/logger-console": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.20.0.tgz", - "integrity": "sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==", - "dev": true, - "requires": { - "@algolia/logger-common": "4.20.0" - } - }, - "@algolia/requester-browser-xhr": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.20.0.tgz", - "integrity": "sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==", - "dev": true, - "requires": { - "@algolia/requester-common": "4.20.0" - } - }, - "@algolia/requester-common": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.20.0.tgz", - "integrity": "sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==", - "dev": true - }, - "@algolia/requester-node-http": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.20.0.tgz", - "integrity": "sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==", - "dev": true, - "requires": { - "@algolia/requester-common": "4.20.0" - } - }, - "@algolia/transporter": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.20.0.tgz", - "integrity": "sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==", - "dev": true, - "requires": { - "@algolia/cache-common": "4.20.0", - "@algolia/logger-common": "4.20.0", - "@algolia/requester-common": "4.20.0" - } - }, - "@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true - }, - "@docsearch/css": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.5.2.tgz", - "integrity": "sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==", - "dev": true - }, - "@docsearch/js": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.5.2.tgz", - "integrity": "sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg==", - "dev": true, - "requires": { - "@docsearch/react": "3.5.2", - "preact": "^10.0.0" - } - }, - "@docsearch/react": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.5.2.tgz", - "integrity": "sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==", - "dev": true, - "requires": { - "@algolia/autocomplete-core": "1.9.3", - "@algolia/autocomplete-preset-algolia": "1.9.3", - "@docsearch/css": "3.5.2", - "algoliasearch": "^4.19.1" - } - }, - "@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", - "dev": true, - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", - "dev": true, - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", - "dev": true, - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", - "dev": true, - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", - "dev": true, - "optional": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "@stackblitz/sdk": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@stackblitz/sdk/-/sdk-1.9.0.tgz", - "integrity": "sha512-3m6C7f8pnR5KXys/Hqx2x6ylnpqOak6HtnZI6T5keEO0yT+E4Spkw37VEbdwuC+2oxmjdgq6YZEgiKX7hM1GmQ==" - }, - "@types/linkify-it": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.4.tgz", - "integrity": "sha512-hPpIeeHb/2UuCw06kSNAOVWgehBLXEo0/fUs0mw3W2qhqX89PI2yvok83MnuctYGCPrabGIoi0fFso4DQ+sNUQ==", - "dev": true - }, - "@types/markdown-it": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.5.tgz", - "integrity": "sha512-QhJP7hkq3FCrFNx0szMNCT/79CXfcEgUIA3jc5GBfeXqoKsk3R8JZm2wRXJ2DiyjbPE4VMFOSDemLFcUTZmHEQ==", - "dev": true, - "requires": { - "@types/linkify-it": "*", - "@types/mdurl": "*" - } - }, - "@types/mdurl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.4.tgz", - "integrity": "sha512-ARVxjAEX5TARFRzpDRVC6cEk0hUIXCCwaMhz8y7S1/PxU6zZS1UMjyobz7q4w/D/R552r4++EhwmXK1N2rAy0A==", - "dev": true - }, - "@types/node": { - "version": "20.8.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.9.tgz", - "integrity": "sha512-UzykFsT3FhHb1h7yD4CA4YhBHq545JC0YnEz41xkipN88eKQtL6rSgocL5tbAP6Ola9Izm/Aw4Ora8He4x0BHg==", - "dev": true, - "requires": { - "undici-types": "~5.26.4" - } - }, - "@types/web-bluetooth": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.18.tgz", - "integrity": "sha512-v/ZHEj9xh82usl8LMR3GarzFY1IrbXJw5L4QfQhokjRV91q+SelFqxQWSep1ucXEZ22+dSTwLFkXeur25sPIbw==", - "dev": true - }, - "@vitejs/plugin-vue": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.3.1.tgz", - "integrity": "sha512-tUBEtWcF7wFtII7ayNiLNDTCE1X1afySEo+XNVMNkFXaThENyCowIEX095QqbJZGTgoOcSVDJGlnde2NG4jtbQ==", - "dev": true, - "requires": {} - }, - "@vue/compiler-core": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.7.tgz", - "integrity": "sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ==", - "dev": true, - "requires": { - "@babel/parser": "^7.23.0", - "@vue/shared": "3.3.7", - "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" - } - }, - "@vue/compiler-dom": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.7.tgz", - "integrity": "sha512-0LwkyJjnUPssXv/d1vNJ0PKfBlDoQs7n81CbO6Q0zdL7H1EzqYRrTVXDqdBVqro0aJjo/FOa1qBAPVI4PGSHBw==", - "dev": true, - "requires": { - "@vue/compiler-core": "3.3.7", - "@vue/shared": "3.3.7" - } - }, - "@vue/compiler-sfc": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.7.tgz", - "integrity": "sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw==", - "dev": true, - "requires": { - "@babel/parser": "^7.23.0", - "@vue/compiler-core": "3.3.7", - "@vue/compiler-dom": "3.3.7", - "@vue/compiler-ssr": "3.3.7", - "@vue/reactivity-transform": "3.3.7", - "@vue/shared": "3.3.7", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.5", - "postcss": "^8.4.31", - "source-map-js": "^1.0.2" - } - }, - "@vue/compiler-ssr": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.7.tgz", - "integrity": "sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg==", - "dev": true, - "requires": { - "@vue/compiler-dom": "3.3.7", - "@vue/shared": "3.3.7" - } - }, - "@vue/devtools-api": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", - "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==", - "dev": true - }, - "@vue/reactivity": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.7.tgz", - "integrity": "sha512-cZNVjWiw00708WqT0zRpyAgduG79dScKEPYJXq2xj/aMtk3SKvL3FBt2QKUlh6EHBJ1m8RhBY+ikBUzwc7/khg==", - "dev": true, - "requires": { - "@vue/shared": "3.3.7" - } - }, - "@vue/reactivity-transform": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.7.tgz", - "integrity": "sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA==", - "dev": true, - "requires": { - "@babel/parser": "^7.23.0", - "@vue/compiler-core": "3.3.7", - "@vue/shared": "3.3.7", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.5" - } - }, - "@vue/runtime-core": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.7.tgz", - "integrity": "sha512-LHq9du3ubLZFdK/BP0Ysy3zhHqRfBn80Uc+T5Hz3maFJBGhci1MafccnL3rpd5/3wVfRHAe6c+PnlO2PAavPTQ==", - "dev": true, - "requires": { - "@vue/reactivity": "3.3.7", - "@vue/shared": "3.3.7" - } - }, - "@vue/runtime-dom": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.7.tgz", - "integrity": "sha512-PFQU1oeJxikdDmrfoNQay5nD4tcPNYixUBruZzVX/l0eyZvFKElZUjW4KctCcs52nnpMGO6UDK+jF5oV4GT5Lw==", - "dev": true, - "requires": { - "@vue/runtime-core": "3.3.7", - "@vue/shared": "3.3.7", - "csstype": "^3.1.2" - } - }, - "@vue/server-renderer": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.7.tgz", - "integrity": "sha512-UlpKDInd1hIZiNuVVVvLgxpfnSouxKQOSE2bOfQpBuGwxRV/JqqTCyyjXUWiwtVMyeRaZhOYYqntxElk8FhBhw==", - "dev": true, - "requires": { - "@vue/compiler-ssr": "3.3.7", - "@vue/shared": "3.3.7" - } - }, - "@vue/shared": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.7.tgz", - "integrity": "sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==", - "dev": true - }, - "@vue/tsconfig": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.4.0.tgz", - "integrity": "sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==", - "dev": true - }, - "@vueuse/core": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.5.0.tgz", - "integrity": "sha512-z/tI2eSvxwLRjOhDm0h/SXAjNm8N5ld6/SC/JQs6o6kpJ6Ya50LnEL8g5hoYu005i28L0zqB5L5yAl8Jl26K3A==", - "dev": true, - "requires": { - "@types/web-bluetooth": "^0.0.18", - "@vueuse/metadata": "10.5.0", - "@vueuse/shared": "10.5.0", - "vue-demi": ">=0.14.6" - }, - "dependencies": { - "vue-demi": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", - "dev": true, - "requires": {} - } - } - }, - "@vueuse/integrations": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.5.0.tgz", - "integrity": "sha512-fm5sXLCK0Ww3rRnzqnCQRmfjDURaI4xMsx+T+cec0ngQqHx/JgUtm8G0vRjwtonIeTBsH1Q8L3SucE+7K7upJQ==", - "dev": true, - "requires": { - "@vueuse/core": "10.5.0", - "@vueuse/shared": "10.5.0", - "vue-demi": ">=0.14.6" - }, - "dependencies": { - "vue-demi": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", - "dev": true, - "requires": {} - } - } - }, - "@vueuse/metadata": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.5.0.tgz", - "integrity": "sha512-fEbElR+MaIYyCkeM0SzWkdoMtOpIwO72x8WsZHRE7IggiOlILttqttM69AS13nrDxosnDBYdyy3C5mR1LCxHsw==", - "dev": true - }, - "@vueuse/shared": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.5.0.tgz", - "integrity": "sha512-18iyxbbHYLst9MqU1X1QNdMHIjks6wC7XTVf0KNOv5es/Ms6gjVFCAAWTVP2JStuGqydg3DT+ExpFORUEi9yhg==", - "dev": true, - "requires": { - "vue-demi": ">=0.14.6" - }, - "dependencies": { - "vue-demi": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", - "dev": true, - "requires": {} - } - } - }, - "algoliasearch": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.20.0.tgz", - "integrity": "sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==", - "dev": true, - "requires": { - "@algolia/cache-browser-local-storage": "4.20.0", - "@algolia/cache-common": "4.20.0", - "@algolia/cache-in-memory": "4.20.0", - "@algolia/client-account": "4.20.0", - "@algolia/client-analytics": "4.20.0", - "@algolia/client-common": "4.20.0", - "@algolia/client-personalization": "4.20.0", - "@algolia/client-search": "4.20.0", - "@algolia/logger-common": "4.20.0", - "@algolia/logger-console": "4.20.0", - "@algolia/requester-browser-xhr": "4.20.0", - "@algolia/requester-common": "4.20.0", - "@algolia/requester-node-http": "4.20.0", - "@algolia/transporter": "4.20.0" - } - }, - "ansi-sequence-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", - "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", - "dev": true - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", - "dev": true - }, - "dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", - "dev": true - }, - "esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" - } - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "focus-trap": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", - "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", - "dev": true, - "requires": { - "tabbable": "^6.2.0" - } - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "immutable": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", - "dev": true, - "requires": { - "@jridgewell/sourcemap-codec": "^1.4.15" - } - }, - "mark.js": { - "version": "8.11.1", - "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", - "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", - "dev": true - }, - "markdown-it-footnote": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/markdown-it-footnote/-/markdown-it-footnote-3.0.3.tgz", - "integrity": "sha512-YZMSuCGVZAjzKMn+xqIco9d1cLGxbELHZ9do/TSYVzraooV8ypsppKNmUJ0fVH5ljkCInQAtFpm8Rb3eXSrt5w==", - "dev": true - }, - "minisearch": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-6.1.0.tgz", - "integrity": "sha512-PNxA/X8pWk+TiqPbsoIYH0GQ5Di7m6326/lwU/S4mlo4wGQddIcf/V//1f9TB0V4j59b57b+HZxt8h3iMROGvg==", - "dev": true - }, - "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "dev": true, - "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "preact": { - "version": "10.18.1", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.18.1.tgz", - "integrity": "sha512-mKUD7RRkQQM6s7Rkmi7IFkoEHjuFqRQUaXamO61E6Nn7vqF/bo7EZCmSyrUnp2UWHw0O7XjZ2eeXis+m7tf4lg==", - "dev": true - }, - "prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", - "dev": true - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "sass": { - "version": "1.69.5", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", - "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", - "dev": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - } - }, - "search-insights": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.8.3.tgz", - "integrity": "sha512-W9rZfQ9XEfF0O6ntgQOTI7Txc8nkZrO4eJ/pTHK0Br6wWND2sPGPoWg+yGhdIW7wMbLqk8dc23IyEtLlNGpeNw==", - "dev": true, - "peer": true - }, - "shiki": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.5.tgz", - "integrity": "sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==", - "dev": true, - "requires": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" - } - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "tabbable": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "vite": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", - "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", - "dev": true, - "requires": { - "esbuild": "^0.18.10", - "fsevents": "~2.3.2", - "postcss": "^8.4.27", - "rollup": "^3.27.1" - } - }, - "vitepress": { - "version": "1.0.0-rc.24", - "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.0-rc.24.tgz", - "integrity": "sha512-RpnL8cnOGwiRlBbrYQUm9sYkJbtyOt/wYXk2diTcokY4yvks/5lq9LuSt+MURWB6ZqwpSNHvTmxgaSfLoG0/OA==", - "dev": true, - "requires": { - "@docsearch/css": "^3.5.2", - "@docsearch/js": "^3.5.2", - "@types/markdown-it": "^13.0.4", - "@vitejs/plugin-vue": "4.3.1", - "@vue/devtools-api": "^6.5.1", - "@vueuse/core": "^10.5.0", - "@vueuse/integrations": "^10.5.0", - "focus-trap": "^7.5.4", - "mark.js": "8.11.1", - "minisearch": "^6.1.0", - "shiki": "^0.14.5", - "vite": "^4.5.0", - "vue": "^3.3.6" - } - }, - "vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true - }, - "vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", - "dev": true - }, - "vue": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.7.tgz", - "integrity": "sha512-YEMDia1ZTv1TeBbnu6VybatmSteGOS3A3YgfINOfraCbf85wdKHzscD6HSS/vB4GAtI7sa1XPX7HcQaJ1l24zA==", - "dev": true, - "requires": { - "@vue/compiler-dom": "3.3.7", - "@vue/compiler-sfc": "3.3.7", - "@vue/runtime-dom": "3.3.7", - "@vue/server-renderer": "3.3.7", - "@vue/shared": "3.3.7" - } - } } } diff --git a/package.json b/package.json index 64e2e7a7..bf260b79 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "scripts": { "build": "vitepress build", "dev": "vitepress dev", - "format": "prettier --write '**/*.{js,ts,vue,css,scss}'", + "format": "prettier --write '**/*.{js,ts,css,scss}'", "serve": "vitepress serve", "start": "vitepress dev" }, @@ -13,13 +13,13 @@ "@stackblitz/sdk": "^1.9.0" }, "devDependencies": { - "@types/node": "^20.8.9", - "@vue/tsconfig": "^0.4.0", - "dotenv": "^16.3.1", + "@types/node": "^20.11.30", + "@vue/tsconfig": "^0.5.1", + "dotenv": "^16.4.5", "markdown-it-footnote": "^3.0.3", - "prettier": "^3.0.3", - "sass": "^1.69.5", - "vitepress": "^1.0.0-rc.24" + "prettier": "^3.2.5", + "sass": "^1.72.0", + "vitepress": "~1.0.2" }, "prettier": { "printWidth": 100,