diff --git a/dev/app-main/src/components/constant.tsx b/dev/app-main/src/components/constant.tsx
index 92a9185af..ab86874e8 100644
--- a/dev/app-main/src/components/constant.tsx
+++ b/dev/app-main/src/components/constant.tsx
@@ -36,6 +36,16 @@ export const subAppMenus = [
{ path: 'react18/about', title: '关于' },
],
},
+ {
+ key: 'react19',
+ path: '/react19',
+ icon: ,
+ title: '【子应用】react19',
+ routes: [
+ { path: 'react19/home', title: '首页' },
+ { path: 'react19/about', title: '关于' },
+ ],
+ },
{
key: 'vue3',
path: '/vue3',
diff --git a/dev/app-main/src/constant.ts b/dev/app-main/src/constant.ts
index 87a4e0c85..9c1bfefa2 100644
--- a/dev/app-main/src/constant.ts
+++ b/dev/app-main/src/constant.ts
@@ -38,6 +38,11 @@ export const localApps: AppInfo = [
activeWhen: '/react18',
entry: getProxyHost('dev/react18'),
},
+ {
+ name: 'react19',
+ activeWhen: '/react19',
+ entry: getProxyHost('dev/react19'),
+ },
{
name: 'vue3',
activeWhen: '/vue3',
diff --git a/dev/app-react-19/.babelrc b/dev/app-react-19/.babelrc
new file mode 100644
index 000000000..3b6a9a63a
--- /dev/null
+++ b/dev/app-react-19/.babelrc
@@ -0,0 +1,33 @@
+{
+ "presets": [
+ "@babel/preset-env",
+ "@babel/preset-typescript",
+ [
+ "@babel/preset-react", {
+ "runtime": "automatic"
+ }
+ ]
+ ],
+ "plugins": [
+ "@babel/plugin-syntax-dynamic-import",
+ [
+ "@babel/plugin-transform-runtime",
+ {
+ "regenerator": true
+ }
+ ],
+ [
+ "@babel/plugin-proposal-decorators",
+ {
+ "legacy": true
+ }
+ ],
+ "@babel/plugin-proposal-class-properties",
+ [
+ "@babel/plugin-transform-react-jsx",
+ {
+ "runtime": "automatic"
+ }
+ ]
+ ]
+}
diff --git a/dev/app-react-19/LICENSE b/dev/app-react-19/LICENSE
new file mode 100644
index 000000000..c454bffe8
--- /dev/null
+++ b/dev/app-react-19/LICENSE
@@ -0,0 +1,48 @@
+MIT License
+
+Copyright (c) 2021 Bytedance Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+The code implementation modified from external library are:
+
+- single-spa
+
+ License (MIT)
+
+ Copyright (c) 2020 single-spa
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
diff --git a/dev/app-react-19/package.json b/dev/app-react-19/package.json
new file mode 100644
index 000000000..5f591ede5
--- /dev/null
+++ b/dev/app-react-19/package.json
@@ -0,0 +1,62 @@
+{
+ "name": "@garfish-dev/react19",
+ "private": true,
+ "dependencies": {
+ "@garfish/bridge-react-v19": "workspace:*",
+ "babel-runtime": "^6.26.0",
+ "history": "^5.1.0",
+ "react": "19.1.0",
+ "react-dom": "19.1.0",
+ "react-router-dom": "6.3.0",
+ "redux": "^4.1.2",
+ "typescript": "^4.1.2",
+ "web-vitals": "^1.1.2",
+ "mobx": "^6.3.6",
+ "@arco-design/web-react": "^2.28.1"
+ },
+ "browserslist": {
+ "production": [
+ ">0.2%",
+ "not dead",
+ "not op_mini all"
+ ],
+ "development": [
+ "last 1 chrome version",
+ "last 1 firefox version",
+ "last 1 safari version"
+ ]
+ },
+ "devDependencies": {
+ "@babel/core": "^7.13.15",
+ "@babel/plugin-proposal-class-properties": "^7.16.0",
+ "@babel/plugin-proposal-decorators": "^7.16.0",
+ "@babel/plugin-transform-react-jsx": "^7.16.0",
+ "@babel/plugin-transform-runtime": "^7.14.5",
+ "@babel/preset-env": "^7.13.15",
+ "@babel/preset-react": "^7.16.0",
+ "@babel/preset-typescript": "^7.14.5",
+ "@babel/register": "^7.13.14",
+ "@babel/runtime": "^7.14.6",
+ "babel-loader": "^8.1.0",
+ "babel-register": "^6.26.0",
+ "cross-env": "^7.0.3",
+ "css-loader": "^5.2.7",
+ "file-loader": "^6.2.0",
+ "html-webpack-plugin": "^5.3.1",
+ "less": "^3.13.1",
+ "less-loader": "^5.0.0",
+ "mini-css-extract-plugin": "^2.4.2",
+ "style-loader": "^2.0.0",
+ "url-loader": "^4.1.1",
+ "webpack": "^5.35.0",
+ "webpack-cli": "^4.6.0",
+ "webpack-dev-server": "^4.2.1",
+ "@uiw/react-md-editor": "3.9.0",
+ "@pmmmwh/react-refresh-webpack-plugin": "^0.5.4",
+ "react-refresh": "^0.11.0"
+ },
+ "scripts": {
+ "start": "cross-env NODE_ENV=development webpack-dev-server --hot",
+ "build": "cross-env NODE_ENV=production webpack --progress"
+ }
+}
diff --git a/dev/app-react-19/public/index.html b/dev/app-react-19/public/index.html
new file mode 100644
index 000000000..5f4d800c1
--- /dev/null
+++ b/dev/app-react-19/public/index.html
@@ -0,0 +1,10 @@
+
+
+
+
+ app react v19
+
+
+
+
+
diff --git a/dev/app-react-19/src/App.less b/dev/app-react-19/src/App.less
new file mode 100644
index 000000000..b07ef864c
--- /dev/null
+++ b/dev/app-react-19/src/App.less
@@ -0,0 +1,58 @@
+@import '../node_modules/@arco-design/web-react/dist/css/index.less';
+
+@prefix: sub-app-react16;
+
+.@{prefix}-layout-content {
+ .App {
+ text-align: center;
+ background-color: #282c34;
+ font-size: 18px;
+ overflow: hidden;
+ color: white;
+ }
+
+ .App-logo {
+ height: 200px;
+ pointer-events: none;
+ }
+
+ .App ul {
+ display: inline-block;
+ list-style: none;
+ }
+
+ .App li {
+ display: inline-block;
+ list-style: none;
+ padding: 10px;
+ }
+
+ .App a:visited {
+ color: #61dafb;
+ }
+
+ .App a.active {
+ color: #7fffd4;
+ }
+
+ @media (prefers-reduced-motion: no-preference) {
+ .App-logo {
+ animation: App-logo-spin infinite 20s linear;
+ }
+ }
+
+ .click-btn {
+ color: coral;
+ cursor: pointer;
+ margin-top: 6px;
+ }
+
+ @keyframes App-logo-spin {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ }
+ }
+}
diff --git a/dev/app-react-19/src/App.tsx b/dev/app-react-19/src/App.tsx
new file mode 100644
index 000000000..25bb7bb6d
--- /dev/null
+++ b/dev/app-react-19/src/App.tsx
@@ -0,0 +1,65 @@
+import { useEffect, useState, createContext } from 'react';
+import { NavLink, Outlet, useLocation } from 'react-router-dom';
+import { AppInfo } from '@garfish/bridge-react-v19';
+import { Layout } from '@arco-design/web-react';
+import logo from './logo.svg';
+import './App.less';
+
+export const SubAppContext = createContext({} as AppInfo);
+const Content = Layout.Content;
+
+export const prefixCls = 'sub-app-react19';
+
+const App = () => {
+ const location = useLocation();
+ const [isActive, setIsActive] = useState('home');
+
+ useEffect(() => {
+ setIsActive(location.pathname.includes('about') ? 'about' : 'home');
+ }, [location.pathname]);
+
+ return (
+
+ {(appInfo) => {
+ return (
+
+
+
+
+
+ Thank you for the React applications use garfish.
+ This is React19.
+
+
+ Edit src/App.js and save to reload.
+
+
+
+ setIsActive('home')}>
+
+ Home
+
+
+ setIsActive('about')}>
+
+ About
+
+
+
+
+
+
+
+ );
+ }}
+
+ );
+};
+
+export default App;
diff --git a/dev/app-react-19/src/ErrorBoundary.tsx b/dev/app-react-19/src/ErrorBoundary.tsx
new file mode 100644
index 000000000..63c4c6604
--- /dev/null
+++ b/dev/app-react-19/src/ErrorBoundary.tsx
@@ -0,0 +1,13 @@
+import { Result } from '@arco-design/web-react';
+
+const Error = () => {
+ return (
+
+ );
+};
+
+export default Error;
diff --git a/dev/app-react-19/src/PageNotFound.tsx b/dev/app-react-19/src/PageNotFound.tsx
new file mode 100644
index 000000000..dfb4fb008
--- /dev/null
+++ b/dev/app-react-19/src/PageNotFound.tsx
@@ -0,0 +1,8 @@
+import React from 'react';
+import { Result } from '@arco-design/web-react';
+
+const PageNotFound = () => {
+ return ;
+};
+
+export default PageNotFound;
diff --git a/dev/app-react-19/src/index.tsx b/dev/app-react-19/src/index.tsx
new file mode 100644
index 000000000..a69b3bb69
--- /dev/null
+++ b/dev/app-react-19/src/index.tsx
@@ -0,0 +1,38 @@
+import { createRoot } from 'react-dom/client';
+import { reactBridge } from '@garfish/bridge-react-v19';
+import RootComponent from './root';
+import ErrorBoundary from './ErrorBoundary';
+
+export const provider = reactBridge({
+ el: '#root', //mount node
+ rootComponent: RootComponent, // a class or stateless function component
+ errorBoundary: (e: any) => ,
+});
+
+// 在首次加载和执行时会触发该函数
+// export const provider = () => {
+// let root = null;
+// return {
+// render({ basename, dom, store, props }) {
+// const container = dom.querySelector('#root');
+// root = createRoot(container!);
+// (root as any).render( );
+// },
+// destroy({ dom }) {
+// (root as any).unmount();
+// },
+// };
+// };
+
+// 这能够让子应用独立运行起来,以保证后续子应用能脱离主应用独立运行,方便调试、开发
+if (!window.__GARFISH__) {
+ const container = document.getElementById('root');
+ const root = createRoot(container!);
+ root.render(
+ ,
+ );
+}
diff --git a/dev/app-react-19/src/logo.svg b/dev/app-react-19/src/logo.svg
new file mode 100644
index 000000000..6b60c1042
--- /dev/null
+++ b/dev/app-react-19/src/logo.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/dev/app-react-19/src/reportWebVitals.js b/dev/app-react-19/src/reportWebVitals.js
new file mode 100644
index 000000000..532f29b0b
--- /dev/null
+++ b/dev/app-react-19/src/reportWebVitals.js
@@ -0,0 +1,13 @@
+const reportWebVitals = (onPerfEntry) => {
+ if (onPerfEntry && onPerfEntry instanceof Function) {
+ import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
+ getCLS(onPerfEntry);
+ getFID(onPerfEntry);
+ getFCP(onPerfEntry);
+ getLCP(onPerfEntry);
+ getTTFB(onPerfEntry);
+ });
+ }
+};
+
+export default reportWebVitals;
diff --git a/dev/app-react-19/src/root.tsx b/dev/app-react-19/src/root.tsx
new file mode 100644
index 000000000..5278937f7
--- /dev/null
+++ b/dev/app-react-19/src/root.tsx
@@ -0,0 +1,30 @@
+import { ConfigProvider } from '@arco-design/web-react';
+import { BrowserRouter, Routes, Route } from 'react-router-dom';
+import App from './App';
+import PageNotFound from './PageNotFound';
+import './App.less';
+import { AppInfo } from '@garfish/bridge-react-v18';
+
+export const prefixCls = 'sub-app-react16';
+
+const Index = This is Home Page.
;
+const About = This is About Page.
;
+
+const RootComponent = (appInfo: AppInfo) => {
+ const routes = (
+
+ }>
+
+
+ } />
+
+
+ );
+ return (
+
+ {routes}
+
+ );
+};
+
+export default RootComponent;
diff --git a/dev/app-react-19/tsconfig.json b/dev/app-react-19/tsconfig.json
new file mode 100644
index 000000000..05ea63b1f
--- /dev/null
+++ b/dev/app-react-19/tsconfig.json
@@ -0,0 +1,41 @@
+{
+ "compilerOptions": {
+ "baseUrl": ".",
+ "outDir": "build",
+ "target": "esnext",
+ "module": "esnext",
+ "strict": true,
+ "lib": ["esnext", "dom", "dom.iterable", "scripthost"],
+ "experimentalDecorators": true,
+ "sourceMap": true,
+ "allowJs": false,
+ "jsx": "react-jsx",
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "forceConsistentCasingInFileNames": true,
+ "noImplicitReturns": true,
+ "noImplicitThis": true,
+ "noImplicitAny": false,
+ "strictNullChecks": true,
+ "suppressImplicitAnyIndexErrors": true,
+ "esModuleInterop": true,
+ "skipLibCheck": true,
+ "skipDefaultLibCheck": true,
+ "isolatedModules": false,
+ "noUnusedLocals": true,
+ "plugins": [
+ {
+ "name": "typescript-styled-plugin"
+ }
+ ]
+ },
+ "exclude": ["node_modules"],
+ "include": [
+ "src/**/*.ts",
+ "src/**/*.tsx",
+ "./typings.d.ts"
+ ],
+ "paths": {
+ "@/*": ["src/*"]
+ }
+}
diff --git a/dev/app-react-19/typings.d.ts b/dev/app-react-19/typings.d.ts
new file mode 100644
index 000000000..4391afcdc
--- /dev/null
+++ b/dev/app-react-19/typings.d.ts
@@ -0,0 +1,15 @@
+declare interface Window {
+ Garfish: any;
+ __GARFISH__: any;
+}
+
+declare module '*.css';
+declare module '*.less';
+declare module '*.png';
+declare module '*.svg' {
+ export function ReactComponent(
+ props: React.SVGProps,
+ ): React.ReactElement;
+ const url: string;
+ export default url;
+}
diff --git a/dev/app-react-19/webpack.config.babel.js b/dev/app-react-19/webpack.config.babel.js
new file mode 100644
index 000000000..1039ecb27
--- /dev/null
+++ b/dev/app-react-19/webpack.config.babel.js
@@ -0,0 +1 @@
+module.exports = require('./webpack.config.js');
diff --git a/dev/app-react-19/webpack.config.js b/dev/app-react-19/webpack.config.js
new file mode 100644
index 000000000..fe695667f
--- /dev/null
+++ b/dev/app-react-19/webpack.config.js
@@ -0,0 +1,99 @@
+import { DefinePlugin } from 'webpack';
+import HtmlWebpackPlugin from 'html-webpack-plugin';
+import { getPublicPath, isDevelopment, getPort } from '../util';
+const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');
+const appName = 'dev/react19';
+
+const webpackConfig = {
+ devtool: isDevelopment ? 'source-map' : false,
+ entry: {
+ main: './src/index.tsx',
+ },
+ output: {
+ // 开发环境设置 true 将会导致热更新失效
+ clean: isDevelopment ? false : true,
+ filename: '[name].[contenthash].js',
+ chunkFilename: '[name].[contenthash].js',
+ // 需要配置成 umd 规范
+ libraryTarget: 'umd',
+ // 修改不规范的代码格式,避免逃逸沙箱
+ globalObject: 'window',
+ // webpack5 此参数不是必须,webpack5 将会直接使用 package.json name 作为唯一值,请确保应用间的 name 各不相同
+ // 若为 webpack4,此处应将 chunkLoadingGlobal 改为 jsonpFunction, 并确保每个子应用该值都不相同,否则可能出现 webpack chunk 互相影响的可能
+ chunkLoadingGlobal: 'Garfish-demo-react19',
+ // 保证子应用的资源路径变为绝对路径,避免子应用的相对资源在变为主应用上的相对资源,因为子应用和主应用在同一个文档流,相对路径是相对于主应用而言的
+ publicPath: getPublicPath(appName),
+ },
+ node: false, // 避免 global 逃逸
+ resolve: {
+ extensions: ['.tsx', '.ts', '.js', '.json'],
+ },
+ module: {
+ rules: [
+ {
+ test: /\.(j|t)sx?$/,
+ exclude: /node_modules/,
+ loader: 'babel-loader',
+ options: {
+ presets: [
+ '@babel/preset-typescript',
+ '@babel/preset-react',
+ '@babel/preset-env',
+ ],
+ },
+ },
+ {
+ test: /\.css$|\.less$/,
+ use: [
+ {
+ loader: 'style-loader', // creates style nodes from JS strings
+ },
+ {
+ loader: 'css-loader', // translates CSS into CommonJS
+ },
+ {
+ loader: 'less-loader',
+ options: { javascriptEnabled: true },
+ },
+ ],
+ },
+ {
+ test: /\.(svg|png|jpg|gif|svg)$/,
+ loader: 'url-loader',
+ options: {
+ name: '[name].[ext]?[hash]',
+ },
+ },
+ {
+ test: /\.woff|woff2|eot|ttf$/,
+ use: [
+ {
+ loader: 'url-loader',
+ options: {
+ limit: 100000,
+ },
+ },
+ ],
+ },
+ ],
+ },
+ devServer: {
+ hot: true,
+ // open: true,
+ historyApiFallback: true,
+ port: getPort(appName),
+ headers: {
+ 'Access-Control-Allow-Origin': '*',
+ },
+ allowedHosts: 'all',
+ },
+ plugins: [
+ new HtmlWebpackPlugin({
+ template: './public/index.html',
+ }),
+ new DefinePlugin({
+ 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
+ }),
+ ].concat(isDevelopment ? [new ReactRefreshWebpackPlugin()] : []),
+};
+export default webpackConfig;
diff --git a/dev/config.json b/dev/config.json
index a3b82b1a2..453848a60 100644
--- a/dev/config.json
+++ b/dev/config.json
@@ -2,7 +2,7 @@
"dev/main": {
"pkgName": "@garfish-dev/main",
"port": 8090
- },
+ },
"dev/react17": {
"pkgName": "@garfish-dev/react17",
"port": 8091
@@ -10,20 +10,24 @@
"dev/react16": {
"pkgName": "@garfish-dev/react16",
"port": 8092
- },
- "dev/react18": {
+ },
+ "dev/react18": {
"pkgName": "@garfish-dev/react18",
"port": 8098
- },
+ },
+ "dev/react19": {
+ "pkgName": "@garfish-dev/react19",
+ "port": 8100
+ },
"dev/vue3": {
"pkgName": "@garfish-dev/vue3",
"port": 8093
- },
+ },
"dev/vue2": {
"pkgName": "@garfish-dev/vue2",
"port": 8094
- },
- "dev/vite": {
+ },
+ "dev/vite": {
"pkgName": "@garfish-dev/vite",
"port": 8095
},
diff --git a/packages/bridge-react-v19/LICENSE b/packages/bridge-react-v19/LICENSE
new file mode 100644
index 000000000..604da0823
--- /dev/null
+++ b/packages/bridge-react-v19/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2021 Bytedance Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/packages/bridge-react-v19/README.md b/packages/bridge-react-v19/README.md
new file mode 100644
index 000000000..9a0a2ada5
--- /dev/null
+++ b/packages/bridge-react-v19/README.md
@@ -0,0 +1,27 @@
+# `@garfish/bridge-react-v19`
+
+[](https://www.npmjs.com/package/@garfish/bridge-react-v19)
+
+## Usage
+
+```jsx
+// child app
+import { reactBridge } from '@garfish/bridge-react-v19';
+
+function App() {
+ return content
;
+}
+
+export const provider = reactBridge({
+ el: '#root',
+ rootComponent: App,
+});
+```
+
+## Contributing
+
+- [Contributing Guide](https://github.com/modern-js-dev/garfish/blob/main/CONTRIBUTING.md)
+
+## Credit
+
+- [single-spa](https://github.com/single-spa/single-spa) for community raised a hot wave of micro front-end solutions, and we refer to the implementation of the bridge part in [single-spa](https://github.com/single-spa/single-spa) and we think it is a good design, so we fork the code of the bridge implementation part and make some adjustments for the lifecycles in Garfish.
diff --git a/packages/bridge-react-v19/__tests__/reactBridge.spec.ts b/packages/bridge-react-v19/__tests__/reactBridge.spec.ts
new file mode 100644
index 000000000..7ba0cb750
--- /dev/null
+++ b/packages/bridge-react-v19/__tests__/reactBridge.spec.ts
@@ -0,0 +1,313 @@
+// The logic of vue-bridge-test is referenced from single-spa typography
+// Because the Garfish lifecycle does not agree with that of single-spa part logical coupling in the framework
+// https://github.com/single-spa/single-spa-vue/blob/main/src/single-spa-vue.test.js
+
+import { reactBridge } from '../src/reactBridge';
+import '@testing-library/jest-dom';
+import assert from 'assert';
+
+const domElId = '#sub-app-container';
+const cssSelector = '#app';
+
+describe('react-bridge', () => {
+ let React,
+ createRoot,
+ hydrateRoot,
+ props,
+ appInfo,
+ appContainer,
+ container,
+ rootComponent,
+ loadRootComponent,
+ $el,
+ rootInstanceMock,
+ hydrateRootInstanceMock,
+ $createElement,
+ $render,
+ $unmount,
+ errorBoundary;
+
+ beforeEach(() => {
+ React = {
+ createElement: $createElement,
+ version: '19.1.0',
+ };
+
+ createRoot = jest.fn();
+ rootInstanceMock = jest.fn();
+ rootInstanceMock.render = $render;
+ rootInstanceMock.unmount = $unmount;
+ createRoot.mockReturnValue(rootInstanceMock);
+
+ hydrateRoot = jest.fn();
+ hydrateRootInstanceMock = jest.fn();
+ hydrateRootInstanceMock.render = $render;
+ hydrateRootInstanceMock.unmount = $unmount;
+ hydrateRoot.mockReturnValue(hydrateRootInstanceMock);
+
+ container = document.createElement('div');
+ container.setAttribute('id', domElId.replace('#', ''));
+ document.body.appendChild(container);
+
+ appContainer = document.createElement('div');
+ container.setAttribute('id', cssSelector.replace('#', ''));
+ container.appendChild(appContainer);
+
+ $el = '#app2';
+
+ appInfo = {
+ appName: 'test-app',
+ basename: '/demo',
+ dom: container,
+ };
+ props = {
+ store: { counter: 100 },
+ };
+
+ $createElement = jest.fn();
+ $render = jest.fn();
+ $unmount = jest.fn();
+ rootComponent = jest.fn();
+ loadRootComponent = jest.fn();
+ errorBoundary = jest.fn();
+ });
+
+ afterEach(() => {
+ document.querySelectorAll(cssSelector).forEach((node) => {
+ node.remove();
+ });
+ });
+
+ it('throws an error when required parameters are not provided', () => {
+ expect(() => reactBridge(null as any)).toThrow();
+ expect(() => reactBridge({} as any)).toThrow();
+ expect(() => reactBridge({ el: $el } as any)).toThrow();
+ expect(() => reactBridge({ createRoot } as any)).toThrow();
+ expect(() => reactBridge({ loadRootComponent })).not.toThrow();
+ expect(() => reactBridge({ rootComponent })).not.toThrow();
+ expect(() => reactBridge({ el: $el, rootComponent })).not.toThrow();
+ expect(() => reactBridge({ createRoot, rootComponent })).not.toThrow();
+ expect(() => reactBridge({ hydrateRoot, rootComponent })).not.toThrow();
+
+ expect(() =>
+ reactBridge({
+ createRoot,
+ hydrateRoot,
+ el: $el,
+ rootComponent,
+ }),
+ ).not.toThrow();
+
+ expect(() =>
+ reactBridge({
+ createRoot,
+ hydrateRoot,
+ el: $el,
+ loadRootComponent,
+ errorBoundary,
+ }),
+ ).not.toThrow();
+ });
+
+ it('throws an error when react version is lower then react v18', async () => {
+ expect(() =>
+ reactBridge({
+ React: {
+ ...React,
+ version: '15.2.0',
+ },
+ createRoot,
+ rootComponent,
+ }),
+ ).toThrow();
+ });
+
+ it('throws an error when opts.el is provided and opts.el.dom does not exist in the dom during mount', async () => {
+ const provider = reactBridge({
+ React,
+ createRoot,
+ el: '#invalid_app',
+ rootComponent,
+ });
+
+ const lifeCycles = await provider(appInfo, props);
+ expect(() => lifeCycles.render({ ...appInfo, props })).toThrow();
+ });
+
+ it('throws an error when opts.errorBoundary is provided and the type is not function', async () => {
+ expect(() =>
+ reactBridge({
+ React,
+ createRoot,
+ loadRootComponent,
+ errorBoundary: {} as any,
+ }),
+ ).toThrow();
+ });
+
+ it('function called when mounts and unmounts a React component', async () => {
+ const provider = reactBridge({
+ React,
+ createRoot,
+ rootComponent,
+ });
+
+ const lifeCycles = await provider(appInfo, props);
+ expect(createRoot).not.toHaveBeenCalled();
+
+ lifeCycles.render({ ...appInfo, props });
+ expect(createRoot).toHaveBeenCalled();
+ expect(rootInstanceMock.render).toHaveBeenCalled();
+ expect(rootInstanceMock.unmount).not.toHaveBeenCalled();
+
+ lifeCycles.destroy({ ...appInfo, props });
+ expect(rootInstanceMock.unmount).toHaveBeenCalled();
+ });
+
+ // eslint-disable-next-line quotes
+ it("mounts and unmounts a React component with a 'renderType' of 'hydrate'", async () => {
+ const provider = reactBridge({
+ React,
+ createRoot,
+ hydrateRoot,
+ rootComponent,
+ renderType: 'hydrate',
+ });
+
+ const lifeCycles = await provider(appInfo, props);
+ expect(hydrateRoot).not.toHaveBeenCalled();
+
+ lifeCycles.render({ ...appInfo, props });
+ expect(hydrateRoot).toHaveBeenCalled();
+
+ expect(hydrateRootInstanceMock.render).toHaveBeenCalled();
+ expect(hydrateRootInstanceMock.unmount).not.toHaveBeenCalled();
+
+ lifeCycles.destroy({ ...appInfo, props });
+ expect(hydrateRootInstanceMock.unmount).toHaveBeenCalled();
+ });
+
+ it('implements a render function for you if you provide loadRootComponent', async () => {
+ const opts = {
+ React,
+ createRoot,
+ loadRootComponent,
+ };
+
+ opts.loadRootComponent.mockReturnValue(Promise.resolve({}));
+
+ const provider = reactBridge(opts);
+ const lifeCycles = await provider(appInfo, props);
+ lifeCycles.render({ ...appInfo, props });
+ expect(opts.loadRootComponent).toHaveBeenCalled();
+ });
+
+ it('loadRootComponent function will recieve the props provided at mount', async () => {
+ const opts = {
+ React,
+ createRoot,
+ loadRootComponent,
+ };
+ opts.loadRootComponent.mockReturnValue(Promise.resolve({}));
+
+ const provider = reactBridge({
+ React,
+ createRoot,
+ loadRootComponent,
+ });
+
+ const lifeCycles = await provider(appInfo, props);
+ lifeCycles.render({ ...appInfo, props });
+ expect(loadRootComponent.mock.calls[0][0]).toEqual({ ...appInfo, props });
+ expect(loadRootComponent.mock.calls[0][0].appName).toBe('test-app');
+ expect(loadRootComponent.mock.calls[0][0].props.store.counter).toBe(100);
+
+ lifeCycles.destroy({ ...appInfo, props });
+ });
+
+ describe('opts.el', () => {
+ // eslint-disable-next-line quotes
+ it("mounts into the div you provided in the opts.el if you provide an 'el' in opts", async () => {
+ const opts = {
+ React,
+ createRoot,
+ rootComponent,
+ el: '#test_el',
+ };
+ const $testEl = document.createElement('div');
+ $testEl.setAttribute('id', 'test_el');
+ container.appendChild($testEl);
+
+ const provider = reactBridge(opts);
+ const lifeCycles = await provider(appInfo, props);
+
+ lifeCycles.render({ ...appInfo, props });
+ expect(React.createElement).toHaveBeenCalled();
+ expect(document.getElementById('test_el')).toBeInTheDocument();
+ expect(document.getElementById('test_el')).not.toBeNull;
+
+ assert(document.getElementById('test_el'));
+ expect(document.getElementById('test_el')).not.toBeNull;
+ expect(document.getElementById('test_el')?.children).not.toBeNull;
+ expect(document.getElementById('app')).toBeNull;
+ });
+
+ // eslint-disable-next-line quotes
+ it("mounts into the garfish-react-bridge div if you don't provide an 'el' in opts", async () => {
+ const opts = {
+ React,
+ createRoot,
+ rootComponent,
+ };
+
+ const provider = reactBridge(opts);
+ const lifeCycles = await provider(appInfo, props);
+
+ lifeCycles.render({ ...appInfo, props });
+ expect(React.createElement).toHaveBeenCalled();
+
+ assert(document.getElementById('app'));
+ expect(document.getElementById('app')).not.toBeNull;
+ expect(document.getElementById('app')?.children).not.toBeNull;
+ });
+
+ it('register sync provider', async () => {
+ const opts = {
+ React,
+ createRoot,
+ rootComponent,
+ };
+
+ window.__GARFISH__ = true;
+ window.__GARFISH_EXPORTS__ = {
+ provider: null,
+ } as any;
+
+ reactBridge(opts);
+
+ expect(window.__GARFISH_EXPORTS__.provider).toBeTruthy();
+ });
+
+ it('register async provider', async () => {
+ const opts = {
+ React,
+ createRoot,
+ rootComponent,
+ };
+ let asyncProvider: any;
+
+ window.__GARFISH__ = true;
+ window.__GARFISH_EXPORTS__ = {
+ provider: null,
+ registerProvider(fn: any) {
+ asyncProvider = fn;
+ },
+ } as any;
+
+ reactBridge(opts);
+
+ expect(asyncProvider).toBeTruthy();
+ expect(window.__GARFISH_EXPORTS__.provider).toBe(null);
+ });
+ });
+});
diff --git a/packages/bridge-react-v19/package.json b/packages/bridge-react-v19/package.json
new file mode 100644
index 000000000..1b92478ed
--- /dev/null
+++ b/packages/bridge-react-v19/package.json
@@ -0,0 +1,53 @@
+{
+ "name": "@garfish/bridge-react-v19",
+ "version": "0.0.1",
+ "description": "garfish bridge for react v19",
+ "keywords": [
+ "garfish",
+ "micro frontend"
+ ],
+ "files": [
+ "dist"
+ ],
+ "author": "rain120 <1085131904@qq.com>",
+ "homepage": "https://github.com/bytedance/garfish",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/bytedance/garfish.git"
+ },
+ "bugs": {
+ "url": "https://github.com/bytedance/garfish/issues"
+ },
+ "exports": {
+ ".": {
+ "types": "./dist/index.d.ts",
+ "import": "./dist/esm/index.js",
+ "require": "./dist/index.js"
+ },
+ "./*": "./*"
+ },
+ "main": "dist/index.js",
+ "module": "dist/esm/index.js",
+ "types": "dist/index.d.ts",
+ "scripts": {
+ "build": "rimraf dist && tsup src/index.ts",
+ "dev": "cross-env WATCH=true tsup src/index.ts"
+ },
+ "dependencies": {
+ "@garfish/utils": "workspace:*"
+ },
+ "devDependencies": {
+ "react": "19.1.0",
+ "react-dom": "19.1.0"
+ },
+ "peerDependencies": {
+ "react": "=19",
+ "react-dom": "=19"
+ },
+ "publishConfig": {
+ "registry": "https://registry.npmjs.org",
+ "access": "public"
+ },
+ "gitHead": "da33dd16bb9e99588f34079f8b961d0cf9f059fc"
+}
diff --git a/packages/bridge-react-v19/src/index.ts b/packages/bridge-react-v19/src/index.ts
new file mode 100644
index 000000000..3fc9ad40f
--- /dev/null
+++ b/packages/bridge-react-v19/src/index.ts
@@ -0,0 +1,2 @@
+export { reactBridge } from './reactBridge';
+export type { AppInfo } from './types';
diff --git a/packages/bridge-react-v19/src/reactBridge.ts b/packages/bridge-react-v19/src/reactBridge.ts
new file mode 100644
index 000000000..a06eaa4cb
--- /dev/null
+++ b/packages/bridge-react-v19/src/reactBridge.ts
@@ -0,0 +1,306 @@
+// The logic of reactBridge is referenced from single-spa typography
+// Because the Garfish lifecycle does not agree with that of single-spa part logical coupling in the framework
+// https://github.com/single-spa/single-spa-react/blob/main/src/single-spa-react.js
+
+import * as React from 'react';
+import { createRoot, hydrateRoot, Root } from 'react-dom/client';
+import type { UserOptions, PropsInfo } from './types';
+import { warn } from '@garfish/utils';
+
+type typeReact = typeof React;
+
+type Options = UserOptions<
+ typeof React,
+ typeof createRoot,
+ typeof hydrateRoot,
+ Root,
+ any,
+ React.ReactNode
+>;
+
+const defaultOpts = {
+ // required - one or the other or both
+ rootComponent: undefined,
+ loadRootComponent: undefined,
+
+ // optional opts
+ renderType: undefined,
+ errorBoundary: undefined,
+ el: undefined,
+ canUpdate: true, // by default, allow parcels created with garfish-react-bridge to be updated
+ suppressComponentDidCatchWarning: false,
+ domElements: {},
+ renderResults: {},
+ updateResolves: {},
+};
+
+declare const __GARFISH_EXPORTS__: {
+ provider: Object;
+ registerProvider?: (provider: any) => void;
+};
+
+declare global {
+ interface Window {
+ __GARFISH__: boolean;
+ }
+}
+
+export function reactBridge(this: any, userOpts: Options) {
+ if (typeof userOpts !== 'object') {
+ throw new Error('garfish-react-bridge requires a configuration object');
+ }
+
+ const opts: Options = {
+ ...defaultOpts,
+ ...userOpts,
+ };
+
+ opts.React = opts.React || React;
+ opts.createRoot = opts.createRoot || createRoot;
+ opts.hydrateRoot = opts.hydrateRoot || hydrateRoot;
+
+ if (!opts.rootComponent && !opts.loadRootComponent) {
+ throw new Error(
+ 'garfish-react-bridge must be passed opts.rootComponent or opts.loadRootComponent',
+ );
+ }
+
+ if (opts.errorBoundary && typeof opts.errorBoundary !== 'function') {
+ throw Error(
+ 'The errorBoundary opt for garfish-react-bridge must either be omitted or be a function that returns React elements',
+ );
+ }
+ if (!atLeastReact19(opts.React)) {
+ throw Error(
+ 'Please make sure than the react version is higher than or equal to v19.',
+ );
+ }
+
+ const providerLifeCycle = {
+ render: (appInfo: PropsInfo) => mount.call(this, opts, appInfo),
+ destroy: (appInfo: PropsInfo) => unmount.call(this, opts, appInfo),
+ // update: (appInfo: PropsInfo) =>
+ // opts.canUpdate && update.call(this, opts, appInfo),
+ };
+
+ const provider = async function (this: any, appInfo, props) {
+ await bootstrap.call(this, opts, appInfo, props);
+ return providerLifeCycle;
+ };
+
+ if (
+ window.__GARFISH__ &&
+ typeof __GARFISH_EXPORTS__ === 'object' &&
+ __GARFISH_EXPORTS__
+ ) {
+ if (__GARFISH_EXPORTS__.registerProvider) {
+ __GARFISH_EXPORTS__.registerProvider(provider);
+ } else {
+ __GARFISH_EXPORTS__.provider = provider;
+ }
+ }
+ return provider;
+}
+
+function bootstrap(opts: Options, appInfo, props) {
+ if (opts.loadRootComponent) {
+ // They passed a promise that resolves with the react component. Wait for it to resolve before mounting
+ return opts
+ .loadRootComponent({
+ ...appInfo,
+ props,
+ })
+ .then((resolvedComponent) => {
+ opts.rootComponent = resolvedComponent;
+ });
+ } else {
+ // This is a class or stateless function component
+ return Promise.resolve();
+ }
+}
+
+function mount(opts: Options, appInfo: PropsInfo) {
+ if (
+ !opts.suppressComponentDidCatchWarning &&
+ atLeastReact18(opts.React) &&
+ !opts.errorBoundary
+ ) {
+ if (!opts.rootComponent.prototype) {
+ warn(
+ `garfish-react-bridge: ${appInfo.appName}'s rootComponent does not implement an error boundary. If using a functional component, consider providing an opts.errorBoundary to reactBridge(opts).`,
+ );
+ } else if (!opts.rootComponent.prototype.componentDidCatch) {
+ warn(
+ `garfish-react-bridge: ${appInfo.appName}'s rootComponent should implement componentDidCatch to avoid accidentally unmounting the entire garfish application.`,
+ );
+ }
+ }
+
+ const elementToRender = getElementToRender(opts, appInfo);
+ const domElement = chooseDomElementGetter(opts, appInfo);
+ const renderResult = callCreateRoot({
+ elementToRender,
+ domElement,
+ opts,
+ });
+
+ if (opts.domElements) {
+ opts.domElements[appInfo.appName] = domElement;
+ }
+ if (opts.renderResults) {
+ opts.renderResults[appInfo.appName] = renderResult;
+ }
+}
+
+function unmount(opts: Options, appInfo: PropsInfo) {
+ if (opts.renderResults) {
+ const root = opts.renderResults[appInfo.appName];
+ root.unmount();
+ opts.domElements && delete opts.domElements[appInfo.appName];
+ delete opts.renderResults[appInfo.appName];
+ }
+}
+
+// function update(opts: Options, appInfo: PropsInfo) {
+// return new Promise((resolve) => {
+// if (!opts.updateResolves[appInfo.appName]) {
+// opts.updateResolves[appInfo.appName] = [];
+// }
+
+// opts.updateResolves[appInfo.appName].push(resolve);
+// const elementToRender = getElementToRender(opts, appInfo);
+// const renderRoot = opts.renderResults[appInfo.appName];
+// renderRoot.render(elementToRender);
+// });
+// }
+
+function atLeastReact18(React?: typeReact) {
+ if (
+ React &&
+ typeof React.version === 'string' &&
+ React.version.indexOf('.') >= 0
+ ) {
+ const majorVersionString = React.version.split('.')[0];
+ try {
+ return Number(majorVersionString) >= 18;
+ } catch (err) {
+ return false;
+ }
+ } else {
+ return false;
+ }
+}
+
+function atLeastReact19(React?: typeReact) {
+ if (
+ React &&
+ typeof React.version === 'string' &&
+ React.version.indexOf('.') >= 0
+ ) {
+ const majorVersionString = React.version.split('.')[0];
+ try {
+ return Number(majorVersionString) >= 19;
+ } catch (err) {
+ return false;
+ }
+ } else {
+ return false;
+ }
+}
+
+function callCreateRoot({ opts, elementToRender, domElement }) {
+ const renderType =
+ typeof opts.renderType === 'function' ? opts.renderType() : opts.renderType;
+
+ let root;
+ if (renderType === 'hydrate') {
+ root = opts.hydrateRoot(elementToRender, domElement);
+ root.render(elementToRender);
+ } else {
+ // default to this if 'renderType' is null or doesn't match the other options
+ root = opts.createRoot(domElement);
+ root.render(elementToRender);
+ }
+
+ return root;
+}
+
+function getElementToRender(opts: Options, appInfo: PropsInfo) {
+ const rootComponentElement = opts.React?.createElement(
+ opts.rootComponent as any,
+ appInfo,
+ );
+
+ let elementToRender = rootComponentElement;
+
+ if (opts.errorBoundary) {
+ elementToRender = opts.React?.createElement(
+ createErrorBoundary(opts) as any,
+ appInfo,
+ elementToRender,
+ );
+ }
+ return elementToRender;
+}
+
+function createErrorBoundary(opts: Options) {
+ // Avoiding babel output for class syntax and super()
+ // to avoid bloat
+ function GarfishSubAppReactErrorBoundary(this: any, appInfo: PropsInfo) {
+ // super
+ opts.React?.Component.apply(this, arguments);
+
+ this.state = {
+ caughtError: null,
+ caughtErrorInfo: null,
+ };
+
+ (
+ GarfishSubAppReactErrorBoundary as any
+ ).displayName = `ReactBridgeReactErrorBoundary(${appInfo.appName})`;
+ }
+
+ GarfishSubAppReactErrorBoundary.prototype =
+ opts.React && Object.create(opts.React.Component.prototype);
+
+ GarfishSubAppReactErrorBoundary.prototype.render = function () {
+ if (this.state.caughtError) {
+ const errorBoundary = opts.errorBoundary;
+
+ return errorBoundary && errorBoundary(this.state.caughtError, this.props);
+ } else {
+ return this.props.children;
+ }
+ };
+
+ GarfishSubAppReactErrorBoundary.prototype.componentDidCatch = function (
+ err,
+ info,
+ ) {
+ this.setState({
+ caughtError: err,
+ caughtErrorInfo: info,
+ });
+ };
+
+ return GarfishSubAppReactErrorBoundary;
+}
+
+function chooseDomElementGetter(opts: Options, appInfo: PropsInfo) {
+ const { dom: container } = appInfo;
+ let el;
+ if (typeof opts.el === 'string') {
+ el = container.querySelector(opts.el);
+ } else {
+ el = container;
+ }
+
+ if (!(el instanceof HTMLElement)) {
+ throw Error(
+ `react bridge's dom-element-getter-helpers: el is an invalid dom element for application'${
+ appInfo.appName
+ }'. Expected HTMLElement, received ${typeof el}`,
+ );
+ }
+ return el;
+}
diff --git a/packages/bridge-react-v19/src/types.d.ts b/packages/bridge-react-v19/src/types.d.ts
new file mode 100644
index 000000000..964c1f55e
--- /dev/null
+++ b/packages/bridge-react-v19/src/types.d.ts
@@ -0,0 +1,51 @@
+export type PropsInfo = {
+ appName: string;
+ dom: Element | ShadowRoot | Document;
+ basename: string;
+ appRenderInfo: Record;
+ props: Record;
+};
+
+export type AppInfo = PropsInfo;
+
+export type LoadRootComponent = (opts: PropsInfo) => Promise;
+
+export type TypeComponent =
+ | {
+ rootComponent: T;
+ loadRootComponent?: LoadRootComponent;
+ }
+ | {
+ rootComponent?: T;
+ loadRootComponent: LoadRootComponent;
+ };
+
+export type ErrorBoundary = (
+ caughtError: Error | any,
+ props: any,
+) => T | null;
+
+export type RenderTypes =
+ | 'createRoot'
+ | 'unstable_createRoot'
+ | 'createBlockingRoot'
+ | 'unstable_createBlockingRoot'
+ | 'render'
+ | 'hydrate';
+
+export type OptionalType = {
+ React: T;
+ createRoot: U;
+ hydrateRoot: H;
+ errorBoundary: ErrorBoundary;
+ renderResults: Record;
+ renderType: RenderTypes | (() => RenderTypes);
+ el: string;
+ canUpdate: boolean; // by default, allow parcels created with garfish-react-bridge to be updated
+ suppressComponentDidCatchWarning: boolean;
+ domElements: Record;
+ updateResolves: Record>;
+};
+
+export type UserOptions = TypeComponent &
+ Partial>;
diff --git a/packages/bridge-react-v19/tsup.config.ts b/packages/bridge-react-v19/tsup.config.ts
new file mode 100644
index 000000000..c4655d114
--- /dev/null
+++ b/packages/bridge-react-v19/tsup.config.ts
@@ -0,0 +1,4 @@
+import pkg from './package.json';
+import { baseTsup } from '../../tsup.config';
+
+export const tsup = baseTsup(pkg);
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index eae2cad3d..71196fcd4 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,4 +1,4 @@
-lockfileVersion: 5.3
+lockfileVersion: 5.4
overrides:
esbuild: 0.14.22
@@ -63,8 +63,8 @@ importers:
'@types/jasmine': 3.10.18
'@types/jest': 27.0.2
'@types/node': 12.20.55
- '@typescript-eslint/eslint-plugin': 5.4.0_5cb9d12ba4cd7885c166a557f6a0199b
- '@typescript-eslint/parser': 5.4.0_eslint@7.32.0+typescript@4.6.4
+ '@typescript-eslint/eslint-plugin': 5.4.0_ls45ck5ezv4ilqlguvl7niaztm
+ '@typescript-eslint/parser': 5.4.0_e4zyhrvfnqudwdx5bevnvkluy4
axios: 0.24.0
babel-polyfill: 6.26.0
chalk: 4.1.2
@@ -91,7 +91,7 @@ importers:
prettier-eslint-cli: 5.0.1
rimraf: 3.0.2
semver: 7.7.2
- ts-jest: 27.0.7_af55d4cbc787ed4cc2d7ab1ebb0a0b8a
+ ts-jest: 27.0.7_v5k5js6hq7wuzqwxvmplwcqlri
tslib: 2.3.1
tsup: 5.7.2_typescript@4.6.4
typescript: 4.6.4
@@ -136,25 +136,25 @@ importers:
zone.js: 0.10.3
dependencies:
'@angular/animations': 13.2.4_@angular+core@13.2.4
- '@angular/common': 13.2.4_@angular+core@13.2.4+rxjs@6.6.7
+ '@angular/common': 13.2.4_pqxaee6iec7l3sirejczfyzsde
'@angular/core': 13.2.4_rxjs@6.6.7+zone.js@0.10.3
- '@angular/forms': 13.2.4_78e8f54f4b7d4eb9dc979bb523a2106c
- '@angular/platform-browser': 13.2.4_c32bbd9c696d1f00f3275fe5fdf76654
- '@angular/platform-browser-dynamic': 13.2.4_98e1c8b4efa66ebacfe1bdf50b64dc0f
- '@angular/router': 13.2.4_78e8f54f4b7d4eb9dc979bb523a2106c
+ '@angular/forms': 13.2.4_pdupkt2lpvhltxexto2shiqqnq
+ '@angular/platform-browser': 13.2.4_ymv33hdjnupqb4zhl7s7353gkq
+ '@angular/platform-browser-dynamic': 13.2.4_tdq4rnhpuzxlvt7bxx2qwzg4b4
+ '@angular/router': 13.2.4_pdupkt2lpvhltxexto2shiqqnq
rxjs: 6.6.7
tslib: 2.3.1
zone.js: 0.10.3
devDependencies:
- '@angular-builders/custom-webpack': 13.1.0_ff77c83933f2e4de9ef567d09e80cad9
- '@angular-devkit/build-angular': 13.3.11_95387d0f0cbecb06fbe15b0a7fb69ee9
+ '@angular-builders/custom-webpack': 13.1.0_v32iakm4necosqlnffo5c6akwa
+ '@angular-devkit/build-angular': 13.3.11_h2chezy3wgvfe6prav6uk6dymu
'@angular/cli': 13.3.11
'@angular/compiler': 13.4.0
- '@angular/compiler-cli': 13.4.0_8bfaebc4ac9a2d191bac49412227a952
+ '@angular/compiler-cli': 13.4.0_rp5oxrfmtiwrsg5mjfasej5jki
'@types/jasmine': 3.10.18
'@types/jasminewd2': 2.0.13
'@types/node': 12.20.55
- codelyzer: 6.0.2_tslint@6.1.3
+ codelyzer: 6.0.2_dq7hearxic3slctgwagd6bnwpa
html-webpack-plugin: 5.6.3_webpack@5.100.2
jasmine-core: 3.6.0
jasmine-spec-reporter: 5.0.2
@@ -162,12 +162,12 @@ importers:
karma-chrome-launcher: 3.2.0
karma-coverage-istanbul-reporter: 3.0.3
karma-jasmine: 4.0.2_karma@5.2.3
- karma-jasmine-html-reporter: 1.7.0_83b524e6b05909328d7801c9bc9b7922
+ karma-jasmine-html-reporter: 1.7.0_qo2sjzvqleetfdlyahe3zg3zei
protractor: 7.0.0
ts-node: 8.10.2_typescript@4.4.3
tslint: 6.1.3_typescript@4.4.3
typescript: 4.4.3
- webpack: 5.100.2_@swc+core@1.13.2
+ webpack: 5.100.2
dev/app-esm:
specifiers:
@@ -219,19 +219,19 @@ importers:
webpack-cli: ^4.6.0
webpack-dev-server: ^4.2.1
dependencies:
- '@arco-design/web-react': 2.66.2_react-dom@17.0.2+react@17.0.2
+ '@arco-design/web-react': 2.66.2_sfoxds7t5ydpegc3knd667wn6m
'@garfish/css-scope': link:../../packages/css-scope
'@garfish/es-module': link:../../packages/es-module
- '@uiw/react-md-editor': 3.25.6_react-dom@17.0.2+react@17.0.2
+ '@uiw/react-md-editor': 3.25.6_sfoxds7t5ydpegc3knd667wn6m
babel-runtime: 6.26.0
garfish: link:../../packages/garfish
history: 5.3.0
mobx: 6.13.7
- mobx-react: 7.6.0_823aee0b6ad81eb6055e2299c84e0cfd
- mobx-react-lite: 3.4.3_823aee0b6ad81eb6055e2299c84e0cfd
+ mobx-react: 7.6.0_qi5o4c3k3aplmbk6ekm4qtqm7u
+ mobx-react-lite: 3.4.3_qi5o4c3k3aplmbk6ekm4qtqm7u
react: 17.0.2
react-dom: 17.0.2_react@17.0.2
- react-router-dom: 6.30.1_react-dom@17.0.2+react@17.0.2
+ react-router-dom: 6.30.1_sfoxds7t5ydpegc3knd667wn6m
redux: 4.2.1
typescript: 4.9.5
devDependencies:
@@ -245,22 +245,22 @@ importers:
'@babel/preset-typescript': 7.27.1_@babel+core@7.28.0
'@babel/register': 7.27.1_@babel+core@7.28.0
'@babel/runtime': 7.28.2
- '@pmmmwh/react-refresh-webpack-plugin': 0.5.17_325577fcdd1dc632e2708ed34b67deaf
- babel-loader: 8.4.1_1f04fbb924cd1fb984eb862020a49672
+ '@pmmmwh/react-refresh-webpack-plugin': 0.5.17_gjkxp7g5dxddfytqr3juwz66v4
+ babel-loader: 8.4.1_d4cpxojezup3tbhlqyqcbjewoi
babel-register: 6.26.0
cross-env: 7.0.3
css-loader: 5.2.7_webpack@5.100.2
file-loader: 6.2.0_webpack@5.100.2
html-webpack-plugin: 5.6.3_webpack@5.100.2
less: 3.13.1
- less-loader: 5.0.0_less@3.13.1+webpack@5.100.2
+ less-loader: 5.0.0_plbcidfwhrv3gnbjs3auswajau
mini-css-extract-plugin: 2.9.2_webpack@5.100.2
react-refresh: 0.11.0
style-loader: 2.0.0_webpack@5.100.2
- url-loader: 4.1.1_7dd85ce9aa6ee9f21630ee3b2a7ea123
- webpack: 5.100.2_e895a1b7cf9a7664b898a75f8f813ceb
- webpack-cli: 4.10.0_3497eda2b4c6c624c213829ca27e2a7e
- webpack-dev-server: 4.15.2_490d0688265d0e6d0d10495397f9e4cc
+ url-loader: 4.1.1_pxmfz2nkn3u7efrq5y5su7vbem
+ webpack: 5.100.2_webpack-cli@4.10.0
+ webpack-cli: 4.10.0_gsl63ivuy3dcjqqtqkoke7rkpy
+ webpack-dev-server: 4.15.2_jegqncbgluhg2diqjfjzp6pezq
dev/app-react-16:
specifiers:
@@ -303,8 +303,8 @@ importers:
webpack-cli: ^4.6.0
webpack-dev-server: ^4.2.1
dependencies:
- '@arco-design/web-react': 2.66.2_react-dom@16.14.0+react@16.14.0
- '@garfish/bridge-react': file:packages/bridge-react_react-dom@16.14.0+react@16.14.0
+ '@arco-design/web-react': 2.66.2_wcqkhtmu7mswc6yz4uyexck3ty
+ '@garfish/bridge-react': file:packages/bridge-react_wcqkhtmu7mswc6yz4uyexck3ty
babel-runtime: 6.26.0
history: 5.3.0
react: 16.14.0
@@ -324,8 +324,8 @@ importers:
'@babel/preset-typescript': 7.27.1_@babel+core@7.28.0
'@babel/register': 7.27.1_@babel+core@7.28.0
'@babel/runtime': 7.28.2
- '@pmmmwh/react-refresh-webpack-plugin': 0.5.17_325577fcdd1dc632e2708ed34b67deaf
- babel-loader: 8.4.1_1f04fbb924cd1fb984eb862020a49672
+ '@pmmmwh/react-refresh-webpack-plugin': 0.5.17_gjkxp7g5dxddfytqr3juwz66v4
+ babel-loader: 8.4.1_d4cpxojezup3tbhlqyqcbjewoi
babel-register: 6.26.0
copy-webpack-plugin: 10.2.3_webpack@5.100.2
cross-env: 7.0.3
@@ -333,15 +333,15 @@ importers:
file-loader: 6.2.0_webpack@5.100.2
html-webpack-plugin: 5.6.3_webpack@5.100.2
less: 3.13.1
- less-loader: 5.0.0_less@3.13.1+webpack@5.100.2
+ less-loader: 5.0.0_plbcidfwhrv3gnbjs3auswajau
mini-css-extract-plugin: 2.9.2_webpack@5.100.2
react-refresh: 0.11.0
- react-svg: 15.1.9_react-dom@16.14.0+react@16.14.0
+ react-svg: 15.1.9_wcqkhtmu7mswc6yz4uyexck3ty
style-loader: 2.0.0_webpack@5.100.2
- url-loader: 4.1.1_7dd85ce9aa6ee9f21630ee3b2a7ea123
- webpack: 5.100.2_e895a1b7cf9a7664b898a75f8f813ceb
- webpack-cli: 4.10.0_3497eda2b4c6c624c213829ca27e2a7e
- webpack-dev-server: 4.15.2_490d0688265d0e6d0d10495397f9e4cc
+ url-loader: 4.1.1_pxmfz2nkn3u7efrq5y5su7vbem
+ webpack: 5.100.2_webpack-cli@4.10.0
+ webpack-cli: 4.10.0_gsl63ivuy3dcjqqtqkoke7rkpy
+ webpack-dev-server: 4.15.2_jegqncbgluhg2diqjfjzp6pezq
dependenciesMeta:
'@garfish/bridge-react':
injected: true
@@ -387,14 +387,14 @@ importers:
webpack-cli: ^4.6.0
webpack-dev-server: ^4.2.1
dependencies:
- '@arco-design/web-react': 2.66.2_react-dom@17.0.2+react@17.0.2
- '@garfish/bridge-react': file:packages/bridge-react_react-dom@17.0.2+react@17.0.2
+ '@arco-design/web-react': 2.66.2_sfoxds7t5ydpegc3knd667wn6m
+ '@garfish/bridge-react': file:packages/bridge-react_sfoxds7t5ydpegc3knd667wn6m
babel-runtime: 6.26.0
history: 5.3.0
mobx: 6.13.7
react: 17.0.2
react-dom: 17.0.2_react@17.0.2
- react-router-dom: 6.30.1_react-dom@17.0.2+react@17.0.2
+ react-router-dom: 6.30.1_sfoxds7t5ydpegc3knd667wn6m
redux: 4.2.1
typescript: 4.9.5
web-vitals: 1.1.2
@@ -409,23 +409,23 @@ importers:
'@babel/preset-typescript': 7.27.1_@babel+core@7.28.0
'@babel/register': 7.27.1_@babel+core@7.28.0
'@babel/runtime': 7.28.2
- '@pmmmwh/react-refresh-webpack-plugin': 0.5.17_325577fcdd1dc632e2708ed34b67deaf
- '@uiw/react-md-editor': 3.9.0_react-dom@17.0.2+react@17.0.2
- babel-loader: 8.4.1_1f04fbb924cd1fb984eb862020a49672
+ '@pmmmwh/react-refresh-webpack-plugin': 0.5.17_gjkxp7g5dxddfytqr3juwz66v4
+ '@uiw/react-md-editor': 3.9.0_sfoxds7t5ydpegc3knd667wn6m
+ babel-loader: 8.4.1_d4cpxojezup3tbhlqyqcbjewoi
babel-register: 6.26.0
cross-env: 7.0.3
css-loader: 5.2.7_webpack@5.100.2
file-loader: 6.2.0_webpack@5.100.2
html-webpack-plugin: 5.6.3_webpack@5.100.2
less: 3.13.1
- less-loader: 5.0.0_less@3.13.1+webpack@5.100.2
+ less-loader: 5.0.0_plbcidfwhrv3gnbjs3auswajau
mini-css-extract-plugin: 2.9.2_webpack@5.100.2
react-refresh: 0.11.0
style-loader: 2.0.0_webpack@5.100.2
- url-loader: 4.1.1_7dd85ce9aa6ee9f21630ee3b2a7ea123
- webpack: 5.100.2_e895a1b7cf9a7664b898a75f8f813ceb
- webpack-cli: 4.10.0_3497eda2b4c6c624c213829ca27e2a7e
- webpack-dev-server: 4.15.2_490d0688265d0e6d0d10495397f9e4cc
+ url-loader: 4.1.1_pxmfz2nkn3u7efrq5y5su7vbem
+ webpack: 5.100.2_webpack-cli@4.10.0
+ webpack-cli: 4.10.0_gsl63ivuy3dcjqqtqkoke7rkpy
+ webpack-dev-server: 4.15.2_jegqncbgluhg2diqjfjzp6pezq
dependenciesMeta:
'@garfish/bridge-react':
injected: true
@@ -471,14 +471,14 @@ importers:
webpack-cli: ^4.6.0
webpack-dev-server: ^4.2.1
dependencies:
- '@arco-design/web-react': 2.66.2_react-dom@18.1.0+react@18.1.0
+ '@arco-design/web-react': 2.66.2_ef5jwxihqo6n7gxfmzogljlgcm
'@garfish/bridge-react-v18': link:../../packages/bridge-react-v18
babel-runtime: 6.26.0
history: 5.3.0
mobx: 6.13.7
react: 18.1.0
react-dom: 18.1.0_react@18.1.0
- react-router-dom: 6.3.0_react-dom@18.1.0+react@18.1.0
+ react-router-dom: 6.3.0_ef5jwxihqo6n7gxfmzogljlgcm
redux: 4.2.1
typescript: 4.9.5
web-vitals: 1.1.2
@@ -493,23 +493,104 @@ importers:
'@babel/preset-typescript': 7.27.1_@babel+core@7.28.0
'@babel/register': 7.27.1_@babel+core@7.28.0
'@babel/runtime': 7.28.2
- '@pmmmwh/react-refresh-webpack-plugin': 0.5.17_325577fcdd1dc632e2708ed34b67deaf
- '@uiw/react-md-editor': 3.9.0_react-dom@18.1.0+react@18.1.0
- babel-loader: 8.4.1_1f04fbb924cd1fb984eb862020a49672
+ '@pmmmwh/react-refresh-webpack-plugin': 0.5.17_gjkxp7g5dxddfytqr3juwz66v4
+ '@uiw/react-md-editor': 3.9.0_ef5jwxihqo6n7gxfmzogljlgcm
+ babel-loader: 8.4.1_d4cpxojezup3tbhlqyqcbjewoi
babel-register: 6.26.0
cross-env: 7.0.3
css-loader: 5.2.7_webpack@5.100.2
file-loader: 6.2.0_webpack@5.100.2
html-webpack-plugin: 5.6.3_webpack@5.100.2
less: 3.13.1
- less-loader: 5.0.0_less@3.13.1+webpack@5.100.2
+ less-loader: 5.0.0_plbcidfwhrv3gnbjs3auswajau
mini-css-extract-plugin: 2.9.2_webpack@5.100.2
react-refresh: 0.11.0
style-loader: 2.0.0_webpack@5.100.2
- url-loader: 4.1.1_7dd85ce9aa6ee9f21630ee3b2a7ea123
- webpack: 5.100.2_e895a1b7cf9a7664b898a75f8f813ceb
- webpack-cli: 4.10.0_3497eda2b4c6c624c213829ca27e2a7e
- webpack-dev-server: 4.15.2_490d0688265d0e6d0d10495397f9e4cc
+ url-loader: 4.1.1_pxmfz2nkn3u7efrq5y5su7vbem
+ webpack: 5.100.2_webpack-cli@4.10.0
+ webpack-cli: 4.10.0_gsl63ivuy3dcjqqtqkoke7rkpy
+ webpack-dev-server: 4.15.2_jegqncbgluhg2diqjfjzp6pezq
+
+ dev/app-react-19:
+ specifiers:
+ '@arco-design/web-react': ^2.28.1
+ '@babel/core': ^7.13.15
+ '@babel/plugin-proposal-class-properties': ^7.16.0
+ '@babel/plugin-proposal-decorators': ^7.16.0
+ '@babel/plugin-transform-react-jsx': ^7.16.0
+ '@babel/plugin-transform-runtime': ^7.14.5
+ '@babel/preset-env': ^7.13.15
+ '@babel/preset-react': ^7.16.0
+ '@babel/preset-typescript': ^7.14.5
+ '@babel/register': ^7.13.14
+ '@babel/runtime': ^7.14.6
+ '@garfish/bridge-react-v19': workspace:*
+ '@pmmmwh/react-refresh-webpack-plugin': ^0.5.4
+ '@uiw/react-md-editor': 3.9.0
+ babel-loader: ^8.1.0
+ babel-register: ^6.26.0
+ babel-runtime: ^6.26.0
+ cross-env: ^7.0.3
+ css-loader: ^5.2.7
+ file-loader: ^6.2.0
+ history: ^5.1.0
+ html-webpack-plugin: ^5.3.1
+ less: ^3.13.1
+ less-loader: ^5.0.0
+ mini-css-extract-plugin: ^2.4.2
+ mobx: ^6.3.6
+ react: 19.1.0
+ react-dom: 19.1.0
+ react-refresh: ^0.11.0
+ react-router-dom: 6.3.0
+ redux: ^4.1.2
+ style-loader: ^2.0.0
+ typescript: ^4.1.2
+ url-loader: ^4.1.1
+ web-vitals: ^1.1.2
+ webpack: ^5.35.0
+ webpack-cli: ^4.6.0
+ webpack-dev-server: ^4.2.1
+ dependencies:
+ '@arco-design/web-react': 2.66.2_j6k6oay3ugsr56slyfvma2drry
+ '@garfish/bridge-react-v19': link:../../packages/bridge-react-v19
+ babel-runtime: 6.26.0
+ history: 5.3.0
+ mobx: 6.13.7
+ react: 19.1.0
+ react-dom: 19.1.0_react@19.1.0
+ react-router-dom: 6.3.0_j6k6oay3ugsr56slyfvma2drry
+ redux: 4.2.1
+ typescript: 4.6.4
+ web-vitals: 1.1.2
+ devDependencies:
+ '@babel/core': 7.28.0
+ '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.28.0
+ '@babel/plugin-proposal-decorators': 7.28.0_@babel+core@7.28.0
+ '@babel/plugin-transform-react-jsx': 7.27.1_@babel+core@7.28.0
+ '@babel/plugin-transform-runtime': 7.28.0_@babel+core@7.28.0
+ '@babel/preset-env': 7.28.0_@babel+core@7.28.0
+ '@babel/preset-react': 7.27.1_@babel+core@7.28.0
+ '@babel/preset-typescript': 7.27.1_@babel+core@7.28.0
+ '@babel/register': 7.27.1_@babel+core@7.28.0
+ '@babel/runtime': 7.28.2
+ '@pmmmwh/react-refresh-webpack-plugin': 0.5.17_gjkxp7g5dxddfytqr3juwz66v4
+ '@uiw/react-md-editor': 3.9.0_j6k6oay3ugsr56slyfvma2drry
+ babel-loader: 8.4.1_d4cpxojezup3tbhlqyqcbjewoi
+ babel-register: 6.26.0
+ cross-env: 7.0.3
+ css-loader: 5.2.7_webpack@5.100.2
+ file-loader: 6.2.0_webpack@5.100.2
+ html-webpack-plugin: 5.6.3_webpack@5.100.2
+ less: 3.13.1
+ less-loader: 5.0.0_plbcidfwhrv3gnbjs3auswajau
+ mini-css-extract-plugin: 2.9.2_webpack@5.100.2
+ react-refresh: 0.11.0
+ style-loader: 2.0.0_webpack@5.100.2
+ url-loader: 4.1.1_pxmfz2nkn3u7efrq5y5su7vbem
+ webpack: 5.100.2_webpack-cli@4.10.0
+ webpack-cli: 4.10.0_gsl63ivuy3dcjqqtqkoke7rkpy
+ webpack-dev-server: 4.15.2_jegqncbgluhg2diqjfjzp6pezq
dev/app-vue:
specifiers:
@@ -538,18 +619,18 @@ importers:
garfish: link:../../packages/garfish
mobx-vue: 2.2.0_vue@2.6.13
vue: 2.6.13
- vue-router: 3.6.5
+ vue-router: 3.6.5_vue@2.6.13
vuex: 3.6.2_vue@2.6.13
devDependencies:
- '@vue/cli-plugin-babel': 4.5.0_f63cd59c39f55c2bc2f73f0c888a1d85
- '@vue/cli-plugin-eslint': 4.5.0_f29ccfad51a698c7c8cc61a308f276d2
- '@vue/cli-service': 4.5.0_f09f984259919b34ea31afdf24956a0d
+ '@vue/cli-plugin-babel': 4.5.0_r3icu6bqybxoc5zr7k7ekzrqui
+ '@vue/cli-plugin-eslint': 4.5.0_6kom7lkru2mmpsgmmgrqr4tw2i
+ '@vue/cli-service': 4.5.0_nixqlmt6zp7dzdzrxupl7pgsaa
babel-eslint: 10.1.0_eslint@6.8.0
element-ui: 2.15.14_vue@2.6.13
eslint: 6.8.0
eslint-plugin-vue: 8.7.1_eslint@6.8.0
less-loader: 5.0.0
- vue-loader: 15.9.8_53627ebac05ecb7d1ca56520271ef4da
+ vue-loader: 15.9.8_iz65jxxzpozjtfy2ypfjfwww74
vue-template-compiler: 2.6.13_vue@2.6.13
dependenciesMeta:
vue-template-compiler:
@@ -583,19 +664,19 @@ importers:
garfish: link:../../packages/garfish
mobx-vue: 2.2.0_vue@2.6.13
vue: 2.6.13
- vue-router: 3.6.5
+ vue-router: 3.6.5_vue@2.6.13
vuex: 3.6.2_vue@2.6.13
devDependencies:
- '@vue/cli-plugin-babel': 4.5.19_46ef8989204bb780dad9061a88bdd719
- '@vue/cli-plugin-eslint': 4.5.19_291eed2a4b15311c68aabdde8b2cf70f
- '@vue/cli-service': 4.5.19_f09f984259919b34ea31afdf24956a0d
+ '@vue/cli-plugin-babel': 4.5.19_j6atvxajrz6zpejie6ym5ku4ty
+ '@vue/cli-plugin-eslint': 4.5.19_fepo2kslcuyry2fkxxpiwlhxb4
+ '@vue/cli-service': 4.5.19_nixqlmt6zp7dzdzrxupl7pgsaa
babel-eslint: 10.1.0_eslint@6.8.0
element-ui: 2.15.14_vue@2.6.13
eslint: 6.8.0
eslint-plugin-vue: 8.7.1_eslint@6.8.0
less-loader: 5.0.0
url-loader: 4.1.1
- vue-loader: 15.9.8_53627ebac05ecb7d1ca56520271ef4da
+ vue-loader: 15.9.8_iz65jxxzpozjtfy2ypfjfwww74
vue-template-compiler: 2.6.13_vue@2.6.13
dev/app-vue-3:
@@ -626,9 +707,9 @@ importers:
vue-router: 4.0.12_vue@3.2.31
vuex: 3.6.2_vue@3.2.31
devDependencies:
- '@vue/cli-plugin-babel': 4.5.15_c1ebd2c327b9916f1b14476e6a7b1d20
- '@vue/cli-plugin-eslint': 4.5.15_159f9ca94908a7070131e2c321d72521
- '@vue/cli-service': 4.5.15_0f5d62cf88f3efebf60206232b803f28
+ '@vue/cli-plugin-babel': 4.5.15_yecqdxnkw2wdliv6nfjhbfqysq
+ '@vue/cli-plugin-eslint': 4.5.15_cwpzzkkjbctqoajr4lbsdvzfee
+ '@vue/cli-service': 4.5.15_ee7biujstwg456ue5i7k23lvau
'@vue/compiler-sfc': 3.2.31
babel-eslint: 10.1.0_eslint@6.8.0
eslint: 6.8.0
@@ -670,6 +751,17 @@ importers:
react: 18.1.0
react-dom: 18.1.0_react@18.1.0
+ packages/bridge-react-v19:
+ specifiers:
+ '@garfish/utils': workspace:*
+ react: 19.1.0
+ react-dom: 19.1.0
+ dependencies:
+ '@garfish/utils': link:../utils
+ devDependencies:
+ react: 19.1.0
+ react-dom: 19.1.0_react@19.1.0
+
packages/bridge-vue-v2:
specifiers:
vue: 2.6.13
@@ -878,15 +970,15 @@ packages:
'@jridgewell/trace-mapping': 0.3.29
dev: true
- /@angular-builders/custom-webpack/13.1.0_ff77c83933f2e4de9ef567d09e80cad9:
+ /@angular-builders/custom-webpack/13.1.0_v32iakm4necosqlnffo5c6akwa:
resolution: {integrity: sha512-qhtnAv1i7agk14zeKZZfXjrckYt37OZ+3tsTBLhf3ZFbwREK8L1SNi8xhZ1j1JLGsf2Dp0GEcZrSYeFDweo0WA==}
engines: {node: '>=12.20.0'}
dependencies:
'@angular-devkit/architect': 0.1303.11
- '@angular-devkit/build-angular': 13.3.11_95387d0f0cbecb06fbe15b0a7fb69ee9
+ '@angular-devkit/build-angular': 13.3.11_h2chezy3wgvfe6prav6uk6dymu
'@angular-devkit/core': 13.3.11
lodash: 4.17.21
- ts-node: 10.9.2_b5ef9a98e3d44ef05ac403c9fc81607a
+ ts-node: 10.9.2_mdb3dbfqy5sebt7ydoefkswigu
tsconfig-paths: 3.15.0
webpack-merge: 5.10.0
transitivePeerDependencies:
@@ -925,7 +1017,7 @@ packages:
- chokidar
dev: true
- /@angular-devkit/build-angular/13.3.11_95387d0f0cbecb06fbe15b0a7fb69ee9:
+ /@angular-devkit/build-angular/13.3.11_h2chezy3wgvfe6prav6uk6dymu:
resolution: {integrity: sha512-H4tpdmRu+6HSjsL+swV/8qj8v0YSDq6lpb31EYajlBB6fDj+YJQvHgaWvexSWl6eIqgDKXcujhNUjNi1enjwHw==}
engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
peerDependencies:
@@ -953,9 +1045,9 @@ packages:
dependencies:
'@ampproject/remapping': 2.2.0
'@angular-devkit/architect': 0.1303.11
- '@angular-devkit/build-webpack': 0.1303.11_5fb2e690a7eccb2533600cb2707e450d
+ '@angular-devkit/build-webpack': 0.1303.11_l6zonefh5tfskm3abszha7sfbu
'@angular-devkit/core': 13.3.11
- '@angular/compiler-cli': 13.4.0_8bfaebc4ac9a2d191bac49412227a952
+ '@angular/compiler-cli': 13.4.0_rp5oxrfmtiwrsg5mjfasej5jki
'@babel/core': 7.16.12
'@babel/generator': 7.16.8
'@babel/helper-annotate-as-pure': 7.16.7
@@ -966,9 +1058,9 @@ packages:
'@babel/runtime': 7.16.7
'@babel/template': 7.16.7
'@discoveryjs/json-ext': 0.5.6
- '@ngtools/webpack': 13.3.11_940eb16eadb3ede826838fb517e7bf55
+ '@ngtools/webpack': 13.3.11_sqhlc3vnwpw6qjudr62rpz57ku
ansi-colors: 4.1.1
- babel-loader: 8.2.5_7dddd9639c99a92327862aa45340f942
+ babel-loader: 8.2.5_pxo5sy44tgusgj4gfksfgqhzii
babel-plugin-istanbul: 6.1.1
browserslist: 4.25.1
cacache: 15.3.0
@@ -996,7 +1088,7 @@ packages:
piscina: 3.2.0
postcss: 8.4.5
postcss-import: 14.0.2_postcss@8.4.5
- postcss-loader: 6.2.1_postcss@8.4.5+webpack@5.76.1
+ postcss-loader: 6.2.1_2zav35mtvqhznskbbcl7zq3hti
postcss-preset-env: 7.2.3_postcss@8.4.5
protractor: 7.0.0
regenerator-runtime: 0.13.9
@@ -1008,17 +1100,17 @@ packages:
source-map-loader: 3.0.1_webpack@5.76.1
source-map-support: 0.5.21
stylus: github.com/stylus/stylus/14462ea7e7bffce8f192f7a933114ffbf577aa84
- stylus-loader: 6.2.0_stylus@0.56.0+webpack@5.76.1
+ stylus-loader: 6.2.0_tflq7wolhb5jandkcgy52zew2y
terser: 5.14.2
text-table: 0.2.0
tree-kill: 1.2.2
tslib: 2.3.1
typescript: 4.4.3
- webpack: 5.76.1_@swc+core@1.13.2+esbuild@0.14.22
+ webpack: 5.76.1_esbuild@0.14.22
webpack-dev-middleware: 5.3.0_webpack@5.76.1
webpack-dev-server: 4.7.3_webpack@5.76.1
webpack-merge: 5.8.0
- webpack-subresource-integrity: 5.1.0_b1cc9547adf104f675bf29e24358ec6a
+ webpack-subresource-integrity: 5.1.0_whgjkr5n6ecpm5n7fhregwhmni
optionalDependencies:
esbuild: 0.14.22
transitivePeerDependencies:
@@ -1037,7 +1129,7 @@ packages:
- webpack-cli
dev: true
- /@angular-devkit/build-webpack/0.1303.11_5fb2e690a7eccb2533600cb2707e450d:
+ /@angular-devkit/build-webpack/0.1303.11_l6zonefh5tfskm3abszha7sfbu:
resolution: {integrity: sha512-599pWAQLq7i/fmEZLb7PaNU6nmPC3EZbJk1nU/UBcpx7FWs9e0o2XQE2PCAs0buqtQxVjSgY6kMO8ex5dUmgUQ==}
engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
peerDependencies:
@@ -1046,7 +1138,7 @@ packages:
dependencies:
'@angular-devkit/architect': 0.1303.11
rxjs: 6.6.7
- webpack: 5.76.1_@swc+core@1.13.2+esbuild@0.14.22
+ webpack: 5.76.1_esbuild@0.14.22
webpack-dev-server: 4.7.3_webpack@5.76.1
transitivePeerDependencies:
- chokidar
@@ -1123,7 +1215,7 @@ packages:
- supports-color
dev: true
- /@angular/common/13.2.4_@angular+core@13.2.4+rxjs@6.6.7:
+ /@angular/common/13.2.4_pqxaee6iec7l3sirejczfyzsde:
resolution: {integrity: sha512-telHfROR8QYZ0IE7rZF8yQG4PkKIZ9oKpl3HwybSzTTbvWwHPtScqvr4b1oKjb0Q6F4OkH3QtrZ+PXMAp0Hv/w==}
engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0}
peerDependencies:
@@ -1135,7 +1227,7 @@ packages:
tslib: 2.3.1
dev: false
- /@angular/compiler-cli/13.4.0_8bfaebc4ac9a2d191bac49412227a952:
+ /@angular/compiler-cli/13.4.0_rp5oxrfmtiwrsg5mjfasej5jki:
resolution: {integrity: sha512-OQD0w9aZXbpcyWDEaozoHH/n3eYDLhBsmJcIBVqUN8Awx8m17v2u2R6m7DIEpVRbBzYtTscAMTKONNVwsTolHA==}
engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0}
hasBin: true
@@ -1165,14 +1257,6 @@ packages:
dependencies:
tslib: 2.3.1
- /@angular/compiler/9.0.0_tslib@1.14.1:
- resolution: {integrity: sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==}
- peerDependencies:
- tslib: ^1.10.0
- dependencies:
- tslib: 1.14.1
- dev: true
-
/@angular/core/13.2.4_rxjs@6.6.7+zone.js@0.10.3:
resolution: {integrity: sha512-cCgf8Crx86hvZQX8lc7Yy5fedRI4trAXYsysrJ7ISRohfFk31Z/W5BEpKO8CkX51Ja5IfJPyoI2DVVTvrwzsEQ==}
engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0}
@@ -1183,21 +1267,8 @@ packages:
rxjs: 6.6.7
tslib: 2.3.1
zone.js: 0.10.3
- dev: false
-
- /@angular/core/9.0.0_ed6f97b6c42afc3b298adb4ba822fb67:
- resolution: {integrity: sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==}
- peerDependencies:
- rxjs: ^6.5.3
- tslib: ^1.10.0
- zone.js: ~0.10.2
- dependencies:
- rxjs: 6.6.7
- tslib: 1.14.1
- zone.js: 0.10.3
- dev: true
- /@angular/forms/13.2.4_78e8f54f4b7d4eb9dc979bb523a2106c:
+ /@angular/forms/13.2.4_pdupkt2lpvhltxexto2shiqqnq:
resolution: {integrity: sha512-XdWJZy4zfJ4ZGEhKZBceHAAozBQZPp1BRl7m2j09EV2I6l/nLdrYhgKGd4UBUtJWyXElPEuEgLiKKdmlPKF5eQ==}
engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0}
peerDependencies:
@@ -1206,14 +1277,14 @@ packages:
'@angular/platform-browser': 13.2.4
rxjs: ^6.5.3 || ^7.4.0
dependencies:
- '@angular/common': 13.2.4_@angular+core@13.2.4+rxjs@6.6.7
+ '@angular/common': 13.2.4_pqxaee6iec7l3sirejczfyzsde
'@angular/core': 13.2.4_rxjs@6.6.7+zone.js@0.10.3
- '@angular/platform-browser': 13.2.4_c32bbd9c696d1f00f3275fe5fdf76654
+ '@angular/platform-browser': 13.2.4_ymv33hdjnupqb4zhl7s7353gkq
rxjs: 6.6.7
tslib: 2.3.1
dev: false
- /@angular/platform-browser-dynamic/13.2.4_98e1c8b4efa66ebacfe1bdf50b64dc0f:
+ /@angular/platform-browser-dynamic/13.2.4_tdq4rnhpuzxlvt7bxx2qwzg4b4:
resolution: {integrity: sha512-9GOG46hjxrSHAL0pO90LPcaGoGleqlhKgoeSd6MVjNHOU2B2JWMuiu3NmJa0PjYFzqC89b0ypRoitf68+XTEjA==}
engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0}
peerDependencies:
@@ -1222,14 +1293,14 @@ packages:
'@angular/core': 13.2.4
'@angular/platform-browser': 13.2.4
dependencies:
- '@angular/common': 13.2.4_@angular+core@13.2.4+rxjs@6.6.7
+ '@angular/common': 13.2.4_pqxaee6iec7l3sirejczfyzsde
'@angular/compiler': 13.4.0
'@angular/core': 13.2.4_rxjs@6.6.7+zone.js@0.10.3
- '@angular/platform-browser': 13.2.4_c32bbd9c696d1f00f3275fe5fdf76654
+ '@angular/platform-browser': 13.2.4_ymv33hdjnupqb4zhl7s7353gkq
tslib: 2.3.1
dev: false
- /@angular/platform-browser/13.2.4_c32bbd9c696d1f00f3275fe5fdf76654:
+ /@angular/platform-browser/13.2.4_ymv33hdjnupqb4zhl7s7353gkq:
resolution: {integrity: sha512-zyQ5wtCY+V+ww9Lx6fDdCYTJ7lRuszcN4eqogbtLak8uNnC+DjZSjNbgsrCwZ/v5q712DtCTQlSOFtRg9SWYug==}
engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0}
peerDependencies:
@@ -1241,12 +1312,12 @@ packages:
optional: true
dependencies:
'@angular/animations': 13.2.4_@angular+core@13.2.4
- '@angular/common': 13.2.4_@angular+core@13.2.4+rxjs@6.6.7
+ '@angular/common': 13.2.4_pqxaee6iec7l3sirejczfyzsde
'@angular/core': 13.2.4_rxjs@6.6.7+zone.js@0.10.3
tslib: 2.3.1
dev: false
- /@angular/router/13.2.4_78e8f54f4b7d4eb9dc979bb523a2106c:
+ /@angular/router/13.2.4_pdupkt2lpvhltxexto2shiqqnq:
resolution: {integrity: sha512-ZNahK4W+DAHThGwCOkW2MN12/Zx9PgNL/DRhGyPpL8vBBIgmOjoLB5N5QWMICauIgGQ635oorSN6lGxX6ZPbCA==}
engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0}
peerDependencies:
@@ -1255,9 +1326,9 @@ packages:
'@angular/platform-browser': 13.2.4
rxjs: ^6.5.3 || ^7.4.0
dependencies:
- '@angular/common': 13.2.4_@angular+core@13.2.4+rxjs@6.6.7
+ '@angular/common': 13.2.4_pqxaee6iec7l3sirejczfyzsde
'@angular/core': 13.2.4_rxjs@6.6.7+zone.js@0.10.3
- '@angular/platform-browser': 13.2.4_c32bbd9c696d1f00f3275fe5fdf76654
+ '@angular/platform-browser': 13.2.4_ymv33hdjnupqb4zhl7s7353gkq
rxjs: 6.6.7
tslib: 2.3.1
dev: false
@@ -1268,7 +1339,7 @@ packages:
color: 3.2.1
dev: false
- /@arco-design/web-react/2.66.2_react-dom@16.14.0+react@16.14.0:
+ /@arco-design/web-react/2.66.2_ef5jwxihqo6n7gxfmzogljlgcm:
resolution: {integrity: sha512-2GyBa+V1MX4HFkfTQSTv5gNtX7y3PZQQgcEpmae3SgEonz6elvuaPYDGZQ3g/kzSryJXDLRHw6zVjwWdFRZnHQ==}
peerDependencies:
react: '>=16'
@@ -1282,11 +1353,37 @@ packages:
dayjs: 1.11.13
lodash: 4.17.21
number-precision: 1.6.0
- react: 16.14.0
- react-dom: 16.14.0_react@16.14.0
- react-focus-lock: 2.13.6_react@16.14.0
+ react: 18.1.0
+ react-dom: 18.1.0_react@18.1.0
+ react-focus-lock: 2.13.6_react@18.1.0
+ react-is: 18.3.1
+ react-transition-group: 4.4.5_ef5jwxihqo6n7gxfmzogljlgcm
+ resize-observer-polyfill: 1.5.1
+ scroll-into-view-if-needed: 2.2.31
+ shallowequal: 1.1.0
+ transitivePeerDependencies:
+ - '@types/react'
+ dev: false
+
+ /@arco-design/web-react/2.66.2_j6k6oay3ugsr56slyfvma2drry:
+ resolution: {integrity: sha512-2GyBa+V1MX4HFkfTQSTv5gNtX7y3PZQQgcEpmae3SgEonz6elvuaPYDGZQ3g/kzSryJXDLRHw6zVjwWdFRZnHQ==}
+ peerDependencies:
+ react: '>=16'
+ react-dom: '>=16'
+ dependencies:
+ '@arco-design/color': 0.4.0
+ '@babel/runtime': 7.28.2
+ b-tween: 0.3.3
+ b-validate: 1.5.3
+ compute-scroll-into-view: 1.0.20
+ dayjs: 1.11.13
+ lodash: 4.17.21
+ number-precision: 1.6.0
+ react: 19.1.0
+ react-dom: 19.1.0_react@19.1.0
+ react-focus-lock: 2.13.6_react@19.1.0
react-is: 18.3.1
- react-transition-group: 4.4.5_react-dom@16.14.0+react@16.14.0
+ react-transition-group: 4.4.5_j6k6oay3ugsr56slyfvma2drry
resize-observer-polyfill: 1.5.1
scroll-into-view-if-needed: 2.2.31
shallowequal: 1.1.0
@@ -1294,7 +1391,7 @@ packages:
- '@types/react'
dev: false
- /@arco-design/web-react/2.66.2_react-dom@17.0.2+react@17.0.2:
+ /@arco-design/web-react/2.66.2_sfoxds7t5ydpegc3knd667wn6m:
resolution: {integrity: sha512-2GyBa+V1MX4HFkfTQSTv5gNtX7y3PZQQgcEpmae3SgEonz6elvuaPYDGZQ3g/kzSryJXDLRHw6zVjwWdFRZnHQ==}
peerDependencies:
react: '>=16'
@@ -1312,7 +1409,7 @@ packages:
react-dom: 17.0.2_react@17.0.2
react-focus-lock: 2.13.6_react@17.0.2
react-is: 18.3.1
- react-transition-group: 4.4.5_react-dom@17.0.2+react@17.0.2
+ react-transition-group: 4.4.5_sfoxds7t5ydpegc3knd667wn6m
resize-observer-polyfill: 1.5.1
scroll-into-view-if-needed: 2.2.31
shallowequal: 1.1.0
@@ -1320,7 +1417,7 @@ packages:
- '@types/react'
dev: false
- /@arco-design/web-react/2.66.2_react-dom@18.1.0+react@18.1.0:
+ /@arco-design/web-react/2.66.2_wcqkhtmu7mswc6yz4uyexck3ty:
resolution: {integrity: sha512-2GyBa+V1MX4HFkfTQSTv5gNtX7y3PZQQgcEpmae3SgEonz6elvuaPYDGZQ3g/kzSryJXDLRHw6zVjwWdFRZnHQ==}
peerDependencies:
react: '>=16'
@@ -1334,11 +1431,11 @@ packages:
dayjs: 1.11.13
lodash: 4.17.21
number-precision: 1.6.0
- react: 18.1.0
- react-dom: 18.1.0_react@18.1.0
- react-focus-lock: 2.13.6_react@18.1.0
+ react: 16.14.0
+ react-dom: 16.14.0_react@16.14.0
+ react-focus-lock: 2.13.6_react@16.14.0
react-is: 18.3.1
- react-transition-group: 4.4.5_react-dom@18.1.0+react@18.1.0
+ react-transition-group: 4.4.5_wcqkhtmu7mswc6yz4uyexck3ty
resize-observer-polyfill: 1.5.1
scroll-into-view-if-needed: 2.2.31
shallowequal: 1.1.0
@@ -3773,7 +3870,7 @@ packages:
postcss-value-parser: 4.2.0
dev: true
- /@csstools/selector-specificity/2.2.0_postcss-selector-parser@6.1.2:
+ /@csstools/selector-specificity/2.2.0_j747yjqyvnzekvomyruvypt3ti:
resolution: {integrity: sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==}
engines: {node: ^14 || ^16 || >=18}
peerDependencies:
@@ -4432,7 +4529,7 @@ packages:
dev: false
optional: true
- /@ngtools/webpack/13.3.11_940eb16eadb3ede826838fb517e7bf55:
+ /@ngtools/webpack/13.3.11_sqhlc3vnwpw6qjudr62rpz57ku:
resolution: {integrity: sha512-gB33hTbc/RJmHyIgSUYj8ErPazhYYm7yfapOnvwHdYhCjrj1TKkR1ierOlhJtpfBYUQg6FChdl2YpyIQNPjWMA==}
engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
peerDependencies:
@@ -4440,9 +4537,9 @@ packages:
typescript: '>=4.4.3 <4.7'
webpack: ^5.30.0
dependencies:
- '@angular/compiler-cli': 13.4.0_8bfaebc4ac9a2d191bac49412227a952
+ '@angular/compiler-cli': 13.4.0_rp5oxrfmtiwrsg5mjfasej5jki
typescript: 4.4.3
- webpack: 5.76.1_@swc+core@1.13.2+esbuild@0.14.22
+ webpack: 5.76.1_esbuild@0.14.22
dev: true
/@node-ipc/js-queue/2.0.3:
@@ -4564,7 +4661,7 @@ packages:
dev: true
optional: true
- /@pmmmwh/react-refresh-webpack-plugin/0.5.17_325577fcdd1dc632e2708ed34b67deaf:
+ /@pmmmwh/react-refresh-webpack-plugin/0.5.17_gjkxp7g5dxddfytqr3juwz66v4:
resolution: {integrity: sha512-tXDyE1/jzFsHXjhRZQ3hMl0IVhYe5qula43LDWIhVfjp9G/nT5OQY5AORVOrkEGAUltBJOfOWeETbmhm6kHhuQ==}
engines: {node: '>= 10.13'}
peerDependencies:
@@ -4598,8 +4695,8 @@ packages:
react-refresh: 0.11.0
schema-utils: 4.3.2
source-map: 0.7.6
- webpack: 5.100.2_e895a1b7cf9a7664b898a75f8f813ceb
- webpack-dev-server: 4.15.2_490d0688265d0e6d0d10495397f9e4cc
+ webpack: 5.100.2_webpack-cli@4.10.0
+ webpack-dev-server: 4.15.2_jegqncbgluhg2diqjfjzp6pezq
dev: true
/@remix-run/router/1.23.0:
@@ -4801,7 +4898,7 @@ packages:
react: 19.1.0
react-dom: 19.1.0_react@19.1.0
react-lazy-with-preload: 2.2.1
- react-router-dom: 6.30.1_react-dom@19.1.0+react@19.1.0
+ react-router-dom: 6.30.1_j6k6oay3ugsr56slyfvma2drry
rehype-external-links: 3.0.0
rehype-raw: 7.0.0
remark: 15.0.1
@@ -4931,7 +5028,7 @@ packages:
'@unhead/react': 2.0.12_react@19.1.0
react: 19.1.0
react-dom: 19.1.0_react@19.1.0
- react-router-dom: 6.30.1_react-dom@19.1.0+react@19.1.0
+ react-router-dom: 6.30.1_j6k6oay3ugsr56slyfvma2drry
dev: false
/@rspress/shared/2.0.0-beta.21:
@@ -5782,7 +5879,7 @@ packages:
dev: true
optional: true
- /@typescript-eslint/eslint-plugin/5.4.0_5cb9d12ba4cd7885c166a557f6a0199b:
+ /@typescript-eslint/eslint-plugin/5.4.0_ls45ck5ezv4ilqlguvl7niaztm:
resolution: {integrity: sha512-9/yPSBlwzsetCsGEn9j24D8vGQgJkOTr4oMLas/w886ZtzKIs1iyoqFrwsX2fqYEeUwsdBpC21gcjRGo57u0eg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -5793,8 +5890,8 @@ packages:
typescript:
optional: true
dependencies:
- '@typescript-eslint/experimental-utils': 5.4.0_eslint@7.32.0+typescript@4.6.4
- '@typescript-eslint/parser': 5.4.0_eslint@7.32.0+typescript@4.6.4
+ '@typescript-eslint/experimental-utils': 5.4.0_e4zyhrvfnqudwdx5bevnvkluy4
+ '@typescript-eslint/parser': 5.4.0_e4zyhrvfnqudwdx5bevnvkluy4
'@typescript-eslint/scope-manager': 5.4.0
debug: 4.4.1
eslint: 7.32.0
@@ -5820,7 +5917,7 @@ packages:
eslint-scope: 4.0.3
dev: true
- /@typescript-eslint/experimental-utils/5.4.0_eslint@7.32.0+typescript@4.6.4:
+ /@typescript-eslint/experimental-utils/5.4.0_e4zyhrvfnqudwdx5bevnvkluy4:
resolution: {integrity: sha512-Nz2JDIQUdmIGd6p33A+naQmwfkU5KVTLb/5lTk+tLVTDacZKoGQisj8UCxk7onJcrgjIvr8xWqkYI+DbI3TfXg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -5851,7 +5948,7 @@ packages:
eslint-visitor-keys: 1.3.0
dev: true
- /@typescript-eslint/parser/5.4.0_eslint@7.32.0+typescript@4.6.4:
+ /@typescript-eslint/parser/5.4.0_e4zyhrvfnqudwdx5bevnvkluy4:
resolution: {integrity: sha512-JoB41EmxiYpaEsRwpZEYAJ9XQURPFer8hpkIW9GiaspVLX8oqbqNM8P4EP8HOZg96yaALiLEVWllA2E8vwsIKw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -5929,7 +6026,7 @@ packages:
resolution: {integrity: sha512-O2GUHV90Iw2VrSLVLK0OmNIMdZ5fgEg4NhvtwINsX+eZ/Wf6DWD0TdsK9xwV7dNRnK/UI2mQtl0a2/kRgm1m1A==}
dev: false
- /@uiw/react-markdown-preview/3.4.5_react-dom@17.0.2+react@17.0.2:
+ /@uiw/react-markdown-preview/3.4.5_ef5jwxihqo6n7gxfmzogljlgcm:
resolution: {integrity: sha512-oYZXqezHSuVu9f4RWWfcQe7RLVlJ+uqGrZsy0apVwfdXisfLEUv2GY3mJSh+KM02fGdzkLY+VX5WSoUt5TbLtg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
peerDependencies:
@@ -5939,9 +6036,9 @@ packages:
'@babel/runtime': 7.16.3
'@mapbox/rehype-prism': 0.8.0
'@uiw/copy-to-clipboard': 1.0.12
- react: 17.0.2
- react-dom: 17.0.2_react@17.0.2
- react-markdown: 7.1.1_react@17.0.2
+ react: 18.1.0
+ react-dom: 18.1.0_react@18.1.0
+ react-markdown: 7.1.1_react@18.1.0
rehype-attr: 2.0.6
rehype-autolink-headings: 6.1.0
rehype-raw: 6.1.0
@@ -5953,7 +6050,7 @@ packages:
- supports-color
dev: true
- /@uiw/react-markdown-preview/3.4.5_react-dom@18.1.0+react@18.1.0:
+ /@uiw/react-markdown-preview/3.4.5_j6k6oay3ugsr56slyfvma2drry:
resolution: {integrity: sha512-oYZXqezHSuVu9f4RWWfcQe7RLVlJ+uqGrZsy0apVwfdXisfLEUv2GY3mJSh+KM02fGdzkLY+VX5WSoUt5TbLtg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
peerDependencies:
@@ -5963,9 +6060,33 @@ packages:
'@babel/runtime': 7.16.3
'@mapbox/rehype-prism': 0.8.0
'@uiw/copy-to-clipboard': 1.0.12
- react: 18.1.0
- react-dom: 18.1.0_react@18.1.0
- react-markdown: 7.1.1_react@18.1.0
+ react: 19.1.0
+ react-dom: 19.1.0_react@19.1.0
+ react-markdown: 7.1.1_react@19.1.0
+ rehype-attr: 2.0.6
+ rehype-autolink-headings: 6.1.0
+ rehype-raw: 6.1.0
+ rehype-rewrite: 3.0.4
+ rehype-slug: 5.0.0
+ remark-gfm: 3.0.1
+ transitivePeerDependencies:
+ - '@types/react'
+ - supports-color
+ dev: true
+
+ /@uiw/react-markdown-preview/3.4.5_sfoxds7t5ydpegc3knd667wn6m:
+ resolution: {integrity: sha512-oYZXqezHSuVu9f4RWWfcQe7RLVlJ+uqGrZsy0apVwfdXisfLEUv2GY3mJSh+KM02fGdzkLY+VX5WSoUt5TbLtg==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ dependencies:
+ '@babel/runtime': 7.16.3
+ '@mapbox/rehype-prism': 0.8.0
+ '@uiw/copy-to-clipboard': 1.0.12
+ react: 17.0.2
+ react-dom: 17.0.2_react@17.0.2
+ react-markdown: 7.1.1_react@17.0.2
rehype-attr: 2.0.6
rehype-autolink-headings: 6.1.0
rehype-raw: 6.1.0
@@ -5977,7 +6098,7 @@ packages:
- supports-color
dev: true
- /@uiw/react-markdown-preview/4.2.2_react-dom@17.0.2+react@17.0.2:
+ /@uiw/react-markdown-preview/4.2.2_sfoxds7t5ydpegc3knd667wn6m:
resolution: {integrity: sha512-Jy3GtAqcF2pKgvFtgLUEwR8u2t0Yk/DAnLTl6cf1RzhNYcAxm1auDs3KndZRBDP01xhmYLX4KiOcOg/qv+Jc0A==}
peerDependencies:
react: '>=16.8.0'
@@ -6002,14 +6123,14 @@ packages:
- supports-color
dev: false
- /@uiw/react-md-editor/3.25.6_react-dom@17.0.2+react@17.0.2:
+ /@uiw/react-md-editor/3.25.6_sfoxds7t5ydpegc3knd667wn6m:
resolution: {integrity: sha512-YuDv5KiM931WFYBDCyk9/HvtLdIWk9DXvzC6d1riaLufvchM7IUHkqTkSl3HqmTod1exSN+5ZsUtKZ+S+GAsug==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
dependencies:
'@babel/runtime': 7.28.2
- '@uiw/react-markdown-preview': 4.2.2_react-dom@17.0.2+react@17.0.2
+ '@uiw/react-markdown-preview': 4.2.2_sfoxds7t5ydpegc3knd667wn6m
react: 17.0.2
react-dom: 17.0.2_react@17.0.2
rehype: 12.0.1
@@ -6019,16 +6140,16 @@ packages:
- supports-color
dev: false
- /@uiw/react-md-editor/3.9.0_react-dom@17.0.2+react@17.0.2:
+ /@uiw/react-md-editor/3.9.0_ef5jwxihqo6n7gxfmzogljlgcm:
resolution: {integrity: sha512-PTcPADC2aYJJdhHyoLJFnMjkIeo5EkVTCc1d97HmN46OFLRiLt40o2ec6DrFSvbW5w+P5i0ZlAxMJlC7r5pEVw==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
dependencies:
'@babel/runtime': 7.28.2
- '@uiw/react-markdown-preview': 3.4.5_react-dom@17.0.2+react@17.0.2
- react: 17.0.2
- react-dom: 17.0.2_react@17.0.2
+ '@uiw/react-markdown-preview': 3.4.5_ef5jwxihqo6n7gxfmzogljlgcm
+ react: 18.1.0
+ react-dom: 18.1.0_react@18.1.0
rehype: 12.0.0
rehype-sanitize: 5.0.1
transitivePeerDependencies:
@@ -6036,16 +6157,33 @@ packages:
- supports-color
dev: true
- /@uiw/react-md-editor/3.9.0_react-dom@18.1.0+react@18.1.0:
+ /@uiw/react-md-editor/3.9.0_j6k6oay3ugsr56slyfvma2drry:
resolution: {integrity: sha512-PTcPADC2aYJJdhHyoLJFnMjkIeo5EkVTCc1d97HmN46OFLRiLt40o2ec6DrFSvbW5w+P5i0ZlAxMJlC7r5pEVw==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
dependencies:
'@babel/runtime': 7.28.2
- '@uiw/react-markdown-preview': 3.4.5_react-dom@18.1.0+react@18.1.0
- react: 18.1.0
- react-dom: 18.1.0_react@18.1.0
+ '@uiw/react-markdown-preview': 3.4.5_j6k6oay3ugsr56slyfvma2drry
+ react: 19.1.0
+ react-dom: 19.1.0_react@19.1.0
+ rehype: 12.0.0
+ rehype-sanitize: 5.0.1
+ transitivePeerDependencies:
+ - '@types/react'
+ - supports-color
+ dev: true
+
+ /@uiw/react-md-editor/3.9.0_sfoxds7t5ydpegc3knd667wn6m:
+ resolution: {integrity: sha512-PTcPADC2aYJJdhHyoLJFnMjkIeo5EkVTCc1d97HmN46OFLRiLt40o2ec6DrFSvbW5w+P5i0ZlAxMJlC7r5pEVw==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ dependencies:
+ '@babel/runtime': 7.28.2
+ '@uiw/react-markdown-preview': 3.4.5_sfoxds7t5ydpegc3knd667wn6m
+ react: 17.0.2
+ react-dom: 17.0.2_react@17.0.2
rehype: 12.0.0
rehype-sanitize: 5.0.1
transitivePeerDependencies:
@@ -6138,9 +6276,10 @@ packages:
- supports-color
dev: true
- /@vue/babel-preset-app/4.5.19_vue@2.6.13:
+ /@vue/babel-preset-app/4.5.19_core-js@3.21.1+vue@3.2.31:
resolution: {integrity: sha512-VCNRiAt2P/bLo09rYt3DLe6xXUMlhJwrvU18Ddd/lYJgC7s8+wvhgYs+MTx4OiAXdu58drGwSBO9SPx7C6J82Q==}
peerDependencies:
+ core-js: ^3
vue: ^2 || ^3.0.0-0
peerDependenciesMeta:
core-js:
@@ -6159,19 +6298,20 @@ packages:
'@babel/preset-env': 7.28.0_@babel+core@7.28.0
'@babel/runtime': 7.28.2
'@vue/babel-plugin-jsx': 1.4.0_@babel+core@7.28.0
- '@vue/babel-preset-jsx': 1.4.0_@babel+core@7.28.0+vue@2.6.13
+ '@vue/babel-preset-jsx': 1.4.0_65kpeyri3jnbu3dvh5ub6hqr4m
babel-plugin-dynamic-import-node: 2.3.3
core-js: 3.21.1
core-js-compat: 3.44.0
semver: 6.3.1
- vue: 2.6.13
+ vue: 3.2.31
transitivePeerDependencies:
- supports-color
dev: true
- /@vue/babel-preset-app/4.5.19_vue@3.2.31:
+ /@vue/babel-preset-app/4.5.19_core-js@3.44.0+vue@2.6.13:
resolution: {integrity: sha512-VCNRiAt2P/bLo09rYt3DLe6xXUMlhJwrvU18Ddd/lYJgC7s8+wvhgYs+MTx4OiAXdu58drGwSBO9SPx7C6J82Q==}
peerDependencies:
+ core-js: ^3
vue: ^2 || ^3.0.0-0
peerDependenciesMeta:
core-js:
@@ -6190,17 +6330,17 @@ packages:
'@babel/preset-env': 7.28.0_@babel+core@7.28.0
'@babel/runtime': 7.28.2
'@vue/babel-plugin-jsx': 1.4.0_@babel+core@7.28.0
- '@vue/babel-preset-jsx': 1.4.0_@babel+core@7.28.0+vue@3.2.31
+ '@vue/babel-preset-jsx': 1.4.0_cwp7afjzkzrk7xnk6qdf7pfw5u
babel-plugin-dynamic-import-node: 2.3.3
- core-js: 3.21.1
+ core-js: 3.44.0
core-js-compat: 3.44.0
semver: 6.3.1
- vue: 3.2.31
+ vue: 2.6.13
transitivePeerDependencies:
- supports-color
dev: true
- /@vue/babel-preset-jsx/1.4.0_@babel+core@7.28.0+vue@2.6.13:
+ /@vue/babel-preset-jsx/1.4.0_65kpeyri3jnbu3dvh5ub6hqr4m:
resolution: {integrity: sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==}
peerDependencies:
'@babel/core': ^7.0.0-0
@@ -6218,12 +6358,12 @@ packages:
'@vue/babel-sugar-inject-h': 1.4.0_@babel+core@7.28.0
'@vue/babel-sugar-v-model': 1.4.0_@babel+core@7.28.0
'@vue/babel-sugar-v-on': 1.4.0_@babel+core@7.28.0
- vue: 2.6.13
+ vue: 3.2.31
transitivePeerDependencies:
- supports-color
dev: true
- /@vue/babel-preset-jsx/1.4.0_@babel+core@7.28.0+vue@3.2.31:
+ /@vue/babel-preset-jsx/1.4.0_cwp7afjzkzrk7xnk6qdf7pfw5u:
resolution: {integrity: sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==}
peerDependencies:
'@babel/core': ^7.0.0-0
@@ -6241,7 +6381,7 @@ packages:
'@vue/babel-sugar-inject-h': 1.4.0_@babel+core@7.28.0
'@vue/babel-sugar-v-model': 1.4.0_@babel+core@7.28.0
'@vue/babel-sugar-v-on': 1.4.0_@babel+core@7.28.0
- vue: 3.2.31
+ vue: 2.6.13
transitivePeerDependencies:
- supports-color
dev: true
@@ -6315,76 +6455,79 @@ packages:
resolution: {integrity: sha512-GdxvNSmOw7NHIazCO8gTK+xZbaOmScTtxj6eHVeMbYpDYVPJ+th3VMLWNpw/b6uOjwzzcyKlA5dRQ1DAb+gF/g==}
dev: true
- /@vue/cli-plugin-babel/4.5.0_f63cd59c39f55c2bc2f73f0c888a1d85:
+ /@vue/cli-plugin-babel/4.5.0_r3icu6bqybxoc5zr7k7ekzrqui:
resolution: {integrity: sha512-o2FmvSPyeZ1hP7tnwP3qCoWyNzSd3Mi99yu7Ml/DNaJiz86eF6cL8GcTEgnYvtaq+jiMaCl+Ut69WXLoP5Qd6w==}
peerDependencies:
'@vue/cli-service': ^3.0.0 || ^4.0.0-0
dependencies:
'@babel/core': 7.28.0
- '@vue/babel-preset-app': 4.5.19_vue@2.6.13
- '@vue/cli-service': 4.5.0_f09f984259919b34ea31afdf24956a0d
+ '@vue/babel-preset-app': 4.5.19_core-js@3.44.0+vue@2.6.13
+ '@vue/cli-service': 4.5.0_nixqlmt6zp7dzdzrxupl7pgsaa
'@vue/cli-shared-utils': 4.5.19
- babel-loader: 8.4.1_9972647875b9ef9f7f84547ae14472ad
+ babel-loader: 8.4.1_tfzgi6dvxhxz674ekr5ocrdsvu
cache-loader: 4.1.0_webpack@4.47.0
thread-loader: 2.1.3_webpack@4.47.0
webpack: 4.47.0
transitivePeerDependencies:
+ - core-js
- supports-color
- vue
- webpack-cli
- webpack-command
dev: true
- /@vue/cli-plugin-babel/4.5.15_c1ebd2c327b9916f1b14476e6a7b1d20:
+ /@vue/cli-plugin-babel/4.5.15_yecqdxnkw2wdliv6nfjhbfqysq:
resolution: {integrity: sha512-hBLrwYfFkHldEe34op/YNgPhpOWI5n5DB2Qt9I/1Epeif4M4iFaayrgjvOR9AVM6WbD3Yx7WCFszYpWrQZpBzQ==}
peerDependencies:
'@vue/cli-service': ^3.0.0 || ^4.0.0-0
dependencies:
'@babel/core': 7.28.0
- '@vue/babel-preset-app': 4.5.19_vue@3.2.31
- '@vue/cli-service': 4.5.15_0f5d62cf88f3efebf60206232b803f28
+ '@vue/babel-preset-app': 4.5.19_core-js@3.21.1+vue@3.2.31
+ '@vue/cli-service': 4.5.15_ee7biujstwg456ue5i7k23lvau
'@vue/cli-shared-utils': 4.5.19
- babel-loader: 8.4.1_9972647875b9ef9f7f84547ae14472ad
+ babel-loader: 8.4.1_tfzgi6dvxhxz674ekr5ocrdsvu
cache-loader: 4.1.0_webpack@4.47.0
thread-loader: 2.1.3_webpack@4.47.0
webpack: 4.47.0
transitivePeerDependencies:
+ - core-js
- supports-color
- vue
- webpack-cli
- webpack-command
dev: true
- /@vue/cli-plugin-babel/4.5.19_46ef8989204bb780dad9061a88bdd719:
+ /@vue/cli-plugin-babel/4.5.19_j6atvxajrz6zpejie6ym5ku4ty:
resolution: {integrity: sha512-8ebXzaMW9KNTMAN6+DzkhFsjty1ieqT7hIW5Lbk4v30Qhfjkms7lBWyXPGkoq+wAikXFa1Gnam2xmWOBqDDvWg==}
peerDependencies:
'@vue/cli-service': ^3.0.0 || ^4.0.0-0
dependencies:
'@babel/core': 7.28.0
- '@vue/babel-preset-app': 4.5.19_vue@2.6.13
- '@vue/cli-service': 4.5.19_f09f984259919b34ea31afdf24956a0d
+ '@vue/babel-preset-app': 4.5.19_core-js@3.44.0+vue@2.6.13
+ '@vue/cli-service': 4.5.19_nixqlmt6zp7dzdzrxupl7pgsaa
'@vue/cli-shared-utils': 4.5.19
- babel-loader: 8.4.1_9972647875b9ef9f7f84547ae14472ad
+ babel-loader: 8.4.1_tfzgi6dvxhxz674ekr5ocrdsvu
cache-loader: 4.1.0_webpack@4.47.0
thread-loader: 2.1.3_webpack@4.47.0
webpack: 4.47.0
transitivePeerDependencies:
+ - core-js
- supports-color
- vue
- webpack-cli
- webpack-command
dev: true
- /@vue/cli-plugin-eslint/4.5.0_f29ccfad51a698c7c8cc61a308f276d2:
+ /@vue/cli-plugin-eslint/4.5.0_6kom7lkru2mmpsgmmgrqr4tw2i:
resolution: {integrity: sha512-jlQuU738duqJZ5j9nwncMVeg6JeoLjXteDpnFDYYW5kNAWQPr6C1x7EayQ98puaC6TukitOtt1fvUdlyxj+TOg==}
peerDependencies:
'@vue/cli-service': ^3.0.0 || ^4.0.0-0
eslint: '>= 1.6.0'
dependencies:
- '@vue/cli-service': 4.5.0_f09f984259919b34ea31afdf24956a0d
+ '@vue/cli-service': 4.5.0_nixqlmt6zp7dzdzrxupl7pgsaa
'@vue/cli-shared-utils': 4.5.19
eslint: 6.8.0
- eslint-loader: 2.2.1_eslint@6.8.0+webpack@4.47.0
+ eslint-loader: 2.2.1_wsjju5mmssk4epkfodpe6kyapq
globby: 9.2.0
inquirer: 7.3.3
webpack: 4.47.0
@@ -6395,16 +6538,16 @@ packages:
- webpack-command
dev: true
- /@vue/cli-plugin-eslint/4.5.15_159f9ca94908a7070131e2c321d72521:
+ /@vue/cli-plugin-eslint/4.5.15_cwpzzkkjbctqoajr4lbsdvzfee:
resolution: {integrity: sha512-/2Fl6wY/5bz3HD035oSnFRMsKNxDxU396KqBdpCQdwdvqk4mm6JAbXqihpcBRTNPeTO6w+LwGe6FE56PVbJdbg==}
peerDependencies:
'@vue/cli-service': ^3.0.0 || ^4.0.0-0
eslint: '>= 1.6.0 < 7.0.0'
dependencies:
- '@vue/cli-service': 4.5.15_0f5d62cf88f3efebf60206232b803f28
+ '@vue/cli-service': 4.5.15_ee7biujstwg456ue5i7k23lvau
'@vue/cli-shared-utils': 4.5.19
eslint: 6.8.0
- eslint-loader: 2.2.1_eslint@6.8.0+webpack@4.47.0
+ eslint-loader: 2.2.1_wsjju5mmssk4epkfodpe6kyapq
globby: 9.2.0
inquirer: 7.3.3
webpack: 4.47.0
@@ -6415,16 +6558,16 @@ packages:
- webpack-command
dev: true
- /@vue/cli-plugin-eslint/4.5.19_291eed2a4b15311c68aabdde8b2cf70f:
+ /@vue/cli-plugin-eslint/4.5.19_fepo2kslcuyry2fkxxpiwlhxb4:
resolution: {integrity: sha512-53sa4Pu9j5KajesFlj494CcO8vVo3e3nnZ1CCKjGGnrF90id1rUeepcFfz5XjwfEtbJZp2x/NoX/EZE6zCzSFQ==}
peerDependencies:
'@vue/cli-service': ^3.0.0 || ^4.0.0-0
eslint: '>= 1.6.0 < 7.0.0'
dependencies:
- '@vue/cli-service': 4.5.19_f09f984259919b34ea31afdf24956a0d
+ '@vue/cli-service': 4.5.19_nixqlmt6zp7dzdzrxupl7pgsaa
'@vue/cli-shared-utils': 4.5.19
eslint: 6.8.0
- eslint-loader: 2.2.1_eslint@6.8.0+webpack@4.47.0
+ eslint-loader: 2.2.1_wsjju5mmssk4epkfodpe6kyapq
globby: 9.2.0
inquirer: 7.3.3
webpack: 4.47.0
@@ -6440,7 +6583,7 @@ packages:
peerDependencies:
'@vue/cli-service': ^3.0.0 || ^4.0.0-0
dependencies:
- '@vue/cli-service': 4.5.0_f09f984259919b34ea31afdf24956a0d
+ '@vue/cli-service': 4.5.0_nixqlmt6zp7dzdzrxupl7pgsaa
'@vue/cli-shared-utils': 4.5.19
dev: true
@@ -6449,7 +6592,7 @@ packages:
peerDependencies:
'@vue/cli-service': ^3.0.0 || ^4.0.0-0
dependencies:
- '@vue/cli-service': 4.5.15_0f5d62cf88f3efebf60206232b803f28
+ '@vue/cli-service': 4.5.15_ee7biujstwg456ue5i7k23lvau
'@vue/cli-shared-utils': 4.5.19
dev: true
@@ -6458,7 +6601,7 @@ packages:
peerDependencies:
'@vue/cli-service': ^3.0.0 || ^4.0.0-0
dependencies:
- '@vue/cli-service': 4.5.19_f09f984259919b34ea31afdf24956a0d
+ '@vue/cli-service': 4.5.19_nixqlmt6zp7dzdzrxupl7pgsaa
'@vue/cli-shared-utils': 4.5.19
dev: true
@@ -6467,7 +6610,7 @@ packages:
peerDependencies:
'@vue/cli-service': ^3.0.0 || ^4.0.0-0
dependencies:
- '@vue/cli-service': 4.5.0_f09f984259919b34ea31afdf24956a0d
+ '@vue/cli-service': 4.5.0_nixqlmt6zp7dzdzrxupl7pgsaa
dev: true
/@vue/cli-plugin-vuex/4.5.19_@vue+cli-service@4.5.15:
@@ -6475,7 +6618,7 @@ packages:
peerDependencies:
'@vue/cli-service': ^3.0.0 || ^4.0.0-0
dependencies:
- '@vue/cli-service': 4.5.15_0f5d62cf88f3efebf60206232b803f28
+ '@vue/cli-service': 4.5.15_ee7biujstwg456ue5i7k23lvau
dev: true
/@vue/cli-plugin-vuex/4.5.19_@vue+cli-service@4.5.19:
@@ -6483,10 +6626,10 @@ packages:
peerDependencies:
'@vue/cli-service': ^3.0.0 || ^4.0.0-0
dependencies:
- '@vue/cli-service': 4.5.19_f09f984259919b34ea31afdf24956a0d
+ '@vue/cli-service': 4.5.19_nixqlmt6zp7dzdzrxupl7pgsaa
dev: true
- /@vue/cli-service/4.5.0_f09f984259919b34ea31afdf24956a0d:
+ /@vue/cli-service/4.5.0_nixqlmt6zp7dzdzrxupl7pgsaa:
resolution: {integrity: sha512-cemIjRvjuaP3c5Srsvp3a0/KqQVB3D1x9lPKdwLZ+2IPNplNwEOKi72LR7+HZomPLLazDa4sf5yoJ7PPkrW36g==}
engines: {node: '>=8'}
hasBin: true
@@ -6524,8 +6667,8 @@ packages:
'@vue/cli-plugin-router': 4.5.19_@vue+cli-service@4.5.0
'@vue/cli-plugin-vuex': 4.5.19_@vue+cli-service@4.5.0
'@vue/cli-shared-utils': 4.5.19
- '@vue/component-compiler-utils': 3.3.0_lodash@4.17.21
- '@vue/preload-webpack-plugin': 1.1.2_c22798690011568ecfa607ecb6af1e3a
+ '@vue/component-compiler-utils': 3.3.0
+ '@vue/preload-webpack-plugin': 1.1.2_yitzq2iacfli5t5ga7wlnly6hi
'@vue/web-component-wrapper': 1.3.0
acorn: 7.4.1
acorn-walk: 7.2.0
@@ -6556,14 +6699,14 @@ packages:
lodash.transform: 4.6.0
mini-css-extract-plugin: 0.9.0_webpack@4.47.0
minimist: 1.2.8
- pnp-webpack-plugin: 1.7.0_typescript@4.6.4
+ pnp-webpack-plugin: 1.7.0
portfinder: 1.0.37
postcss-loader: 3.0.0
ssri: 7.1.1
terser-webpack-plugin: 2.3.8_webpack@4.47.0
thread-loader: 2.1.3_webpack@4.47.0
- url-loader: 2.3.0_file-loader@4.3.0+webpack@4.47.0
- vue-loader: 15.9.8_2f3b929802a1687b12f0475f183a1979
+ url-loader: 2.3.0_xnfab4wkhg6qoyn7pkd7if7xei
+ vue-loader: 15.9.8_i3ab2kpwkutymjqxim3t6dbkae
vue-loader-v16: /vue-loader/16.8.3_vue@2.6.13+webpack@4.47.0
vue-style-loader: 4.1.3
vue-template-compiler: 2.6.13_vue@2.6.13
@@ -6636,7 +6779,7 @@ packages:
- whiskers
dev: true
- /@vue/cli-service/4.5.15_0f5d62cf88f3efebf60206232b803f28:
+ /@vue/cli-service/4.5.15_ee7biujstwg456ue5i7k23lvau:
resolution: {integrity: sha512-sFWnLYVCn4zRfu45IcsIE9eXM0YpDV3S11vlM2/DVbIPAGoYo5ySpSof6aHcIvkeGsIsrHFpPHzNvDZ/efs7jA==}
engines: {node: '>=8'}
hasBin: true
@@ -6675,8 +6818,8 @@ packages:
'@vue/cli-plugin-vuex': 4.5.19_@vue+cli-service@4.5.15
'@vue/cli-shared-utils': 4.5.19
'@vue/compiler-sfc': 3.2.31
- '@vue/component-compiler-utils': 3.3.0_lodash@4.17.21
- '@vue/preload-webpack-plugin': 1.1.2_c22798690011568ecfa607ecb6af1e3a
+ '@vue/component-compiler-utils': 3.3.0
+ '@vue/preload-webpack-plugin': 1.1.2_yitzq2iacfli5t5ga7wlnly6hi
'@vue/web-component-wrapper': 1.3.0
acorn: 7.4.1
acorn-walk: 7.2.0
@@ -6706,15 +6849,15 @@ packages:
lodash.transform: 4.6.0
mini-css-extract-plugin: 0.9.0_webpack@4.47.0
minimist: 1.2.8
- pnp-webpack-plugin: 1.7.0_typescript@4.6.4
+ pnp-webpack-plugin: 1.7.0
portfinder: 1.0.37
postcss-loader: 3.0.0
sass-loader: 10.2.1
ssri: 8.0.1
terser-webpack-plugin: 1.4.6_webpack@4.47.0
thread-loader: 2.1.3_webpack@4.47.0
- url-loader: 2.3.0_file-loader@4.3.0+webpack@4.47.0
- vue-loader: 15.11.1_4c9b0935bcd0246a9317c6bc95e832a5
+ url-loader: 2.3.0_xnfab4wkhg6qoyn7pkd7if7xei
+ vue-loader: 15.11.1_3jfighbeskmcwdfhyt5x5eb77a
vue-style-loader: 4.1.3
webpack: 4.47.0
webpack-bundle-analyzer: 3.9.0
@@ -6722,7 +6865,7 @@ packages:
webpack-dev-server: 3.11.3_webpack@4.47.0
webpack-merge: 4.2.2
optionalDependencies:
- vue-loader-v16: /vue-loader/16.8.3_3412b4a9c35740e71a1246c1c6a47a90
+ vue-loader-v16: /vue-loader/16.8.3_gqjljkodk5aoogqsi3a4njd2sa
transitivePeerDependencies:
- arc-templates
- atpl
@@ -6787,7 +6930,7 @@ packages:
- whiskers
dev: true
- /@vue/cli-service/4.5.19_f09f984259919b34ea31afdf24956a0d:
+ /@vue/cli-service/4.5.19_nixqlmt6zp7dzdzrxupl7pgsaa:
resolution: {integrity: sha512-+Wpvj8fMTCt9ZPOLu5YaLkFCQmB4MrZ26aRmhhKiCQ/4PMoL6mLezfqdt6c+m2htM+1WV5RunRo+0WHl2DfwZA==}
engines: {node: '>=8'}
hasBin: true
@@ -6825,8 +6968,8 @@ packages:
'@vue/cli-plugin-router': 4.5.19_@vue+cli-service@4.5.19
'@vue/cli-plugin-vuex': 4.5.19_@vue+cli-service@4.5.19
'@vue/cli-shared-utils': 4.5.19
- '@vue/component-compiler-utils': 3.3.0_lodash@4.17.21
- '@vue/preload-webpack-plugin': 1.1.2_c22798690011568ecfa607ecb6af1e3a
+ '@vue/component-compiler-utils': 3.3.0
+ '@vue/preload-webpack-plugin': 1.1.2_yitzq2iacfli5t5ga7wlnly6hi
'@vue/web-component-wrapper': 1.3.0
acorn: 7.4.1
acorn-walk: 7.2.0
@@ -6857,14 +7000,14 @@ packages:
lodash.transform: 4.6.0
mini-css-extract-plugin: 0.9.0_webpack@4.47.0
minimist: 1.2.8
- pnp-webpack-plugin: 1.7.0_typescript@4.6.4
+ pnp-webpack-plugin: 1.7.0
portfinder: 1.0.37
postcss-loader: 3.0.0
ssri: 8.0.1
terser-webpack-plugin: 1.4.6_webpack@4.47.0
thread-loader: 2.1.3_webpack@4.47.0
- url-loader: 2.3.0_file-loader@4.3.0+webpack@4.47.0
- vue-loader: 15.9.8_2f3b929802a1687b12f0475f183a1979
+ url-loader: 2.3.0_xnfab4wkhg6qoyn7pkd7if7xei
+ vue-loader: 15.9.8_i3ab2kpwkutymjqxim3t6dbkae
vue-style-loader: 4.1.3
vue-template-compiler: 2.6.13_vue@2.6.13
webpack: 4.47.0
@@ -7026,10 +7169,10 @@ packages:
'@vue/shared': 3.5.18
dev: true
- /@vue/component-compiler-utils/3.3.0_lodash@4.17.21:
+ /@vue/component-compiler-utils/3.3.0:
resolution: {integrity: sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==}
dependencies:
- consolidate: 0.15.1_lodash@4.17.21
+ consolidate: 0.15.1
hash-sum: 1.0.2
lru-cache: 4.1.5
merge-source-map: 1.1.0
@@ -7038,7 +7181,7 @@ packages:
source-map: 0.6.1
vue-template-es2015-compiler: 1.9.1
optionalDependencies:
- prettier: 2.8.8
+ prettier: 2.4.1
transitivePeerDependencies:
- arc-templates
- atpl
@@ -7099,7 +7242,7 @@ packages:
resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
dev: false
- /@vue/preload-webpack-plugin/1.1.2_c22798690011568ecfa607ecb6af1e3a:
+ /@vue/preload-webpack-plugin/1.1.2_yitzq2iacfli5t5ga7wlnly6hi:
resolution: {integrity: sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==}
engines: {node: '>=6.0.0'}
peerDependencies:
@@ -7496,14 +7639,14 @@ packages:
'@xtuc/long': 4.2.2
dev: true
- /@webpack-cli/configtest/1.2.0_490d0688265d0e6d0d10495397f9e4cc:
+ /@webpack-cli/configtest/1.2.0_jegqncbgluhg2diqjfjzp6pezq:
resolution: {integrity: sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==}
peerDependencies:
webpack: 4.x.x || 5.x.x
webpack-cli: 4.x.x
dependencies:
- webpack: 5.100.2_e895a1b7cf9a7664b898a75f8f813ceb
- webpack-cli: 4.10.0_3497eda2b4c6c624c213829ca27e2a7e
+ webpack: 5.100.2_webpack-cli@4.10.0
+ webpack-cli: 4.10.0_gsl63ivuy3dcjqqtqkoke7rkpy
dev: true
/@webpack-cli/info/1.5.0_webpack-cli@4.10.0:
@@ -7512,10 +7655,10 @@ packages:
webpack-cli: 4.x.x
dependencies:
envinfo: 7.14.0
- webpack-cli: 4.10.0_3497eda2b4c6c624c213829ca27e2a7e
+ webpack-cli: 4.10.0_gsl63ivuy3dcjqqtqkoke7rkpy
dev: true
- /@webpack-cli/serve/1.7.0_4d04dd523775bfae9098c877d1cbab67:
+ /@webpack-cli/serve/1.7.0_jucn2urxow725eeyzb35ds5lm4:
resolution: {integrity: sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==}
peerDependencies:
webpack-cli: 4.x.x
@@ -7524,8 +7667,8 @@ packages:
webpack-dev-server:
optional: true
dependencies:
- webpack-cli: 4.10.0_3497eda2b4c6c624c213829ca27e2a7e
- webpack-dev-server: 4.15.2_490d0688265d0e6d0d10495397f9e4cc
+ webpack-cli: 4.10.0_gsl63ivuy3dcjqqtqkoke7rkpy
+ webpack-dev-server: 4.15.2_jegqncbgluhg2diqjfjzp6pezq
dev: true
/@xtuc/ieee754/1.2.0:
@@ -7736,7 +7879,7 @@ packages:
ajv:
optional: true
dependencies:
- ajv: 8.9.0
+ ajv: 8.17.1
dev: true
/ajv-keywords/3.5.2_ajv@6.12.6:
@@ -8349,7 +8492,7 @@ packages:
- supports-color
dev: true
- /babel-loader/8.2.5_7dddd9639c99a92327862aa45340f942:
+ /babel-loader/8.2.5_pxo5sy44tgusgj4gfksfgqhzii:
resolution: {integrity: sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==}
engines: {node: '>= 8.9'}
peerDependencies:
@@ -8361,10 +8504,10 @@ packages:
loader-utils: 2.0.4
make-dir: 3.1.0
schema-utils: 2.7.1
- webpack: 5.76.1_@swc+core@1.13.2+esbuild@0.14.22
+ webpack: 5.76.1_esbuild@0.14.22
dev: true
- /babel-loader/8.4.1_1f04fbb924cd1fb984eb862020a49672:
+ /babel-loader/8.4.1_d4cpxojezup3tbhlqyqcbjewoi:
resolution: {integrity: sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==}
engines: {node: '>= 8.9'}
peerDependencies:
@@ -8376,10 +8519,10 @@ packages:
loader-utils: 2.0.4
make-dir: 3.1.0
schema-utils: 2.7.1
- webpack: 5.100.2_e895a1b7cf9a7664b898a75f8f813ceb
+ webpack: 5.100.2_webpack-cli@4.10.0
dev: true
- /babel-loader/8.4.1_9972647875b9ef9f7f84547ae14472ad:
+ /babel-loader/8.4.1_tfzgi6dvxhxz674ekr5ocrdsvu:
resolution: {integrity: sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==}
engines: {node: '>= 8.9'}
peerDependencies:
@@ -9062,7 +9205,7 @@ packages:
mississippi: 3.0.0
mkdirp: 0.5.6
move-concurrently: 1.0.1
- promise-inflight: 1.0.1
+ promise-inflight: 1.0.1_bluebird@3.7.2
rimraf: 2.7.1
ssri: 6.0.2
unique-filename: 1.1.1
@@ -9497,7 +9640,7 @@ packages:
peerDependencies:
webpack: '>=4.0.1'
dependencies:
- webpack: 5.76.1_@swc+core@1.13.2+esbuild@0.14.22
+ webpack: 5.76.1_esbuild@0.14.22
dev: true
/cjs-module-lexer/1.4.3:
@@ -9703,13 +9846,15 @@ packages:
- supports-color
dev: true
- /codelyzer/6.0.2_tslint@6.1.3:
+ /codelyzer/6.0.2_dq7hearxic3slctgwagd6bnwpa:
resolution: {integrity: sha512-v3+E0Ucu2xWJMOJ2fA/q9pDT/hlxHftHGPUay1/1cTgyPV5JTHFdO9hqo837Sx2s9vKBMTt5gO+lhF95PO6J+g==}
peerDependencies:
+ '@angular/compiler': '>=2.3.1 <13.0.0 || ^12.0.0-next || ^12.1.0-next || ^12.2.0-next'
+ '@angular/core': '>=2.3.1 <13.0.0 || ^12.0.0-next || ^12.1.0-next || ^12.2.0-next'
tslint: ^5.0.0 || ^6.0.0
dependencies:
- '@angular/compiler': 9.0.0_tslib@1.14.1
- '@angular/core': 9.0.0_ed6f97b6c42afc3b298adb4ba822fb67
+ '@angular/compiler': 13.4.0
+ '@angular/core': 13.2.4_rxjs@6.6.7+zone.js@0.10.3
app-root-path: 3.1.0
aria-query: 3.0.0
axobject-query: 2.0.2
@@ -9993,7 +10138,7 @@ packages:
resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
dev: true
- /consolidate/0.15.1_lodash@4.17.21:
+ /consolidate/0.15.1:
resolution: {integrity: sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==}
engines: {node: '>= 0.10.0'}
deprecated: Please upgrade to consolidate v1.0.0+ as it has been modernized with several long-awaited fixes implemented. Maintenance is supported by Forward Email at https://forwardemail.net ; follow/watch https://github.com/ladjs/consolidate for updates and release changelog
@@ -10025,7 +10170,7 @@ packages:
lodash: ^4.17.20
marko: ^3.14.4
mote: ^0.2.0
- mustache: ^4.0.1
+ mustache: ^3.0.0
nunjucks: ^3.2.2
plates: ~0.4.11
pug: ^3.0.0
@@ -10160,7 +10305,6 @@ packages:
optional: true
dependencies:
bluebird: 3.7.2
- lodash: 4.17.21
dev: true
/constants-browserify/1.0.0:
@@ -10242,7 +10386,7 @@ packages:
normalize-path: 3.0.0
schema-utils: 4.3.2
serialize-javascript: 6.0.2
- webpack: 5.76.1_@swc+core@1.13.2+esbuild@0.14.22
+ webpack: 5.76.1_esbuild@0.14.22
dev: true
/copy-webpack-plugin/10.2.3_webpack@5.100.2:
@@ -10257,7 +10401,7 @@ packages:
normalize-path: 3.0.0
schema-utils: 4.3.2
serialize-javascript: 6.0.2
- webpack: 5.100.2_e895a1b7cf9a7664b898a75f8f813ceb
+ webpack: 5.100.2_webpack-cli@4.10.0
dev: true
/copy-webpack-plugin/5.1.2_webpack@4.47.0:
@@ -10548,7 +10692,7 @@ packages:
postcss-value-parser: 4.2.0
schema-utils: 3.3.0
semver: 7.7.2
- webpack: 5.100.2_e895a1b7cf9a7664b898a75f8f813ceb
+ webpack: 5.100.2_webpack-cli@4.10.0
dev: true
/css-loader/6.5.1_webpack@5.76.1:
@@ -10565,7 +10709,7 @@ packages:
postcss-modules-values: 4.0.0_postcss@8.4.5
postcss-value-parser: 4.2.0
semver: 7.3.5
- webpack: 5.76.1_@swc+core@1.13.2+esbuild@0.14.22
+ webpack: 5.76.1_esbuild@0.14.22
dev: true
/css-prefers-color-scheme/6.0.3_postcss@8.4.5:
@@ -12158,7 +12302,7 @@ packages:
source-map: 0.6.1
dev: true
- /eslint-loader/2.2.1_eslint@6.8.0+webpack@4.47.0:
+ /eslint-loader/2.2.1_wsjju5mmssk4epkfodpe6kyapq:
resolution: {integrity: sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==}
deprecated: This loader has been deprecated. Please use eslint-webpack-plugin
peerDependencies:
@@ -13044,7 +13188,7 @@ packages:
dependencies:
loader-utils: 2.0.4
schema-utils: 3.3.0
- webpack: 5.100.2_e895a1b7cf9a7664b898a75f8f813ceb
+ webpack: 5.100.2_webpack-cli@4.10.0
dev: true
/file-uri-to-path/1.0.0:
@@ -13677,7 +13821,7 @@ packages:
fs.realpath: 1.0.0
inflight: 1.0.6
inherits: 2.0.4
- minimatch: 3.0.5
+ minimatch: 3.1.2
once: 1.4.0
path-is-absolute: 1.0.1
dev: true
@@ -14584,7 +14728,7 @@ packages:
lodash: 4.17.21
pretty-error: 4.0.0
tapable: 2.2.2
- webpack: 5.100.2_@swc+core@1.13.2
+ webpack: 5.100.2
dev: true
/htmlparser2/6.1.0:
@@ -14655,12 +14799,12 @@ packages:
dependencies:
'@tootallnate/once': 2.0.0
agent-base: 6.0.2
- debug: 4.3.3
+ debug: 4.4.1
transitivePeerDependencies:
- supports-color
dev: true
- /http-proxy-middleware/0.19.1_debug@4.4.1+supports-color@6.1.0:
+ /http-proxy-middleware/0.19.1_2exdtx4mwvr4bxk6slc5i6wlxq:
resolution: {integrity: sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==}
engines: {node: '>=4.0.0'}
dependencies:
@@ -15826,7 +15970,7 @@ packages:
resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==}
engines: {node: '>=8'}
dependencies:
- '@babel/core': 7.16.12
+ '@babel/core': 7.28.0
'@babel/parser': 7.28.0
'@istanbuljs/schema': 0.1.3
istanbul-lib-coverage: 3.2.2
@@ -16656,7 +16800,7 @@ packages:
- supports-color
dev: true
- /karma-jasmine-html-reporter/1.7.0_83b524e6b05909328d7801c9bc9b7922:
+ /karma-jasmine-html-reporter/1.7.0_qo2sjzvqleetfdlyahe3zg3zei:
resolution: {integrity: sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==}
peerDependencies:
jasmine-core: '>=3.8'
@@ -16819,7 +16963,7 @@ packages:
dependencies:
klona: 2.0.6
less: 4.1.2
- webpack: 5.76.1_@swc+core@1.13.2+esbuild@0.14.22
+ webpack: 5.76.1_esbuild@0.14.22
dev: true
/less-loader/5.0.0:
@@ -16834,7 +16978,7 @@ packages:
pify: 4.0.1
dev: true
- /less-loader/5.0.0_less@3.13.1+webpack@5.100.2:
+ /less-loader/5.0.0_plbcidfwhrv3gnbjs3auswajau:
resolution: {integrity: sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==}
engines: {node: '>= 4.8.0'}
peerDependencies:
@@ -16845,7 +16989,7 @@ packages:
less: 3.13.1
loader-utils: 1.4.2
pify: 4.0.1
- webpack: 5.100.2_e895a1b7cf9a7664b898a75f8f813ceb
+ webpack: 5.100.2_webpack-cli@4.10.0
dev: true
/less/3.13.1:
@@ -16930,7 +17074,7 @@ packages:
webpack-sources:
optional: true
dependencies:
- webpack: 5.76.1_@swc+core@1.13.2+esbuild@0.14.22
+ webpack: 5.76.1_esbuild@0.14.22
webpack-sources: 3.3.3
dev: true
@@ -17341,7 +17485,7 @@ packages:
resolution: {integrity: sha512-xTYd4JVHpSCW+aqDof6w/MebaMVNTVYBZhbB/vi513xXdiPT92JMVCo0Jq8W2UZnzYRFeVbQiQ+I25l13JuKvA==}
hasBin: true
optionalDependencies:
- minimist: 1.2.8
+ minimist: 1.2.5
dev: true
/makeerror/1.0.12:
@@ -18490,7 +18634,7 @@ packages:
webpack: ^5.0.0
dependencies:
schema-utils: 4.3.2
- webpack: 5.76.1_@swc+core@1.13.2+esbuild@0.14.22
+ webpack: 5.76.1_esbuild@0.14.22
dev: true
/mini-css-extract-plugin/2.9.2_webpack@5.100.2:
@@ -18501,7 +18645,7 @@ packages:
dependencies:
schema-utils: 4.3.2
tapable: 2.2.2
- webpack: 5.100.2_e895a1b7cf9a7664b898a75f8f813ceb
+ webpack: 5.100.2_webpack-cli@4.10.0
dev: true
/minimalistic-assert/1.0.1:
@@ -18672,7 +18816,7 @@ packages:
hasBin: true
dev: true
- /mobx-react-lite/3.4.3_823aee0b6ad81eb6055e2299c84e0cfd:
+ /mobx-react-lite/3.4.3_qi5o4c3k3aplmbk6ekm4qtqm7u:
resolution: {integrity: sha512-NkJREyFTSUXR772Qaai51BnE1voWx56LOL80xG7qkZr6vo8vEaLF3sz1JNUVh+rxmUzxYaqOhfuxTfqUh0FXUg==}
peerDependencies:
mobx: ^6.1.0
@@ -18690,7 +18834,7 @@ packages:
react-dom: 17.0.2_react@17.0.2
dev: false
- /mobx-react/7.6.0_823aee0b6ad81eb6055e2299c84e0cfd:
+ /mobx-react/7.6.0_qi5o4c3k3aplmbk6ekm4qtqm7u:
resolution: {integrity: sha512-+HQUNuh7AoQ9ZnU6c4rvbiVVl+wEkb9WqYsVDzGLng+Dqj1XntHu79PvEWKtSMoMj67vFp/ZPXcElosuJO8ckA==}
peerDependencies:
mobx: ^6.1.0
@@ -18704,7 +18848,7 @@ packages:
optional: true
dependencies:
mobx: 6.13.7
- mobx-react-lite: 3.4.3_823aee0b6ad81eb6055e2299c84e0cfd
+ mobx-react-lite: 3.4.3_qi5o4c3k3aplmbk6ekm4qtqm7u
react: 17.0.2
react-dom: 17.0.2_react@17.0.2
dev: false
@@ -18760,7 +18904,7 @@ packages:
kleur: 3.0.3
listify: 1.0.3
lodash: 4.17.21
- minimist: 1.2.8
+ minimist: 1.2.5
prop-ini: 0.0.2
rc: 1.2.8
readme-badger: 0.3.0
@@ -18788,7 +18932,7 @@ packages:
lodash: 4.17.21
longest: 2.0.1
middleearth-names: 1.1.0
- minimist: 1.2.8
+ minimist: 1.2.5
mrm-core: 6.1.7
semver-utils: 1.1.4
update-notifier: 4.1.3
@@ -20037,11 +20181,11 @@ packages:
semver-compare: 1.0.0
dev: true
- /pnp-webpack-plugin/1.7.0_typescript@4.6.4:
+ /pnp-webpack-plugin/1.7.0:
resolution: {integrity: sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==}
engines: {node: '>=6'}
dependencies:
- ts-pnp: 1.2.0_typescript@4.6.4
+ ts-pnp: 1.2.0
transitivePeerDependencies:
- typescript
dev: true
@@ -20389,7 +20533,7 @@ packages:
schema-utils: 1.0.0
dev: true
- /postcss-loader/6.2.1_postcss@8.4.5+webpack@5.76.1:
+ /postcss-loader/6.2.1_2zav35mtvqhznskbbcl7zq3hti:
resolution: {integrity: sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==}
engines: {node: '>= 12.13.0'}
peerDependencies:
@@ -20400,7 +20544,7 @@ packages:
klona: 2.0.6
postcss: 8.4.5
semver: 7.3.5
- webpack: 5.76.1_@swc+core@1.13.2+esbuild@0.14.22
+ webpack: 5.76.1_esbuild@0.14.22
dev: true
/postcss-logical/5.0.4_postcss@8.4.5:
@@ -20613,7 +20757,7 @@ packages:
peerDependencies:
postcss: ^8.2
dependencies:
- '@csstools/selector-specificity': 2.2.0_postcss-selector-parser@6.1.2
+ '@csstools/selector-specificity': 2.2.0_j747yjqyvnzekvomyruvypt3ti
postcss: 8.4.5
postcss-selector-parser: 6.1.2
dev: true
@@ -20952,7 +21096,7 @@ packages:
dependencies:
'@typescript-eslint/parser': 1.13.0_eslint@5.16.0
common-tags: 1.8.2
- core-js: 3.44.0
+ core-js: 3.21.1
dlv: 1.1.3
eslint: 5.16.0
indent-string: 4.0.0
@@ -20979,14 +21123,6 @@ packages:
hasBin: true
dev: true
- /prettier/2.8.8:
- resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
- engines: {node: '>=10.13.0'}
- hasBin: true
- requiresBuild: true
- dev: true
- optional: true
-
/pretty-bytes/5.6.0:
resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==}
engines: {node: '>=6'}
@@ -21055,6 +21191,17 @@ packages:
optional: true
dev: true
+ /promise-inflight/1.0.1_bluebird@3.7.2:
+ resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
+ peerDependencies:
+ bluebird: '*'
+ peerDependenciesMeta:
+ bluebird:
+ optional: true
+ dependencies:
+ bluebird: 3.7.2
+ dev: true
+
/promise-polyfill/8.3.0:
resolution: {integrity: sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==}
@@ -21342,7 +21489,7 @@ packages:
dependencies:
deep-extend: 0.6.0
ini: 1.3.8
- minimist: 1.2.8
+ minimist: 1.2.5
strip-json-comments: 2.0.1
dev: true
@@ -21373,6 +21520,15 @@ packages:
react: 18.1.0
dev: false
+ /react-clientside-effect/1.2.8_react@19.1.0:
+ resolution: {integrity: sha512-ma2FePH0z3px2+WOu6h+YycZcEvFmmxIlAb62cF52bG86eMySciO/EQZeQMXd07kPCYB0a1dWDT5J+KE9mCDUw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
+ dependencies:
+ '@babel/runtime': 7.28.2
+ react: 19.1.0
+ dev: false
+
/react-dom/16.14.0_react@16.14.0:
resolution: {integrity: sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==}
peerDependencies:
@@ -21410,7 +21566,6 @@ packages:
dependencies:
react: 19.1.0
scheduler: 0.26.0
- dev: false
/react-focus-lock/2.13.6_react@16.14.0:
resolution: {integrity: sha512-ehylFFWyYtBKXjAO9+3v8d0i+cnc1trGS0vlTGhzFW1vbFXVUTmR8s2tt/ZQG8x5hElg6rhENlLG1H3EZK0Llg==}
@@ -21466,6 +21621,24 @@ packages:
use-sidecar: 1.1.3_react@18.1.0
dev: false
+ /react-focus-lock/2.13.6_react@19.1.0:
+ resolution: {integrity: sha512-ehylFFWyYtBKXjAO9+3v8d0i+cnc1trGS0vlTGhzFW1vbFXVUTmR8s2tt/ZQG8x5hElg6rhENlLG1H3EZK0Llg==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.28.2
+ focus-lock: 1.3.6
+ prop-types: 15.8.1
+ react: 19.1.0
+ react-clientside-effect: 1.2.8_react@19.1.0
+ use-callback-ref: 1.3.3_react@19.1.0
+ use-sidecar: 1.1.3_react@19.1.0
+ dev: false
+
/react-is/16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
@@ -21531,6 +21704,31 @@ packages:
- supports-color
dev: true
+ /react-markdown/7.1.1_react@19.1.0:
+ resolution: {integrity: sha512-bXS7indkcPlCLB6wRFFzX8Xdghr62TBxUF2587o+CUkaZlNaoILb2qNt+5pYmTZuCOC+OeEcdJ+06mu5whtCVQ==}
+ peerDependencies:
+ '@types/react': '>=16'
+ react: '>=16'
+ dependencies:
+ '@types/hast': 2.3.10
+ '@types/unist': 2.0.11
+ comma-separated-tokens: 2.0.3
+ hast-util-whitespace: 2.0.1
+ prop-types: 15.8.1
+ property-information: 6.5.0
+ react: 19.1.0
+ react-is: 17.0.2
+ remark-parse: 10.0.2
+ remark-rehype: 9.1.0
+ space-separated-tokens: 2.0.2
+ style-to-object: 0.3.0
+ unified: 10.1.2
+ unist-util-visit: 4.1.2
+ vfile: 5.3.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/react-markdown/8.0.7_react@17.0.2:
resolution: {integrity: sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==}
peerDependencies:
@@ -21582,7 +21780,7 @@ packages:
tiny-warning: 1.0.3
dev: false
- /react-router-dom/6.3.0_react-dom@18.1.0+react@18.1.0:
+ /react-router-dom/6.3.0_ef5jwxihqo6n7gxfmzogljlgcm:
resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==}
peerDependencies:
react: '>=16.8'
@@ -21594,20 +21792,19 @@ packages:
react-router: 6.3.0_react@18.1.0
dev: false
- /react-router-dom/6.30.1_react-dom@17.0.2+react@17.0.2:
- resolution: {integrity: sha512-llKsgOkZdbPU1Eg3zK8lCn+sjD9wMRZZPuzmdWWX5SUs8OFkN5HnFVC0u5KMeMaC9aoancFI/KoLuKPqN+hxHw==}
- engines: {node: '>=14.0.0'}
+ /react-router-dom/6.3.0_j6k6oay3ugsr56slyfvma2drry:
+ resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==}
peerDependencies:
react: '>=16.8'
react-dom: '>=16.8'
dependencies:
- '@remix-run/router': 1.23.0
- react: 17.0.2
- react-dom: 17.0.2_react@17.0.2
- react-router: 6.30.1_react@17.0.2
+ history: 5.3.0
+ react: 19.1.0
+ react-dom: 19.1.0_react@19.1.0
+ react-router: 6.3.0_react@19.1.0
dev: false
- /react-router-dom/6.30.1_react-dom@19.1.0+react@19.1.0:
+ /react-router-dom/6.30.1_j6k6oay3ugsr56slyfvma2drry:
resolution: {integrity: sha512-llKsgOkZdbPU1Eg3zK8lCn+sjD9wMRZZPuzmdWWX5SUs8OFkN5HnFVC0u5KMeMaC9aoancFI/KoLuKPqN+hxHw==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -21620,6 +21817,19 @@ packages:
react-router: 6.30.1_react@19.1.0
dev: false
+ /react-router-dom/6.30.1_sfoxds7t5ydpegc3knd667wn6m:
+ resolution: {integrity: sha512-llKsgOkZdbPU1Eg3zK8lCn+sjD9wMRZZPuzmdWWX5SUs8OFkN5HnFVC0u5KMeMaC9aoancFI/KoLuKPqN+hxHw==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ react: '>=16.8'
+ react-dom: '>=16.8'
+ dependencies:
+ '@remix-run/router': 1.23.0
+ react: 17.0.2
+ react-dom: 17.0.2_react@17.0.2
+ react-router: 6.30.1_react@17.0.2
+ dev: false
+
/react-router/5.3.4_react@16.14.0:
resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==}
peerDependencies:
@@ -21646,6 +21856,15 @@ packages:
react: 18.1.0
dev: false
+ /react-router/6.3.0_react@19.1.0:
+ resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==}
+ peerDependencies:
+ react: '>=16.8'
+ dependencies:
+ history: 5.3.0
+ react: 19.1.0
+ dev: false
+
/react-router/6.30.1_react@17.0.2:
resolution: {integrity: sha512-X1m21aEmxGXqENEPG3T6u0Th7g0aS4ZmoNynhbs+Cn+q+QGTLt+d5IQ2bHAXKzKcxGJjxACpVbnYQSCRcfxHlQ==}
engines: {node: '>=14.0.0'}
@@ -21666,7 +21885,7 @@ packages:
react: 19.1.0
dev: false
- /react-svg/15.1.9_react-dom@16.14.0+react@16.14.0:
+ /react-svg/15.1.9_wcqkhtmu7mswc6yz4uyexck3ty:
resolution: {integrity: sha512-N+/eD+jadXUpUN3ckdVYUJPgJSKDY42pae+Vlt6bHhP7y8pn+wtFqy2J+REZiyMjpyvoyt/opk74vrlsZqOhog==}
peerDependencies:
react: ^16.0.0 || ^17.0.0 || ^18.0.0
@@ -21680,7 +21899,7 @@ packages:
react-dom: 16.14.0_react@16.14.0
dev: true
- /react-transition-group/4.4.5_react-dom@16.14.0+react@16.14.0:
+ /react-transition-group/4.4.5_ef5jwxihqo6n7gxfmzogljlgcm:
resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
peerDependencies:
react: '>=16.6.0'
@@ -21690,11 +21909,25 @@ packages:
dom-helpers: 5.2.1
loose-envify: 1.4.0
prop-types: 15.8.1
- react: 16.14.0
- react-dom: 16.14.0_react@16.14.0
+ react: 18.1.0
+ react-dom: 18.1.0_react@18.1.0
+ dev: false
+
+ /react-transition-group/4.4.5_j6k6oay3ugsr56slyfvma2drry:
+ resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
+ peerDependencies:
+ react: '>=16.6.0'
+ react-dom: '>=16.6.0'
+ dependencies:
+ '@babel/runtime': 7.28.2
+ dom-helpers: 5.2.1
+ loose-envify: 1.4.0
+ prop-types: 15.8.1
+ react: 19.1.0
+ react-dom: 19.1.0_react@19.1.0
dev: false
- /react-transition-group/4.4.5_react-dom@17.0.2+react@17.0.2:
+ /react-transition-group/4.4.5_sfoxds7t5ydpegc3knd667wn6m:
resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
peerDependencies:
react: '>=16.6.0'
@@ -21708,7 +21941,7 @@ packages:
react-dom: 17.0.2_react@17.0.2
dev: false
- /react-transition-group/4.4.5_react-dom@18.1.0+react@18.1.0:
+ /react-transition-group/4.4.5_wcqkhtmu7mswc6yz4uyexck3ty:
resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
peerDependencies:
react: '>=16.6.0'
@@ -21718,8 +21951,8 @@ packages:
dom-helpers: 5.2.1
loose-envify: 1.4.0
prop-types: 15.8.1
- react: 18.1.0
- react-dom: 18.1.0_react@18.1.0
+ react: 16.14.0
+ react-dom: 16.14.0_react@16.14.0
dev: false
/react/16.14.0:
@@ -21746,7 +21979,6 @@ packages:
/react/19.1.0:
resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==}
engines: {node: '>=0.10.0'}
- dev: false
/read-cache/1.0.0:
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
@@ -22954,7 +23186,7 @@ packages:
klona: 2.0.6
neo-async: 2.6.2
sass: 1.49.9
- webpack: 5.76.1_@swc+core@1.13.2+esbuild@0.14.22
+ webpack: 5.76.1_esbuild@0.14.22
dev: true
/sass/1.49.9:
@@ -23009,7 +23241,6 @@ packages:
/scheduler/0.26.0:
resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==}
- dev: false
/schema-utils/1.0.0:
resolution: {integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==}
@@ -23642,7 +23873,7 @@ packages:
engines: {node: '>= 10'}
dependencies:
agent-base: 6.0.2
- debug: 4.3.3
+ debug: 4.4.1
socks: 2.8.6
transitivePeerDependencies:
- supports-color
@@ -23653,7 +23884,7 @@ packages:
engines: {node: '>= 10'}
dependencies:
agent-base: 6.0.2
- debug: 4.3.3
+ debug: 4.4.1
socks: 2.8.6
transitivePeerDependencies:
- supports-color
@@ -23691,7 +23922,7 @@ packages:
abab: 2.0.6
iconv-lite: 0.6.3
source-map-js: 1.2.1
- webpack: 5.76.1_@swc+core@1.13.2+esbuild@0.14.22
+ webpack: 5.76.1_esbuild@0.14.22
dev: true
/source-map-resolve/0.5.3:
@@ -24220,7 +24451,7 @@ packages:
dependencies:
loader-utils: 2.0.4
schema-utils: 3.3.0
- webpack: 5.100.2_e895a1b7cf9a7664b898a75f8f813ceb
+ webpack: 5.100.2_webpack-cli@4.10.0
dev: true
/style-to-js/1.1.17:
@@ -24256,7 +24487,7 @@ packages:
postcss-selector-parser: 3.1.2
dev: true
- /stylus-loader/6.2.0_stylus@0.56.0+webpack@5.76.1:
+ /stylus-loader/6.2.0_tflq7wolhb5jandkcgy52zew2y:
resolution: {integrity: sha512-5dsDc7qVQGRoc6pvCL20eYgRUxepZ9FpeK28XhdXaIPP6kXr6nI1zAAKFQgP5OBkOfKaURp4WUpJzspg1f01Gg==}
engines: {node: '>= 12.13.0'}
peerDependencies:
@@ -24267,7 +24498,7 @@ packages:
klona: 2.0.6
normalize-path: 3.0.0
stylus: github.com/stylus/stylus/14462ea7e7bffce8f192f7a933114ffbf577aa84
- webpack: 5.76.1_@swc+core@1.13.2+esbuild@0.14.22
+ webpack: 5.76.1_esbuild@0.14.22
dev: true
/sucrase/3.35.0:
@@ -24534,7 +24765,7 @@ packages:
- bluebird
dev: true
- /terser-webpack-plugin/5.3.14_2cc24e4f6230cbace50dae83595efcbc:
+ /terser-webpack-plugin/5.3.14_uxpskue2li3bnzylg2ijqeom6q:
resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==}
engines: {node: '>= 10.13.0'}
peerDependencies:
@@ -24551,16 +24782,15 @@ packages:
optional: true
dependencies:
'@jridgewell/trace-mapping': 0.3.29
- '@swc/core': 1.13.2
esbuild: 0.14.22
jest-worker: 27.5.1
schema-utils: 4.3.2
serialize-javascript: 6.0.2
terser: 5.43.1
- webpack: 5.76.1_@swc+core@1.13.2+esbuild@0.14.22
+ webpack: 5.76.1_esbuild@0.14.22
dev: true
- /terser-webpack-plugin/5.3.14_@swc+core@1.13.2+webpack@5.100.2:
+ /terser-webpack-plugin/5.3.14_webpack@5.100.2:
resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==}
engines: {node: '>= 10.13.0'}
peerDependencies:
@@ -24577,12 +24807,11 @@ packages:
optional: true
dependencies:
'@jridgewell/trace-mapping': 0.3.29
- '@swc/core': 1.13.2
jest-worker: 27.5.1
schema-utils: 4.3.2
serialize-javascript: 6.0.2
terser: 5.43.1
- webpack: 5.100.2_@swc+core@1.13.2
+ webpack: 5.100.2
dev: true
/terser/4.8.1:
@@ -24624,7 +24853,7 @@ packages:
dependencies:
'@istanbuljs/schema': 0.1.3
glob: 7.2.0
- minimatch: 3.0.5
+ minimatch: 3.1.2
dev: true
/text-table/0.2.0:
@@ -24870,7 +25099,7 @@ packages:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
dev: true
- /ts-jest/27.0.7_af55d4cbc787ed4cc2d7ab1ebb0a0b8a:
+ /ts-jest/27.0.7_v5k5js6hq7wuzqwxvmplwcqlri:
resolution: {integrity: sha512-O41shibMqzdafpuP+CkrOL7ykbmLh+FqQrXEmV9CydQ5JBk0Sj0uAEF5TNNe94fZWKm3yYvWa/IbyV4Yg1zK2Q==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
hasBin: true
@@ -24901,7 +25130,7 @@ packages:
yargs-parser: 20.2.9
dev: true
- /ts-node/10.9.2_b5ef9a98e3d44ef05ac403c9fc81607a:
+ /ts-node/10.9.2_mdb3dbfqy5sebt7ydoefkswigu:
resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
hasBin: true
peerDependencies:
@@ -24916,7 +25145,6 @@ packages:
optional: true
dependencies:
'@cspotcode/source-map-support': 0.8.1
- '@swc/core': 1.13.2
'@tsconfig/node10': 1.0.11
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
@@ -24948,7 +25176,7 @@ packages:
yn: 3.1.1
dev: true
- /ts-pnp/1.2.0_typescript@4.6.4:
+ /ts-pnp/1.2.0:
resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==}
engines: {node: '>=6'}
peerDependencies:
@@ -24956,8 +25184,6 @@ packages:
peerDependenciesMeta:
typescript:
optional: true
- dependencies:
- typescript: 4.6.4
dev: true
/tsconfig-paths/3.15.0:
@@ -25190,7 +25416,6 @@ packages:
resolution: {integrity: sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==}
engines: {node: '>=4.2.0'}
hasBin: true
- dev: true
/typescript/4.9.5:
resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
@@ -25602,7 +25827,7 @@ packages:
resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==}
dev: true
- /url-loader/2.3.0_file-loader@4.3.0+webpack@4.47.0:
+ /url-loader/2.3.0_xnfab4wkhg6qoyn7pkd7if7xei:
resolution: {integrity: sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==}
engines: {node: '>= 8.9.0'}
peerDependencies:
@@ -25634,7 +25859,7 @@ packages:
schema-utils: 3.3.0
dev: true
- /url-loader/4.1.1_7dd85ce9aa6ee9f21630ee3b2a7ea123:
+ /url-loader/4.1.1_pxmfz2nkn3u7efrq5y5su7vbem:
resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==}
engines: {node: '>= 10.13.0'}
peerDependencies:
@@ -25648,7 +25873,7 @@ packages:
loader-utils: 2.0.4
mime-types: 2.1.35
schema-utils: 3.3.0
- webpack: 5.100.2_e895a1b7cf9a7664b898a75f8f813ceb
+ webpack: 5.100.2_webpack-cli@4.10.0
dev: true
/url-parse-lax/1.0.0:
@@ -25728,6 +25953,20 @@ packages:
tslib: 2.8.1
dev: false
+ /use-callback-ref/1.3.3_react@19.1.0:
+ resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ react: 19.1.0
+ tslib: 2.8.1
+ dev: false
+
/use-sidecar/1.1.3_react@16.14.0:
resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==}
engines: {node: '>=10'}
@@ -25773,6 +26012,21 @@ packages:
tslib: 2.8.1
dev: false
+ /use-sidecar/1.1.3_react@19.1.0:
+ resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ detect-node-es: 1.1.0
+ react: 19.1.0
+ tslib: 2.8.1
+ dev: false
+
/use/3.1.1:
resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==}
engines: {node: '>=0.10.0'}
@@ -26041,7 +26295,7 @@ packages:
resolution: {integrity: sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==}
dev: true
- /vue-loader/15.11.1_4c9b0935bcd0246a9317c6bc95e832a5:
+ /vue-loader/15.11.1_3jfighbeskmcwdfhyt5x5eb77a:
resolution: {integrity: sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==}
peerDependencies:
'@vue/compiler-sfc': ^3.0.8
@@ -26061,12 +26315,11 @@ packages:
optional: true
dependencies:
'@vue/compiler-sfc': 3.2.31
- '@vue/component-compiler-utils': 3.3.0_lodash@4.17.21
+ '@vue/component-compiler-utils': 3.3.0
cache-loader: 4.1.0_webpack@4.47.0
css-loader: 3.6.0_webpack@4.47.0
hash-sum: 1.0.2
loader-utils: 1.4.2
- prettier: 2.4.1
vue-hot-reload-api: 2.3.4
vue-style-loader: 4.1.3
webpack: 4.47.0
@@ -26126,7 +26379,7 @@ packages:
- whiskers
dev: true
- /vue-loader/15.9.8_2f3b929802a1687b12f0475f183a1979:
+ /vue-loader/15.9.8_i3ab2kpwkutymjqxim3t6dbkae:
resolution: {integrity: sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==}
peerDependencies:
'@vue/compiler-sfc': ^3.0.8
@@ -26142,7 +26395,7 @@ packages:
vue-template-compiler:
optional: true
dependencies:
- '@vue/component-compiler-utils': 3.3.0_lodash@4.17.21
+ '@vue/component-compiler-utils': 3.3.0
cache-loader: 4.1.0_webpack@4.47.0
css-loader: 3.6.0_webpack@4.47.0
hash-sum: 1.0.2
@@ -26207,7 +26460,7 @@ packages:
- whiskers
dev: true
- /vue-loader/15.9.8_53627ebac05ecb7d1ca56520271ef4da:
+ /vue-loader/15.9.8_iz65jxxzpozjtfy2ypfjfwww74:
resolution: {integrity: sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==}
peerDependencies:
'@vue/compiler-sfc': ^3.0.8
@@ -26223,7 +26476,7 @@ packages:
vue-template-compiler:
optional: true
dependencies:
- '@vue/component-compiler-utils': 3.3.0_lodash@4.17.21
+ '@vue/component-compiler-utils': 3.3.0
hash-sum: 1.0.2
loader-utils: 1.4.2
vue-hot-reload-api: 2.3.4
@@ -26285,7 +26538,7 @@ packages:
- whiskers
dev: true
- /vue-loader/16.8.3_3412b4a9c35740e71a1246c1c6a47a90:
+ /vue-loader/16.8.3_gqjljkodk5aoogqsi3a4njd2sa:
resolution: {integrity: sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==}
peerDependencies:
'@vue/compiler-sfc': ^3.0.8
@@ -26325,8 +26578,12 @@ packages:
webpack: 4.47.0
dev: true
- /vue-router/3.6.5:
+ /vue-router/3.6.5_vue@2.6.13:
resolution: {integrity: sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ==}
+ peerDependencies:
+ vue: ^2
+ dependencies:
+ vue: 2.6.13
dev: false
/vue-router/4.0.12_vue@3.2.31:
@@ -26543,7 +26800,7 @@ packages:
javascript-stringify: 2.1.0
dev: true
- /webpack-cli/4.10.0_3497eda2b4c6c624c213829ca27e2a7e:
+ /webpack-cli/4.10.0_gsl63ivuy3dcjqqtqkoke7rkpy:
resolution: {integrity: sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==}
engines: {node: '>=10.13.0'}
hasBin: true
@@ -26564,9 +26821,9 @@ packages:
optional: true
dependencies:
'@discoveryjs/json-ext': 0.5.7
- '@webpack-cli/configtest': 1.2.0_490d0688265d0e6d0d10495397f9e4cc
+ '@webpack-cli/configtest': 1.2.0_jegqncbgluhg2diqjfjzp6pezq
'@webpack-cli/info': 1.5.0_webpack-cli@4.10.0
- '@webpack-cli/serve': 1.7.0_4d04dd523775bfae9098c877d1cbab67
+ '@webpack-cli/serve': 1.7.0_jucn2urxow725eeyzb35ds5lm4
colorette: 2.0.20
commander: 7.2.0
cross-spawn: 7.0.6
@@ -26574,8 +26831,8 @@ packages:
import-local: 3.2.0
interpret: 2.2.0
rechoir: 0.7.1
- webpack: 5.100.2_e895a1b7cf9a7664b898a75f8f813ceb
- webpack-dev-server: 4.15.2_490d0688265d0e6d0d10495397f9e4cc
+ webpack: 5.100.2_webpack-cli@4.10.0
+ webpack-dev-server: 4.15.2_jegqncbgluhg2diqjfjzp6pezq
webpack-merge: 5.10.0
dev: true
@@ -26604,7 +26861,7 @@ packages:
mime-types: 2.1.35
range-parser: 1.2.1
schema-utils: 4.3.2
- webpack: 5.76.1_@swc+core@1.13.2+esbuild@0.14.22
+ webpack: 5.76.1_esbuild@0.14.22
dev: true
/webpack-dev-middleware/5.3.4_webpack@5.100.2:
@@ -26618,7 +26875,7 @@ packages:
mime-types: 2.1.35
range-parser: 1.2.1
schema-utils: 4.3.2
- webpack: 5.100.2_e895a1b7cf9a7664b898a75f8f813ceb
+ webpack: 5.100.2_webpack-cli@4.10.0
dev: true
/webpack-dev-server/3.11.3_webpack@4.47.0:
@@ -26641,7 +26898,7 @@ packages:
del: 4.1.1
express: 4.21.2_supports-color@6.1.0
html-entities: 1.4.0
- http-proxy-middleware: 0.19.1_debug@4.4.1+supports-color@6.1.0
+ http-proxy-middleware: 0.19.1_2exdtx4mwvr4bxk6slc5i6wlxq
import-local: 2.0.0
internal-ip: 4.3.0
ip: 1.1.9
@@ -26671,7 +26928,7 @@ packages:
- utf-8-validate
dev: true
- /webpack-dev-server/4.15.2_490d0688265d0e6d0d10495397f9e4cc:
+ /webpack-dev-server/4.15.2_jegqncbgluhg2diqjfjzp6pezq:
resolution: {integrity: sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==}
engines: {node: '>= 12.13.0'}
hasBin: true
@@ -26712,8 +26969,8 @@ packages:
serve-index: 1.9.1
sockjs: 0.3.24
spdy: 4.0.2
- webpack: 5.100.2_e895a1b7cf9a7664b898a75f8f813ceb
- webpack-cli: 4.10.0_3497eda2b4c6c624c213829ca27e2a7e
+ webpack: 5.100.2_webpack-cli@4.10.0
+ webpack-cli: 4.10.0_gsl63ivuy3dcjqqtqkoke7rkpy
webpack-dev-middleware: 5.3.4_webpack@5.100.2
ws: 8.18.3
transitivePeerDependencies:
@@ -26761,7 +27018,7 @@ packages:
sockjs: 0.3.24
spdy: 4.0.2
strip-ansi: 7.1.0
- webpack: 5.76.1_@swc+core@1.13.2+esbuild@0.14.22
+ webpack: 5.76.1_esbuild@0.14.22
webpack-dev-middleware: 5.3.0_webpack@5.76.1
ws: 8.18.3
transitivePeerDependencies:
@@ -26815,7 +27072,7 @@ packages:
engines: {node: '>=10.13.0'}
dev: true
- /webpack-subresource-integrity/5.1.0_b1cc9547adf104f675bf29e24358ec6a:
+ /webpack-subresource-integrity/5.1.0_whgjkr5n6ecpm5n7fhregwhmni:
resolution: {integrity: sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==}
engines: {node: '>= 12'}
peerDependencies:
@@ -26827,7 +27084,7 @@ packages:
dependencies:
html-webpack-plugin: 5.6.3_webpack@5.100.2
typed-assert: 1.0.9
- webpack: 5.76.1_@swc+core@1.13.2+esbuild@0.14.22
+ webpack: 5.76.1_esbuild@0.14.22
dev: true
/webpack/4.47.0:
@@ -26870,7 +27127,7 @@ packages:
- supports-color
dev: true
- /webpack/5.100.2_@swc+core@1.13.2:
+ /webpack/5.100.2:
resolution: {integrity: sha512-QaNKAvGCDRh3wW1dsDjeMdDXwZm2vqq3zn6Pvq4rHOEOGSaUMgOOjG2Y9ZbIGzpfkJk9ZYTHpDqgDfeBDcnLaw==}
engines: {node: '>=10.13.0'}
hasBin: true
@@ -26902,7 +27159,7 @@ packages:
neo-async: 2.6.2
schema-utils: 4.3.2
tapable: 2.2.2
- terser-webpack-plugin: 5.3.14_@swc+core@1.13.2+webpack@5.100.2
+ terser-webpack-plugin: 5.3.14_webpack@5.100.2
watchpack: 2.4.4
webpack-sources: 3.3.3
transitivePeerDependencies:
@@ -26911,7 +27168,7 @@ packages:
- uglify-js
dev: true
- /webpack/5.100.2_e895a1b7cf9a7664b898a75f8f813ceb:
+ /webpack/5.100.2_webpack-cli@4.10.0:
resolution: {integrity: sha512-QaNKAvGCDRh3wW1dsDjeMdDXwZm2vqq3zn6Pvq4rHOEOGSaUMgOOjG2Y9ZbIGzpfkJk9ZYTHpDqgDfeBDcnLaw==}
engines: {node: '>=10.13.0'}
hasBin: true
@@ -26943,9 +27200,9 @@ packages:
neo-async: 2.6.2
schema-utils: 4.3.2
tapable: 2.2.2
- terser-webpack-plugin: 5.3.14_@swc+core@1.13.2+webpack@5.100.2
+ terser-webpack-plugin: 5.3.14_webpack@5.100.2
watchpack: 2.4.4
- webpack-cli: 4.10.0_3497eda2b4c6c624c213829ca27e2a7e
+ webpack-cli: 4.10.0_gsl63ivuy3dcjqqtqkoke7rkpy
webpack-sources: 3.3.3
transitivePeerDependencies:
- '@swc/core'
@@ -26953,7 +27210,7 @@ packages:
- uglify-js
dev: true
- /webpack/5.76.1_@swc+core@1.13.2+esbuild@0.14.22:
+ /webpack/5.76.1_esbuild@0.14.22:
resolution: {integrity: sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ==}
engines: {node: '>=10.13.0'}
hasBin: true
@@ -26984,7 +27241,7 @@ packages:
neo-async: 2.6.2
schema-utils: 3.3.0
tapable: 2.2.2
- terser-webpack-plugin: 5.3.14_2cc24e4f6230cbace50dae83595efcbc
+ terser-webpack-plugin: 5.3.14_uxpskue2li3bnzylg2ijqeom6q
watchpack: 2.4.4
webpack-sources: 3.3.3
transitivePeerDependencies:
@@ -27512,32 +27769,32 @@ packages:
- encoding
dev: true
- file:packages/bridge-react_react-dom@16.14.0+react@16.14.0:
+ file:packages/bridge-react_sfoxds7t5ydpegc3knd667wn6m:
resolution: {directory: packages/bridge-react, type: directory}
id: file:packages/bridge-react
name: '@garfish/bridge-react'
- version: 1.19.4
+ version: 1.19.5
peerDependencies:
react: '>=16'
react-dom: '>=16'
dependencies:
'@garfish/utils': link:packages/utils
- react: 16.14.0
- react-dom: 16.14.0_react@16.14.0
+ react: 17.0.2
+ react-dom: 17.0.2_react@17.0.2
dev: false
- file:packages/bridge-react_react-dom@17.0.2+react@17.0.2:
+ file:packages/bridge-react_wcqkhtmu7mswc6yz4uyexck3ty:
resolution: {directory: packages/bridge-react, type: directory}
id: file:packages/bridge-react
name: '@garfish/bridge-react'
- version: 1.19.4
+ version: 1.19.5
peerDependencies:
react: '>=16'
react-dom: '>=16'
dependencies:
'@garfish/utils': link:packages/utils
- react: 17.0.2
- react-dom: 17.0.2_react@17.0.2
+ react: 16.14.0
+ react-dom: 16.14.0_react@16.14.0
dev: false
github.com/stylus/stylus/14462ea7e7bffce8f192f7a933114ffbf577aa84:
@@ -27548,7 +27805,7 @@ packages:
dependencies:
css: 3.0.0
debug: 4.4.1
- glob: 7.2.0
+ glob: 7.2.3
safer-buffer: 2.1.2
sax: 1.2.4
source-map: 0.7.6
diff --git a/website-new/docs/guide/concept/bridge.mdx b/website-new/docs/guide/concept/bridge.mdx
index 78a428905..06c9c10ee 100644
--- a/website-new/docs/guide/concept/bridge.mdx
+++ b/website-new/docs/guide/concept/bridge.mdx
@@ -10,7 +10,7 @@ Garfish bridge 是 `garfish` 提供的帮助用户降低接入成本的工具函
:::info
1. garfish bridge 应用在子应用接入场景;
2. 使用 garfish bridge 后不再需要显示提供 `render` 和 `destroy` 函数;
-3. 目前 garfish 仅针对 react 和 vue 框架提供 bridge 函数支持,支持的版本分别为 react v16、v17、v18,vue v2、v3;
+3. 目前 garfish 仅针对 react 和 vue 框架提供 bridge 函数支持,支持的版本分别为 react v16、v17、v18、v19,vue v2、v3;
4. garfish bridge 暂未针对构建工具如 webpack、vite 提供相应的构建工具插件,我们后期会针对这块能力进行补全,请持续关注;
:::
@@ -24,6 +24,10 @@ Garfish bridge 是 `garfish` 提供的帮助用户降低接入成本的工具函
[@garfish/bridge-react-v18](https://www.npmjs.com/package/@garfish/bridge-react-v18) 工具包是 garfish 为 react v18 应用 提供的 bridge 工具函数包,其导出的 [reactBridge](/guide/concept/bridge#reactBridge) 可用于 react v18 子应用的接入,`@garfish/bridge-react-v18` 的使用见 [demo](/guide/demo/react#react-v18-导出)。
+### @garfish/bridge-react-v19
+
+[@garfish/bridge-react-v19](https://www.npmjs.com/package/@garfish/bridge-react-v19) 工具包是 garfish 为 react v19 应用 提供的 bridge 工具函数包,其导出的 [reactBridge](/guide/concept/bridge#reactBridge) 可用于 react v19 子应用的接入,`@garfish/bridge-react-v19` 的使用见 [demo](/guide/demo/react#react-v19-导出)。
+
### @garfish/bridge-vue-v2
[@garfish/bridge-vue-v2](https://www.npmjs.com/package/@garfish/bridge-vue-v2) 工具包是 garfish 为 vue v2 应用 提供的 bridge 工具函数包,其导出的 [vueBridge](/guide/concept/bridge#vuebridge) 可用于 vue v2 子应用的接入,`@garfish/bridge-vue-v2` 的使用见 [demo](/guide/demo/vue#vue2-导出)。
@@ -56,17 +60,18 @@ Garfish bridge 是 `garfish` 提供的帮助用户降低接入成本的工具函
-## reactBridge(for react v16/v17/v18)
+## reactBridge(for react v16/v17/v18/v19)
reactBridge 是 `@garfish/bridge-react` 工具包为 react 子应用提供的 bridge 工具函数。
:::info
- 针对 react v16/v17 子应用,请使用 `@garfish/bridge-react` 工具包
- 针对 react v18 子应用,请使用 `@garfish/bridge-react-v18` 工具包
+- 针对 react v19 子应用,请使用 `@garfish/bridge-react-v19` 工具包
:::
-reactBridge 是 `@garfish/bridge-react` 或 `@garfish/bridge-react-v18` 工具包为 react 子应用提供的 bridge 工具函数。
+reactBridge 是 `@garfish/bridge-react` 或 `@garfish/bridge-react-v18` 或 `@garfish/bridge-react-v19` 工具包为 react 子应用提供的 bridge 工具函数。
### Type
```ts
@@ -81,7 +86,7 @@ function reactBridge(userOpts: Options): (
```
### 示例
-> 可访问 [react16 子应用](https://github.com/modern-js-dev/garfish/tree/main/dev/app-react-16)、 [react17 子应用](https://github.com/modern-js-dev/garfish/tree/main/dev/app-react-17)、[react18 子应用](https://github.com/modern-js-dev/garfish/tree/main/dev/app-react-18) 查看完整 demo
+> 可访问 [react16 子应用](https://github.com/modern-js-dev/garfish/tree/main/dev/app-react-16)、 [react17 子应用](https://github.com/modern-js-dev/garfish/tree/main/dev/app-react-17)、[react18 子应用](https://github.com/modern-js-dev/garfish/tree/main/dev/app-react-18)、[react19 子应用](https://github.com/modern-js-dev/garfish/tree/main/dev/app-react-19) 查看完整 demo
@@ -106,6 +111,21 @@ import { reactBridge } from '@garfish/bridge-react-v18';
import RootComponent from './components/root';
import ErrorComponent from './components/ErrorBoundary';
+export const provider = reactBridge({
+ el: '#root',
+ rootComponent: RootComponent,
+ errorBoundary: () => ,
+});
+```
+
+
+
+
+```ts
+import { reactBridge } from '@garfish/bridge-react-v19';
+import RootComponent from './components/root';
+import ErrorComponent from './components/ErrorBoundary';
+
export const provider = reactBridge({
el: '#root',
rootComponent: RootComponent,
diff --git a/website-new/docs/guide/demo/react.mdx b/website-new/docs/guide/demo/react.mdx
index f50d3e260..1f02ab094 100644
--- a/website-new/docs/guide/demo/react.mdx
+++ b/website-new/docs/guide/demo/react.mdx
@@ -119,6 +119,53 @@ export const provider = () => {
+### react v19 导出
+
+
+
+
+```tsx
+// src/index.tsx
+import { reactBridge } from '@garfish/bridge-react-v19';
+import RootComponent from './root';
+import ErrorBoundary from './ErrorBoundary';
+
+export const provider = reactBridge({
+ el: '#root',
+ rootComponent: RootComponent,
+ errorBoundary: (e: any) => ,
+});
+
+```
+
+
+
+
+
+```tsx
+// src/index.tsx
+import { createRoot } from 'react-dom/client';
+import RootComponent from './root';
+
+// 在首次加载和执行时会触发该函数
+export const provider = () => {
+ let root = null;
+ return {
+ render({ basename, dom, store, props }) {
+ const container = dom.querySelector('#root');
+ root = createRoot(container!);
+ (root as any).render( );
+ },
+ destroy({ dom }) {
+ (root as any).unmount();
+ },
+ };
+};
+```
+
+
+
+
### 3. 根组件设置路由的 basename
:::info