) {
const { value, onInput, ...rest } = props;
const [v, setV] = useState(value);
const onChange = useCallback((event: SyntheticEvent) => {
@@ -39,14 +39,24 @@ function createInputCompat(type: string) {
onInput && onInput(event.nativeEvent);
}, [onInput]);
+ // Compat maxlength in rax-textinput, because maxlength is invalid props in web,it will be set attributes to element
+ // and react will Throw a warning in DEV.
+ // https://github.com/raxjs/rax-components/issues/459
+ // https://github.com/raxjs/rax-components/blob/master/packages/rax-textinput/src/index.tsx#L142
+ if (rest.maxlength) {
+ rest.maxLength = rest.maxlength;
+ delete rest.maxlength;
+ }
+
return _createElement(type, {
...rest,
value: v,
onChange,
+ ref,
});
}
- return InputCompat;
+ return _forwardRef(InputCompat);
}
/**
@@ -81,12 +91,12 @@ export function createElement {
const { current } = ref;
- if (current != null) {
- if (isFunction(handler)) {
- observerElement(current as HTMLElement);
- current.addEventListener(eventName, handler);
- }
+ // Rax components will set custom ref by useImperativeHandle.
+ // So We should get eventTarget by _nativeNode.
+ // https://github.com/raxjs/rax-components/blob/master/packages/rax-textinput/src/index.tsx#L151
+ if (current && isFunction(handler)) {
+ const eventTarget = current._nativeNode || current;
+ observerElement(eventTarget as HTMLElement);
+ eventTarget.addEventListener(eventName, handler);
}
return () => {
const { current } = ref;
if (current) {
- current.removeEventListener(eventName, handler);
+ const eventTarget = current._nativeNode || current;
+ eventTarget.removeEventListener(eventName, handler);
}
};
}, [ref]);
diff --git a/packages/rax-compat/tests/createElement.test.tsx b/packages/rax-compat/tests/createElement.test.tsx
index 5b9ea82d3..0ba0e3afb 100644
--- a/packages/rax-compat/tests/createElement.test.tsx
+++ b/packages/rax-compat/tests/createElement.test.tsx
@@ -76,4 +76,19 @@ describe('createElement', () => {
const node = wrapper.queryByTestId('valueTest');
expect(node.value).toBe(str);
});
+
+ it('input set empty string to maxlength not be 0', () => {
+ const str = 'hello world';
+ const wrapper = render(createElement(
+ 'input',
+ {
+ 'data-testid': 'maxlengthTest',
+ value: str,
+ maxlength: ''
+ },
+ ));
+
+ const node = wrapper.queryByTestId('valueTest');
+ expect(node?.getAttribute('maxlength')).toBe(null);
+ });
});
diff --git a/packages/route-manifest/src/index.ts b/packages/route-manifest/src/index.ts
index da8d2c051..d111057aa 100644
--- a/packages/route-manifest/src/index.ts
+++ b/packages/route-manifest/src/index.ts
@@ -2,7 +2,7 @@
import fs from 'fs';
import path from 'path';
import minimatch from 'minimatch';
-import { createRouteId, defineRoutes } from './routes.js';
+import { createRouteId, defineRoutes, normalizeSlashes } from './routes.js';
import type { RouteManifest, DefineRouteFunction, NestedRouteManifest, ConfigRoute } from './routes.js';
export type {
@@ -122,7 +122,7 @@ function defineConventionalRoutes(
// in order to escape the child route path is absolute path
routeId.slice(parentRoutePath.length + (parentRoutePath ? 1 : 0)),
);
- const routeFilePath = path.join('src', 'pages', files[routeId]);
+ const routeFilePath = normalizeSlashes(path.join('src', 'pages', files[routeId]));
if (RegExp(`[^${validRouteChar.join(',')}]`).test(routePath)) {
throw new Error(`invalid character in '${routeFilePath}'. Only support char: ${validRouteChar.join(', ')}`);
}
@@ -231,7 +231,7 @@ function visitFiles(
if (stat.isDirectory()) {
visitFiles(file, visitor, baseDir);
} else if (stat.isFile()) {
- visitor(path.relative(baseDir, file));
+ visitor(normalizeSlashes(path.relative(baseDir, file)));
}
}
}
diff --git a/packages/runtime/package.json b/packages/runtime/package.json
index c1f30d6a2..156a2e8a2 100644
--- a/packages/runtime/package.json
+++ b/packages/runtime/package.json
@@ -11,7 +11,9 @@
"./server": "./esm/index.server.js",
"./jsx-runtime": "./esm/jsx-runtime.js",
"./jsx-dev-runtime": "./esm/jsx-dev-runtime.js",
- "./matchRoutes": "./esm/matchRoutes.js"
+ "./matchRoutes": "./esm/matchRoutes.js",
+ "./router": "./esm/router.js",
+ "./single-router": "./esm/single-router.js"
},
"files": [
"esm",
diff --git a/packages/runtime/src/AppRouter.tsx b/packages/runtime/src/AppRouter.tsx
index 66cad0d3f..e360f4a72 100644
--- a/packages/runtime/src/AppRouter.tsx
+++ b/packages/runtime/src/AppRouter.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import type { RouteObject } from 'react-router-dom';
import { Router, useRoutes } from 'react-router-dom';
-import { RouterSingle, useRoutesSingle } from './utils/history-single.js';
+import { Router as RouterSingle, useRoutes as useRoutesSingle } from './single-router.js';
import type { AppRouterProps } from './types.js';
const AppRouter: React.ComponentType = (props) => {
diff --git a/packages/runtime/src/Document.tsx b/packages/runtime/src/Document.tsx
index 5336a20ae..4228caf99 100644
--- a/packages/runtime/src/Document.tsx
+++ b/packages/runtime/src/Document.tsx
@@ -73,6 +73,10 @@ export function Scripts(props) {
// Page assets need to be load before entry assets, so when call dynamic import won't cause duplicate js chunk loaded.
const scripts = pageAssets.concat(entryAssets).filter(path => path.indexOf('.js') > -1);
+ if (assetsManifest.dataLoader) {
+ scripts.unshift(`${assetsManifest.publicPath}${assetsManifest.dataLoader}`);
+ }
+
const matchedIds = matches.map(match => match.route.id);
const routePath = getCurrentRoutePath(matches);
@@ -94,7 +98,10 @@ export function Scripts(props) {
* disable hydration warning for CSR.
* initial app data may not equal CSR result.
*/}
-
+
{
routeScripts.map(script => {
const { block, ...routeScriptProps } = script;
@@ -110,6 +117,20 @@ export function Scripts(props) {
);
}
+export function Data() {
+ const { routesData, documentOnly } = useAppContext();
+ const appData = useAppData();
+
+ return (
+ // Disable hydration warning for csr.
+ // initial app data may not equal csr result.
+
+ );
+}
+
export function Main(props) {
const { main } = useDocumentContext();
const { appConfig } = useAppContext();
diff --git a/packages/runtime/src/appConfig.ts b/packages/runtime/src/appConfig.ts
index 0c87f8a0b..dbce91fff 100644
--- a/packages/runtime/src/appConfig.ts
+++ b/packages/runtime/src/appConfig.ts
@@ -28,6 +28,10 @@ export default function getAppConfig(appExport: AppExport): AppConfig {
};
}
-export function defineAppConfig(appConfig: AppConfig) {
- return appConfig;
-}
\ No newline at end of file
+export function defineAppConfig(appConfigOrDefineAppConfig: AppConfig | (() => AppConfig)): AppConfig {
+ if (typeof appConfigOrDefineAppConfig === 'function') {
+ return appConfigOrDefineAppConfig();
+ } else {
+ return appConfigOrDefineAppConfig;
+ }
+}
diff --git a/packages/runtime/src/history.ts b/packages/runtime/src/history.ts
new file mode 100644
index 000000000..b9615c745
--- /dev/null
+++ b/packages/runtime/src/history.ts
@@ -0,0 +1,13 @@
+import type { History } from 'history';
+
+// Value of history will be modified after render Router.
+let routerHistory: History | null = null;
+
+function setHistory(customHistory: History) {
+ routerHistory = customHistory;
+}
+
+export {
+ routerHistory,
+ setHistory,
+};
\ No newline at end of file
diff --git a/packages/runtime/src/index.ts b/packages/runtime/src/index.ts
index 5f0785ff0..1ce3e167b 100644
--- a/packages/runtime/src/index.ts
+++ b/packages/runtime/src/index.ts
@@ -5,13 +5,6 @@ import {
useSearchParams,
useLocation,
} from 'react-router-dom';
-import {
- LinkSingle,
- OutletSingle,
- useParamsSingle,
- useSearchParamsSingle,
- useLocationSingle,
-} from './utils/history-single.js';
import Runtime from './runtime.js';
import App from './App.js';
import runClientApp from './runClientApp.js';
@@ -24,6 +17,7 @@ import {
Links,
Scripts,
Main,
+ Data,
} from './Document.js';
import type {
RuntimePlugin,
@@ -39,6 +33,7 @@ import type {
} from './types.js';
import dataLoader from './dataLoader.js';
import getAppConfig, { defineAppConfig } from './appConfig.js';
+import { routerHistory as history } from './history.js';
export {
getAppConfig,
@@ -54,6 +49,7 @@ export {
Title,
Links,
Scripts,
+ Data,
Main,
dataLoader,
// react-router-dom API
@@ -62,12 +58,7 @@ export {
useParams,
useSearchParams,
useLocation,
- // Single Route API
- LinkSingle,
- OutletSingle,
- useParamsSingle,
- useSearchParamsSingle,
- useLocationSingle,
+ history,
};
export type {
diff --git a/packages/runtime/src/matchRoutes.ts b/packages/runtime/src/matchRoutes.ts
index 23bf820d1..d2715ef3d 100644
--- a/packages/runtime/src/matchRoutes.ts
+++ b/packages/runtime/src/matchRoutes.ts
@@ -4,7 +4,7 @@
import type { Location } from 'history';
import type { RouteObject } from 'react-router-dom';
import { matchRoutes as originMatchRoutes } from 'react-router-dom';
-import { matchRoutesSingle } from './utils/history-single.js';
+import { matchRoutes as matchRoutesSingle } from './single-router.js';
import type { RouteItem, RouteMatch } from './types.js';
export default function matchRoutes(
diff --git a/packages/runtime/src/router.ts b/packages/runtime/src/router.ts
new file mode 100644
index 000000000..5dc65e77c
--- /dev/null
+++ b/packages/runtime/src/router.ts
@@ -0,0 +1,8 @@
+export {
+ Link,
+ Outlet,
+ useParams,
+ useSearchParams,
+ useLocation,
+ useNavigate,
+} from 'react-router-dom';
\ No newline at end of file
diff --git a/packages/runtime/src/runClientApp.tsx b/packages/runtime/src/runClientApp.tsx
index 901753782..5350d8a04 100644
--- a/packages/runtime/src/runClientApp.tsx
+++ b/packages/runtime/src/runClientApp.tsx
@@ -2,7 +2,8 @@ import React, { useLayoutEffect, useState } from 'react';
import * as ReactDOM from 'react-dom/client';
import { createHashHistory, createBrowserHistory, createMemoryHistory } from 'history';
import type { HashHistory, BrowserHistory, Action, Location, InitialEntry, MemoryHistory } from 'history';
-import { createHistorySingle } from './utils/history-single.js';
+import { createHistory as createHistorySingle } from './single-router.js';
+import { setHistory } from './history.js';
import Runtime from './runtime.js';
import App from './App.js';
import { AppContextProvider } from './AppContext.js';
@@ -56,6 +57,8 @@ export default async function runClientApp(options: RunClientAppOptions) {
const appConfig = getAppConfig(app);
const history = createHistory(appConfig, { memoryRouter, routePath });
+ // Set history for import it from ice.
+ setHistory(history);
const matches = matchRoutes(
routes,
diff --git a/packages/runtime/src/runServerApp.tsx b/packages/runtime/src/runServerApp.tsx
index f68a2455b..7564878e6 100644
--- a/packages/runtime/src/runServerApp.tsx
+++ b/packages/runtime/src/runServerApp.tsx
@@ -137,7 +137,7 @@ function pipeToResponse(res: ServerResponse, pipe: NodeWritablePiper) {
async function doRender(serverContext: ServerContext, renderOptions: RenderOptions): Promise {
const { req } = serverContext;
- const { routes, documentOnly, app, basename, serverOnlyBasename } = renderOptions;
+ const { routes, documentOnly, app, basename, serverOnlyBasename, disableFallback } = renderOptions;
const location = getLocation(req.url);
@@ -162,11 +162,11 @@ async function doRender(serverContext: ServerContext, renderOptions: RenderOptio
const routePath = getCurrentRoutePath(matches);
+ const routeModules = await loadRouteModules(matches.map(({ route: { id, load } }) => ({ id, load })));
+
if (documentOnly) {
- return renderDocument({ matches, routePath, renderOptions, routeModules: {} });
+ return renderDocument({ matches, routePath, renderOptions, routeModules });
}
- // FIXME: https://github.com/ice-lab/ice-next/issues/427
- const routeModules = await loadRouteModules(matches.map(({ route: { id, load } }) => ({ id, load })));
try {
return await renderServerEntry({
@@ -182,7 +182,10 @@ async function doRender(serverContext: ServerContext, renderOptions: RenderOptio
routePath,
});
} catch (err) {
- consola.error('Render server entry error, downgrade to CSR.', err);
+ if (disableFallback) {
+ throw err;
+ }
+ consola.error('Warning: render server entry error, downgrade to csr.', err);
return renderDocument({ matches, routePath, renderOptions, routeModules: {} });
}
}
diff --git a/packages/runtime/src/utils/history-single.tsx b/packages/runtime/src/single-router.tsx
similarity index 50%
rename from packages/runtime/src/utils/history-single.tsx
rename to packages/runtime/src/single-router.tsx
index e097d7f4a..97b5ab2af 100644
--- a/packages/runtime/src/utils/history-single.tsx
+++ b/packages/runtime/src/single-router.tsx
@@ -1,18 +1,19 @@
/**
- * 对 react-router-dom 进行二次封装,保证只有一个路由时能够通过 tree-shaking 将 react-router 相关代码全量移除
+ * Fake API of react-router-dom, react-router-dom will be remove
+ * if user config `optimize.router` false
*/
import * as React from 'react';
import type { History } from 'history';
-export const useRoutesSingle = (routes) => {
+export const useRoutes = (routes) => {
return <>{routes[0].element}>;
};
-export const RouterSingle = (props) => {
+export const Router = (props) => {
return <>{props.children}>;
};
-export const createHistorySingle = (): History => {
+export const createHistory = (): History => {
return {
// @ts-expect-error
listen: () => {},
@@ -23,7 +24,7 @@ export const createHistorySingle = (): History => {
};
};
-export const matchRoutesSingle = (routes) => {
+export const matchRoutes = (routes: any[]) => {
return routes.map(item => {
return {
params: {},
@@ -34,16 +35,19 @@ export const matchRoutesSingle = (routes) => {
});
};
-export const LinkSingle = () => null;
-export const OutletSingle = () => {
+export const Link = () => null;
+export const Outlet = () => {
return <>>;
};
-export const useParamsSingle = () => {
+export const useParams = () => {
return {};
};
-export const useSearchParamsSingle = () => {
+export const useSearchParams = () => {
return [{}, () => {}];
};
-export const useLocationSingle = () => {
+export const useLocation = () => {
+ return {};
+};
+export const useNavigate = () => {
return {};
};
diff --git a/packages/runtime/src/types.ts b/packages/runtime/src/types.ts
index 25a57195c..117148f8b 100644
--- a/packages/runtime/src/types.ts
+++ b/packages/runtime/src/types.ts
@@ -140,6 +140,7 @@ export interface RouteModules {
}
export interface AssetsManifest {
+ dataLoader?: string;
publicPath: string;
entries: string[];
pages: string[];
diff --git a/packages/runtime/tests/appConfig.test.ts b/packages/runtime/tests/appConfig.test.ts
new file mode 100644
index 000000000..0f1833da1
--- /dev/null
+++ b/packages/runtime/tests/appConfig.test.ts
@@ -0,0 +1,14 @@
+import { expect, test, describe } from 'vitest';
+import { defineAppConfig } from '../src/appConfig.js';
+
+describe('AppConfig', () => {
+ test('defineAppConfig', () => {
+ const appConfig = {};
+ expect(defineAppConfig(appConfig)).toEqual(appConfig);
+ });
+
+ test('defineAppConfig fn', () => {
+ const appConfig = {};
+ expect(defineAppConfig(() => appConfig)).toEqual(appConfig);
+ });
+});
diff --git a/packages/style-import/src/index.ts b/packages/style-import/src/index.ts
index ebf8e69f9..a1e2447d5 100644
--- a/packages/style-import/src/index.ts
+++ b/packages/style-import/src/index.ts
@@ -6,13 +6,14 @@ interface TransformOptions {
libraryName: string;
style: ((name: string) => string) | Boolean;
sourceMap?: Boolean;
+ kebabCase?: Boolean;
}
export async function importStyle(code: string, options: TransformOptions): Promise;
}> {
- const { style, libraryName, sourceMap } = options;
+ const { style, libraryName, sourceMap, kebabCase = true } = options;
if (!style) {
return null;
}
@@ -45,7 +46,12 @@ export async function importStyle(code: string, options: TransformOptions): Prom
console.log(e);
return;
}
- exports.forEach(({ n: importName }) => {
+ exports.forEach(({ n }) => {
+ const toKebabCase = (str: string) => str.replace(/^[A-Z]/, $1 => $1.toLowerCase()).replace(/([A-Z])/g, $1 => `-${$1.toLowerCase()}`);
+ let importName = n;
+ if (kebabCase) {
+ importName = toKebabCase(importName);
+ }
const stylePath = typeof style === 'function' ? style(importName) : `${libraryName}/es/${importName}/style`;
if (stylePath) {
styleStatements.push(`import '${stylePath}';`);
diff --git a/packages/style-import/tests/importStyle.test.ts b/packages/style-import/tests/importStyle.test.ts
index 6ae744787..9bfdc3782 100644
--- a/packages/style-import/tests/importStyle.test.ts
+++ b/packages/style-import/tests/importStyle.test.ts
@@ -5,7 +5,7 @@ describe('import style', () => {
it('simple import', async () => {
const sourceCode = `import { Button } from 'antd';`;
const result = await importStyle(sourceCode, { libraryName: 'antd', style: true });
- expect(result?.code).toBe(`${sourceCode}\nimport 'antd/es/Button/style';`);
+ expect(result?.code).toBe(`${sourceCode}\nimport 'antd/es/button/style';`);
});
it('custom style', async () => {
const sourceCode = `import { Button } from 'antd';`;
@@ -20,12 +20,12 @@ describe('import style', () => {
it('multiple import', async () => {
const sourceCode = `import { Button, Table } from 'antd';`;
const result = await importStyle(sourceCode, { libraryName: 'antd', style: true });
- expect(result?.code).toBe(`${sourceCode}\nimport 'antd/es/Button/style';\nimport 'antd/es/Table/style';`);
+ expect(result?.code).toBe(`${sourceCode}\nimport 'antd/es/button/style';\nimport 'antd/es/table/style';`);
});
it('named import', async () => {
const sourceCode = `import { Button as Btn } from 'antd';`;
const result = await importStyle(sourceCode, { libraryName: 'antd', style: true });
- expect(result?.code).toBe(`${sourceCode}\nimport 'antd/es/Button/style';`);
+ expect(result?.code).toBe(`${sourceCode}\nimport 'antd/es/button/style';`);
});
it('default import', async () => {
const sourceCode = `import * as antd from 'antd';`;
diff --git a/packages/types/package.json b/packages/types/package.json
index 55110e1cf..8083f9467 100644
--- a/packages/types/package.json
+++ b/packages/types/package.json
@@ -33,7 +33,7 @@
"@builder/swc": "^0.2.0",
"@ice/route-manifest": "^1.0.0",
"@ice/runtime": "^1.0.0",
- "build-scripts": "^2.0.0-23",
+ "build-scripts": "^2.0.0-24",
"esbuild": "^0.14.23",
"eslint": "^8.14.0",
"eslint-webpack-plugin": "3.1.1",
@@ -41,7 +41,7 @@
"react": "^18.0.0",
"terser": "^5.12.1",
"typescript": "^4.6.4",
- "unplugin": "^0.3.2",
+ "unplugin": "^0.9.5",
"webpack": "^5.73.0",
"webpack-dev-server": "^4.7.4"
}
diff --git a/packages/types/src/config.ts b/packages/types/src/config.ts
index 4a3435a32..d89c348da 100644
--- a/packages/types/src/config.ts
+++ b/packages/types/src/config.ts
@@ -15,6 +15,7 @@ import type Server from 'webpack-dev-server';
import type { ECMA } from 'terser';
import type { Config as SWCCompilationConfig } from '@builder/swc';
import type { BuildOptions } from 'esbuild';
+import type { UserConfig } from './userConfig';
// get type definitions from terser-webpack-plugin
interface CustomOptions {
@@ -82,7 +83,7 @@ export interface Config {
| WebpackPluginInstance
)[];
- alias?: Record;
+ alias?: UserConfig['alias'];
hash?: boolean | string;
diff --git a/packages/types/src/userConfig.ts b/packages/types/src/userConfig.ts
index 3795a9d53..a9a67f6d8 100644
--- a/packages/types/src/userConfig.ts
+++ b/packages/types/src/userConfig.ts
@@ -10,6 +10,10 @@ interface SyntaxFeatures {
functionBind?: boolean;
}
+interface Optimization {
+ router?: boolean;
+}
+
export interface UserConfig {
alias?: Record;
define?: Record;
@@ -38,9 +42,10 @@ export interface UserConfig {
format: 'esm' | 'cjs';
bundle: boolean;
};
- removeHistoryDeadCode?: boolean;
+ optimization?: Optimization;
mock?: { exclude?: string[] };
experimental?: Config['experimental'];
transform?: UnpluginOptions['transform'];
syntaxFeatures?: SyntaxFeatures;
+ splitChunks?: boolean;
}
diff --git a/packages/webpack-config/package.json b/packages/webpack-config/package.json
index b09667440..8d6e12da4 100644
--- a/packages/webpack-config/package.json
+++ b/packages/webpack-config/package.json
@@ -24,12 +24,11 @@
"magic-string": "^0.26.1",
"mini-css-extract-plugin": "2.6.0",
"react-refresh": "^0.12.0",
- "regenerator-runtime": "0.13.9",
- "unplugin": "^0.3.2"
+ "unplugin": "^0.9.5"
},
"devDependencies": {
"@ice/types": "^1.0.0",
- "build-scripts": "^2.0.0-23",
+ "build-scripts": "^2.0.0-24",
"esbuild": "^0.14.23",
"webpack": "^5.73.0",
"webpack-dev-server": "^4.7.4"
diff --git a/packages/webpack-config/src/compileExcludes.ts b/packages/webpack-config/src/compileExcludes.ts
new file mode 100644
index 000000000..89c45bd73
--- /dev/null
+++ b/packages/webpack-config/src/compileExcludes.ts
@@ -0,0 +1,15 @@
+const SKIP_COMPILE = [
+ // polyfill and helpers
+ 'core-js', 'core-js-pure', '@swc/helpers', '@babel/runtime',
+ // built-in runtime
+ 'react', 'react-dom',
+ // dev dependencies
+ '@pmmmwh/react-refresh-webpack-plugin', 'webpack', 'webpack-dev-server', 'react-refresh',
+];
+
+const compileExcludes = [
+ new RegExp(SKIP_COMPILE.map((dep) => `node_modules/?.+${dep}/`).join('|')),
+ /bundles\/compiled/,
+];
+
+export default compileExcludes;
diff --git a/packages/webpack-config/src/config/splitChunks.ts b/packages/webpack-config/src/config/splitChunks.ts
index 8bfa3c326..04c1361b7 100644
--- a/packages/webpack-config/src/config/splitChunks.ts
+++ b/packages/webpack-config/src/config/splitChunks.ts
@@ -8,6 +8,7 @@ interface TestModule {
interface NameModule {
libIdent?: Function;
type: string;
+ updateHash: (hash: crypto.Hash) => void;
}
export const FRAMEWORK_BUNDLES = [
@@ -15,6 +16,15 @@ export const FRAMEWORK_BUNDLES = [
'react', 'react-dom', '@ice/runtime', 'react-router', 'react-router-dom',
];
+
+const isModuleCSS = (module: { type: string }): boolean => {
+ return (
+ // mini-css-extract-plugin
+ module.type === 'css/mini-extract' ||
+ // extract-css-chunks-webpack-plugin
+ module.type === 'css/extract-css-chunks'
+ );
+};
const getSplitChunksConfig = (rootDir: string): webpack.Configuration['optimization']['splitChunks'] => {
const frameworkRegex = new RegExp(`[\\\\/]node_modules[\\\\/](${FRAMEWORK_BUNDLES.join('|')})[\\\\/]`);
return {
@@ -39,12 +49,16 @@ const getSplitChunksConfig = (rootDir: string): webpack.Configuration['optimizat
},
name(module: NameModule) {
const hash = crypto.createHash('sha1');
- if (!module.libIdent) {
- throw new Error(
- `Encountered unknown module type: ${module.type}.`,
- );
+ if (isModuleCSS(module)) {
+ module.updateHash(hash);
+ } else {
+ if (!module.libIdent) {
+ throw new Error(
+ `Encountered unknown module type: ${module.type}.`,
+ );
+ }
+ hash.update(module.libIdent({ context: rootDir }));
}
- hash.update(module.libIdent({ context: rootDir }));
return hash.digest('hex').substring(0, 8);
},
},
diff --git a/packages/webpack-config/src/getCompilerPlugins.ts b/packages/webpack-config/src/getCompilerPlugins.ts
index 803796174..85e3a392d 100644
--- a/packages/webpack-config/src/getCompilerPlugins.ts
+++ b/packages/webpack-config/src/getCompilerPlugins.ts
@@ -3,19 +3,11 @@ import type { BuildOptions } from 'esbuild';
import { createUnplugin } from 'unplugin';
import type { UnpluginOptions } from 'unplugin';
import compilationPlugin from './unPlugins/compilation.js';
+import compileExcludes from './compileExcludes.js';
import type { WebpackConfig } from './index.js';
type Compiler = 'webpack' | 'esbuild';
-const SKIP_COMPILE = [
- // polyfill and helpers
- 'core-js', 'core-js-pure', '@swc/helpers', '@babel/runtime',
- // built-in runtime
- 'react', 'react-dom',
- // dev dependencies
- '@pmmmwh/react-refresh-webpack-plugin', 'webpack', 'webpack-dev-server', 'react-refresh',
-];
-
function getPluginTransform(plugin: UnpluginOptions, type: 'esbuild' | 'webpack') {
const { transform } = plugin;
if (transform) {
@@ -46,17 +38,15 @@ function getCompilerPlugins(config: Config, compiler: Compiler) {
cacheDir,
} = config;
const compilerPlugins = [];
- const compileExcludes = [
- new RegExp(SKIP_COMPILE.map((dep) => `node_modules/?.+${dep}/`).join('|')),
- /bundles\/compiled/,
- ];
+
// Add custom transform before swc compilation so the source code can be got before transformed.
compilerPlugins.push(
...(transformPlugins.filter(({ enforce }) => !enforce || enforce === 'pre') || []),
...transforms.map((transform, index) => ({ name: `transform_${index}`, transform })),
);
-
- if (swcOptions) {
+ // Use webpack loader instead of webpack plugin to do the compilation.
+ // Reason: https://github.com/unjs/unplugin/issues/154
+ if (swcOptions && compiler !== 'webpack') {
compilerPlugins.push(compilationPlugin({
cacheDir,
sourceMap,
diff --git a/packages/webpack-config/src/index.ts b/packages/webpack-config/src/index.ts
index b6d94c7bb..8d777715f 100644
--- a/packages/webpack-config/src/index.ts
+++ b/packages/webpack-config/src/index.ts
@@ -21,6 +21,8 @@ import configCss from './config/css.js';
import AssetsManifestPlugin from './webpackPlugins/AssetsManifestPlugin.js';
import getCompilerPlugins from './getCompilerPlugins.js';
import getSplitChunksConfig, { FRAMEWORK_BUNDLES } from './config/splitChunks.js';
+import compilationPlugin from './unPlugins/compilation.js';
+import compileExcludes from './compileExcludes.js';
const require = createRequire(import.meta.url);
const { merge } = lodash;
@@ -85,6 +87,8 @@ const getWebpackConfig: GetWebpackConfig = ({ rootDir, config, webpack, runtimeT
devServer,
fastRefresh,
logging,
+ swcOptions,
+ compileIncludes,
} = config;
const absoluteOutputDir = path.isAbsolute(outputDir) ? outputDir : path.join(rootDir, outputDir);
const dev = mode !== 'production';
@@ -93,7 +97,8 @@ const getWebpackConfig: GetWebpackConfig = ({ rootDir, config, webpack, runtimeT
// formate alias
const aliasWithRoot = {};
Object.keys(alias).forEach((key) => {
- aliasWithRoot[key] = alias[key] && alias[key].startsWith('.') ? path.join(rootDir, alias[key]) : alias[key];
+ const aliasValue = alias[key];
+ aliasWithRoot[key] = (aliasValue && typeof aliasValue === 'string' && aliasValue.startsWith('.')) ? path.join(rootDir, aliasValue) : aliasValue;
});
// auto stringify define value
@@ -146,7 +151,15 @@ const getWebpackConfig: GetWebpackConfig = ({ rootDir, config, webpack, runtimeT
ascii_only: true,
},
}, minimizerOptions);
-
+ const compilation = compilationPlugin({
+ cacheDir,
+ sourceMap,
+ fastRefresh,
+ mode,
+ compileIncludes,
+ compileExcludes,
+ swcOptions,
+ });
const webpackConfig: WebpackConfig = {
mode,
experiments: {
@@ -173,6 +186,17 @@ const getWebpackConfig: GetWebpackConfig = ({ rootDir, config, webpack, runtimeT
},
},
rules: [
+ // Use webpack loader instead of webpack plugin which is generated by unplugin.
+ // Reason: https://github.com/unjs/unplugin/issues/154
+ {
+ test: compilation.transformInclude,
+ use: {
+ loader: require.resolve('./webpackLoaders/compilationLoader.cjs'),
+ options: {
+ transform: compilation.transform,
+ },
+ },
+ },
...loaders,
],
},
@@ -192,7 +216,9 @@ const getWebpackConfig: GetWebpackConfig = ({ rootDir, config, webpack, runtimeT
ignored: watchIgnoredRegexp,
},
optimization: {
- splitChunks: splitChunks == false ? undefined : getSplitChunksConfig(rootDir),
+ splitChunks: splitChunks == false
+ ? { minChunks: Infinity, cacheGroups: { default: false } }
+ : getSplitChunksConfig(rootDir),
minimize: minify,
minimizer: [
new TerserPlugin({
@@ -232,7 +258,7 @@ const getWebpackConfig: GetWebpackConfig = ({ rootDir, config, webpack, runtimeT
...plugins,
...compilerWebpackPlugins,
dev && fastRefresh && new ReactRefreshWebpackPlugin({
- exclude: [/node_modules/, /bundles\/compiled/],
+ exclude: [/node_modules/, /bundles[\\\\/]compiled/],
// use webpack-dev-server overlay instead
overlay: false,
}),
diff --git a/packages/webpack-config/src/unPlugins/compilation.ts b/packages/webpack-config/src/unPlugins/compilation.ts
index 42aa250e7..3b60ab8f0 100644
--- a/packages/webpack-config/src/unPlugins/compilation.ts
+++ b/packages/webpack-config/src/unPlugins/compilation.ts
@@ -7,7 +7,6 @@ import type { Config } from '@ice/types';
const { merge } = lodash;
const require = createRequire(import.meta.url);
-const regeneratorRuntimePath = require.resolve('regenerator-runtime');
type JSXSuffix = 'jsx' | 'tsx';
@@ -33,7 +32,6 @@ const compilationPlugin = (options: Options): UnpluginOptions => {
transformInclude(id) {
return extensionRegex.test(id) && !compileExcludes.some((regex) => regex.test(id));
},
- // @ts-expect-error TODO: source map types
async transform(source: string, id: string) {
if ((/node_modules/.test(id) && !compileRegex.some((regex) => regex.test(id)))) {
return;
@@ -67,11 +65,29 @@ const compilationPlugin = (options: Options): UnpluginOptions => {
const swcPlugins = [];
// handle app.tsx and page entries only
- if (removeExportExprs && (/(.*)pages(.*)\.(jsx?|tsx?|mjs)$/.test(id) || /(.*)src\/app/.test(id))) {
- swcPlugins.push([
- require.resolve('@ice/swc-plugin-remove-export'),
- removeExportExprs,
- ]);
+ if (removeExportExprs) {
+ if (/(.*)pages(.*)\.(jsx?|tsx?|mjs)$/.test(id)) {
+ swcPlugins.push([
+ require.resolve('@ice/swc-plugin-remove-export'),
+ removeExportExprs,
+ ]);
+ } else if (/(.*)src\/app/.test(id)) {
+ let removeList;
+
+ // FIXME: https://github.com/ice-lab/ice-next/issues/487
+ if (removeExportExprs.indexOf('getConfig') === -1) {
+ // when build for getConfig, should keep default, it equals to getAppConfig
+ removeList = removeExportExprs.filter(key => key !== 'default');
+ } else {
+ // when build for getData, should remove all other exports
+ removeList = removeExportExprs;
+ }
+
+ swcPlugins.push([
+ require.resolve('@ice/swc-plugin-remove-export'),
+ removeList,
+ ]);
+ }
}
if (keepPlatform) {
@@ -97,10 +113,6 @@ const compilationPlugin = (options: Options): UnpluginOptions => {
const { code } = output;
let { map } = output;
- if (typeof map === 'string') {
- // map require object type
- map = JSON.parse(map);
- }
return { code, map };
} catch (e) {
// catch error for Unhandled promise rejection
@@ -131,10 +143,6 @@ function getJsxTransformOptions({
transform: {
react: reactTransformConfig,
legacyDecorator: true,
- // @ts-expect-error fix me when @builder/swc fix type error
- regenerator: {
- importPath: regeneratorRuntimePath,
- },
},
externalHelpers: false,
},
diff --git a/packages/webpack-config/src/webpackLoaders/compilationLoader.cts b/packages/webpack-config/src/webpackLoaders/compilationLoader.cts
new file mode 100644
index 000000000..f08e3342a
--- /dev/null
+++ b/packages/webpack-config/src/webpackLoaders/compilationLoader.cts
@@ -0,0 +1,13 @@
+module.exports = async function compilationLoader(source: string, map: any) {
+ const options = this.getOptions();
+ const callback = this.async();
+ const { transform } = options;
+
+ const result = await transform(source, this.resourcePath);
+ if (result) {
+ const { code, map } = result;
+ callback(null, code, map);
+ } else {
+ callback(null, source, map);
+ }
+};
diff --git a/packages/webpack-config/src/webpackPlugins/AssetsManifestPlugin.ts b/packages/webpack-config/src/webpackPlugins/AssetsManifestPlugin.ts
index 74ec199b6..0042ac1f3 100644
--- a/packages/webpack-config/src/webpackPlugins/AssetsManifestPlugin.ts
+++ b/packages/webpack-config/src/webpackPlugins/AssetsManifestPlugin.ts
@@ -69,7 +69,7 @@ export default class AssetsManifestPlugin {
// data-loader is built by another webpack task
const dataLoader = resolve(this.outputDir, './data-loader.ts');
if (existsSync(dataLoader)) {
- manifest.entries['main']?.unshift('js/data-loader.js');
+ manifest['dataLoader'] = 'js/data-loader.js';
}
const output = JSON.stringify(manifest, null, 2);
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d1cf31f61..090349cc4 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -29,6 +29,7 @@ importers:
husky: ^7.0.4
ice-npm-utils: ^3.0.2
jsdom: ^20.0.0
+ lint-staged: ^13.0.3
prettier: ^2.7.1
puppeteer: ^13.7.0
react: ^18.2.0
@@ -64,6 +65,7 @@ importers:
husky: 7.0.4
ice-npm-utils: 3.0.2
jsdom: 20.0.0
+ lint-staged: 13.0.3
prettier: 2.7.1
puppeteer: 13.7.0
react: 18.2.0
@@ -84,10 +86,8 @@ importers:
'@types/react-dom': ^18.0.2
'@uni/env': ^1.1.0
ahooks: ^3.3.8
- browserslist: ^4.19.3
react: ^18.0.0
react-dom: ^18.0.0
- regenerator-runtime: ^0.13.9
speed-measure-webpack-plugin: ^1.5.0
webpack: ^5.73.0
dependencies:
@@ -102,8 +102,6 @@ importers:
devDependencies:
'@types/react': 18.0.8
'@types/react-dom': 18.0.3
- browserslist: 4.20.3
- regenerator-runtime: 0.13.9
speed-measure-webpack-plugin: 1.5.0_webpack@5.73.0
webpack: 5.73.0
@@ -115,10 +113,8 @@ importers:
'@types/react': ^18.0.0
'@types/react-dom': ^18.0.0
antd-mobile: ^5.12.6
- browserslist: ^4.19.3
react: ^18.0.0
react-dom: ^18.0.0
- regenerator-runtime: ^0.13.9
speed-measure-webpack-plugin: ^1.5.0
webpack: ^5.73.0
dependencies:
@@ -131,8 +127,6 @@ importers:
devDependencies:
'@types/react': 18.0.8
'@types/react-dom': 18.0.3
- browserslist: 4.20.3
- regenerator-runtime: 0.13.9
speed-measure-webpack-plugin: 1.5.0_webpack@5.73.0
webpack: 5.73.0
@@ -144,7 +138,6 @@ importers:
'@types/react-dom': ^18.0.0
react: ^18.0.0
react-dom: ^18.0.0
- regenerator-runtime: ^0.13.9
dependencies:
'@ice/app': link:../../packages/ice
'@ice/runtime': link:../../packages/runtime
@@ -153,7 +146,6 @@ importers:
devDependencies:
'@types/react': 18.0.8
'@types/react-dom': 18.0.3
- regenerator-runtime: 0.13.9
examples/rax-project:
specifiers:
@@ -162,7 +154,6 @@ importers:
'@ice/runtime': workspace:*
'@types/react': ^18.0.0
'@types/react-dom': ^18.0.2
- browserslist: ^4.19.3
rax: ^1.2.2
rax-image: ^2.4.1
rax-is-valid-element: ^1.0.0
@@ -170,7 +161,6 @@ importers:
rax-view: ^2.3.0
react: ^18.0.0
react-dom: ^18.0.0
- regenerator-runtime: ^0.13.9
webpack: ^5.73.0
dependencies:
'@ice/app': link:../../packages/ice
@@ -186,8 +176,6 @@ importers:
devDependencies:
'@types/react': 18.0.8
'@types/react-dom': 18.0.3
- browserslist: 4.20.3
- regenerator-runtime: 0.13.9
webpack: 5.73.0
examples/routes-generate:
@@ -196,10 +184,8 @@ importers:
'@ice/runtime': workspace:*
'@types/react': ^18.0.0
'@types/react-dom': ^18.0.0
- browserslist: ^4.19.3
react: ^18.0.0
react-dom: ^18.0.0
- regenerator-runtime: ^0.13.9
dependencies:
'@ice/app': link:../../packages/ice
'@ice/runtime': link:../../packages/runtime
@@ -208,8 +194,6 @@ importers:
devDependencies:
'@types/react': 18.0.8
'@types/react-dom': 18.0.3
- browserslist: 4.20.3
- regenerator-runtime: 0.13.9
examples/single-route:
specifiers:
@@ -217,10 +201,8 @@ importers:
'@ice/runtime': workspace:*
'@types/react': ^18.0.0
'@types/react-dom': ^18.0.0
- browserslist: ^4.19.3
react: ^18.0.0
react-dom: ^18.0.0
- webpack-bundle-analyzer: ^4.5.0
dependencies:
'@ice/app': link:../../packages/ice
'@ice/runtime': link:../../packages/runtime
@@ -229,8 +211,6 @@ importers:
devDependencies:
'@types/react': 18.0.8
'@types/react-dom': 18.0.3
- browserslist: 4.20.3
- webpack-bundle-analyzer: 4.5.0
examples/with-antd:
specifiers:
@@ -241,11 +221,9 @@ importers:
'@types/react': ^18.0.0
'@types/react-dom': ^18.0.2
antd: ^4.0.0
- browserslist: ^4.19.3
moment: ^2.29.4
react: ^18.0.0
react-dom: ^18.0.0
- regenerator-runtime: ^0.13.9
dependencies:
'@ice/app': link:../../packages/ice
'@ice/plugin-antd': link:../../packages/plugin-antd
@@ -258,8 +236,6 @@ importers:
devDependencies:
'@types/react': 18.0.8
'@types/react-dom': 18.0.3
- browserslist: 4.20.3
- regenerator-runtime: 0.13.9
examples/with-antd-mobile:
specifiers:
@@ -268,11 +244,9 @@ importers:
'@types/react': ^18.0.0
'@types/react-dom': ^18.0.2
antd-mobile: ^5.12.4
- browserslist: ^4.19.3
constate: ^3.3.2
react: ^18.2.0
react-dom: ^18.2.0
- regenerator-runtime: ^0.13.9
dependencies:
'@ice/app': link:../../packages/ice
'@ice/runtime': link:../../packages/runtime
@@ -283,8 +257,6 @@ importers:
devDependencies:
'@types/react': 18.0.8
'@types/react-dom': 18.0.3
- browserslist: 4.20.3
- regenerator-runtime: 0.13.9
examples/with-fusion:
specifiers:
@@ -296,7 +268,6 @@ importers:
'@types/react-dom': ^18.0.2
react: ^18.0.0
react-dom: ^18.0.0
- regenerator-runtime: ^0.13.9
dependencies:
'@alifd/next': 1.25.49_biqbaboplfbrettd7655fr4n2y
'@ice/app': link:../../packages/ice
@@ -307,7 +278,6 @@ importers:
devDependencies:
'@types/react': 18.0.8
'@types/react-dom': 18.0.3
- regenerator-runtime: 0.13.9
examples/with-pha:
specifiers:
@@ -316,10 +286,8 @@ importers:
'@ice/runtime': workspace:*
'@types/react': ^18.0.0
'@types/react-dom': ^18.0.2
- browserslist: ^4.19.3
react: ^18.0.0
react-dom: ^18.0.0
- regenerator-runtime: ^0.13.9
webpack: ^5.73.0
dependencies:
'@ice/app': link:../../packages/ice
@@ -330,8 +298,6 @@ importers:
devDependencies:
'@types/react': 18.0.8
'@types/react-dom': 18.0.3
- browserslist: 4.20.3
- regenerator-runtime: 0.13.9
webpack: 5.73.0
examples/with-store:
@@ -341,8 +307,6 @@ importers:
'@ice/runtime': workspace:*
'@types/react': ^18.0.0
'@types/react-dom': ^18.0.0
- browserslist: ^4.19.3
- regenerator-runtime: ^0.13.9
dependencies:
'@ice/app': link:../../packages/ice
'@ice/runtime': link:../../packages/runtime
@@ -350,8 +314,6 @@ importers:
'@ice/plugin-store': link:../../packages/plugin-store
'@types/react': 18.0.15
'@types/react-dom': 18.0.6
- browserslist: 4.21.3
- regenerator-runtime: 0.13.9
packages/bundles:
specifiers:
@@ -462,7 +424,7 @@ importers:
acorn: ^8.7.1
address: ^1.1.2
body-parser: ^1.20.0
- build-scripts: ^2.0.0-23
+ build-scripts: ^2.0.0-24
chalk: ^4.0.0
chokidar: ^3.5.3
commander: ^9.0.0
@@ -486,12 +448,13 @@ importers:
path-to-regexp: ^6.2.0
react: ^18.0.0
react-router: ^6.3.0
+ regenerator-runtime: ^0.13.9
resolve.exports: ^1.1.0
sass: ^1.49.9
semver: ^7.3.5
temp: ^0.9.4
trusted-cert: ^1.1.3
- unplugin: ^0.8.0
+ unplugin: ^0.9.5
webpack: ^5.73.0
webpack-dev-server: ^4.7.4
dependencies:
@@ -507,7 +470,7 @@ importers:
acorn: 8.7.1
address: 1.1.2
body-parser: 1.20.0
- build-scripts: 2.0.0-23
+ build-scripts: 2.0.0-24
chalk: 4.1.2
commander: 9.2.0
consola: 2.15.3
@@ -529,6 +492,7 @@ importers:
open: 8.4.0
path-to-regexp: 6.2.1
react-router: 6.3.0_react@18.2.0
+ regenerator-runtime: 0.13.9
resolve.exports: 1.1.0
sass: 1.50.1
semver: 7.3.7
@@ -548,12 +512,12 @@ importers:
'@types/temp': 0.9.1
chokidar: 3.5.3
react: 18.2.0
- unplugin: 0.8.1_4upc34oiflw3lduyjvrzpjntau
+ unplugin: 0.9.5_4upc34oiflw3lduyjvrzpjntau
webpack: 5.73.0_esbuild@0.14.38
packages/jsx-runtime:
specifiers:
- '@ice/pkg': ^1.0.0
+ '@ice/pkg': 1.1.2-0
'@types/react': ^18.0.0
'@types/react-dom': ^18.0.0
react: ^18.0.0
@@ -562,7 +526,7 @@ importers:
dependencies:
style-unit: 3.0.4
devDependencies:
- '@ice/pkg': 1.1.1
+ '@ice/pkg': 1.1.2-0
'@types/react': 18.0.8
'@types/react-dom': 18.0.3
react: 18.2.0
@@ -665,7 +629,7 @@ importers:
packages/rax-compat:
specifiers:
- '@ice/pkg': ^1.0.0
+ '@ice/pkg': 1.1.2-0
'@swc/helpers': ^0.4.3
'@types/rax': ^1.0.8
'@types/react': ^18.0.0
@@ -679,7 +643,7 @@ importers:
create-react-class: 15.7.0
style-unit: 3.0.5
devDependencies:
- '@ice/pkg': 1.1.1
+ '@ice/pkg': 1.1.2-0
'@types/rax': 1.0.8
'@types/react': 18.0.8
'@types/react-dom': 18.0.3
@@ -731,7 +695,7 @@ importers:
'@builder/swc': ^0.2.0
'@ice/route-manifest': ^1.0.0
'@ice/runtime': ^1.0.0
- build-scripts: ^2.0.0-23
+ build-scripts: ^2.0.0-24
esbuild: ^0.14.23
eslint: ^8.14.0
eslint-webpack-plugin: 3.1.1
@@ -739,14 +703,14 @@ importers:
react: ^18.0.0
terser: ^5.12.1
typescript: ^4.6.4
- unplugin: ^0.3.2
+ unplugin: ^0.9.5
webpack: ^5.73.0
webpack-dev-server: ^4.7.4
devDependencies:
'@builder/swc': 0.2.0
'@ice/route-manifest': link:../route-manifest
'@ice/runtime': link:../runtime
- build-scripts: 2.0.0-23
+ build-scripts: 2.0.0-24
esbuild: 0.14.38
eslint: 8.14.0
eslint-webpack-plugin: 3.1.1_7fh3pplfe77vb5lwiuqfjafe74
@@ -754,7 +718,7 @@ importers:
react: 18.2.0
terser: 5.12.1
typescript: 4.6.4
- unplugin: 0.3.3_4upc34oiflw3lduyjvrzpjntau
+ unplugin: 0.9.5_4upc34oiflw3lduyjvrzpjntau
webpack: 5.73.0_esbuild@0.14.38
webpack-dev-server: 4.8.1_webpack@5.73.0
@@ -768,15 +732,14 @@ importers:
'@rollup/pluginutils': ^4.2.0
'@swc/core': 1.2.210
browserslist: ^4.19.3
- build-scripts: ^2.0.0-23
+ build-scripts: ^2.0.0-24
consola: ^2.15.3
esbuild: ^0.14.23
fast-glob: ^3.2.11
magic-string: ^0.26.1
mini-css-extract-plugin: 2.6.0
react-refresh: ^0.12.0
- regenerator-runtime: 0.13.9
- unplugin: ^0.3.2
+ unplugin: ^0.9.5
webpack: ^5.73.0
webpack-dev-server: ^4.7.4
dependencies:
@@ -792,11 +755,10 @@ importers:
magic-string: 0.26.1
mini-css-extract-plugin: 2.6.0_webpack@5.73.0
react-refresh: 0.12.0
- regenerator-runtime: 0.13.9
- unplugin: 0.3.3_4upc34oiflw3lduyjvrzpjntau
+ unplugin: 0.9.5_4upc34oiflw3lduyjvrzpjntau
devDependencies:
'@ice/types': link:../types
- build-scripts: 2.0.0-23
+ build-scripts: 2.0.0-24
esbuild: 0.14.38
webpack: 5.73.0_ohfecwmx44wixok6ry5c6snfbe
webpack-dev-server: 4.8.1_webpack@5.73.0
@@ -4804,7 +4766,7 @@ packages:
peerDependencies:
react: '*'
dependencies:
- '@types/react': 18.0.15
+ '@types/react': 18.0.17
prop-types: 15.8.1
react: 17.0.2
@@ -5233,7 +5195,6 @@ packages:
cpu: [loong64]
os: [linux]
requiresBuild: true
- dev: true
optional: true
/@esbuild/linux-loong64/0.15.1:
@@ -5338,22 +5299,22 @@ packages:
fs-extra: 10.1.0
dev: true
- /@ice/pkg/1.1.1:
- resolution: {integrity: sha512-Ub6i5kfbX0xpdYZHv8UiIoBa6FukKHF4dzXcr/+LSUeAVnlBsc+e/hfjJjxZzv6sIBxLBNs7H62lx+79UopR7g==}
+ /@ice/pkg/1.1.2-0:
+ resolution: {integrity: sha512-cv//5fNdAZz6QZRnnNe0aiEa3n/K/dhlTcYrDbb2kcki4CAzn1ZN0YxxVWQQxpiphAkCo+FOWDG0IZF8PF8+Ug==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
hasBin: true
dependencies:
'@babel/core': 7.18.10
'@babel/parser': 7.18.11
'@ice/pkg-plugin-component': 1.0.0
- '@rollup/plugin-alias': 3.1.9_rollup@2.77.2
- '@rollup/plugin-commonjs': 21.1.0_rollup@2.77.2
- '@rollup/plugin-node-resolve': 13.3.0_rollup@2.77.2
+ '@rollup/plugin-alias': 3.1.9_rollup@2.77.3
+ '@rollup/plugin-commonjs': 21.1.0_rollup@2.77.3
+ '@rollup/plugin-node-resolve': 13.3.0_rollup@2.77.3
'@rollup/pluginutils': 4.2.1
'@swc/core': 1.2.210
acorn: 8.8.0
- autoprefixer: 10.4.8_postcss@8.4.14
- build-scripts: 2.0.0-18
+ autoprefixer: 10.4.8_postcss@8.4.16
+ build-scripts: 2.0.0-24
cac: 6.7.12
chokidar: 3.5.3
consola: 2.15.3
@@ -5366,9 +5327,9 @@ packages:
gzip-size: 7.0.0
magic-string: 0.25.9
picocolors: 1.0.0
- postcss: 8.4.14
- rollup: 2.77.2
- rollup-plugin-postcss: 4.0.2_postcss@8.4.14
+ postcss: 8.4.16
+ rollup: 2.77.3
+ rollup-plugin-postcss: 4.0.2_postcss@8.4.16
typescript: 4.7.4
transitivePeerDependencies:
- supports-color
@@ -5769,48 +5730,48 @@ packages:
react-dom: 18.2.0_react@18.2.0
dev: false
- /@rollup/plugin-alias/3.1.9_rollup@2.77.2:
+ /@rollup/plugin-alias/3.1.9_rollup@2.77.3:
resolution: {integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==}
engines: {node: '>=8.0.0'}
peerDependencies:
rollup: ^1.20.0||^2.0.0
dependencies:
- rollup: 2.77.2
+ rollup: 2.77.3
slash: 3.0.0
dev: true
- /@rollup/plugin-commonjs/21.1.0_rollup@2.77.2:
+ /@rollup/plugin-commonjs/21.1.0_rollup@2.77.3:
resolution: {integrity: sha512-6ZtHx3VHIp2ReNNDxHjuUml6ur+WcQ28N1yHgCQwsbNkQg2suhxGMDQGJOn/KuDxKtd1xuZP5xSTwBA4GQ8hbA==}
engines: {node: '>= 8.0.0'}
peerDependencies:
rollup: ^2.38.3
dependencies:
- '@rollup/pluginutils': 3.1.0_rollup@2.77.2
+ '@rollup/pluginutils': 3.1.0_rollup@2.77.3
commondir: 1.0.1
estree-walker: 2.0.2
glob: 7.2.3
is-reference: 1.2.1
magic-string: 0.25.9
resolve: 1.22.1
- rollup: 2.77.2
+ rollup: 2.77.3
dev: true
- /@rollup/plugin-node-resolve/13.3.0_rollup@2.77.2:
+ /@rollup/plugin-node-resolve/13.3.0_rollup@2.77.3:
resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==}
engines: {node: '>= 10.0.0'}
peerDependencies:
rollup: ^2.42.0
dependencies:
- '@rollup/pluginutils': 3.1.0_rollup@2.77.2
+ '@rollup/pluginutils': 3.1.0_rollup@2.77.3
'@types/resolve': 1.17.1
deepmerge: 4.2.2
is-builtin-module: 3.1.0
is-module: 1.0.0
resolve: 1.22.1
- rollup: 2.77.2
+ rollup: 2.77.3
dev: true
- /@rollup/pluginutils/3.1.0_rollup@2.77.2:
+ /@rollup/pluginutils/3.1.0_rollup@2.77.3:
resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==}
engines: {node: '>= 8.0.0'}
peerDependencies:
@@ -5819,7 +5780,7 @@ packages:
'@types/estree': 0.0.39
estree-walker: 1.0.1
picomatch: 2.3.1
- rollup: 2.77.2
+ rollup: 2.77.3
dev: true
/@rollup/pluginutils/4.2.1:
@@ -6591,14 +6552,14 @@ packages:
resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==}
dependencies:
'@types/history': 4.7.11
- '@types/react': 18.0.15
+ '@types/react': 18.0.17
'@types/react-router': 5.1.18
/@types/react-router/5.1.18:
resolution: {integrity: sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g==}
dependencies:
'@types/history': 4.7.11
- '@types/react': 18.0.15
+ '@types/react': 18.0.17
/@types/react/17.0.48:
resolution: {integrity: sha512-zJ6IYlJ8cYYxiJfUaZOQee4lh99mFihBoqkOSEGV+dFi9leROW6+PgstzQ+w3gWTnUfskALtQPGHK6dYmPj+2A==}
@@ -6620,7 +6581,6 @@ packages:
'@types/prop-types': 15.7.5
'@types/scheduler': 0.16.2
csstype: 3.1.0
- dev: true
/@types/react/18.0.8:
resolution: {integrity: sha512-+j2hk9BzCOrrOSJASi5XiOyBbERk9jG5O73Ya4M0env5Ixi6vUNli4qy994AINcEF+1IEHISYFfIT4zwr++LKw==}
@@ -7209,7 +7169,6 @@ packages:
engines: {node: '>=8'}
dependencies:
type-fest: 0.21.3
- dev: false
/ansi-html-community/0.0.8:
resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==}
@@ -7535,6 +7494,22 @@ packages:
postcss: 8.4.14
postcss-value-parser: 4.2.0
+ /autoprefixer/10.4.8_postcss@8.4.16:
+ resolution: {integrity: sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==}
+ engines: {node: ^10 || ^12 || >=14}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.1.0
+ dependencies:
+ browserslist: 4.21.3
+ caniuse-lite: 1.0.30001374
+ fraction.js: 4.2.0
+ normalize-range: 0.1.2
+ picocolors: 1.0.0
+ postcss: 8.4.16
+ postcss-value-parser: 4.2.0
+ dev: true
+
/available-typed-arrays/1.0.5:
resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
engines: {node: '>= 0.4'}
@@ -7837,14 +7812,13 @@ packages:
ieee754: 1.2.1
dev: true
- /build-scripts/2.0.0-18:
- resolution: {integrity: sha512-GN2V91DGV9ATUoa4dYLA+HBZnqRp/OlP7f0K5a9V9XSjVBTAi5ciJo27c+cTuOU9UU9q+lcjeYcqAT5rrmVx8g==}
+ /build-scripts/2.0.0-24:
+ resolution: {integrity: sha512-FoGyAZ+Xz3B51ui8mMnAtswVL7rxPjeA67ggzG08mDYK29XPdLdnS8rAI6cagxFiPjQ6o4BMzR2uFXcegxmBgA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dependencies:
camelcase: 5.3.1
commander: 2.20.3
consola: 2.15.3
- deepmerge: 4.2.2
esbuild: 0.14.54
fast-glob: 3.2.11
fs-extra: 8.1.0
@@ -7853,23 +7827,6 @@ packages:
npmlog: 4.1.2
picocolors: 1.0.0
semver: 7.3.7
- dev: true
-
- /build-scripts/2.0.0-23:
- resolution: {integrity: sha512-2hoh/Zhcjx1HuELEd3+tnuk8koN2aLgwZsXn2oJpGuAjf0IhsglzZKKyaVxFbkOstlKik0s4AA1tJsQTA4qVYA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- dependencies:
- camelcase: 5.3.1
- commander: 2.20.3
- consola: 2.15.3
- esbuild: 0.14.38
- fast-glob: 3.2.11
- fs-extra: 8.1.0
- json5: 2.2.1
- lodash: 4.17.21
- npmlog: 4.1.2
- picocolors: 1.0.0
- semver: 7.3.7
/builtin-modules/3.3.0:
resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
@@ -8173,6 +8130,22 @@ packages:
optionalDependencies:
'@colors/colors': 1.5.0
+ /cli-truncate/2.1.0:
+ resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==}
+ engines: {node: '>=8'}
+ dependencies:
+ slice-ansi: 3.0.0
+ string-width: 4.2.3
+ dev: true
+
+ /cli-truncate/3.1.0:
+ resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dependencies:
+ slice-ansi: 5.0.0
+ string-width: 5.1.2
+ dev: true
+
/cli-width/3.0.0:
resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==}
engines: {node: '>= 10'}
@@ -8256,6 +8229,10 @@ packages:
/colorette/2.0.16:
resolution: {integrity: sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==}
+ /colorette/2.0.19:
+ resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==}
+ dev: true
+
/combine-promises/1.1.0:
resolution: {integrity: sha512-ZI9jvcLDxqwaXEixOhArm3r7ReIivsXkpbyEWyeOhzz1QS0iSgBPnWvEqvIQtYyamGCYA88gFhmUrs9hrrQ0pg==}
engines: {node: '>=10'}
@@ -8294,6 +8271,11 @@ packages:
engines: {node: ^12.20.0 || >=14}
dev: false
+ /commander/9.4.0:
+ resolution: {integrity: sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==}
+ engines: {node: ^12.20.0 || >=14}
+ dev: true
+
/common-path-prefix/3.0.0:
resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==}
dev: false
@@ -8607,6 +8589,15 @@ packages:
dependencies:
postcss: 8.4.14
+ /css-declaration-sorter/6.3.0_postcss@8.4.16:
+ resolution: {integrity: sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og==}
+ engines: {node: ^10 || ^12 || >=14}
+ peerDependencies:
+ postcss: ^8.0.9
+ dependencies:
+ postcss: 8.4.16
+ dev: true
+
/css-functions-list/3.1.0:
resolution: {integrity: sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==}
engines: {node: '>=12.22'}
@@ -8846,6 +8837,44 @@ packages:
postcss-svgo: 5.1.0_postcss@8.4.14
postcss-unique-selectors: 5.1.1_postcss@8.4.14
+ /cssnano-preset-default/5.2.12_postcss@8.4.16:
+ resolution: {integrity: sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ css-declaration-sorter: 6.3.0_postcss@8.4.16
+ cssnano-utils: 3.1.0_postcss@8.4.16
+ postcss: 8.4.16
+ postcss-calc: 8.2.4_postcss@8.4.16
+ postcss-colormin: 5.3.0_postcss@8.4.16
+ postcss-convert-values: 5.1.2_postcss@8.4.16
+ postcss-discard-comments: 5.1.2_postcss@8.4.16
+ postcss-discard-duplicates: 5.1.0_postcss@8.4.16
+ postcss-discard-empty: 5.1.1_postcss@8.4.16
+ postcss-discard-overridden: 5.1.0_postcss@8.4.16
+ postcss-merge-longhand: 5.1.6_postcss@8.4.16
+ postcss-merge-rules: 5.1.2_postcss@8.4.16
+ postcss-minify-font-values: 5.1.0_postcss@8.4.16
+ postcss-minify-gradients: 5.1.1_postcss@8.4.16
+ postcss-minify-params: 5.1.3_postcss@8.4.16
+ postcss-minify-selectors: 5.2.1_postcss@8.4.16
+ postcss-normalize-charset: 5.1.0_postcss@8.4.16
+ postcss-normalize-display-values: 5.1.0_postcss@8.4.16
+ postcss-normalize-positions: 5.1.1_postcss@8.4.16
+ postcss-normalize-repeat-style: 5.1.1_postcss@8.4.16
+ postcss-normalize-string: 5.1.0_postcss@8.4.16
+ postcss-normalize-timing-functions: 5.1.0_postcss@8.4.16
+ postcss-normalize-unicode: 5.1.0_postcss@8.4.16
+ postcss-normalize-url: 5.1.0_postcss@8.4.16
+ postcss-normalize-whitespace: 5.1.1_postcss@8.4.16
+ postcss-ordered-values: 5.1.3_postcss@8.4.16
+ postcss-reduce-initial: 5.1.0_postcss@8.4.16
+ postcss-reduce-transforms: 5.1.0_postcss@8.4.16
+ postcss-svgo: 5.1.0_postcss@8.4.16
+ postcss-unique-selectors: 5.1.1_postcss@8.4.16
+ dev: true
+
/cssnano-preset-default/5.2.7_postcss@8.4.12:
resolution: {integrity: sha512-JiKP38ymZQK+zVKevphPzNSGHSlTI+AOwlasoSRtSVMUU285O7/6uZyd5NbW92ZHp41m0sSHe6JoZosakj63uA==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -8901,6 +8930,15 @@ packages:
dependencies:
postcss: 8.4.14
+ /cssnano-utils/3.1.0_postcss@8.4.16:
+ resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.16
+ dev: true
+
/cssnano/5.1.12_postcss@8.4.14:
resolution: {integrity: sha512-TgvArbEZu0lk/dvg2ja+B7kYoD7BBCmn3+k58xD0qjrGHsFzXY/wKTo9M5egcUCabPol05e/PVoIu79s2JN4WQ==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -8912,6 +8950,18 @@ packages:
postcss: 8.4.14
yaml: 1.10.2
+ /cssnano/5.1.12_postcss@8.4.16:
+ resolution: {integrity: sha512-TgvArbEZu0lk/dvg2ja+B7kYoD7BBCmn3+k58xD0qjrGHsFzXY/wKTo9M5egcUCabPol05e/PVoIu79s2JN4WQ==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ cssnano-preset-default: 5.2.12_postcss@8.4.16
+ lilconfig: 2.0.5
+ postcss: 8.4.16
+ yaml: 1.10.2
+ dev: true
+
/cssnano/5.1.7_postcss@8.4.12:
resolution: {integrity: sha512-pVsUV6LcTXif7lvKKW9ZrmX+rGRzxkEdJuVJcp5ftUjWITgwam5LMZOgaTvUrWPkcORBey6he7JKb4XAJvrpKg==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -9540,7 +9590,6 @@ packages:
cpu: [x64]
os: [android]
requiresBuild: true
- dev: true
optional: true
/esbuild-android-64/0.15.1:
@@ -9566,7 +9615,6 @@ packages:
cpu: [arm64]
os: [android]
requiresBuild: true
- dev: true
optional: true
/esbuild-android-arm64/0.15.1:
@@ -9592,7 +9640,6 @@ packages:
cpu: [x64]
os: [darwin]
requiresBuild: true
- dev: true
optional: true
/esbuild-darwin-64/0.15.1:
@@ -9618,7 +9665,6 @@ packages:
cpu: [arm64]
os: [darwin]
requiresBuild: true
- dev: true
optional: true
/esbuild-darwin-arm64/0.15.1:
@@ -9644,7 +9690,6 @@ packages:
cpu: [x64]
os: [freebsd]
requiresBuild: true
- dev: true
optional: true
/esbuild-freebsd-64/0.15.1:
@@ -9670,7 +9715,6 @@ packages:
cpu: [arm64]
os: [freebsd]
requiresBuild: true
- dev: true
optional: true
/esbuild-freebsd-arm64/0.15.1:
@@ -9696,7 +9740,6 @@ packages:
cpu: [ia32]
os: [linux]
requiresBuild: true
- dev: true
optional: true
/esbuild-linux-32/0.15.1:
@@ -9722,7 +9765,6 @@ packages:
cpu: [x64]
os: [linux]
requiresBuild: true
- dev: true
optional: true
/esbuild-linux-64/0.15.1:
@@ -9748,7 +9790,6 @@ packages:
cpu: [arm]
os: [linux]
requiresBuild: true
- dev: true
optional: true
/esbuild-linux-arm/0.15.1:
@@ -9774,7 +9815,6 @@ packages:
cpu: [arm64]
os: [linux]
requiresBuild: true
- dev: true
optional: true
/esbuild-linux-arm64/0.15.1:
@@ -9800,7 +9840,6 @@ packages:
cpu: [mips64el]
os: [linux]
requiresBuild: true
- dev: true
optional: true
/esbuild-linux-mips64le/0.15.1:
@@ -9826,7 +9865,6 @@ packages:
cpu: [ppc64]
os: [linux]
requiresBuild: true
- dev: true
optional: true
/esbuild-linux-ppc64le/0.15.1:
@@ -9852,7 +9890,6 @@ packages:
cpu: [riscv64]
os: [linux]
requiresBuild: true
- dev: true
optional: true
/esbuild-linux-riscv64/0.15.1:
@@ -9878,7 +9915,6 @@ packages:
cpu: [s390x]
os: [linux]
requiresBuild: true
- dev: true
optional: true
/esbuild-linux-s390x/0.15.1:
@@ -9904,7 +9940,6 @@ packages:
cpu: [x64]
os: [netbsd]
requiresBuild: true
- dev: true
optional: true
/esbuild-netbsd-64/0.15.1:
@@ -9936,7 +9971,6 @@ packages:
cpu: [x64]
os: [openbsd]
requiresBuild: true
- dev: true
optional: true
/esbuild-openbsd-64/0.15.1:
@@ -9978,7 +10012,6 @@ packages:
cpu: [x64]
os: [sunos]
requiresBuild: true
- dev: true
optional: true
/esbuild-sunos-64/0.15.1:
@@ -10004,7 +10037,6 @@ packages:
cpu: [ia32]
os: [win32]
requiresBuild: true
- dev: true
optional: true
/esbuild-windows-32/0.15.1:
@@ -10030,7 +10062,6 @@ packages:
cpu: [x64]
os: [win32]
requiresBuild: true
- dev: true
optional: true
/esbuild-windows-64/0.15.1:
@@ -10056,7 +10087,6 @@ packages:
cpu: [arm64]
os: [win32]
requiresBuild: true
- dev: true
optional: true
/esbuild-windows-arm64/0.15.1:
@@ -10122,7 +10152,6 @@ packages:
esbuild-windows-32: 0.14.54
esbuild-windows-64: 0.14.54
esbuild-windows-arm64: 0.14.54
- dev: true
/esbuild/0.15.1:
resolution: {integrity: sha512-zgxo2st9wSbdiR6rTo44l/L7ohttqdXFmhUi5tE6yWahgdBjCwZjBgIkm/gr/TcBTTIwyzd7em8WI37yZ+F2Mg==}
@@ -11765,13 +11794,13 @@ packages:
dependencies:
postcss: 8.4.12
- /icss-utils/5.1.0_postcss@8.4.14:
+ /icss-utils/5.1.0_postcss@8.4.16:
resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==}
engines: {node: ^10 || ^12 || >= 14}
peerDependencies:
postcss: ^8.1.0
dependencies:
- postcss: 8.4.14
+ postcss: 8.4.16
dev: true
/ieee754/1.2.1:
@@ -12036,6 +12065,11 @@ packages:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
engines: {node: '>=8'}
+ /is-fullwidth-code-point/4.0.0:
+ resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==}
+ engines: {node: '>=12'}
+ dev: true
+
/is-generator-function/1.0.10:
resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
engines: {node: '>= 0.4'}
@@ -12552,6 +12586,48 @@ packages:
/lines-and-columns/1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+ /lint-staged/13.0.3:
+ resolution: {integrity: sha512-9hmrwSCFroTSYLjflGI8Uk+GWAwMB4OlpU4bMJEAT5d/llQwtYKoim4bLOyLCuWFAhWEupE0vkIFqtw/WIsPug==}
+ engines: {node: ^14.13.1 || >=16.0.0}
+ hasBin: true
+ dependencies:
+ cli-truncate: 3.1.0
+ colorette: 2.0.19
+ commander: 9.4.0
+ debug: 4.3.4
+ execa: 6.1.0
+ lilconfig: 2.0.5
+ listr2: 4.0.5
+ micromatch: 4.0.5
+ normalize-path: 3.0.0
+ object-inspect: 1.12.2
+ pidtree: 0.6.0
+ string-argv: 0.3.1
+ yaml: 2.1.1
+ transitivePeerDependencies:
+ - enquirer
+ - supports-color
+ dev: true
+
+ /listr2/4.0.5:
+ resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ enquirer: '>= 2.3.0 < 3'
+ peerDependenciesMeta:
+ enquirer:
+ optional: true
+ dependencies:
+ cli-truncate: 2.1.0
+ colorette: 2.0.19
+ log-update: 4.0.0
+ p-map: 4.0.0
+ rfdc: 1.3.0
+ rxjs: 7.5.5
+ through: 2.3.8
+ wrap-ansi: 7.0.0
+ dev: true
+
/loader-runner/4.3.0:
resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==}
engines: {node: '>=6.11.5'}
@@ -12656,6 +12732,16 @@ packages:
is-unicode-supported: 0.1.0
dev: true
+ /log-update/4.0.0:
+ resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-escapes: 4.3.2
+ cli-cursor: 3.1.0
+ slice-ansi: 4.0.0
+ wrap-ansi: 6.2.0
+ dev: true
+
/loose-envify/1.4.0:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
@@ -13626,6 +13712,12 @@ packages:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
+ /pidtree/0.6.0:
+ resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
+ engines: {node: '>=0.10'}
+ hasBin: true
+ dev: true
+
/pify/4.0.1:
resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
engines: {node: '>=6'}
@@ -13686,6 +13778,16 @@ packages:
postcss-selector-parser: 6.0.10
postcss-value-parser: 4.2.0
+ /postcss-calc/8.2.4_postcss@8.4.16:
+ resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==}
+ peerDependencies:
+ postcss: ^8.2.2
+ dependencies:
+ postcss: 8.4.16
+ postcss-selector-parser: 6.0.10
+ postcss-value-parser: 4.2.0
+ dev: true
+
/postcss-clamp/4.1.0_postcss@8.4.12:
resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==}
engines: {node: '>=7.6.0'}
@@ -13751,6 +13853,19 @@ packages:
postcss: 8.4.14
postcss-value-parser: 4.2.0
+ /postcss-colormin/5.3.0_postcss@8.4.16:
+ resolution: {integrity: sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ browserslist: 4.20.3
+ caniuse-api: 3.0.0
+ colord: 2.9.2
+ postcss: 8.4.16
+ postcss-value-parser: 4.2.0
+ dev: true
+
/postcss-convert-values/5.1.0_postcss@8.4.12:
resolution: {integrity: sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -13771,6 +13886,17 @@ packages:
postcss: 8.4.14
postcss-value-parser: 4.2.0
+ /postcss-convert-values/5.1.2_postcss@8.4.16:
+ resolution: {integrity: sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ browserslist: 4.21.3
+ postcss: 8.4.16
+ postcss-value-parser: 4.2.0
+ dev: true
+
/postcss-custom-media/8.0.0_postcss@8.4.12:
resolution: {integrity: sha512-FvO2GzMUaTN0t1fBULDeIvxr5IvbDXcIatt6pnJghc736nqNgsGao5NT+5+WVLAQiTt6Cb3YUms0jiPaXhL//g==}
engines: {node: '>=10.0.0'}
@@ -13827,6 +13953,15 @@ packages:
dependencies:
postcss: 8.4.14
+ /postcss-discard-comments/5.1.2_postcss@8.4.16:
+ resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.16
+ dev: true
+
/postcss-discard-duplicates/5.1.0_postcss@8.4.12:
resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -13844,6 +13979,15 @@ packages:
dependencies:
postcss: 8.4.14
+ /postcss-discard-duplicates/5.1.0_postcss@8.4.16:
+ resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.16
+ dev: true
+
/postcss-discard-empty/5.1.1_postcss@8.4.12:
resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -13861,6 +14005,15 @@ packages:
dependencies:
postcss: 8.4.14
+ /postcss-discard-empty/5.1.1_postcss@8.4.16:
+ resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.16
+ dev: true
+
/postcss-discard-overridden/5.1.0_postcss@8.4.12:
resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -13878,7 +14031,16 @@ packages:
dependencies:
postcss: 8.4.14
- /postcss-discard-unused/5.1.0_postcss@8.4.14:
+ /postcss-discard-overridden/5.1.0_postcss@8.4.16:
+ resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.16
+ dev: true
+
+ /postcss-discard-unused/5.1.0_postcss@8.4.14:
resolution: {integrity: sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
@@ -13983,7 +14145,7 @@ packages:
postcss: 8.4.16
dev: true
- /postcss-load-config/3.1.4_postcss@8.4.14:
+ /postcss-load-config/3.1.4_postcss@8.4.16:
resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
engines: {node: '>= 10'}
peerDependencies:
@@ -13996,7 +14158,7 @@ packages:
optional: true
dependencies:
lilconfig: 2.0.5
- postcss: 8.4.14
+ postcss: 8.4.16
yaml: 1.10.2
dev: true
@@ -14080,6 +14242,17 @@ packages:
postcss-value-parser: 4.2.0
stylehacks: 5.1.0_postcss@8.4.14
+ /postcss-merge-longhand/5.1.6_postcss@8.4.16:
+ resolution: {integrity: sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.16
+ postcss-value-parser: 4.2.0
+ stylehacks: 5.1.0_postcss@8.4.16
+ dev: true
+
/postcss-merge-rules/5.1.1_postcss@8.4.12:
resolution: {integrity: sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -14105,6 +14278,19 @@ packages:
postcss: 8.4.14
postcss-selector-parser: 6.0.10
+ /postcss-merge-rules/5.1.2_postcss@8.4.16:
+ resolution: {integrity: sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ browserslist: 4.21.3
+ caniuse-api: 3.0.0
+ cssnano-utils: 3.1.0_postcss@8.4.16
+ postcss: 8.4.16
+ postcss-selector-parser: 6.0.10
+ dev: true
+
/postcss-minify-font-values/5.1.0_postcss@8.4.12:
resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -14124,6 +14310,16 @@ packages:
postcss: 8.4.14
postcss-value-parser: 4.2.0
+ /postcss-minify-font-values/5.1.0_postcss@8.4.16:
+ resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.16
+ postcss-value-parser: 4.2.0
+ dev: true
+
/postcss-minify-gradients/5.1.1_postcss@8.4.12:
resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -14147,6 +14343,18 @@ packages:
postcss: 8.4.14
postcss-value-parser: 4.2.0
+ /postcss-minify-gradients/5.1.1_postcss@8.4.16:
+ resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ colord: 2.9.2
+ cssnano-utils: 3.1.0_postcss@8.4.16
+ postcss: 8.4.16
+ postcss-value-parser: 4.2.0
+ dev: true
+
/postcss-minify-params/5.1.2_postcss@8.4.12:
resolution: {integrity: sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -14170,6 +14378,18 @@ packages:
postcss: 8.4.14
postcss-value-parser: 4.2.0
+ /postcss-minify-params/5.1.3_postcss@8.4.16:
+ resolution: {integrity: sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ browserslist: 4.21.3
+ cssnano-utils: 3.1.0_postcss@8.4.16
+ postcss: 8.4.16
+ postcss-value-parser: 4.2.0
+ dev: true
+
/postcss-minify-selectors/5.2.0_postcss@8.4.12:
resolution: {integrity: sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -14189,6 +14409,16 @@ packages:
postcss: 8.4.14
postcss-selector-parser: 6.0.10
+ /postcss-minify-selectors/5.2.1_postcss@8.4.16:
+ resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.16
+ postcss-selector-parser: 6.0.10
+ dev: true
+
/postcss-modules-extract-imports/3.0.0_postcss@8.4.12:
resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==}
engines: {node: ^10 || ^12 || >= 14}
@@ -14197,13 +14427,13 @@ packages:
dependencies:
postcss: 8.4.12
- /postcss-modules-extract-imports/3.0.0_postcss@8.4.14:
+ /postcss-modules-extract-imports/3.0.0_postcss@8.4.16:
resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==}
engines: {node: ^10 || ^12 || >= 14}
peerDependencies:
postcss: ^8.1.0
dependencies:
- postcss: 8.4.14
+ postcss: 8.4.16
dev: true
/postcss-modules-local-by-default/4.0.0_postcss@8.4.12:
@@ -14217,14 +14447,14 @@ packages:
postcss-selector-parser: 6.0.10
postcss-value-parser: 4.2.0
- /postcss-modules-local-by-default/4.0.0_postcss@8.4.14:
+ /postcss-modules-local-by-default/4.0.0_postcss@8.4.16:
resolution: {integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==}
engines: {node: ^10 || ^12 || >= 14}
peerDependencies:
postcss: ^8.1.0
dependencies:
- icss-utils: 5.1.0_postcss@8.4.14
- postcss: 8.4.14
+ icss-utils: 5.1.0_postcss@8.4.16
+ postcss: 8.4.16
postcss-selector-parser: 6.0.10
postcss-value-parser: 4.2.0
dev: true
@@ -14238,13 +14468,13 @@ packages:
postcss: 8.4.12
postcss-selector-parser: 6.0.10
- /postcss-modules-scope/3.0.0_postcss@8.4.14:
+ /postcss-modules-scope/3.0.0_postcss@8.4.16:
resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==}
engines: {node: ^10 || ^12 || >= 14}
peerDependencies:
postcss: ^8.1.0
dependencies:
- postcss: 8.4.14
+ postcss: 8.4.16
postcss-selector-parser: 6.0.10
dev: true
@@ -14257,14 +14487,14 @@ packages:
icss-utils: 5.1.0_postcss@8.4.12
postcss: 8.4.12
- /postcss-modules-values/4.0.0_postcss@8.4.14:
+ /postcss-modules-values/4.0.0_postcss@8.4.16:
resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==}
engines: {node: ^10 || ^12 || >= 14}
peerDependencies:
postcss: ^8.1.0
dependencies:
- icss-utils: 5.1.0_postcss@8.4.14
- postcss: 8.4.14
+ icss-utils: 5.1.0_postcss@8.4.16
+ postcss: 8.4.16
dev: true
/postcss-modules/4.3.1_postcss@8.4.12:
@@ -14283,7 +14513,7 @@ packages:
string-hash: 1.1.3
dev: true
- /postcss-modules/4.3.1_postcss@8.4.14:
+ /postcss-modules/4.3.1_postcss@8.4.16:
resolution: {integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==}
peerDependencies:
postcss: ^8.0.0
@@ -14291,11 +14521,11 @@ packages:
generic-names: 4.0.0
icss-replace-symbols: 1.1.0
lodash.camelcase: 4.3.0
- postcss: 8.4.14
- postcss-modules-extract-imports: 3.0.0_postcss@8.4.14
- postcss-modules-local-by-default: 4.0.0_postcss@8.4.14
- postcss-modules-scope: 3.0.0_postcss@8.4.14
- postcss-modules-values: 4.0.0_postcss@8.4.14
+ postcss: 8.4.16
+ postcss-modules-extract-imports: 3.0.0_postcss@8.4.16
+ postcss-modules-local-by-default: 4.0.0_postcss@8.4.16
+ postcss-modules-scope: 3.0.0_postcss@8.4.16
+ postcss-modules-values: 4.0.0_postcss@8.4.16
string-hash: 1.1.3
dev: true
@@ -14336,6 +14566,15 @@ packages:
dependencies:
postcss: 8.4.14
+ /postcss-normalize-charset/5.1.0_postcss@8.4.16:
+ resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.16
+ dev: true
+
/postcss-normalize-display-values/5.1.0_postcss@8.4.12:
resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -14355,6 +14594,16 @@ packages:
postcss: 8.4.14
postcss-value-parser: 4.2.0
+ /postcss-normalize-display-values/5.1.0_postcss@8.4.16:
+ resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.16
+ postcss-value-parser: 4.2.0
+ dev: true
+
/postcss-normalize-positions/5.1.0_postcss@8.4.12:
resolution: {integrity: sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -14374,6 +14623,16 @@ packages:
postcss: 8.4.14
postcss-value-parser: 4.2.0
+ /postcss-normalize-positions/5.1.1_postcss@8.4.16:
+ resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.16
+ postcss-value-parser: 4.2.0
+ dev: true
+
/postcss-normalize-repeat-style/5.1.0_postcss@8.4.12:
resolution: {integrity: sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -14393,6 +14652,16 @@ packages:
postcss: 8.4.14
postcss-value-parser: 4.2.0
+ /postcss-normalize-repeat-style/5.1.1_postcss@8.4.16:
+ resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.16
+ postcss-value-parser: 4.2.0
+ dev: true
+
/postcss-normalize-string/5.1.0_postcss@8.4.12:
resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -14412,6 +14681,16 @@ packages:
postcss: 8.4.14
postcss-value-parser: 4.2.0
+ /postcss-normalize-string/5.1.0_postcss@8.4.16:
+ resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.16
+ postcss-value-parser: 4.2.0
+ dev: true
+
/postcss-normalize-timing-functions/5.1.0_postcss@8.4.12:
resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -14431,6 +14710,16 @@ packages:
postcss: 8.4.14
postcss-value-parser: 4.2.0
+ /postcss-normalize-timing-functions/5.1.0_postcss@8.4.16:
+ resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.16
+ postcss-value-parser: 4.2.0
+ dev: true
+
/postcss-normalize-unicode/5.1.0_postcss@8.4.12:
resolution: {integrity: sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -14452,6 +14741,17 @@ packages:
postcss: 8.4.14
postcss-value-parser: 4.2.0
+ /postcss-normalize-unicode/5.1.0_postcss@8.4.16:
+ resolution: {integrity: sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ browserslist: 4.20.3
+ postcss: 8.4.16
+ postcss-value-parser: 4.2.0
+ dev: true
+
/postcss-normalize-url/5.1.0_postcss@8.4.12:
resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -14473,6 +14773,17 @@ packages:
postcss: 8.4.14
postcss-value-parser: 4.2.0
+ /postcss-normalize-url/5.1.0_postcss@8.4.16:
+ resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ normalize-url: 6.1.0
+ postcss: 8.4.16
+ postcss-value-parser: 4.2.0
+ dev: true
+
/postcss-normalize-whitespace/5.1.1_postcss@8.4.12:
resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -14492,6 +14803,16 @@ packages:
postcss: 8.4.14
postcss-value-parser: 4.2.0
+ /postcss-normalize-whitespace/5.1.1_postcss@8.4.16:
+ resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.16
+ postcss-value-parser: 4.2.0
+ dev: true
+
/postcss-opacity-percentage/1.1.2:
resolution: {integrity: sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==}
engines: {node: ^12 || ^14 || >=16}
@@ -14518,6 +14839,17 @@ packages:
postcss: 8.4.14
postcss-value-parser: 4.2.0
+ /postcss-ordered-values/5.1.3_postcss@8.4.16:
+ resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ cssnano-utils: 3.1.0_postcss@8.4.16
+ postcss: 8.4.16
+ postcss-value-parser: 4.2.0
+ dev: true
+
/postcss-overflow-shorthand/3.0.3_postcss@8.4.12:
resolution: {integrity: sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg==}
engines: {node: ^12 || ^14 || >=16}
@@ -14645,6 +14977,17 @@ packages:
caniuse-api: 3.0.0
postcss: 8.4.14
+ /postcss-reduce-initial/5.1.0_postcss@8.4.16:
+ resolution: {integrity: sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ browserslist: 4.20.3
+ caniuse-api: 3.0.0
+ postcss: 8.4.16
+ dev: true
+
/postcss-reduce-transforms/5.1.0_postcss@8.4.12:
resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -14664,6 +15007,16 @@ packages:
postcss: 8.4.14
postcss-value-parser: 4.2.0
+ /postcss-reduce-transforms/5.1.0_postcss@8.4.16:
+ resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.16
+ postcss-value-parser: 4.2.0
+ dev: true
+
/postcss-replace-overflow-wrap/4.0.0_postcss@8.4.12:
resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==}
peerDependencies:
@@ -14740,6 +15093,17 @@ packages:
postcss-value-parser: 4.2.0
svgo: 2.8.0
+ /postcss-svgo/5.1.0_postcss@8.4.16:
+ resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.16
+ postcss-value-parser: 4.2.0
+ svgo: 2.8.0
+ dev: true
+
/postcss-unique-selectors/5.1.1_postcss@8.4.12:
resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -14759,6 +15123,16 @@ packages:
postcss: 8.4.14
postcss-selector-parser: 6.0.10
+ /postcss-unique-selectors/5.1.1_postcss@8.4.16:
+ resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ postcss: 8.4.16
+ postcss-selector-parser: 6.0.10
+ dev: true
+
/postcss-value-parser/4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
@@ -16234,6 +16608,10 @@ packages:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+ /rfdc/1.3.0:
+ resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==}
+ dev: true
+
/rimraf/2.6.3:
resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==}
hasBin: true
@@ -16247,7 +16625,7 @@ packages:
dependencies:
glob: 7.2.3
- /rollup-plugin-postcss/4.0.2_postcss@8.4.14:
+ /rollup-plugin-postcss/4.0.2_postcss@8.4.16:
resolution: {integrity: sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==}
engines: {node: '>=10'}
peerDependencies:
@@ -16255,13 +16633,13 @@ packages:
dependencies:
chalk: 4.1.2
concat-with-sourcemaps: 1.1.0
- cssnano: 5.1.12_postcss@8.4.14
+ cssnano: 5.1.12_postcss@8.4.16
import-cwd: 3.0.0
p-queue: 6.6.2
pify: 5.0.0
- postcss: 8.4.14
- postcss-load-config: 3.1.4_postcss@8.4.14
- postcss-modules: 4.3.1_postcss@8.4.14
+ postcss: 8.4.16
+ postcss-load-config: 3.1.4_postcss@8.4.16
+ postcss-modules: 4.3.1_postcss@8.4.16
promise.series: 0.2.0
resolve: 1.22.1
rollup-pluginutils: 2.8.2
@@ -16277,14 +16655,6 @@ packages:
estree-walker: 0.6.1
dev: true
- /rollup/2.77.2:
- resolution: {integrity: sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g==}
- engines: {node: '>=10.0.0'}
- hasBin: true
- optionalDependencies:
- fsevents: 2.3.2
- dev: true
-
/rollup/2.77.3:
resolution: {integrity: sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==}
engines: {node: '>=10.0.0'}
@@ -16643,6 +17013,15 @@ packages:
resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
engines: {node: '>=12'}
+ /slice-ansi/3.0.0:
+ resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: 4.3.0
+ astral-regex: 2.0.0
+ is-fullwidth-code-point: 3.0.0
+ dev: true
+
/slice-ansi/4.0.0:
resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
engines: {node: '>=10'}
@@ -16652,6 +17031,14 @@ packages:
is-fullwidth-code-point: 3.0.0
dev: true
+ /slice-ansi/5.0.0:
+ resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ ansi-styles: 6.1.0
+ is-fullwidth-code-point: 4.0.0
+ dev: true
+
/sockjs/0.3.24:
resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==}
dependencies:
@@ -16815,6 +17202,11 @@ packages:
engines: {node: '>=10.0.0'}
dev: false
+ /string-argv/0.3.1:
+ resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==}
+ engines: {node: '>=0.6.19'}
+ dev: true
+
/string-convert/0.2.1:
resolution: {integrity: sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==}
dev: false
@@ -17009,6 +17401,17 @@ packages:
postcss: 8.4.14
postcss-selector-parser: 6.0.10
+ /stylehacks/5.1.0_postcss@8.4.16:
+ resolution: {integrity: sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+ dependencies:
+ browserslist: 4.20.3
+ postcss: 8.4.16
+ postcss-selector-parser: 6.0.10
+ dev: true
+
/stylelint-scss/4.3.0_stylelint@14.10.0:
resolution: {integrity: sha512-GvSaKCA3tipzZHoz+nNO7S02ZqOsdBzMiCx9poSmLlb3tdJlGddEX/8QzCOD8O7GQan9bjsvLMsO5xiw6IhhIQ==}
peerDependencies:
@@ -17589,7 +17992,6 @@ packages:
/type-fest/0.21.3:
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
engines: {node: '>=10'}
- dev: false
/type-fest/0.6.0:
resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
@@ -17778,29 +18180,8 @@ packages:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
engines: {node: '>= 0.8'}
- /unplugin/0.3.3_4upc34oiflw3lduyjvrzpjntau:
- resolution: {integrity: sha512-WjZWpUqqcYPQ/efR00Zm2m1+J1LitwoZ4uhHV4VdZ+IpW0Nh/qnDYtVf+nLhozXdGxslMPecOshVR7NiWFl4gA==}
- peerDependencies:
- esbuild: '>=0.13'
- rollup: ^2.50.0
- vite: ^2.3.0
- webpack: 4 || 5
- peerDependenciesMeta:
- esbuild:
- optional: true
- rollup:
- optional: true
- vite:
- optional: true
- webpack:
- optional: true
- dependencies:
- esbuild: 0.14.38
- webpack: 5.73.0_esbuild@0.14.38
- webpack-virtual-modules: 0.4.3
-
- /unplugin/0.8.1_4upc34oiflw3lduyjvrzpjntau:
- resolution: {integrity: sha512-o7rUZoPLG1fH4LKinWgb77gDtTE6mw/iry0Pq0Z5UPvZ9+HZ1/4+7fic7t58s8/CGkPrDpGq+RltO+DmswcR4g==}
+ /unplugin/0.9.5_4upc34oiflw3lduyjvrzpjntau:
+ resolution: {integrity: sha512-luraheyfxwtvkvHpsOvMNv7IjLdORTWKZp0gWYNHGLi2ImON3iIZOj464qEyyEwLA/EMt12fC415HW9zRpOfTg==}
peerDependencies:
esbuild: '>=0.13'
rollup: ^2.50.0
@@ -17822,7 +18203,6 @@ packages:
webpack: 5.73.0_esbuild@0.14.38
webpack-sources: 3.2.3
webpack-virtual-modules: 0.4.4
- dev: true
/unquote/1.1.1:
resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==}
@@ -18422,12 +18802,8 @@ packages:
resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
engines: {node: '>=10.13.0'}
- /webpack-virtual-modules/0.4.3:
- resolution: {integrity: sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==}
-
/webpack-virtual-modules/0.4.4:
resolution: {integrity: sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA==}
- dev: true
/webpack/5.72.1:
resolution: {integrity: sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==}
@@ -18774,6 +19150,15 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /wrap-ansi/6.2.0:
+ resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ dev: true
+
/wrap-ansi/7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
engines: {node: '>=10'}
@@ -18881,6 +19266,11 @@ packages:
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
engines: {node: '>= 6'}
+ /yaml/2.1.1:
+ resolution: {integrity: sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw==}
+ engines: {node: '>= 14'}
+ dev: true
+
/yargs-parser/20.2.9:
resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
engines: {node: '>=10'}
diff --git a/scripts/lintDiff.ts b/scripts/lintDiff.ts
deleted file mode 100644
index 5a5b1af99..000000000
--- a/scripts/lintDiff.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import { execSync } from 'child_process';
-import { ESLint } from 'eslint';
-import chalk from 'chalk';
-
-const GIT_DIFF = 'git diff --cached --diff-filter=ACMR --name-only';
-
-(async () => {
- const linter = new ESLint();
-
- // file level
- const fileList = execSync(GIT_DIFF).toString().split('\n');
- // ignore file which is not js/jsx/ts/tsx
- const lintFileList = (await Promise.all(fileList
- .map(async (file) => !!file && (/\.(j|t)sx?$/g.test(file) && !(await linter.isPathIgnored(file)) && file))))
- .filter(Boolean);
-
- if (!lintFileList.length) {
- console.log(chalk.green('no file should be lint.'));
- return;
- }
-
- console.log(chalk.green(lintFileList.join('\n')));
- console.log();
- console.log(chalk.green('above file should be lint.'));
- const lintResults = await linter.lintFiles(lintFileList);
- const Formatter = await linter.loadFormatter();
- console.log(Formatter.format(lintResults));
- const error = ESLint.getErrorResults(lintResults);
- if (error.length > 0) {
- process.exit(1);
- } else {
- console.log(chalk.green('lint successfully.'));
- }
-})().catch((error) => {
- console.trace(error);
- process.exit(1);
-});
\ No newline at end of file
diff --git a/tests/integration/basic-project.test.ts b/tests/integration/basic-project.test.ts
index 08103c36a..2063607ac 100644
--- a/tests/integration/basic-project.test.ts
+++ b/tests/integration/basic-project.test.ts
@@ -4,16 +4,15 @@ import * as fs from 'fs';
import { fileURLToPath } from 'url';
import { buildFixture, setupBrowser } from '../utils/build';
import { startFixture, setupStartBrowser } from '../utils/start';
-import { Page } from '../utils/browser';
+import Browser, { Page } from '../utils/browser';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
-const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));
const example = 'basic-project';
describe(`build ${example}`, () => {
- let page: Page = null;
- let browser = null;
+ let page: Page;
+ let browser: Browser;
test('open /', async () => {
await buildFixture(example);
@@ -43,14 +42,26 @@ describe(`build ${example}`, () => {
expect(stats.size).toBeLessThan(1024 * 14);
}, 120000);
+ test('disable splitChunks', async () => {
+ await buildFixture(example, {
+ config: 'splitChunks.config.mts'
+ });
+ const res = await setupBrowser({ example });
+ page = res.page;
+ browser = res.browser;
+
+ const files = fs.readdirSync(path.join(__dirname, `../../examples/${example}/build/js`), 'utf-8');
+ expect(files.length).toBe(7);
+ }, 120000);
+
afterAll(async () => {
await browser.close();
});
});
describe(`start ${example}`, () => {
- let page: Page = null;
- let browser = null;
+ let page: Page;
+ let browser: Browser;
test('setup devServer', async () => {
const { devServer, port } = await startFixture(example);
diff --git a/tests/integration/rax-project.test.ts b/tests/integration/rax-project.test.ts
index 44235811b..c6f871aef 100644
--- a/tests/integration/rax-project.test.ts
+++ b/tests/integration/rax-project.test.ts
@@ -17,7 +17,11 @@ describe(`build ${example}`, () => {
page = res.page;
browser = res.browser;
- expect(await page.$$text('div')).toStrictEqual(['']);
+ expect((await page.$$text('span')).length).toEqual(3);
+ expect((await page.$$text('span'))[0]).toStrictEqual('Welcome to Your Rax App');
+ expect((await page.$$text('span'))[1]).toStrictEqual('More information about Rax');
+ expect((await page.$$text('span'))[2]).toStrictEqual('Visit https://rax.js.org');
+ expect((await page.$$text('img')).length).toEqual(1);
expect(fs.existsSync(path.join(__dirname, `../../examples/${example}/build/js/data-loader.js`))).toBe(false);
}, 120000);
@@ -35,7 +39,12 @@ describe(`start ${example}`, () => {
const res = await setupStartBrowser({ server: devServer, port });
page = res.page;
browser = res.browser;
+ await page.waitForFunction(`document.getElementsByTagName('span').length > 0`);
+ expect((await page.$$text('span')).length).toEqual(3);
expect((await page.$$text('span'))[0]).toStrictEqual('Welcome to Your Rax App');
+ expect((await page.$$text('span'))[1]).toStrictEqual('More information about Rax');
+ expect((await page.$$text('span'))[2]).toStrictEqual('Visit https://rax.js.org');
+ expect((await page.$$text('img')).length).toEqual(1);
}, 120000);
afterAll(async () => {
diff --git a/tests/integration/single-router.test.ts b/tests/integration/single-router.test.ts
new file mode 100644
index 000000000..b882b425a
--- /dev/null
+++ b/tests/integration/single-router.test.ts
@@ -0,0 +1,32 @@
+import { expect, test, describe, afterAll } from 'vitest';
+import * as path from 'path';
+import * as fs from 'fs';
+import { buildFixture } from '../utils/build';
+
+const example = 'single-route';
+
+describe(`build ${example}`, () => {
+ let sizeWithOptimize = 0;
+ let sizeWithoutOptimize = 0;
+
+ test('optimize router', async () => {
+ await buildFixture(example, {
+ config: 'optimization.config.mts'
+ });
+ const dataLoaderPath = path.join(__dirname, `../../examples/${example}/build/js/framework.js`);
+ sizeWithOptimize = fs.statSync(dataLoaderPath).size;
+
+ }, 120000);
+
+ test('disable optimize router', async () => {
+ await buildFixture(example);
+ const dataLoaderPath = path.join(__dirname, `../../examples/${example}/build/js/framework.js`);
+ sizeWithoutOptimize = fs.statSync(dataLoaderPath).size;
+
+ }, 120000);
+
+ afterAll(async () => {
+ expect(sizeWithOptimize).toBeLessThan(sizeWithoutOptimize);
+ expect(sizeWithoutOptimize - sizeWithOptimize).toBeGreaterThan(6 * 1024) // reduce more than 6kb after minify
+ });
+});
diff --git a/tests/utils/browser.ts b/tests/utils/browser.ts
index f1f3a67f4..8b64cdc74 100644
--- a/tests/utils/browser.ts
+++ b/tests/utils/browser.ts
@@ -37,7 +37,7 @@ export default class Browser {
createServer(cwd: string, port: number) {
return http.createServer((req, res) => {
const requrl: string = req.url || '';
- const pathname = `${cwd}${url.parse(requrl).pathname}`;
+ const pathname = `${cwd}${url.parse(requrl).pathname}`.split(path.sep).join('/');
if (fse.existsSync(pathname)) {
switch (path.extname(pathname)) { // set HTTP HEAD
case '.html':
diff --git a/tests/utils/build.ts b/tests/utils/build.ts
index 1a003d196..d63d23966 100644
--- a/tests/utils/build.ts
+++ b/tests/utils/build.ts
@@ -22,10 +22,12 @@ interface ReturnValue {
}
// get builtIn plugins
-export const buildFixture = async function(example: string) {
+export const buildFixture = async function(example: string, commandArgs?: Record) {
const rootDir = path.join(__dirname, `../../examples/${example}`);
process.env.DISABLE_FS_CACHE = 'true';
- const service = await createService({ rootDir, command: 'build', commandArgs: {} });
+ const service = await createService({ rootDir, command: 'build', commandArgs: {
+ ...(commandArgs || {}),
+ } });
await service.run();
}
diff --git a/website/docs/guide/basic/config.md b/website/docs/guide/basic/config.md
index fe93f49e5..799592098 100644
--- a/website/docs/guide/basic/config.md
+++ b/website/docs/guide/basic/config.md
@@ -307,6 +307,13 @@ export default defineConfig({
- 类型:`boolean | string`
- 默认值:`development` 模式:默认为 'cheap-module-source-map',支持通过 `false` 关闭,不支持设置为其他枚举值。`production` 模式:默认 `false`。
+### splitChunks
+
+- 类型:`boolean`
+- 默认值:`true`
+
+默认会根据模块体积自动拆分 chunks,有可能会出现多个 bundle。如果不希望打包产物出现过多 bundle ,可设置成 `false`。
+
### syntaxFeatures
- 类型:`{ exportDefaultFrom: boolean; functionBind: boolean; }`