From e96c8125ec802f77867947339fc5716f6d43dd1f Mon Sep 17 00:00:00 2001 From: gioboa Date: Wed, 9 Oct 2024 09:29:43 +0200 Subject: [PATCH 1/2] feat: add MF Vite React example --- module-federation-vite-react/README.md | 12 + .../docs/screenshot.png | Bin 0 -> 81541 bytes module-federation-vite-react/host/.gitignore | 26 + module-federation-vite-react/host/index.html | 14 + .../host/package.json | 23 + .../host/pnpm-lock.yaml | 1157 +++++++++++++++++ .../host/public/vite.svg | 1 + module-federation-vite-react/host/src/App.css | 25 + module-federation-vite-react/host/src/App.tsx | 48 + .../host/src/components/Counter.tsx | 22 + .../host/src/main.tsx | 9 + .../host/src/vite-env.d.ts | 1 + .../host/tsconfig.json | 29 + .../host/tsconfig.node.json | 12 + .../host/vite.config.ts | 34 + module-federation-vite-react/package.json | 18 + .../remote/.gitignore | 26 + .../remote/index.html | 14 + .../remote/package.json | 22 + .../remote/pnpm-lock.yaml | 1142 ++++++++++++++++ .../remote/public/vite.svg | 1 + .../remote/src/App.tsx | 43 + .../remote/src/components/Counter.tsx | 22 + .../remote/src/environment.ts | 1 + .../remote/src/main.tsx | 9 + .../remote/src/vite-env.d.ts | 1 + .../remote/tsconfig.json | 37 + .../remote/tsconfig.node.json | 12 + .../remote/vite.config.ts | 43 + module-federation-vite-react/shared/shared.ts | 3 + 30 files changed, 2807 insertions(+) create mode 100644 module-federation-vite-react/README.md create mode 100644 module-federation-vite-react/docs/screenshot.png create mode 100644 module-federation-vite-react/host/.gitignore create mode 100644 module-federation-vite-react/host/index.html create mode 100644 module-federation-vite-react/host/package.json create mode 100644 module-federation-vite-react/host/pnpm-lock.yaml create mode 100644 module-federation-vite-react/host/public/vite.svg create mode 100644 module-federation-vite-react/host/src/App.css create mode 100644 module-federation-vite-react/host/src/App.tsx create mode 100644 module-federation-vite-react/host/src/components/Counter.tsx create mode 100644 module-federation-vite-react/host/src/main.tsx create mode 100644 module-federation-vite-react/host/src/vite-env.d.ts create mode 100644 module-federation-vite-react/host/tsconfig.json create mode 100644 module-federation-vite-react/host/tsconfig.node.json create mode 100644 module-federation-vite-react/host/vite.config.ts create mode 100644 module-federation-vite-react/package.json create mode 100644 module-federation-vite-react/remote/.gitignore create mode 100644 module-federation-vite-react/remote/index.html create mode 100644 module-federation-vite-react/remote/package.json create mode 100644 module-federation-vite-react/remote/pnpm-lock.yaml create mode 100644 module-federation-vite-react/remote/public/vite.svg create mode 100644 module-federation-vite-react/remote/src/App.tsx create mode 100644 module-federation-vite-react/remote/src/components/Counter.tsx create mode 100644 module-federation-vite-react/remote/src/environment.ts create mode 100644 module-federation-vite-react/remote/src/main.tsx create mode 100644 module-federation-vite-react/remote/src/vite-env.d.ts create mode 100644 module-federation-vite-react/remote/tsconfig.json create mode 100644 module-federation-vite-react/remote/tsconfig.node.json create mode 100644 module-federation-vite-react/remote/vite.config.ts create mode 100644 module-federation-vite-react/shared/shared.ts diff --git a/module-federation-vite-react/README.md b/module-federation-vite-react/README.md new file mode 100644 index 00000000000..6789c984a2e --- /dev/null +++ b/module-federation-vite-react/README.md @@ -0,0 +1,12 @@ +# React host and remote + +## Getting started + +From this directory execute: + +- npm run install:deps +- npm run preview + +Open your browser at http://localhost:4173/ to see the amazing result + +![screenshot](docs/screenshot.png) diff --git a/module-federation-vite-react/docs/screenshot.png b/module-federation-vite-react/docs/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..6593cf87729ba9e3be1ef67a7f615022ebf22ecf GIT binary patch literal 81541 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�R@M$3{omUs_q#b;~~L3T^R)N5u$yk!L= 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 n4fszrMN-M + + + + + + Host + + + +
+ + + diff --git a/module-federation-vite-react/host/package.json b/module-federation-vite-react/host/package.json new file mode 100644 index 00000000000..4c62a9434de --- /dev/null +++ b/module-federation-vite-react/host/package.json @@ -0,0 +1,23 @@ +{ + "name": "module-federation-vite-react-host", + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite --port 4173", + "build": "tsc && vite build", + "preview": "npm run build && vite preview --port 4173" + }, + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1", + "rxjs": "^7.8.1" + }, + "devDependencies": { + "@module-federation/vite": "1.0.0", + "@types/react": "18.2.79", + "@types/react-dom": "18.2.25", + "@vitejs/plugin-react": "4.2.1", + "typescript": "5.4.5", + "vite": "5.2.10" + } +} diff --git a/module-federation-vite-react/host/pnpm-lock.yaml b/module-federation-vite-react/host/pnpm-lock.yaml new file mode 100644 index 00000000000..f7b208daac8 --- /dev/null +++ b/module-federation-vite-react/host/pnpm-lock.yaml @@ -0,0 +1,1157 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + .: + dependencies: + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + rxjs: + specifier: ^7.8.1 + version: 7.8.1 + devDependencies: + '@module-federation/vite': + specifier: 1.0.0 + version: 1.0.0(rollup@4.19.1) + '@types/react': + specifier: 18.2.79 + version: 18.2.79 + '@types/react-dom': + specifier: 18.2.25 + version: 18.2.25 + '@vitejs/plugin-react': + specifier: 4.2.1 + version: 4.2.1(vite@5.2.10(@types/node@18.19.42)) + typescript: + specifier: 5.4.5 + version: 5.4.5 + vite: + specifier: 5.2.10 + version: 5.2.10(@types/node@18.19.42) + +packages: + '@ampproject/remapping@2.3.0': + resolution: { integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== } + engines: { node: '>=6.0.0' } + + '@babel/code-frame@7.24.7': + resolution: { integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== } + engines: { node: '>=6.9.0' } + + '@babel/compat-data@7.25.2': + resolution: { integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ== } + engines: { node: '>=6.9.0' } + + '@babel/core@7.25.2': + resolution: { integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== } + engines: { node: '>=6.9.0' } + + '@babel/generator@7.25.0': + resolution: { integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw== } + engines: { node: '>=6.9.0' } + + '@babel/helper-compilation-targets@7.25.2': + resolution: { integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== } + engines: { node: '>=6.9.0' } + + '@babel/helper-module-imports@7.24.7': + resolution: { integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== } + engines: { node: '>=6.9.0' } + + '@babel/helper-module-transforms@7.25.2': + resolution: { integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.24.8': + resolution: { integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== } + engines: { node: '>=6.9.0' } + + '@babel/helper-simple-access@7.24.7': + resolution: { integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== } + engines: { node: '>=6.9.0' } + + '@babel/helper-string-parser@7.24.8': + resolution: { integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== } + engines: { node: '>=6.9.0' } + + '@babel/helper-validator-identifier@7.24.7': + resolution: { integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== } + engines: { node: '>=6.9.0' } + + '@babel/helper-validator-option@7.24.8': + resolution: { integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== } + engines: { node: '>=6.9.0' } + + '@babel/helpers@7.25.0': + resolution: { integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw== } + engines: { node: '>=6.9.0' } + + '@babel/highlight@7.24.7': + resolution: { integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== } + engines: { node: '>=6.9.0' } + + '@babel/parser@7.25.3': + resolution: { integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw== } + engines: { node: '>=6.0.0' } + hasBin: true + + '@babel/plugin-transform-react-jsx-self@7.24.7': + resolution: { integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw== } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.24.7': + resolution: { integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ== } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.25.0': + resolution: { integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== } + engines: { node: '>=6.9.0' } + + '@babel/traverse@7.25.3': + resolution: { integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ== } + engines: { node: '>=6.9.0' } + + '@babel/types@7.25.2': + resolution: { integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q== } + engines: { node: '>=6.9.0' } + + '@esbuild/aix-ppc64@0.20.2': + resolution: { integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== } + engines: { node: '>=12' } + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.20.2': + resolution: { integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== } + engines: { node: '>=12' } + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.20.2': + resolution: { integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== } + engines: { node: '>=12' } + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.20.2': + resolution: { integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== } + engines: { node: '>=12' } + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.20.2': + resolution: { integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== } + engines: { node: '>=12' } + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.20.2': + resolution: { integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== } + engines: { node: '>=12' } + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.20.2': + resolution: { integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== } + engines: { node: '>=12' } + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.20.2': + resolution: { integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== } + engines: { node: '>=12' } + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.20.2': + resolution: { integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== } + engines: { node: '>=12' } + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.20.2': + resolution: { integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== } + engines: { node: '>=12' } + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.20.2': + resolution: { integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== } + engines: { node: '>=12' } + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.20.2': + resolution: { integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== } + engines: { node: '>=12' } + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.20.2': + resolution: { integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== } + engines: { node: '>=12' } + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.20.2': + resolution: { integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== } + engines: { node: '>=12' } + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.20.2': + resolution: { integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== } + engines: { node: '>=12' } + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.20.2': + resolution: { integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== } + engines: { node: '>=12' } + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.20.2': + resolution: { integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== } + engines: { node: '>=12' } + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.20.2': + resolution: { integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== } + engines: { node: '>=12' } + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.20.2': + resolution: { integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== } + engines: { node: '>=12' } + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.20.2': + resolution: { integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== } + engines: { node: '>=12' } + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.20.2': + resolution: { integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== } + engines: { node: '>=12' } + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.20.2': + resolution: { integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== } + engines: { node: '>=12' } + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.20.2': + resolution: { integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== } + engines: { node: '>=12' } + cpu: [x64] + os: [win32] + + '@jridgewell/gen-mapping@0.3.5': + resolution: { integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== } + engines: { node: '>=6.0.0' } + + '@jridgewell/resolve-uri@3.1.2': + resolution: { integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== } + engines: { node: '>=6.0.0' } + + '@jridgewell/set-array@1.2.1': + resolution: { integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== } + engines: { node: '>=6.0.0' } + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: { integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== } + + '@jridgewell/trace-mapping@0.3.25': + resolution: { integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== } + + '@module-federation/runtime@0.6.1': + resolution: { integrity: sha512-57NvdAwrQagw7bEAjvIav8sU0srTT5O+ul8hl86j2a3I5gYBF6NN2QGx4w5d/exgXUcqmUQZBV6I3q5NrcRzfg== } + + '@module-federation/sdk@0.6.1': + resolution: { integrity: sha512-OjDW2sYz4iaZnu4rpTlYDzjXAQiLLzCPwIFM+UFvRtdgWN08Bjn5sDRgMzP2x2ziLzonwmEFDEK9Sl2h85NtJg== } + + '@module-federation/vite@1.0.0': + resolution: { integrity: sha512-RRlMIgaL4FAAX9v84DoM8P5G+z0WpPqnrUM5X7tWD/yT5TqSTzu0Wu7CJNHKvDvLIg05f/4e9mes5KQ38QhgeA== } + + '@rollup/pluginutils@5.1.0': + resolution: { integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.19.1': + resolution: { integrity: sha512-XzqSg714++M+FXhHfXpS1tDnNZNpgxxuGZWlRG/jSj+VEPmZ0yg6jV4E0AL3uyBKxO8mO3xtOsP5mQ+XLfrlww== } + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.19.1': + resolution: { integrity: sha512-thFUbkHteM20BGShD6P08aungq4irbIZKUNbG70LN8RkO7YztcGPiKTTGZS7Kw+x5h8hOXs0i4OaHwFxlpQN6A== } + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.19.1': + resolution: { integrity: sha512-8o6eqeFZzVLia2hKPUZk4jdE3zW7LCcZr+MD18tXkgBBid3lssGVAYuox8x6YHoEPDdDa9ixTaStcmx88lio5Q== } + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.19.1': + resolution: { integrity: sha512-4T42heKsnbjkn7ovYiAdDVRRWZLU9Kmhdt6HafZxFcUdpjlBlxj4wDrt1yFWLk7G4+E+8p2C9tcmSu0KA6auGA== } + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.19.1': + resolution: { integrity: sha512-MXg1xp+e5GhZ3Vit1gGEyoC+dyQUBy2JgVQ+3hUrD9wZMkUw/ywgkpK7oZgnB6kPpGrxJ41clkPPnsknuD6M2Q== } + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.19.1': + resolution: { integrity: sha512-DZNLwIY4ftPSRVkJEaxYkq7u2zel7aah57HESuNkUnz+3bZHxwkCUkrfS2IWC1sxK6F2QNIR0Qr/YXw7nkF3Pw== } + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.19.1': + resolution: { integrity: sha512-C7evongnjyxdngSDRRSQv5GvyfISizgtk9RM+z2biV5kY6S/NF/wta7K+DanmktC5DkuaJQgoKGf7KUDmA7RUw== } + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.19.1': + resolution: { integrity: sha512-89tFWqxfxLLHkAthAcrTs9etAoBFRduNfWdl2xUs/yLV+7XDrJ5yuXMHptNqf1Zw0UCA3cAutkAiAokYCkaPtw== } + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.19.1': + resolution: { integrity: sha512-PromGeV50sq+YfaisG8W3fd+Cl6mnOOiNv2qKKqKCpiiEke2KiKVyDqG/Mb9GWKbYMHj5a01fq/qlUR28PFhCQ== } + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.19.1': + resolution: { integrity: sha512-/1BmHYh+iz0cNCP0oHCuF8CSiNj0JOGf0jRlSo3L/FAyZyG2rGBuKpkZVH9YF+x58r1jgWxvm1aRg3DHrLDt6A== } + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.19.1': + resolution: { integrity: sha512-0cYP5rGkQWRZKy9/HtsWVStLXzCF3cCBTRI+qRL8Z+wkYlqN7zrSYm6FuY5Kd5ysS5aH0q5lVgb/WbG4jqXN1Q== } + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.19.1': + resolution: { integrity: sha512-XUXeI9eM8rMP8aGvii/aOOiMvTs7xlCosq9xCjcqI9+5hBxtjDpD+7Abm1ZhVIFE1J2h2VIg0t2DX/gjespC2Q== } + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.19.1': + resolution: { integrity: sha512-V7cBw/cKXMfEVhpSvVZhC+iGifD6U1zJ4tbibjjN+Xi3blSXaj/rJynAkCFFQfoG6VZrAiP7uGVzL440Q6Me2Q== } + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.19.1': + resolution: { integrity: sha512-88brja2vldW/76jWATlBqHEoGjJLRnP0WOEKAUbMcXaAZnemNhlAHSyj4jIwMoP2T750LE9lblvD4e2jXleZsA== } + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.19.1': + resolution: { integrity: sha512-LdxxcqRVSXi6k6JUrTah1rHuaupoeuiv38du8Mt4r4IPer3kwlTo+RuvfE8KzZ/tL6BhaPlzJ3835i6CxrFIRQ== } + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.19.1': + resolution: { integrity: sha512-2bIrL28PcK3YCqD9anGxDxamxdiJAxA+l7fWIwM5o8UqNy1t3d1NdAweO2XhA0KTDJ5aH1FsuiT5+7VhtHliXg== } + cpu: [x64] + os: [win32] + + '@types/babel__core@7.20.5': + resolution: { integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== } + + '@types/babel__generator@7.6.8': + resolution: { integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== } + + '@types/babel__template@7.4.4': + resolution: { integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== } + + '@types/babel__traverse@7.20.6': + resolution: { integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== } + + '@types/estree@1.0.5': + resolution: { integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== } + + '@types/node@18.19.42': + resolution: { integrity: sha512-d2ZFc/3lnK2YCYhos8iaNIYu9Vfhr92nHiyJHRltXWjXUBjEE+A4I58Tdbnw4VhggSW+2j5y5gTrLs4biNnubg== } + + '@types/prop-types@15.7.12': + resolution: { integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== } + + '@types/react-dom@18.2.25': + resolution: { integrity: sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA== } + + '@types/react@18.2.79': + resolution: { integrity: sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w== } + + '@vitejs/plugin-react@4.2.1': + resolution: { integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ== } + engines: { node: ^14.18.0 || >=16.0.0 } + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + + ansi-styles@3.2.1: + resolution: { integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== } + engines: { node: '>=4' } + + browserslist@4.23.2: + resolution: { integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA== } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + hasBin: true + + caniuse-lite@1.0.30001646: + resolution: { integrity: sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw== } + + chalk@2.4.2: + resolution: { integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== } + engines: { node: '>=4' } + + color-convert@1.9.3: + resolution: { integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== } + + color-name@1.1.3: + resolution: { integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== } + + convert-source-map@2.0.0: + resolution: { integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== } + + csstype@3.1.3: + resolution: { integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== } + + debug@4.3.6: + resolution: { integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== } + engines: { node: '>=6.0' } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + defu@6.1.4: + resolution: { integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== } + + electron-to-chromium@1.5.4: + resolution: { integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA== } + + esbuild@0.20.2: + resolution: { integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g== } + engines: { node: '>=12' } + hasBin: true + + escalade@3.1.2: + resolution: { integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== } + engines: { node: '>=6' } + + escape-string-regexp@1.0.5: + resolution: { integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== } + engines: { node: '>=0.8.0' } + + estree-walker@2.0.2: + resolution: { integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== } + + fsevents@2.3.3: + resolution: { integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + os: [darwin] + + gensync@1.0.0-beta.2: + resolution: { integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== } + engines: { node: '>=6.9.0' } + + globals@11.12.0: + resolution: { integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== } + engines: { node: '>=4' } + + has-flag@3.0.0: + resolution: { integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== } + engines: { node: '>=4' } + + js-tokens@4.0.0: + resolution: { integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== } + + jsesc@2.5.2: + resolution: { integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== } + engines: { node: '>=4' } + hasBin: true + + json5@2.2.3: + resolution: { integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== } + engines: { node: '>=6' } + hasBin: true + + loose-envify@1.4.0: + resolution: { integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== } + hasBin: true + + lru-cache@5.1.1: + resolution: { integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== } + + magic-string@0.30.11: + resolution: { integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A== } + + ms@2.1.2: + resolution: { integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== } + + nanoid@3.3.7: + resolution: { integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + hasBin: true + + node-releases@2.0.18: + resolution: { integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== } + + pathe@1.1.2: + resolution: { integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== } + + picocolors@1.0.1: + resolution: { integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== } + + picomatch@2.3.1: + resolution: { integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== } + engines: { node: '>=8.6' } + + postcss@8.4.40: + resolution: { integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q== } + engines: { node: ^10 || ^12 || >=14 } + + react-dom@18.3.1: + resolution: { integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== } + peerDependencies: + react: ^18.3.1 + + react-refresh@0.14.2: + resolution: { integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== } + engines: { node: '>=0.10.0' } + + react@18.3.1: + resolution: { integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== } + engines: { node: '>=0.10.0' } + + rollup@4.19.1: + resolution: { integrity: sha512-K5vziVlg7hTpYfFBI+91zHBEMo6jafYXpkMlqZjg7/zhIG9iHqazBf4xz9AVdjS9BruRn280ROqLI7G3OFRIlw== } + engines: { node: '>=18.0.0', npm: '>=8.0.0' } + hasBin: true + + rxjs@7.8.1: + resolution: { integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== } + + scheduler@0.23.2: + resolution: { integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== } + + semver@6.3.1: + resolution: { integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== } + hasBin: true + + source-map-js@1.2.0: + resolution: { integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== } + engines: { node: '>=0.10.0' } + + supports-color@5.5.0: + resolution: { integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== } + engines: { node: '>=4' } + + to-fast-properties@2.0.0: + resolution: { integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== } + engines: { node: '>=4' } + + tslib@2.7.0: + resolution: { integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== } + + typescript@5.4.5: + resolution: { integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== } + engines: { node: '>=14.17' } + hasBin: true + + undici-types@5.26.5: + resolution: { integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== } + + update-browserslist-db@1.1.0: + resolution: { integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== } + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + vite@5.2.10: + resolution: { integrity: sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw== } + engines: { node: ^18.0.0 || >=20.0.0 } + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + yallist@3.1.1: + resolution: { integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== } + +snapshots: + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@babel/code-frame@7.24.7': + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 + + '@babel/compat-data@7.25.2': {} + + '@babel/core@7.25.2': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.0 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + convert-source-map: 2.0.0 + debug: 4.3.6 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.25.0': + dependencies: + '@babel/types': 7.25.2 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + '@babel/helper-compilation-targets@7.25.2': + dependencies: + '@babel/compat-data': 7.25.2 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-module-imports@7.24.7': + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.24.8': {} + + '@babel/helper-simple-access@7.24.7': + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.24.8': {} + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/helper-validator-option@7.24.8': {} + + '@babel/helpers@7.25.0': + dependencies: + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 + + '@babel/highlight@7.24.7': + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + + '@babel/parser@7.25.3': + dependencies: + '@babel/types': 7.25.2 + + '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/template@7.25.0': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + + '@babel/traverse@7.25.3': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 + debug: 4.3.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.25.2': + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@esbuild/aix-ppc64@0.20.2': + optional: true + + '@esbuild/android-arm64@0.20.2': + optional: true + + '@esbuild/android-arm@0.20.2': + optional: true + + '@esbuild/android-x64@0.20.2': + optional: true + + '@esbuild/darwin-arm64@0.20.2': + optional: true + + '@esbuild/darwin-x64@0.20.2': + optional: true + + '@esbuild/freebsd-arm64@0.20.2': + optional: true + + '@esbuild/freebsd-x64@0.20.2': + optional: true + + '@esbuild/linux-arm64@0.20.2': + optional: true + + '@esbuild/linux-arm@0.20.2': + optional: true + + '@esbuild/linux-ia32@0.20.2': + optional: true + + '@esbuild/linux-loong64@0.20.2': + optional: true + + '@esbuild/linux-mips64el@0.20.2': + optional: true + + '@esbuild/linux-ppc64@0.20.2': + optional: true + + '@esbuild/linux-riscv64@0.20.2': + optional: true + + '@esbuild/linux-s390x@0.20.2': + optional: true + + '@esbuild/linux-x64@0.20.2': + optional: true + + '@esbuild/netbsd-x64@0.20.2': + optional: true + + '@esbuild/openbsd-x64@0.20.2': + optional: true + + '@esbuild/sunos-x64@0.20.2': + optional: true + + '@esbuild/win32-arm64@0.20.2': + optional: true + + '@esbuild/win32-ia32@0.20.2': + optional: true + + '@esbuild/win32-x64@0.20.2': + optional: true + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@module-federation/runtime@0.6.1': + dependencies: + '@module-federation/sdk': 0.6.1 + + '@module-federation/sdk@0.6.1': {} + + '@module-federation/vite@1.0.0(rollup@4.19.1)': + dependencies: + '@module-federation/runtime': 0.6.1 + '@rollup/pluginutils': 5.1.0(rollup@4.19.1) + defu: 6.1.4 + estree-walker: 2.0.2 + magic-string: 0.30.11 + pathe: 1.1.2 + transitivePeerDependencies: + - rollup + + '@rollup/pluginutils@5.1.0(rollup@4.19.1)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.19.1 + + '@rollup/rollup-android-arm-eabi@4.19.1': + optional: true + + '@rollup/rollup-android-arm64@4.19.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.19.1': + optional: true + + '@rollup/rollup-darwin-x64@4.19.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.19.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.19.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.19.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.19.1': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.19.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.19.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.19.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.19.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.19.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.19.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.19.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.19.1': + optional: true + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.25.2 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + + '@types/babel__traverse@7.20.6': + dependencies: + '@babel/types': 7.25.2 + + '@types/estree@1.0.5': {} + + '@types/node@18.19.42': + dependencies: + undici-types: 5.26.5 + optional: true + + '@types/prop-types@15.7.12': {} + + '@types/react-dom@18.2.25': + dependencies: + '@types/react': 18.2.79 + + '@types/react@18.2.79': + dependencies: + '@types/prop-types': 15.7.12 + csstype: 3.1.3 + + '@vitejs/plugin-react@4.2.1(vite@5.2.10(@types/node@18.19.42))': + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 5.2.10(@types/node@18.19.42) + transitivePeerDependencies: + - supports-color + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + browserslist@4.23.2: + dependencies: + caniuse-lite: 1.0.30001646 + electron-to-chromium: 1.5.4 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.2) + + caniuse-lite@1.0.30001646: {} + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-name@1.1.3: {} + + convert-source-map@2.0.0: {} + + csstype@3.1.3: {} + + debug@4.3.6: + dependencies: + ms: 2.1.2 + + defu@6.1.4: {} + + electron-to-chromium@1.5.4: {} + + esbuild@0.20.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + + escalade@3.1.2: {} + + escape-string-regexp@1.0.5: {} + + estree-walker@2.0.2: {} + + fsevents@2.3.3: + optional: true + + gensync@1.0.0-beta.2: {} + + globals@11.12.0: {} + + has-flag@3.0.0: {} + + js-tokens@4.0.0: {} + + jsesc@2.5.2: {} + + json5@2.2.3: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.11: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + ms@2.1.2: {} + + nanoid@3.3.7: {} + + node-releases@2.0.18: {} + + pathe@1.1.2: {} + + picocolors@1.0.1: {} + + picomatch@2.3.1: {} + + postcss@8.4.40: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-refresh@0.14.2: {} + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + rollup@4.19.1: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.19.1 + '@rollup/rollup-android-arm64': 4.19.1 + '@rollup/rollup-darwin-arm64': 4.19.1 + '@rollup/rollup-darwin-x64': 4.19.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.19.1 + '@rollup/rollup-linux-arm-musleabihf': 4.19.1 + '@rollup/rollup-linux-arm64-gnu': 4.19.1 + '@rollup/rollup-linux-arm64-musl': 4.19.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.19.1 + '@rollup/rollup-linux-riscv64-gnu': 4.19.1 + '@rollup/rollup-linux-s390x-gnu': 4.19.1 + '@rollup/rollup-linux-x64-gnu': 4.19.1 + '@rollup/rollup-linux-x64-musl': 4.19.1 + '@rollup/rollup-win32-arm64-msvc': 4.19.1 + '@rollup/rollup-win32-ia32-msvc': 4.19.1 + '@rollup/rollup-win32-x64-msvc': 4.19.1 + fsevents: 2.3.3 + + rxjs@7.8.1: + dependencies: + tslib: 2.7.0 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + semver@6.3.1: {} + + source-map-js@1.2.0: {} + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + to-fast-properties@2.0.0: {} + + tslib@2.7.0: {} + + typescript@5.4.5: {} + + undici-types@5.26.5: + optional: true + + update-browserslist-db@1.1.0(browserslist@4.23.2): + dependencies: + browserslist: 4.23.2 + escalade: 3.1.2 + picocolors: 1.0.1 + + vite@5.2.10(@types/node@18.19.42): + dependencies: + esbuild: 0.20.2 + postcss: 8.4.40 + rollup: 4.19.1 + optionalDependencies: + '@types/node': 18.19.42 + fsevents: 2.3.3 + + yallist@3.1.1: {} diff --git a/module-federation-vite-react/host/public/vite.svg b/module-federation-vite-react/host/public/vite.svg new file mode 100644 index 00000000000..e7b8dfb1b2a --- /dev/null +++ b/module-federation-vite-react/host/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/module-federation-vite-react/host/src/App.css b/module-federation-vite-react/host/src/App.css new file mode 100644 index 00000000000..8b49a66b79e --- /dev/null +++ b/module-federation-vite-react/host/src/App.css @@ -0,0 +1,25 @@ +.host .card { + background: #3178c6; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.4); + border-radius: 5px; + margin: 20px 20px 20px 20px; + width: 250px; + padding: 20px; + text-align: center; + color: white; + float: left; +} + +.host .title { + margin-top: 10px; + font-size: 25px; +} + +.host svg { + width: 100px; + height: 100px; +} + +.host path { + fill: #f6b352; +} \ No newline at end of file diff --git a/module-federation-vite-react/host/src/App.tsx b/module-federation-vite-react/host/src/App.tsx new file mode 100644 index 00000000000..0581f4c5dab --- /dev/null +++ b/module-federation-vite-react/host/src/App.tsx @@ -0,0 +1,48 @@ +import { lazy, Suspense, useEffect } from 'react'; +import { of, tap } from 'rxjs'; +import './App.css'; +import Counter from './components/Counter'; + +export default () => { + const Remote = lazy( + // @ts-ignore + async () => import('remote/remote-app'), + ); + + useEffect(() => { + of('emit') + .pipe(tap(() => console.log("I'm RxJs from host"))) + .subscribe(); + }, []); + + return ( + <> +
+
+
+ + + +
+
I'm the host app
+ +
+
+ + + + + + ); +}; diff --git a/module-federation-vite-react/host/src/components/Counter.tsx b/module-federation-vite-react/host/src/components/Counter.tsx new file mode 100644 index 00000000000..d41781059c7 --- /dev/null +++ b/module-federation-vite-react/host/src/components/Counter.tsx @@ -0,0 +1,22 @@ +import { useState } from 'react'; + +export default () => { + const [count, setCount] = useState(0); + + return ( + + ); +}; diff --git a/module-federation-vite-react/host/src/main.tsx b/module-federation-vite-react/host/src/main.tsx new file mode 100644 index 00000000000..3104e396061 --- /dev/null +++ b/module-federation-vite-react/host/src/main.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import App from './App'; + +ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( + + + , +); diff --git a/module-federation-vite-react/host/src/vite-env.d.ts b/module-federation-vite-react/host/src/vite-env.d.ts new file mode 100644 index 00000000000..11f02fe2a00 --- /dev/null +++ b/module-federation-vite-react/host/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/module-federation-vite-react/host/tsconfig.json b/module-federation-vite-react/host/tsconfig.json new file mode 100644 index 00000000000..58a0ee8a451 --- /dev/null +++ b/module-federation-vite-react/host/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "baseUrl": ".", + "paths": { + "shared": ["../shared/shared.ts"] + } + }, + "include": ["src"], + "references": [ + { + "path": "./tsconfig.node.json" + } + ] +} diff --git a/module-federation-vite-react/host/tsconfig.node.json b/module-federation-vite-react/host/tsconfig.node.json new file mode 100644 index 00000000000..ac12f8612b3 --- /dev/null +++ b/module-federation-vite-react/host/tsconfig.node.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true + }, + "include": [ + "vite.config.ts", + "module-federation/vite-importmap-shim.ts" + ] +} \ No newline at end of file diff --git a/module-federation-vite-react/host/vite.config.ts b/module-federation-vite-react/host/vite.config.ts new file mode 100644 index 00000000000..50769e97bc9 --- /dev/null +++ b/module-federation-vite-react/host/vite.config.ts @@ -0,0 +1,34 @@ +import { federation } from '@module-federation/vite'; +import react from '@vitejs/plugin-react'; +import { defineConfig } from 'vite'; +import { dependencies } from './package.json'; + +export default defineConfig(() => ({ + server: { fs: { allow: ['.', '../shared'] } }, + build: { + target: 'chrome89', + }, + plugins: [ + federation({ + name: 'host', + remotes: { + remote: { + type: 'module', + name: 'remote', + entry: 'http://localhost:4174/remoteEntry.js', + entryGlobalName: 'remote', + shareScope: 'default', + }, + }, + exposes: {}, + filename: 'remoteEntry.js', + shared: { + react: { + requiredVersion: dependencies.react, + singleton: true, + }, + }, + }), + react(), + ], +})); diff --git a/module-federation-vite-react/package.json b/module-federation-vite-react/package.json new file mode 100644 index 00000000000..914578eb818 --- /dev/null +++ b/module-federation-vite-react/package.json @@ -0,0 +1,18 @@ +{ + "name": "module-federation-vite-react", + "version": "1.0.0", + "description": "Module Federation Vite + React is now possible", + "scripts": { + "install:deps": "pnpm --filter module-federation-vite-react-* install", + "postinstall:deps": "pnpm --filter module-federation-vite-react-* run build", + "dev": "pnpm --filter module-federation-vite-react-* dev", + "build": "pnpm --filter module-federation-vite-react-* build", + "preview": "pnpm --filter module-federation-vite-react-* preview" + }, + "author": { + "name": "Giorgio Boa", + "email": "giorgiob.boa@gmail.com", + "url": "https://github.com/gioboa" + }, + "license": "ISC" +} \ No newline at end of file diff --git a/module-federation-vite-react/remote/.gitignore b/module-federation-vite-react/remote/.gitignore new file mode 100644 index 00000000000..e9a21a070ea --- /dev/null +++ b/module-federation-vite-react/remote/.gitignore @@ -0,0 +1,26 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +.__mf__temp diff --git a/module-federation-vite-react/remote/index.html b/module-federation-vite-react/remote/index.html new file mode 100644 index 00000000000..9c763b1c5e0 --- /dev/null +++ b/module-federation-vite-react/remote/index.html @@ -0,0 +1,14 @@ + + + + + + + React Remote + + + +
+ + + diff --git a/module-federation-vite-react/remote/package.json b/module-federation-vite-react/remote/package.json new file mode 100644 index 00000000000..47586ea5a76 --- /dev/null +++ b/module-federation-vite-react/remote/package.json @@ -0,0 +1,22 @@ +{ + "name": "module-federation-vite-react-remote", + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite --port 4174", + "build": "tsc && vite build", + "preview": "npm run build && vite preview --port 4174" + }, + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@module-federation/vite": "1.0.0", + "@types/react": "18.2.79", + "@types/react-dom": "18.2.25", + "@vitejs/plugin-react": "4.2.1", + "typescript": "5.4.5", + "vite": "5.2.10" + } +} diff --git a/module-federation-vite-react/remote/pnpm-lock.yaml b/module-federation-vite-react/remote/pnpm-lock.yaml new file mode 100644 index 00000000000..34ecca09388 --- /dev/null +++ b/module-federation-vite-react/remote/pnpm-lock.yaml @@ -0,0 +1,1142 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + .: + dependencies: + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + devDependencies: + '@module-federation/vite': + specifier: 1.0.0 + version: 1.0.0(rollup@4.19.1) + '@types/react': + specifier: 18.2.79 + version: 18.2.79 + '@types/react-dom': + specifier: 18.2.25 + version: 18.2.25 + '@vitejs/plugin-react': + specifier: 4.2.1 + version: 4.2.1(vite@5.2.10(@types/node@18.19.42)) + typescript: + specifier: 5.4.5 + version: 5.4.5 + vite: + specifier: 5.2.10 + version: 5.2.10(@types/node@18.19.42) + +packages: + '@ampproject/remapping@2.3.0': + resolution: { integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== } + engines: { node: '>=6.0.0' } + + '@babel/code-frame@7.24.7': + resolution: { integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== } + engines: { node: '>=6.9.0' } + + '@babel/compat-data@7.25.2': + resolution: { integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ== } + engines: { node: '>=6.9.0' } + + '@babel/core@7.25.2': + resolution: { integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== } + engines: { node: '>=6.9.0' } + + '@babel/generator@7.25.0': + resolution: { integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw== } + engines: { node: '>=6.9.0' } + + '@babel/helper-compilation-targets@7.25.2': + resolution: { integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== } + engines: { node: '>=6.9.0' } + + '@babel/helper-module-imports@7.24.7': + resolution: { integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== } + engines: { node: '>=6.9.0' } + + '@babel/helper-module-transforms@7.25.2': + resolution: { integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.24.8': + resolution: { integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== } + engines: { node: '>=6.9.0' } + + '@babel/helper-simple-access@7.24.7': + resolution: { integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== } + engines: { node: '>=6.9.0' } + + '@babel/helper-string-parser@7.24.8': + resolution: { integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== } + engines: { node: '>=6.9.0' } + + '@babel/helper-validator-identifier@7.24.7': + resolution: { integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== } + engines: { node: '>=6.9.0' } + + '@babel/helper-validator-option@7.24.8': + resolution: { integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== } + engines: { node: '>=6.9.0' } + + '@babel/helpers@7.25.0': + resolution: { integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw== } + engines: { node: '>=6.9.0' } + + '@babel/highlight@7.24.7': + resolution: { integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== } + engines: { node: '>=6.9.0' } + + '@babel/parser@7.25.3': + resolution: { integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw== } + engines: { node: '>=6.0.0' } + hasBin: true + + '@babel/plugin-transform-react-jsx-self@7.24.7': + resolution: { integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw== } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.24.7': + resolution: { integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ== } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.25.0': + resolution: { integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== } + engines: { node: '>=6.9.0' } + + '@babel/traverse@7.25.3': + resolution: { integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ== } + engines: { node: '>=6.9.0' } + + '@babel/types@7.25.2': + resolution: { integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q== } + engines: { node: '>=6.9.0' } + + '@esbuild/aix-ppc64@0.20.2': + resolution: { integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== } + engines: { node: '>=12' } + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.20.2': + resolution: { integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== } + engines: { node: '>=12' } + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.20.2': + resolution: { integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== } + engines: { node: '>=12' } + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.20.2': + resolution: { integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== } + engines: { node: '>=12' } + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.20.2': + resolution: { integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== } + engines: { node: '>=12' } + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.20.2': + resolution: { integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== } + engines: { node: '>=12' } + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.20.2': + resolution: { integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== } + engines: { node: '>=12' } + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.20.2': + resolution: { integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== } + engines: { node: '>=12' } + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.20.2': + resolution: { integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== } + engines: { node: '>=12' } + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.20.2': + resolution: { integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== } + engines: { node: '>=12' } + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.20.2': + resolution: { integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== } + engines: { node: '>=12' } + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.20.2': + resolution: { integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== } + engines: { node: '>=12' } + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.20.2': + resolution: { integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== } + engines: { node: '>=12' } + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.20.2': + resolution: { integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== } + engines: { node: '>=12' } + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.20.2': + resolution: { integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== } + engines: { node: '>=12' } + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.20.2': + resolution: { integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== } + engines: { node: '>=12' } + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.20.2': + resolution: { integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== } + engines: { node: '>=12' } + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.20.2': + resolution: { integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== } + engines: { node: '>=12' } + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.20.2': + resolution: { integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== } + engines: { node: '>=12' } + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.20.2': + resolution: { integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== } + engines: { node: '>=12' } + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.20.2': + resolution: { integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== } + engines: { node: '>=12' } + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.20.2': + resolution: { integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== } + engines: { node: '>=12' } + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.20.2': + resolution: { integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== } + engines: { node: '>=12' } + cpu: [x64] + os: [win32] + + '@jridgewell/gen-mapping@0.3.5': + resolution: { integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== } + engines: { node: '>=6.0.0' } + + '@jridgewell/resolve-uri@3.1.2': + resolution: { integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== } + engines: { node: '>=6.0.0' } + + '@jridgewell/set-array@1.2.1': + resolution: { integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== } + engines: { node: '>=6.0.0' } + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: { integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== } + + '@jridgewell/trace-mapping@0.3.25': + resolution: { integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== } + + '@module-federation/runtime@0.6.1': + resolution: { integrity: sha512-57NvdAwrQagw7bEAjvIav8sU0srTT5O+ul8hl86j2a3I5gYBF6NN2QGx4w5d/exgXUcqmUQZBV6I3q5NrcRzfg== } + + '@module-federation/sdk@0.6.1': + resolution: { integrity: sha512-OjDW2sYz4iaZnu4rpTlYDzjXAQiLLzCPwIFM+UFvRtdgWN08Bjn5sDRgMzP2x2ziLzonwmEFDEK9Sl2h85NtJg== } + + '@module-federation/vite@1.0.0': + resolution: { integrity: sha512-RRlMIgaL4FAAX9v84DoM8P5G+z0WpPqnrUM5X7tWD/yT5TqSTzu0Wu7CJNHKvDvLIg05f/4e9mes5KQ38QhgeA== } + + '@rollup/pluginutils@5.1.0': + resolution: { integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.19.1': + resolution: { integrity: sha512-XzqSg714++M+FXhHfXpS1tDnNZNpgxxuGZWlRG/jSj+VEPmZ0yg6jV4E0AL3uyBKxO8mO3xtOsP5mQ+XLfrlww== } + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.19.1': + resolution: { integrity: sha512-thFUbkHteM20BGShD6P08aungq4irbIZKUNbG70LN8RkO7YztcGPiKTTGZS7Kw+x5h8hOXs0i4OaHwFxlpQN6A== } + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.19.1': + resolution: { integrity: sha512-8o6eqeFZzVLia2hKPUZk4jdE3zW7LCcZr+MD18tXkgBBid3lssGVAYuox8x6YHoEPDdDa9ixTaStcmx88lio5Q== } + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.19.1': + resolution: { integrity: sha512-4T42heKsnbjkn7ovYiAdDVRRWZLU9Kmhdt6HafZxFcUdpjlBlxj4wDrt1yFWLk7G4+E+8p2C9tcmSu0KA6auGA== } + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.19.1': + resolution: { integrity: sha512-MXg1xp+e5GhZ3Vit1gGEyoC+dyQUBy2JgVQ+3hUrD9wZMkUw/ywgkpK7oZgnB6kPpGrxJ41clkPPnsknuD6M2Q== } + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.19.1': + resolution: { integrity: sha512-DZNLwIY4ftPSRVkJEaxYkq7u2zel7aah57HESuNkUnz+3bZHxwkCUkrfS2IWC1sxK6F2QNIR0Qr/YXw7nkF3Pw== } + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.19.1': + resolution: { integrity: sha512-C7evongnjyxdngSDRRSQv5GvyfISizgtk9RM+z2biV5kY6S/NF/wta7K+DanmktC5DkuaJQgoKGf7KUDmA7RUw== } + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.19.1': + resolution: { integrity: sha512-89tFWqxfxLLHkAthAcrTs9etAoBFRduNfWdl2xUs/yLV+7XDrJ5yuXMHptNqf1Zw0UCA3cAutkAiAokYCkaPtw== } + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.19.1': + resolution: { integrity: sha512-PromGeV50sq+YfaisG8W3fd+Cl6mnOOiNv2qKKqKCpiiEke2KiKVyDqG/Mb9GWKbYMHj5a01fq/qlUR28PFhCQ== } + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.19.1': + resolution: { integrity: sha512-/1BmHYh+iz0cNCP0oHCuF8CSiNj0JOGf0jRlSo3L/FAyZyG2rGBuKpkZVH9YF+x58r1jgWxvm1aRg3DHrLDt6A== } + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.19.1': + resolution: { integrity: sha512-0cYP5rGkQWRZKy9/HtsWVStLXzCF3cCBTRI+qRL8Z+wkYlqN7zrSYm6FuY5Kd5ysS5aH0q5lVgb/WbG4jqXN1Q== } + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.19.1': + resolution: { integrity: sha512-XUXeI9eM8rMP8aGvii/aOOiMvTs7xlCosq9xCjcqI9+5hBxtjDpD+7Abm1ZhVIFE1J2h2VIg0t2DX/gjespC2Q== } + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.19.1': + resolution: { integrity: sha512-V7cBw/cKXMfEVhpSvVZhC+iGifD6U1zJ4tbibjjN+Xi3blSXaj/rJynAkCFFQfoG6VZrAiP7uGVzL440Q6Me2Q== } + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.19.1': + resolution: { integrity: sha512-88brja2vldW/76jWATlBqHEoGjJLRnP0WOEKAUbMcXaAZnemNhlAHSyj4jIwMoP2T750LE9lblvD4e2jXleZsA== } + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.19.1': + resolution: { integrity: sha512-LdxxcqRVSXi6k6JUrTah1rHuaupoeuiv38du8Mt4r4IPer3kwlTo+RuvfE8KzZ/tL6BhaPlzJ3835i6CxrFIRQ== } + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.19.1': + resolution: { integrity: sha512-2bIrL28PcK3YCqD9anGxDxamxdiJAxA+l7fWIwM5o8UqNy1t3d1NdAweO2XhA0KTDJ5aH1FsuiT5+7VhtHliXg== } + cpu: [x64] + os: [win32] + + '@types/babel__core@7.20.5': + resolution: { integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== } + + '@types/babel__generator@7.6.8': + resolution: { integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== } + + '@types/babel__template@7.4.4': + resolution: { integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== } + + '@types/babel__traverse@7.20.6': + resolution: { integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== } + + '@types/estree@1.0.5': + resolution: { integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== } + + '@types/node@18.19.42': + resolution: { integrity: sha512-d2ZFc/3lnK2YCYhos8iaNIYu9Vfhr92nHiyJHRltXWjXUBjEE+A4I58Tdbnw4VhggSW+2j5y5gTrLs4biNnubg== } + + '@types/prop-types@15.7.12': + resolution: { integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== } + + '@types/react-dom@18.2.25': + resolution: { integrity: sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA== } + + '@types/react@18.2.79': + resolution: { integrity: sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w== } + + '@vitejs/plugin-react@4.2.1': + resolution: { integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ== } + engines: { node: ^14.18.0 || >=16.0.0 } + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + + ansi-styles@3.2.1: + resolution: { integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== } + engines: { node: '>=4' } + + browserslist@4.23.2: + resolution: { integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA== } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + hasBin: true + + caniuse-lite@1.0.30001646: + resolution: { integrity: sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw== } + + chalk@2.4.2: + resolution: { integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== } + engines: { node: '>=4' } + + color-convert@1.9.3: + resolution: { integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== } + + color-name@1.1.3: + resolution: { integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== } + + convert-source-map@2.0.0: + resolution: { integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== } + + csstype@3.1.3: + resolution: { integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== } + + debug@4.3.6: + resolution: { integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== } + engines: { node: '>=6.0' } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + defu@6.1.4: + resolution: { integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== } + + electron-to-chromium@1.5.4: + resolution: { integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA== } + + esbuild@0.20.2: + resolution: { integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g== } + engines: { node: '>=12' } + hasBin: true + + escalade@3.1.2: + resolution: { integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== } + engines: { node: '>=6' } + + escape-string-regexp@1.0.5: + resolution: { integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== } + engines: { node: '>=0.8.0' } + + estree-walker@2.0.2: + resolution: { integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== } + + fsevents@2.3.3: + resolution: { integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + os: [darwin] + + gensync@1.0.0-beta.2: + resolution: { integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== } + engines: { node: '>=6.9.0' } + + globals@11.12.0: + resolution: { integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== } + engines: { node: '>=4' } + + has-flag@3.0.0: + resolution: { integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== } + engines: { node: '>=4' } + + js-tokens@4.0.0: + resolution: { integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== } + + jsesc@2.5.2: + resolution: { integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== } + engines: { node: '>=4' } + hasBin: true + + json5@2.2.3: + resolution: { integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== } + engines: { node: '>=6' } + hasBin: true + + loose-envify@1.4.0: + resolution: { integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== } + hasBin: true + + lru-cache@5.1.1: + resolution: { integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== } + + magic-string@0.30.11: + resolution: { integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A== } + + ms@2.1.2: + resolution: { integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== } + + nanoid@3.3.7: + resolution: { integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + hasBin: true + + node-releases@2.0.18: + resolution: { integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== } + + pathe@1.1.2: + resolution: { integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== } + + picocolors@1.0.1: + resolution: { integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== } + + picomatch@2.3.1: + resolution: { integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== } + engines: { node: '>=8.6' } + + postcss@8.4.40: + resolution: { integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q== } + engines: { node: ^10 || ^12 || >=14 } + + react-dom@18.3.1: + resolution: { integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== } + peerDependencies: + react: ^18.3.1 + + react-refresh@0.14.2: + resolution: { integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== } + engines: { node: '>=0.10.0' } + + react@18.3.1: + resolution: { integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== } + engines: { node: '>=0.10.0' } + + rollup@4.19.1: + resolution: { integrity: sha512-K5vziVlg7hTpYfFBI+91zHBEMo6jafYXpkMlqZjg7/zhIG9iHqazBf4xz9AVdjS9BruRn280ROqLI7G3OFRIlw== } + engines: { node: '>=18.0.0', npm: '>=8.0.0' } + hasBin: true + + scheduler@0.23.2: + resolution: { integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== } + + semver@6.3.1: + resolution: { integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== } + hasBin: true + + source-map-js@1.2.0: + resolution: { integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== } + engines: { node: '>=0.10.0' } + + supports-color@5.5.0: + resolution: { integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== } + engines: { node: '>=4' } + + to-fast-properties@2.0.0: + resolution: { integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== } + engines: { node: '>=4' } + + typescript@5.4.5: + resolution: { integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== } + engines: { node: '>=14.17' } + hasBin: true + + undici-types@5.26.5: + resolution: { integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== } + + update-browserslist-db@1.1.0: + resolution: { integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== } + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + vite@5.2.10: + resolution: { integrity: sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw== } + engines: { node: ^18.0.0 || >=20.0.0 } + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + yallist@3.1.1: + resolution: { integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== } + +snapshots: + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@babel/code-frame@7.24.7': + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 + + '@babel/compat-data@7.25.2': {} + + '@babel/core@7.25.2': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.0 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + convert-source-map: 2.0.0 + debug: 4.3.6 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.25.0': + dependencies: + '@babel/types': 7.25.2 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + '@babel/helper-compilation-targets@7.25.2': + dependencies: + '@babel/compat-data': 7.25.2 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-module-imports@7.24.7': + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.24.8': {} + + '@babel/helper-simple-access@7.24.7': + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.24.8': {} + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/helper-validator-option@7.24.8': {} + + '@babel/helpers@7.25.0': + dependencies: + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 + + '@babel/highlight@7.24.7': + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + + '@babel/parser@7.25.3': + dependencies: + '@babel/types': 7.25.2 + + '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/template@7.25.0': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + + '@babel/traverse@7.25.3': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 + debug: 4.3.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.25.2': + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@esbuild/aix-ppc64@0.20.2': + optional: true + + '@esbuild/android-arm64@0.20.2': + optional: true + + '@esbuild/android-arm@0.20.2': + optional: true + + '@esbuild/android-x64@0.20.2': + optional: true + + '@esbuild/darwin-arm64@0.20.2': + optional: true + + '@esbuild/darwin-x64@0.20.2': + optional: true + + '@esbuild/freebsd-arm64@0.20.2': + optional: true + + '@esbuild/freebsd-x64@0.20.2': + optional: true + + '@esbuild/linux-arm64@0.20.2': + optional: true + + '@esbuild/linux-arm@0.20.2': + optional: true + + '@esbuild/linux-ia32@0.20.2': + optional: true + + '@esbuild/linux-loong64@0.20.2': + optional: true + + '@esbuild/linux-mips64el@0.20.2': + optional: true + + '@esbuild/linux-ppc64@0.20.2': + optional: true + + '@esbuild/linux-riscv64@0.20.2': + optional: true + + '@esbuild/linux-s390x@0.20.2': + optional: true + + '@esbuild/linux-x64@0.20.2': + optional: true + + '@esbuild/netbsd-x64@0.20.2': + optional: true + + '@esbuild/openbsd-x64@0.20.2': + optional: true + + '@esbuild/sunos-x64@0.20.2': + optional: true + + '@esbuild/win32-arm64@0.20.2': + optional: true + + '@esbuild/win32-ia32@0.20.2': + optional: true + + '@esbuild/win32-x64@0.20.2': + optional: true + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@module-federation/runtime@0.6.1': + dependencies: + '@module-federation/sdk': 0.6.1 + + '@module-federation/sdk@0.6.1': {} + + '@module-federation/vite@1.0.0(rollup@4.19.1)': + dependencies: + '@module-federation/runtime': 0.6.1 + '@rollup/pluginutils': 5.1.0(rollup@4.19.1) + defu: 6.1.4 + estree-walker: 2.0.2 + magic-string: 0.30.11 + pathe: 1.1.2 + transitivePeerDependencies: + - rollup + + '@rollup/pluginutils@5.1.0(rollup@4.19.1)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.19.1 + + '@rollup/rollup-android-arm-eabi@4.19.1': + optional: true + + '@rollup/rollup-android-arm64@4.19.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.19.1': + optional: true + + '@rollup/rollup-darwin-x64@4.19.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.19.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.19.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.19.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.19.1': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.19.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.19.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.19.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.19.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.19.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.19.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.19.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.19.1': + optional: true + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.25.2 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + + '@types/babel__traverse@7.20.6': + dependencies: + '@babel/types': 7.25.2 + + '@types/estree@1.0.5': {} + + '@types/node@18.19.42': + dependencies: + undici-types: 5.26.5 + optional: true + + '@types/prop-types@15.7.12': {} + + '@types/react-dom@18.2.25': + dependencies: + '@types/react': 18.2.79 + + '@types/react@18.2.79': + dependencies: + '@types/prop-types': 15.7.12 + csstype: 3.1.3 + + '@vitejs/plugin-react@4.2.1(vite@5.2.10(@types/node@18.19.42))': + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 5.2.10(@types/node@18.19.42) + transitivePeerDependencies: + - supports-color + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + browserslist@4.23.2: + dependencies: + caniuse-lite: 1.0.30001646 + electron-to-chromium: 1.5.4 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.2) + + caniuse-lite@1.0.30001646: {} + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-name@1.1.3: {} + + convert-source-map@2.0.0: {} + + csstype@3.1.3: {} + + debug@4.3.6: + dependencies: + ms: 2.1.2 + + defu@6.1.4: {} + + electron-to-chromium@1.5.4: {} + + esbuild@0.20.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + + escalade@3.1.2: {} + + escape-string-regexp@1.0.5: {} + + estree-walker@2.0.2: {} + + fsevents@2.3.3: + optional: true + + gensync@1.0.0-beta.2: {} + + globals@11.12.0: {} + + has-flag@3.0.0: {} + + js-tokens@4.0.0: {} + + jsesc@2.5.2: {} + + json5@2.2.3: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.11: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + ms@2.1.2: {} + + nanoid@3.3.7: {} + + node-releases@2.0.18: {} + + pathe@1.1.2: {} + + picocolors@1.0.1: {} + + picomatch@2.3.1: {} + + postcss@8.4.40: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-refresh@0.14.2: {} + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + rollup@4.19.1: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.19.1 + '@rollup/rollup-android-arm64': 4.19.1 + '@rollup/rollup-darwin-arm64': 4.19.1 + '@rollup/rollup-darwin-x64': 4.19.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.19.1 + '@rollup/rollup-linux-arm-musleabihf': 4.19.1 + '@rollup/rollup-linux-arm64-gnu': 4.19.1 + '@rollup/rollup-linux-arm64-musl': 4.19.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.19.1 + '@rollup/rollup-linux-riscv64-gnu': 4.19.1 + '@rollup/rollup-linux-s390x-gnu': 4.19.1 + '@rollup/rollup-linux-x64-gnu': 4.19.1 + '@rollup/rollup-linux-x64-musl': 4.19.1 + '@rollup/rollup-win32-arm64-msvc': 4.19.1 + '@rollup/rollup-win32-ia32-msvc': 4.19.1 + '@rollup/rollup-win32-x64-msvc': 4.19.1 + fsevents: 2.3.3 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + semver@6.3.1: {} + + source-map-js@1.2.0: {} + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + to-fast-properties@2.0.0: {} + + typescript@5.4.5: {} + + undici-types@5.26.5: + optional: true + + update-browserslist-db@1.1.0(browserslist@4.23.2): + dependencies: + browserslist: 4.23.2 + escalade: 3.1.2 + picocolors: 1.0.1 + + vite@5.2.10(@types/node@18.19.42): + dependencies: + esbuild: 0.20.2 + postcss: 8.4.40 + rollup: 4.19.1 + optionalDependencies: + '@types/node': 18.19.42 + fsevents: 2.3.3 + + yallist@3.1.1: {} diff --git a/module-federation-vite-react/remote/public/vite.svg b/module-federation-vite-react/remote/public/vite.svg new file mode 100644 index 00000000000..e7b8dfb1b2a --- /dev/null +++ b/module-federation-vite-react/remote/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/module-federation-vite-react/remote/src/App.tsx b/module-federation-vite-react/remote/src/App.tsx new file mode 100644 index 00000000000..7f1d4dc7e42 --- /dev/null +++ b/module-federation-vite-react/remote/src/App.tsx @@ -0,0 +1,43 @@ +import { useEffect } from 'react'; +import Counter from './components/Counter'; + +export default () => { + useEffect(() => { + console.log('Remote useEffect'); + }, []); + + return ( +
+
+ + + +
+
I'm the remote app
+ +
+ ); +}; diff --git a/module-federation-vite-react/remote/src/components/Counter.tsx b/module-federation-vite-react/remote/src/components/Counter.tsx new file mode 100644 index 00000000000..a8dbd627e96 --- /dev/null +++ b/module-federation-vite-react/remote/src/components/Counter.tsx @@ -0,0 +1,22 @@ +import { useState } from 'react'; + +export default () => { + const [count, setCount] = useState(0); + + return ( + + ); +}; diff --git a/module-federation-vite-react/remote/src/environment.ts b/module-federation-vite-react/remote/src/environment.ts new file mode 100644 index 00000000000..7c645e42fb7 --- /dev/null +++ b/module-federation-vite-react/remote/src/environment.ts @@ -0,0 +1 @@ +export default {}; \ No newline at end of file diff --git a/module-federation-vite-react/remote/src/main.tsx b/module-federation-vite-react/remote/src/main.tsx new file mode 100644 index 00000000000..3104e396061 --- /dev/null +++ b/module-federation-vite-react/remote/src/main.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import App from './App'; + +ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( + + + , +); diff --git a/module-federation-vite-react/remote/src/vite-env.d.ts b/module-federation-vite-react/remote/src/vite-env.d.ts new file mode 100644 index 00000000000..11f02fe2a00 --- /dev/null +++ b/module-federation-vite-react/remote/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/module-federation-vite-react/remote/tsconfig.json b/module-federation-vite-react/remote/tsconfig.json new file mode 100644 index 00000000000..8f538527d99 --- /dev/null +++ b/module-federation-vite-react/remote/tsconfig.json @@ -0,0 +1,37 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": [ + "DOM", + "DOM.Iterable", + "ESNext" + ], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "baseUrl": ".", + "paths": { + "shared": [ + "../shared/shared.ts" + ] + } + }, + "include": [ + "src" + ], + "references": [ + { + "path": "./tsconfig.node.json" + } + ] +} \ No newline at end of file diff --git a/module-federation-vite-react/remote/tsconfig.node.json b/module-federation-vite-react/remote/tsconfig.node.json new file mode 100644 index 00000000000..ac12f8612b3 --- /dev/null +++ b/module-federation-vite-react/remote/tsconfig.node.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true + }, + "include": [ + "vite.config.ts", + "module-federation/vite-importmap-shim.ts" + ] +} \ No newline at end of file diff --git a/module-federation-vite-react/remote/vite.config.ts b/module-federation-vite-react/remote/vite.config.ts new file mode 100644 index 00000000000..b9955d8d088 --- /dev/null +++ b/module-federation-vite-react/remote/vite.config.ts @@ -0,0 +1,43 @@ +import { federation } from '@module-federation/vite'; +import react from '@vitejs/plugin-react'; +import { writeFileSync } from 'fs'; +import { defineConfig, loadEnv } from 'vite'; +import { dependencies } from './package.json'; + +export default defineConfig(({ mode }) => { + const selfEnv = loadEnv(mode, process.cwd()); + return { + server: { + fs: { + allow: ['.', '../shared'], + }, + }, + build: { + target: 'chrome89', + }, + plugins: [ + { + name: 'generate-environment', + options: function () { + console.info('selfEnv', selfEnv); + writeFileSync('./src/environment.ts', `export default ${JSON.stringify(selfEnv, null, 2)};`); + }, + }, + federation({ + filename: 'remoteEntry.js', + name: 'remote', + exposes: { + './remote-app': './src/App.tsx', + }, + remotes: {}, + shared: { + react: { + requiredVersion: dependencies.react, + singleton: true, + }, + }, + }), + react(), + ], + }; +}); diff --git a/module-federation-vite-react/shared/shared.ts b/module-federation-vite-react/shared/shared.ts new file mode 100644 index 00000000000..6c8f7157d1f --- /dev/null +++ b/module-federation-vite-react/shared/shared.ts @@ -0,0 +1,3 @@ +export const state = { + message: '' +} From 45074d80d7781e85d098da6ad200a1392c0d6960 Mon Sep 17 00:00:00 2001 From: gioboa Date: Thu, 10 Oct 2024 14:25:24 +0200 Subject: [PATCH 2/2] fix: move lazy call --- module-federation-vite-react/host/src/App.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/module-federation-vite-react/host/src/App.tsx b/module-federation-vite-react/host/src/App.tsx index 0581f4c5dab..dcffe0e9bf8 100644 --- a/module-federation-vite-react/host/src/App.tsx +++ b/module-federation-vite-react/host/src/App.tsx @@ -3,12 +3,12 @@ import { of, tap } from 'rxjs'; import './App.css'; import Counter from './components/Counter'; -export default () => { - const Remote = lazy( - // @ts-ignore - async () => import('remote/remote-app'), - ); +const Remote = lazy( + // @ts-ignore + async () => import('remote/remote-app'), +); +export default () => { useEffect(() => { of('emit') .pipe(tap(() => console.log("I'm RxJs from host")))