├── .gitignore ├── .husky └── pre-commit ├── .prettierignore ├── .prettierrc ├── .vscode └── settings.json ├── README.md ├── docs └── screenshot.png ├── host ├── .gitignore ├── index.html ├── package.json ├── pnpm-lock.yaml ├── public │ └── vite.svg ├── src │ ├── App.css │ ├── App.tsx │ ├── components │ │ └── Counter.tsx │ ├── main.tsx │ └── vite-env.d.ts ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts ├── package.json ├── pnpm-lock.yaml ├── remote ├── .gitignore ├── index.html ├── package.json ├── pnpm-lock.yaml ├── public │ └── vite.svg ├── src │ ├── App.tsx │ ├── components │ │ └── Counter.tsx │ ├── environment.ts │ ├── main.tsx │ └── vite-env.d.ts ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts └── shared └── shared.ts /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | 26 | # Module federation temp files 27 | .__mf__temp -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npx pretty-quick --staged 5 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Add files here to ignore them from prettier formatting 2 | 3 | **/*.log 4 | **/.DS_Store 5 | *. 6 | dist 7 | node_modules 8 | coverage -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 140, 3 | "singleQuote": true, 4 | "useTabs": true, 5 | "tabWidth": 2, 6 | "semi": true, 7 | "bracketSpacing": true 8 | } 9 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.codeActionsOnSave": { 3 | "source.organizeImports": "explicit", 4 | "source.fixAll": "explicit" 5 | }, 6 | "editor.formatOnSave": true 7 | } 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # React host and remote 2 | 3 | ## Getting started 4 | 5 | From this directory execute: 6 | 7 | - npm run install:deps 8 | - npm run preview 9 | 10 | Open your browser at http://localhost:4173/ to see the amazing result 11 | 12 | ![screenshot](docs/screenshot.png) 13 | -------------------------------------------------------------------------------- /docs/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gioboa/react-microfrontend-demo/dd04805ba40d1008b3a56d9290e2353167d2964c/docs/screenshot.png -------------------------------------------------------------------------------- /host/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /host/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Host 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /host/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vite-react-microfrontends_host", 3 | "version": "0.0.0", 4 | "type": "module", 5 | "scripts": { 6 | "dev": "vite --port 4173", 7 | "build": "tsc && vite build", 8 | "preview": "npm run build && vite preview --port 4173" 9 | }, 10 | "dependencies": { 11 | "react": "^18.3.1", 12 | "react-dom": "^18.3.1", 13 | "rxjs": "^7.8.1" 14 | }, 15 | "devDependencies": { 16 | "@module-federation/vite": "1.1.9", 17 | "@types/react": "18.2.79", 18 | "@types/react-dom": "18.2.25", 19 | "@vitejs/plugin-react": "4.2.1", 20 | "typescript": "5.4.5", 21 | "vite": "5.2.10" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /host/pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | .: 9 | dependencies: 10 | react: 11 | specifier: ^18.3.1 12 | version: 18.3.1 13 | react-dom: 14 | specifier: ^18.3.1 15 | version: 18.3.1(react@18.3.1) 16 | rxjs: 17 | specifier: ^7.8.1 18 | version: 7.8.1 19 | devDependencies: 20 | '@module-federation/vite': 21 | specifier: 1.1.9 22 | version: 1.1.9(rollup@4.19.1) 23 | '@types/react': 24 | specifier: 18.2.79 25 | version: 18.2.79 26 | '@types/react-dom': 27 | specifier: 18.2.25 28 | version: 18.2.25 29 | '@vitejs/plugin-react': 30 | specifier: 4.2.1 31 | version: 4.2.1(vite@5.2.10(@types/node@18.19.42)) 32 | typescript: 33 | specifier: 5.4.5 34 | version: 5.4.5 35 | vite: 36 | specifier: 5.2.10 37 | version: 5.2.10(@types/node@18.19.42) 38 | 39 | packages: 40 | '@ampproject/remapping@2.3.0': 41 | resolution: { integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== } 42 | engines: { node: '>=6.0.0' } 43 | 44 | '@babel/code-frame@7.24.7': 45 | resolution: { integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== } 46 | engines: { node: '>=6.9.0' } 47 | 48 | '@babel/compat-data@7.25.2': 49 | resolution: { integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ== } 50 | engines: { node: '>=6.9.0' } 51 | 52 | '@babel/core@7.25.2': 53 | resolution: { integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== } 54 | engines: { node: '>=6.9.0' } 55 | 56 | '@babel/generator@7.25.0': 57 | resolution: { integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw== } 58 | engines: { node: '>=6.9.0' } 59 | 60 | '@babel/helper-compilation-targets@7.25.2': 61 | resolution: { integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== } 62 | engines: { node: '>=6.9.0' } 63 | 64 | '@babel/helper-module-imports@7.24.7': 65 | resolution: { integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== } 66 | engines: { node: '>=6.9.0' } 67 | 68 | '@babel/helper-module-transforms@7.25.2': 69 | resolution: { integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== } 70 | engines: { node: '>=6.9.0' } 71 | peerDependencies: 72 | '@babel/core': ^7.0.0 73 | 74 | '@babel/helper-plugin-utils@7.24.8': 75 | resolution: { integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== } 76 | engines: { node: '>=6.9.0' } 77 | 78 | '@babel/helper-simple-access@7.24.7': 79 | resolution: { integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== } 80 | engines: { node: '>=6.9.0' } 81 | 82 | '@babel/helper-string-parser@7.24.8': 83 | resolution: { integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== } 84 | engines: { node: '>=6.9.0' } 85 | 86 | '@babel/helper-validator-identifier@7.24.7': 87 | resolution: { integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== } 88 | engines: { node: '>=6.9.0' } 89 | 90 | '@babel/helper-validator-option@7.24.8': 91 | resolution: { integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== } 92 | engines: { node: '>=6.9.0' } 93 | 94 | '@babel/helpers@7.25.0': 95 | resolution: { integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw== } 96 | engines: { node: '>=6.9.0' } 97 | 98 | '@babel/highlight@7.24.7': 99 | resolution: { integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== } 100 | engines: { node: '>=6.9.0' } 101 | 102 | '@babel/parser@7.25.3': 103 | resolution: { integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw== } 104 | engines: { node: '>=6.0.0' } 105 | hasBin: true 106 | 107 | '@babel/plugin-transform-react-jsx-self@7.24.7': 108 | resolution: { integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw== } 109 | engines: { node: '>=6.9.0' } 110 | peerDependencies: 111 | '@babel/core': ^7.0.0-0 112 | 113 | '@babel/plugin-transform-react-jsx-source@7.24.7': 114 | resolution: { integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ== } 115 | engines: { node: '>=6.9.0' } 116 | peerDependencies: 117 | '@babel/core': ^7.0.0-0 118 | 119 | '@babel/template@7.25.0': 120 | resolution: { integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== } 121 | engines: { node: '>=6.9.0' } 122 | 123 | '@babel/traverse@7.25.3': 124 | resolution: { integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ== } 125 | engines: { node: '>=6.9.0' } 126 | 127 | '@babel/types@7.25.2': 128 | resolution: { integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q== } 129 | engines: { node: '>=6.9.0' } 130 | 131 | '@esbuild/aix-ppc64@0.20.2': 132 | resolution: { integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== } 133 | engines: { node: '>=12' } 134 | cpu: [ppc64] 135 | os: [aix] 136 | 137 | '@esbuild/android-arm64@0.20.2': 138 | resolution: { integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== } 139 | engines: { node: '>=12' } 140 | cpu: [arm64] 141 | os: [android] 142 | 143 | '@esbuild/android-arm@0.20.2': 144 | resolution: { integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== } 145 | engines: { node: '>=12' } 146 | cpu: [arm] 147 | os: [android] 148 | 149 | '@esbuild/android-x64@0.20.2': 150 | resolution: { integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== } 151 | engines: { node: '>=12' } 152 | cpu: [x64] 153 | os: [android] 154 | 155 | '@esbuild/darwin-arm64@0.20.2': 156 | resolution: { integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== } 157 | engines: { node: '>=12' } 158 | cpu: [arm64] 159 | os: [darwin] 160 | 161 | '@esbuild/darwin-x64@0.20.2': 162 | resolution: { integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== } 163 | engines: { node: '>=12' } 164 | cpu: [x64] 165 | os: [darwin] 166 | 167 | '@esbuild/freebsd-arm64@0.20.2': 168 | resolution: { integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== } 169 | engines: { node: '>=12' } 170 | cpu: [arm64] 171 | os: [freebsd] 172 | 173 | '@esbuild/freebsd-x64@0.20.2': 174 | resolution: { integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== } 175 | engines: { node: '>=12' } 176 | cpu: [x64] 177 | os: [freebsd] 178 | 179 | '@esbuild/linux-arm64@0.20.2': 180 | resolution: { integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== } 181 | engines: { node: '>=12' } 182 | cpu: [arm64] 183 | os: [linux] 184 | 185 | '@esbuild/linux-arm@0.20.2': 186 | resolution: { integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== } 187 | engines: { node: '>=12' } 188 | cpu: [arm] 189 | os: [linux] 190 | 191 | '@esbuild/linux-ia32@0.20.2': 192 | resolution: { integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== } 193 | engines: { node: '>=12' } 194 | cpu: [ia32] 195 | os: [linux] 196 | 197 | '@esbuild/linux-loong64@0.20.2': 198 | resolution: { integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== } 199 | engines: { node: '>=12' } 200 | cpu: [loong64] 201 | os: [linux] 202 | 203 | '@esbuild/linux-mips64el@0.20.2': 204 | resolution: { integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== } 205 | engines: { node: '>=12' } 206 | cpu: [mips64el] 207 | os: [linux] 208 | 209 | '@esbuild/linux-ppc64@0.20.2': 210 | resolution: { integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== } 211 | engines: { node: '>=12' } 212 | cpu: [ppc64] 213 | os: [linux] 214 | 215 | '@esbuild/linux-riscv64@0.20.2': 216 | resolution: { integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== } 217 | engines: { node: '>=12' } 218 | cpu: [riscv64] 219 | os: [linux] 220 | 221 | '@esbuild/linux-s390x@0.20.2': 222 | resolution: { integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== } 223 | engines: { node: '>=12' } 224 | cpu: [s390x] 225 | os: [linux] 226 | 227 | '@esbuild/linux-x64@0.20.2': 228 | resolution: { integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== } 229 | engines: { node: '>=12' } 230 | cpu: [x64] 231 | os: [linux] 232 | 233 | '@esbuild/netbsd-x64@0.20.2': 234 | resolution: { integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== } 235 | engines: { node: '>=12' } 236 | cpu: [x64] 237 | os: [netbsd] 238 | 239 | '@esbuild/openbsd-x64@0.20.2': 240 | resolution: { integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== } 241 | engines: { node: '>=12' } 242 | cpu: [x64] 243 | os: [openbsd] 244 | 245 | '@esbuild/sunos-x64@0.20.2': 246 | resolution: { integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== } 247 | engines: { node: '>=12' } 248 | cpu: [x64] 249 | os: [sunos] 250 | 251 | '@esbuild/win32-arm64@0.20.2': 252 | resolution: { integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== } 253 | engines: { node: '>=12' } 254 | cpu: [arm64] 255 | os: [win32] 256 | 257 | '@esbuild/win32-ia32@0.20.2': 258 | resolution: { integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== } 259 | engines: { node: '>=12' } 260 | cpu: [ia32] 261 | os: [win32] 262 | 263 | '@esbuild/win32-x64@0.20.2': 264 | resolution: { integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== } 265 | engines: { node: '>=12' } 266 | cpu: [x64] 267 | os: [win32] 268 | 269 | '@jridgewell/gen-mapping@0.3.5': 270 | resolution: { integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== } 271 | engines: { node: '>=6.0.0' } 272 | 273 | '@jridgewell/resolve-uri@3.1.2': 274 | resolution: { integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== } 275 | engines: { node: '>=6.0.0' } 276 | 277 | '@jridgewell/set-array@1.2.1': 278 | resolution: { integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== } 279 | engines: { node: '>=6.0.0' } 280 | 281 | '@jridgewell/sourcemap-codec@1.5.0': 282 | resolution: { integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== } 283 | 284 | '@jridgewell/trace-mapping@0.3.25': 285 | resolution: { integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== } 286 | 287 | '@module-federation/error-codes@0.8.0': 288 | resolution: { integrity: sha512-xU0eUA0xTUx93Li/eYCZ+kuGP9qt+8fEaOu+i6U9jJP1RYONvPifibfLNo4SQszQTzqfGViyrx1O3uiA7XUYQQ== } 289 | 290 | '@module-federation/runtime@0.8.0': 291 | resolution: { integrity: sha512-UfDsJYAFOyJoErpmjf1sy8d2WXHGitFsSQrIiDzNpDHv4SzHgjuhWQeAuJKlQq2zdE/F4IPhkHgTatQigRKZCA== } 292 | 293 | '@module-federation/sdk@0.8.0': 294 | resolution: { integrity: sha512-V2cNGO//sWCyHTaQ0iTcoslolqVgdBIBOkZVLyk9AkZ4B3CO49pe/TmIIaVs9jVg3GO+ZmmazBFKRkqdn2PdRg== } 295 | 296 | '@module-federation/vite@1.1.9': 297 | resolution: { integrity: sha512-gUo/uV8ZlHTLJjgKy02lXb7zo9auqOIt5Ozw1ewP9vkMrNQVEm4ZxmZ7P+k8Rb9O2PjfdHOLRuHfNmXHmywzUw== } 298 | 299 | '@rollup/pluginutils@5.1.0': 300 | resolution: { integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== } 301 | engines: { node: '>=14.0.0' } 302 | peerDependencies: 303 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 304 | peerDependenciesMeta: 305 | rollup: 306 | optional: true 307 | 308 | '@rollup/rollup-android-arm-eabi@4.19.1': 309 | resolution: { integrity: sha512-XzqSg714++M+FXhHfXpS1tDnNZNpgxxuGZWlRG/jSj+VEPmZ0yg6jV4E0AL3uyBKxO8mO3xtOsP5mQ+XLfrlww== } 310 | cpu: [arm] 311 | os: [android] 312 | 313 | '@rollup/rollup-android-arm64@4.19.1': 314 | resolution: { integrity: sha512-thFUbkHteM20BGShD6P08aungq4irbIZKUNbG70LN8RkO7YztcGPiKTTGZS7Kw+x5h8hOXs0i4OaHwFxlpQN6A== } 315 | cpu: [arm64] 316 | os: [android] 317 | 318 | '@rollup/rollup-darwin-arm64@4.19.1': 319 | resolution: { integrity: sha512-8o6eqeFZzVLia2hKPUZk4jdE3zW7LCcZr+MD18tXkgBBid3lssGVAYuox8x6YHoEPDdDa9ixTaStcmx88lio5Q== } 320 | cpu: [arm64] 321 | os: [darwin] 322 | 323 | '@rollup/rollup-darwin-x64@4.19.1': 324 | resolution: { integrity: sha512-4T42heKsnbjkn7ovYiAdDVRRWZLU9Kmhdt6HafZxFcUdpjlBlxj4wDrt1yFWLk7G4+E+8p2C9tcmSu0KA6auGA== } 325 | cpu: [x64] 326 | os: [darwin] 327 | 328 | '@rollup/rollup-linux-arm-gnueabihf@4.19.1': 329 | resolution: { integrity: sha512-MXg1xp+e5GhZ3Vit1gGEyoC+dyQUBy2JgVQ+3hUrD9wZMkUw/ywgkpK7oZgnB6kPpGrxJ41clkPPnsknuD6M2Q== } 330 | cpu: [arm] 331 | os: [linux] 332 | 333 | '@rollup/rollup-linux-arm-musleabihf@4.19.1': 334 | resolution: { integrity: sha512-DZNLwIY4ftPSRVkJEaxYkq7u2zel7aah57HESuNkUnz+3bZHxwkCUkrfS2IWC1sxK6F2QNIR0Qr/YXw7nkF3Pw== } 335 | cpu: [arm] 336 | os: [linux] 337 | 338 | '@rollup/rollup-linux-arm64-gnu@4.19.1': 339 | resolution: { integrity: sha512-C7evongnjyxdngSDRRSQv5GvyfISizgtk9RM+z2biV5kY6S/NF/wta7K+DanmktC5DkuaJQgoKGf7KUDmA7RUw== } 340 | cpu: [arm64] 341 | os: [linux] 342 | 343 | '@rollup/rollup-linux-arm64-musl@4.19.1': 344 | resolution: { integrity: sha512-89tFWqxfxLLHkAthAcrTs9etAoBFRduNfWdl2xUs/yLV+7XDrJ5yuXMHptNqf1Zw0UCA3cAutkAiAokYCkaPtw== } 345 | cpu: [arm64] 346 | os: [linux] 347 | 348 | '@rollup/rollup-linux-powerpc64le-gnu@4.19.1': 349 | resolution: { integrity: sha512-PromGeV50sq+YfaisG8W3fd+Cl6mnOOiNv2qKKqKCpiiEke2KiKVyDqG/Mb9GWKbYMHj5a01fq/qlUR28PFhCQ== } 350 | cpu: [ppc64] 351 | os: [linux] 352 | 353 | '@rollup/rollup-linux-riscv64-gnu@4.19.1': 354 | resolution: { integrity: sha512-/1BmHYh+iz0cNCP0oHCuF8CSiNj0JOGf0jRlSo3L/FAyZyG2rGBuKpkZVH9YF+x58r1jgWxvm1aRg3DHrLDt6A== } 355 | cpu: [riscv64] 356 | os: [linux] 357 | 358 | '@rollup/rollup-linux-s390x-gnu@4.19.1': 359 | resolution: { integrity: sha512-0cYP5rGkQWRZKy9/HtsWVStLXzCF3cCBTRI+qRL8Z+wkYlqN7zrSYm6FuY5Kd5ysS5aH0q5lVgb/WbG4jqXN1Q== } 360 | cpu: [s390x] 361 | os: [linux] 362 | 363 | '@rollup/rollup-linux-x64-gnu@4.19.1': 364 | resolution: { integrity: sha512-XUXeI9eM8rMP8aGvii/aOOiMvTs7xlCosq9xCjcqI9+5hBxtjDpD+7Abm1ZhVIFE1J2h2VIg0t2DX/gjespC2Q== } 365 | cpu: [x64] 366 | os: [linux] 367 | 368 | '@rollup/rollup-linux-x64-musl@4.19.1': 369 | resolution: { integrity: sha512-V7cBw/cKXMfEVhpSvVZhC+iGifD6U1zJ4tbibjjN+Xi3blSXaj/rJynAkCFFQfoG6VZrAiP7uGVzL440Q6Me2Q== } 370 | cpu: [x64] 371 | os: [linux] 372 | 373 | '@rollup/rollup-win32-arm64-msvc@4.19.1': 374 | resolution: { integrity: sha512-88brja2vldW/76jWATlBqHEoGjJLRnP0WOEKAUbMcXaAZnemNhlAHSyj4jIwMoP2T750LE9lblvD4e2jXleZsA== } 375 | cpu: [arm64] 376 | os: [win32] 377 | 378 | '@rollup/rollup-win32-ia32-msvc@4.19.1': 379 | resolution: { integrity: sha512-LdxxcqRVSXi6k6JUrTah1rHuaupoeuiv38du8Mt4r4IPer3kwlTo+RuvfE8KzZ/tL6BhaPlzJ3835i6CxrFIRQ== } 380 | cpu: [ia32] 381 | os: [win32] 382 | 383 | '@rollup/rollup-win32-x64-msvc@4.19.1': 384 | resolution: { integrity: sha512-2bIrL28PcK3YCqD9anGxDxamxdiJAxA+l7fWIwM5o8UqNy1t3d1NdAweO2XhA0KTDJ5aH1FsuiT5+7VhtHliXg== } 385 | cpu: [x64] 386 | os: [win32] 387 | 388 | '@types/babel__core@7.20.5': 389 | resolution: { integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== } 390 | 391 | '@types/babel__generator@7.6.8': 392 | resolution: { integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== } 393 | 394 | '@types/babel__template@7.4.4': 395 | resolution: { integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== } 396 | 397 | '@types/babel__traverse@7.20.6': 398 | resolution: { integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== } 399 | 400 | '@types/estree@1.0.5': 401 | resolution: { integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== } 402 | 403 | '@types/node@18.19.42': 404 | resolution: { integrity: sha512-d2ZFc/3lnK2YCYhos8iaNIYu9Vfhr92nHiyJHRltXWjXUBjEE+A4I58Tdbnw4VhggSW+2j5y5gTrLs4biNnubg== } 405 | 406 | '@types/prop-types@15.7.12': 407 | resolution: { integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== } 408 | 409 | '@types/react-dom@18.2.25': 410 | resolution: { integrity: sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA== } 411 | 412 | '@types/react@18.2.79': 413 | resolution: { integrity: sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w== } 414 | 415 | '@vitejs/plugin-react@4.2.1': 416 | resolution: { integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ== } 417 | engines: { node: ^14.18.0 || >=16.0.0 } 418 | peerDependencies: 419 | vite: ^4.2.0 || ^5.0.0 420 | 421 | ansi-styles@3.2.1: 422 | resolution: { integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== } 423 | engines: { node: '>=4' } 424 | 425 | browserslist@4.23.2: 426 | resolution: { integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA== } 427 | engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } 428 | hasBin: true 429 | 430 | caniuse-lite@1.0.30001646: 431 | resolution: { integrity: sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw== } 432 | 433 | chalk@2.4.2: 434 | resolution: { integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== } 435 | engines: { node: '>=4' } 436 | 437 | color-convert@1.9.3: 438 | resolution: { integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== } 439 | 440 | color-name@1.1.3: 441 | resolution: { integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== } 442 | 443 | convert-source-map@2.0.0: 444 | resolution: { integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== } 445 | 446 | csstype@3.1.3: 447 | resolution: { integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== } 448 | 449 | debug@4.3.6: 450 | resolution: { integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== } 451 | engines: { node: '>=6.0' } 452 | peerDependencies: 453 | supports-color: '*' 454 | peerDependenciesMeta: 455 | supports-color: 456 | optional: true 457 | 458 | defu@6.1.4: 459 | resolution: { integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== } 460 | 461 | electron-to-chromium@1.5.4: 462 | resolution: { integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA== } 463 | 464 | esbuild@0.20.2: 465 | resolution: { integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g== } 466 | engines: { node: '>=12' } 467 | hasBin: true 468 | 469 | escalade@3.1.2: 470 | resolution: { integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== } 471 | engines: { node: '>=6' } 472 | 473 | escape-string-regexp@1.0.5: 474 | resolution: { integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== } 475 | engines: { node: '>=0.8.0' } 476 | 477 | estree-walker@2.0.2: 478 | resolution: { integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== } 479 | 480 | fsevents@2.3.3: 481 | resolution: { integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== } 482 | engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } 483 | os: [darwin] 484 | 485 | gensync@1.0.0-beta.2: 486 | resolution: { integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== } 487 | engines: { node: '>=6.9.0' } 488 | 489 | globals@11.12.0: 490 | resolution: { integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== } 491 | engines: { node: '>=4' } 492 | 493 | has-flag@3.0.0: 494 | resolution: { integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== } 495 | engines: { node: '>=4' } 496 | 497 | isomorphic-rslog@0.0.6: 498 | resolution: { integrity: sha512-HM0q6XqQ93psDlqvuViNs/Ea3hAyGDkIdVAHlrEocjjAwGrs1fZ+EdQjS9eUPacnYB7Y8SoDdSY3H8p3ce205A== } 499 | engines: { node: '>=14.17.6' } 500 | 501 | js-tokens@4.0.0: 502 | resolution: { integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== } 503 | 504 | jsesc@2.5.2: 505 | resolution: { integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== } 506 | engines: { node: '>=4' } 507 | hasBin: true 508 | 509 | json5@2.2.3: 510 | resolution: { integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== } 511 | engines: { node: '>=6' } 512 | hasBin: true 513 | 514 | loose-envify@1.4.0: 515 | resolution: { integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== } 516 | hasBin: true 517 | 518 | lru-cache@5.1.1: 519 | resolution: { integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== } 520 | 521 | magic-string@0.30.11: 522 | resolution: { integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A== } 523 | 524 | ms@2.1.2: 525 | resolution: { integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== } 526 | 527 | nanoid@3.3.7: 528 | resolution: { integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== } 529 | engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } 530 | hasBin: true 531 | 532 | node-releases@2.0.18: 533 | resolution: { integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== } 534 | 535 | pathe@1.1.2: 536 | resolution: { integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== } 537 | 538 | picocolors@1.0.1: 539 | resolution: { integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== } 540 | 541 | picomatch@2.3.1: 542 | resolution: { integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== } 543 | engines: { node: '>=8.6' } 544 | 545 | postcss@8.4.40: 546 | resolution: { integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q== } 547 | engines: { node: ^10 || ^12 || >=14 } 548 | 549 | react-dom@18.3.1: 550 | resolution: { integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== } 551 | peerDependencies: 552 | react: ^18.3.1 553 | 554 | react-refresh@0.14.2: 555 | resolution: { integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== } 556 | engines: { node: '>=0.10.0' } 557 | 558 | react@18.3.1: 559 | resolution: { integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== } 560 | engines: { node: '>=0.10.0' } 561 | 562 | rollup@4.19.1: 563 | resolution: { integrity: sha512-K5vziVlg7hTpYfFBI+91zHBEMo6jafYXpkMlqZjg7/zhIG9iHqazBf4xz9AVdjS9BruRn280ROqLI7G3OFRIlw== } 564 | engines: { node: '>=18.0.0', npm: '>=8.0.0' } 565 | hasBin: true 566 | 567 | rxjs@7.8.1: 568 | resolution: { integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== } 569 | 570 | scheduler@0.23.2: 571 | resolution: { integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== } 572 | 573 | semver@6.3.1: 574 | resolution: { integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== } 575 | hasBin: true 576 | 577 | source-map-js@1.2.0: 578 | resolution: { integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== } 579 | engines: { node: '>=0.10.0' } 580 | 581 | supports-color@5.5.0: 582 | resolution: { integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== } 583 | engines: { node: '>=4' } 584 | 585 | to-fast-properties@2.0.0: 586 | resolution: { integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== } 587 | engines: { node: '>=4' } 588 | 589 | tslib@2.7.0: 590 | resolution: { integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== } 591 | 592 | typescript@5.4.5: 593 | resolution: { integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== } 594 | engines: { node: '>=14.17' } 595 | hasBin: true 596 | 597 | undici-types@5.26.5: 598 | resolution: { integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== } 599 | 600 | update-browserslist-db@1.1.0: 601 | resolution: { integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== } 602 | hasBin: true 603 | peerDependencies: 604 | browserslist: '>= 4.21.0' 605 | 606 | vite@5.2.10: 607 | resolution: { integrity: sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw== } 608 | engines: { node: ^18.0.0 || >=20.0.0 } 609 | hasBin: true 610 | peerDependencies: 611 | '@types/node': ^18.0.0 || >=20.0.0 612 | less: '*' 613 | lightningcss: ^1.21.0 614 | sass: '*' 615 | stylus: '*' 616 | sugarss: '*' 617 | terser: ^5.4.0 618 | peerDependenciesMeta: 619 | '@types/node': 620 | optional: true 621 | less: 622 | optional: true 623 | lightningcss: 624 | optional: true 625 | sass: 626 | optional: true 627 | stylus: 628 | optional: true 629 | sugarss: 630 | optional: true 631 | terser: 632 | optional: true 633 | 634 | yallist@3.1.1: 635 | resolution: { integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== } 636 | 637 | snapshots: 638 | '@ampproject/remapping@2.3.0': 639 | dependencies: 640 | '@jridgewell/gen-mapping': 0.3.5 641 | '@jridgewell/trace-mapping': 0.3.25 642 | 643 | '@babel/code-frame@7.24.7': 644 | dependencies: 645 | '@babel/highlight': 7.24.7 646 | picocolors: 1.0.1 647 | 648 | '@babel/compat-data@7.25.2': {} 649 | 650 | '@babel/core@7.25.2': 651 | dependencies: 652 | '@ampproject/remapping': 2.3.0 653 | '@babel/code-frame': 7.24.7 654 | '@babel/generator': 7.25.0 655 | '@babel/helper-compilation-targets': 7.25.2 656 | '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) 657 | '@babel/helpers': 7.25.0 658 | '@babel/parser': 7.25.3 659 | '@babel/template': 7.25.0 660 | '@babel/traverse': 7.25.3 661 | '@babel/types': 7.25.2 662 | convert-source-map: 2.0.0 663 | debug: 4.3.6 664 | gensync: 1.0.0-beta.2 665 | json5: 2.2.3 666 | semver: 6.3.1 667 | transitivePeerDependencies: 668 | - supports-color 669 | 670 | '@babel/generator@7.25.0': 671 | dependencies: 672 | '@babel/types': 7.25.2 673 | '@jridgewell/gen-mapping': 0.3.5 674 | '@jridgewell/trace-mapping': 0.3.25 675 | jsesc: 2.5.2 676 | 677 | '@babel/helper-compilation-targets@7.25.2': 678 | dependencies: 679 | '@babel/compat-data': 7.25.2 680 | '@babel/helper-validator-option': 7.24.8 681 | browserslist: 4.23.2 682 | lru-cache: 5.1.1 683 | semver: 6.3.1 684 | 685 | '@babel/helper-module-imports@7.24.7': 686 | dependencies: 687 | '@babel/traverse': 7.25.3 688 | '@babel/types': 7.25.2 689 | transitivePeerDependencies: 690 | - supports-color 691 | 692 | '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': 693 | dependencies: 694 | '@babel/core': 7.25.2 695 | '@babel/helper-module-imports': 7.24.7 696 | '@babel/helper-simple-access': 7.24.7 697 | '@babel/helper-validator-identifier': 7.24.7 698 | '@babel/traverse': 7.25.3 699 | transitivePeerDependencies: 700 | - supports-color 701 | 702 | '@babel/helper-plugin-utils@7.24.8': {} 703 | 704 | '@babel/helper-simple-access@7.24.7': 705 | dependencies: 706 | '@babel/traverse': 7.25.3 707 | '@babel/types': 7.25.2 708 | transitivePeerDependencies: 709 | - supports-color 710 | 711 | '@babel/helper-string-parser@7.24.8': {} 712 | 713 | '@babel/helper-validator-identifier@7.24.7': {} 714 | 715 | '@babel/helper-validator-option@7.24.8': {} 716 | 717 | '@babel/helpers@7.25.0': 718 | dependencies: 719 | '@babel/template': 7.25.0 720 | '@babel/types': 7.25.2 721 | 722 | '@babel/highlight@7.24.7': 723 | dependencies: 724 | '@babel/helper-validator-identifier': 7.24.7 725 | chalk: 2.4.2 726 | js-tokens: 4.0.0 727 | picocolors: 1.0.1 728 | 729 | '@babel/parser@7.25.3': 730 | dependencies: 731 | '@babel/types': 7.25.2 732 | 733 | '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': 734 | dependencies: 735 | '@babel/core': 7.25.2 736 | '@babel/helper-plugin-utils': 7.24.8 737 | 738 | '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': 739 | dependencies: 740 | '@babel/core': 7.25.2 741 | '@babel/helper-plugin-utils': 7.24.8 742 | 743 | '@babel/template@7.25.0': 744 | dependencies: 745 | '@babel/code-frame': 7.24.7 746 | '@babel/parser': 7.25.3 747 | '@babel/types': 7.25.2 748 | 749 | '@babel/traverse@7.25.3': 750 | dependencies: 751 | '@babel/code-frame': 7.24.7 752 | '@babel/generator': 7.25.0 753 | '@babel/parser': 7.25.3 754 | '@babel/template': 7.25.0 755 | '@babel/types': 7.25.2 756 | debug: 4.3.6 757 | globals: 11.12.0 758 | transitivePeerDependencies: 759 | - supports-color 760 | 761 | '@babel/types@7.25.2': 762 | dependencies: 763 | '@babel/helper-string-parser': 7.24.8 764 | '@babel/helper-validator-identifier': 7.24.7 765 | to-fast-properties: 2.0.0 766 | 767 | '@esbuild/aix-ppc64@0.20.2': 768 | optional: true 769 | 770 | '@esbuild/android-arm64@0.20.2': 771 | optional: true 772 | 773 | '@esbuild/android-arm@0.20.2': 774 | optional: true 775 | 776 | '@esbuild/android-x64@0.20.2': 777 | optional: true 778 | 779 | '@esbuild/darwin-arm64@0.20.2': 780 | optional: true 781 | 782 | '@esbuild/darwin-x64@0.20.2': 783 | optional: true 784 | 785 | '@esbuild/freebsd-arm64@0.20.2': 786 | optional: true 787 | 788 | '@esbuild/freebsd-x64@0.20.2': 789 | optional: true 790 | 791 | '@esbuild/linux-arm64@0.20.2': 792 | optional: true 793 | 794 | '@esbuild/linux-arm@0.20.2': 795 | optional: true 796 | 797 | '@esbuild/linux-ia32@0.20.2': 798 | optional: true 799 | 800 | '@esbuild/linux-loong64@0.20.2': 801 | optional: true 802 | 803 | '@esbuild/linux-mips64el@0.20.2': 804 | optional: true 805 | 806 | '@esbuild/linux-ppc64@0.20.2': 807 | optional: true 808 | 809 | '@esbuild/linux-riscv64@0.20.2': 810 | optional: true 811 | 812 | '@esbuild/linux-s390x@0.20.2': 813 | optional: true 814 | 815 | '@esbuild/linux-x64@0.20.2': 816 | optional: true 817 | 818 | '@esbuild/netbsd-x64@0.20.2': 819 | optional: true 820 | 821 | '@esbuild/openbsd-x64@0.20.2': 822 | optional: true 823 | 824 | '@esbuild/sunos-x64@0.20.2': 825 | optional: true 826 | 827 | '@esbuild/win32-arm64@0.20.2': 828 | optional: true 829 | 830 | '@esbuild/win32-ia32@0.20.2': 831 | optional: true 832 | 833 | '@esbuild/win32-x64@0.20.2': 834 | optional: true 835 | 836 | '@jridgewell/gen-mapping@0.3.5': 837 | dependencies: 838 | '@jridgewell/set-array': 1.2.1 839 | '@jridgewell/sourcemap-codec': 1.5.0 840 | '@jridgewell/trace-mapping': 0.3.25 841 | 842 | '@jridgewell/resolve-uri@3.1.2': {} 843 | 844 | '@jridgewell/set-array@1.2.1': {} 845 | 846 | '@jridgewell/sourcemap-codec@1.5.0': {} 847 | 848 | '@jridgewell/trace-mapping@0.3.25': 849 | dependencies: 850 | '@jridgewell/resolve-uri': 3.1.2 851 | '@jridgewell/sourcemap-codec': 1.5.0 852 | 853 | '@module-federation/error-codes@0.8.0': {} 854 | 855 | '@module-federation/runtime@0.8.0': 856 | dependencies: 857 | '@module-federation/error-codes': 0.8.0 858 | '@module-federation/sdk': 0.8.0 859 | 860 | '@module-federation/sdk@0.8.0': 861 | dependencies: 862 | isomorphic-rslog: 0.0.6 863 | 864 | '@module-federation/vite@1.1.9(rollup@4.19.1)': 865 | dependencies: 866 | '@module-federation/runtime': 0.8.0 867 | '@rollup/pluginutils': 5.1.0(rollup@4.19.1) 868 | defu: 6.1.4 869 | estree-walker: 2.0.2 870 | magic-string: 0.30.11 871 | pathe: 1.1.2 872 | transitivePeerDependencies: 873 | - rollup 874 | 875 | '@rollup/pluginutils@5.1.0(rollup@4.19.1)': 876 | dependencies: 877 | '@types/estree': 1.0.5 878 | estree-walker: 2.0.2 879 | picomatch: 2.3.1 880 | optionalDependencies: 881 | rollup: 4.19.1 882 | 883 | '@rollup/rollup-android-arm-eabi@4.19.1': 884 | optional: true 885 | 886 | '@rollup/rollup-android-arm64@4.19.1': 887 | optional: true 888 | 889 | '@rollup/rollup-darwin-arm64@4.19.1': 890 | optional: true 891 | 892 | '@rollup/rollup-darwin-x64@4.19.1': 893 | optional: true 894 | 895 | '@rollup/rollup-linux-arm-gnueabihf@4.19.1': 896 | optional: true 897 | 898 | '@rollup/rollup-linux-arm-musleabihf@4.19.1': 899 | optional: true 900 | 901 | '@rollup/rollup-linux-arm64-gnu@4.19.1': 902 | optional: true 903 | 904 | '@rollup/rollup-linux-arm64-musl@4.19.1': 905 | optional: true 906 | 907 | '@rollup/rollup-linux-powerpc64le-gnu@4.19.1': 908 | optional: true 909 | 910 | '@rollup/rollup-linux-riscv64-gnu@4.19.1': 911 | optional: true 912 | 913 | '@rollup/rollup-linux-s390x-gnu@4.19.1': 914 | optional: true 915 | 916 | '@rollup/rollup-linux-x64-gnu@4.19.1': 917 | optional: true 918 | 919 | '@rollup/rollup-linux-x64-musl@4.19.1': 920 | optional: true 921 | 922 | '@rollup/rollup-win32-arm64-msvc@4.19.1': 923 | optional: true 924 | 925 | '@rollup/rollup-win32-ia32-msvc@4.19.1': 926 | optional: true 927 | 928 | '@rollup/rollup-win32-x64-msvc@4.19.1': 929 | optional: true 930 | 931 | '@types/babel__core@7.20.5': 932 | dependencies: 933 | '@babel/parser': 7.25.3 934 | '@babel/types': 7.25.2 935 | '@types/babel__generator': 7.6.8 936 | '@types/babel__template': 7.4.4 937 | '@types/babel__traverse': 7.20.6 938 | 939 | '@types/babel__generator@7.6.8': 940 | dependencies: 941 | '@babel/types': 7.25.2 942 | 943 | '@types/babel__template@7.4.4': 944 | dependencies: 945 | '@babel/parser': 7.25.3 946 | '@babel/types': 7.25.2 947 | 948 | '@types/babel__traverse@7.20.6': 949 | dependencies: 950 | '@babel/types': 7.25.2 951 | 952 | '@types/estree@1.0.5': {} 953 | 954 | '@types/node@18.19.42': 955 | dependencies: 956 | undici-types: 5.26.5 957 | optional: true 958 | 959 | '@types/prop-types@15.7.12': {} 960 | 961 | '@types/react-dom@18.2.25': 962 | dependencies: 963 | '@types/react': 18.2.79 964 | 965 | '@types/react@18.2.79': 966 | dependencies: 967 | '@types/prop-types': 15.7.12 968 | csstype: 3.1.3 969 | 970 | '@vitejs/plugin-react@4.2.1(vite@5.2.10(@types/node@18.19.42))': 971 | dependencies: 972 | '@babel/core': 7.25.2 973 | '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) 974 | '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) 975 | '@types/babel__core': 7.20.5 976 | react-refresh: 0.14.2 977 | vite: 5.2.10(@types/node@18.19.42) 978 | transitivePeerDependencies: 979 | - supports-color 980 | 981 | ansi-styles@3.2.1: 982 | dependencies: 983 | color-convert: 1.9.3 984 | 985 | browserslist@4.23.2: 986 | dependencies: 987 | caniuse-lite: 1.0.30001646 988 | electron-to-chromium: 1.5.4 989 | node-releases: 2.0.18 990 | update-browserslist-db: 1.1.0(browserslist@4.23.2) 991 | 992 | caniuse-lite@1.0.30001646: {} 993 | 994 | chalk@2.4.2: 995 | dependencies: 996 | ansi-styles: 3.2.1 997 | escape-string-regexp: 1.0.5 998 | supports-color: 5.5.0 999 | 1000 | color-convert@1.9.3: 1001 | dependencies: 1002 | color-name: 1.1.3 1003 | 1004 | color-name@1.1.3: {} 1005 | 1006 | convert-source-map@2.0.0: {} 1007 | 1008 | csstype@3.1.3: {} 1009 | 1010 | debug@4.3.6: 1011 | dependencies: 1012 | ms: 2.1.2 1013 | 1014 | defu@6.1.4: {} 1015 | 1016 | electron-to-chromium@1.5.4: {} 1017 | 1018 | esbuild@0.20.2: 1019 | optionalDependencies: 1020 | '@esbuild/aix-ppc64': 0.20.2 1021 | '@esbuild/android-arm': 0.20.2 1022 | '@esbuild/android-arm64': 0.20.2 1023 | '@esbuild/android-x64': 0.20.2 1024 | '@esbuild/darwin-arm64': 0.20.2 1025 | '@esbuild/darwin-x64': 0.20.2 1026 | '@esbuild/freebsd-arm64': 0.20.2 1027 | '@esbuild/freebsd-x64': 0.20.2 1028 | '@esbuild/linux-arm': 0.20.2 1029 | '@esbuild/linux-arm64': 0.20.2 1030 | '@esbuild/linux-ia32': 0.20.2 1031 | '@esbuild/linux-loong64': 0.20.2 1032 | '@esbuild/linux-mips64el': 0.20.2 1033 | '@esbuild/linux-ppc64': 0.20.2 1034 | '@esbuild/linux-riscv64': 0.20.2 1035 | '@esbuild/linux-s390x': 0.20.2 1036 | '@esbuild/linux-x64': 0.20.2 1037 | '@esbuild/netbsd-x64': 0.20.2 1038 | '@esbuild/openbsd-x64': 0.20.2 1039 | '@esbuild/sunos-x64': 0.20.2 1040 | '@esbuild/win32-arm64': 0.20.2 1041 | '@esbuild/win32-ia32': 0.20.2 1042 | '@esbuild/win32-x64': 0.20.2 1043 | 1044 | escalade@3.1.2: {} 1045 | 1046 | escape-string-regexp@1.0.5: {} 1047 | 1048 | estree-walker@2.0.2: {} 1049 | 1050 | fsevents@2.3.3: 1051 | optional: true 1052 | 1053 | gensync@1.0.0-beta.2: {} 1054 | 1055 | globals@11.12.0: {} 1056 | 1057 | has-flag@3.0.0: {} 1058 | 1059 | isomorphic-rslog@0.0.6: {} 1060 | 1061 | js-tokens@4.0.0: {} 1062 | 1063 | jsesc@2.5.2: {} 1064 | 1065 | json5@2.2.3: {} 1066 | 1067 | loose-envify@1.4.0: 1068 | dependencies: 1069 | js-tokens: 4.0.0 1070 | 1071 | lru-cache@5.1.1: 1072 | dependencies: 1073 | yallist: 3.1.1 1074 | 1075 | magic-string@0.30.11: 1076 | dependencies: 1077 | '@jridgewell/sourcemap-codec': 1.5.0 1078 | 1079 | ms@2.1.2: {} 1080 | 1081 | nanoid@3.3.7: {} 1082 | 1083 | node-releases@2.0.18: {} 1084 | 1085 | pathe@1.1.2: {} 1086 | 1087 | picocolors@1.0.1: {} 1088 | 1089 | picomatch@2.3.1: {} 1090 | 1091 | postcss@8.4.40: 1092 | dependencies: 1093 | nanoid: 3.3.7 1094 | picocolors: 1.0.1 1095 | source-map-js: 1.2.0 1096 | 1097 | react-dom@18.3.1(react@18.3.1): 1098 | dependencies: 1099 | loose-envify: 1.4.0 1100 | react: 18.3.1 1101 | scheduler: 0.23.2 1102 | 1103 | react-refresh@0.14.2: {} 1104 | 1105 | react@18.3.1: 1106 | dependencies: 1107 | loose-envify: 1.4.0 1108 | 1109 | rollup@4.19.1: 1110 | dependencies: 1111 | '@types/estree': 1.0.5 1112 | optionalDependencies: 1113 | '@rollup/rollup-android-arm-eabi': 4.19.1 1114 | '@rollup/rollup-android-arm64': 4.19.1 1115 | '@rollup/rollup-darwin-arm64': 4.19.1 1116 | '@rollup/rollup-darwin-x64': 4.19.1 1117 | '@rollup/rollup-linux-arm-gnueabihf': 4.19.1 1118 | '@rollup/rollup-linux-arm-musleabihf': 4.19.1 1119 | '@rollup/rollup-linux-arm64-gnu': 4.19.1 1120 | '@rollup/rollup-linux-arm64-musl': 4.19.1 1121 | '@rollup/rollup-linux-powerpc64le-gnu': 4.19.1 1122 | '@rollup/rollup-linux-riscv64-gnu': 4.19.1 1123 | '@rollup/rollup-linux-s390x-gnu': 4.19.1 1124 | '@rollup/rollup-linux-x64-gnu': 4.19.1 1125 | '@rollup/rollup-linux-x64-musl': 4.19.1 1126 | '@rollup/rollup-win32-arm64-msvc': 4.19.1 1127 | '@rollup/rollup-win32-ia32-msvc': 4.19.1 1128 | '@rollup/rollup-win32-x64-msvc': 4.19.1 1129 | fsevents: 2.3.3 1130 | 1131 | rxjs@7.8.1: 1132 | dependencies: 1133 | tslib: 2.7.0 1134 | 1135 | scheduler@0.23.2: 1136 | dependencies: 1137 | loose-envify: 1.4.0 1138 | 1139 | semver@6.3.1: {} 1140 | 1141 | source-map-js@1.2.0: {} 1142 | 1143 | supports-color@5.5.0: 1144 | dependencies: 1145 | has-flag: 3.0.0 1146 | 1147 | to-fast-properties@2.0.0: {} 1148 | 1149 | tslib@2.7.0: {} 1150 | 1151 | typescript@5.4.5: {} 1152 | 1153 | undici-types@5.26.5: 1154 | optional: true 1155 | 1156 | update-browserslist-db@1.1.0(browserslist@4.23.2): 1157 | dependencies: 1158 | browserslist: 4.23.2 1159 | escalade: 3.1.2 1160 | picocolors: 1.0.1 1161 | 1162 | vite@5.2.10(@types/node@18.19.42): 1163 | dependencies: 1164 | esbuild: 0.20.2 1165 | postcss: 8.4.40 1166 | rollup: 4.19.1 1167 | optionalDependencies: 1168 | '@types/node': 18.19.42 1169 | fsevents: 2.3.3 1170 | 1171 | yallist@3.1.1: {} 1172 | -------------------------------------------------------------------------------- /host/public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /host/src/App.css: -------------------------------------------------------------------------------- 1 | .host .card { 2 | background: #3178c6; 3 | box-shadow: 0 0 20px rgba(0, 0, 0, 0.4); 4 | border-radius: 5px; 5 | margin: 20px 20px 20px 20px; 6 | width: 250px; 7 | padding: 20px; 8 | text-align: center; 9 | color: white; 10 | float: left; 11 | } 12 | 13 | .host .title { 14 | margin-top: 10px; 15 | font-size: 25px; 16 | } 17 | 18 | .host svg { 19 | width: 100px; 20 | height: 100px; 21 | } 22 | 23 | .host path { 24 | fill: #f6b352; 25 | } -------------------------------------------------------------------------------- /host/src/App.tsx: -------------------------------------------------------------------------------- 1 | import { lazy, Suspense, useEffect } from 'react'; 2 | import { of, tap } from 'rxjs'; 3 | import './App.css'; 4 | import Counter from './components/Counter'; 5 | 6 | const Remote = lazy( 7 | // @ts-ignore 8 | async () => import('remote/remote-app'), 9 | ); 10 | 11 | export default () => { 12 | useEffect(() => { 13 | of('emit') 14 | .pipe(tap(() => console.log("I'm RxJs from host"))) 15 | .subscribe(); 16 | }, []); 17 | 18 | return ( 19 | <> 20 |
21 |
22 |
23 | 32 | 36 | 37 |
38 |
I'm the host app
39 | 40 |
41 |
42 | 43 | 44 | 45 | 46 | 47 | ); 48 | }; 49 | -------------------------------------------------------------------------------- /host/src/components/Counter.tsx: -------------------------------------------------------------------------------- 1 | import { useState } from 'react'; 2 | 3 | export default () => { 4 | const [count, setCount] = useState(0); 5 | 6 | return ( 7 | 21 | ); 22 | }; 23 | -------------------------------------------------------------------------------- /host/src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /host/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /host/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "lib": ["DOM", "DOM.Iterable", "ESNext"], 6 | "allowJs": false, 7 | "skipLibCheck": true, 8 | "esModuleInterop": false, 9 | "allowSyntheticDefaultImports": true, 10 | "strict": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "module": "ESNext", 13 | "moduleResolution": "Node", 14 | "resolveJsonModule": true, 15 | "isolatedModules": true, 16 | "noEmit": true, 17 | "jsx": "react-jsx", 18 | "baseUrl": ".", 19 | "paths": { 20 | "shared": ["../shared/shared.ts"] 21 | } 22 | }, 23 | "include": ["src"], 24 | "references": [ 25 | { 26 | "path": "./tsconfig.node.json" 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /host/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "ESNext", 5 | "moduleResolution": "Node", 6 | "allowSyntheticDefaultImports": true 7 | }, 8 | "include": [ 9 | "vite.config.ts", 10 | "module-federation/vite-importmap-shim.ts" 11 | ] 12 | } -------------------------------------------------------------------------------- /host/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { federation } from '@module-federation/vite'; 2 | import react from '@vitejs/plugin-react'; 3 | import { defineConfig } from 'vite'; 4 | import { dependencies } from './package.json'; 5 | 6 | export default defineConfig(() => ({ 7 | server: { fs: { allow: ['.', '../shared'] } }, 8 | build: { 9 | target: 'chrome89', 10 | }, 11 | plugins: [ 12 | federation({ 13 | name: 'host', 14 | remotes: { 15 | remote: { 16 | type: 'module', 17 | name: 'remote', 18 | entry: 'http://localhost:4174/remoteEntry.js', 19 | entryGlobalName: 'remote', 20 | shareScope: 'default', 21 | }, 22 | }, 23 | exposes: {}, 24 | filename: 'remoteEntry.js', 25 | shared: { 26 | react: { 27 | requiredVersion: dependencies.react, 28 | singleton: true, 29 | }, 30 | }, 31 | }), 32 | react(), 33 | ], 34 | })); 35 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-microfrontend-demo", 3 | "version": "1.0.0", 4 | "description": "Vite + Module Federation is now possible", 5 | "main": "index.js", 6 | "scripts": { 7 | "install:deps": "pnpm install && pnpm -r install", 8 | "postinstall:deps": "pnpm run build", 9 | "dev": "pnpm -r dev", 10 | "build": "pnpm -r build", 11 | "preview": "pnpm -r preview", 12 | "prepare": "husky install" 13 | }, 14 | "author": { 15 | "name": "Giorgio Boa", 16 | "email": "giorgiob.boa@gmail.com", 17 | "url": "https://github.com/gioboa" 18 | }, 19 | "license": "ISC", 20 | "devDependencies": { 21 | "husky": "^8.0.0", 22 | "prettier": "^2.8.2" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | .: 9 | devDependencies: 10 | husky: 11 | specifier: ^8.0.0 12 | version: 8.0.3 13 | prettier: 14 | specifier: ^2.8.2 15 | version: 2.8.8 16 | 17 | packages: 18 | husky@8.0.3: 19 | resolution: { integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== } 20 | engines: { node: '>=14' } 21 | hasBin: true 22 | 23 | prettier@2.8.8: 24 | resolution: { integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== } 25 | engines: { node: '>=10.13.0' } 26 | hasBin: true 27 | 28 | snapshots: 29 | husky@8.0.3: {} 30 | 31 | prettier@2.8.8: {} 32 | -------------------------------------------------------------------------------- /remote/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /remote/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | React Remote 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /remote/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vite-react-microfrontends_remote", 3 | "version": "0.0.0", 4 | "type": "module", 5 | "scripts": { 6 | "dev": "vite --port 4174", 7 | "build": "tsc && vite build", 8 | "preview": "npm run build && vite preview --port 4174" 9 | }, 10 | "dependencies": { 11 | "react": "^18.3.1", 12 | "react-dom": "^18.3.1" 13 | }, 14 | "devDependencies": { 15 | "@module-federation/vite": "1.1.9", 16 | "@types/react": "18.2.79", 17 | "@types/react-dom": "18.2.25", 18 | "@vitejs/plugin-react": "4.2.1", 19 | "typescript": "5.4.5", 20 | "vite": "5.2.10" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /remote/pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | .: 9 | dependencies: 10 | react: 11 | specifier: ^18.3.1 12 | version: 18.3.1 13 | react-dom: 14 | specifier: ^18.3.1 15 | version: 18.3.1(react@18.3.1) 16 | devDependencies: 17 | '@module-federation/vite': 18 | specifier: 1.1.9 19 | version: 1.1.9(rollup@4.19.1) 20 | '@types/react': 21 | specifier: 18.2.79 22 | version: 18.2.79 23 | '@types/react-dom': 24 | specifier: 18.2.25 25 | version: 18.2.25 26 | '@vitejs/plugin-react': 27 | specifier: 4.2.1 28 | version: 4.2.1(vite@5.2.10(@types/node@18.19.42)) 29 | typescript: 30 | specifier: 5.4.5 31 | version: 5.4.5 32 | vite: 33 | specifier: 5.2.10 34 | version: 5.2.10(@types/node@18.19.42) 35 | 36 | packages: 37 | '@ampproject/remapping@2.3.0': 38 | resolution: { integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== } 39 | engines: { node: '>=6.0.0' } 40 | 41 | '@babel/code-frame@7.24.7': 42 | resolution: { integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== } 43 | engines: { node: '>=6.9.0' } 44 | 45 | '@babel/compat-data@7.25.2': 46 | resolution: { integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ== } 47 | engines: { node: '>=6.9.0' } 48 | 49 | '@babel/core@7.25.2': 50 | resolution: { integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== } 51 | engines: { node: '>=6.9.0' } 52 | 53 | '@babel/generator@7.25.0': 54 | resolution: { integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw== } 55 | engines: { node: '>=6.9.0' } 56 | 57 | '@babel/helper-compilation-targets@7.25.2': 58 | resolution: { integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== } 59 | engines: { node: '>=6.9.0' } 60 | 61 | '@babel/helper-module-imports@7.24.7': 62 | resolution: { integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== } 63 | engines: { node: '>=6.9.0' } 64 | 65 | '@babel/helper-module-transforms@7.25.2': 66 | resolution: { integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== } 67 | engines: { node: '>=6.9.0' } 68 | peerDependencies: 69 | '@babel/core': ^7.0.0 70 | 71 | '@babel/helper-plugin-utils@7.24.8': 72 | resolution: { integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== } 73 | engines: { node: '>=6.9.0' } 74 | 75 | '@babel/helper-simple-access@7.24.7': 76 | resolution: { integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== } 77 | engines: { node: '>=6.9.0' } 78 | 79 | '@babel/helper-string-parser@7.24.8': 80 | resolution: { integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== } 81 | engines: { node: '>=6.9.0' } 82 | 83 | '@babel/helper-validator-identifier@7.24.7': 84 | resolution: { integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== } 85 | engines: { node: '>=6.9.0' } 86 | 87 | '@babel/helper-validator-option@7.24.8': 88 | resolution: { integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== } 89 | engines: { node: '>=6.9.0' } 90 | 91 | '@babel/helpers@7.25.0': 92 | resolution: { integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw== } 93 | engines: { node: '>=6.9.0' } 94 | 95 | '@babel/highlight@7.24.7': 96 | resolution: { integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== } 97 | engines: { node: '>=6.9.0' } 98 | 99 | '@babel/parser@7.25.3': 100 | resolution: { integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw== } 101 | engines: { node: '>=6.0.0' } 102 | hasBin: true 103 | 104 | '@babel/plugin-transform-react-jsx-self@7.24.7': 105 | resolution: { integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw== } 106 | engines: { node: '>=6.9.0' } 107 | peerDependencies: 108 | '@babel/core': ^7.0.0-0 109 | 110 | '@babel/plugin-transform-react-jsx-source@7.24.7': 111 | resolution: { integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ== } 112 | engines: { node: '>=6.9.0' } 113 | peerDependencies: 114 | '@babel/core': ^7.0.0-0 115 | 116 | '@babel/template@7.25.0': 117 | resolution: { integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== } 118 | engines: { node: '>=6.9.0' } 119 | 120 | '@babel/traverse@7.25.3': 121 | resolution: { integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ== } 122 | engines: { node: '>=6.9.0' } 123 | 124 | '@babel/types@7.25.2': 125 | resolution: { integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q== } 126 | engines: { node: '>=6.9.0' } 127 | 128 | '@esbuild/aix-ppc64@0.20.2': 129 | resolution: { integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== } 130 | engines: { node: '>=12' } 131 | cpu: [ppc64] 132 | os: [aix] 133 | 134 | '@esbuild/android-arm64@0.20.2': 135 | resolution: { integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== } 136 | engines: { node: '>=12' } 137 | cpu: [arm64] 138 | os: [android] 139 | 140 | '@esbuild/android-arm@0.20.2': 141 | resolution: { integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== } 142 | engines: { node: '>=12' } 143 | cpu: [arm] 144 | os: [android] 145 | 146 | '@esbuild/android-x64@0.20.2': 147 | resolution: { integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== } 148 | engines: { node: '>=12' } 149 | cpu: [x64] 150 | os: [android] 151 | 152 | '@esbuild/darwin-arm64@0.20.2': 153 | resolution: { integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== } 154 | engines: { node: '>=12' } 155 | cpu: [arm64] 156 | os: [darwin] 157 | 158 | '@esbuild/darwin-x64@0.20.2': 159 | resolution: { integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== } 160 | engines: { node: '>=12' } 161 | cpu: [x64] 162 | os: [darwin] 163 | 164 | '@esbuild/freebsd-arm64@0.20.2': 165 | resolution: { integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== } 166 | engines: { node: '>=12' } 167 | cpu: [arm64] 168 | os: [freebsd] 169 | 170 | '@esbuild/freebsd-x64@0.20.2': 171 | resolution: { integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== } 172 | engines: { node: '>=12' } 173 | cpu: [x64] 174 | os: [freebsd] 175 | 176 | '@esbuild/linux-arm64@0.20.2': 177 | resolution: { integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== } 178 | engines: { node: '>=12' } 179 | cpu: [arm64] 180 | os: [linux] 181 | 182 | '@esbuild/linux-arm@0.20.2': 183 | resolution: { integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== } 184 | engines: { node: '>=12' } 185 | cpu: [arm] 186 | os: [linux] 187 | 188 | '@esbuild/linux-ia32@0.20.2': 189 | resolution: { integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== } 190 | engines: { node: '>=12' } 191 | cpu: [ia32] 192 | os: [linux] 193 | 194 | '@esbuild/linux-loong64@0.20.2': 195 | resolution: { integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== } 196 | engines: { node: '>=12' } 197 | cpu: [loong64] 198 | os: [linux] 199 | 200 | '@esbuild/linux-mips64el@0.20.2': 201 | resolution: { integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== } 202 | engines: { node: '>=12' } 203 | cpu: [mips64el] 204 | os: [linux] 205 | 206 | '@esbuild/linux-ppc64@0.20.2': 207 | resolution: { integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== } 208 | engines: { node: '>=12' } 209 | cpu: [ppc64] 210 | os: [linux] 211 | 212 | '@esbuild/linux-riscv64@0.20.2': 213 | resolution: { integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== } 214 | engines: { node: '>=12' } 215 | cpu: [riscv64] 216 | os: [linux] 217 | 218 | '@esbuild/linux-s390x@0.20.2': 219 | resolution: { integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== } 220 | engines: { node: '>=12' } 221 | cpu: [s390x] 222 | os: [linux] 223 | 224 | '@esbuild/linux-x64@0.20.2': 225 | resolution: { integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== } 226 | engines: { node: '>=12' } 227 | cpu: [x64] 228 | os: [linux] 229 | 230 | '@esbuild/netbsd-x64@0.20.2': 231 | resolution: { integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== } 232 | engines: { node: '>=12' } 233 | cpu: [x64] 234 | os: [netbsd] 235 | 236 | '@esbuild/openbsd-x64@0.20.2': 237 | resolution: { integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== } 238 | engines: { node: '>=12' } 239 | cpu: [x64] 240 | os: [openbsd] 241 | 242 | '@esbuild/sunos-x64@0.20.2': 243 | resolution: { integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== } 244 | engines: { node: '>=12' } 245 | cpu: [x64] 246 | os: [sunos] 247 | 248 | '@esbuild/win32-arm64@0.20.2': 249 | resolution: { integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== } 250 | engines: { node: '>=12' } 251 | cpu: [arm64] 252 | os: [win32] 253 | 254 | '@esbuild/win32-ia32@0.20.2': 255 | resolution: { integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== } 256 | engines: { node: '>=12' } 257 | cpu: [ia32] 258 | os: [win32] 259 | 260 | '@esbuild/win32-x64@0.20.2': 261 | resolution: { integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== } 262 | engines: { node: '>=12' } 263 | cpu: [x64] 264 | os: [win32] 265 | 266 | '@jridgewell/gen-mapping@0.3.5': 267 | resolution: { integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== } 268 | engines: { node: '>=6.0.0' } 269 | 270 | '@jridgewell/resolve-uri@3.1.2': 271 | resolution: { integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== } 272 | engines: { node: '>=6.0.0' } 273 | 274 | '@jridgewell/set-array@1.2.1': 275 | resolution: { integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== } 276 | engines: { node: '>=6.0.0' } 277 | 278 | '@jridgewell/sourcemap-codec@1.5.0': 279 | resolution: { integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== } 280 | 281 | '@jridgewell/trace-mapping@0.3.25': 282 | resolution: { integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== } 283 | 284 | '@module-federation/error-codes@0.8.0': 285 | resolution: { integrity: sha512-xU0eUA0xTUx93Li/eYCZ+kuGP9qt+8fEaOu+i6U9jJP1RYONvPifibfLNo4SQszQTzqfGViyrx1O3uiA7XUYQQ== } 286 | 287 | '@module-federation/runtime@0.8.0': 288 | resolution: { integrity: sha512-UfDsJYAFOyJoErpmjf1sy8d2WXHGitFsSQrIiDzNpDHv4SzHgjuhWQeAuJKlQq2zdE/F4IPhkHgTatQigRKZCA== } 289 | 290 | '@module-federation/sdk@0.8.0': 291 | resolution: { integrity: sha512-V2cNGO//sWCyHTaQ0iTcoslolqVgdBIBOkZVLyk9AkZ4B3CO49pe/TmIIaVs9jVg3GO+ZmmazBFKRkqdn2PdRg== } 292 | 293 | '@module-federation/vite@1.1.9': 294 | resolution: { integrity: sha512-gUo/uV8ZlHTLJjgKy02lXb7zo9auqOIt5Ozw1ewP9vkMrNQVEm4ZxmZ7P+k8Rb9O2PjfdHOLRuHfNmXHmywzUw== } 295 | 296 | '@rollup/pluginutils@5.1.0': 297 | resolution: { integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== } 298 | engines: { node: '>=14.0.0' } 299 | peerDependencies: 300 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 301 | peerDependenciesMeta: 302 | rollup: 303 | optional: true 304 | 305 | '@rollup/rollup-android-arm-eabi@4.19.1': 306 | resolution: { integrity: sha512-XzqSg714++M+FXhHfXpS1tDnNZNpgxxuGZWlRG/jSj+VEPmZ0yg6jV4E0AL3uyBKxO8mO3xtOsP5mQ+XLfrlww== } 307 | cpu: [arm] 308 | os: [android] 309 | 310 | '@rollup/rollup-android-arm64@4.19.1': 311 | resolution: { integrity: sha512-thFUbkHteM20BGShD6P08aungq4irbIZKUNbG70LN8RkO7YztcGPiKTTGZS7Kw+x5h8hOXs0i4OaHwFxlpQN6A== } 312 | cpu: [arm64] 313 | os: [android] 314 | 315 | '@rollup/rollup-darwin-arm64@4.19.1': 316 | resolution: { integrity: sha512-8o6eqeFZzVLia2hKPUZk4jdE3zW7LCcZr+MD18tXkgBBid3lssGVAYuox8x6YHoEPDdDa9ixTaStcmx88lio5Q== } 317 | cpu: [arm64] 318 | os: [darwin] 319 | 320 | '@rollup/rollup-darwin-x64@4.19.1': 321 | resolution: { integrity: sha512-4T42heKsnbjkn7ovYiAdDVRRWZLU9Kmhdt6HafZxFcUdpjlBlxj4wDrt1yFWLk7G4+E+8p2C9tcmSu0KA6auGA== } 322 | cpu: [x64] 323 | os: [darwin] 324 | 325 | '@rollup/rollup-linux-arm-gnueabihf@4.19.1': 326 | resolution: { integrity: sha512-MXg1xp+e5GhZ3Vit1gGEyoC+dyQUBy2JgVQ+3hUrD9wZMkUw/ywgkpK7oZgnB6kPpGrxJ41clkPPnsknuD6M2Q== } 327 | cpu: [arm] 328 | os: [linux] 329 | 330 | '@rollup/rollup-linux-arm-musleabihf@4.19.1': 331 | resolution: { integrity: sha512-DZNLwIY4ftPSRVkJEaxYkq7u2zel7aah57HESuNkUnz+3bZHxwkCUkrfS2IWC1sxK6F2QNIR0Qr/YXw7nkF3Pw== } 332 | cpu: [arm] 333 | os: [linux] 334 | 335 | '@rollup/rollup-linux-arm64-gnu@4.19.1': 336 | resolution: { integrity: sha512-C7evongnjyxdngSDRRSQv5GvyfISizgtk9RM+z2biV5kY6S/NF/wta7K+DanmktC5DkuaJQgoKGf7KUDmA7RUw== } 337 | cpu: [arm64] 338 | os: [linux] 339 | 340 | '@rollup/rollup-linux-arm64-musl@4.19.1': 341 | resolution: { integrity: sha512-89tFWqxfxLLHkAthAcrTs9etAoBFRduNfWdl2xUs/yLV+7XDrJ5yuXMHptNqf1Zw0UCA3cAutkAiAokYCkaPtw== } 342 | cpu: [arm64] 343 | os: [linux] 344 | 345 | '@rollup/rollup-linux-powerpc64le-gnu@4.19.1': 346 | resolution: { integrity: sha512-PromGeV50sq+YfaisG8W3fd+Cl6mnOOiNv2qKKqKCpiiEke2KiKVyDqG/Mb9GWKbYMHj5a01fq/qlUR28PFhCQ== } 347 | cpu: [ppc64] 348 | os: [linux] 349 | 350 | '@rollup/rollup-linux-riscv64-gnu@4.19.1': 351 | resolution: { integrity: sha512-/1BmHYh+iz0cNCP0oHCuF8CSiNj0JOGf0jRlSo3L/FAyZyG2rGBuKpkZVH9YF+x58r1jgWxvm1aRg3DHrLDt6A== } 352 | cpu: [riscv64] 353 | os: [linux] 354 | 355 | '@rollup/rollup-linux-s390x-gnu@4.19.1': 356 | resolution: { integrity: sha512-0cYP5rGkQWRZKy9/HtsWVStLXzCF3cCBTRI+qRL8Z+wkYlqN7zrSYm6FuY5Kd5ysS5aH0q5lVgb/WbG4jqXN1Q== } 357 | cpu: [s390x] 358 | os: [linux] 359 | 360 | '@rollup/rollup-linux-x64-gnu@4.19.1': 361 | resolution: { integrity: sha512-XUXeI9eM8rMP8aGvii/aOOiMvTs7xlCosq9xCjcqI9+5hBxtjDpD+7Abm1ZhVIFE1J2h2VIg0t2DX/gjespC2Q== } 362 | cpu: [x64] 363 | os: [linux] 364 | 365 | '@rollup/rollup-linux-x64-musl@4.19.1': 366 | resolution: { integrity: sha512-V7cBw/cKXMfEVhpSvVZhC+iGifD6U1zJ4tbibjjN+Xi3blSXaj/rJynAkCFFQfoG6VZrAiP7uGVzL440Q6Me2Q== } 367 | cpu: [x64] 368 | os: [linux] 369 | 370 | '@rollup/rollup-win32-arm64-msvc@4.19.1': 371 | resolution: { integrity: sha512-88brja2vldW/76jWATlBqHEoGjJLRnP0WOEKAUbMcXaAZnemNhlAHSyj4jIwMoP2T750LE9lblvD4e2jXleZsA== } 372 | cpu: [arm64] 373 | os: [win32] 374 | 375 | '@rollup/rollup-win32-ia32-msvc@4.19.1': 376 | resolution: { integrity: sha512-LdxxcqRVSXi6k6JUrTah1rHuaupoeuiv38du8Mt4r4IPer3kwlTo+RuvfE8KzZ/tL6BhaPlzJ3835i6CxrFIRQ== } 377 | cpu: [ia32] 378 | os: [win32] 379 | 380 | '@rollup/rollup-win32-x64-msvc@4.19.1': 381 | resolution: { integrity: sha512-2bIrL28PcK3YCqD9anGxDxamxdiJAxA+l7fWIwM5o8UqNy1t3d1NdAweO2XhA0KTDJ5aH1FsuiT5+7VhtHliXg== } 382 | cpu: [x64] 383 | os: [win32] 384 | 385 | '@types/babel__core@7.20.5': 386 | resolution: { integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== } 387 | 388 | '@types/babel__generator@7.6.8': 389 | resolution: { integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== } 390 | 391 | '@types/babel__template@7.4.4': 392 | resolution: { integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== } 393 | 394 | '@types/babel__traverse@7.20.6': 395 | resolution: { integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== } 396 | 397 | '@types/estree@1.0.5': 398 | resolution: { integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== } 399 | 400 | '@types/node@18.19.42': 401 | resolution: { integrity: sha512-d2ZFc/3lnK2YCYhos8iaNIYu9Vfhr92nHiyJHRltXWjXUBjEE+A4I58Tdbnw4VhggSW+2j5y5gTrLs4biNnubg== } 402 | 403 | '@types/prop-types@15.7.12': 404 | resolution: { integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== } 405 | 406 | '@types/react-dom@18.2.25': 407 | resolution: { integrity: sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA== } 408 | 409 | '@types/react@18.2.79': 410 | resolution: { integrity: sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w== } 411 | 412 | '@vitejs/plugin-react@4.2.1': 413 | resolution: { integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ== } 414 | engines: { node: ^14.18.0 || >=16.0.0 } 415 | peerDependencies: 416 | vite: ^4.2.0 || ^5.0.0 417 | 418 | ansi-styles@3.2.1: 419 | resolution: { integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== } 420 | engines: { node: '>=4' } 421 | 422 | browserslist@4.23.2: 423 | resolution: { integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA== } 424 | engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } 425 | hasBin: true 426 | 427 | caniuse-lite@1.0.30001646: 428 | resolution: { integrity: sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw== } 429 | 430 | chalk@2.4.2: 431 | resolution: { integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== } 432 | engines: { node: '>=4' } 433 | 434 | color-convert@1.9.3: 435 | resolution: { integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== } 436 | 437 | color-name@1.1.3: 438 | resolution: { integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== } 439 | 440 | convert-source-map@2.0.0: 441 | resolution: { integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== } 442 | 443 | csstype@3.1.3: 444 | resolution: { integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== } 445 | 446 | debug@4.3.6: 447 | resolution: { integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== } 448 | engines: { node: '>=6.0' } 449 | peerDependencies: 450 | supports-color: '*' 451 | peerDependenciesMeta: 452 | supports-color: 453 | optional: true 454 | 455 | defu@6.1.4: 456 | resolution: { integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== } 457 | 458 | electron-to-chromium@1.5.4: 459 | resolution: { integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA== } 460 | 461 | esbuild@0.20.2: 462 | resolution: { integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g== } 463 | engines: { node: '>=12' } 464 | hasBin: true 465 | 466 | escalade@3.1.2: 467 | resolution: { integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== } 468 | engines: { node: '>=6' } 469 | 470 | escape-string-regexp@1.0.5: 471 | resolution: { integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== } 472 | engines: { node: '>=0.8.0' } 473 | 474 | estree-walker@2.0.2: 475 | resolution: { integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== } 476 | 477 | fsevents@2.3.3: 478 | resolution: { integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== } 479 | engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } 480 | os: [darwin] 481 | 482 | gensync@1.0.0-beta.2: 483 | resolution: { integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== } 484 | engines: { node: '>=6.9.0' } 485 | 486 | globals@11.12.0: 487 | resolution: { integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== } 488 | engines: { node: '>=4' } 489 | 490 | has-flag@3.0.0: 491 | resolution: { integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== } 492 | engines: { node: '>=4' } 493 | 494 | isomorphic-rslog@0.0.6: 495 | resolution: { integrity: sha512-HM0q6XqQ93psDlqvuViNs/Ea3hAyGDkIdVAHlrEocjjAwGrs1fZ+EdQjS9eUPacnYB7Y8SoDdSY3H8p3ce205A== } 496 | engines: { node: '>=14.17.6' } 497 | 498 | js-tokens@4.0.0: 499 | resolution: { integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== } 500 | 501 | jsesc@2.5.2: 502 | resolution: { integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== } 503 | engines: { node: '>=4' } 504 | hasBin: true 505 | 506 | json5@2.2.3: 507 | resolution: { integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== } 508 | engines: { node: '>=6' } 509 | hasBin: true 510 | 511 | loose-envify@1.4.0: 512 | resolution: { integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== } 513 | hasBin: true 514 | 515 | lru-cache@5.1.1: 516 | resolution: { integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== } 517 | 518 | magic-string@0.30.11: 519 | resolution: { integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A== } 520 | 521 | ms@2.1.2: 522 | resolution: { integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== } 523 | 524 | nanoid@3.3.7: 525 | resolution: { integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== } 526 | engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } 527 | hasBin: true 528 | 529 | node-releases@2.0.18: 530 | resolution: { integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== } 531 | 532 | pathe@1.1.2: 533 | resolution: { integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== } 534 | 535 | picocolors@1.0.1: 536 | resolution: { integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== } 537 | 538 | picomatch@2.3.1: 539 | resolution: { integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== } 540 | engines: { node: '>=8.6' } 541 | 542 | postcss@8.4.40: 543 | resolution: { integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q== } 544 | engines: { node: ^10 || ^12 || >=14 } 545 | 546 | react-dom@18.3.1: 547 | resolution: { integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== } 548 | peerDependencies: 549 | react: ^18.3.1 550 | 551 | react-refresh@0.14.2: 552 | resolution: { integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== } 553 | engines: { node: '>=0.10.0' } 554 | 555 | react@18.3.1: 556 | resolution: { integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== } 557 | engines: { node: '>=0.10.0' } 558 | 559 | rollup@4.19.1: 560 | resolution: { integrity: sha512-K5vziVlg7hTpYfFBI+91zHBEMo6jafYXpkMlqZjg7/zhIG9iHqazBf4xz9AVdjS9BruRn280ROqLI7G3OFRIlw== } 561 | engines: { node: '>=18.0.0', npm: '>=8.0.0' } 562 | hasBin: true 563 | 564 | scheduler@0.23.2: 565 | resolution: { integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== } 566 | 567 | semver@6.3.1: 568 | resolution: { integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== } 569 | hasBin: true 570 | 571 | source-map-js@1.2.0: 572 | resolution: { integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== } 573 | engines: { node: '>=0.10.0' } 574 | 575 | supports-color@5.5.0: 576 | resolution: { integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== } 577 | engines: { node: '>=4' } 578 | 579 | to-fast-properties@2.0.0: 580 | resolution: { integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== } 581 | engines: { node: '>=4' } 582 | 583 | typescript@5.4.5: 584 | resolution: { integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== } 585 | engines: { node: '>=14.17' } 586 | hasBin: true 587 | 588 | undici-types@5.26.5: 589 | resolution: { integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== } 590 | 591 | update-browserslist-db@1.1.0: 592 | resolution: { integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== } 593 | hasBin: true 594 | peerDependencies: 595 | browserslist: '>= 4.21.0' 596 | 597 | vite@5.2.10: 598 | resolution: { integrity: sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw== } 599 | engines: { node: ^18.0.0 || >=20.0.0 } 600 | hasBin: true 601 | peerDependencies: 602 | '@types/node': ^18.0.0 || >=20.0.0 603 | less: '*' 604 | lightningcss: ^1.21.0 605 | sass: '*' 606 | stylus: '*' 607 | sugarss: '*' 608 | terser: ^5.4.0 609 | peerDependenciesMeta: 610 | '@types/node': 611 | optional: true 612 | less: 613 | optional: true 614 | lightningcss: 615 | optional: true 616 | sass: 617 | optional: true 618 | stylus: 619 | optional: true 620 | sugarss: 621 | optional: true 622 | terser: 623 | optional: true 624 | 625 | yallist@3.1.1: 626 | resolution: { integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== } 627 | 628 | snapshots: 629 | '@ampproject/remapping@2.3.0': 630 | dependencies: 631 | '@jridgewell/gen-mapping': 0.3.5 632 | '@jridgewell/trace-mapping': 0.3.25 633 | 634 | '@babel/code-frame@7.24.7': 635 | dependencies: 636 | '@babel/highlight': 7.24.7 637 | picocolors: 1.0.1 638 | 639 | '@babel/compat-data@7.25.2': {} 640 | 641 | '@babel/core@7.25.2': 642 | dependencies: 643 | '@ampproject/remapping': 2.3.0 644 | '@babel/code-frame': 7.24.7 645 | '@babel/generator': 7.25.0 646 | '@babel/helper-compilation-targets': 7.25.2 647 | '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) 648 | '@babel/helpers': 7.25.0 649 | '@babel/parser': 7.25.3 650 | '@babel/template': 7.25.0 651 | '@babel/traverse': 7.25.3 652 | '@babel/types': 7.25.2 653 | convert-source-map: 2.0.0 654 | debug: 4.3.6 655 | gensync: 1.0.0-beta.2 656 | json5: 2.2.3 657 | semver: 6.3.1 658 | transitivePeerDependencies: 659 | - supports-color 660 | 661 | '@babel/generator@7.25.0': 662 | dependencies: 663 | '@babel/types': 7.25.2 664 | '@jridgewell/gen-mapping': 0.3.5 665 | '@jridgewell/trace-mapping': 0.3.25 666 | jsesc: 2.5.2 667 | 668 | '@babel/helper-compilation-targets@7.25.2': 669 | dependencies: 670 | '@babel/compat-data': 7.25.2 671 | '@babel/helper-validator-option': 7.24.8 672 | browserslist: 4.23.2 673 | lru-cache: 5.1.1 674 | semver: 6.3.1 675 | 676 | '@babel/helper-module-imports@7.24.7': 677 | dependencies: 678 | '@babel/traverse': 7.25.3 679 | '@babel/types': 7.25.2 680 | transitivePeerDependencies: 681 | - supports-color 682 | 683 | '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': 684 | dependencies: 685 | '@babel/core': 7.25.2 686 | '@babel/helper-module-imports': 7.24.7 687 | '@babel/helper-simple-access': 7.24.7 688 | '@babel/helper-validator-identifier': 7.24.7 689 | '@babel/traverse': 7.25.3 690 | transitivePeerDependencies: 691 | - supports-color 692 | 693 | '@babel/helper-plugin-utils@7.24.8': {} 694 | 695 | '@babel/helper-simple-access@7.24.7': 696 | dependencies: 697 | '@babel/traverse': 7.25.3 698 | '@babel/types': 7.25.2 699 | transitivePeerDependencies: 700 | - supports-color 701 | 702 | '@babel/helper-string-parser@7.24.8': {} 703 | 704 | '@babel/helper-validator-identifier@7.24.7': {} 705 | 706 | '@babel/helper-validator-option@7.24.8': {} 707 | 708 | '@babel/helpers@7.25.0': 709 | dependencies: 710 | '@babel/template': 7.25.0 711 | '@babel/types': 7.25.2 712 | 713 | '@babel/highlight@7.24.7': 714 | dependencies: 715 | '@babel/helper-validator-identifier': 7.24.7 716 | chalk: 2.4.2 717 | js-tokens: 4.0.0 718 | picocolors: 1.0.1 719 | 720 | '@babel/parser@7.25.3': 721 | dependencies: 722 | '@babel/types': 7.25.2 723 | 724 | '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': 725 | dependencies: 726 | '@babel/core': 7.25.2 727 | '@babel/helper-plugin-utils': 7.24.8 728 | 729 | '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': 730 | dependencies: 731 | '@babel/core': 7.25.2 732 | '@babel/helper-plugin-utils': 7.24.8 733 | 734 | '@babel/template@7.25.0': 735 | dependencies: 736 | '@babel/code-frame': 7.24.7 737 | '@babel/parser': 7.25.3 738 | '@babel/types': 7.25.2 739 | 740 | '@babel/traverse@7.25.3': 741 | dependencies: 742 | '@babel/code-frame': 7.24.7 743 | '@babel/generator': 7.25.0 744 | '@babel/parser': 7.25.3 745 | '@babel/template': 7.25.0 746 | '@babel/types': 7.25.2 747 | debug: 4.3.6 748 | globals: 11.12.0 749 | transitivePeerDependencies: 750 | - supports-color 751 | 752 | '@babel/types@7.25.2': 753 | dependencies: 754 | '@babel/helper-string-parser': 7.24.8 755 | '@babel/helper-validator-identifier': 7.24.7 756 | to-fast-properties: 2.0.0 757 | 758 | '@esbuild/aix-ppc64@0.20.2': 759 | optional: true 760 | 761 | '@esbuild/android-arm64@0.20.2': 762 | optional: true 763 | 764 | '@esbuild/android-arm@0.20.2': 765 | optional: true 766 | 767 | '@esbuild/android-x64@0.20.2': 768 | optional: true 769 | 770 | '@esbuild/darwin-arm64@0.20.2': 771 | optional: true 772 | 773 | '@esbuild/darwin-x64@0.20.2': 774 | optional: true 775 | 776 | '@esbuild/freebsd-arm64@0.20.2': 777 | optional: true 778 | 779 | '@esbuild/freebsd-x64@0.20.2': 780 | optional: true 781 | 782 | '@esbuild/linux-arm64@0.20.2': 783 | optional: true 784 | 785 | '@esbuild/linux-arm@0.20.2': 786 | optional: true 787 | 788 | '@esbuild/linux-ia32@0.20.2': 789 | optional: true 790 | 791 | '@esbuild/linux-loong64@0.20.2': 792 | optional: true 793 | 794 | '@esbuild/linux-mips64el@0.20.2': 795 | optional: true 796 | 797 | '@esbuild/linux-ppc64@0.20.2': 798 | optional: true 799 | 800 | '@esbuild/linux-riscv64@0.20.2': 801 | optional: true 802 | 803 | '@esbuild/linux-s390x@0.20.2': 804 | optional: true 805 | 806 | '@esbuild/linux-x64@0.20.2': 807 | optional: true 808 | 809 | '@esbuild/netbsd-x64@0.20.2': 810 | optional: true 811 | 812 | '@esbuild/openbsd-x64@0.20.2': 813 | optional: true 814 | 815 | '@esbuild/sunos-x64@0.20.2': 816 | optional: true 817 | 818 | '@esbuild/win32-arm64@0.20.2': 819 | optional: true 820 | 821 | '@esbuild/win32-ia32@0.20.2': 822 | optional: true 823 | 824 | '@esbuild/win32-x64@0.20.2': 825 | optional: true 826 | 827 | '@jridgewell/gen-mapping@0.3.5': 828 | dependencies: 829 | '@jridgewell/set-array': 1.2.1 830 | '@jridgewell/sourcemap-codec': 1.5.0 831 | '@jridgewell/trace-mapping': 0.3.25 832 | 833 | '@jridgewell/resolve-uri@3.1.2': {} 834 | 835 | '@jridgewell/set-array@1.2.1': {} 836 | 837 | '@jridgewell/sourcemap-codec@1.5.0': {} 838 | 839 | '@jridgewell/trace-mapping@0.3.25': 840 | dependencies: 841 | '@jridgewell/resolve-uri': 3.1.2 842 | '@jridgewell/sourcemap-codec': 1.5.0 843 | 844 | '@module-federation/error-codes@0.8.0': {} 845 | 846 | '@module-federation/runtime@0.8.0': 847 | dependencies: 848 | '@module-federation/error-codes': 0.8.0 849 | '@module-federation/sdk': 0.8.0 850 | 851 | '@module-federation/sdk@0.8.0': 852 | dependencies: 853 | isomorphic-rslog: 0.0.6 854 | 855 | '@module-federation/vite@1.1.9(rollup@4.19.1)': 856 | dependencies: 857 | '@module-federation/runtime': 0.8.0 858 | '@rollup/pluginutils': 5.1.0(rollup@4.19.1) 859 | defu: 6.1.4 860 | estree-walker: 2.0.2 861 | magic-string: 0.30.11 862 | pathe: 1.1.2 863 | transitivePeerDependencies: 864 | - rollup 865 | 866 | '@rollup/pluginutils@5.1.0(rollup@4.19.1)': 867 | dependencies: 868 | '@types/estree': 1.0.5 869 | estree-walker: 2.0.2 870 | picomatch: 2.3.1 871 | optionalDependencies: 872 | rollup: 4.19.1 873 | 874 | '@rollup/rollup-android-arm-eabi@4.19.1': 875 | optional: true 876 | 877 | '@rollup/rollup-android-arm64@4.19.1': 878 | optional: true 879 | 880 | '@rollup/rollup-darwin-arm64@4.19.1': 881 | optional: true 882 | 883 | '@rollup/rollup-darwin-x64@4.19.1': 884 | optional: true 885 | 886 | '@rollup/rollup-linux-arm-gnueabihf@4.19.1': 887 | optional: true 888 | 889 | '@rollup/rollup-linux-arm-musleabihf@4.19.1': 890 | optional: true 891 | 892 | '@rollup/rollup-linux-arm64-gnu@4.19.1': 893 | optional: true 894 | 895 | '@rollup/rollup-linux-arm64-musl@4.19.1': 896 | optional: true 897 | 898 | '@rollup/rollup-linux-powerpc64le-gnu@4.19.1': 899 | optional: true 900 | 901 | '@rollup/rollup-linux-riscv64-gnu@4.19.1': 902 | optional: true 903 | 904 | '@rollup/rollup-linux-s390x-gnu@4.19.1': 905 | optional: true 906 | 907 | '@rollup/rollup-linux-x64-gnu@4.19.1': 908 | optional: true 909 | 910 | '@rollup/rollup-linux-x64-musl@4.19.1': 911 | optional: true 912 | 913 | '@rollup/rollup-win32-arm64-msvc@4.19.1': 914 | optional: true 915 | 916 | '@rollup/rollup-win32-ia32-msvc@4.19.1': 917 | optional: true 918 | 919 | '@rollup/rollup-win32-x64-msvc@4.19.1': 920 | optional: true 921 | 922 | '@types/babel__core@7.20.5': 923 | dependencies: 924 | '@babel/parser': 7.25.3 925 | '@babel/types': 7.25.2 926 | '@types/babel__generator': 7.6.8 927 | '@types/babel__template': 7.4.4 928 | '@types/babel__traverse': 7.20.6 929 | 930 | '@types/babel__generator@7.6.8': 931 | dependencies: 932 | '@babel/types': 7.25.2 933 | 934 | '@types/babel__template@7.4.4': 935 | dependencies: 936 | '@babel/parser': 7.25.3 937 | '@babel/types': 7.25.2 938 | 939 | '@types/babel__traverse@7.20.6': 940 | dependencies: 941 | '@babel/types': 7.25.2 942 | 943 | '@types/estree@1.0.5': {} 944 | 945 | '@types/node@18.19.42': 946 | dependencies: 947 | undici-types: 5.26.5 948 | optional: true 949 | 950 | '@types/prop-types@15.7.12': {} 951 | 952 | '@types/react-dom@18.2.25': 953 | dependencies: 954 | '@types/react': 18.2.79 955 | 956 | '@types/react@18.2.79': 957 | dependencies: 958 | '@types/prop-types': 15.7.12 959 | csstype: 3.1.3 960 | 961 | '@vitejs/plugin-react@4.2.1(vite@5.2.10(@types/node@18.19.42))': 962 | dependencies: 963 | '@babel/core': 7.25.2 964 | '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) 965 | '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) 966 | '@types/babel__core': 7.20.5 967 | react-refresh: 0.14.2 968 | vite: 5.2.10(@types/node@18.19.42) 969 | transitivePeerDependencies: 970 | - supports-color 971 | 972 | ansi-styles@3.2.1: 973 | dependencies: 974 | color-convert: 1.9.3 975 | 976 | browserslist@4.23.2: 977 | dependencies: 978 | caniuse-lite: 1.0.30001646 979 | electron-to-chromium: 1.5.4 980 | node-releases: 2.0.18 981 | update-browserslist-db: 1.1.0(browserslist@4.23.2) 982 | 983 | caniuse-lite@1.0.30001646: {} 984 | 985 | chalk@2.4.2: 986 | dependencies: 987 | ansi-styles: 3.2.1 988 | escape-string-regexp: 1.0.5 989 | supports-color: 5.5.0 990 | 991 | color-convert@1.9.3: 992 | dependencies: 993 | color-name: 1.1.3 994 | 995 | color-name@1.1.3: {} 996 | 997 | convert-source-map@2.0.0: {} 998 | 999 | csstype@3.1.3: {} 1000 | 1001 | debug@4.3.6: 1002 | dependencies: 1003 | ms: 2.1.2 1004 | 1005 | defu@6.1.4: {} 1006 | 1007 | electron-to-chromium@1.5.4: {} 1008 | 1009 | esbuild@0.20.2: 1010 | optionalDependencies: 1011 | '@esbuild/aix-ppc64': 0.20.2 1012 | '@esbuild/android-arm': 0.20.2 1013 | '@esbuild/android-arm64': 0.20.2 1014 | '@esbuild/android-x64': 0.20.2 1015 | '@esbuild/darwin-arm64': 0.20.2 1016 | '@esbuild/darwin-x64': 0.20.2 1017 | '@esbuild/freebsd-arm64': 0.20.2 1018 | '@esbuild/freebsd-x64': 0.20.2 1019 | '@esbuild/linux-arm': 0.20.2 1020 | '@esbuild/linux-arm64': 0.20.2 1021 | '@esbuild/linux-ia32': 0.20.2 1022 | '@esbuild/linux-loong64': 0.20.2 1023 | '@esbuild/linux-mips64el': 0.20.2 1024 | '@esbuild/linux-ppc64': 0.20.2 1025 | '@esbuild/linux-riscv64': 0.20.2 1026 | '@esbuild/linux-s390x': 0.20.2 1027 | '@esbuild/linux-x64': 0.20.2 1028 | '@esbuild/netbsd-x64': 0.20.2 1029 | '@esbuild/openbsd-x64': 0.20.2 1030 | '@esbuild/sunos-x64': 0.20.2 1031 | '@esbuild/win32-arm64': 0.20.2 1032 | '@esbuild/win32-ia32': 0.20.2 1033 | '@esbuild/win32-x64': 0.20.2 1034 | 1035 | escalade@3.1.2: {} 1036 | 1037 | escape-string-regexp@1.0.5: {} 1038 | 1039 | estree-walker@2.0.2: {} 1040 | 1041 | fsevents@2.3.3: 1042 | optional: true 1043 | 1044 | gensync@1.0.0-beta.2: {} 1045 | 1046 | globals@11.12.0: {} 1047 | 1048 | has-flag@3.0.0: {} 1049 | 1050 | isomorphic-rslog@0.0.6: {} 1051 | 1052 | js-tokens@4.0.0: {} 1053 | 1054 | jsesc@2.5.2: {} 1055 | 1056 | json5@2.2.3: {} 1057 | 1058 | loose-envify@1.4.0: 1059 | dependencies: 1060 | js-tokens: 4.0.0 1061 | 1062 | lru-cache@5.1.1: 1063 | dependencies: 1064 | yallist: 3.1.1 1065 | 1066 | magic-string@0.30.11: 1067 | dependencies: 1068 | '@jridgewell/sourcemap-codec': 1.5.0 1069 | 1070 | ms@2.1.2: {} 1071 | 1072 | nanoid@3.3.7: {} 1073 | 1074 | node-releases@2.0.18: {} 1075 | 1076 | pathe@1.1.2: {} 1077 | 1078 | picocolors@1.0.1: {} 1079 | 1080 | picomatch@2.3.1: {} 1081 | 1082 | postcss@8.4.40: 1083 | dependencies: 1084 | nanoid: 3.3.7 1085 | picocolors: 1.0.1 1086 | source-map-js: 1.2.0 1087 | 1088 | react-dom@18.3.1(react@18.3.1): 1089 | dependencies: 1090 | loose-envify: 1.4.0 1091 | react: 18.3.1 1092 | scheduler: 0.23.2 1093 | 1094 | react-refresh@0.14.2: {} 1095 | 1096 | react@18.3.1: 1097 | dependencies: 1098 | loose-envify: 1.4.0 1099 | 1100 | rollup@4.19.1: 1101 | dependencies: 1102 | '@types/estree': 1.0.5 1103 | optionalDependencies: 1104 | '@rollup/rollup-android-arm-eabi': 4.19.1 1105 | '@rollup/rollup-android-arm64': 4.19.1 1106 | '@rollup/rollup-darwin-arm64': 4.19.1 1107 | '@rollup/rollup-darwin-x64': 4.19.1 1108 | '@rollup/rollup-linux-arm-gnueabihf': 4.19.1 1109 | '@rollup/rollup-linux-arm-musleabihf': 4.19.1 1110 | '@rollup/rollup-linux-arm64-gnu': 4.19.1 1111 | '@rollup/rollup-linux-arm64-musl': 4.19.1 1112 | '@rollup/rollup-linux-powerpc64le-gnu': 4.19.1 1113 | '@rollup/rollup-linux-riscv64-gnu': 4.19.1 1114 | '@rollup/rollup-linux-s390x-gnu': 4.19.1 1115 | '@rollup/rollup-linux-x64-gnu': 4.19.1 1116 | '@rollup/rollup-linux-x64-musl': 4.19.1 1117 | '@rollup/rollup-win32-arm64-msvc': 4.19.1 1118 | '@rollup/rollup-win32-ia32-msvc': 4.19.1 1119 | '@rollup/rollup-win32-x64-msvc': 4.19.1 1120 | fsevents: 2.3.3 1121 | 1122 | scheduler@0.23.2: 1123 | dependencies: 1124 | loose-envify: 1.4.0 1125 | 1126 | semver@6.3.1: {} 1127 | 1128 | source-map-js@1.2.0: {} 1129 | 1130 | supports-color@5.5.0: 1131 | dependencies: 1132 | has-flag: 3.0.0 1133 | 1134 | to-fast-properties@2.0.0: {} 1135 | 1136 | typescript@5.4.5: {} 1137 | 1138 | undici-types@5.26.5: 1139 | optional: true 1140 | 1141 | update-browserslist-db@1.1.0(browserslist@4.23.2): 1142 | dependencies: 1143 | browserslist: 4.23.2 1144 | escalade: 3.1.2 1145 | picocolors: 1.0.1 1146 | 1147 | vite@5.2.10(@types/node@18.19.42): 1148 | dependencies: 1149 | esbuild: 0.20.2 1150 | postcss: 8.4.40 1151 | rollup: 4.19.1 1152 | optionalDependencies: 1153 | '@types/node': 18.19.42 1154 | fsevents: 2.3.3 1155 | 1156 | yallist@3.1.1: {} 1157 | -------------------------------------------------------------------------------- /remote/public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /remote/src/App.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect } from 'react'; 2 | import Counter from './components/Counter'; 3 | 4 | export default () => { 5 | useEffect(() => { 6 | console.log('Remote useEffect'); 7 | }, []); 8 | 9 | return ( 10 |
23 |
24 | 33 | 37 | 38 |
39 |
I'm the remote app
40 | 41 |
42 | ); 43 | }; 44 | -------------------------------------------------------------------------------- /remote/src/components/Counter.tsx: -------------------------------------------------------------------------------- 1 | import { useState } from 'react'; 2 | 3 | export default () => { 4 | const [count, setCount] = useState(0); 5 | 6 | return ( 7 | 21 | ); 22 | }; 23 | -------------------------------------------------------------------------------- /remote/src/environment.ts: -------------------------------------------------------------------------------- 1 | export default {}; -------------------------------------------------------------------------------- /remote/src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | 5 | ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( 6 | 7 | 8 | , 9 | ); 10 | -------------------------------------------------------------------------------- /remote/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /remote/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "lib": [ 6 | "DOM", 7 | "DOM.Iterable", 8 | "ESNext" 9 | ], 10 | "allowJs": false, 11 | "skipLibCheck": true, 12 | "esModuleInterop": false, 13 | "allowSyntheticDefaultImports": true, 14 | "strict": true, 15 | "forceConsistentCasingInFileNames": true, 16 | "module": "ESNext", 17 | "moduleResolution": "Node", 18 | "resolveJsonModule": true, 19 | "isolatedModules": true, 20 | "noEmit": true, 21 | "jsx": "react-jsx", 22 | "baseUrl": ".", 23 | "paths": { 24 | "shared": [ 25 | "../shared/shared.ts" 26 | ] 27 | } 28 | }, 29 | "include": [ 30 | "src" 31 | ], 32 | "references": [ 33 | { 34 | "path": "./tsconfig.node.json" 35 | } 36 | ] 37 | } -------------------------------------------------------------------------------- /remote/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "ESNext", 5 | "moduleResolution": "Node", 6 | "allowSyntheticDefaultImports": true 7 | }, 8 | "include": [ 9 | "vite.config.ts", 10 | "module-federation/vite-importmap-shim.ts" 11 | ] 12 | } -------------------------------------------------------------------------------- /remote/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { federation } from '@module-federation/vite'; 2 | import react from '@vitejs/plugin-react'; 3 | import { writeFileSync } from 'fs'; 4 | import { defineConfig, loadEnv } from 'vite'; 5 | import { dependencies } from './package.json'; 6 | 7 | export default defineConfig(({ mode }) => { 8 | const selfEnv = loadEnv(mode, process.cwd()); 9 | return { 10 | server: { 11 | fs: { 12 | allow: ['.', '../shared'], 13 | }, 14 | }, 15 | build: { 16 | target: 'chrome89', 17 | }, 18 | plugins: [ 19 | { 20 | name: 'generate-environment', 21 | options: function () { 22 | console.info('selfEnv', selfEnv); 23 | writeFileSync('./src/environment.ts', `export default ${JSON.stringify(selfEnv, null, 2)};`); 24 | }, 25 | }, 26 | federation({ 27 | filename: 'remoteEntry.js', 28 | name: 'remote', 29 | exposes: { 30 | './remote-app': './src/App.tsx', 31 | }, 32 | remotes: {}, 33 | shared: { 34 | react: { 35 | requiredVersion: dependencies.react, 36 | singleton: true, 37 | }, 38 | }, 39 | }), 40 | react(), 41 | ], 42 | }; 43 | }); 44 | -------------------------------------------------------------------------------- /shared/shared.ts: -------------------------------------------------------------------------------- 1 | export const state = { 2 | message: '' 3 | } 4 | --------------------------------------------------------------------------------