Fix Windows CSS bundling bug (#1840)
* Fix Windows CSS bundling bug JS components’ styles accidentally left out of final build on Windows * Review feedback
This commit is contained in:
parent
d9265df0e9
commit
3cd1458aa7
16 changed files with 297 additions and 247 deletions
10
.changeset/quick-cheetahs-itch.md
Normal file
10
.changeset/quick-cheetahs-itch.md
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
'astro': patch
|
||||
'@astrojs/renderer-preact': patch
|
||||
'@astrojs/renderer-react': patch
|
||||
'@astrojs/renderer-solid': patch
|
||||
'@astrojs/renderer-svelte': patch
|
||||
'@astrojs/renderer-vue': patch
|
||||
---
|
||||
|
||||
Bugfix: Bundled CSS missing files on Windows
|
|
@ -1,15 +1,18 @@
|
|||
import type vite from '../../../vendor/vite';
|
||||
|
||||
import { fileURLToPath } from 'url';
|
||||
import path from 'path';
|
||||
import slash from 'slash';
|
||||
|
||||
// https://vitejs.dev/guide/features.html#css-pre-processors
|
||||
export const STYLE_EXTENSIONS = new Set(['.css', '.pcss', '.scss', '.sass', '.styl', '.stylus', '.less']);
|
||||
|
||||
/** find unloaded styles */
|
||||
export function getStylesForID(id: string, viteServer: vite.ViteDevServer): Set<string> {
|
||||
export function getStylesForURL(filePath: URL, viteServer: vite.ViteDevServer): Set<string> {
|
||||
const css = new Set<string>();
|
||||
const { idToModuleMap } = viteServer.moduleGraph;
|
||||
const moduleGraph = idToModuleMap.get(id);
|
||||
const rootID = slash(fileURLToPath(filePath)); // Vite fix: Windows URLs must have forward slashes
|
||||
const moduleGraph = idToModuleMap.get(rootID);
|
||||
if (!moduleGraph) return css;
|
||||
|
||||
// recursively crawl module graph to get all style files imported by parent id
|
||||
|
@ -27,7 +30,7 @@ export function getStylesForID(id: string, viteServer: vite.ViteDevServer): Set<
|
|||
scanned.add(importedModule.id);
|
||||
}
|
||||
}
|
||||
crawlCSS(id);
|
||||
crawlCSS(rootID);
|
||||
|
||||
return css;
|
||||
}
|
||||
|
|
|
@ -6,9 +6,11 @@ import type { LogOptions } from '../logger';
|
|||
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import slash from 'slash';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { renderPage, renderSlot } from '../../runtime/server/index.js';
|
||||
import { canonicalURL as getCanonicalURL, codeFrame, resolveDependency, viteifyPath } from '../util.js';
|
||||
import { getStylesForID } from './css.js';
|
||||
import { getStylesForURL } from './css.js';
|
||||
import { injectTags } from './html.js';
|
||||
import { generatePaginateFunction } from './paginate.js';
|
||||
import { getParams, validateGetStaticPathsModule, validateGetStaticPathsResult } from './routing.js';
|
||||
|
@ -215,7 +217,7 @@ export async function render(renderers: Renderer[], mod: ComponentInstance, ssrO
|
|||
}
|
||||
|
||||
// inject CSS
|
||||
[...getStylesForID(filePath.pathname, viteServer)].forEach((href) => {
|
||||
[...getStylesForURL(filePath, viteServer)].forEach((href) => {
|
||||
tags.push({
|
||||
tag: 'link',
|
||||
attrs: {
|
||||
|
@ -232,7 +234,8 @@ export async function render(renderers: Renderer[], mod: ComponentInstance, ssrO
|
|||
|
||||
// run transformIndexHtml() in dev to run Vite dev transformations
|
||||
if (mode === 'development') {
|
||||
html = await viteServer.transformIndexHtml(filePath.pathname, html, pathname);
|
||||
const viteFilePath = slash(fileURLToPath(filePath)); // Vite Windows fix: URLs on Windows have forward slashes (not .pathname, which has a leading '/' on Windows)
|
||||
html = await viteServer.transformIndexHtml(viteFilePath, html, pathname);
|
||||
}
|
||||
|
||||
return html;
|
||||
|
|
|
@ -73,5 +73,5 @@ export function resolveDependency(dep: string, astroConfig: AstroConfig) {
|
|||
}
|
||||
|
||||
export function viteifyPath(pathname: string): string {
|
||||
return `/@fs${pathname}`;
|
||||
return `/@fs/${pathname.replace(/^\//, '')}`;
|
||||
}
|
||||
|
|
|
@ -33,11 +33,13 @@ function isSSR(options: undefined | boolean | { ssr: boolean }): boolean {
|
|||
|
||||
/** Transform .astro files for Vite */
|
||||
export default function astro({ config, devServer }: AstroPluginOptions): vite.Plugin {
|
||||
let platform: NodeJS.Platform;
|
||||
let viteTransform: TransformHook;
|
||||
return {
|
||||
name: '@astrojs/vite-plugin-astro',
|
||||
enforce: 'pre', // run transforms before other plugins can
|
||||
configResolved(resolvedConfig) {
|
||||
platform = os.platform(); // TODO: remove macOS hack
|
||||
viteTransform = getViteTransform(resolvedConfig);
|
||||
},
|
||||
// note: don’t claim .astro files with resolveId() — it prevents Vite from transpiling the final JS (import.meta.globEager, etc.)
|
||||
|
@ -82,7 +84,7 @@ export default function astro({ config, devServer }: AstroPluginOptions): vite.P
|
|||
});
|
||||
|
||||
// macOS fix: remove null chars generated by compiler
|
||||
if (os.platform() === 'darwin') {
|
||||
if (platform === 'darwin') {
|
||||
tsResult.code = tsResult.code.replace(/\x00/g, '');
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ import adapter from 'parse5/lib/tree-adapters/default.js';
|
|||
|
||||
const hashedLinkRels = ['stylesheet', 'preload'];
|
||||
const linkRels = [...hashedLinkRels, 'icon', 'manifest', 'apple-touch-icon', 'mask-icon'];
|
||||
const windowsPathRE = /^[A-Z]:\//;
|
||||
|
||||
function getSrcSetUrls(srcset: string) {
|
||||
if (!srcset) {
|
||||
|
@ -54,6 +55,10 @@ function isAsset(node: Element) {
|
|||
if (!path) {
|
||||
return false;
|
||||
}
|
||||
// Windows fix: if path starts with C:/, avoid URL parsing
|
||||
if (windowsPathRE.test(path)) {
|
||||
return true;
|
||||
}
|
||||
try {
|
||||
new URL(path);
|
||||
return false;
|
||||
|
|
|
@ -8,6 +8,8 @@ import srcsetParse from 'srcset-parse';
|
|||
import * as npath from 'path';
|
||||
import { promises as fs } from 'fs';
|
||||
import { getAttribute, hasAttribute, getTagName, insertBefore, remove, createScript, createElement, setAttribute } from '@web/parse5-utils';
|
||||
import slash from 'slash';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { addRollupInput } from './add-rollup-input.js';
|
||||
import { findAssets, findExternalScripts, findInlineScripts, findInlineStyles, getTextContent, isStylesheetLink } from './extract-assets.js';
|
||||
import { render as ssrRender } from '../core/ssr/index.js';
|
||||
|
@ -26,7 +28,12 @@ const ASTRO_EMPTY = '@astro-empty';
|
|||
const tagsWithSrcSet = new Set(['img', 'source']);
|
||||
|
||||
const isAstroInjectedLink = (node: parse5.Element) => isStylesheetLink(node) && getAttribute(node, 'data-astro-injected') === '';
|
||||
const isBuildableLink = (node: parse5.Element, srcRoot: string) => isAstroInjectedLink(node) || getAttribute(node, 'href')?.startsWith(srcRoot);
|
||||
const isBuildableLink = (node: parse5.Element, srcRoot: string) => {
|
||||
if (isAstroInjectedLink(node)) return true;
|
||||
const href = getAttribute(node, 'href');
|
||||
if (typeof href !== 'string' || !href.length) return false;
|
||||
return href.startsWith(srcRoot) || `/${href}`.startsWith(srcRoot); // Windows fix: some paths are missing leading "/"
|
||||
};
|
||||
const isBuildableImage = (node: parse5.Element, srcRoot: string) => getTagName(node) === 'img' && getAttribute(node, 'src')?.startsWith(srcRoot);
|
||||
const hasSrcSet = (node: parse5.Element) => tagsWithSrcSet.has(getTagName(node)) && !!getAttribute(node, 'srcset');
|
||||
const isHoistedScript = (node: parse5.Element) => getTagName(node) === 'script' && hasAttribute(node, 'hoist');
|
||||
|
|
|
@ -2,136 +2,141 @@ import { expect } from 'chai';
|
|||
import cheerio from 'cheerio';
|
||||
import { loadFixture } from './test-utils.js';
|
||||
|
||||
let fixture;
|
||||
let index$;
|
||||
let bundledCSS;
|
||||
|
||||
before(async () => {
|
||||
fixture = await loadFixture({
|
||||
projectRoot: './fixtures/astro-styles-ssr/',
|
||||
renderers: ['@astrojs/renderer-react', '@astrojs/renderer-svelte', '@astrojs/renderer-vue'],
|
||||
});
|
||||
await fixture.build();
|
||||
|
||||
// get bundled CSS (will be hashed, hence DOM query)
|
||||
const html = await fixture.readFile('/index.html');
|
||||
index$ = cheerio.load(html);
|
||||
const bundledCSSHREF = index$('link[rel=stylesheet][href^=assets/]').attr('href');
|
||||
bundledCSS = await fixture.readFile(bundledCSSHREF.replace(/^\/?/, '/'));
|
||||
});
|
||||
|
||||
describe('Styles SSR', () => {
|
||||
let fixture;
|
||||
describe('Astro styles', () => {
|
||||
it('HTML and CSS scoped correctly', async () => {
|
||||
const $ = index$;
|
||||
|
||||
before(async () => {
|
||||
fixture = await loadFixture({ projectRoot: './fixtures/astro-styles-ssr/' });
|
||||
await fixture.build();
|
||||
});
|
||||
const el1 = $('#dynamic-class');
|
||||
const el2 = $('#dynamic-vis');
|
||||
const classes = $('#class').attr('class').split(' ');
|
||||
const scopedClass = classes.find((name) => /^astro-[A-Za-z0-9-]+/.test(name));
|
||||
|
||||
it('Has <link> tags', async () => {
|
||||
const MUST_HAVE_LINK_TAGS = ['assets/index'];
|
||||
// 1. check HTML
|
||||
expect(el1.attr('class')).to.equal(`blue ${scopedClass}`);
|
||||
expect(el2.attr('class')).to.equal(`visible ${scopedClass}`);
|
||||
|
||||
const html = await fixture.readFile('/index.html');
|
||||
const $ = cheerio.load(html);
|
||||
|
||||
for (const href of [...$('link[rel="stylesheet"]')].map((el) => el.attribs.href)) {
|
||||
const hasTag = MUST_HAVE_LINK_TAGS.some((mustHaveHref) => href.includes(mustHaveHref));
|
||||
expect(hasTag).to.equal(true);
|
||||
}
|
||||
});
|
||||
|
||||
it('Has correct CSS classes', async () => {
|
||||
const html = await fixture.readFile('/index.html');
|
||||
const $ = cheerio.load(html);
|
||||
|
||||
const MUST_HAVE_CLASSES = {
|
||||
'#react-css': 'react-title',
|
||||
'#react-modules': 'title', // ⚠️ this should be transformed
|
||||
'#vue-css': 'vue-title',
|
||||
'#vue-modules': 'title', // ⚠️ this should also be transformed
|
||||
'#vue-scoped': 'vue-title', // also has data-v-* property
|
||||
'#svelte-scoped': 'svelte-title', // also has additional class
|
||||
};
|
||||
|
||||
for (const [selector, className] of Object.entries(MUST_HAVE_CLASSES)) {
|
||||
const el = $(selector);
|
||||
if (selector === '#react-modules' || selector === '#vue-modules') {
|
||||
// this will generate differently on Unix vs Windows. Here we simply test that it has transformed
|
||||
expect(el.attr('class')).to.match(new RegExp(`^_${className}_[A-Za-z0-9-_]+`)); // className should be transformed, surrounded by underscores and other stuff
|
||||
} else {
|
||||
// if this is not a CSS module, it should remain as expected
|
||||
expect(el.attr('class')).to.include(className);
|
||||
}
|
||||
|
||||
// add’l test: Vue Scoped styles should have data-v-* attribute
|
||||
if (selector === '#vue-scoped') {
|
||||
const { attribs } = el.get(0);
|
||||
const scopeId = Object.keys(attribs).find((k) => k.startsWith('data-v-'));
|
||||
expect(scopeId).to.be.ok;
|
||||
}
|
||||
|
||||
// add’l test: Svelte should have another class
|
||||
if (selector === '#svelte-title') {
|
||||
expect(el.attr('class')).not.to.equal(className);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
it('CSS scoped support in .astro', async () => {
|
||||
const html = await fixture.readFile('/index.html');
|
||||
const $ = cheerio.load(html);
|
||||
|
||||
const href = '/' + $('link').attr('href');
|
||||
const raw = await fixture.readFile(href);
|
||||
|
||||
let scopedClass;
|
||||
|
||||
// test 1: <style> tag in <head> is transformed
|
||||
const css = raw.replace(/\.astro-[A-Za-z0-9-]+/, (match) => {
|
||||
scopedClass = match; // get class hash from result
|
||||
return match;
|
||||
// 2. check CSS
|
||||
expect(bundledCSS).to.include(`.blue.${scopedClass}{color:#b0e0e6}.color\\:blue.${scopedClass}{color:#b0e0e6}.visible.${scopedClass}{display:block}`);
|
||||
});
|
||||
|
||||
expect(css).to.include(`.wrapper${scopedClass}{margin-left:auto;margin-right:auto;max-width:1200px}.outer${scopedClass}{color:red}`);
|
||||
it('No <style> skips scoping', async () => {
|
||||
const $ = index$;
|
||||
|
||||
// test 2: element received .astro-XXXXXX class (this selector will succeed if transformed correctly)
|
||||
const wrapper = $(`.wrapper${scopedClass}`);
|
||||
expect(wrapper).to.have.lengthOf(1);
|
||||
// Astro component without <style> should not include scoped class
|
||||
expect($('#no-scope').attr('class')).to.equal(undefined);
|
||||
});
|
||||
|
||||
it('Child inheritance', async () => {
|
||||
const $ = index$;
|
||||
|
||||
expect($('#passed-in').attr('class')).to.match(/outer astro-[A-Z0-9]+ astro-[A-Z0-9]+/);
|
||||
});
|
||||
|
||||
it('Using hydrated components adds astro-root styles', async () => {
|
||||
expect(bundledCSS).to.include('display:contents');
|
||||
});
|
||||
});
|
||||
|
||||
it('Astro scoped styles', async () => {
|
||||
const html = await fixture.readFile('/index.html');
|
||||
const $ = cheerio.load(html);
|
||||
describe('JSX', () => {
|
||||
it('CSS', async () => {
|
||||
const $ = index$;
|
||||
const el = $('#react-css');
|
||||
|
||||
const el1 = $('#dynamic-class');
|
||||
const el2 = $('#dynamic-vis');
|
||||
// 1. check HTML
|
||||
expect(el.attr('class')).to.include('react-title');
|
||||
|
||||
let scopedClass;
|
||||
// 2. check CSS
|
||||
expect(bundledCSS).to.include('.react-title{');
|
||||
});
|
||||
|
||||
$('#class')
|
||||
.attr('class')
|
||||
.replace(/astro-[A-Za-z0-9-]+/, (match) => {
|
||||
scopedClass = match;
|
||||
return match;
|
||||
});
|
||||
it('CSS Modules', async () => {
|
||||
const $ = index$;
|
||||
const el = $('#react-modules');
|
||||
const classes = el.attr('class').split(' ');
|
||||
const moduleClass = classes.find((name) => /^_title_[A-Za-z0-9-_]+/.test(name));
|
||||
|
||||
// test 1: Astro component has some scoped class
|
||||
expect(scopedClass).to.be.ok;
|
||||
// 1. check HTML
|
||||
expect(el.attr('class')).to.include(moduleClass);
|
||||
|
||||
// test 2–3: children get scoped class
|
||||
expect(el1.attr('class')).to.equal(`blue ${scopedClass}`);
|
||||
expect(el2.attr('class')).to.equal(`visible ${scopedClass}`);
|
||||
|
||||
const href = '/' + $('link').attr('href');
|
||||
const css = await fixture.readFile(href);
|
||||
|
||||
// test 4: CSS generates as expected
|
||||
expect(css).to.include(`.blue.${scopedClass}{color:#b0e0e6}.color\\:blue.${scopedClass}{color:#b0e0e6}.visible.${scopedClass}{display:block}`);
|
||||
// 2. check CSS
|
||||
expect(bundledCSS).to.include(`.${moduleClass}{`);
|
||||
});
|
||||
});
|
||||
|
||||
it('Astro scoped styles skipped without <style>', async () => {
|
||||
const html = await fixture.readFile('/index.html');
|
||||
const $ = cheerio.load(html);
|
||||
describe('Vue', () => {
|
||||
it('CSS', async () => {
|
||||
const $ = index$;
|
||||
const el = $('#vue-css');
|
||||
|
||||
// test 1: Astro component without <style> should not include scoped class
|
||||
expect($('#no-scope').attr('class')).to.equal(undefined);
|
||||
// 1. check HTML
|
||||
expect(el.attr('class')).to.include('vue-title');
|
||||
|
||||
// 2. check CSS
|
||||
expect(bundledCSS).to.include('.vue-title{');
|
||||
});
|
||||
|
||||
// TODO: fix Vue scoped styles in build bug
|
||||
it.skip('Scoped styles', async () => {
|
||||
const $ = index$;
|
||||
const el = $('#vue-scoped');
|
||||
|
||||
// find data-v-* attribute (how Vue CSS scoping works)
|
||||
const { attribs } = el.get(0);
|
||||
const scopeId = Object.keys(attribs).find((k) => k.startsWith('data-v-'));
|
||||
expect(scopeId).to.be.ok;
|
||||
|
||||
// 1. check HTML
|
||||
expect(el.attr('class')).to.include('vue-scoped');
|
||||
|
||||
// 2. check CSS
|
||||
expect(bundledCSS).to.include(`.vue-scoped[${scopeId}]`);
|
||||
});
|
||||
|
||||
it('CSS Modules', async () => {
|
||||
const $ = index$;
|
||||
const el = $('#vue-modules');
|
||||
const classes = el.attr('class').split(' ');
|
||||
const moduleClass = classes.find((name) => /^_title_[A-Za-z0-9-_]+/.test(name));
|
||||
|
||||
// 1. check HTML
|
||||
expect(el.attr('class')).to.include(moduleClass);
|
||||
|
||||
// 2. check CSS
|
||||
expect(bundledCSS).to.include(`${moduleClass}{`);
|
||||
});
|
||||
});
|
||||
|
||||
it('Astro scoped styles can be passed to child components', async () => {
|
||||
const html = await fixture.readFile('/index.html');
|
||||
const $ = cheerio.load(html);
|
||||
describe('Svelte', () => {
|
||||
it('Scoped styles', async () => {
|
||||
const $ = index$;
|
||||
const el = $('#svelte-scoped');
|
||||
const classes = el.attr('class').split(' ');
|
||||
const scopedClass = classes.find((name) => /^s-[A-Za-z0-9-]+/.test(name));
|
||||
|
||||
expect($('#passed-in').attr('class')).to.match(/outer astro-[A-Z0-9]+ astro-[A-Z0-9]+/);
|
||||
});
|
||||
// 1. check HTML
|
||||
expect(el.attr('class')).to.include('svelte-title');
|
||||
|
||||
it('Using hydrated components adds astro-root styles', async () => {
|
||||
const html = await fixture.readFile('/index.html');
|
||||
const $ = cheerio.load(html);
|
||||
|
||||
const href = '/' + $('link').attr('href');
|
||||
const css = await fixture.readFile(href);
|
||||
expect(css).to.include('display:contents');
|
||||
// 2. check CSS
|
||||
expect(bundledCSS).to.include(`.svelte-title.${scopedClass}`);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<style scoped>
|
||||
.vue-title {
|
||||
.vue-scoped {
|
||||
font-family: cursive;
|
||||
}
|
||||
</style>
|
||||
|
||||
<template>
|
||||
<h1 id="vue-scoped" class="vue-title">Vue Scoped CSS</h1>
|
||||
<h1 id="vue-scoped" class="vue-scoped">Vue Scoped CSS</h1>
|
||||
</template>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import { expect } from 'chai';
|
||||
import cheerio from 'cheerio';
|
||||
import eol from 'eol';
|
||||
import os from 'os';
|
||||
import { loadFixture } from './test-utils.js';
|
||||
|
||||
const PREFIXED_CSS = `{-webkit-appearance:none;-moz-appearance:none;appearance:none}`;
|
||||
|
@ -36,20 +35,14 @@ describe('PostCSS', () => {
|
|||
});
|
||||
|
||||
it('works in JSX', () => {
|
||||
// TODO: fix in Windows
|
||||
if (os.platform() === 'win32') return;
|
||||
expect(bundledCSS).to.match(new RegExp(`.solid${PREFIXED_CSS}`));
|
||||
});
|
||||
|
||||
it('works in Vue', () => {
|
||||
// TODO: fix in Windows
|
||||
if (os.platform() === 'win32') return;
|
||||
expect(bundledCSS).to.match(new RegExp(`.vue${PREFIXED_CSS}`));
|
||||
});
|
||||
|
||||
it('works in Svelte', () => {
|
||||
// TODO: fix in Windows
|
||||
if (os.platform() === 'win32') return;
|
||||
expect(bundledCSS).to.match(new RegExp(`.svelte.s[^{]+${PREFIXED_CSS}`));
|
||||
});
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
"./package.json": "./package.json"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/plugin-transform-react-jsx": "^7.14.9",
|
||||
"@babel/plugin-transform-react-jsx": "^7.16.0",
|
||||
"preact": "^10.5.15",
|
||||
"preact-render-to-string": "^5.1.19"
|
||||
},
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
"./package.json": "./package.json"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/plugin-transform-react-jsx": "^7.14.9",
|
||||
"@babel/plugin-transform-react-jsx": "^7.16.0",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2"
|
||||
},
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"babel-plugin-module-resolver": "^4.1.0",
|
||||
"babel-preset-solid": "^1.1.7",
|
||||
"solid-js": "^1.1.7"
|
||||
"babel-preset-solid": "^1.2.3",
|
||||
"solid-js": "^1.2.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
|
|
|
@ -10,8 +10,8 @@
|
|||
"./package.json": "./package.json"
|
||||
},
|
||||
"dependencies": {
|
||||
"@sveltejs/vite-plugin-svelte": "^1.0.0-next.29",
|
||||
"svelte": "^3.44.0"
|
||||
"@sveltejs/vite-plugin-svelte": "^1.0.0-next.30",
|
||||
"svelte": "^3.44.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
|
|
|
@ -10,10 +10,10 @@
|
|||
"./package.json": "./package.json"
|
||||
},
|
||||
"dependencies": {
|
||||
"@vitejs/plugin-vue": "^1.9.3",
|
||||
"@vue/compiler-sfc": "^3.2.20",
|
||||
"@vue/server-renderer": "^3.2.20",
|
||||
"vue": "^3.2.20"
|
||||
"@vitejs/plugin-vue": "^1.9.4",
|
||||
"@vue/compiler-sfc": "^3.2.22",
|
||||
"@vue/server-renderer": "^3.2.22",
|
||||
"vue": "^3.2.22"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
|
|
240
yarn.lock
240
yarn.lock
|
@ -230,12 +230,12 @@
|
|||
jsesc "^2.5.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/helper-annotate-as-pure@^7.14.5":
|
||||
version "7.15.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz#3d0e43b00c5e49fdb6c57e421601a7a658d5f835"
|
||||
integrity sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==
|
||||
"@babel/helper-annotate-as-pure@^7.16.0":
|
||||
version "7.16.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz#9a1f0ebcda53d9a2d00108c4ceace6a5d5f1f08d"
|
||||
integrity sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==
|
||||
dependencies:
|
||||
"@babel/types" "^7.15.4"
|
||||
"@babel/types" "^7.16.0"
|
||||
|
||||
"@babel/helper-compilation-targets@^7.15.4":
|
||||
version "7.15.4"
|
||||
|
@ -277,13 +277,20 @@
|
|||
dependencies:
|
||||
"@babel/types" "^7.15.4"
|
||||
|
||||
"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.15.4":
|
||||
"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.15.4":
|
||||
version "7.15.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f"
|
||||
integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==
|
||||
dependencies:
|
||||
"@babel/types" "^7.15.4"
|
||||
|
||||
"@babel/helper-module-imports@^7.16.0":
|
||||
version "7.16.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3"
|
||||
integrity sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==
|
||||
dependencies:
|
||||
"@babel/types" "^7.16.0"
|
||||
|
||||
"@babel/helper-module-transforms@^7.12.1":
|
||||
version "7.15.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz#7da80c8cbc1f02655d83f8b79d25866afe50d226"
|
||||
|
@ -407,13 +414,20 @@
|
|||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
|
||||
"@babel/plugin-syntax-jsx@^7.10.4", "@babel/plugin-syntax-jsx@^7.14.5":
|
||||
"@babel/plugin-syntax-jsx@^7.10.4":
|
||||
version "7.14.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201"
|
||||
integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.14.5"
|
||||
|
||||
"@babel/plugin-syntax-jsx@^7.16.0":
|
||||
version "7.16.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz#f9624394317365a9a88c82358d3f8471154698f1"
|
||||
integrity sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.14.5"
|
||||
|
||||
"@babel/plugin-syntax-object-rest-spread@^7.8.0":
|
||||
version "7.8.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
|
||||
|
@ -428,16 +442,16 @@
|
|||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.14.5"
|
||||
|
||||
"@babel/plugin-transform-react-jsx@^7.14.9":
|
||||
version "7.14.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz#3314b2163033abac5200a869c4de242cd50a914c"
|
||||
integrity sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw==
|
||||
"@babel/plugin-transform-react-jsx@^7.16.0":
|
||||
version "7.16.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.0.tgz#55b797d4960c3de04e07ad1c0476e2bc6a4889f1"
|
||||
integrity sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw==
|
||||
dependencies:
|
||||
"@babel/helper-annotate-as-pure" "^7.14.5"
|
||||
"@babel/helper-module-imports" "^7.14.5"
|
||||
"@babel/helper-annotate-as-pure" "^7.16.0"
|
||||
"@babel/helper-module-imports" "^7.16.0"
|
||||
"@babel/helper-plugin-utils" "^7.14.5"
|
||||
"@babel/plugin-syntax-jsx" "^7.14.5"
|
||||
"@babel/types" "^7.14.9"
|
||||
"@babel/plugin-syntax-jsx" "^7.16.0"
|
||||
"@babel/types" "^7.16.0"
|
||||
|
||||
"@babel/runtime@^7.10.4", "@babel/runtime@^7.5.5":
|
||||
version "7.15.4"
|
||||
|
@ -470,7 +484,7 @@
|
|||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
|
||||
"@babel/types@^7.0.0", "@babel/types@^7.11.5", "@babel/types@^7.12.7", "@babel/types@^7.14.9", "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.3.0":
|
||||
"@babel/types@^7.0.0", "@babel/types@^7.11.5", "@babel/types@^7.12.7", "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.3.0":
|
||||
version "7.15.6"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f"
|
||||
integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==
|
||||
|
@ -478,6 +492,14 @@
|
|||
"@babel/helper-validator-identifier" "^7.14.9"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@babel/types@^7.16.0":
|
||||
version "7.16.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba"
|
||||
integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier" "^7.15.7"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@changesets/apply-release-plan@^5.0.1":
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@changesets/apply-release-plan/-/apply-release-plan-5.0.1.tgz#ed3e30550f787ef1b72f0a51e29a54d244123109"
|
||||
|
@ -1765,10 +1787,10 @@
|
|||
dotenv "^8.2.0"
|
||||
dotenv-expand "^5.1.0"
|
||||
|
||||
"@sveltejs/vite-plugin-svelte@^1.0.0-next.29":
|
||||
version "1.0.0-next.29"
|
||||
resolved "https://registry.yarnpkg.com/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.29.tgz#862fadcac164d8e90a45f3248289fbc65382c7df"
|
||||
integrity sha512-awbeIB34ma/ytoVsG0lxKfFaJ4rjPaAsiepJ5I+dKe9jVjWmGoIMJ9sKD77/xvNdwgO+3v/vkwvIbEG4XRdmtg==
|
||||
"@sveltejs/vite-plugin-svelte@^1.0.0-next.30":
|
||||
version "1.0.0-next.30"
|
||||
resolved "https://registry.yarnpkg.com/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.30.tgz#a6cd181bb406d590c1fa8d480c55950d567689f9"
|
||||
integrity sha512-YQqdMxjL1VgSFk4/+IY3yLwuRRapPafPiZTiaGEq1psbJYSNYUWx9F1zMm32GMsnogg3zn99mGJOqe3ld3HZSg==
|
||||
dependencies:
|
||||
"@rollup/pluginutils" "^4.1.1"
|
||||
debug "^4.3.2"
|
||||
|
@ -2111,100 +2133,100 @@
|
|||
resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44"
|
||||
integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==
|
||||
|
||||
"@vitejs/plugin-vue@^1.9.3":
|
||||
version "1.9.3"
|
||||
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-1.9.3.tgz#93d61893ce6c723d0209af0483ec8b91a2cd811f"
|
||||
integrity sha512-yW6H/q+4Mc2PcVjSOelcsMrg/k15DnMUz8jyCFsI04emc3aLwo4AoofUfGnjHUkgirrDxSJLVqQVGhonQ3yykA==
|
||||
"@vitejs/plugin-vue@^1.9.4":
|
||||
version "1.9.4"
|
||||
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-1.9.4.tgz#4f48485432cbb986a9fb9d254dc33ce30ddccbfa"
|
||||
integrity sha512-0CZqaCoChriPTTtGkERy1LGPcYjGFpi2uYRhBPIkqJqUGV5JnJFhQAgh6oH9j5XZHfrRaisX8W0xSpO4T7S78A==
|
||||
|
||||
"@vue/compiler-core@3.2.20":
|
||||
version "3.2.20"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.20.tgz#af5a3c5237818835b0d0be837eb5885a8d21c160"
|
||||
integrity sha512-vcEXlKXoPwBXFP5aUTHN9GTZaDfwCofa9Yu9bbW2C5O/QSa9Esdt7OG4+0RRd3EHEMxUvEdj4RZrd/KpQeiJbA==
|
||||
"@vue/compiler-core@3.2.22":
|
||||
version "3.2.22"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.22.tgz#5e3d3b983cc7f430ddbc6a8773c872dcf410dc89"
|
||||
integrity sha512-uAkovrVeTcjzpiM4ECmVaMrv/bjdgAaLzvjcGqQPBEyUrcqsCgccT9fHJ/+hWVGhyMahmBwLqcn4guULNx7sdw==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.15.0"
|
||||
"@vue/shared" "3.2.20"
|
||||
"@vue/shared" "3.2.22"
|
||||
estree-walker "^2.0.2"
|
||||
source-map "^0.6.1"
|
||||
|
||||
"@vue/compiler-dom@3.2.20":
|
||||
version "3.2.20"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.20.tgz#8e0ef354449c0faf41519b00bfc2045eae01dcb5"
|
||||
integrity sha512-QnI77ec/JtV7R0YBbcVayYTDCRcI9OCbxiUQK6izVyqQO0658n0zQuoNwe+bYgtqnvGAIqTR3FShTd5y4oOjdg==
|
||||
"@vue/compiler-dom@3.2.22":
|
||||
version "3.2.22"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.22.tgz#221cc358a6c0651c04e1dd22a8470b21e56ee1a5"
|
||||
integrity sha512-VZdsw/VuO1ODs8K7NQwnMQzKITDkIFlYYC03SVnunuf6eNRxBPEonSyqbWNoo6qNaHAEBTG6VVcZC5xC9bAx1g==
|
||||
dependencies:
|
||||
"@vue/compiler-core" "3.2.20"
|
||||
"@vue/shared" "3.2.20"
|
||||
"@vue/compiler-core" "3.2.22"
|
||||
"@vue/shared" "3.2.22"
|
||||
|
||||
"@vue/compiler-sfc@3.2.20", "@vue/compiler-sfc@^3.2.20":
|
||||
version "3.2.20"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.20.tgz#2d7668e76f066c566dd7c09c15c9acce4e876e0a"
|
||||
integrity sha512-03aZo+6tQKiFLfunHKSPZvdK4Jsn/ftRCyaro8AQIWkuxJbvSosbKK6HTTn+D2c3nPScG155akJoxKENw7rftQ==
|
||||
"@vue/compiler-sfc@3.2.22", "@vue/compiler-sfc@^3.2.22":
|
||||
version "3.2.22"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.22.tgz#ffd0e5e35479b6ade18d12fefec369cbaf2f7718"
|
||||
integrity sha512-tWRQ5ge1tsTDhUwHgueicKJ8rYm6WUVAPTaIpFW3GSwZKcOEJ2rXdfkHFShNVGupeRALz2ET2H84OL0GeRxY0A==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.15.0"
|
||||
"@vue/compiler-core" "3.2.20"
|
||||
"@vue/compiler-dom" "3.2.20"
|
||||
"@vue/compiler-ssr" "3.2.20"
|
||||
"@vue/ref-transform" "3.2.20"
|
||||
"@vue/shared" "3.2.20"
|
||||
"@vue/compiler-core" "3.2.22"
|
||||
"@vue/compiler-dom" "3.2.22"
|
||||
"@vue/compiler-ssr" "3.2.22"
|
||||
"@vue/ref-transform" "3.2.22"
|
||||
"@vue/shared" "3.2.22"
|
||||
estree-walker "^2.0.2"
|
||||
magic-string "^0.25.7"
|
||||
postcss "^8.1.10"
|
||||
source-map "^0.6.1"
|
||||
|
||||
"@vue/compiler-ssr@3.2.20":
|
||||
version "3.2.20"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.20.tgz#9cceb6261d9932cb5568202610c1c28f86c5e521"
|
||||
integrity sha512-rzzVVYivm+EjbfiGQvNeyiYZWzr6Hkej97RZLZvcumacQlnKv9176Xo9rRyeWwFbBlxmtNdrVMslRXtipMXk2w==
|
||||
"@vue/compiler-ssr@3.2.22":
|
||||
version "3.2.22"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.22.tgz#23552c31b76b45baf5f244713c81d77ab59447d2"
|
||||
integrity sha512-Cl6aoLJtXzzBkk1sKod8S0WBJLts3+ugVC91d22gGpbkw/64WnF12tOZi7Rg54PPLi1NovqyNWPsLH/SAFcu+w==
|
||||
dependencies:
|
||||
"@vue/compiler-dom" "3.2.20"
|
||||
"@vue/shared" "3.2.20"
|
||||
"@vue/compiler-dom" "3.2.22"
|
||||
"@vue/shared" "3.2.22"
|
||||
|
||||
"@vue/reactivity@3.2.20":
|
||||
version "3.2.20"
|
||||
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.20.tgz#81fe1c368e7f20bc0ec1dec1045bbee253582de8"
|
||||
integrity sha512-nSmoLojUTk+H8HNTAkrUduB4+yIUBK2HPihJo2uXVSH4Spry6oqN6lFzE5zpLK+F27Sja+UqR9R1+/kIOsHV5w==
|
||||
"@vue/reactivity@3.2.22":
|
||||
version "3.2.22"
|
||||
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.22.tgz#88655c0b4febc561136e6550e329039f860caa0a"
|
||||
integrity sha512-xNkLAItjI0xB+lFeDgKCrSItmrHTaAzSnt8LmdSCPQnDyarmzbi/u4ESQnckWvlL7lSRKiEaOvblaNyqAa7OnQ==
|
||||
dependencies:
|
||||
"@vue/shared" "3.2.20"
|
||||
"@vue/shared" "3.2.22"
|
||||
|
||||
"@vue/ref-transform@3.2.20":
|
||||
version "3.2.20"
|
||||
resolved "https://registry.yarnpkg.com/@vue/ref-transform/-/ref-transform-3.2.20.tgz#2a59ec90caf8e5c7336776a0900bff0a8b81c090"
|
||||
integrity sha512-Y42d3PGlYZ1lXcF3dbd3+qU/C/a3wYEZ949fyOI5ptzkjDWlkfU6vn74fmOjsLjEcjs10BXK2qO99FqQIK2r1Q==
|
||||
"@vue/ref-transform@3.2.22":
|
||||
version "3.2.22"
|
||||
resolved "https://registry.yarnpkg.com/@vue/ref-transform/-/ref-transform-3.2.22.tgz#16b03994eac71528cceff4cf76178ed9b44ac90a"
|
||||
integrity sha512-qalVWbq5xWWxLZ0L9OroBg/JZhzavQuCcDXblfErxyDEH6Xc5gIJ4feo1SVCICFzhAUgLgQTdSFLpgjBawbFpw==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.15.0"
|
||||
"@vue/compiler-core" "3.2.20"
|
||||
"@vue/shared" "3.2.20"
|
||||
"@vue/compiler-core" "3.2.22"
|
||||
"@vue/shared" "3.2.22"
|
||||
estree-walker "^2.0.2"
|
||||
magic-string "^0.25.7"
|
||||
|
||||
"@vue/runtime-core@3.2.20":
|
||||
version "3.2.20"
|
||||
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.20.tgz#8f63e956a3f88fb772541443c45a7701211012cb"
|
||||
integrity sha512-d1xfUGhZPfiZzAN7SatStD4vRtT8deJSXib2+Cz3x0brjMWKxe32asQc154FF1E2fFgMCHtnfd4A90bQEzV4GQ==
|
||||
"@vue/runtime-core@3.2.22":
|
||||
version "3.2.22"
|
||||
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.22.tgz#111f1bc97f20249e05ca2189856d99c82d72de32"
|
||||
integrity sha512-e7WOC55wmHPvmoVUk9VBe/Z9k5bJfWJfVIlkUkiADJn0bOgQD29oh/GS14Kb3aEJXIHLI17Em6+HxNut1sIh7Q==
|
||||
dependencies:
|
||||
"@vue/reactivity" "3.2.20"
|
||||
"@vue/shared" "3.2.20"
|
||||
"@vue/reactivity" "3.2.22"
|
||||
"@vue/shared" "3.2.22"
|
||||
|
||||
"@vue/runtime-dom@3.2.20":
|
||||
version "3.2.20"
|
||||
resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.20.tgz#8aa56ae6c30f9cd4a71ca0e9ec3c4bdc67148d15"
|
||||
integrity sha512-4TCvZMLhESWCFHFYgqN4QmMA/onnINAlUovhopjlS8ST27G1A8Z0tyxPzLoXLa+b5JrOpbMPheEMPvdKExTJig==
|
||||
"@vue/runtime-dom@3.2.22":
|
||||
version "3.2.22"
|
||||
resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.22.tgz#c11d75dd51375ee4c74e339f6523ca05e37faa37"
|
||||
integrity sha512-w7VHYJoliLRTLc5beN77wxuOjla4v9wr2FF22xpZFYBmH4U1V7HkYhoHc1BTuNghI15CXT1tNIMhibI1nrQgdw==
|
||||
dependencies:
|
||||
"@vue/runtime-core" "3.2.20"
|
||||
"@vue/shared" "3.2.20"
|
||||
"@vue/runtime-core" "3.2.22"
|
||||
"@vue/shared" "3.2.22"
|
||||
csstype "^2.6.8"
|
||||
|
||||
"@vue/server-renderer@3.2.20", "@vue/server-renderer@^3.2.20":
|
||||
version "3.2.20"
|
||||
resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.20.tgz#705e07ae9425132b2b6227d308a51a13f4d4ec81"
|
||||
integrity sha512-viIbZGep9XabnrRcaxWIi00cOh1x21QYm2upIL5W0zqzTJ54VdTzpI+zi1osNp+VfRQDTHpV2U7H3Kn4ljYJvg==
|
||||
"@vue/server-renderer@3.2.22", "@vue/server-renderer@^3.2.22":
|
||||
version "3.2.22"
|
||||
resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.22.tgz#049c91a495cb0fcdac02dec485c31cb99410885f"
|
||||
integrity sha512-jCwbQgKPXiXoH9VS9F7K+gyEvEMrjutannwEZD1R8fQ9szmOTqC+RRbIY3Uf2ibQjZtZ8DV9a4FjxICvd9zZlQ==
|
||||
dependencies:
|
||||
"@vue/compiler-ssr" "3.2.20"
|
||||
"@vue/shared" "3.2.20"
|
||||
"@vue/compiler-ssr" "3.2.22"
|
||||
"@vue/shared" "3.2.22"
|
||||
|
||||
"@vue/shared@3.2.20":
|
||||
version "3.2.20"
|
||||
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.20.tgz#53746961f731a8ea666e3316271e944238dc31db"
|
||||
integrity sha512-FbpX+hD5BvXCQerEYO7jtAGHlhAkhTQ4KIV73kmLWNlawWhTiVuQxizgVb0BOkX5oG9cIRZ42EG++d/k/Efp0w==
|
||||
"@vue/shared@3.2.22":
|
||||
version "3.2.22"
|
||||
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.22.tgz#26dcbe5e530f6c1f2de5ca9aeab92ab00f523b41"
|
||||
integrity sha512-qWVav014mpjEtbWbEgl0q9pEyrrIySKum8UVYjwhC6njrKzknLZPvfuYdQyVbApsqr94tf/3dP4pCuZmmjdCWQ==
|
||||
|
||||
"@web/parse5-utils@^1.3.0":
|
||||
version "1.3.0"
|
||||
|
@ -2598,10 +2620,10 @@ axios@^0.21.1:
|
|||
dependencies:
|
||||
follow-redirects "^1.14.0"
|
||||
|
||||
babel-plugin-jsx-dom-expressions@^0.29.19:
|
||||
version "0.29.19"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.29.19.tgz#95a46f2aac0d4c297006b854519edcb7fcc6f813"
|
||||
integrity sha512-qg1N4S6E3S7I6rgqQE1xWH6p3eZpeDxrr+Al1Ptov0NjM69fKQQfeeAtyq1Q9DjdUOIhe9MGoCVA1X+TzXZzMA==
|
||||
babel-plugin-jsx-dom-expressions@^0.30.7:
|
||||
version "0.30.7"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.30.7.tgz#8afdd295aaec986cc1bb7a780ff907901ae0f2bb"
|
||||
integrity sha512-WRBzOtsG6mGnJ1JPlycdDnHN9bO0iza20a86K3R9LN0uY12VlKjZvb47aUCPnzfwWf6H7QPXWj7WK8gQTZQEfg==
|
||||
dependencies:
|
||||
"@babel/helper-module-imports" "^7.10.4"
|
||||
"@babel/plugin-syntax-jsx" "^7.10.4"
|
||||
|
@ -2619,12 +2641,12 @@ babel-plugin-module-resolver@^4.1.0:
|
|||
reselect "^4.0.0"
|
||||
resolve "^1.13.1"
|
||||
|
||||
babel-preset-solid@^1.1.7:
|
||||
version "1.1.7"
|
||||
resolved "https://registry.yarnpkg.com/babel-preset-solid/-/babel-preset-solid-1.1.7.tgz#61a699ebcea34a19adfdd9f637f03861f0c3f90e"
|
||||
integrity sha512-OzteGVVg/3m3DC7Mo589m8KyyBZ6qO7JFhLHRusC0G/Xi6VukfKJZOpUkXGI4P7RDyLIANG3jqGVvzsjoLnihw==
|
||||
babel-preset-solid@^1.2.3:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/babel-preset-solid/-/babel-preset-solid-1.2.3.tgz#42c49ecc5bd35d465d3f0a4feb8a3ec6e71c37bf"
|
||||
integrity sha512-GX9UorhcjFScZFl7MoYZbZoYnvafa+76R1vCiM38D5CduF1vNIni17ZlGXt+0PqCv7mlv2cppDFLXNTkvMQxmA==
|
||||
dependencies:
|
||||
babel-plugin-jsx-dom-expressions "^0.29.19"
|
||||
babel-plugin-jsx-dom-expressions "^0.30.7"
|
||||
|
||||
bail@^1.0.0:
|
||||
version "1.0.5"
|
||||
|
@ -9829,10 +9851,10 @@ socks@^2.3.3, socks@^2.6.1:
|
|||
ip "^1.1.5"
|
||||
smart-buffer "^4.1.0"
|
||||
|
||||
solid-js@^1.1.7:
|
||||
version "1.1.7"
|
||||
resolved "https://registry.yarnpkg.com/solid-js/-/solid-js-1.1.7.tgz#e9518be0447678344e92e902cbca5311299b66b8"
|
||||
integrity sha512-+zZOdR++hFJ/dEmAaHjyI5/tPqRdItOVKsnLuBOKajCqG0n/Bs3uc8xWf8CiYTI7OIwSt5A6ASM8KDoKehfs6w==
|
||||
solid-js@^1.2.3:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/solid-js/-/solid-js-1.2.3.tgz#5f1ef6559465d453d392b3f221b2f36f80ee0154"
|
||||
integrity sha512-HQv7F23wSQRIuD0gNF3L1/0MHkTEia7J9Oc4VcEeLjAenkqz89tFkztBIp0PABDqK83fxzcixhSXx0xLv4lNAQ==
|
||||
|
||||
sort-keys@^2.0.0:
|
||||
version "2.0.0"
|
||||
|
@ -10267,10 +10289,10 @@ svelte-hmr@^0.14.7:
|
|||
resolved "https://registry.yarnpkg.com/svelte-hmr/-/svelte-hmr-0.14.7.tgz#7fa8261c7b225d9409f0a86f3b9ea5c3ca6f6607"
|
||||
integrity sha512-pDrzgcWSoMaK6AJkBWkmgIsecW0GChxYZSZieIYfCP0v2oPyx2CYU/zm7TBIcjLVUPP714WxmViE9Thht4etog==
|
||||
|
||||
svelte@^3.44.0:
|
||||
version "3.44.0"
|
||||
resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.44.0.tgz#e6176cb3ad93846ddb4140e93f43098136b23f3b"
|
||||
integrity sha512-zWACSJBSncGiDvFfYOMFGNV5zDLOlyhftmO5yOZ0lEtQMptpElaRtl39MWz1+lYCpwUq4F3Q2lTzI9TrTL+eMA==
|
||||
svelte@^3.44.1:
|
||||
version "3.44.1"
|
||||
resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.44.1.tgz#5cc772a8340f4519a4ecd1ac1a842325466b1a63"
|
||||
integrity sha512-4DrCEJoBvdR689efHNSxIQn2pnFwB7E7j2yLEJtHE/P8hxwZWIphCtJ8are7bjl/iVMlcEf5uh5pJ68IwR09vQ==
|
||||
|
||||
tailwindcss@^2.2.19:
|
||||
version "2.2.19"
|
||||
|
@ -11201,16 +11223,16 @@ vscode-uri@^3.0.2:
|
|||
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.2.tgz#ecfd1d066cb8ef4c3a208decdbab9a8c23d055d0"
|
||||
integrity sha512-jkjy6pjU1fxUvI51P+gCsxg1u2n8LSt0W6KrCNQceaziKzff74GoWmjVG46KieVzybO1sttPQmYfrwSHey7GUA==
|
||||
|
||||
vue@^3.2.20:
|
||||
version "3.2.20"
|
||||
resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.20.tgz#940f8aa8bf3e3be78243ca582bad41fcd45ae3e6"
|
||||
integrity sha512-81JjEP4OGk9oO8+CU0h2nFPGgJBm9mNa3kdCX2k6FuRdrWrC+CNe+tOnuIeTg8EWwQuI+wwdra5Q7vSzp7p4Iw==
|
||||
vue@^3.2.22:
|
||||
version "3.2.22"
|
||||
resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.22.tgz#46e4dd89e98cc4b851ae1eb35f00ced413a34bb7"
|
||||
integrity sha512-KD5nZpXVZquOC6926Xnp3zOvswrUyO9Rya7ZUoxWFQEjFDW4iACtwzubRB4Um2Om9kj6CaJOqAVRDSFlqLpdgw==
|
||||
dependencies:
|
||||
"@vue/compiler-dom" "3.2.20"
|
||||
"@vue/compiler-sfc" "3.2.20"
|
||||
"@vue/runtime-dom" "3.2.20"
|
||||
"@vue/server-renderer" "3.2.20"
|
||||
"@vue/shared" "3.2.20"
|
||||
"@vue/compiler-dom" "3.2.22"
|
||||
"@vue/compiler-sfc" "3.2.22"
|
||||
"@vue/runtime-dom" "3.2.22"
|
||||
"@vue/server-renderer" "3.2.22"
|
||||
"@vue/shared" "3.2.22"
|
||||
|
||||
wait-on@6.0.0:
|
||||
version "6.0.0"
|
||||
|
|
Loading…
Reference in a new issue