diff --git a/.changeset/lucky-shirts-listen.md b/.changeset/lucky-shirts-listen.md new file mode 100644 index 00000000000..4e772a07c22 --- /dev/null +++ b/.changeset/lucky-shirts-listen.md @@ -0,0 +1,5 @@ +--- +'@module-federation/sdk': patch +--- + +chore: bump logger diff --git a/.changeset/shaggy-flowers-cry.md b/.changeset/shaggy-flowers-cry.md new file mode 100644 index 00000000000..81d0608025d --- /dev/null +++ b/.changeset/shaggy-flowers-cry.md @@ -0,0 +1,7 @@ +--- +'@module-federation/error-codes': patch +'@module-federation/enhanced': patch +'@module-federation/sdk': patch +--- + +fix(enhanced): abort process if not find expose modules diff --git a/.changeset/six-yaks-teach.md b/.changeset/six-yaks-teach.md deleted file mode 100644 index 9faee34875d..00000000000 --- a/.changeset/six-yaks-teach.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@module-federation/rspack': patch ---- - -fix(rspack): import plugin from sub path diff --git a/.changeset/smart-crabs-burn.md b/.changeset/smart-crabs-burn.md new file mode 100644 index 00000000000..9faa96774d6 --- /dev/null +++ b/.changeset/smart-crabs-burn.md @@ -0,0 +1,7 @@ +--- +'@module-federation/error-codes': patch +'@module-federation/runtime': patch +'@module-federation/sdk': patch +--- + +fix: throw RUNTIME-008 Error when script resources load failed diff --git a/.changeset/sour-carpets-walk.md b/.changeset/sour-carpets-walk.md new file mode 100644 index 00000000000..becbc9cb025 --- /dev/null +++ b/.changeset/sour-carpets-walk.md @@ -0,0 +1,5 @@ +--- +'@module-federation/modern-js': patch +--- + +chore(modern-js-plugin): add ssr option diff --git a/.changeset/twelve-dingos-ring.md b/.changeset/twelve-dingos-ring.md deleted file mode 100644 index 4202f800a20..00000000000 --- a/.changeset/twelve-dingos-ring.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@module-federation/dts-plugin': patch ---- - -Lazy emit DTS files on hmr rebuilds, do not block compiler pipeline diff --git a/.changeset/twelve-pumpkins-film.md b/.changeset/twelve-pumpkins-film.md new file mode 100644 index 00000000000..45441ad7f90 --- /dev/null +++ b/.changeset/twelve-pumpkins-film.md @@ -0,0 +1,5 @@ +--- +'@module-federation/bridge-react': patch +--- + +feat: support basename passed by remote module props diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 13fbd7f5990..00000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,11 +0,0 @@ -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates - -version: 2 -updates: - - package-ecosystem: 'npm' # See documentation for possible values - directory: '/' # Location of package manifests - schedule: - interval: 'weekly' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8ce76ae7591..4b259d9ec35 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,54 +16,11 @@ on: description: 'Release Branch (confirm release branch)' required: true default: 'main' - issue_comment: - types: [created] permissions: id-token: write jobs: - issue_comment: - name: Release with comment - if: github.event.issue.pull_request && contains(github.event.comment.body, '!canary') - runs-on: ubuntu-latest - - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - with: - fetch-depth: 1 - ref: refs/pull/${{ github.event.issue.number }}/head - - - name: Install Pnpm - run: corepack enable - - - name: Setup Node.js 18 - uses: actions/setup-node@v3 - with: - node-version: '18' - cache: 'pnpm' - - - name: Install deps - run: pnpm install - - - name: Build Packages - run: pnpm run build:pkg - - - name: Release - uses: module-federation/actions@v2 - with: - version: 'next' - type: 'release' - branch: '' - tools: 'changeset' - env: - GITHUB_TOKEN: ${{ secrets.REPO_SCOPED_TOKEN }} - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - REPOSITORY: ${{ github.repository }} - PULL_REQUEST_NUMBER: ${{ github.event.issue.number }} - COMMENT: ${{ toJson(github.event.comment) }} - release: name: Release if: ${{ github.event_name == 'workflow_dispatch' || github.event_name == 'push' }} diff --git a/apps/3000-home/package.json b/apps/3000-home/package.json index eb549008b67..5622b7c7230 100644 --- a/apps/3000-home/package.json +++ b/apps/3000-home/package.json @@ -6,7 +6,7 @@ "@ant-design/cssinjs": "^1.21.0", "antd": "5.19.1", "lodash": "4.17.21", - "next": "14.2.10", + "next": "14.2.16", "react": "18.3.1" }, "devDependencies": { diff --git a/apps/3001-shop/package.json b/apps/3001-shop/package.json index fe9d28ceb0c..b8a1318e23f 100644 --- a/apps/3001-shop/package.json +++ b/apps/3001-shop/package.json @@ -6,7 +6,7 @@ "@ant-design/cssinjs": "^1.21.0", "antd": "5.19.1", "lodash": "4.17.21", - "next": "14.2.10", + "next": "14.2.16", "react": "18.3.1" }, "devDependencies": { diff --git a/apps/3002-checkout/package.json b/apps/3002-checkout/package.json index adce1015e1f..4f0d6e6e002 100644 --- a/apps/3002-checkout/package.json +++ b/apps/3002-checkout/package.json @@ -6,7 +6,7 @@ "@ant-design/cssinjs": "^1.21.0", "antd": "5.19.1", "lodash": "4.17.21", - "next": "14.2.10", + "next": "14.2.16", "react": "18.3.1" }, "devDependencies": { diff --git a/apps/modernjs/CHANGELOG.md b/apps/modernjs/CHANGELOG.md index 088f8e69783..8109a0398a8 100644 --- a/apps/modernjs/CHANGELOG.md +++ b/apps/modernjs/CHANGELOG.md @@ -1,5 +1,23 @@ # @module-federation/modernjsapp +## 0.1.77 + +### Patch Changes + +- @module-federation/enhanced@0.8.6 + +## 0.1.76 + +### Patch Changes + +- @module-federation/enhanced@0.8.5 + +## 0.1.75 + +### Patch Changes + +- @module-federation/enhanced@0.8.4 + ## 0.1.74 ### Patch Changes diff --git a/apps/modernjs/package.json b/apps/modernjs/package.json index 332980372f8..3493cdb4fcb 100644 --- a/apps/modernjs/package.json +++ b/apps/modernjs/package.json @@ -1,7 +1,7 @@ { "name": "@module-federation/modernjsapp", "private": true, - "version": "0.1.74", + "version": "0.1.77", "scripts": { "reset": "npx rimraf ./**/node_modules", "dev": "modern dev", diff --git a/apps/router-demo/router-host-2000/src/App.tsx b/apps/router-demo/router-host-2000/src/App.tsx index 28e690930d4..c2cc5e18e44 100644 --- a/apps/router-demo/router-host-2000/src/App.tsx +++ b/apps/router-demo/router-host-2000/src/App.tsx @@ -127,7 +127,9 @@ const App = () => { } + Component={() => ( + + )} /> ; deps?: Array; - strategy?: 'version-first' | 'loaded-first'; loaded?: boolean; }; @@ -104,41 +105,11 @@ type RemoteInfo = (RemotesWithEntry | RemotesWithVersion) & { interface RemotesWithVersion { name: string; version: string; -} +}; interface RemotesWithEntry { name: string; entry: string; -} - -type ShareInfos = { - // The name of the dependency, basic information about the dependency, and sharing strategy - [pkgName: string]: Shared[]; -}; - -type Shared = { - // The version of the shared dependency - version: string; - // Which modules are currently consuming this dependency - useIn: Array; - // From which module does the shared dependency come? - from: string; - // Factory function to get the shared dependency instance. When no other existing dependencies, it will load its own shared dependencies. - lib?: () => Module; - // Sharing strategy, which strategy will be used to decide whether to reuse the dependency - shareConfig: SharedConfig; - // The scope where the shared dependency is located, the default value is default - scope: Array; - // Function to retrieve the shared dependency instance. - get: SharedGetter; - // List of dependencies that this shared module depends on - deps: Array; - // Indicates whether the shared dependency has been loaded - loaded?: boolean; - // Represents the loading state of the shared dependency - loading?: null | Promise; - // Determines if the shared dependency should be loaded eagerly - eager?: boolean; }; ``` @@ -176,6 +147,38 @@ loadRemote('app2/util').then((m) => m.add(1, 2, 3)); - Obtains the `share` dependency. When a "shared" dependency matching the current consumer exists in the global environment, the existing and eligible dependency will be reused first. Otherwise, it loads its own dependency and stores it in the global cache. - This `API` is usually not called directly by users but is used by the build plugin to convert its own dependencies. +```typescript +type ShareInfos = { + // The name of the dependency, basic information about the dependency, and sharing strategy + [pkgName: string]: Shared[]; +}; + +type Shared = { + // The version of the shared dependency + version: string; + // Which modules are currently consuming this dependency + useIn: Array; + // From which module does the shared dependency come? + from: string; + // Factory function to get the shared dependency instance. When no other existing dependencies, it will load its own shared dependencies. + lib?: () => Module; + // Sharing strategy, which strategy will be used to decide whether to reuse the dependency + shareConfig: SharedConfig; + // The scope where the shared dependency is located, the default value is default + scope: Array; + // Function to retrieve the shared dependency instance. + get: SharedGetter; + // List of dependencies that this shared module depends on + deps: Array; + // Indicates whether the shared dependency has been loaded + loaded?: boolean; + // Represents the loading state of the shared dependency + loading?: null | Promise; + // Determines if the shared dependency should be loaded eagerly + eager?: boolean; +}; +``` + - Example ```javascript diff --git a/apps/website-new/docs/en/guide/framework/modernjs.mdx b/apps/website-new/docs/en/guide/framework/modernjs.mdx index 0ae14dbdc5d..1bc28b2fd79 100644 --- a/apps/website-new/docs/en/guide/framework/modernjs.mdx +++ b/apps/website-new/docs/en/guide/framework/modernjs.mdx @@ -169,3 +169,39 @@ Set module loading status. A fault-tolerant component that is rendered when the component fails to **load** or **render**. Note: This component only renders this fault-tolerant component on the client side when **rendering** fails. + +## Configuration + +### ssr + +- Type: `false` +- Is it required: No +- Default value: `undefined` + +`@module-federation/modern-js` will automatically add SSR related build presets based on `server.ssr` in modern.js config. + +If the current project only needs to load MF in the CSR, you can set `ssr: false` to help progressive migration. + +```title='modern.config.ts' +import { appTools, defineConfig } from '@modern-js/app-tools'; +import { moduleFederationPlugin } from '@module-federation/modern-js'; + +// https://modernjs.dev/en/configure/app/usage +export default defineConfig({ + dev: { + port: 3050, + }, + runtime: { + router: true, + }, + server: { + ssr: { + mode: 'stream', + }, + }, + plugins: [ + appTools(), + moduleFederationPlugin({ ssr: false }) + ], +}); +``` diff --git a/apps/website-new/docs/en/guide/troubleshooting/_meta.json b/apps/website-new/docs/en/guide/troubleshooting/_meta.json index 9958f93ebc8..33f7f1de891 100644 --- a/apps/website-new/docs/en/guide/troubleshooting/_meta.json +++ b/apps/website-new/docs/en/guide/troubleshooting/_meta.json @@ -6,6 +6,12 @@ "label": "Runtime", "collapsed":true }, + { + "type": "dir", + "name": "build", + "label": "Build", + "collapsed":true + }, { "type": "dir", "name": "type", diff --git a/apps/website-new/docs/en/guide/troubleshooting/build/BUILD-001.mdx b/apps/website-new/docs/en/guide/troubleshooting/build/BUILD-001.mdx new file mode 100644 index 00000000000..7023a611215 --- /dev/null +++ b/apps/website-new/docs/en/guide/troubleshooting/build/BUILD-001.mdx @@ -0,0 +1,18 @@ +import ErrorCodeTitle from '@components/ErrorCodeTitle'; + + + +## Reason + +The Expose module resource could not be found properly. + +There are two reasons for this problem: +1. The exposeModules file path set by `exposes` is incorrect and points to a non-existent address. +2. When using `Next.js` or other frameworks with built-in webpack, the webpack address used by MF is incorrect. + +## Solutions + +There are corresponding solutions for the reasons: + +1. Check whether the module file path corresponding to exposes is correct. Pay attention to the case here. +2. Check whether FEDERATION_WEBPACK_PATH is consistent with the webpack address used by the framework. If not, you can check whether the dependency is installed normally, or set process.env.FEDERATION_WEBPACK_PATH to point to the actual webpack address used. diff --git a/apps/website-new/docs/en/guide/troubleshooting/runtime/RUNTIME-008.mdx b/apps/website-new/docs/en/guide/troubleshooting/runtime/RUNTIME-008.mdx new file mode 100644 index 00000000000..a96cb6d655b --- /dev/null +++ b/apps/website-new/docs/en/guide/troubleshooting/runtime/RUNTIME-008.mdx @@ -0,0 +1,12 @@ +import ErrorCodeTitle from '@components/ErrorCodeTitle'; + + + +## Reasons + +Failed to load resource during the runtime process, which may be caused by network instability leading to resource loading timeout failure, or resource address error leading to resource loading failure. + + +## Solutions + +check whether the resource address is correct. If the resource address is correct, check whether the network is stable. If the network is unstable, you can add the retry mechanism, refer to [Runtime Retry Mechanism](en/plugin/plugins/retry-plugin.html). \ No newline at end of file diff --git a/apps/website-new/docs/en/plugin/plugins/retry-plugin.mdx b/apps/website-new/docs/en/plugin/plugins/retry-plugin.mdx index 1be95039b28..9e03a9af0a8 100644 --- a/apps/website-new/docs/en/plugin/plugins/retry-plugin.mdx +++ b/apps/website-new/docs/en/plugin/plugins/retry-plugin.mdx @@ -96,7 +96,9 @@ type FetchWithRetryOptions = { options?: RequestInit; retryTimes?: number; retryDelay?: number; - fallback?: (() => string) | ((url: string | URL | globalThis.Request) => string); + fallback?: + | (() => string) + | ((url: string | URL | globalThis.Request) => string); } type ScriptWithRetryOptions = { @@ -114,8 +116,8 @@ type ScriptWithRetryOptions = { ### Properties -- **script**: `ScriptWithRetryOptions` (optional) - - used to configure the retry options for fetch type resources. +- **fetch**: `FetchWithRetryOptions` (optional) + - `FetchWithRetryOptions` is the type used to configure the retry options for fetch type resources. - **script**: `ScriptWithRetryOptions` (optional) - `ScriptWithRetryOptions` is the type used to configure the retry options for script type resources. @@ -140,14 +142,14 @@ type ScriptWithRetryOptions = { - **retryDelay**: - `number` - optional - - The delay time between each retry (in milliseconds). + - The delay time between each retry (in milliseconds), default is 1000 (1 second). - **fallback**: - `() => string | ((url: string | URL | globalThis.Request) => string)` - optional - A function, which can optionally receive the failed URL, that returns a fallback string to be used if all retries fail. This function is called when all retry attempts have failed. -### ScriptWithRetryOptions 类型说明 +### ScriptWithRetryOptions Description - **retryTimes**: - `number` @@ -157,7 +159,7 @@ type ScriptWithRetryOptions = { - **retryDelay**: - `number` - optional - - The delay time between each retry (in milliseconds). + - The delay time between each retry (in milliseconds), default is 1000 (1 second). - **moduleName**: - `Array` @@ -191,7 +193,7 @@ init({ retryTimes: 3, // the retry delay retryDelay: 1000, - // the module name list that need to be retried, defualt behavior is to retry all modules + // the module name list that need to be retried, default behavior is to retry all modules moduleName: ['remote1'], // the callback function that will be called after all retried failed cb: (resolve, error) => { diff --git a/apps/website-new/docs/en/practice/_meta.json b/apps/website-new/docs/en/practice/_meta.json index b248187e985..3a40099cc04 100644 --- a/apps/website-new/docs/en/practice/_meta.json +++ b/apps/website-new/docs/en/practice/_meta.json @@ -15,6 +15,12 @@ "label": "Frameworks", "collapsed": true }, + { + "type": "dir", + "name": "monorepos", + "label": "Monorepos", + "collapsed": true + }, { "type": "dir", "name": "scenario", diff --git a/apps/website-new/docs/en/practice/bridge/vue-bridge.mdx b/apps/website-new/docs/en/practice/bridge/vue-bridge.mdx index 2918b0aa741..ed052f672e9 100644 --- a/apps/website-new/docs/en/practice/bridge/vue-bridge.mdx +++ b/apps/website-new/docs/en/practice/bridge/vue-bridge.mdx @@ -35,6 +35,12 @@ function createRemoteComponent( function createBridgeComponent(bridgeInfo: { rootComponent: VueComponent; + appOptions?: (params: { + app: Vue.App; + basename?: string; + memoryRoute?: { entryPath: string }; + [key: string]: any; + }) => { router?: Router } | void; }): () => { render(info: { name?: string; @@ -58,13 +64,17 @@ function createBridgeComponent(bridgeInfo: { // ./src/export-app.ts import App from './App.vue'; import router from './router'; +import customPlugin from './plugins/custom-vue-plugin'; import { createBridgeComponent } from '@module-federation/bridge-vue3'; export default createBridgeComponent({ rootComponent: App, - appOptions: () => ({ - router, - }), + appOptions: ({app}) => { + // Optional: adding a plugin to the new Vue instance on the host application side + app.use(customPlugin) + + return {router} + }, }); ``` @@ -193,11 +203,14 @@ export default router; #### createBridgeComponent ```tsx -function createBridgeComponent(bridgeInfo: { +function createBridgeComponent(bridgeInfo: { rootComponent: VueComponent; - appOptions?: () => ({ - router: Router; - }); + appOptions?: (params: { + app: Vue.App; + basename?: string; + memoryRoute?: { entryPath: string }; + [key: string]: any; + }) => { router?: Router } | void; }): () => { render(info: { name?: string; @@ -212,21 +225,25 @@ function createBridgeComponent(bridgeInfo: { ``` * `bridgeInfo` - * type: `{ rootComponent: VueComponent; appOptions?: () => ({ router: Router }) }` + * type: `{ rootComponent: VueComponent; appOptions?: (params: AddOptionsFnParams) => ({ router?: Router }) }` * Purpose: Used to pass the root component * ReturnType * type: `() => { render: (info: RenderFnParams) => void; destroy: (info: { dom: HTMLElement}) => void; }` ```tsx // ./src/export-app.ts -import { createBridgeComponent } from '@module-federation/bridge-vue3'; +import { createBridgeComponent } from '@module-federation/bridge-vue3'; import App from './App.vue'; +import customPlugin from './plugins/custom-vue-plugin'; import router from './router'; export default createBridgeComponent({ rootComponent: App, - appOptions: () => ({ - router, - }), + appOptions: ({app}) => { + // Optional: adding a plugin to the new Vue instance on the host application side + app.use(customPlugin) + + return {router} + }, }); ``` diff --git a/apps/website-new/docs/en/practice/monorepos/_meta.json b/apps/website-new/docs/en/practice/monorepos/_meta.json new file mode 100644 index 00000000000..975f087c9fa --- /dev/null +++ b/apps/website-new/docs/en/practice/monorepos/_meta.json @@ -0,0 +1,14 @@ +[ + { + "type": "file", + "name": "index", + "label": "Benefits of Module Federation in a Monorepo", + "collapsed": true + }, + { + "type": "file", + "name": "nx-for-module-federation", + "label": "Nx and Module Federation", + "collapsed": true + } +] diff --git a/apps/website-new/docs/en/practice/monorepos/index.mdx b/apps/website-new/docs/en/practice/monorepos/index.mdx new file mode 100644 index 00000000000..ab1e8418554 --- /dev/null +++ b/apps/website-new/docs/en/practice/monorepos/index.mdx @@ -0,0 +1,99 @@ +# Benefits of Module Federation in a Monorepo + +Module Federation is a powerful tool that allows you to share code between applications. It enables you to build applications that are more modular, maintainable, and scalable. In this guide, we will explore the benefits of using Module Federation in a monorepo. + +Polyrepos (multiple repositories) have long since been the de facto choice for developing micro-frontends, to combat organizational issues, however, they introduce more organizational challenges around code sharing, dependency management, versioning and team autonomy. + +Enabling team autonomy via Micro Frontends inadvertently pushed teams towards a polyrepo structure. Each team would have their own repository and would be responsible for maintaining their own codebase. This approach led to a lack of collaboration and a lack of transparency among other challenges. + +You can get all the benefits of Module Federation without the hassle of managing multiple repositories when you choose a monorepo, including some additional benefits around code sharing and dependency management. +This guide will help you understand the benefits of using Module Federation in a monorepo and how they address organizational challenges. + +## Potential Drawbacks of a Polyrepo Approach + +Total isolation can be very desirable for teams but it comes with its own set of caveats and issues, especially with Module Federation. It's easy to forget that when working with a Module Federation system, the end result that the user experiences is a single application. +As such, the total isolation and autonomy over tech decisions for polyrepos that comprise portions of the single application can actually lead to inconsistencies in the final experience for the user. + +Let's take a look at some of the other challenges that arise with the polyrepo approach. + +### Feedback Loops + +The polyrepo approach can lead to a lack of transparency and feedback loops. This can be especially problematic when working with a Module Federation system. + +When one team makes a change to their portion of the application, it can be difficult to understand how it will affect the other parts of the application. Notification of runtime issues and breaking changes cannot be found until after a deployment has occurred. + +Even if there is a quality assurance process in place to ensure that changes are safe before reaching production, the feedback loop is slow and can be disruptive, forcing teams to either roll back changes or quickly fix issues that arise instead of adding new features. + +### Shared Code Strategies + +Sharing code between polyrepos is difficult. It tends to involve creating and maintaining a private package registry of some form. Shared code gets built and deployed to this registry and consumed by the other polyrepos. If a change is made to the shared code, it must be released to the registry. + +This can be time-consuming and error-prone! It introduces the risk of blockers to feature work if any of the teams rely on the PR for the shared code to be released to the registry. + +It also circles back to the feedback loops issue, as teams must wait for the registry to be updated before they can see the impact of their changes, if they ever see the impact at all because of the isolated teams. They could be inadvertently introducing breaking changes that affect other teams. + +The teams consuming the shared code must also actively update the versions of the shared packages they are using to ensure compatibility across the module federated system, or risk breaking changes at runtime. + +### Dependency Management + +Polyrepos can also lead to dependency management issues. When teams are working in isolation in their own repository, they may have different dependencies or different versions of dependencies. This can lead to conflicts, versioning issues or worse, increased bundle sizes because of duplicated dependencies. + +For example, if one team is using React 18 and another team decides they want to use React 19 so they update their dependency, then once the changes are deployed to production there is a high risk of incompatible code and runtime errors, especially if other portions of the application do not support React 19. + +In a polyrepo setup, the update of React 19 does not immediately inform the team that by doing so they will be breaking the other teams. This can lead to a lot of frustration and rolling back of changes. + +### Testing Strategies + +When teams are working in isolation, they may not have the same testing strategies or tools. This can lead to inconsistent testing across the system, which can be a problem for the overall quality of the application. + +It also adds difficulty to the QA process. Either they test each micro-frontend separately or they test all of them together. + +Testing individual micro-frontends does not provide the same level of confidence in the overall quality of the application because it does not test the integration points nor any shared context between them. + +It also means having to build some kind of test framework that can mock certain layers of the full application which introduces a maintenance tax that must be paid to ensure that the test framework stays up to date with the other portions of the application. + +Testing the full application will provide a higher level of confidence overall, however, in a polyrepo setup it requires setting up configurable test environments that can deploy the latest versions of each micro-frontend. +This is time consuming, costs money on cloud resources and means that feedback on issues that arise during testing is delayed, reducing overall iteration speed. + +## How does a Monorepo address these drawbacks? + +A monorepo is a single repository that contains all the code for a project. It is a single source of truth for the entire project. +Let's take a closer look at each of the challenges above and how a monorepo can address them. + +### Feedback Loops + +In a monorepo, the feedback loop is simplified because all the code is in the same repository. This means that changes that are made by individual teams will present immediate feedback on how they impact the other teams and micro-frontends. This eliminates the need for manual releases and reduces the risk of breaking changes. + +It informs the developer of the impact of their change at the time of making it, allowing them to make the necessary changes to ensure that the impact is minimal. + +### Shared Code Strategies + +With monorepo tooling such as [Nx](https://nx.dev), teams can share code without the need for a central package registry. This eliminates the need for teams to manually release changes to the registry and reduces the risk of conflicts and versioning issues. + +It also greatly improves the speed of development as it cuts out the process of updating a separate repo of shared code, waiting for a new release to the central registry and then installing the new version in the consumers. + +Any changes to shared code can be made in the same repository as the code that consumes it. This increases collaboration and transparency across teams while improving quality (changes will provide immediate feedback) and decreasing the risk of breaking changes. + +Observability into what is using the shared code is also increased with help from dependency graphs and IDE support. This can help developers make informed decision about how impactful their changes will be. + +### Dependency Management + +In a monorepo single version bumps of major dependencies such as React or Angular are applied to all consumers. This ensures maximum compatibility across the system and reduces the risk of breaking changes. + +It _does_ require teams to collaborate and align on when to perform these upgrades, but it results in more confidence and compatibility for the end user. + +Teams can still choose to use their own versions of other minor dependencies such as `date-fns` or `lodash` if they choose to do so by defining those dependencies in their own `package.json`, or by aliasing them in the root `package.json`. + +### Testing Strategies + +Testing strategies are also simplified in a monorepo. This is because all parts of the system are in the same repo, so testing is easier and more consistent. Coordinating local serves to run automated e2e and integration tests against the system is easier because the repository will have the latest from each micro-frontend at all times. + +These automated tests can be run in a CI/CD pipeline, which can be triggered by changes to the monorepo. This ensures that the full system is always tested and that any issues that were previously difficult to identify (integration points between micro-frontends) are caught early. + +The test suites can also be written closer to how the user would actually use the final deployed application improving the quality of the final product. + +## Where does Nx fit? + +Nx is a powerful open-source build system that provides tools and techniques for enhancing developer productivity, optimizing CI performance, and maintaining code quality It works especially well with monorepos and comes with built-in support for Module Federation for Angular and React projects. + +[Learn more about why Nx is the best choice for Module Federation tooling](./nx-for-module-federation) diff --git a/apps/website-new/docs/en/practice/monorepos/nx-for-module-federation.mdx b/apps/website-new/docs/en/practice/monorepos/nx-for-module-federation.mdx new file mode 100644 index 00000000000..5dde952209f --- /dev/null +++ b/apps/website-new/docs/en/practice/monorepos/nx-for-module-federation.mdx @@ -0,0 +1,102 @@ +# Nx and Module Federation + +Nx is a powerful open-source build system that works especially well with monorepos and comes with built-in support for Module Federation for Angular and React projects. + +If you haven't already read the benefits of using a monorepo for Module Federation, make sure to read [Benefits of Module Federation in a Monorepo](./index) first. + +## What is Nx? + +Nx is a powerful open-source build system that provides tools and techniques for enhancing developer productivity, optimizing CI performance, and maintaining code quality. +It is the best tool for both building and maintaining monorepos as well as for managing Module Federation projects. + +### Core Features of Nx + +- Run Tasks Efficiently: Nx [runs tasks in parallel](https://nx.dev/features/run-tasks) and orders the tasks based on the dependencies between them. +- Distribute Tasks in CI: Nx scales your CI by [distributing tasks](https://nx.dev/ci/features/distribute-task-execution) across many VMs. Your CI is fast no matter how big your repository is. +- Cache Locally & Remotely: With [local](https://nx.dev/features/cache-task-results) and [remote caching](https://nx.dev/ci/features/remote-cache), Nx prevents unnecessary re-runs of tasks, saving you valuable dev time while also decreasing CI times. +- Split E2E Tests and Rerun Flaky Tests: Nx [automatically splits](https://nx.dev/ci/features/split-e2e-tasks) large e2e tests to distribute them across VMs. Nx can also automatically [identify and re-run flaky e2e tests](https://nx.dev/ci/features/flaky-tasks). +- Automate Dependency Updates: if you leverage [Nx plugins](https://nx.dev/concepts/nx-plugins) you gain additional features such as [code generation](https://nx.dev/features/generate-code) and tools to [automatically upgrade](https://nx.dev/features/automate-updating-dependencies) your codebase and dependencies. +- Make it Your Own: Nx is highly customizable and extensible. Fine-tune it by [creating a plugin for your organization](https://nx.dev/extending-nx/tutorials/organization-specific-plugin) or [creating a tooling plugin](https://nx.dev/extending-nx/tutorials/tooling-plugin). + +## Nx Module Federation Features + +Nx provides out of the box support for Module Federation for Angular and React projects including projects with Server Side Rendering (SSR). + +### Generators for Scaffolding Module Federation Projects + +Nx generators provide a consistent and convenient method of scaffolding projects. Nx Plugins for [Angular (`@nx/angular`)](https://nx.dev/nx-api/angular) and [React (`@nx/react`)](https://nx.dev/nx-api/react) come with generators for rapidly scaffolding Module Federation projects and allow you to easily add Consumers ( hosts) and Producers (remotes) to your system. + +You can see an example of the Nx `consumer` generator below: +```bash +# Generate an Angular Consumer application with three Producers +nx g @nx/angular:consumer shell --producers=products,cart,checkout + +# Generate a React Consumer application with three Producers +nx g @nx/react:consumer shell --producers=products,cart,checkout +``` + +You can learn more about setting up Module Federation with Nx in the guides for [Angular](/practice/frameworks/angular/using-nx-for-angular) and [React](/practice/frameworks/react/using-nx-for-react). + +### Executors + +Nx provides executors for building and serving your Module Federation applications. The important one is the `module-federation-dev-server` executor which is used to serve your application locally. This executor provides the following features: + +- Support for serving the Consumer (host) project along with all of its Producers (remotes) in a single command with the best resource management and DX. +- Support for serving individual Producers (remotes) that are currently being worked with HMR and file watching for faster local development. + +You can learn more about how we [Scale Developer Experience](./nx-for-module-federation#scaling-developer-experience-dx) for Module Federation in Nx below. + +Nx serves the Consumer (host) project along with all of its Producers (remotes) in a single command, which ensures that you get immediate feedback on any changes you make to the Producer (remote) projects providing immediate feedback if it impacts other projects in the system. +It also allows you to [develop as a user](./nx-for-module-federation#develop-as-a-user) such that you follow the same flow that a user would follow using the deployed application. + +To learn more about how Nx achieves this with the `module-federation-dev-server` executor, see the [Nx Module Federation Technical Overview](https://nx.dev/concepts/module-federation/nx-module-federation-technical-overview). + +### Scaling Developer Experience (DX) + +To ensure fast development cycles by utilizing Nx's `module-federation-dev-server` executor, Nx ensures fast dev server startup times by: + +- Providing a [local cache](https://nx.dev/features/cache-task-results) of the build artifacts for each project in the module federation system. +- Providing a [remote cache](https://nx.dev/ci/features/remote-cache) of the build artifacts for each project in the module federation system meaning that individual teams can take advantage of the cache produced by other teams. This is especially important when a team does not work on certain Producers (remotes). +- Running builds of Producers (remotes) in parallel speed up the build process. _(Cached artifacts will be used if available)_. +- Running only specified Producers (remotes) with the dev-server to limit the number of files that need to be watched. +- Splitting monolithic builds into smaller chunks and using the `affected` command to only run tasks for projects that were affected by changes. + +_Note: Remote caching is provided by [Nx Cloud](https://nx.dev/nx-cloud)._ + +### Develop as a User + +For both the best DX (Development Experience) and most accurate development of a Module Federation architecture Nx recommends viewing it as a single application. In other words, the Consumer (host) and all the Producers (remotes) are composed to form a single application. + +The Consumer (host) is the entry point and the Producer (remotes) are modules used by the application. It just happens that the Producers (remotes) are fetched over-the-wire at runtime rather than being bundled into the application. + +To support this, as well as to ensure a great local DX, Nx's Module Federation support is built in such a way that when developing locally you should always run serve on your Consumer (host) application. This will start up your full Module Federation architecture; serving your Consumer (host) with webpack-dev-server and each Producer (remote) via a single http-server. You can learn more about this in [Nx Module Federation Technical Overview](https://nx.dev/concepts/module-federation/nx-module-federation-technical-overview). + +When you're working on a specific Producer (remote) application, you should use the `--devProducers` option to specify the Producer (remote) you are currently developing; e.g. `nx serve shell --devProducers=checkout`. This ensures that the Producer (remote) is served via webpack-dev-server allowing for HMR and live reloading. + +## Use Cases Supported by Nx + +### Micro-frontend Architecture + +Nx recommends micro-frontend architectures for teams that require applications to be deployed independently. Independent Deployability is the concept where individual teams within an organization deploy their work on their own release cadence, regardless of other teams, allowing for more team autonomy. This can be achieved with Module Federation and becomes more and more appealing as the organization and application grows. + +With Module Federation, each team can own a Producer (remote) that can be deployed when needed, and it will be consumed by the Consumer (host) application as expected, allowing for updates to that Producer (remote) to be made without the need to redeploy everything. +This lends itself to more of a Micro Frontend approach. + +Learn more about [Micro Frontend Architecture](https://nx.dev/concepts/module-federation/micro-frontend-architecture) on Nx's documentation for more information. + +### Faster Builds + +As Module Federation allows you to split your application into smaller deployable chunks that are only required at runtime, you can take advantage of this to reduce the build times of your application. + +You can run the builds of multiple smaller applications in parallel and deploy all of them together, maintaining a single release cadence and coordination across teams but benefiting with reduced build times locally for developers and in CI. + +If you add [Nx Cloud](https://nx.dev/nx-cloud) to your Nx Workspace, then you can even get cache hits from some of the builds from other team members and CI, reducing the build time further. + +Learn more about [Faster Builds](https://nx.dev/concepts/module-federation/faster-builds-with-module-federation) on Nx's documentation. + +## Resources + +- [Nx](https://nx.dev) +- [Nx Module Federation](https://nx.dev/concepts/module-federation) +- [[GUIDE]: Using Nx CLI for React](../frameworks/react/using-nx-for-react) +- [[GUIDE]: Using Nx CLI for Angular](../frameworks/angular/using-nx-for-angular) diff --git a/apps/website-new/docs/public/words-map.json b/apps/website-new/docs/public/words-map.json index d3545554228..c19a8471ad2 100644 --- a/apps/website-new/docs/public/words-map.json +++ b/apps/website-new/docs/public/words-map.json @@ -156,5 +156,53 @@ } } } + }, + "exposeModules":{ + "id":"exposeModules", + "lang":{ + "zh":{ + "description":"Module Federation 中 expose 所对应的模块。", + "related_meta":{ + "docs":[], + "links":[ + { + "id":"webpack-modules-link", + "title":"Webpack modules", + "url":"https://webpack.docschina.org/concepts/modules/" + }] + } + }, + "en":{ + "description":"The module corresponding to expose in Module Federation.", + "related_meta":{ + "docs":[], + "links":[ + { + "id":"webpack-modules-link", + "title":"Webpack modules", + "url":"https://webpack.js.org/concepts/modules/#root" + }] + } + } + } + }, + "FEDERATION_WEBPACK_PATH":{ + "id":"FEDERATION_WEBPACK_PATH", + "lang":{ + "zh":{ + "description":"Module Federation 实际使用的 webpack 地址。", + "related_meta":{ + "docs":[], + "links":[] + } + }, + "en":{ + "description":"The webpack address actually used by Module Federation.", + "related_meta":{ + "docs":[], + "links":[] + } + } + } } } diff --git a/apps/website-new/docs/zh/configure/shared.mdx b/apps/website-new/docs/zh/configure/shared.mdx index da1dd1ce37d..b2aebb33d4d 100644 --- a/apps/website-new/docs/zh/configure/shared.mdx +++ b/apps/website-new/docs/zh/configure/shared.mdx @@ -44,13 +44,13 @@ new ModuleFederationPlugin({ - 类型:`boolean` - 是否必填:否 -- 默认值:`true` +- 默认值:`false` 是否在共享作用域中只允许共享模块的一个版本 (单例模式). - 如果值为 true,开启单例模式;值为 false,不开启单例模式。 -- 如果启用单例模式,那么 remote 应用组件和 host 应用共享的依赖只加载一次,当版本不一致时加载更高的版本。此时对于版本更低的那一方会给出警告: -- 不开启单例模式下,如果 remote 应用和 host 应用共享依赖的版本不一致,则 remote 应用和 host 应用加载各自的依赖 +- 如果启用单例模式,那么 remote 应用组件和 host 应用共享的依赖只加载一次,当版本不一致时加载更高的版本。此时对于版本更低的那一方会给出警告。 +- 不开启单例模式下,如果 remote 应用和 host 应用共享依赖的版本不一致,则 remote 应用和 host 应用加载各自的依赖。 ## requiredVersion @@ -61,7 +61,7 @@ new ModuleFederationPlugin({ 所需版本,可以是一个版本区间。默认值为当前应用的依赖版本。 - 在使用共享依赖时,会判断该依赖版本是否大于等于 requiredVersion ,如果是则会正常使用。如果小于 requiredVersion 那么会在控制台警告,并使用当前共享依赖中最小的版本。 -- 当一方设置 requiredVersion ,另一方设置 singleton 时,会加载 requiredVersion 的依赖,singleton 方直接使用 requiredVersion 的依赖,不论版本高低 +- 当一方设置 requiredVersion ,另一方设置 singleton 时,会加载 requiredVersion 的依赖,singleton 方直接使用 requiredVersion 的依赖,不论版本高低。 ## eager @@ -121,13 +121,13 @@ new ModuleFederationPlugin({ ```ts new ModuleFederationPlugin({ name: '@demo/button', - shared: { - react: { - singleton: true, - requiredVersion: '~18.2.0' - fixedDependencies: true - } + shared: { + react: { + singleton: true, + requiredVersion: '~18.2.0', + fixedDependencies: true } + }, //... }); ``` diff --git a/apps/website-new/docs/zh/guide/framework/modernjs.mdx b/apps/website-new/docs/zh/guide/framework/modernjs.mdx index ff7dc321ba2..6196b671537 100644 --- a/apps/website-new/docs/zh/guide/framework/modernjs.mdx +++ b/apps/website-new/docs/zh/guide/framework/modernjs.mdx @@ -180,3 +180,39 @@ export default Product; 当组件**加载**或**渲染**失败时,所渲染的容错组件。 注意:当**渲染**失败的时候,该组件仅在客户端渲染此 容错组件。 + +## 配置 + +### ssr + +- 类型:`false` +- 是否必填:否 +- 默认值:`undefined` + +`@module-federation/modern-js` 会根据 modern.js config 中的 `server.ssr` 来自动添加 SSR 相关的构建预设。 + +如果当前项目仅需要在 CSR 加载 MF ,那么可以设置 `ssr: false` 来帮助渐进式迁移。 + +```title='modern.config.ts' +import { appTools, defineConfig } from '@modern-js/app-tools'; +import { moduleFederationPlugin } from '@module-federation/modern-js'; + +// https://modernjs.dev/en/configure/app/usage +export default defineConfig({ + dev: { + port: 3050, + }, + runtime: { + router: true, + }, + server: { + ssr: { + mode: 'stream', + }, + }, + plugins: [ + appTools(), + moduleFederationPlugin({ ssr: false }) + ], +}); +``` diff --git a/apps/website-new/docs/zh/guide/troubleshooting/_meta.json b/apps/website-new/docs/zh/guide/troubleshooting/_meta.json index ab616331a3f..9257bd33364 100644 --- a/apps/website-new/docs/zh/guide/troubleshooting/_meta.json +++ b/apps/website-new/docs/zh/guide/troubleshooting/_meta.json @@ -6,6 +6,12 @@ "label": "运行时", "collapsed":true }, + { + "type": "dir", + "name": "build", + "label": "构建", + "collapsed":true + }, { "type": "dir", "name": "type", diff --git a/apps/website-new/docs/zh/guide/troubleshooting/build/BUILD-001.mdx b/apps/website-new/docs/zh/guide/troubleshooting/build/BUILD-001.mdx new file mode 100644 index 00000000000..16be83baa7e --- /dev/null +++ b/apps/website-new/docs/zh/guide/troubleshooting/build/BUILD-001.mdx @@ -0,0 +1,19 @@ +import ErrorCodeTitle from '@components/ErrorCodeTitle'; + + + +## 原因 + +未能正常找到 Expose 模块资源。 + +该问题原因有两个: +1. `exposes` 设置的 exposeModules 文件路径不正确,指向一个不存在的地址。 +2. 使用了 `Next.js` 或其他内置了 webpack 的框架,MF 使用的 webpack 地址与其不对 + +## 解决方法 + +针对原因,有对应的解决方法: + +1. 检查 exposes 对应的模块文件路径是否正确,此处注意大小写。 +2. 检查 FEDERATION_WEBPACK_PATH 与框架使用的 webpack 地址是否一致,如果不对,可以查看依赖是否正常安装,或者设置 process.env.FEDERATION_WEBPACK_PATH 指向实际使用的 webpack 地址。 + diff --git a/apps/website-new/docs/zh/guide/troubleshooting/runtime/RUNTIME-008.mdx b/apps/website-new/docs/zh/guide/troubleshooting/runtime/RUNTIME-008.mdx new file mode 100644 index 00000000000..a265fa4924f --- /dev/null +++ b/apps/website-new/docs/zh/guide/troubleshooting/runtime/RUNTIME-008.mdx @@ -0,0 +1,13 @@ +import ErrorCodeTitle from '@components/ErrorCodeTitle'; + + + +## 原因 + +Runtime 运行时资源加载失败报错,可能原因为网络不稳定导致资源加载超时失败,或者为资源地址错误导致资源加载失败。 + + +## 解决方法 + +检查资源地址是否正确,若资源地址正确,检查网络是否稳定。网络不稳定时可增加重试机制,参考 [Runtime 重试机制](zh/plugin/plugins/retry-plugin.html)。 + \ No newline at end of file diff --git a/apps/website-new/package.json b/apps/website-new/package.json index 97dfefea3b2..ad8fe50d7b8 100644 --- a/apps/website-new/package.json +++ b/apps/website-new/package.json @@ -1,6 +1,6 @@ { "name": "website-new", - "version": "1.0.16", + "version": "1.0.19", "private": true, "scripts": { "dev": "rspress dev", diff --git a/package.json b/package.json index a10717fd65a..529f8ce1cef 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "glob": "^11.0.0", "kill-port": "^2.0.1", "lodash.get": "4.4.2", - "next": "14.2.10", + "next": "14.2.16", "openai": "^4.72.0", "rambda": "7.5.0", "react": "18.3.1", @@ -217,7 +217,7 @@ "tailwindcss": "3.4.13", "terser-webpack-plugin": "^5.3.10", "ts-jest": "29.1.5", - "tslib": "2.6.3", + "tslib": "2.8.1", "tsup": "7.2.0", "typescript": "5.5.2", "url-loader": "4.1.1", diff --git a/packages/bridge/bridge-react-webpack-plugin/CHANGELOG.md b/packages/bridge/bridge-react-webpack-plugin/CHANGELOG.md index 7c8003addcb..5065140ea92 100644 --- a/packages/bridge/bridge-react-webpack-plugin/CHANGELOG.md +++ b/packages/bridge/bridge-react-webpack-plugin/CHANGELOG.md @@ -1,5 +1,23 @@ # @module-federation/bridge-react-webpack-plugin +## 0.8.6 + +### Patch Changes + +- @module-federation/sdk@0.8.6 + +## 0.8.5 + +### Patch Changes + +- @module-federation/sdk@0.8.5 + +## 0.8.4 + +### Patch Changes + +- @module-federation/sdk@0.8.4 + ## 0.8.3 ### Patch Changes diff --git a/packages/bridge/bridge-react-webpack-plugin/package.json b/packages/bridge/bridge-react-webpack-plugin/package.json index bbdc74c3550..854081d516a 100644 --- a/packages/bridge/bridge-react-webpack-plugin/package.json +++ b/packages/bridge/bridge-react-webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@module-federation/bridge-react-webpack-plugin", - "version": "0.8.3", + "version": "0.8.6", "publishConfig": { "access": "public" }, diff --git a/packages/bridge/bridge-react/CHANGELOG.md b/packages/bridge/bridge-react/CHANGELOG.md index 6f77fdce043..2bc3aae8a63 100644 --- a/packages/bridge/bridge-react/CHANGELOG.md +++ b/packages/bridge/bridge-react/CHANGELOG.md @@ -1,5 +1,27 @@ # @module-federation/bridge-react +## 0.8.6 + +### Patch Changes + +- 85e7482: fix(bridge-react): change all logs from info to debug in all bridge packages + - @module-federation/sdk@0.8.6 + - @module-federation/bridge-shared@0.8.6 + +## 0.8.5 + +### Patch Changes + +- @module-federation/sdk@0.8.5 +- @module-federation/bridge-shared@0.8.5 + +## 0.8.4 + +### Patch Changes + +- @module-federation/sdk@0.8.4 +- @module-federation/bridge-shared@0.8.4 + ## 0.8.3 ### Patch Changes diff --git a/packages/bridge/bridge-react/package.json b/packages/bridge/bridge-react/package.json index 2c0eff18d9d..1910e90639d 100644 --- a/packages/bridge/bridge-react/package.json +++ b/packages/bridge/bridge-react/package.json @@ -1,6 +1,6 @@ { "name": "@module-federation/bridge-react", - "version": "0.8.3", + "version": "0.8.6", "publishConfig": { "access": "public" }, @@ -52,7 +52,7 @@ "@loadable/component": "^5.16.4", "@module-federation/bridge-shared": "workspace:*", "@module-federation/sdk": "workspace:*", - "react-error-boundary": "^4.0.13" + "react-error-boundary": "^4.1.2" }, "peerDependencies": { "react": ">=16.9.0", diff --git a/packages/bridge/bridge-react/src/create.tsx b/packages/bridge/bridge-react/src/create.tsx index 9e51e92bb8e..b107b740917 100644 --- a/packages/bridge/bridge-react/src/create.tsx +++ b/packages/bridge/bridge-react/src/create.tsx @@ -30,7 +30,7 @@ function createLazyRemoteComponent( ) { const exportName = info?.export || 'default'; return React.lazy(async () => { - LoggerInstance.log(`createRemoteComponent LazyComponent create >>>`, { + LoggerInstance.debug(`createRemoteComponent LazyComponent create >>>`, { lazyComponent: info.loader, exportName, }); @@ -39,7 +39,7 @@ function createLazyRemoteComponent( const m = (await info.loader()) as RemoteModule; // @ts-ignore const moduleName = m && m[Symbol.for('mf_module_id')]; - LoggerInstance.log( + LoggerInstance.debug( `createRemoteComponent LazyComponent loadRemote info >>>`, { name: moduleName, module: m, exportName }, ); @@ -71,7 +71,7 @@ function createLazyRemoteComponent( default: RemoteAppComponent, }; } else { - LoggerInstance.log( + LoggerInstance.debug( `createRemoteComponent LazyComponent module not found >>>`, { name: moduleName, module: m, exportName }, ); diff --git a/packages/bridge/bridge-react/src/provider.tsx b/packages/bridge/bridge-react/src/provider.tsx index d0f0f02b93a..b36894e3394 100644 --- a/packages/bridge/bridge-react/src/provider.tsx +++ b/packages/bridge/bridge-react/src/provider.tsx @@ -32,7 +32,7 @@ export function createBridgeComponent(bridgeInfo: ProviderFnParams) { return () => { const rootMap = new Map(); const instance = federationRuntime.instance; - LoggerInstance.log( + LoggerInstance.debug( `createBridgeComponent instance from props >>>`, instance, ); @@ -53,7 +53,7 @@ export function createBridgeComponent(bridgeInfo: ProviderFnParams) { return { async render(info: RenderParams) { - LoggerInstance.log(`createBridgeComponent render Info`, info); + LoggerInstance.debug(`createBridgeComponent render Info`, info); const { moduleName, dom, @@ -102,7 +102,7 @@ export function createBridgeComponent(bridgeInfo: ProviderFnParams) { }, async destroy(info: DestroyParams) { - LoggerInstance.log(`createBridgeComponent destroy Info`, { + LoggerInstance.debug(`createBridgeComponent destroy Info`, { dom: info.dom, }); instance?.bridgeHook?.lifecycle?.beforeBridgeDestroy?.emit(info); diff --git a/packages/bridge/bridge-react/src/remote/index.tsx b/packages/bridge/bridge-react/src/remote/index.tsx index c437a60d39f..7ab4da23aa3 100644 --- a/packages/bridge/bridge-react/src/remote/index.tsx +++ b/packages/bridge/bridge-react/src/remote/index.tsx @@ -41,7 +41,7 @@ const RemoteAppWrapper = forwardRef(function ( ref, ) { const RemoteApp = () => { - LoggerInstance.log(`RemoteAppWrapper RemoteApp props >>>`, { props }); + LoggerInstance.debug(`RemoteAppWrapper RemoteApp props >>>`, { props }); const { moduleName, memoryRoute, @@ -62,7 +62,7 @@ const RemoteAppWrapper = forwardRef(function ( const renderDom: React.MutableRefObject = useRef(null); const providerInfoRef = useRef(null); - LoggerInstance.log(`RemoteAppWrapper instance from props >>>`, instance); + LoggerInstance.debug(`RemoteAppWrapper instance from props >>>`, instance); useEffect(() => { const renderTimeout = setTimeout(() => { @@ -78,12 +78,12 @@ const RemoteAppWrapper = forwardRef(function ( ...resProps, }; renderDom.current = rootRef.current; - LoggerInstance.log( + LoggerInstance.debug( `createRemoteComponent LazyComponent render >>>`, renderProps, ); - LoggerInstance.log( + LoggerInstance.debug( `createRemoteComponent LazyComponent hostInstance >>>`, instance, ); @@ -101,7 +101,7 @@ const RemoteAppWrapper = forwardRef(function ( clearTimeout(renderTimeout); setTimeout(() => { if (providerInfoRef.current?.destroy) { - LoggerInstance.log( + LoggerInstance.debug( `createRemoteComponent LazyComponent destroy >>>`, { moduleName, basename, dom: renderDom.current }, ); @@ -158,6 +158,11 @@ export function withRouterData< WrappedComponent: React.ComponentType

, ): React.FC> { const Component = forwardRef(function (props: any, ref) { + if (props?.basename) { + return ( + + ); + } let enableDispathPopstate = false; let routerContextVal: any; try { @@ -206,7 +211,7 @@ export function withRouterData< } } - LoggerInstance.log(`createRemoteComponent withRouterData >>>`, { + LoggerInstance.debug(`createRemoteComponent withRouterData >>>`, { ...props, basename, routerContextVal, @@ -219,10 +224,13 @@ export function withRouterData< useEffect(() => { if (pathname !== '' && pathname !== location.pathname) { - LoggerInstance.log(`createRemoteComponent dispatchPopstateEnv >>>`, { - name: props.name, - pathname: location.pathname, - }); + LoggerInstance.debug( + `createRemoteComponent dispatchPopstateEnv >>>`, + { + name: props.name, + pathname: location.pathname, + }, + ); dispatchPopstateEnv(); } setPathname(location.pathname); diff --git a/packages/bridge/bridge-react/src/router-v5.tsx b/packages/bridge/bridge-react/src/router-v5.tsx index 44eacf398d2..0fc3bde9ac9 100644 --- a/packages/bridge/bridge-react/src/router-v5.tsx +++ b/packages/bridge/bridge-react/src/router-v5.tsx @@ -13,7 +13,7 @@ function WraperRouter( const { basename, ...propsRes } = props; const routerContextProps = useContext(RouterContext) || {}; - LoggerInstance.log(`WraperRouter info >>>`, { + LoggerInstance.debug(`WraperRouter info >>>`, { ...routerContextProps, routerContextProps, WraperRouterProps: props, diff --git a/packages/bridge/bridge-react/src/router-v6.tsx b/packages/bridge/bridge-react/src/router-v6.tsx index 91f0494d73c..619fd1a5c47 100644 --- a/packages/bridge/bridge-react/src/router-v6.tsx +++ b/packages/bridge/bridge-react/src/router-v6.tsx @@ -13,7 +13,7 @@ function WraperRouter( const { basename, ...propsRes } = props; const routerContextProps = useContext(RouterContext) || {}; - LoggerInstance.log(`WraperRouter info >>>`, { + LoggerInstance.debug(`WraperRouter info >>>`, { ...routerContextProps, routerContextProps, WraperRouterProps: props, @@ -41,7 +41,7 @@ function WraperRouterProvider( const { router, ...propsRes } = props; const routerContextProps = useContext(RouterContext) || {}; const routers = router.routes; - LoggerInstance.log(`WraperRouterProvider info >>>`, { + LoggerInstance.debug(`WraperRouterProvider info >>>`, { ...routerContextProps, routerContextProps, WraperRouterProviderProps: props, diff --git a/packages/bridge/bridge-react/src/router.tsx b/packages/bridge/bridge-react/src/router.tsx index ee6f344d2e8..9816d0e69de 100644 --- a/packages/bridge/bridge-react/src/router.tsx +++ b/packages/bridge/bridge-react/src/router.tsx @@ -12,7 +12,7 @@ function WrapperRouter( const { basename, ...propsRes } = props; const routerContextProps = useContext(RouterContext) || {}; - LoggerInstance.log(`WrapperRouter info >>>`, { + LoggerInstance.debug(`WrapperRouter info >>>`, { ...routerContextProps, routerContextProps, WrapperRouterProps: props, @@ -40,7 +40,7 @@ function WrapperRouterProvider( const { router, ...propsRes } = props; const routerContextProps = useContext(RouterContext) || {}; const routers = router.routes; - LoggerInstance.log(`WrapperRouterProvider info >>>`, { + LoggerInstance.debug(`WrapperRouterProvider info >>>`, { ...routerContextProps, routerContextProps, WrapperRouterProviderProps: props, diff --git a/packages/bridge/bridge-shared/CHANGELOG.md b/packages/bridge/bridge-shared/CHANGELOG.md index 1b17918115e..8f6d318a5c9 100644 --- a/packages/bridge/bridge-shared/CHANGELOG.md +++ b/packages/bridge/bridge-shared/CHANGELOG.md @@ -1,5 +1,11 @@ # @module-federation/bridge-shared +## 0.8.6 + +## 0.8.5 + +## 0.8.4 + ## 0.8.3 ## 0.8.2 diff --git a/packages/bridge/bridge-shared/package.json b/packages/bridge/bridge-shared/package.json index 4d3f84419fc..1f8a76b8ac1 100644 --- a/packages/bridge/bridge-shared/package.json +++ b/packages/bridge/bridge-shared/package.json @@ -1,6 +1,6 @@ { "name": "@module-federation/bridge-shared", - "version": "0.8.3", + "version": "0.8.6", "publishConfig": { "access": "public" }, diff --git a/packages/bridge/vue3-bridge/CHANGELOG.md b/packages/bridge/vue3-bridge/CHANGELOG.md index ea43a049b80..b86f7b1aac1 100644 --- a/packages/bridge/vue3-bridge/CHANGELOG.md +++ b/packages/bridge/vue3-bridge/CHANGELOG.md @@ -1,5 +1,31 @@ # @module-federation/bridge-vue3 +## 0.8.6 + +### Patch Changes + +- 85e7482: fix(bridge-react): change all logs from info to debug in all bridge packages + - @module-federation/runtime@0.8.6 + - @module-federation/sdk@0.8.6 + - @module-federation/bridge-shared@0.8.6 + +## 0.8.5 + +### Patch Changes + +- d161cbe: 1. Added type annotations for the argument in the `createBridgeComponent` function. 2. Added passing the instance of the created Vue-application to `appOptions` so that necessary plugins can be registered in this callback. 3. Made `router` returned from `appOptions` optional. 4. Fixed issues reported by TypeScript and ESLint, including allowing `beforeBridgeRenderRes` to be a promise. 5. Updated the documentation. + - @module-federation/runtime@0.8.5 + - @module-federation/sdk@0.8.5 + - @module-federation/bridge-shared@0.8.5 + +## 0.8.4 + +### Patch Changes + +- @module-federation/runtime@0.8.4 +- @module-federation/sdk@0.8.4 +- @module-federation/bridge-shared@0.8.4 + ## 0.8.3 ### Patch Changes diff --git a/packages/bridge/vue3-bridge/package.json b/packages/bridge/vue3-bridge/package.json index fc8cdbdb461..f7015e5ff0a 100644 --- a/packages/bridge/vue3-bridge/package.json +++ b/packages/bridge/vue3-bridge/package.json @@ -7,7 +7,7 @@ "url": "https://github.com/module-federation/core", "directory": "packages/vue3-bridge" }, - "version": "0.8.3", + "version": "0.8.6", "publishConfig": { "access": "public" }, diff --git a/packages/bridge/vue3-bridge/src/create.ts b/packages/bridge/vue3-bridge/src/create.ts index 62e18375386..20b2374fb0f 100644 --- a/packages/bridge/vue3-bridge/src/create.ts +++ b/packages/bridge/vue3-bridge/src/create.ts @@ -28,7 +28,7 @@ export function createRemoteComponent(info: { } const exportName = info?.export || 'default'; - LoggerInstance.log(`createRemoteComponent LazyComponent create >>>`, { + LoggerInstance.debug(`createRemoteComponent LazyComponent create >>>`, { basename, info, }); @@ -37,7 +37,7 @@ export function createRemoteComponent(info: { const moduleName = module && module[Symbol.for('mf_module_id')]; const exportFn = module[exportName]; - LoggerInstance.log( + LoggerInstance.debug( `createRemoteComponent LazyComponent loadRemote info >>>`, { name: moduleName, module, exportName, basename, route }, ); diff --git a/packages/bridge/vue3-bridge/src/provider.ts b/packages/bridge/vue3-bridge/src/provider.ts index 0adbf3f4777..1c64d5a26d2 100644 --- a/packages/bridge/vue3-bridge/src/provider.ts +++ b/packages/bridge/vue3-bridge/src/provider.ts @@ -6,19 +6,33 @@ import { getInstance } from '@module-federation/runtime'; declare const __APP_VERSION__: string; -export function createBridgeComponent(bridgeInfo: any) { +type AddOptionsFnParams = { + app: Vue.App; + basename: RenderFnParams['basename']; + memoryRoute: RenderFnParams['memoryRoute']; + [key: string]: any; +}; + +export type ProviderFnParams = { + rootComponent: Vue.Component; + appOptions: ( + params: AddOptionsFnParams, + ) => { router?: VueRouter.Router } | void; +}; + +export function createBridgeComponent(bridgeInfo: ProviderFnParams) { const rootMap = new Map(); const instance = getInstance(); return () => { return { __APP_VERSION__, - render(info: RenderFnParams) { - LoggerInstance.log(`createBridgeComponent render Info`, info); + async render(info: RenderFnParams) { + LoggerInstance.debug(`createBridgeComponent render Info`, info); const app = Vue.createApp(bridgeInfo.rootComponent); rootMap.set(info.dom, app); const beforeBridgeRenderRes = - instance?.bridgeHook?.lifecycle?.beforeBridgeRender?.emit(info) || {}; + await instance?.bridgeHook?.lifecycle?.beforeBridgeRender?.emit(info); const extraProps = beforeBridgeRenderRes && @@ -27,41 +41,41 @@ export function createBridgeComponent(bridgeInfo: any) { ? beforeBridgeRenderRes?.extraProps : {}; - const appOptions = bridgeInfo.appOptions({ + const bridgeOptions = bridgeInfo.appOptions({ + app, basename: info.basename, memoryRoute: info.memoryRoute, ...extraProps, }); - const history = info.memoryRoute - ? VueRouter.createMemoryHistory(info.basename) - : VueRouter.createWebHistory(info.basename); + if (bridgeOptions?.router) { + const history = info.memoryRoute + ? VueRouter.createMemoryHistory(info.basename) + : VueRouter.createWebHistory(info.basename); - const router = VueRouter.createRouter({ - ...appOptions.router.options, - history, - routes: appOptions.router.getRoutes(), - }); + const router = VueRouter.createRouter({ + ...bridgeOptions.router.options, + history, + routes: bridgeOptions.router.getRoutes(), + }); - LoggerInstance.log(`createBridgeComponent render router info>>>`, { - name: info.moduleName, - router, - }); - // memory route Initializes the route - if (info.memoryRoute) { - router.push(info.memoryRoute.entryPath).then(() => { - app.use(router); - app.mount(info.dom); + LoggerInstance.log(`createBridgeComponent render router info>>>`, { + name: info.moduleName, + router, }); - } else { + // memory route Initializes the route + if (info.memoryRoute) { + await router.push(info.memoryRoute.entryPath); + } + app.use(router); - app.mount(info.dom); } - instance?.bridgeHook?.lifecycle?.afterBridgeRender?.emit(info) || {}; + app.mount(info.dom); + instance?.bridgeHook?.lifecycle?.afterBridgeRender?.emit(info); }, destroy(info: { dom: HTMLElement }) { - LoggerInstance.log(`createBridgeComponent destroy Info`, info); + LoggerInstance.debug(`createBridgeComponent destroy Info`, info); const root = rootMap.get(info?.dom); instance?.bridgeHook?.lifecycle?.beforeBridgeDestroy?.emit(info); diff --git a/packages/bridge/vue3-bridge/src/remoteApp.tsx b/packages/bridge/vue3-bridge/src/remoteApp.tsx index fd3a35113a1..c6f7b8ca235 100644 --- a/packages/bridge/vue3-bridge/src/remoteApp.tsx +++ b/packages/bridge/vue3-bridge/src/remoteApp.tsx @@ -29,7 +29,7 @@ export default defineComponent({ basename: props.basename, memoryRoute: props.memoryRoute, }; - LoggerInstance.log( + LoggerInstance.debug( `createRemoteComponent LazyComponent render >>>`, renderProps, ); @@ -53,10 +53,13 @@ export default defineComponent({ // dispatchPopstateEnv if (pathname.value !== '' && pathname.value !== newPath) { - LoggerInstance.log(`createRemoteComponent dispatchPopstateEnv >>>`, { - ...props, - pathname: route.path, - }); + LoggerInstance.debug( + `createRemoteComponent dispatchPopstateEnv >>>`, + { + ...props, + pathname: route.path, + }, + ); dispatchPopstateEnv(); } pathname.value = newPath; @@ -68,7 +71,7 @@ export default defineComponent({ }); onBeforeUnmount(() => { - LoggerInstance.log(`createRemoteComponent LazyComponent destroy >>>`, { + LoggerInstance.debug(`createRemoteComponent LazyComponent destroy >>>`, { ...props, }); watchStopHandle(); diff --git a/packages/chrome-devtools/CHANGELOG.md b/packages/chrome-devtools/CHANGELOG.md index 655bac80dbb..475019ee5a0 100644 --- a/packages/chrome-devtools/CHANGELOG.md +++ b/packages/chrome-devtools/CHANGELOG.md @@ -1,5 +1,24 @@ # @module-federation/devtools +## 0.8.6 + +### Patch Changes + +- 5b347f5: feat(chrome-devtools): add option customValueValidate for form component + - @module-federation/sdk@0.8.6 + +## 0.8.5 + +### Patch Changes + +- @module-federation/sdk@0.8.5 + +## 0.8.4 + +### Patch Changes + +- @module-federation/sdk@0.8.4 + ## 0.8.3 ### Patch Changes diff --git a/packages/chrome-devtools/package.json b/packages/chrome-devtools/package.json index 11428412d23..6ca6da2d216 100644 --- a/packages/chrome-devtools/package.json +++ b/packages/chrome-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@module-federation/devtools", - "version": "0.8.3", + "version": "0.8.6", "license": "MIT", "repository": { "type": "git", diff --git a/packages/chrome-devtools/src/App.tsx b/packages/chrome-devtools/src/App.tsx index 382e0a8dd47..43c78756e42 100644 --- a/packages/chrome-devtools/src/App.tsx +++ b/packages/chrome-devtools/src/App.tsx @@ -17,6 +17,7 @@ const App = (props: RootComponentProps) => { getVersion, handleSnapshot, handleProxyAddress, + customValueValidate, } = props; const [module, setModule] = useState(window.__FEDERATION__?.moduleInfo || {}); @@ -37,6 +38,7 @@ const App = (props: RootComponentProps) => { getVersion={getVersion} handleSnapshot={handleSnapshot} handleProxyAddress={handleProxyAddress} + customValueValidate={customValueValidate} /> ) : ( diff --git a/packages/chrome-devtools/src/component/Form/index.tsx b/packages/chrome-devtools/src/component/Form/index.tsx index 9691b72b53d..0742d2cec03 100644 --- a/packages/chrome-devtools/src/component/Form/index.tsx +++ b/packages/chrome-devtools/src/component/Form/index.tsx @@ -58,6 +58,7 @@ const FormComponent = (props: FormProps & RootComponentProps) => { versionList, setVersionList, getVersion, + customValueValidate, } = props; const { moduleInfo } = window.__FEDERATION__; let { producer } = separateType(moduleInfo); @@ -145,7 +146,12 @@ const FormComponent = (props: FormProps & RootComponentProps) => { }; } - if (validateCustom(value) || validateSemver(value) || validatePort(value)) { + if ( + validateCustom(value) || + validateSemver(value) || + validatePort(value) || + customValueValidate?.(value) + ) { statusSet[index].valueStatus = true; flushSync(() => setFormStatus(statusSet)); return callback(); diff --git a/packages/chrome-devtools/src/component/Layout/index.tsx b/packages/chrome-devtools/src/component/Layout/index.tsx index ffcddbf4c1b..f1577fed729 100644 --- a/packages/chrome-devtools/src/component/Layout/index.tsx +++ b/packages/chrome-devtools/src/component/Layout/index.tsx @@ -50,6 +50,7 @@ const Layout = ( setVersionList, getVersion, handleProxyAddress, + customValueValidate, } = props; const { producer } = separateType(moduleInfo); const [condition, setCondition] = useState(statusInfo.processing); @@ -209,6 +210,7 @@ const Layout = ( versionList={versionList} setVersionList={setVersionList} getVersion={getVersion} + customValueValidate={customValueValidate} /> diff --git a/packages/chrome-devtools/src/utils/types/common.ts b/packages/chrome-devtools/src/utils/types/common.ts index 3cd356079e1..dc4fdf8f42c 100644 --- a/packages/chrome-devtools/src/utils/types/common.ts +++ b/packages/chrome-devtools/src/utils/types/common.ts @@ -13,4 +13,5 @@ export interface RootComponentProps { setVersionList?: React.Dispatch>>>; getVersion?: (moduleName: string) => Promise>; handleProxyAddress?: (address: string) => string; + customValueValidate?: (schema: string) => boolean; } diff --git a/packages/data-prefetch/CHANGELOG.md b/packages/data-prefetch/CHANGELOG.md index dbdccd869ba..a2f77f379ed 100644 --- a/packages/data-prefetch/CHANGELOG.md +++ b/packages/data-prefetch/CHANGELOG.md @@ -1,5 +1,26 @@ # @module-federation/data-prefetch +## 0.8.6 + +### Patch Changes + +- @module-federation/runtime@0.8.6 +- @module-federation/sdk@0.8.6 + +## 0.8.5 + +### Patch Changes + +- @module-federation/runtime@0.8.5 +- @module-federation/sdk@0.8.5 + +## 0.8.4 + +### Patch Changes + +- @module-federation/runtime@0.8.4 +- @module-federation/sdk@0.8.4 + ## 0.8.3 ### Patch Changes diff --git a/packages/data-prefetch/package.json b/packages/data-prefetch/package.json index 8fc1c77afe1..996f11c5317 100644 --- a/packages/data-prefetch/package.json +++ b/packages/data-prefetch/package.json @@ -1,7 +1,7 @@ { "name": "@module-federation/data-prefetch", "description": "Module Federation Data Prefetch", - "version": "0.8.3", + "version": "0.8.6", "author": "nieyan ", "homepage": "https://github.com/module-federation/core", "license": "MIT", diff --git a/packages/dts-plugin/CHANGELOG.md b/packages/dts-plugin/CHANGELOG.md index fdf62cfdc3b..7189be4410c 100644 --- a/packages/dts-plugin/CHANGELOG.md +++ b/packages/dts-plugin/CHANGELOG.md @@ -1,5 +1,34 @@ # @module-federation/dts-plugin +## 0.8.6 + +### Patch Changes + +- c90bba2: fix(dts-plugin): auto inject compiler output path to avoid duplicate zip file + - @module-federation/sdk@0.8.6 + - @module-federation/managers@0.8.6 + - @module-federation/third-party-dts-extractor@0.8.6 + - @module-federation/error-codes@0.8.6 + +## 0.8.5 + +### Patch Changes + +- @module-federation/sdk@0.8.5 +- @module-federation/managers@0.8.5 +- @module-federation/third-party-dts-extractor@0.8.5 +- @module-federation/error-codes@0.8.5 + +## 0.8.4 + +### Patch Changes + +- 5ea7aea: Lazy emit DTS files on hmr rebuilds, do not block compiler pipeline + - @module-federation/sdk@0.8.4 + - @module-federation/managers@0.8.4 + - @module-federation/third-party-dts-extractor@0.8.4 + - @module-federation/error-codes@0.8.4 + ## 0.8.3 ### Patch Changes diff --git a/packages/dts-plugin/package.json b/packages/dts-plugin/package.json index 80b5ae69787..be7344fae95 100644 --- a/packages/dts-plugin/package.json +++ b/packages/dts-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@module-federation/dts-plugin", - "version": "0.8.3", + "version": "0.8.6", "author": "hanric ", "main": "./dist/index.js", "module": "./dist/index.js", diff --git a/packages/dts-plugin/src/core/configurations/remotePlugin.test.ts b/packages/dts-plugin/src/core/configurations/remotePlugin.test.ts index 3bbe8e5ffbf..b3f4b245b9c 100644 --- a/packages/dts-plugin/src/core/configurations/remotePlugin.test.ts +++ b/packages/dts-plugin/src/core/configurations/remotePlugin.test.ts @@ -78,6 +78,7 @@ describe('hostPlugin', () => { implementation: '', generateAPITypes: false, context: process.cwd(), + outputDir: '', abortOnError: true, extractRemoteTypes: false, extractThirdParty: false, @@ -141,6 +142,7 @@ describe('hostPlugin', () => { generateAPITypes: false, implementation: '', context: process.cwd(), + outputDir: '', abortOnError: true, extractRemoteTypes: false, extractThirdParty: false, diff --git a/packages/dts-plugin/src/core/configurations/remotePlugin.ts b/packages/dts-plugin/src/core/configurations/remotePlugin.ts index ea96b10fd9d..a171131c638 100644 --- a/packages/dts-plugin/src/core/configurations/remotePlugin.ts +++ b/packages/dts-plugin/src/core/configurations/remotePlugin.ts @@ -22,6 +22,7 @@ const defaultOptions = { abortOnError: true, extractRemoteTypes: false, extractThirdParty: false, + outputDir: '', } satisfies Partial; function getEffectiveRootDir( @@ -59,6 +60,7 @@ const readTsConfig = ( compiledTypesFolder, context, additionalFilesToCompile, + outputDir, }: Required, mapComponentsToExpose: Record, ): TsConfigJson => { @@ -84,7 +86,7 @@ const readTsConfig = ( const outDir = resolve( context, - configContent.options.outDir || 'dist', + outputDir || configContent.options.outDir || 'dist', typesFolder, compiledTypesFolder, ); diff --git a/packages/dts-plugin/src/core/interfaces/RemoteOptions.ts b/packages/dts-plugin/src/core/interfaces/RemoteOptions.ts index b08718acf87..6cfb3d4e051 100644 --- a/packages/dts-plugin/src/core/interfaces/RemoteOptions.ts +++ b/packages/dts-plugin/src/core/interfaces/RemoteOptions.ts @@ -5,4 +5,5 @@ export interface RemoteOptions extends moduleFederationPlugin.DtsRemoteOptions { context?: string; implementation?: string; hostRemoteTypesFolder?: string; + outputDir?: string; } diff --git a/packages/dts-plugin/src/plugins/DevPlugin.ts b/packages/dts-plugin/src/plugins/DevPlugin.ts index 00a2bed980c..064fe6a9c6f 100644 --- a/packages/dts-plugin/src/plugins/DevPlugin.ts +++ b/packages/dts-plugin/src/plugins/DevPlugin.ts @@ -191,6 +191,10 @@ export class DevPlugin implements WebpackPluginInstance { ? undefined : normalizedDtsOptions.implementation, context: compiler.context, + outputDir: path.relative( + compiler.context, + compiler.outputPath || compiler.options.output.path, + ), moduleFederationConfig: { ...this._options, }, diff --git a/packages/dts-plugin/src/plugins/GenerateTypesPlugin.ts b/packages/dts-plugin/src/plugins/GenerateTypesPlugin.ts index 6cb0a941373..9059d36c967 100644 --- a/packages/dts-plugin/src/plugins/GenerateTypesPlugin.ts +++ b/packages/dts-plugin/src/plugins/GenerateTypesPlugin.ts @@ -10,6 +10,7 @@ import { generateTypes, generateTypesInChildProcess, retrieveTypesAssetsInfo, + type DTSManagerOptions, } from '../core/index'; import path from 'path'; @@ -42,10 +43,14 @@ export class GenerateTypesPlugin implements WebpackPluginInstance { return; } - const finalOptions = { + const finalOptions: DTSManagerOptions = { remote: { implementation: dtsOptions.implementation, context: compiler.context, + outputDir: path.relative( + compiler.context, + compiler.outputPath || compiler.options.output.path, + ), moduleFederationConfig: pluginOptions, ...normalizedGenerateTypes, }, @@ -74,8 +79,11 @@ export class GenerateTypesPlugin implements WebpackPluginInstance { const generateTypesFn = getGenerateTypesFn(); let compiledOnce = false; - const emitTypesFiles = async () => { + const emitTypesFilesDev = async () => { try { + if (!isDev()) { + return; + } const { zipTypesPath, apiTypesPath, zipName, apiFileName } = retrieveTypesAssetsInfo(finalOptions.remote); @@ -166,7 +174,7 @@ export class GenerateTypesPlugin implements WebpackPluginInstance { } if (compiledOnce) { - emitTypesFiles(); + emitTypesFilesDev(); return; } diff --git a/packages/enhanced/CHANGELOG.md b/packages/enhanced/CHANGELOG.md index 52e206ef941..49b65a935aa 100644 --- a/packages/enhanced/CHANGELOG.md +++ b/packages/enhanced/CHANGELOG.md @@ -1,5 +1,48 @@ # @module-federation/enhanced +## 0.8.6 + +### Patch Changes + +- Updated dependencies [c90bba2] +- Updated dependencies [4a2cf82] + - @module-federation/dts-plugin@0.8.6 + - @module-federation/manifest@0.8.6 + - @module-federation/rspack@0.8.6 + - @module-federation/sdk@0.8.6 + - @module-federation/runtime-tools@0.8.6 + - @module-federation/managers@0.8.6 + - @module-federation/bridge-react-webpack-plugin@0.8.6 + - @module-federation/data-prefetch@0.8.6 + +## 0.8.5 + +### Patch Changes + +- @module-federation/rspack@0.8.5 +- @module-federation/sdk@0.8.5 +- @module-federation/runtime-tools@0.8.5 +- @module-federation/managers@0.8.5 +- @module-federation/manifest@0.8.5 +- @module-federation/dts-plugin@0.8.5 +- @module-federation/bridge-react-webpack-plugin@0.8.5 +- @module-federation/data-prefetch@0.8.5 + +## 0.8.4 + +### Patch Changes + +- Updated dependencies [61625d4] +- Updated dependencies [5ea7aea] + - @module-federation/rspack@0.8.4 + - @module-federation/dts-plugin@0.8.4 + - @module-federation/manifest@0.8.4 + - @module-federation/sdk@0.8.4 + - @module-federation/runtime-tools@0.8.4 + - @module-federation/managers@0.8.4 + - @module-federation/bridge-react-webpack-plugin@0.8.4 + - @module-federation/data-prefetch@0.8.4 + ## 0.8.3 ### Patch Changes diff --git a/packages/enhanced/package.json b/packages/enhanced/package.json index 5891783dccd..76ee4ec0adf 100644 --- a/packages/enhanced/package.json +++ b/packages/enhanced/package.json @@ -1,6 +1,6 @@ { "name": "@module-federation/enhanced", - "version": "0.8.3", + "version": "0.8.6", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", "repository": { @@ -88,6 +88,7 @@ "@module-federation/runtime-tools": "workspace:*", "@module-federation/manifest": "workspace:*", "@module-federation/managers": "workspace:*", + "@module-federation/error-codes": "workspace:*", "@module-federation/dts-plugin": "workspace:*", "@module-federation/rspack": "workspace:*", "@module-federation/bridge-react-webpack-plugin": "workspace:*", diff --git a/packages/enhanced/src/index.ts b/packages/enhanced/src/index.ts index ada5b552af3..b383f748dc0 100644 --- a/packages/enhanced/src/index.ts +++ b/packages/enhanced/src/index.ts @@ -1,5 +1,8 @@ import type { moduleFederationPlugin } from '@module-federation/sdk'; -export { default as ModuleFederationPlugin } from './wrapper/ModuleFederationPlugin'; +export { + default as ModuleFederationPlugin, + PLUGIN_NAME, +} from './wrapper/ModuleFederationPlugin'; export { default as ContainerReferencePlugin } from './wrapper/ContainerReferencePlugin'; export { default as SharePlugin } from './wrapper/SharePlugin'; export { default as ContainerPlugin } from './wrapper/ContainerPlugin'; diff --git a/packages/enhanced/src/lib/container/ContainerEntryModule.ts b/packages/enhanced/src/lib/container/ContainerEntryModule.ts index 3b47697bc8d..58e2461b2c0 100644 --- a/packages/enhanced/src/lib/container/ContainerEntryModule.ts +++ b/packages/enhanced/src/lib/container/ContainerEntryModule.ts @@ -5,6 +5,12 @@ 'use strict'; import { normalizeWebpackPath } from '@module-federation/sdk/normalize-webpack-path'; +import { logger } from '@module-federation/sdk'; +import { + getShortErrorMsg, + buildDescMap, + BUILD_001, +} from '@module-federation/error-codes'; import type { containerPlugin } from '@module-federation/sdk'; import type { Compilation, Dependency } from 'webpack'; import type { @@ -229,9 +235,13 @@ class ContainerEntryModule extends Module { let str; if (modules.some((m) => !m.module)) { - str = runtimeTemplate.throwMissingModuleErrorBlock({ - request: modules.map((m) => m.request).join(', '), - }); + logger.error( + getShortErrorMsg(BUILD_001, buildDescMap, { + exposeModules: modules.filter((m) => !m.module), + FEDERATION_WEBPACK_PATH: process.env['FEDERATION_WEBPACK_PATH'], + }), + ); + process.exit(1); } else { str = `return ${runtimeTemplate.blockPromise({ block, diff --git a/packages/enhanced/src/rspack.ts b/packages/enhanced/src/rspack.ts index 98e64b3906f..59230e0eaef 100644 --- a/packages/enhanced/src/rspack.ts +++ b/packages/enhanced/src/rspack.ts @@ -1 +1,4 @@ -export { ModuleFederationPlugin } from '@module-federation/rspack/plugin'; +export { + ModuleFederationPlugin, + PLUGIN_NAME, +} from '@module-federation/rspack/plugin'; diff --git a/packages/enhanced/src/webpack.ts b/packages/enhanced/src/webpack.ts index 68fd90fae49..a4345614839 100644 --- a/packages/enhanced/src/webpack.ts +++ b/packages/enhanced/src/webpack.ts @@ -1,3 +1,6 @@ -import { default as ModuleFederationPlugin } from './wrapper/ModuleFederationPlugin'; +import { + default as ModuleFederationPlugin, + PLUGIN_NAME, +} from './wrapper/ModuleFederationPlugin'; -export { ModuleFederationPlugin }; +export { ModuleFederationPlugin, PLUGIN_NAME }; diff --git a/packages/enhanced/src/wrapper/ModuleFederationPlugin.ts b/packages/enhanced/src/wrapper/ModuleFederationPlugin.ts index b9496f05f04..36339a41e2b 100644 --- a/packages/enhanced/src/wrapper/ModuleFederationPlugin.ts +++ b/packages/enhanced/src/wrapper/ModuleFederationPlugin.ts @@ -13,7 +13,7 @@ import path from 'node:path'; import fs from 'node:fs'; import ReactBridgePlugin from '@module-federation/bridge-react-webpack-plugin'; -const PLUGIN_NAME = 'ModuleFederationPlugin'; +export const PLUGIN_NAME = 'ModuleFederationPlugin'; export default class ModuleFederationPlugin implements WebpackPluginInstance { private _options: moduleFederationPlugin.ModuleFederationPluginOptions; diff --git a/packages/error-codes/CHANGELOG.md b/packages/error-codes/CHANGELOG.md index 56ba4e7ab74..f307c928600 100644 --- a/packages/error-codes/CHANGELOG.md +++ b/packages/error-codes/CHANGELOG.md @@ -1,5 +1,11 @@ # @module-federation/error-codes +## 0.8.6 + +## 0.8.5 + +## 0.8.4 + ## 0.8.3 ## 0.8.2 diff --git a/packages/error-codes/package.json b/packages/error-codes/package.json index 5929687c7fb..d02eb5e4614 100644 --- a/packages/error-codes/package.json +++ b/packages/error-codes/package.json @@ -4,7 +4,7 @@ "author": "zhanghang ", "public": true, "sideEffects": false, - "version": "0.8.3", + "version": "0.8.6", "license": "MIT", "repository": { "type": "git", diff --git a/packages/error-codes/src/desc.ts b/packages/error-codes/src/desc.ts index 3d4dcf14108..af4eb17d7af 100644 --- a/packages/error-codes/src/desc.ts +++ b/packages/error-codes/src/desc.ts @@ -6,7 +6,9 @@ import { RUNTIME_005, RUNTIME_006, RUNTIME_007, + RUNTIME_008, TYPE_001, + BUILD_001, } from './error-codes'; export const runtimeDescMap = { @@ -17,13 +19,19 @@ export const runtimeDescMap = { [RUNTIME_005]: 'Invalid loadShareSync function call from bundler runtime', [RUNTIME_006]: 'Invalid loadShareSync function call from runtime', [RUNTIME_007]: 'Failed to get remote snapshot.', + [RUNTIME_008]: 'Failed to load script resources.', }; export const typeDescMap = { [TYPE_001]: 'Failed to generate type declaration.', }; +export const buildDescMap = { + [BUILD_001]: 'Failed to find expose module.', +}; + export const errorDescMap = { ...runtimeDescMap, ...typeDescMap, + ...buildDescMap, }; diff --git a/packages/error-codes/src/error-codes.ts b/packages/error-codes/src/error-codes.ts index 3901bbf7abf..bbe390df0bb 100644 --- a/packages/error-codes/src/error-codes.ts +++ b/packages/error-codes/src/error-codes.ts @@ -5,5 +5,7 @@ export const RUNTIME_004 = 'RUNTIME-004'; export const RUNTIME_005 = 'RUNTIME-005'; export const RUNTIME_006 = 'RUNTIME-006'; export const RUNTIME_007 = 'RUNTIME-007'; +export const RUNTIME_008 = 'RUNTIME-008'; export const TYPE_001 = 'TYPE-001'; +export const BUILD_001 = 'BUILD-001'; diff --git a/packages/error-codes/src/index.ts b/packages/error-codes/src/index.ts index 9d05ac2fb4e..74d74a9878e 100644 --- a/packages/error-codes/src/index.ts +++ b/packages/error-codes/src/index.ts @@ -1,3 +1,8 @@ export * from './error-codes'; export { getShortErrorMsg } from './getShortErrorMsg'; -export { runtimeDescMap, typeDescMap, errorDescMap } from './desc'; +export { + runtimeDescMap, + typeDescMap, + errorDescMap, + buildDescMap, +} from './desc'; diff --git a/packages/esbuild/CHANGELOG.md b/packages/esbuild/CHANGELOG.md index 9a6758410b0..313f27329e1 100644 --- a/packages/esbuild/CHANGELOG.md +++ b/packages/esbuild/CHANGELOG.md @@ -1,5 +1,23 @@ # @module-federation/esbuild +## 0.0.49 + +### Patch Changes + +- @module-federation/sdk@0.8.6 + +## 0.0.48 + +### Patch Changes + +- @module-federation/sdk@0.8.5 + +## 0.0.47 + +### Patch Changes + +- @module-federation/sdk@0.8.4 + ## 0.0.46 ### Patch Changes diff --git a/packages/esbuild/package.json b/packages/esbuild/package.json index df42a532841..268f60da35f 100644 --- a/packages/esbuild/package.json +++ b/packages/esbuild/package.json @@ -1,6 +1,6 @@ { "name": "@module-federation/esbuild", - "version": "0.0.46", + "version": "0.0.49", "author": "Zack Jackson (@ScriptedAlchemy)", "main": "./dist/index.cjs.js", "module": "./dist/index.esm.js", diff --git a/packages/managers/CHANGELOG.md b/packages/managers/CHANGELOG.md index f7a8456ed7e..ebe504892c7 100644 --- a/packages/managers/CHANGELOG.md +++ b/packages/managers/CHANGELOG.md @@ -1,5 +1,23 @@ # @module-federation/managers +## 0.8.6 + +### Patch Changes + +- @module-federation/sdk@0.8.6 + +## 0.8.5 + +### Patch Changes + +- @module-federation/sdk@0.8.5 + +## 0.8.4 + +### Patch Changes + +- @module-federation/sdk@0.8.4 + ## 0.8.3 ### Patch Changes diff --git a/packages/managers/package.json b/packages/managers/package.json index 43e520bab29..1c623bc19b7 100644 --- a/packages/managers/package.json +++ b/packages/managers/package.json @@ -1,6 +1,6 @@ { "name": "@module-federation/managers", - "version": "0.8.3", + "version": "0.8.6", "license": "MIT", "description": "Provide managers for helping handle mf data .", "keywords": [ diff --git a/packages/manifest/CHANGELOG.md b/packages/manifest/CHANGELOG.md index 3faddcf1039..09acd7380f8 100644 --- a/packages/manifest/CHANGELOG.md +++ b/packages/manifest/CHANGELOG.md @@ -1,5 +1,32 @@ # @module-federation/manifest +## 0.8.6 + +### Patch Changes + +- 4a2cf82: fix(manifest): add default exposes fields if set disableAssetsAnalyze: true +- Updated dependencies [c90bba2] + - @module-federation/dts-plugin@0.8.6 + - @module-federation/sdk@0.8.6 + - @module-federation/managers@0.8.6 + +## 0.8.5 + +### Patch Changes + +- @module-federation/sdk@0.8.5 +- @module-federation/managers@0.8.5 +- @module-federation/dts-plugin@0.8.5 + +## 0.8.4 + +### Patch Changes + +- Updated dependencies [5ea7aea] + - @module-federation/dts-plugin@0.8.4 + - @module-federation/sdk@0.8.4 + - @module-federation/managers@0.8.4 + ## 0.8.3 ### Patch Changes diff --git a/packages/manifest/package.json b/packages/manifest/package.json index bdc5ce32542..d775b39591e 100644 --- a/packages/manifest/package.json +++ b/packages/manifest/package.json @@ -1,6 +1,6 @@ { "name": "@module-federation/manifest", - "version": "0.8.3", + "version": "0.8.6", "license": "MIT", "description": "Provide manifest/stats for webpack/rspack MF project .", "keywords": [ diff --git a/packages/manifest/src/ModuleHandler.ts b/packages/manifest/src/ModuleHandler.ts index c58ff9dc8a1..00c08742a49 100644 --- a/packages/manifest/src/ModuleHandler.ts +++ b/packages/manifest/src/ModuleHandler.ts @@ -14,6 +14,37 @@ type ShareMap = { [sharedKey: string]: StatsShared }; type ExposeMap = { [exposeImportValue: string]: StatsExpose }; type RemotesConsumerMap = { [remoteKey: string]: StatsRemote }; +export function getExposeItem({ + exposeKey, + name, + file, +}: { + exposeKey: string; + name: string; + file: { import: string[] }; +}): StatsExpose { + const exposeModuleName = exposeKey.replace('./', ''); + + return { + path: exposeKey, + id: `${name}:${exposeModuleName}`, + name: exposeModuleName, + // @ts-ignore to deduplicate + requires: new Set(), + file: path.relative(process.cwd(), file.import[0]), + assets: { + js: { + async: [], + sync: [], + }, + css: { + async: [], + sync: [], + }, + }, + }; +} + class ModuleHandler { private _options: moduleFederationPlugin.ModuleFederationPluginOptions; private _bundler: 'webpack' | 'rspack' = 'webpack'; @@ -258,26 +289,12 @@ class ModuleHandler { const data = identifier.split(' '); JSON.parse(data[3]).forEach(([prefixedName, file]) => { - const exposeModuleName = prefixedName.replace('./', ''); // TODO: support multiple import - exposesMap[getFileNameWithOutExt(file.import[0])] = { - path: prefixedName, - id: `${this._options.name}:${exposeModuleName}`, - name: exposeModuleName, - // @ts-ignore to deduplicate - requires: new Set(), - file: path.relative(process.cwd(), file.import[0]), - assets: { - js: { - async: [], - sync: [], - }, - css: { - async: [], - sync: [], - }, - }, - }; + exposesMap[getFileNameWithOutExt(file.import[0])] = getExposeItem({ + exposeKey: prefixedName, + name: this._options.name!, + file, + }); }); } diff --git a/packages/manifest/src/StatsManager.ts b/packages/manifest/src/StatsManager.ts index 70b8eed14ca..873624a1e84 100644 --- a/packages/manifest/src/StatsManager.ts +++ b/packages/manifest/src/StatsManager.ts @@ -42,7 +42,7 @@ import { utils, } from '@module-federation/managers'; import { HOT_UPDATE_SUFFIX, PLUGIN_IDENTIFIER } from './constants'; -import { ModuleHandler } from './ModuleHandler'; +import { ModuleHandler, getExposeItem } from './ModuleHandler'; import { StatsInfo } from './types'; class StatsManager { @@ -300,7 +300,11 @@ class StatsManager { extraOptions?: {}, ): Promise { try { - const { name, manifest: manifestOptions = {} } = this._options; + const { + name, + manifest: manifestOptions = {}, + exposes = {}, + } = this._options; const metaData = this._getMetaData(compiler, compilation, extraOptions); @@ -320,6 +324,15 @@ class StatsManager { const remotes: StatsRemote[] = this._remoteManager.statsRemoteWithEmptyUsedIn; stats.remotes = remotes; + stats.exposes = Object.keys(exposes).map((exposeKey) => { + return getExposeItem({ + exposeKey, + name: name!, + file: { + import: exposes[exposeKey].import, + }, + }); + }); return stats; } diff --git a/packages/modernjs/CHANGELOG.md b/packages/modernjs/CHANGELOG.md index e19112908bf..63bd682c4b0 100644 --- a/packages/modernjs/CHANGELOG.md +++ b/packages/modernjs/CHANGELOG.md @@ -1,5 +1,31 @@ # @module-federation/modern-js +## 0.8.6 + +### Patch Changes + +- Updated dependencies [a1d46b7] + - @module-federation/rsbuild-plugin@0.8.6 + - @module-federation/enhanced@0.8.6 + - @module-federation/node@2.6.19 + - @module-federation/sdk@0.8.6 + +## 0.8.5 + +### Patch Changes + +- @module-federation/enhanced@0.8.5 +- @module-federation/sdk@0.8.5 +- @module-federation/node@2.6.18 + +## 0.8.4 + +### Patch Changes + +- @module-federation/enhanced@0.8.4 +- @module-federation/node@2.6.17 +- @module-federation/sdk@0.8.4 + ## 0.8.3 ### Patch Changes diff --git a/packages/modernjs/package.json b/packages/modernjs/package.json index f41434dee44..b3b9912f1ba 100644 --- a/packages/modernjs/package.json +++ b/packages/modernjs/package.json @@ -1,6 +1,6 @@ { "name": "@module-federation/modern-js", - "version": "0.8.3", + "version": "0.8.6", "files": [ "dist/", "types.d.ts", @@ -88,6 +88,7 @@ "license": "MIT", "dependencies": { "@modern-js/node-bundle-require": "2.60.6", + "@module-federation/rsbuild-plugin": "workspace:*", "@modern-js/utils": "2.60.6", "@module-federation/enhanced": "workspace:*", "@module-federation/node": "workspace:*", @@ -95,7 +96,7 @@ "@swc/helpers": "0.5.13", "hoist-non-react-statics": "3.3.2", "node-fetch": "~3.3.0", - "react-error-boundary": "4.0.13" + "react-error-boundary": "4.1.2" }, "devDependencies": { "@modern-js/app-tools": "2.60.6", diff --git a/packages/modernjs/src/cli/configPlugin.ts b/packages/modernjs/src/cli/configPlugin.ts index c0ee0dbd693..bc54580a0c3 100644 --- a/packages/modernjs/src/cli/configPlugin.ts +++ b/packages/modernjs/src/cli/configPlugin.ts @@ -72,7 +72,10 @@ export const moduleFederationConfigPlugin = ( const bundlerType = useAppContext().bundlerType === 'rspack' ? 'rspack' : 'webpack'; const ipv4 = getIPV4(); - const enableSSR = Boolean(modernjsConfig?.server?.ssr); + const enableSSR = + userConfig.userConfig?.ssr === false + ? false + : Boolean(modernjsConfig?.server?.ssr); if (userConfig.remoteIpStrategy === undefined) { if (!enableSSR) { diff --git a/packages/modernjs/src/cli/index.ts b/packages/modernjs/src/cli/index.ts index f7c9c958265..7701c3db4eb 100644 --- a/packages/modernjs/src/cli/index.ts +++ b/packages/modernjs/src/cli/index.ts @@ -21,6 +21,7 @@ export const moduleFederationPlugin = ( distOutputDir: '', originPluginOptions: userConfig, remoteIpStrategy: userConfig?.remoteIpStrategy, + userConfig, }; return { name: '@modern-js/plugin-module-federation', diff --git a/packages/modernjs/src/cli/ssrPlugin.ts b/packages/modernjs/src/cli/ssrPlugin.ts index 7da73ebebff..59a1aa8617c 100644 --- a/packages/modernjs/src/cli/ssrPlugin.ts +++ b/packages/modernjs/src/cli/ssrPlugin.ts @@ -15,7 +15,7 @@ export function setEnv() { } export const moduleFederationSSRPlugin = ( - userConfig: Required, + pluginOptions: Required, ): CliPlugin => ({ name: '@modern-js/plugin-module-federation-ssr', pre: [ @@ -25,7 +25,7 @@ export const moduleFederationSSRPlugin = ( setup: async ({ useConfigContext, useAppContext }) => { const modernjsConfig = useConfigContext(); const enableSSR = Boolean(modernjsConfig?.server?.ssr); - if (!enableSSR) { + if (!enableSSR || pluginOptions.userConfig?.ssr === false) { return {}; } @@ -50,32 +50,32 @@ export const moduleFederationSSRPlugin = ( // throw new Error( // `${PLUGIN_IDENTIFIER} Not support rspack ssr mode yet !`, // ); - if (!userConfig.nodePlugin) { - userConfig.nodePlugin = new RspackModuleFederationPlugin( - userConfig.ssrConfig, + if (!pluginOptions.nodePlugin) { + pluginOptions.nodePlugin = new RspackModuleFederationPlugin( + pluginOptions.ssrConfig, ); // @ts-ignore - config.plugins?.push(userConfig.nodePlugin); + config.plugins?.push(pluginOptions.nodePlugin); } } else { - userConfig.distOutputDir = - userConfig.distOutputDir || + pluginOptions.distOutputDir = + pluginOptions.distOutputDir || config.output?.path || path.resolve(process.cwd(), 'dist'); } }, webpack(config, { isServer }) { if (isServer) { - if (!userConfig.nodePlugin) { - userConfig.nodePlugin = new ModuleFederationPlugin( - userConfig.ssrConfig, + if (!pluginOptions.nodePlugin) { + pluginOptions.nodePlugin = new ModuleFederationPlugin( + pluginOptions.ssrConfig, ); // @ts-ignore - config.plugins?.push(userConfig.nodePlugin); + config.plugins?.push(pluginOptions.nodePlugin); } } else { - userConfig.distOutputDir = - userConfig.distOutputDir || + pluginOptions.distOutputDir = + pluginOptions.distOutputDir || config.output?.path || path.resolve(process.cwd(), 'dist'); } @@ -133,11 +133,11 @@ export const moduleFederationSSRPlugin = ( }; }, afterBuild: () => { - const { nodePlugin, browserPlugin, distOutputDir } = userConfig; + const { nodePlugin, browserPlugin, distOutputDir } = pluginOptions; updateStatsAndManifest(nodePlugin, browserPlugin, distOutputDir); }, afterDev: () => { - const { nodePlugin, browserPlugin, distOutputDir } = userConfig; + const { nodePlugin, browserPlugin, distOutputDir } = pluginOptions; updateStatsAndManifest(nodePlugin, browserPlugin, distOutputDir); }, }; diff --git a/packages/modernjs/src/cli/utils.ts b/packages/modernjs/src/cli/utils.ts index 3409f1b00b7..5279a3233a0 100644 --- a/packages/modernjs/src/cli/utils.ts +++ b/packages/modernjs/src/cli/utils.ts @@ -5,6 +5,7 @@ import { bundle } from '@modern-js/node-bundle-require'; import { PluginOptions } from '../types'; import { LOCALHOST, PLUGIN_IDENTIFIER } from '../constant'; import logger from './logger'; +import { autoDeleteSplitChunkCacheGroups } from '@module-federation/rsbuild-plugin/utils'; import type { BundlerConfig, BundlerChainConfig } from '../interfaces/bundler'; import type { @@ -301,6 +302,7 @@ export function patchBundlerConfig(options: { } if (!isServer) { + // @ts-ignore autoDeleteSplitChunkCacheGroups(mfConfig, bundlerConfig); } @@ -419,31 +421,3 @@ const SHARED_SPLIT_CHUNK_MAP = { '@douyinfe/semi-ui': SPLIT_CHUNK_MAP.SEMI, axios: SPLIT_CHUNK_MAP.AXIOS, }; - -function autoDeleteSplitChunkCacheGroups( - mfConfig: moduleFederationPlugin.ModuleFederationPluginOptions, - bundlerConfig: BundlerConfig, -) { - if (!mfConfig.shared) { - return; - } - if ( - !bundlerConfig.optimization?.splitChunks || - !bundlerConfig.optimization.splitChunks.cacheGroups - ) { - return; - } - const arrayShared = Array.isArray(mfConfig.shared) - ? mfConfig.shared - : Object.keys(mfConfig.shared); - for (const shared of arrayShared) { - const splitChunkKey = - SHARED_SPLIT_CHUNK_MAP[shared as keyof typeof SHARED_SPLIT_CHUNK_MAP]; - if (!splitChunkKey) { - continue; - } - if (bundlerConfig.optimization.splitChunks.cacheGroups[splitChunkKey]) { - delete bundlerConfig.optimization.splitChunks.cacheGroups[splitChunkKey]; - } - } -} diff --git a/packages/modernjs/src/types/index.ts b/packages/modernjs/src/types/index.ts index b30fefa1b2b..b2830b54cd0 100644 --- a/packages/modernjs/src/types/index.ts +++ b/packages/modernjs/src/types/index.ts @@ -5,6 +5,7 @@ import type { ModuleFederationPlugin as RspackModuleFederationPlugin } from '@mo export interface PluginOptions { config?: moduleFederationPlugin.ModuleFederationPluginOptions; configPath?: string; + ssr?: false; remoteIpStrategy?: 'ipv4' | 'inherit'; } @@ -16,7 +17,9 @@ export interface InternalModernPluginOptions { browserPlugin?: BundlerPlugin; nodePlugin?: BundlerPlugin; remoteIpStrategy?: 'ipv4' | 'inherit'; + userConfig?: PluginOptions; } + export type BundlerPlugin = | WebpackModuleFederationPlugin | RspackModuleFederationPlugin; diff --git a/packages/nextjs-mf/CHANGELOG.md b/packages/nextjs-mf/CHANGELOG.md index 0fa2ff677e2..41483428159 100644 --- a/packages/nextjs-mf/CHANGELOG.md +++ b/packages/nextjs-mf/CHANGELOG.md @@ -1,5 +1,35 @@ # @module-federation/nextjs-mf +## 8.8.9 + +### Patch Changes + +- @module-federation/enhanced@0.8.6 +- @module-federation/node@2.6.19 +- @module-federation/runtime@0.8.6 +- @module-federation/webpack-bundler-runtime@0.8.6 +- @module-federation/sdk@0.8.6 + +## 8.8.8 + +### Patch Changes + +- @module-federation/runtime@0.8.5 +- @module-federation/enhanced@0.8.5 +- @module-federation/webpack-bundler-runtime@0.8.5 +- @module-federation/sdk@0.8.5 +- @module-federation/node@2.6.18 + +## 8.8.7 + +### Patch Changes + +- @module-federation/enhanced@0.8.4 +- @module-federation/node@2.6.17 +- @module-federation/runtime@0.8.4 +- @module-federation/webpack-bundler-runtime@0.8.4 +- @module-federation/sdk@0.8.4 + ## 8.8.6 ### Patch Changes diff --git a/packages/nextjs-mf/package.json b/packages/nextjs-mf/package.json index d3a8dd21bfe..f2663d113b5 100644 --- a/packages/nextjs-mf/package.json +++ b/packages/nextjs-mf/package.json @@ -1,6 +1,6 @@ { "name": "@module-federation/nextjs-mf", - "version": "8.8.6", + "version": "8.8.9", "license": "MIT", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", diff --git a/packages/node/CHANGELOG.md b/packages/node/CHANGELOG.md index 408dd4c8a46..1717aa1229b 100644 --- a/packages/node/CHANGELOG.md +++ b/packages/node/CHANGELOG.md @@ -1,5 +1,32 @@ # @module-federation/node +## 2.6.19 + +### Patch Changes + +- @module-federation/enhanced@0.8.6 +- @module-federation/runtime@0.8.6 +- @module-federation/sdk@0.8.6 +- @module-federation/utilities@3.1.37 + +## 2.6.18 + +### Patch Changes + +- @module-federation/runtime@0.8.5 +- @module-federation/enhanced@0.8.5 +- @module-federation/sdk@0.8.5 +- @module-federation/utilities@3.1.36 + +## 2.6.17 + +### Patch Changes + +- @module-federation/enhanced@0.8.4 +- @module-federation/runtime@0.8.4 +- @module-federation/sdk@0.8.4 +- @module-federation/utilities@3.1.35 + ## 2.6.16 ### Patch Changes diff --git a/packages/node/package.json b/packages/node/package.json index 52649a03c0f..54c5699944d 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,7 +1,7 @@ { "public": true, "name": "@module-federation/node", - "version": "2.6.16", + "version": "2.6.19", "type": "commonjs", "main": "./dist/src/index.js", "exports": { diff --git a/packages/retry-plugin/CHANGELOG.md b/packages/retry-plugin/CHANGELOG.md index 764b92c75a2..59431a14d9c 100644 --- a/packages/retry-plugin/CHANGELOG.md +++ b/packages/retry-plugin/CHANGELOG.md @@ -1,5 +1,24 @@ # @module-federation/retry-plugin +## 0.8.6 + +### Patch Changes + +- @module-federation/sdk@0.8.6 + +## 0.8.5 + +### Patch Changes + +- 7f7bc9b: Allow fallback function to receive the failed URL in order to build the fallback URL. + - @module-federation/sdk@0.8.5 + +## 0.8.4 + +### Patch Changes + +- @module-federation/sdk@0.8.4 + ## 0.8.3 ### Patch Changes diff --git a/packages/retry-plugin/__tests__/retry.spec.ts b/packages/retry-plugin/__tests__/retry.spec.ts index 126c33459e5..f6383315275 100644 --- a/packages/retry-plugin/__tests__/retry.spec.ts +++ b/packages/retry-plugin/__tests__/retry.spec.ts @@ -118,6 +118,24 @@ describe('fetchWithRetry', () => { expect(fetch).toHaveBeenLastCalledWith('https://fallback.com', {}); }); + it('should build fallback URL from remote after retries fail', async () => { + mockErrorFetch(); + const retryTimes = 3; + const responsePromise = fetchWithRetry({ + url: 'https://example.com', + retryTimes, + retryDelay: 0, + fallback: (url) => `${url}/fallback`, + }); + vi.advanceTimersByTime(2000 * retryTimes); + + await expect(responsePromise).rejects.toThrow( + 'The request failed three times and has now been abandoned', + ); + expect(fetch).toHaveBeenCalledTimes(5); //first fetch + retryTimes fetch + expect(fetch).toHaveBeenLastCalledWith('https://example.com/fallback', {}); + }); + it('should handle JSON parse error', async () => { const mockFetch = vi.fn().mockResolvedValueOnce({ ok: true, diff --git a/packages/retry-plugin/package.json b/packages/retry-plugin/package.json index 2eb8ff608f5..e4fbd4022fc 100644 --- a/packages/retry-plugin/package.json +++ b/packages/retry-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@module-federation/retry-plugin", - "version": "0.8.3", + "version": "0.8.6", "author": "danpeen ", "main": "./dist/index.js", "module": "./dist/esm/index.js", diff --git a/packages/retry-plugin/src/fetch-retry.ts b/packages/retry-plugin/src/fetch-retry.ts index 40547d08e7c..78c8cf85e8a 100644 --- a/packages/retry-plugin/src/fetch-retry.ts +++ b/packages/retry-plugin/src/fetch-retry.ts @@ -33,7 +33,7 @@ async function fetchWithRetry({ } catch (error) { if (retryTimes <= 0) { logger.log( - `[ Module Federation RetryPlugin ]: retry failed after ${retryTimes} times for url: ${url}, now will try fallbackUrl url`, + `${PLUGIN_IDENTIFIER}: retry failed after ${retryTimes} times for url: ${url}, now will try fallbackUrl url`, ); if (fallback && typeof fallback === 'function') { diff --git a/packages/retry-plugin/src/util.ts b/packages/retry-plugin/src/util.ts index 5768177fef3..b47a906c383 100644 --- a/packages/retry-plugin/src/util.ts +++ b/packages/retry-plugin/src/util.ts @@ -1,4 +1,8 @@ -import { defaultRetries, defaultRetryDelay } from './constant'; +import { + defaultRetries, + defaultRetryDelay, + PLUGIN_IDENTIFIER, +} from './constant'; import type { ScriptCommonRetryOption } from './types'; import logger from './logger'; @@ -22,7 +26,7 @@ export function scriptCommonRetry void>({ let attempts = 0; while (attempts - 1 < retryTimes) { try { - beforeExecuteRetry && beforeExecuteRetry(); + beforeExecuteRetry(); retryResponse = await retryFn(...args); break; } catch (error) { @@ -36,7 +40,7 @@ export function scriptCommonRetry void>({ throw error; } logger.log( - `[ Module Federation RetryPlugin ]: script resource retrying ${attempts} times`, + `${PLUGIN_IDENTIFIER}: script resource retrying ${attempts} times`, ); await new Promise((resolve) => setTimeout(resolve, retryDelay)); } diff --git a/packages/rsbuild-plugin/CHANGELOG.md b/packages/rsbuild-plugin/CHANGELOG.md index 55a6e26d7fc..da8690393f9 100644 --- a/packages/rsbuild-plugin/CHANGELOG.md +++ b/packages/rsbuild-plugin/CHANGELOG.md @@ -1,5 +1,27 @@ # @module-federation/rsbuild-plugin +## 0.8.6 + +### Patch Changes + +- a1d46b7: chore(rsbuild-plugin): split setUp function to help extend + - @module-federation/enhanced@0.8.6 + - @module-federation/sdk@0.8.6 + +## 0.8.5 + +### Patch Changes + +- @module-federation/enhanced@0.8.5 +- @module-federation/sdk@0.8.5 + +## 0.8.4 + +### Patch Changes + +- @module-federation/enhanced@0.8.4 +- @module-federation/sdk@0.8.4 + ## 0.8.3 ### Patch Changes diff --git a/packages/rsbuild-plugin/package.json b/packages/rsbuild-plugin/package.json index b19f74ab5b7..cb7331fbd41 100644 --- a/packages/rsbuild-plugin/package.json +++ b/packages/rsbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@module-federation/rsbuild-plugin", - "version": "0.8.3", + "version": "0.8.6", "description": "Module Federation plugin for Rsbuild", "homepage": "https://module-federation.io", "bugs": { @@ -14,9 +14,14 @@ "license": "MIT", "exports": { ".": { + "types": "./dist/index.cjs.d.ts", "import": "./dist/index.esm.js", - "require": "./dist/index.cjs.js", - "types": "./dist/index.cjs.d.ts" + "require": "./dist/index.cjs.js" + }, + "./utils": { + "types": "./dist/utils.cjs.d.ts", + "import": "./dist/utils.esm.js", + "require": "./dist/utils.cjs.js" } }, "main": "./dist/index.cjs.js", @@ -25,6 +30,9 @@ "*": { ".": [ "./dist/index.cjs.d.ts" + ], + "utils": [ + "./dist/utils.cjs.d.ts" ] } }, @@ -41,6 +49,14 @@ "@module-federation/enhanced": "workspace:*", "@rsbuild/core": "1.x" }, + "peerDependenciesMeta": { + "@rsbuild/core": { + "optional": true + }, + "@module-federation/enhanced": { + "optional": true + } + }, "engines": { "node": ">=16.0.0" }, diff --git a/packages/rsbuild-plugin/rollup.config.js b/packages/rsbuild-plugin/rollup.config.js index 55a064559b4..f5b204786dc 100644 --- a/packages/rsbuild-plugin/rollup.config.js +++ b/packages/rsbuild-plugin/rollup.config.js @@ -13,6 +13,7 @@ module.exports = (rollupConfig, _projectOptions) => { ); rollupConfig.input = { index: 'packages/rsbuild-plugin/src/cli/index.ts', + utils: 'packages/rsbuild-plugin/src/utils/index.ts', }; return rollupConfig; }; diff --git a/packages/rsbuild-plugin/src/cli/index.ts b/packages/rsbuild-plugin/src/cli/index.ts index 8c4ec2393bd..84d0be0909f 100644 --- a/packages/rsbuild-plugin/src/cli/index.ts +++ b/packages/rsbuild-plugin/src/cli/index.ts @@ -1,25 +1,50 @@ import { parseOptions } from '@module-federation/enhanced'; -import { ModuleFederationPlugin } from '@module-federation/enhanced/rspack'; +import { + ModuleFederationPlugin, + PLUGIN_NAME, +} from '@module-federation/enhanced/rspack'; import { isRequiredVersion } from '@module-federation/sdk'; -import { isRegExp } from '../utils/index'; +import { isRegExp, autoDeleteSplitChunkCacheGroups } from '../utils/index'; import pkgJson from '../../package.json'; import type { moduleFederationPlugin, sharePlugin, } from '@module-federation/sdk'; -import type { RsbuildPlugin, EnvironmentConfig } from '@rsbuild/core'; +import type { RsbuildPlugin, Rspack } from '@rsbuild/core'; import logger from '../logger'; type ModuleFederationOptions = moduleFederationPlugin.ModuleFederationPluginOptions; -const PLUGIN_MODULE_FEDERATION_NAME = 'rsbuild:module-federation-enhanced'; +const RSBUILD_PLUGIN_MODULE_FEDERATION_NAME = + 'rsbuild:module-federation-enhanced'; +const RSPACK_PLUGIN_MODULE_FEDERATION_NAME = 'module-federation'; + +export { + RSBUILD_PLUGIN_MODULE_FEDERATION_NAME, + RSPACK_PLUGIN_MODULE_FEDERATION_NAME, + PLUGIN_NAME, +}; + +const LIB_FORMAT = ['commonjs', 'umd', 'modern-module']; + +export function isMFFormat(bundlerConfig: Rspack.Configuration) { + const library = bundlerConfig.output?.library; + + return !( + typeof library === 'object' && + !Array.isArray(library) && + 'type' in library && + LIB_FORMAT.includes(library.type) + ); +} + export const pluginModuleFederation = ( moduleFederationOptions: ModuleFederationOptions, ): RsbuildPlugin => ({ - name: PLUGIN_MODULE_FEDERATION_NAME, + name: RSBUILD_PLUGIN_MODULE_FEDERATION_NAME, setup: (api) => { const sharedOptions: [string, sharePlugin.SharedConfig][] = parseOptions( moduleFederationOptions.shared || [], @@ -44,6 +69,90 @@ export const pluginModuleFederation = ( shared[0].endsWith('/') ? shared[0].slice(0, -1) : shared[0], ); + api.onBeforeCreateCompiler(({ bundlerConfigs }) => { + if (!bundlerConfigs) { + throw new Error('Can not get bundlerConfigs!'); + } + bundlerConfigs.forEach((bundlerConfig) => { + if (!isMFFormat(bundlerConfig)) { + return; + } else { + // mf + autoDeleteSplitChunkCacheGroups( + moduleFederationOptions, + bundlerConfig, + ); + + const externals = bundlerConfig.externals; + if (Array.isArray(externals)) { + const sharedModules = new Set(); + bundlerConfig.externals = externals.filter((ext) => { + let sharedModule; + if (isRegExp(ext)) { + const match = shared.some((dep) => { + if ( + (ext as RegExp).test(dep) || + (ext as RegExp).test(pkgJson.name) + ) { + sharedModule = dep; + return true; + } + return false; + }); + + match && sharedModule && sharedModules.add(sharedModule); + return !match; + } + + if (typeof ext === 'string') { + if (ext === pkgJson.name) { + return false; + } + + const match = shared.some((dep) => { + if (dep === ext) { + sharedModule = dep; + } + return dep === ext; + }); + if (match) { + sharedModule && sharedModules.add(sharedModule); + return false; + } + return true; + } + return true; + }); + if (sharedModules.size > 0) { + for (const sharedModule of sharedModules) { + logger.log( + `${sharedModule} is removed from externals because it is a shared module.`, + ); + } + } + } + + if (!bundlerConfig.output?.chunkLoadingGlobal) { + bundlerConfig.output!.chunkLoading = 'jsonp'; + } + + // `uniqueName` is required for react refresh to work + if (!bundlerConfig.output?.uniqueName) { + bundlerConfig.output!.uniqueName = moduleFederationOptions.name; + } + + if ( + !bundlerConfig.plugins!.find((p) => p && p.name === PLUGIN_NAME) + ) { + bundlerConfig.plugins!.push( + new ModuleFederationPlugin(moduleFederationOptions), + ); + } + } + }); + }); + + // dev config only works on format: 'mf' api.modifyRsbuildConfig((config) => { // Change some default configs for remote modules if (moduleFederationOptions.exposes) { @@ -68,19 +177,7 @@ export const pluginModuleFederation = ( } }); - api.modifyEnvironmentConfig((config, { mergeEnvironmentConfig }) => { - /** - * Currently, splitChunks will take precedence over module federation shared modules. - * So we need to disable the default split chunks rules to make shared modules to work properly. - * @see https://github.com/module-federation/module-federation-examples/issues/3161 - */ - if (config.performance?.chunkSplit?.strategy === 'split-by-experience') { - config.performance.chunkSplit = { - ...config.performance.chunkSplit, - strategy: 'custom', - }; - } - + api.modifyEnvironmentConfig((config) => { // Module Federation runtime uses ES6+ syntax, // adding to include and let SWC transform it config.source.include = [ @@ -89,77 +186,7 @@ export const pluginModuleFederation = ( /@module-federation[\\/]runtime/, ]; - // filter external with shared config, - const externals = config.output.externals; - if (Array.isArray(externals)) { - const sharedModules = new Set(); - config.output.externals = externals.filter((ext) => { - let sharedModule; - if (isRegExp(ext)) { - const match = shared.some((dep) => { - if ( - (ext as RegExp).test(dep) || - (ext as RegExp).test(pkgJson.name) - ) { - sharedModule = dep; - return true; - } - return false; - }); - - match && sharedModule && sharedModules.add(sharedModule); - return !match; - } - - if (typeof ext === 'string') { - if (ext === pkgJson.name) { - return false; - } - - const match = shared.some((dep) => { - if (dep === ext) { - sharedModule = dep; - } - return dep === ext; - }); - if (match) { - sharedModule && sharedModules.add(sharedModule); - return false; - } - return true; - } - return true; - }); - if (sharedModules.size > 0) { - for (const sharedModule of sharedModules) { - logger.log( - `${sharedModule} is removed from externals because it is a shared module.`, - ); - } - } - } - - const mfConfig: EnvironmentConfig = { - tools: { - rspack: { - output: { - chunkLoading: 'jsonp', - }, - }, - }, - }; - return mergeEnvironmentConfig(config, mfConfig); - }); - - api.modifyBundlerChain(async (chain) => { - chain - .plugin('module-federation') - .use(ModuleFederationPlugin, [moduleFederationOptions]); - - // `uniqueName` is required for react refresh to work - if (!chain.output.get('uniqueName')) { - chain.output.set('uniqueName', moduleFederationOptions.name); - } + return config; }); }, }); diff --git a/packages/rsbuild-plugin/src/utils/autoDeleteSplitChunkCacheGroups.ts b/packages/rsbuild-plugin/src/utils/autoDeleteSplitChunkCacheGroups.ts new file mode 100644 index 00000000000..6d95e1024ec --- /dev/null +++ b/packages/rsbuild-plugin/src/utils/autoDeleteSplitChunkCacheGroups.ts @@ -0,0 +1,62 @@ +import type { moduleFederationPlugin } from '@module-federation/sdk'; +import type { Rspack } from '@rsbuild/core'; + +// lib-polyfill.js: include core-js,@babel/runtime,@swc/helpers,tslib. +// lib-react.js: include react,react-dom. +// lib-router.js: include react-router,react-router-dom,history,@remix-run/router. +// lib-lodash.js: include lodash,lodash-es. +// lib-antd.js: include antd. +// lib-arco.js: include @arco-design/web-react. +// lib-semi.js: include @douyinfe/semi-ui. +// lib-axios.js: include axios. + +const SPLIT_CHUNK_MAP = { + REACT: 'react', + ROUTER: 'router', + LODASH: 'lib-lodash', + ANTD: 'lib-antd', + ARCO: 'lib-arco', + SEMI: 'lib-semi', + AXIOS: 'lib-axios', +}; +const SHARED_SPLIT_CHUNK_MAP = { + react: SPLIT_CHUNK_MAP.REACT, + 'react-dom': SPLIT_CHUNK_MAP.REACT, + 'react-router': SPLIT_CHUNK_MAP.ROUTER, + 'react-router-dom': SPLIT_CHUNK_MAP.ROUTER, + '@remix-run/router': SPLIT_CHUNK_MAP.ROUTER, + lodash: SPLIT_CHUNK_MAP.LODASH, + 'lodash-es': SPLIT_CHUNK_MAP.LODASH, + antd: SPLIT_CHUNK_MAP.ANTD, + '@arco-design/web-react': SPLIT_CHUNK_MAP.ARCO, + '@douyinfe/semi-ui': SPLIT_CHUNK_MAP.SEMI, + axios: SPLIT_CHUNK_MAP.AXIOS, +}; + +export function autoDeleteSplitChunkCacheGroups( + mfConfig: moduleFederationPlugin.ModuleFederationPluginOptions, + bundlerConfig: Rspack.Configuration, +) { + if (!mfConfig.shared) { + return; + } + if ( + !bundlerConfig.optimization?.splitChunks || + !bundlerConfig.optimization.splitChunks.cacheGroups + ) { + return; + } + const arrayShared = Array.isArray(mfConfig.shared) + ? mfConfig.shared + : Object.keys(mfConfig.shared); + for (const shared of arrayShared) { + const splitChunkKey = + SHARED_SPLIT_CHUNK_MAP[shared as keyof typeof SHARED_SPLIT_CHUNK_MAP]; + if (!splitChunkKey) { + continue; + } + if (bundlerConfig.optimization.splitChunks.cacheGroups[splitChunkKey]) { + delete bundlerConfig.optimization.splitChunks.cacheGroups[splitChunkKey]; + } + } +} diff --git a/packages/rsbuild-plugin/src/utils/index.ts b/packages/rsbuild-plugin/src/utils/index.ts index fcf940ac8e2..3e81ef74797 100644 --- a/packages/rsbuild-plugin/src/utils/index.ts +++ b/packages/rsbuild-plugin/src/utils/index.ts @@ -5,3 +5,4 @@ export function isRegExp(target: any) { } export * from './constant'; +export * from './autoDeleteSplitChunkCacheGroups'; diff --git a/packages/rspack/CHANGELOG.md b/packages/rspack/CHANGELOG.md index ebab4658414..dd62413475f 100644 --- a/packages/rspack/CHANGELOG.md +++ b/packages/rspack/CHANGELOG.md @@ -1,5 +1,42 @@ # @module-federation/rspack +## 0.8.6 + +### Patch Changes + +- Updated dependencies [c90bba2] +- Updated dependencies [4a2cf82] + - @module-federation/dts-plugin@0.8.6 + - @module-federation/manifest@0.8.6 + - @module-federation/sdk@0.8.6 + - @module-federation/runtime-tools@0.8.6 + - @module-federation/managers@0.8.6 + - @module-federation/bridge-react-webpack-plugin@0.8.6 + +## 0.8.5 + +### Patch Changes + +- @module-federation/sdk@0.8.5 +- @module-federation/runtime-tools@0.8.5 +- @module-federation/managers@0.8.5 +- @module-federation/manifest@0.8.5 +- @module-federation/dts-plugin@0.8.5 +- @module-federation/bridge-react-webpack-plugin@0.8.5 + +## 0.8.4 + +### Patch Changes + +- 61625d4: fix(rspack): import plugin from sub path +- Updated dependencies [5ea7aea] + - @module-federation/dts-plugin@0.8.4 + - @module-federation/manifest@0.8.4 + - @module-federation/sdk@0.8.4 + - @module-federation/runtime-tools@0.8.4 + - @module-federation/managers@0.8.4 + - @module-federation/bridge-react-webpack-plugin@0.8.4 + ## 0.8.3 ### Patch Changes diff --git a/packages/rspack/package.json b/packages/rspack/package.json index 09bd7cb0f4f..c47cf6237e1 100644 --- a/packages/rspack/package.json +++ b/packages/rspack/package.json @@ -1,6 +1,6 @@ { "name": "@module-federation/rspack", - "version": "0.8.3", + "version": "0.8.6", "license": "MIT", "keywords": [ "Module Federation", diff --git a/packages/rspack/src/ModuleFederationPlugin.ts b/packages/rspack/src/ModuleFederationPlugin.ts index b8344efd6c9..af6efa1c37f 100644 --- a/packages/rspack/src/ModuleFederationPlugin.ts +++ b/packages/rspack/src/ModuleFederationPlugin.ts @@ -25,8 +25,9 @@ declare const __VERSION__: string; const RuntimeToolsPath = require.resolve('@module-federation/runtime-tools'); +export const PLUGIN_NAME = 'RspackModuleFederationPlugin'; export class ModuleFederationPlugin implements RspackPluginInstance { - readonly name = 'RspackModuleFederationPlugin'; + readonly name = PLUGIN_NAME; private _options: moduleFederationPlugin.ModuleFederationPluginOptions; private _statsPlugin?: StatsPlugin; diff --git a/packages/rspack/src/index.ts b/packages/rspack/src/index.ts index a488f9e47ac..d9b772f79a8 100644 --- a/packages/rspack/src/index.ts +++ b/packages/rspack/src/index.ts @@ -1,4 +1,4 @@ -export { ModuleFederationPlugin } from './ModuleFederationPlugin'; +export { ModuleFederationPlugin, PLUGIN_NAME } from './ModuleFederationPlugin'; import { container } from '@rspack/core'; export const ContainerPlugin = container.ContainerPlugin; export const ContainerReferencePlugin = container.ContainerReferencePlugin; diff --git a/packages/runtime-tools/CHANGELOG.md b/packages/runtime-tools/CHANGELOG.md index 4d26cbbbf7a..1bf6949748c 100644 --- a/packages/runtime-tools/CHANGELOG.md +++ b/packages/runtime-tools/CHANGELOG.md @@ -1,5 +1,26 @@ # @module-federation/runtime-tools +## 0.8.6 + +### Patch Changes + +- @module-federation/runtime@0.8.6 +- @module-federation/webpack-bundler-runtime@0.8.6 + +## 0.8.5 + +### Patch Changes + +- @module-federation/runtime@0.8.5 +- @module-federation/webpack-bundler-runtime@0.8.5 + +## 0.8.4 + +### Patch Changes + +- @module-federation/runtime@0.8.4 +- @module-federation/webpack-bundler-runtime@0.8.4 + ## 0.8.3 ### Patch Changes diff --git a/packages/runtime-tools/package.json b/packages/runtime-tools/package.json index 3fa8d9e2ba2..62815076dd6 100644 --- a/packages/runtime-tools/package.json +++ b/packages/runtime-tools/package.json @@ -1,6 +1,6 @@ { "name": "@module-federation/runtime-tools", - "version": "0.8.3", + "version": "0.8.6", "author": "zhanghang ", "main": "./dist/index.cjs", "module": "./dist/index.esm.mjs", diff --git a/packages/runtime/CHANGELOG.md b/packages/runtime/CHANGELOG.md index 5ef5213af61..6d129756f02 100644 --- a/packages/runtime/CHANGELOG.md +++ b/packages/runtime/CHANGELOG.md @@ -1,5 +1,26 @@ # @module-federation/runtime +## 0.8.6 + +### Patch Changes + +- @module-federation/sdk@0.8.6 +- @module-federation/error-codes@0.8.6 + +## 0.8.5 + +### Patch Changes + +- @module-federation/sdk@0.8.5 +- @module-federation/error-codes@0.8.5 + +## 0.8.4 + +### Patch Changes + +- @module-federation/sdk@0.8.4 +- @module-federation/error-codes@0.8.4 + ## 0.8.3 ### Patch Changes diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 36ca4795062..31ee4fe7e13 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@module-federation/runtime", - "version": "0.8.3", + "version": "0.8.6", "author": "zhouxiao ", "main": "./dist/index.cjs.js", "module": "./dist/index.esm.mjs", diff --git a/packages/runtime/src/utils/load.ts b/packages/runtime/src/utils/load.ts index 78e738e6eab..f26b74a5c9b 100644 --- a/packages/runtime/src/utils/load.ts +++ b/packages/runtime/src/utils/load.ts @@ -11,6 +11,7 @@ import { Remote, RemoteEntryExports, RemoteInfo } from '../type'; import { assert } from './logger'; import { RUNTIME_001, + RUNTIME_008, getShortErrorMsg, runtimeDescMap, } from '@module-federation/error-codes'; @@ -129,6 +130,13 @@ async function loadEntryScript({ return entryExports; }) .catch((e) => { + assert( + undefined, + getShortErrorMsg(RUNTIME_008, runtimeDescMap, { + remoteName: name, + resourceUrl: entry, + }), + ); throw e; }); } diff --git a/packages/sdk/CHANGELOG.md b/packages/sdk/CHANGELOG.md index 03d5b12e983..9680b8fe3db 100644 --- a/packages/sdk/CHANGELOG.md +++ b/packages/sdk/CHANGELOG.md @@ -1,5 +1,11 @@ # @module-federation/sdk +## 0.8.6 + +## 0.8.5 + +## 0.8.4 + ## 0.8.3 ### Patch Changes diff --git a/packages/sdk/__tests__/dom.spec.ts b/packages/sdk/__tests__/dom.spec.ts index 449e2bff83f..729991f75e8 100644 --- a/packages/sdk/__tests__/dom.spec.ts +++ b/packages/sdk/__tests__/dom.spec.ts @@ -252,9 +252,11 @@ describe('createLink', () => { it('should call the callback when the link fails to load', () => { const url = 'https://example.com/script.js'; const cb = jest.fn(); + const onErrorCallback = jest.fn(); const { link, needAttach } = createLink({ url, cb, + onErrorCallback, attrs: { as: 'script' }, }); @@ -262,8 +264,7 @@ describe('createLink', () => { document.head.appendChild(link); } link?.onerror?.(new Event('error')); - - expect(cb).toHaveBeenCalled(); + expect(onErrorCallback).toHaveBeenCalled(); }); it('should use the link element returned by createLinkHook', () => { diff --git a/packages/sdk/package.json b/packages/sdk/package.json index d0c2a3d40ff..7312f037b06 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@module-federation/sdk", - "version": "0.8.3", + "version": "0.8.6", "license": "MIT", "description": "A sdk for support module federation", "keywords": [ @@ -47,6 +47,6 @@ } }, "dependencies": { - "isomorphic-rslog": "0.0.6" + "isomorphic-rslog": "0.0.7" } } diff --git a/packages/sdk/src/dom.ts b/packages/sdk/src/dom.ts index d1c4c4ae231..8a3c7ad43f8 100644 --- a/packages/sdk/src/dom.ts +++ b/packages/sdk/src/dom.ts @@ -26,6 +26,7 @@ export function isStaticResourcesEqual(url1: string, url2: string): boolean { export function createScript(info: { url: string; cb?: (value: void | PromiseLike) => void; + onErrorCallback?: (error: Error) => void; attrs?: Record; needDeleteScript?: boolean; createScriptHook?: CreateScriptHookDom; @@ -36,6 +37,7 @@ export function createScript(info: { let timeout = 20000; let timeoutId: NodeJS.Timeout; const scripts = document.getElementsByTagName('script'); + for (let i = 0; i < scripts.length; i++) { const s = scripts[i]; const scriptSrc = s.getAttribute('src'); @@ -88,6 +90,14 @@ export function createScript(info: { event: any, ): Promise => { clearTimeout(timeoutId); + const onScriptCompleteCallback = () => { + if (event?.type === 'error') { + info?.onErrorCallback && info?.onErrorCallback(event); + } else { + info?.cb && info?.cb(); + } + }; + // Prevent memory leaks in IE. if (script) { script.onerror = null; @@ -102,14 +112,14 @@ export function createScript(info: { const result = (prev as any)(event); if (result instanceof Promise) { const res = await result; - info?.cb?.(); + onScriptCompleteCallback(); return res; } - info?.cb?.(); + onScriptCompleteCallback(); return result; } } - info?.cb?.(); + onScriptCompleteCallback(); }; script.onerror = onScriptComplete.bind(null, script.onerror); @@ -127,7 +137,8 @@ export function createScript(info: { export function createLink(info: { url: string; - cb: (value: void | PromiseLike) => void; + cb?: (value: void | PromiseLike) => void; + onErrorCallback?: (error: Error) => void; attrs: Record; needDeleteLink?: boolean; createLinkHook?: ( @@ -184,6 +195,13 @@ export function createLink(info: { // eslint-disable-next-line @typescript-eslint/no-explicit-any event: any, ): void => { + const onLinkCompleteCallback = () => { + if (event?.type === 'error') { + info?.onErrorCallback && info?.onErrorCallback(event); + } else { + info?.cb && info?.cb(); + } + }; // Prevent memory leaks in IE. if (link) { link.onerror = null; @@ -197,11 +215,11 @@ export function createLink(info: { if (prev) { // eslint-disable-next-line @typescript-eslint/no-explicit-any const res = (prev as any)(event); - info.cb(); + onLinkCompleteCallback(); return res; } } - info.cb(); + onLinkCompleteCallback(); }; link.onerror = onLinkComplete.bind(null, link.onerror); @@ -218,10 +236,11 @@ export function loadScript( }, ) { const { attrs = {}, createScriptHook } = info; - return new Promise((resolve, _reject) => { + return new Promise((resolve, reject) => { const { script, needAttach } = createScript({ url, cb: resolve, + onErrorCallback: reject, attrs: { fetchpriority: 'high', ...attrs, diff --git a/packages/sdk/src/types/plugins/ModuleFederationPlugin.ts b/packages/sdk/src/types/plugins/ModuleFederationPlugin.ts index fd7b5e040c7..074ab98329a 100644 --- a/packages/sdk/src/types/plugins/ModuleFederationPlugin.ts +++ b/packages/sdk/src/types/plugins/ModuleFederationPlugin.ts @@ -229,7 +229,6 @@ export interface ModuleFederationPluginOptions { implementation?: string; manifest?: boolean | PluginManifestOptions; - dev?: boolean | PluginDevOptions; dts?: boolean | PluginDtsOptions; async?: boolean | AsyncBoundaryOptions; diff --git a/packages/storybook-addon/CHANGELOG.md b/packages/storybook-addon/CHANGELOG.md index 852f0a9e73a..71a9d67a677 100644 --- a/packages/storybook-addon/CHANGELOG.md +++ b/packages/storybook-addon/CHANGELOG.md @@ -1,5 +1,30 @@ # @module-federation/storybook-addon +## 3.0.17 + +### Patch Changes + +- a1d46b7: chore: export plugin name + - @module-federation/enhanced@0.8.6 + - @module-federation/sdk@0.8.6 + - @module-federation/utilities@3.1.37 + +## 3.0.16 + +### Patch Changes + +- @module-federation/enhanced@0.8.5 +- @module-federation/sdk@0.8.5 +- @module-federation/utilities@3.1.36 + +## 3.0.15 + +### Patch Changes + +- @module-federation/enhanced@0.8.4 +- @module-federation/sdk@0.8.4 +- @module-federation/utilities@3.1.35 + ## 3.0.14 ### Patch Changes diff --git a/packages/storybook-addon/package.json b/packages/storybook-addon/package.json index 132a49afa77..bf256cf6752 100644 --- a/packages/storybook-addon/package.json +++ b/packages/storybook-addon/package.json @@ -1,6 +1,6 @@ { "name": "@module-federation/storybook-addon", - "version": "3.0.14", + "version": "3.0.17", "description": "Storybook addon to consume remote module federated apps/components", "license": "MIT", "repository": { @@ -44,6 +44,9 @@ "*": { ".": [ "./dist/index.d.ts" + ], + "preset": [ + "./dist/preset.d.ts" ] } }, @@ -61,7 +64,7 @@ }, "peerDependencies": { "@rsbuild/core": "^1.0.1", - "@module-federation/utilities": "^3.1.34", + "@module-federation/utilities": "^3.1.37", "@nx/react": ">= 16.0.0", "@nx/webpack": ">= 16.0.0", "@storybook/core-common": "^6.5.16 || ^7.0.0 || ^ 8.0.0", diff --git a/packages/storybook-addon/preset.ts b/packages/storybook-addon/preset.ts index 0ef92908f91..2047d71718e 100644 --- a/packages/storybook-addon/preset.ts +++ b/packages/storybook-addon/preset.ts @@ -18,3 +18,4 @@ export default { }); }, }; +export { PLUGIN_NAME } from './src/utils/with-module-federation-enhanced-rsbuild'; diff --git a/packages/storybook-addon/src/utils/with-module-federation-enhanced-rsbuild.ts b/packages/storybook-addon/src/utils/with-module-federation-enhanced-rsbuild.ts index 9b6fdd86e6d..da69ff78da4 100644 --- a/packages/storybook-addon/src/utils/with-module-federation-enhanced-rsbuild.ts +++ b/packages/storybook-addon/src/utils/with-module-federation-enhanced-rsbuild.ts @@ -9,6 +9,7 @@ import type { RsbuildConfig, RsbuildPlugin } from '@rsbuild/core'; import type { moduleFederationPlugin } from '@module-federation/sdk'; const tempDirPath = path.resolve(process.cwd(), `node_modules/${TEMP_DIR}`); +export const PLUGIN_NAME = 'module-federation-storybook-addon'; // add bootstrap for host project const bootstrapPath = path.resolve( process.cwd(), @@ -27,7 +28,7 @@ const writeBootstrap = (context: string, entryPath: string) => { } fs.writeFileSync(bootstrapPath, generateBootstrap(context, entryPath)); }; -export const withModuleFederation = async ( +export const withModuleFederation = ( rsbuildConfig: RsbuildConfig, options: moduleFederationPlugin.ModuleFederationPluginOptions, ) => { @@ -52,36 +53,30 @@ export const withModuleFederation = async ( // remoteEntry already includes one hmr runtime, and an additional one is not necessary. hmr: false, }, - tools: { - rspack: (config) => { - config.output ??= {}; - config.output.chunkLoadingGlobal = - 'module-federation-storybook-addon'; - config.plugins?.push( - new ModuleFederationPlugin({ - name: options.name || 'module-federation-storybook-addon', - shared: { - react: { - singleton: true, - }, - 'react-dom': { - singleton: true, - }, - ...options.shared, - }, - remotes: { - ...options.remotes, - }, - shareStrategy: options.shareStrategy, - }), - ); - return config; - }, - }, }; - return mergeRsbuildConfig(config, mfConfig); }); + + api.modifyBundlerChain(async (chain) => { + chain.plugin(PLUGIN_NAME).use(ModuleFederationPlugin, [ + { + name: options.name || PLUGIN_NAME, + shared: { + react: { + singleton: true, + }, + 'react-dom': { + singleton: true, + }, + ...options.shared, + }, + remotes: { + ...options.remotes, + }, + shareStrategy: options.shareStrategy, + }, + ]); + }); }, }; diff --git a/packages/third-party-dts-extractor/CHANGELOG.md b/packages/third-party-dts-extractor/CHANGELOG.md index 5309d0e5b89..38d653ab917 100644 --- a/packages/third-party-dts-extractor/CHANGELOG.md +++ b/packages/third-party-dts-extractor/CHANGELOG.md @@ -1,5 +1,11 @@ # @module-federation/third-party-dts-extractor +## 0.8.6 + +## 0.8.5 + +## 0.8.4 + ## 0.8.3 ## 0.8.2 diff --git a/packages/third-party-dts-extractor/package.json b/packages/third-party-dts-extractor/package.json index a07f852d0bb..1db3cff13cb 100644 --- a/packages/third-party-dts-extractor/package.json +++ b/packages/third-party-dts-extractor/package.json @@ -1,6 +1,6 @@ { "name": "@module-federation/third-party-dts-extractor", - "version": "0.8.3", + "version": "0.8.6", "files": [ "dist/", "README.md" diff --git a/packages/utilities/CHANGELOG.md b/packages/utilities/CHANGELOG.md index 7a653ee42a1..d61f12b8691 100644 --- a/packages/utilities/CHANGELOG.md +++ b/packages/utilities/CHANGELOG.md @@ -1,5 +1,23 @@ # @module-federation/utilities +## 3.1.37 + +### Patch Changes + +- @module-federation/sdk@0.8.6 + +## 3.1.36 + +### Patch Changes + +- @module-federation/sdk@0.8.5 + +## 3.1.35 + +### Patch Changes + +- @module-federation/sdk@0.8.4 + ## 3.1.34 ### Patch Changes diff --git a/packages/utilities/package.json b/packages/utilities/package.json index 665e57ac233..114ad624265 100644 --- a/packages/utilities/package.json +++ b/packages/utilities/package.json @@ -1,6 +1,6 @@ { "name": "@module-federation/utilities", - "version": "3.1.34", + "version": "3.1.37", "main": "./dist/index.cjs.js", "module": "./dist/index.esm.js", "types": "./dist/index.cjs.d.ts", diff --git a/packages/webpack-bundler-runtime/CHANGELOG.md b/packages/webpack-bundler-runtime/CHANGELOG.md index 5b6569e8cce..373af496057 100644 --- a/packages/webpack-bundler-runtime/CHANGELOG.md +++ b/packages/webpack-bundler-runtime/CHANGELOG.md @@ -1,5 +1,26 @@ # @module-federation/webpack-bundler-runtime +## 0.8.6 + +### Patch Changes + +- @module-federation/runtime@0.8.6 +- @module-federation/sdk@0.8.6 + +## 0.8.5 + +### Patch Changes + +- @module-federation/runtime@0.8.5 +- @module-federation/sdk@0.8.5 + +## 0.8.4 + +### Patch Changes + +- @module-federation/runtime@0.8.4 +- @module-federation/sdk@0.8.4 + ## 0.8.3 ### Patch Changes diff --git a/packages/webpack-bundler-runtime/package.json b/packages/webpack-bundler-runtime/package.json index c7b99544da4..5112d609e95 100644 --- a/packages/webpack-bundler-runtime/package.json +++ b/packages/webpack-bundler-runtime/package.json @@ -1,7 +1,7 @@ { "public": true, "name": "@module-federation/webpack-bundler-runtime", - "version": "0.8.3", + "version": "0.8.6", "license": "MIT", "description": "Module Federation Runtime for webpack", "keywords": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 05497130810..dc16274275e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -50,8 +50,8 @@ importers: specifier: 4.4.2 version: 4.4.2 next: - specifier: 14.2.10 - version: 14.2.10(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1) + specifier: 14.2.16 + version: 14.2.16(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1) openai: specifier: ^4.72.0 version: 4.72.0(encoding@0.1.13) @@ -151,7 +151,7 @@ importers: version: 20.1.4(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@18.16.9)(nx@20.1.4)(typescript@5.5.2)(verdaccio@5.29.2) '@nx/next': specifier: 20.1.4 - version: 20.1.4(@babel/core@7.25.2)(@rspack/core@1.0.8)(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@18.16.9)(esbuild@0.24.0)(eslint@8.57.1)(html-webpack-plugin@5.6.2)(next@14.2.10)(nx@20.1.4)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(verdaccio@5.29.2)(vue-tsc@2.1.6)(webpack-cli@5.1.4)(webpack@5.93.0) + version: 20.1.4(@babel/core@7.25.2)(@rspack/core@1.0.8)(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@18.16.9)(esbuild@0.24.0)(eslint@8.57.1)(html-webpack-plugin@5.6.2)(next@14.2.16)(nx@20.1.4)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(verdaccio@5.29.2)(vue-tsc@2.1.6)(webpack@5.93.0) '@nx/node': specifier: 20.1.4 version: 20.1.4(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@18.16.9)(eslint@8.57.1)(nx@20.1.4)(typescript@5.5.2)(verdaccio@5.29.2) @@ -163,7 +163,7 @@ importers: version: 20.1.4(@babel/core@7.25.2)(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@18.16.9)(nx@20.1.4)(typescript@5.5.2)(verdaccio@5.29.2) '@nx/rspack': specifier: 20.1.4 - version: 20.1.4(@module-federation/enhanced@0.6.11)(@module-federation/node@2.5.21)(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@swc/helpers@0.5.13)(@types/express@4.17.21)(@types/node@18.16.9)(html-webpack-plugin@5.6.2)(less@4.2.0)(nx@20.1.4)(react-refresh@0.14.2)(typescript@5.5.2)(verdaccio@5.29.2)(webpack-cli@5.1.4)(webpack@5.93.0) + version: 20.1.4(@module-federation/enhanced@0.6.11)(@module-federation/node@2.5.21)(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@swc/helpers@0.5.13)(@types/express@4.17.21)(@types/node@18.16.9)(html-webpack-plugin@5.6.2)(less@4.2.0)(nx@20.1.4)(react-refresh@0.14.2)(typescript@5.5.2)(verdaccio@5.29.2)(webpack@5.93.0) '@nx/storybook': specifier: 20.1.4 version: 20.1.4(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@18.16.9)(cypress@13.15.0)(eslint@8.57.1)(nx@20.1.4)(typescript@5.5.2)(verdaccio@5.29.2) @@ -175,7 +175,7 @@ importers: version: 20.1.4(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@18.16.9)(nx@20.1.4)(typescript@5.5.2)(verdaccio@5.29.2) '@nx/webpack': specifier: 20.1.4 - version: 20.1.4(@rspack/core@1.0.8)(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@18.16.9)(esbuild@0.24.0)(html-webpack-plugin@5.6.2)(nx@20.1.4)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(verdaccio@5.29.2)(vue-tsc@2.1.6)(webpack-cli@5.1.4) + version: 20.1.4(@rspack/core@1.0.8)(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@18.16.9)(esbuild@0.24.0)(html-webpack-plugin@5.6.2)(nx@20.1.4)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(verdaccio@5.29.2)(vue-tsc@2.1.6) '@pmmmwh/react-refresh-webpack-plugin': specifier: 0.5.15 version: 0.5.15(react-refresh@0.14.2)(webpack@5.93.0) @@ -190,7 +190,7 @@ importers: version: 1.0.8(@swc/helpers@0.5.13) '@rspack/dev-server': specifier: ^1.0.9 - version: 1.0.9(@rspack/core@1.0.8)(@types/express@4.17.21)(webpack-cli@5.1.4)(webpack@5.93.0) + version: 1.0.9(@rspack/core@1.0.8)(@types/express@4.17.21)(webpack@5.93.0) '@semantic-release/changelog': specifier: ^6.0.3 version: 6.0.3(semantic-release@24.1.2) @@ -217,7 +217,7 @@ importers: version: 8.3.5(storybook@8.3.5) '@storybook/nextjs': specifier: ^8.3.5 - version: 8.3.5(@rspack/core@1.0.8)(@swc/core@1.7.26)(esbuild@0.24.0)(next@14.2.10)(react-dom@18.3.1)(react@18.3.1)(storybook@8.3.5)(typescript@5.5.2)(webpack-cli@5.1.4)(webpack@5.93.0) + version: 8.3.5(@rspack/core@1.0.8)(@swc/core@1.7.26)(esbuild@0.24.0)(next@14.2.16)(react-dom@18.3.1)(react@18.3.1)(storybook@8.3.5)(typescript@5.5.2)(webpack@5.93.0) '@storybook/node-logger': specifier: 8.1.11 version: 8.1.11 @@ -456,8 +456,8 @@ importers: specifier: 29.1.5 version: 29.1.5(@babel/core@7.25.2)(babel-jest@29.7.0)(esbuild@0.24.0)(jest@29.7.0)(typescript@5.5.2) tslib: - specifier: 2.6.3 - version: 2.6.3 + specifier: 2.8.1 + version: 2.8.1 typescript: specifier: 5.5.2 version: 5.5.2 @@ -487,10 +487,7 @@ importers: version: 7.2.0 webpack: specifier: 5.93.0 - version: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) - webpack-cli: - specifier: ^5.1.4 - version: 5.1.4(webpack@5.93.0) + version: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) webpack-virtual-modules: specifier: 0.6.2 version: 0.6.2 @@ -513,8 +510,8 @@ importers: specifier: 4.17.21 version: 4.17.21 next: - specifier: 14.2.10 - version: 14.2.10(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1) + specifier: 14.2.16 + version: 14.2.16(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1) react: specifier: 18.3.1 version: 18.3.1 @@ -541,8 +538,8 @@ importers: specifier: 4.17.21 version: 4.17.21 next: - specifier: 14.2.10 - version: 14.2.10(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1) + specifier: 14.2.16 + version: 14.2.16(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1) react: specifier: 18.3.1 version: 18.3.1 @@ -572,8 +569,8 @@ importers: specifier: 4.17.21 version: 4.17.21 next: - specifier: 14.2.10 - version: 14.2.10(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1) + specifier: 14.2.16 + version: 14.2.16(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1) react: specifier: 18.3.1 version: 18.3.1 @@ -770,7 +767,7 @@ importers: version: 2.59.0(typescript@5.0.4) '@modern-js/app-tools': specifier: 2.60.6 - version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4)(webpack-cli@5.1.4) + version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.0.4) @@ -828,7 +825,7 @@ importers: version: 2.59.0(typescript@5.0.4) '@modern-js/app-tools': specifier: 2.60.6 - version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4)(webpack-cli@5.1.4) + version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.0.4) @@ -886,7 +883,7 @@ importers: version: 2.59.0(typescript@5.0.4) '@modern-js/app-tools': specifier: 2.60.6 - version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4)(webpack-cli@5.1.4) + version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.0.4) @@ -944,7 +941,7 @@ importers: version: 2.59.0(typescript@5.0.4) '@modern-js/app-tools': specifier: 2.60.6 - version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4)(webpack-cli@5.1.4) + version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.0.4) @@ -1002,7 +999,7 @@ importers: version: 2.59.0(typescript@5.0.4) '@modern-js/app-tools': specifier: 2.60.6 - version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4)(webpack-cli@5.1.4) + version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.0.4) @@ -1060,7 +1057,7 @@ importers: version: 2.59.0(typescript@5.0.4) '@modern-js/app-tools': specifier: 2.60.6 - version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4)(webpack-cli@5.1.4) + version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.0.4) @@ -1118,7 +1115,7 @@ importers: version: 2.59.0(typescript@5.0.4) '@modern-js/app-tools': specifier: 2.60.6 - version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4)(webpack-cli@5.1.4) + version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.0.4) @@ -1176,7 +1173,7 @@ importers: version: 2.59.0(typescript@5.0.4) '@modern-js/app-tools': specifier: 2.60.6 - version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4)(webpack-cli@5.1.4) + version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.0.4) @@ -1440,7 +1437,7 @@ importers: version: 1.0.19 '@rsbuild/plugin-vue': specifier: ^1.0.3 - version: 1.0.3(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.24.0)(vue@3.5.10)(webpack-cli@5.1.4) + version: 1.0.3(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.24.0)(vue@3.5.10) tailwindcss: specifier: ^3.4.3 version: 3.4.3 @@ -1554,7 +1551,7 @@ importers: version: 1.0.19 '@rsbuild/plugin-vue': specifier: ^1.0.3 - version: 1.0.3(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.24.0)(vue@3.5.10)(webpack-cli@5.1.4) + version: 1.0.3(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.24.0)(vue@3.5.10) '@vue/tsconfig': specifier: ^0.5.1 version: 0.5.1 @@ -1621,10 +1618,10 @@ importers: version: link:../../packages/storybook-addon '@rsbuild/plugin-react': specifier: ^1.0.6 - version: 1.0.6(@rsbuild/core@1.1.1) + version: 1.0.6(@rsbuild/core@1.1.12) '@rslib/core': - specifier: ^0.0.18 - version: 0.0.18(typescript@5.5.2) + specifier: 0.2.0 + version: 0.2.0(typescript@5.5.2) '@types/react': specifier: ^18.3.11 version: 18.3.11 @@ -1642,10 +1639,10 @@ importers: version: 8.4.2(prettier@3.3.3) storybook-addon-rslib: specifier: ^0.1.4 - version: 0.1.4(@rsbuild/core@1.1.1)(@rslib/core@0.0.18)(storybook-builder-rsbuild@0.1.5)(typescript@5.5.2) + version: 0.1.4(@rsbuild/core@1.1.12)(@rslib/core@0.2.0)(storybook-builder-rsbuild@0.1.5)(typescript@5.5.2) storybook-react-rsbuild: specifier: ^0.1.5 - version: 0.1.5(@rsbuild/core@1.1.1)(@swc/core@1.7.26)(esbuild@0.18.20)(react-dom@18.3.1)(react@18.3.1)(rollup@4.24.0)(storybook@8.4.2)(typescript@5.5.2)(webpack-cli@5.1.4)(webpack@5.93.0) + version: 0.1.5(@rsbuild/core@1.1.12)(@swc/core@1.7.26)(esbuild@0.18.20)(react-dom@18.3.1)(react@18.3.1)(rollup@4.24.0)(storybook@8.4.2)(typescript@5.5.2)(webpack@5.93.0) apps/runtime-demo/3005-runtime-host: dependencies: @@ -1814,8 +1811,8 @@ importers: specifier: workspace:* version: link:../../sdk react-error-boundary: - specifier: ^4.0.13 - version: 4.0.13(react@18.3.1) + specifier: ^4.1.2 + version: 4.1.2(react@18.3.1) devDependencies: '@module-federation/runtime': specifier: workspace:* @@ -1975,10 +1972,10 @@ importers: version: 2.54.6(@swc/helpers@0.5.13)(typescript@5.0.4) '@modern-js/app-tools': specifier: 2.60.6 - version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4)(webpack-cli@5.1.4) + version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4) '@modern-js/builder-webpack-provider': specifier: 2.46.1 - version: 2.46.1(@rsbuild/core@0.3.11)(@swc/core@1.7.26)(@types/express@4.17.21)(esbuild@0.18.20)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4)(webpack-cli@5.1.4) + version: 2.46.1(@rsbuild/core@0.3.11)(@swc/core@1.7.26)(@types/express@4.17.21)(esbuild@0.18.20)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.0.4) @@ -1987,7 +1984,7 @@ importers: version: 2.60.6(typescript@5.0.4) '@modern-js/storybook': specifier: 2.60.6 - version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(@types/react-dom@18.3.0)(@types/react@18.2.79)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4)(webpack-cli@5.1.4)(webpack@5.93.0) + version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(@types/react-dom@18.3.0)(@types/react@18.2.79)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4)(webpack@5.93.0) '@modern-js/tsconfig': specifier: 2.60.6 version: 2.60.6 @@ -2038,7 +2035,7 @@ importers: dependencies: webpack: specifier: ^5.40.0 - version: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + version: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) packages/data-prefetch: dependencies: @@ -2093,7 +2090,7 @@ importers: version: 29.0.1(@babel/core@7.26.0)(babel-jest@29.7.0)(esbuild@0.24.0)(jest@29.7.0)(typescript@5.5.2) webpack: specifier: 5.75.0 - version: 5.75.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + version: 5.75.0(@swc/core@1.7.26)(esbuild@0.24.0) packages/dts-plugin: dependencies: @@ -2182,6 +2179,9 @@ importers: '@module-federation/dts-plugin': specifier: workspace:* version: link:../dts-plugin + '@module-federation/error-codes': + specifier: workspace:* + version: link:../error-codes '@module-federation/managers': specifier: workspace:* version: link:../managers @@ -2211,7 +2211,7 @@ importers: version: 2.1.6(typescript@5.5.2) webpack: specifier: ^5.0.0 - version: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + version: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) devDependencies: '@module-federation/webpack-bundler-runtime': specifier: workspace:* @@ -2284,7 +2284,7 @@ importers: devDependencies: webpack: specifier: 5.93.0 - version: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + version: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) packages/manifest: dependencies: @@ -2318,6 +2318,9 @@ importers: '@module-federation/node': specifier: workspace:* version: link:../node + '@module-federation/rsbuild-plugin': + specifier: workspace:* + version: link:../rsbuild-plugin '@module-federation/sdk': specifier: workspace:* version: link:../sdk @@ -2337,8 +2340,8 @@ importers: specifier: '>=17' version: 18.3.1(react@18.3.1) react-error-boundary: - specifier: 4.0.13 - version: 4.0.13(react@18.3.1) + specifier: 4.1.2 + version: 4.1.2(react@18.3.1) typescript: specifier: ^4.9.0 || ^5.0.0 version: 5.5.2 @@ -2348,7 +2351,7 @@ importers: devDependencies: '@modern-js/app-tools': specifier: 2.60.6 - version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.5.2)(webpack-cli@5.1.4) + version: 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.5.2) '@modern-js/core': specifier: 2.60.6 version: 2.60.6 @@ -2451,7 +2454,7 @@ importers: version: 5.1.6(@babel/core@7.25.2)(react@18.3.1) webpack: specifier: ^5.40.0 - version: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + version: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) packages/node: dependencies: @@ -2484,7 +2487,7 @@ importers: version: 18.3.1(react@18.3.1) webpack: specifier: ^5.40.0 - version: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + version: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) packages/retry-plugin: dependencies: @@ -2561,8 +2564,8 @@ importers: packages/sdk: dependencies: isomorphic-rslog: - specifier: 0.0.6 - version: 0.0.6 + specifier: 0.0.7 + version: 0.0.7 packages/storybook-addon: dependencies: @@ -2577,7 +2580,7 @@ importers: version: 20.1.1(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@20.12.14)(eslint@8.57.1)(nx@20.1.4)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(verdaccio@5.29.2)(vue-tsc@2.1.6)(webpack@5.93.0) '@nx/webpack': specifier: '>= 16.0.0' - version: 20.1.1(@rspack/core@1.0.8)(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@20.12.14)(esbuild@0.18.20)(html-webpack-plugin@5.6.2)(nx@20.1.4)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(verdaccio@5.29.2)(vue-tsc@2.1.6)(webpack-cli@5.1.4) + version: 20.1.1(@rspack/core@1.0.8)(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@20.12.14)(esbuild@0.18.20)(html-webpack-plugin@5.6.2)(nx@20.1.4)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(verdaccio@5.29.2)(vue-tsc@2.1.6) devDependencies: '@module-federation/utilities': specifier: workspace:* @@ -2593,7 +2596,7 @@ importers: version: 7.6.20 webpack: specifier: 5.93.0 - version: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + version: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) webpack-virtual-modules: specifier: 0.6.2 version: 0.6.2 @@ -2635,7 +2638,7 @@ importers: version: 1.8.27(typescript@5.5.2) webpack: specifier: ^5.75.0 - version: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + version: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) packages/utilities: dependencies: @@ -2647,7 +2650,7 @@ importers: version: 18.3.1(react@18.3.1) webpack: specifier: ^5.40.0 - version: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + version: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) devDependencies: react: specifier: 18.3.1 @@ -7009,25 +7012,26 @@ packages: /@discoveryjs/json-ext@0.5.7: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} + dev: true /@emnapi/core@1.3.0: resolution: {integrity: sha512-9hRqVlhwqBqCoToZ3hFcNVqL+uyHV06Y47ax4UB8L6XgVRqYz7MFnfessojo6+5TK89pKwJnpophwjTMOeKI9Q==} requiresBuild: true dependencies: '@emnapi/wasi-threads': 1.0.1 - tslib: 2.6.3 + tslib: 2.8.1 /@emnapi/runtime@1.3.0: resolution: {integrity: sha512-XMBySMuNZs3DM96xcJmLW4EfGnf+uGmFNjzpehMjuX5PLB5j87ar2Zc4e3PVeZ3I5g3tYtAqskB28manlF69Zw==} requiresBuild: true dependencies: - tslib: 2.6.3 + tslib: 2.8.1 /@emnapi/wasi-threads@1.0.1: resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} requiresBuild: true dependencies: - tslib: 2.6.3 + tslib: 2.8.1 /@emotion/babel-plugin@11.12.0: resolution: {integrity: sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==} @@ -9130,33 +9134,33 @@ packages: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - /@jsonjoy.com/base64@1.1.2(tslib@2.6.3): + /@jsonjoy.com/base64@1.1.2(tslib@2.8.1): resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' dependencies: - tslib: 2.6.3 + tslib: 2.8.1 - /@jsonjoy.com/json-pack@1.1.0(tslib@2.6.3): + /@jsonjoy.com/json-pack@1.1.0(tslib@2.8.1): resolution: {integrity: sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' dependencies: - '@jsonjoy.com/base64': 1.1.2(tslib@2.6.3) - '@jsonjoy.com/util': 1.3.0(tslib@2.6.3) + '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) + '@jsonjoy.com/util': 1.3.0(tslib@2.8.1) hyperdyperid: 1.2.0 - thingies: 1.21.0(tslib@2.6.3) - tslib: 2.6.3 + thingies: 1.21.0(tslib@2.8.1) + tslib: 2.8.1 - /@jsonjoy.com/util@1.3.0(tslib@2.6.3): + /@jsonjoy.com/util@1.3.0(tslib@2.8.1): resolution: {integrity: sha512-Cebt4Vk7k1xHy87kHY7KSPLT77A7Ev7IfOblyLZhtYEhrdQ6fX4EoLq3xOQ3O/DRMEh2ok5nyC180E+ABS8Wmw==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' dependencies: - tslib: 2.6.3 + tslib: 2.8.1 /@juggle/resize-observer@3.4.0: resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} @@ -9251,7 +9255,7 @@ packages: dependencies: '@mdx-js/mdx': 2.3.0 source-map: 0.7.4 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) transitivePeerDependencies: - supports-color dev: false @@ -9571,7 +9575,7 @@ packages: '@swc/helpers': 0.5.1 redux: 4.2.1 - /@modern-js/app-tools@2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4)(webpack-cli@5.1.4): + /@modern-js/app-tools@2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4): resolution: {integrity: sha512-vbU4XmjlT7rSiotI1zF+esT8NrGt7DSTL4jDRMZeBS7mDOfWNL/DTQMVlgzUw6qZujxCJbtlkPAxLCrnM0jimg==} engines: {node: '>=14.17.6'} hasBin: true @@ -9593,12 +9597,12 @@ packages: '@modern-js/plugin-data-loader': 2.60.6(react-dom@18.3.1)(react@18.3.1) '@modern-js/plugin-i18n': 2.60.6 '@modern-js/prod-server': 2.60.6(react-dom@18.3.1)(react@18.3.1) - '@modern-js/rsbuild-plugin-esbuild': 2.60.6(@swc/core@1.7.26)(webpack-cli@5.1.4) + '@modern-js/rsbuild-plugin-esbuild': 2.60.6(@swc/core@1.7.26) '@modern-js/server': 2.60.6(@babel/traverse@7.25.7)(@rsbuild/core@1.0.19)(react-dom@18.3.1)(react@18.3.1) '@modern-js/server-core': 2.60.6(react-dom@18.3.1)(react@18.3.1) '@modern-js/server-utils': 2.60.6(@babel/traverse@7.25.7)(@rsbuild/core@1.0.19) '@modern-js/types': 2.60.6 - '@modern-js/uni-builder': 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(esbuild@0.17.19)(styled-components@6.1.13)(typescript@5.0.4)(webpack-cli@5.1.4) + '@modern-js/uni-builder': 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(esbuild@0.17.19)(styled-components@6.1.13)(typescript@5.0.4) '@modern-js/utils': 2.60.6 '@rsbuild/core': 1.0.19 '@rsbuild/plugin-node-polyfill': 1.2.0(@rsbuild/core@1.0.19) @@ -9639,7 +9643,7 @@ packages: - webpack-plugin-serve dev: true - /@modern-js/app-tools@2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.5.2)(webpack-cli@5.1.4): + /@modern-js/app-tools@2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.5.2): resolution: {integrity: sha512-vbU4XmjlT7rSiotI1zF+esT8NrGt7DSTL4jDRMZeBS7mDOfWNL/DTQMVlgzUw6qZujxCJbtlkPAxLCrnM0jimg==} engines: {node: '>=14.17.6'} hasBin: true @@ -9661,12 +9665,12 @@ packages: '@modern-js/plugin-data-loader': 2.60.6(react-dom@18.3.1)(react@18.3.1) '@modern-js/plugin-i18n': 2.60.6 '@modern-js/prod-server': 2.60.6(react-dom@18.3.1)(react@18.3.1) - '@modern-js/rsbuild-plugin-esbuild': 2.60.6(@swc/core@1.7.26)(webpack-cli@5.1.4) + '@modern-js/rsbuild-plugin-esbuild': 2.60.6(@swc/core@1.7.26) '@modern-js/server': 2.60.6(@babel/traverse@7.25.7)(@rsbuild/core@1.0.19)(react-dom@18.3.1)(react@18.3.1) '@modern-js/server-core': 2.60.6(react-dom@18.3.1)(react@18.3.1) '@modern-js/server-utils': 2.60.6(@babel/traverse@7.25.7)(@rsbuild/core@1.0.19) '@modern-js/types': 2.60.6 - '@modern-js/uni-builder': 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(esbuild@0.17.19)(styled-components@6.1.13)(typescript@5.5.2)(webpack-cli@5.1.4) + '@modern-js/uni-builder': 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(esbuild@0.17.19)(styled-components@6.1.13)(typescript@5.5.2) '@modern-js/utils': 2.60.6 '@rsbuild/core': 1.0.19 '@rsbuild/plugin-node-polyfill': 1.2.0(@rsbuild/core@1.0.19) @@ -9793,7 +9797,7 @@ packages: - supports-color dev: true - /@modern-js/builder-shared@2.46.1(@rsbuild/core@0.3.11)(@swc/core@1.7.26)(@types/express@4.17.21)(esbuild@0.18.20)(react-dom@18.3.1)(react@18.3.1)(typescript@5.0.4)(webpack-cli@5.1.4): + /@modern-js/builder-shared@2.46.1(@rsbuild/core@0.3.11)(@swc/core@1.7.26)(@types/express@4.17.21)(esbuild@0.18.20)(react-dom@18.3.1)(react@18.3.1)(typescript@5.0.4): resolution: {integrity: sha512-nlniPnfeP+rofd1LX2BBX7Vy2pZkxnBnxK7u8rfT/9XUJzHAbjvPxVPyB8IbBIoL9RnLWWQtvTDpAAbz/jRo+Q==} engines: {node: '>=14.0.0'} dependencies: @@ -9814,7 +9818,7 @@ packages: line-diff: 2.1.1 postcss: 8.4.31 source-map: 0.7.4 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) webpack-sources: 3.2.3 zod: 3.23.8 zod-validation-error: 1.2.0(zod@3.23.8) @@ -9843,13 +9847,13 @@ packages: - webpack-cli dev: true - /@modern-js/builder-webpack-provider@2.46.1(@rsbuild/core@0.3.11)(@swc/core@1.7.26)(@types/express@4.17.21)(esbuild@0.18.20)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4)(webpack-cli@5.1.4): + /@modern-js/builder-webpack-provider@2.46.1(@rsbuild/core@0.3.11)(@swc/core@1.7.26)(@types/express@4.17.21)(esbuild@0.18.20)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4): resolution: {integrity: sha512-a891A2kBN/m7YBrddqanjhD2Im9y/58QrGg9zxDzoAZ8DnKf6AM716FR9K8ZS5kWMndiY7247AG2X1sTQtzQ3w==} engines: {node: '>=14.0.0'} dependencies: '@babel/core': 7.25.8 '@babel/preset-react': 7.25.7(@babel/core@7.25.8) - '@modern-js/builder-shared': 2.46.1(@rsbuild/core@0.3.11)(@swc/core@1.7.26)(@types/express@4.17.21)(esbuild@0.18.20)(react-dom@18.3.1)(react@18.3.1)(typescript@5.0.4)(webpack-cli@5.1.4) + '@modern-js/builder-shared': 2.46.1(@rsbuild/core@0.3.11)(@swc/core@1.7.26)(@types/express@4.17.21)(esbuild@0.18.20)(react-dom@18.3.1)(react@18.3.1)(typescript@5.0.4) '@modern-js/inspector-webpack-plugin': 1.0.6 '@modern-js/server': 2.46.1(@rsbuild/core@0.3.11)(@types/express@4.17.21)(react-dom@18.3.1)(react@18.3.1) '@modern-js/types': 2.46.1 @@ -9869,7 +9873,7 @@ packages: terser-webpack-plugin: 5.3.9(@swc/core@1.7.26)(esbuild@0.18.20)(webpack@5.95.0) ts-loader: 9.4.4(typescript@5.0.4)(webpack@5.95.0) tsconfig-paths-webpack-plugin: 4.1.0 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20) webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.5.3)(webpack@5.95.0) transitivePeerDependencies: - '@babel/traverse' @@ -10109,12 +10113,12 @@ packages: - react-dom dev: true - /@modern-js/rsbuild-plugin-esbuild@2.60.6(@swc/core@1.7.26)(webpack-cli@5.1.4): + /@modern-js/rsbuild-plugin-esbuild@2.60.6(@swc/core@1.7.26): resolution: {integrity: sha512-o65skhuvIfg5Pbis4PJSdYJ+mQyXs6MRLxDS0V5/6rWlQ7esRz8wna9iJvBkAwEMeXEHgiuv/qtyxRHmH8nO5g==} dependencies: '@swc/helpers': 0.5.13 esbuild: 0.17.19 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19) transitivePeerDependencies: - '@swc/core' - uglify-js @@ -10395,13 +10399,13 @@ packages: - utf-8-validate dev: true - /@modern-js/storybook-builder@2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(@types/react-dom@18.3.0)(@types/react@18.2.79)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4)(webpack-cli@5.1.4)(webpack@5.93.0): + /@modern-js/storybook-builder@2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(@types/react-dom@18.3.0)(@types/react@18.2.79)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4)(webpack@5.93.0): resolution: {integrity: sha512-aptCg9RbeEvazw4K7m3+nNsrlxHjwHUONgNRdDe97W6mbrlMu/ADdlfegHWh1qya8ktIvg43uylViP9YXx3YNw==} engines: {node: '>=16.0.0'} dependencies: '@modern-js/core': 2.60.6 '@modern-js/runtime': 2.60.6(@types/react-dom@18.3.0)(@types/react@18.2.79)(react-dom@18.3.1)(react@18.3.1) - '@modern-js/uni-builder': 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(esbuild@0.18.20)(styled-components@6.1.13)(typescript@5.0.4)(webpack-cli@5.1.4) + '@modern-js/uni-builder': 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(esbuild@0.18.20)(styled-components@6.1.13)(typescript@5.0.4) '@modern-js/utils': 2.60.6 '@rsbuild/core': 1.0.19 '@storybook/components': 7.6.20(@types/react-dom@18.3.0)(@types/react@18.2.79)(react-dom@18.3.1)(react@18.3.1) @@ -10451,12 +10455,12 @@ packages: - webpack-sources dev: true - /@modern-js/storybook@2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(@types/react-dom@18.3.0)(@types/react@18.2.79)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4)(webpack-cli@5.1.4)(webpack@5.93.0): + /@modern-js/storybook@2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(@types/react-dom@18.3.0)(@types/react@18.2.79)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4)(webpack@5.93.0): resolution: {integrity: sha512-GeRaKxXyuAArnIe2YY5B6VG/WISPxrVY+Rlq+D1GZR868EcBKQ/FNpA0wJDRZRsvRxLWmOyBFHnU13WOegdEpg==} engines: {node: '>=16.0.0'} hasBin: true dependencies: - '@modern-js/storybook-builder': 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(@types/react-dom@18.3.0)(@types/react@18.2.79)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4)(webpack-cli@5.1.4)(webpack@5.93.0) + '@modern-js/storybook-builder': 2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(@types/react-dom@18.3.0)(@types/react@18.2.79)(encoding@0.1.13)(esbuild@0.18.20)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13)(typescript@5.0.4)(webpack@5.93.0) '@modern-js/utils': 2.60.6 '@storybook/react': 7.6.20(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1)(typescript@5.0.4) storybook: 7.6.20(encoding@0.1.13) @@ -10595,7 +10599,7 @@ packages: /@modern-js/types@2.60.6: resolution: {integrity: sha512-Tjh03D6lW34BmbKm5CV7SgtjSnOIjFQhRh+pExCMpSQUgJOWSooboEVsZQ2f8zdyxijI1MSSGEIt4ak30Vsvng==} - /@modern-js/uni-builder@2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(esbuild@0.17.19)(styled-components@6.1.13)(typescript@5.0.4)(webpack-cli@5.1.4): + /@modern-js/uni-builder@2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(esbuild@0.17.19)(styled-components@6.1.13)(typescript@5.0.4): resolution: {integrity: sha512-ObkfQcMkAdbohurL+UILJd23Z5B9v9as935tNa2lScx8aOj6EmViOcbLb5kZXnH0EQMrX9FcEOxAy6gp7jS/3g==} dependencies: '@babel/core': 7.26.0 @@ -10618,10 +10622,10 @@ packages: '@rsbuild/plugin-styled-components': 1.0.1(@rsbuild/core@1.0.19) '@rsbuild/plugin-svgr': 1.0.4(@rsbuild/core@1.0.19)(typescript@5.0.4) '@rsbuild/plugin-toml': 1.0.1(@rsbuild/core@1.0.19) - '@rsbuild/plugin-type-check': 1.0.1(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.17.19)(typescript@5.0.4)(webpack-cli@5.1.4) + '@rsbuild/plugin-type-check': 1.0.1(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.17.19)(typescript@5.0.4) '@rsbuild/plugin-typed-css-modules': 1.0.2(@rsbuild/core@1.0.19) '@rsbuild/plugin-yaml': 1.0.2(@rsbuild/core@1.0.19) - '@rsbuild/webpack': 1.0.11(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.17.19)(webpack-cli@5.1.4) + '@rsbuild/webpack': 1.0.11(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.17.19) '@swc/helpers': 0.5.13 autoprefixer: 10.4.20(postcss@8.4.47) babel-loader: 9.1.3(@babel/core@7.26.0)(webpack@5.95.0) @@ -10648,7 +10652,7 @@ packages: terser-webpack-plugin: 5.3.10(@swc/core@1.7.26)(esbuild@0.17.19)(webpack@5.95.0) ts-deepmerge: 7.0.1 ts-loader: 9.4.4(typescript@5.0.4)(webpack@5.95.0) - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19) webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.3)(webpack@5.95.0) transitivePeerDependencies: - '@parcel/css' @@ -10672,7 +10676,7 @@ packages: - webpack-plugin-serve dev: true - /@modern-js/uni-builder@2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(esbuild@0.17.19)(styled-components@6.1.13)(typescript@5.5.2)(webpack-cli@5.1.4): + /@modern-js/uni-builder@2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(esbuild@0.17.19)(styled-components@6.1.13)(typescript@5.5.2): resolution: {integrity: sha512-ObkfQcMkAdbohurL+UILJd23Z5B9v9as935tNa2lScx8aOj6EmViOcbLb5kZXnH0EQMrX9FcEOxAy6gp7jS/3g==} dependencies: '@babel/core': 7.26.0 @@ -10695,10 +10699,10 @@ packages: '@rsbuild/plugin-styled-components': 1.0.1(@rsbuild/core@1.0.19) '@rsbuild/plugin-svgr': 1.0.4(@rsbuild/core@1.0.19)(typescript@5.5.2) '@rsbuild/plugin-toml': 1.0.1(@rsbuild/core@1.0.19) - '@rsbuild/plugin-type-check': 1.0.1(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.17.19)(typescript@5.5.2)(webpack-cli@5.1.4) + '@rsbuild/plugin-type-check': 1.0.1(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.17.19)(typescript@5.5.2) '@rsbuild/plugin-typed-css-modules': 1.0.2(@rsbuild/core@1.0.19) '@rsbuild/plugin-yaml': 1.0.2(@rsbuild/core@1.0.19) - '@rsbuild/webpack': 1.0.11(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.17.19)(webpack-cli@5.1.4) + '@rsbuild/webpack': 1.0.11(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.17.19) '@swc/helpers': 0.5.13 autoprefixer: 10.4.20(postcss@8.4.47) babel-loader: 9.1.3(@babel/core@7.26.0)(webpack@5.95.0) @@ -10725,7 +10729,7 @@ packages: terser-webpack-plugin: 5.3.10(@swc/core@1.7.26)(esbuild@0.17.19)(webpack@5.95.0) ts-deepmerge: 7.0.1 ts-loader: 9.4.4(typescript@5.5.2)(webpack@5.95.0) - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19) webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.3)(webpack@5.95.0) transitivePeerDependencies: - '@parcel/css' @@ -10749,7 +10753,7 @@ packages: - webpack-plugin-serve dev: true - /@modern-js/uni-builder@2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(esbuild@0.18.20)(styled-components@6.1.13)(typescript@5.0.4)(webpack-cli@5.1.4): + /@modern-js/uni-builder@2.60.6(@rspack/core@1.0.8)(@swc/core@1.7.26)(esbuild@0.18.20)(styled-components@6.1.13)(typescript@5.0.4): resolution: {integrity: sha512-ObkfQcMkAdbohurL+UILJd23Z5B9v9as935tNa2lScx8aOj6EmViOcbLb5kZXnH0EQMrX9FcEOxAy6gp7jS/3g==} dependencies: '@babel/core': 7.26.0 @@ -10772,10 +10776,10 @@ packages: '@rsbuild/plugin-styled-components': 1.0.1(@rsbuild/core@1.0.19) '@rsbuild/plugin-svgr': 1.0.4(@rsbuild/core@1.0.19)(typescript@5.0.4) '@rsbuild/plugin-toml': 1.0.1(@rsbuild/core@1.0.19) - '@rsbuild/plugin-type-check': 1.0.1(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.18.20)(typescript@5.0.4)(webpack-cli@5.1.4) + '@rsbuild/plugin-type-check': 1.0.1(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.18.20)(typescript@5.0.4) '@rsbuild/plugin-typed-css-modules': 1.0.2(@rsbuild/core@1.0.19) '@rsbuild/plugin-yaml': 1.0.2(@rsbuild/core@1.0.19) - '@rsbuild/webpack': 1.0.11(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + '@rsbuild/webpack': 1.0.11(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.18.20) '@swc/helpers': 0.5.13 autoprefixer: 10.4.20(postcss@8.4.47) babel-loader: 9.1.3(@babel/core@7.26.0)(webpack@5.95.0) @@ -10802,7 +10806,7 @@ packages: terser-webpack-plugin: 5.3.10(@swc/core@1.7.26)(esbuild@0.18.20)(webpack@5.95.0) ts-deepmerge: 7.0.1 ts-loader: 9.4.4(typescript@5.0.4)(webpack@5.95.0) - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20) webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.3)(webpack@5.95.0) transitivePeerDependencies: - '@parcel/css' @@ -11093,7 +11097,7 @@ packages: typescript: 5.5.2 upath: 2.0.1 vue-tsc: 2.1.6(typescript@5.5.2) - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) transitivePeerDependencies: - bufferutil - debug @@ -11128,7 +11132,7 @@ packages: typescript: 5.5.2 upath: 2.0.1 vue-tsc: 2.1.6(typescript@5.5.2) - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) transitivePeerDependencies: - bufferutil - debug @@ -11164,7 +11168,7 @@ packages: typescript: 5.5.2 upath: 2.0.1 vue-tsc: 2.1.6(typescript@5.5.2) - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) transitivePeerDependencies: - bufferutil - debug @@ -11200,7 +11204,7 @@ packages: typescript: 5.5.2 upath: 2.0.1 vue-tsc: 2.1.6(typescript@5.5.2) - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) transitivePeerDependencies: - bufferutil - debug @@ -11316,7 +11320,7 @@ packages: - vue-tsc dev: true - /@module-federation/node@2.5.21(next@14.2.10)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(vue-tsc@2.1.6)(webpack@5.93.0): + /@module-federation/node@2.5.21(next@14.2.16)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(vue-tsc@2.1.6)(webpack@5.93.0): resolution: {integrity: sha512-RSSWlndPZtKOX0mmQkHUc4xmWl18oRZOV58S5Xm1X3YOSDxywLtOXcxaYRfUqufBGdEA+zeDaFryfE8feC61Qw==} peerDependencies: next: '*' @@ -11334,14 +11338,14 @@ packages: '@module-federation/enhanced': 0.6.11(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(vue-tsc@2.1.6)(webpack@5.93.0) '@module-federation/runtime': 0.6.11 '@module-federation/sdk': 0.6.11 - '@module-federation/utilities': 3.1.17(next@14.2.10)(react-dom@18.3.1)(react@18.3.1)(webpack@5.93.0) + '@module-federation/utilities': 3.1.17(next@14.2.16)(react-dom@18.3.1)(react@18.3.1)(webpack@5.93.0) btoa: 1.2.1 encoding: 0.1.13 - next: 14.2.10(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1) + next: 14.2.16(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1) node-fetch: 2.7.0(encoding@0.1.13) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) transitivePeerDependencies: - bufferutil - debug @@ -11604,7 +11608,7 @@ packages: resolve: 1.22.8 dev: true - /@module-federation/utilities@3.1.17(next@14.2.10)(react-dom@18.3.1)(react@18.3.1)(webpack@5.93.0): + /@module-federation/utilities@3.1.17(next@14.2.16)(react-dom@18.3.1)(react@18.3.1)(webpack@5.93.0): resolution: {integrity: sha512-dmbLxZwgYgtTJ09HvFZCzAPgoRkAEjqQOEcuBZm/+GSHuAwZq6SMaOs7RdTHH0by7VvUm4O+iMQ7zMu/F4vuqw==} peerDependencies: next: '*' @@ -11620,10 +11624,10 @@ packages: optional: true dependencies: '@module-federation/sdk': 0.6.11 - next: 14.2.10(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1) + next: 14.2.16(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) dev: true /@module-federation/webpack-bundler-runtime@0.0.8: @@ -11905,11 +11909,15 @@ packages: /@next/env@14.2.10: resolution: {integrity: sha512-dZIu93Bf5LUtluBXIv4woQw2cZVZ2DJTjax5/5DOs3lzEOeKLy7GxRSr4caK9/SCPdaW6bCgpye6+n4Dh9oJPw==} + dev: false /@next/env@14.2.14: resolution: {integrity: sha512-/0hWQfiaD5//LvGNgc8PjvyqV50vGK0cADYzaoOOGN8fxzBn3iAiaq3S0tCRnFBldq0LVveLcxCTi41ZoYgAgg==} dev: false + /@next/env@14.2.16: + resolution: {integrity: sha512-fLrX5TfJzHCbnZ9YUSnGW63tMV3L4nSfhgOQ0iCcX21Pt+VSTDuaLsSuL8J/2XAiVA5AnzvXDpf6pMs60QxOag==} + /@next/eslint-plugin-next@14.2.15: resolution: {integrity: sha512-pKU0iqKRBlFB/ocOI1Ip2CkKePZpYpnw5bEItEkuZ/Nr9FQP1+p7VDWr4VfOdff4i9bFmrOaeaU1bFEyAcxiMQ==} dependencies: @@ -11922,6 +11930,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: false optional: true /@next/swc-darwin-arm64@14.2.14: @@ -11933,12 +11942,21 @@ packages: dev: false optional: true + /@next/swc-darwin-arm64@14.2.16: + resolution: {integrity: sha512-uFT34QojYkf0+nn6MEZ4gIWQ5aqGF11uIZ1HSxG+cSbj+Mg3+tYm8qXYd3dKN5jqKUm5rBVvf1PBRO/MeQ6rxw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + /@next/swc-darwin-x64@14.2.10: resolution: {integrity: sha512-Y0TC+FXbFUQ2MQgimJ/7Ina2mXIKhE7F+GUe1SgnzRmwFY3hX2z8nyVCxE82I2RicspdkZnSWMn4oTjIKz4uzA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] requiresBuild: true + dev: false optional: true /@next/swc-darwin-x64@14.2.14: @@ -11950,12 +11968,21 @@ packages: dev: false optional: true + /@next/swc-darwin-x64@14.2.16: + resolution: {integrity: sha512-mCecsFkYezem0QiZlg2bau3Xul77VxUD38b/auAjohMA22G9KTJneUYMv78vWoCCFkleFAhY1NIvbyjj1ncG9g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + /@next/swc-linux-arm64-gnu@14.2.10: resolution: {integrity: sha512-ZfQ7yOy5zyskSj9rFpa0Yd7gkrBnJTkYVSya95hX3zeBG9E55Z6OTNPn1j2BTFWvOVVj65C3T+qsjOyVI9DQpA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] requiresBuild: true + dev: false optional: true /@next/swc-linux-arm64-gnu@14.2.14: @@ -11967,12 +11994,21 @@ packages: dev: false optional: true + /@next/swc-linux-arm64-gnu@14.2.16: + resolution: {integrity: sha512-yhkNA36+ECTC91KSyZcgWgKrYIyDnXZj8PqtJ+c2pMvj45xf7y/HrgI17hLdrcYamLfVt7pBaJUMxADtPaczHA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + /@next/swc-linux-arm64-musl@14.2.10: resolution: {integrity: sha512-n2i5o3y2jpBfXFRxDREr342BGIQCJbdAUi/K4q6Env3aSx8erM9VuKXHw5KNROK9ejFSPf0LhoSkU/ZiNdacpQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] requiresBuild: true + dev: false optional: true /@next/swc-linux-arm64-musl@14.2.14: @@ -11984,12 +12020,21 @@ packages: dev: false optional: true + /@next/swc-linux-arm64-musl@14.2.16: + resolution: {integrity: sha512-X2YSyu5RMys8R2lA0yLMCOCtqFOoLxrq2YbazFvcPOE4i/isubYjkh+JCpRmqYfEuCVltvlo+oGfj/b5T2pKUA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + /@next/swc-linux-x64-gnu@14.2.10: resolution: {integrity: sha512-GXvajAWh2woTT0GKEDlkVhFNxhJS/XdDmrVHrPOA83pLzlGPQnixqxD8u3bBB9oATBKB//5e4vpACnx5Vaxdqg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] requiresBuild: true + dev: false optional: true /@next/swc-linux-x64-gnu@14.2.14: @@ -12001,12 +12046,21 @@ packages: dev: false optional: true + /@next/swc-linux-x64-gnu@14.2.16: + resolution: {integrity: sha512-9AGcX7VAkGbc5zTSa+bjQ757tkjr6C/pKS7OK8cX7QEiK6MHIIezBLcQ7gQqbDW2k5yaqba2aDtaBeyyZh1i6Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + /@next/swc-linux-x64-musl@14.2.10: resolution: {integrity: sha512-opFFN5B0SnO+HTz4Wq4HaylXGFV+iHrVxd3YvREUX9K+xfc4ePbRrxqOuPOFjtSuiVouwe6uLeDtabjEIbkmDA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] requiresBuild: true + dev: false optional: true /@next/swc-linux-x64-musl@14.2.14: @@ -12018,12 +12072,21 @@ packages: dev: false optional: true + /@next/swc-linux-x64-musl@14.2.16: + resolution: {integrity: sha512-Klgeagrdun4WWDaOizdbtIIm8khUDQJ/5cRzdpXHfkbY91LxBXeejL4kbZBrpR/nmgRrQvmz4l3OtttNVkz2Sg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + /@next/swc-win32-arm64-msvc@14.2.10: resolution: {integrity: sha512-9NUzZuR8WiXTvv+EiU/MXdcQ1XUvFixbLIMNQiVHuzs7ZIFrJDLJDaOF1KaqttoTujpcxljM/RNAOmw1GhPPQQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] requiresBuild: true + dev: false optional: true /@next/swc-win32-arm64-msvc@14.2.14: @@ -12035,12 +12098,21 @@ packages: dev: false optional: true + /@next/swc-win32-arm64-msvc@14.2.16: + resolution: {integrity: sha512-PwW8A1UC1Y0xIm83G3yFGPiOBftJK4zukTmk7DI1CebyMOoaVpd8aSy7K6GhobzhkjYvqS/QmzcfsWG2Dwizdg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + /@next/swc-win32-ia32-msvc@14.2.10: resolution: {integrity: sha512-fr3aEbSd1GeW3YUMBkWAu4hcdjZ6g4NBl1uku4gAn661tcxd1bHs1THWYzdsbTRLcCKLjrDZlNp6j2HTfrw+Bg==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] requiresBuild: true + dev: false optional: true /@next/swc-win32-ia32-msvc@14.2.14: @@ -12052,12 +12124,21 @@ packages: dev: false optional: true + /@next/swc-win32-ia32-msvc@14.2.16: + resolution: {integrity: sha512-jhPl3nN0oKEshJBNDAo0etGMzv0j3q3VYorTSFqH1o3rwv1MQRdor27u1zhkgsHPNeY1jxcgyx1ZsCkDD1IHgg==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + /@next/swc-win32-x64-msvc@14.2.10: resolution: {integrity: sha512-UjeVoRGKNL2zfbcQ6fscmgjBAS/inHBh63mjIlfPg/NG8Yn2ztqylXt5qilYb6hoHIwaU2ogHknHWWmahJjgZQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] requiresBuild: true + dev: false optional: true /@next/swc-win32-x64-msvc@14.2.14: @@ -12069,6 +12150,14 @@ packages: dev: false optional: true + /@next/swc-win32-x64-msvc@14.2.16: + resolution: {integrity: sha512-OA7NtfxgirCjfqt+02BqxC3MIgM/JaGjw9tOe4fyZgPsqfseNiMPnCRP44Pfs+Gpo9zPN+SXaFsgP6vk8d571A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} dependencies: @@ -12562,7 +12651,7 @@ packages: - typescript dev: true - /@nx/next@20.1.4(@babel/core@7.25.2)(@rspack/core@1.0.8)(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@18.16.9)(esbuild@0.24.0)(eslint@8.57.1)(html-webpack-plugin@5.6.2)(next@14.2.10)(nx@20.1.4)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(verdaccio@5.29.2)(vue-tsc@2.1.6)(webpack-cli@5.1.4)(webpack@5.93.0): + /@nx/next@20.1.4(@babel/core@7.25.2)(@rspack/core@1.0.8)(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@18.16.9)(esbuild@0.24.0)(eslint@8.57.1)(html-webpack-plugin@5.6.2)(next@14.2.16)(nx@20.1.4)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(verdaccio@5.29.2)(vue-tsc@2.1.6)(webpack@5.93.0): resolution: {integrity: sha512-wayIUtGgMNIt3zZZ6rCitLOpMB1f1IOr9eW9hIwJwf/AquOgcELM30beE6K5kHqtGHYwPNo+HRMVhxR5RrylSA==} peerDependencies: next: '>=14.0.0' @@ -12573,13 +12662,13 @@ packages: '@nx/js': 20.1.4(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@18.16.9)(nx@20.1.4)(typescript@5.5.2)(verdaccio@5.29.2) '@nx/react': 20.1.4(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@18.16.9)(eslint@8.57.1)(nx@20.1.4)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(verdaccio@5.29.2)(vue-tsc@2.1.6)(webpack@5.93.0) '@nx/web': 20.1.4(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@18.16.9)(nx@20.1.4)(typescript@5.5.2)(verdaccio@5.29.2) - '@nx/webpack': 20.1.4(@rspack/core@1.0.8)(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@18.16.9)(esbuild@0.24.0)(html-webpack-plugin@5.6.2)(nx@20.1.4)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(verdaccio@5.29.2)(vue-tsc@2.1.6)(webpack-cli@5.1.4) + '@nx/webpack': 20.1.4(@rspack/core@1.0.8)(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@18.16.9)(esbuild@0.24.0)(html-webpack-plugin@5.6.2)(nx@20.1.4)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(verdaccio@5.29.2)(vue-tsc@2.1.6) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.5.2) '@svgr/webpack': 8.1.0(typescript@5.5.2) copy-webpack-plugin: 10.2.4(webpack@5.93.0) file-loader: 6.2.0(webpack@5.93.0) ignore: 5.3.2 - next: 14.2.10(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1) + next: 14.2.16(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1) semver: 7.6.3 tslib: 2.6.3 webpack-merge: 5.10.0 @@ -12924,20 +13013,20 @@ packages: - verdaccio dev: true - /@nx/rspack@20.1.4(@module-federation/enhanced@0.6.11)(@module-federation/node@2.5.21)(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@swc/helpers@0.5.13)(@types/express@4.17.21)(@types/node@18.16.9)(html-webpack-plugin@5.6.2)(less@4.2.0)(nx@20.1.4)(react-refresh@0.14.2)(typescript@5.5.2)(verdaccio@5.29.2)(webpack-cli@5.1.4)(webpack@5.93.0): + /@nx/rspack@20.1.4(@module-federation/enhanced@0.6.11)(@module-federation/node@2.5.21)(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@swc/helpers@0.5.13)(@types/express@4.17.21)(@types/node@18.16.9)(html-webpack-plugin@5.6.2)(less@4.2.0)(nx@20.1.4)(react-refresh@0.14.2)(typescript@5.5.2)(verdaccio@5.29.2)(webpack@5.93.0): resolution: {integrity: sha512-s1CJLfAsR6Z47LIqBNkL8/SL8VaDBqdUZF0u6WGJkS2IacpSh2IXadEXxh5wGVA+19sukwWw/IROkVXwLCf1yw==} peerDependencies: '@module-federation/enhanced': ~0.6.0 '@module-federation/node': ~2.5.10 dependencies: '@module-federation/enhanced': 0.6.11(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(vue-tsc@2.1.6)(webpack@5.93.0) - '@module-federation/node': 2.5.21(next@14.2.10)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(vue-tsc@2.1.6)(webpack@5.93.0) + '@module-federation/node': 2.5.21(next@14.2.16)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(vue-tsc@2.1.6)(webpack@5.93.0) '@nx/devkit': 20.1.4(nx@20.1.4) '@nx/js': 20.1.4(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@18.16.9)(nx@20.1.4)(typescript@5.5.2)(verdaccio@5.29.2) '@nx/web': 20.1.4(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@18.16.9)(nx@20.1.4)(typescript@5.5.2)(verdaccio@5.29.2) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.5.2) '@rspack/core': 1.1.1(@swc/helpers@0.5.13) - '@rspack/dev-server': 1.0.9(@rspack/core@1.1.1)(@types/express@4.17.21)(webpack-cli@5.1.4)(webpack@5.93.0) + '@rspack/dev-server': 1.0.9(@rspack/core@1.1.1)(@types/express@4.17.21)(webpack@5.93.0) '@rspack/plugin-react-refresh': 1.0.0(react-refresh@0.14.2) autoprefixer: 10.4.20(postcss@8.4.47) chalk: 4.1.2 @@ -13080,7 +13169,7 @@ packages: - verdaccio dev: true - /@nx/webpack@20.1.1(@rspack/core@1.0.8)(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@20.12.14)(esbuild@0.18.20)(html-webpack-plugin@5.6.2)(nx@20.1.4)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(verdaccio@5.29.2)(vue-tsc@2.1.6)(webpack-cli@5.1.4): + /@nx/webpack@20.1.1(@rspack/core@1.0.8)(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@20.12.14)(esbuild@0.18.20)(html-webpack-plugin@5.6.2)(nx@20.1.4)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(verdaccio@5.29.2)(vue-tsc@2.1.6): resolution: {integrity: sha512-ucxJn9q/KboQ4ywtODmOYD9ac9FczdLd/1WDAPctxERuq71bfkwGmZGUzH3fDqolinek0kAIhn6ci3ww2/Qs1A==} dependencies: '@babel/core': 7.26.0 @@ -13120,8 +13209,8 @@ packages: ts-loader: 9.5.1(typescript@5.5.2)(webpack@5.93.0) tsconfig-paths-webpack-plugin: 4.0.0 tslib: 2.6.3 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) - webpack-dev-server: 5.1.0(webpack-cli@5.1.4)(webpack@5.93.0) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) + webpack-dev-server: 5.1.0(webpack@5.93.0) webpack-node-externals: 3.0.0 webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.2)(webpack@5.93.0) transitivePeerDependencies: @@ -13156,7 +13245,7 @@ packages: - webpack-cli dev: false - /@nx/webpack@20.1.4(@rspack/core@1.0.8)(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@18.16.9)(esbuild@0.24.0)(html-webpack-plugin@5.6.2)(nx@20.1.4)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(verdaccio@5.29.2)(vue-tsc@2.1.6)(webpack-cli@5.1.4): + /@nx/webpack@20.1.4(@rspack/core@1.0.8)(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@18.16.9)(esbuild@0.24.0)(html-webpack-plugin@5.6.2)(nx@20.1.4)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.2)(verdaccio@5.29.2)(vue-tsc@2.1.6): resolution: {integrity: sha512-Gl3bQlyCKU/T8pPSrdGzi7jNVC9pasPLVhEDfdOWMbAWBg0pTM20uDyVBPqfCZMZLHQBV1y5eHJx4CGMStX7hw==} dependencies: '@babel/core': 7.26.0 @@ -13196,8 +13285,8 @@ packages: ts-loader: 9.5.1(typescript@5.5.2)(webpack@5.93.0) tsconfig-paths-webpack-plugin: 4.0.0 tslib: 2.6.3 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) - webpack-dev-server: 5.1.0(webpack-cli@5.1.4)(webpack@5.93.0) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) + webpack-dev-server: 5.1.0(webpack@5.93.0) webpack-node-externals: 3.0.0 webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.2)(webpack@5.93.0) transitivePeerDependencies: @@ -13239,7 +13328,7 @@ packages: chalk: 4.1.2 enquirer: 2.3.6 nx: 20.1.1(@swc-node/register@1.10.9)(@swc/core@1.7.26) - tslib: 2.6.3 + tslib: 2.8.1 yargs-parser: 21.1.1 transitivePeerDependencies: - '@swc-node/register' @@ -13509,7 +13598,7 @@ packages: react-refresh: 0.14.2 schema-utils: 3.3.0 source-map: 0.7.4 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20) dev: true /@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.14.2)(webpack@5.93.0): @@ -13546,7 +13635,7 @@ packages: react-refresh: 0.14.2 schema-utils: 4.2.0 source-map: 0.7.4 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) dev: true /@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.14.2)(webpack@5.95.0): @@ -13583,7 +13672,7 @@ packages: react-refresh: 0.14.2 schema-utils: 4.2.0 source-map: 0.7.4 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19) dev: true /@pnpm/config.env-replace@1.1.0: @@ -15193,7 +15282,7 @@ packages: engines: {node: '>=16.7.0'} hasBin: true dependencies: - '@rspack/core': 1.0.10(@swc/helpers@0.5.13) + '@rspack/core': 1.0.14(@swc/helpers@0.5.13) '@rspack/lite-tapable': 1.0.1 '@swc/helpers': 0.5.13 caniuse-lite: 1.0.30001668 @@ -15214,17 +15303,15 @@ packages: optionalDependencies: fsevents: 2.3.3 - /@rsbuild/core@1.1.1: - resolution: {integrity: sha512-CJoO3PIC0Cm/z1iL6nWoIuQzETEMY+D+UIrlMGmWuhdGiixDE2x0spban7jmmJRE7w3Ns8b2ccCmhp6rovEojw==} + /@rsbuild/core@1.1.12: + resolution: {integrity: sha512-9f+E47fMf51Cg4W7CF2Q4f7BRSslVV/+TRvs5ScclYanqXEFtAGV9nuecJEL6Qc9jJV61lES0esPTFdPPnWPGw==} engines: {node: '>=16.7.0'} hasBin: true dependencies: - '@rspack/core': 1.1.1(@swc/helpers@0.5.15) + '@rspack/core': 1.1.8(@swc/helpers@0.5.15) '@rspack/lite-tapable': 1.0.1 '@swc/helpers': 0.5.15 core-js: 3.39.0 - optionalDependencies: - fsevents: 2.3.3 dev: true /@rsbuild/plugin-assets-retry@1.0.2(@rsbuild/core@1.0.19): @@ -15451,12 +15538,12 @@ packages: '@rspack/plugin-react-refresh': 1.0.0(react-refresh@0.14.2) react-refresh: 0.14.2 - /@rsbuild/plugin-react@1.0.6(@rsbuild/core@1.1.1): + /@rsbuild/plugin-react@1.0.6(@rsbuild/core@1.1.12): resolution: {integrity: sha512-k2VS7nvNm74DlVQROK+w+Ua1j60n3qSnVFva8zjmj6uakLCxxp85aRwfEHzaVP/YdDLffweypROuQPYvTZ57ew==} peerDependencies: '@rsbuild/core': 1.x dependencies: - '@rsbuild/core': 1.1.1 + '@rsbuild/core': 1.1.12 '@rspack/plugin-react-refresh': 1.0.0(react-refresh@0.14.2) react-refresh: 0.14.2 dev: true @@ -15573,7 +15660,7 @@ packages: toml: 3.0.0 dev: true - /@rsbuild/plugin-type-check@1.0.1(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.17.19)(typescript@5.0.4)(webpack-cli@5.1.4): + /@rsbuild/plugin-type-check@1.0.1(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.17.19)(typescript@5.0.4): resolution: {integrity: sha512-BahXAJNq4kWtL2dINUlrOL9UCN1t8c/qf5RW8JXx2HSSasfKPJGJ1BVfieMcIaFa/t8/QdafcwoxY1WKPTlSMg==} peerDependencies: '@rsbuild/core': 1.x || ^1.0.1-beta.0 @@ -15586,7 +15673,7 @@ packages: fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.0.4)(webpack@5.95.0) json5: 2.2.3 reduce-configs: 1.0.0 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19) transitivePeerDependencies: - '@swc/core' - esbuild @@ -15595,7 +15682,7 @@ packages: - webpack-cli dev: true - /@rsbuild/plugin-type-check@1.0.1(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.17.19)(typescript@5.5.2)(webpack-cli@5.1.4): + /@rsbuild/plugin-type-check@1.0.1(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.17.19)(typescript@5.5.2): resolution: {integrity: sha512-BahXAJNq4kWtL2dINUlrOL9UCN1t8c/qf5RW8JXx2HSSasfKPJGJ1BVfieMcIaFa/t8/QdafcwoxY1WKPTlSMg==} peerDependencies: '@rsbuild/core': 1.x || ^1.0.1-beta.0 @@ -15608,7 +15695,7 @@ packages: fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.5.2)(webpack@5.95.0) json5: 2.2.3 reduce-configs: 1.0.0 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19) transitivePeerDependencies: - '@swc/core' - esbuild @@ -15617,7 +15704,7 @@ packages: - webpack-cli dev: true - /@rsbuild/plugin-type-check@1.0.1(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.18.20)(typescript@5.0.4)(webpack-cli@5.1.4): + /@rsbuild/plugin-type-check@1.0.1(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.18.20)(typescript@5.0.4): resolution: {integrity: sha512-BahXAJNq4kWtL2dINUlrOL9UCN1t8c/qf5RW8JXx2HSSasfKPJGJ1BVfieMcIaFa/t8/QdafcwoxY1WKPTlSMg==} peerDependencies: '@rsbuild/core': 1.x || ^1.0.1-beta.0 @@ -15630,7 +15717,7 @@ packages: fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.0.4)(webpack@5.95.0) json5: 2.2.3 reduce-configs: 1.0.0 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20) transitivePeerDependencies: - '@swc/core' - esbuild @@ -15639,7 +15726,7 @@ packages: - webpack-cli dev: true - /@rsbuild/plugin-type-check@1.0.1(@rsbuild/core@1.1.1)(@swc/core@1.7.26)(esbuild@0.18.20)(typescript@5.5.2)(webpack-cli@5.1.4): + /@rsbuild/plugin-type-check@1.0.1(@rsbuild/core@1.1.12)(@swc/core@1.7.26)(esbuild@0.18.20)(typescript@5.5.2): resolution: {integrity: sha512-BahXAJNq4kWtL2dINUlrOL9UCN1t8c/qf5RW8JXx2HSSasfKPJGJ1BVfieMcIaFa/t8/QdafcwoxY1WKPTlSMg==} peerDependencies: '@rsbuild/core': 1.x || ^1.0.1-beta.0 @@ -15647,12 +15734,12 @@ packages: '@rsbuild/core': optional: true dependencies: - '@rsbuild/core': 1.1.1 + '@rsbuild/core': 1.1.12 deepmerge: 4.3.1 fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.5.2)(webpack@5.95.0) json5: 2.2.3 reduce-configs: 1.0.0 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20) transitivePeerDependencies: - '@swc/core' - esbuild @@ -15672,14 +15759,14 @@ packages: '@rsbuild/core': 1.0.19 dev: true - /@rsbuild/plugin-vue@1.0.3(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.24.0)(vue@3.5.10)(webpack-cli@5.1.4): + /@rsbuild/plugin-vue@1.0.3(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.24.0)(vue@3.5.10): resolution: {integrity: sha512-+g6PaZUQDNBDhM5lx1YuXqNHDdZGBnPwIi1DLMqNLwqKeG4wdAggT4oOj2LjXXyMIvlMrWz0No5J8QroZ3WkEA==} peerDependencies: '@rsbuild/core': 1.x dependencies: '@rsbuild/core': 1.0.19 vue-loader: 17.4.2(vue@3.5.10)(webpack@5.95.0) - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.24.0) transitivePeerDependencies: - '@swc/core' - '@vue/compiler-sfc' @@ -15748,7 +15835,7 @@ packages: - '@swc/helpers' dev: true - /@rsbuild/webpack@1.0.11(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.17.19)(webpack-cli@5.1.4): + /@rsbuild/webpack@1.0.11(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.17.19): resolution: {integrity: sha512-2x/QqNUEKEt7eao8FnYwlrwQUYSbuM9ihiI1RpSuKbi/ZZuHxrFA3fwnO7k1v/Xbs5mCQR+ni+da5dakypFktg==} peerDependencies: '@rsbuild/core': 1.x @@ -15759,7 +15846,7 @@ packages: picocolors: 1.1.1 reduce-configs: 1.0.0 tsconfig-paths-webpack-plugin: 4.1.0 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19) transitivePeerDependencies: - '@swc/core' - esbuild @@ -15767,7 +15854,7 @@ packages: - webpack-cli dev: true - /@rsbuild/webpack@1.0.11(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4): + /@rsbuild/webpack@1.0.11(@rsbuild/core@1.0.19)(@swc/core@1.7.26)(esbuild@0.18.20): resolution: {integrity: sha512-2x/QqNUEKEt7eao8FnYwlrwQUYSbuM9ihiI1RpSuKbi/ZZuHxrFA3fwnO7k1v/Xbs5mCQR+ni+da5dakypFktg==} peerDependencies: '@rsbuild/core': 1.x @@ -15778,7 +15865,7 @@ packages: picocolors: 1.1.1 reduce-configs: 1.0.0 tsconfig-paths-webpack-plugin: 4.1.0 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20) transitivePeerDependencies: - '@swc/core' - esbuild @@ -15786,8 +15873,8 @@ packages: - webpack-cli dev: true - /@rslib/core@0.0.18(typescript@5.5.2): - resolution: {integrity: sha512-TN3WOgpX5FvHDA5oWm/5vG+sQQhzkUiHx0YjgEQHA0IiRUJNwaqDvSyRyQkBqWrQw5o6WpVet9kM/P6+rm4RSw==} + /@rslib/core@0.2.0(typescript@5.5.2): + resolution: {integrity: sha512-SuqdKdHdXrdN2FgVzrb+RShl6op608FZ1mOd8NX4H8lGp6E+CAAL9gnH/H4n7ahBQvM1920w1WTmaYZPyhhLUg==} engines: {node: '>=16.0.0'} hasBin: true peerDependencies: @@ -15799,8 +15886,8 @@ packages: typescript: optional: true dependencies: - '@rsbuild/core': 1.1.1 - rsbuild-plugin-dts: 0.0.18(@rsbuild/core@1.1.1)(typescript@5.5.2) + '@rsbuild/core': 1.1.12 + rsbuild-plugin-dts: 0.2.0(@rsbuild/core@1.1.12)(typescript@5.5.2) tinyglobby: 0.2.10 typescript: 5.5.2 dev: true @@ -15829,14 +15916,6 @@ packages: dev: true optional: true - /@rspack/binding-darwin-arm64@1.0.10: - resolution: {integrity: sha512-byQuC3VSEHJxjcjdgOvEPPkteA7d/kKYGUTZjsAMsIriioCVkB+4OYfnQmnav8M0An9vBM34H2+IKqO1ge1+Aw==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@rspack/binding-darwin-arm64@1.0.14: resolution: {integrity: sha512-dHvlF6T6ctThGDIdvkSdacroA1xlCxfteuppBj8BX/UxzLPr4xsaEtNilfJmFfd2/J02UQyTQauN/9EBuA+YkA==} cpu: [arm64] @@ -15859,6 +15938,14 @@ packages: dev: true optional: true + /@rspack/binding-darwin-arm64@1.1.8: + resolution: {integrity: sha512-I7avr471ghQ3LAqKm2fuXuJPLgQ9gffn5Q4nHi8rsukuZUtiLDPfYzK1QuupEp2JXRWM1gG5lIbSUOht3cD6Ug==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-darwin-x64@0.5.0: resolution: {integrity: sha512-d6SvBURfKow3WcKxTrjJPBkp+NLsuCPoIMaS8/bM4gHwgjVs2zuOsTQ9+l36dypOkjnu6QLkOIykTdiUKJ0eQg==} cpu: [x64] @@ -15883,14 +15970,6 @@ packages: dev: true optional: true - /@rspack/binding-darwin-x64@1.0.10: - resolution: {integrity: sha512-L5dGmELiDDXAW3+yN11fwDbl8S9i7dwOvzygN/Iw+Md2WAODrFnTI/g++hOfdZzjUPtefyQUqoAcFOgpdxWSCQ==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@rspack/binding-darwin-x64@1.0.14: resolution: {integrity: sha512-q4Da1Bn/4xTLhhnOkT+fjP2STsSCfp4z03/J/h8tCVG/UYz56Ud3q1UEOK33c5Fxw1C4GlhEh5yYOlSAdxFQLQ==} cpu: [x64] @@ -15913,6 +15992,14 @@ packages: dev: true optional: true + /@rspack/binding-darwin-x64@1.1.8: + resolution: {integrity: sha512-vfqf/c+mcx8rr1M8LnqKmzDdnrgguflZnjGerBLjNerAc+dcUp3lCvNxRIvZ2TkSZZBW8BpCMgjj3n70CZ4VLQ==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-linux-arm64-gnu@0.5.0: resolution: {integrity: sha512-97xFbF7RjJc2VvX+0Hvb7Jzsk+eEE8oEUcc5Dnb7OIwGZulWKk6cLNcRkNfmL/F9kk1QEKlUTNC/VQI7ljf2tA==} cpu: [arm64] @@ -15937,14 +16024,6 @@ packages: dev: true optional: true - /@rspack/binding-linux-arm64-gnu@1.0.10: - resolution: {integrity: sha512-s+0AIGQQ2Npz3RcDQAFOLc4KYAZZ1g4oWxm2Ug7RSecwy7edK1uUDYE+boofEMgZ9+O3G5O+sXQr+SAyidS5EA==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@rspack/binding-linux-arm64-gnu@1.0.14: resolution: {integrity: sha512-JogYtL3VQS9wJ3p3FNhDqinm7avrMsdwz4erP7YCjD7idob93GYAE7dPrHUzSNVnCBYXRaHJYZHDQs7lKVcYZw==} cpu: [arm64] @@ -15967,32 +16046,32 @@ packages: dev: true optional: true - /@rspack/binding-linux-arm64-musl@0.5.0: - resolution: {integrity: sha512-lk0IomCy276EoynmksoBwg0IcHvvVXuZPMeq7OgRPTvs33mdTExSzSTPtrGzx/D00bX1ybUqLQwJhcgGt6erPQ==} + /@rspack/binding-linux-arm64-gnu@1.1.8: + resolution: {integrity: sha512-lZlO/rAJSeozi+qtVLkGSXfe+riPawCwM4FsrflELfNlvvEXpANwtrdJ+LsaNVXcgvhh50ZX2KicTdmx9G2b6Q==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rspack/binding-linux-arm64-musl@0.5.3: - resolution: {integrity: sha512-IBfVGpycRrLbyCWzokzeFIfK+yII68w1WOx2iCoR+tPUKa3M7WAZjrbVB33PHxGKXeF+xX7Lzm50hi4uTK8L6g==} + /@rspack/binding-linux-arm64-musl@0.5.0: + resolution: {integrity: sha512-lk0IomCy276EoynmksoBwg0IcHvvVXuZPMeq7OgRPTvs33mdTExSzSTPtrGzx/D00bX1ybUqLQwJhcgGt6erPQ==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rspack/binding-linux-arm64-musl@0.7.5: - resolution: {integrity: sha512-6RcxG42mLM01Pa6UYycACu/Nu9qusghAPUJumb8b8x5TRIDEtklYC5Ck6Rmagm+8E0ucMude2E/D4rMdIFcS3A==} + /@rspack/binding-linux-arm64-musl@0.5.3: + resolution: {integrity: sha512-IBfVGpycRrLbyCWzokzeFIfK+yII68w1WOx2iCoR+tPUKa3M7WAZjrbVB33PHxGKXeF+xX7Lzm50hi4uTK8L6g==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rspack/binding-linux-arm64-musl@1.0.10: - resolution: {integrity: sha512-KSPLOHcUC+8zA134RTCqo5bDqmX4ZwFz4LL+n/5i9yugHoiQVplEzh2TkFCVoAH85Xc40qPhxqGLJlhHh5qGEA==} + /@rspack/binding-linux-arm64-musl@0.7.5: + resolution: {integrity: sha512-6RcxG42mLM01Pa6UYycACu/Nu9qusghAPUJumb8b8x5TRIDEtklYC5Ck6Rmagm+8E0ucMude2E/D4rMdIFcS3A==} cpu: [arm64] os: [linux] requiresBuild: true @@ -16021,6 +16100,14 @@ packages: dev: true optional: true + /@rspack/binding-linux-arm64-musl@1.1.8: + resolution: {integrity: sha512-bX7exULSZwy8xtDh6Z65b6sRC4uSxGuyvSLCEKyhmG6AnJkg0gQMxk3hoO0hWnyGEZgdJEn+jEhk0fjl+6ZRAQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-linux-x64-gnu@0.5.0: resolution: {integrity: sha512-r15ddpse0S/8wHtfL85uJrVotvPVIMnQX06KlXyGUSw1jWrjxV+NXFDJ4xXnHCvk/YV6lCFTotAssk4wJEE0Fw==} cpu: [x64] @@ -16045,14 +16132,6 @@ packages: dev: true optional: true - /@rspack/binding-linux-x64-gnu@1.0.10: - resolution: {integrity: sha512-hiMIowGEUODn0LxV/Kc/oxHDXXSgu9BgPVZNprRTEZs3E7hHP4FX+YlzKafZ9G6qSY51GkiEDyEOb5X4Pq/eTw==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@rspack/binding-linux-x64-gnu@1.0.14: resolution: {integrity: sha512-5vzaDRw3/sGKo3ax/1cU3/cxqNjajwlt2LU288vXNe1/n8oe/pcDfYcTugpOe/A1DqzadanudJszLpFcKsaFtQ==} cpu: [x64] @@ -16075,32 +16154,32 @@ packages: dev: true optional: true - /@rspack/binding-linux-x64-musl@0.5.0: - resolution: {integrity: sha512-lB9Dn1bi4xyzEe6Bf/GQ7Ktlrq4Kmt1LHwN+t0m6iVYH3Vb/3g8uQGDSkwnjP8NmlAtldK1cmvRMhR7flUrgZA==} + /@rspack/binding-linux-x64-gnu@1.1.8: + resolution: {integrity: sha512-2Prw2USgTJ3aLdLExfik8pAwAHbX4MZrACBGEmR7Vbb56kLjC+++fXkciRc50pUDK4JFr1VQ7eNZrJuDR6GG6Q==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rspack/binding-linux-x64-musl@0.5.3: - resolution: {integrity: sha512-PZbmHZ/sFBC0W2vNNmMgeVORijAxhdkaU0QS95ltacO+bU8npcNb+01QgRzJovuhOfiT7HXDUmH7K0mrUqXpFg==} + /@rspack/binding-linux-x64-musl@0.5.0: + resolution: {integrity: sha512-lB9Dn1bi4xyzEe6Bf/GQ7Ktlrq4Kmt1LHwN+t0m6iVYH3Vb/3g8uQGDSkwnjP8NmlAtldK1cmvRMhR7flUrgZA==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rspack/binding-linux-x64-musl@0.7.5: - resolution: {integrity: sha512-dDgi/ThikMy1m4llxPeEXDCA2I8F8ezFS/eCPLZGU2/J1b4ALwDjuRsMmo+VXSlFCKgIt98V6h1woeg7nu96yg==} + /@rspack/binding-linux-x64-musl@0.5.3: + resolution: {integrity: sha512-PZbmHZ/sFBC0W2vNNmMgeVORijAxhdkaU0QS95ltacO+bU8npcNb+01QgRzJovuhOfiT7HXDUmH7K0mrUqXpFg==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rspack/binding-linux-x64-musl@1.0.10: - resolution: {integrity: sha512-OKb1PLOIulkg83zFyeFPowIzF7WdYVO6yRK7l+Kkick/cvALOj5XzRHyxrsb8VfJMpzHrPwsLV0RcGRT18BPMw==} + /@rspack/binding-linux-x64-musl@0.7.5: + resolution: {integrity: sha512-dDgi/ThikMy1m4llxPeEXDCA2I8F8ezFS/eCPLZGU2/J1b4ALwDjuRsMmo+VXSlFCKgIt98V6h1woeg7nu96yg==} cpu: [x64] os: [linux] requiresBuild: true @@ -16129,6 +16208,14 @@ packages: dev: true optional: true + /@rspack/binding-linux-x64-musl@1.1.8: + resolution: {integrity: sha512-bnVGB/mQBKEdzOU/CPmcOE3qEXxGOGGW7/i6iLl2MamVOykJq8fYjL9j86yi6L0r009ja16OgWckykQGc4UqGw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-win32-arm64-msvc@0.5.0: resolution: {integrity: sha512-aDoF13puU8LxST/qKZndtXzlJbnbnxY2Bxyj0fu7UDh8nHJD4A2HQfWRN6BZFHaVSqM6Bnli410dJrIWeTNhZQ==} cpu: [arm64] @@ -16153,14 +16240,6 @@ packages: dev: true optional: true - /@rspack/binding-win32-arm64-msvc@1.0.10: - resolution: {integrity: sha512-J2fCPYgiPyLo4pGZMHT72lGHK05puBYJzpCR8CmVCk+ktkhVcao9cA2BUT3Gr3UG2PPxfBFsDDmjA/FsUEdxrg==} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@rspack/binding-win32-arm64-msvc@1.0.14: resolution: {integrity: sha512-SjeYw7qqRHYZ5RPClu+ffKZsShQdU3amA1OwC3M0AS6dbfEcji8482St3Y8Z+QSzYRapCEZij9LMM/9ypEhISg==} cpu: [arm64] @@ -16183,6 +16262,14 @@ packages: dev: true optional: true + /@rspack/binding-win32-arm64-msvc@1.1.8: + resolution: {integrity: sha512-u+na3gxhzeksm4xZyAzn1+XWo5a5j7hgWA/KcFPDQ8qQNkRknx4jnQMxVtcZ9pLskAYV4AcOV/AIximx7zvv8A==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-win32-ia32-msvc@0.5.0: resolution: {integrity: sha512-EYGeH4YKX5v4gtTL8mBAWnsKSkF+clsKu0z1hgWgSV/vnntNlqJQZUCb5CMdg5VqadNm+lUNDYYHeHNa3+Jp3w==} cpu: [ia32] @@ -16207,14 +16294,6 @@ packages: dev: true optional: true - /@rspack/binding-win32-ia32-msvc@1.0.10: - resolution: {integrity: sha512-DQeGQgFS3jv+krfvp9dAKubGbY98nmsmf3ZeobyAnvq+AFDoVyOKImGp/GvZoCTr6jToFoz9+pPYbQyf15lw+g==} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@rspack/binding-win32-ia32-msvc@1.0.14: resolution: {integrity: sha512-m1gUiVyz3Z3VYIK/Ayo5CVHBjnEeRk9a+KIpKSsq1yhZItnMgjtr4bKabU9vjxalO4UoaSmVzODJI8lJBlnn5Q==} cpu: [ia32] @@ -16237,6 +16316,14 @@ packages: dev: true optional: true + /@rspack/binding-win32-ia32-msvc@1.1.8: + resolution: {integrity: sha512-FijUxym1INd5fFHwVCLuVP8XEAb4Sk1sMwEEQUlugiDra9ZsLaPw4OgPGxbxkD6SB0DeUz9Zq46Xbcf6d3OgfA==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@rspack/binding-win32-x64-msvc@0.5.0: resolution: {integrity: sha512-RCECFW6otUrFiPbWQyOvLZOMNV/OL6AyAKMDbX9ejjk0TjLMrHjnhmI5X8EoA/SUc1/vEbgsJzDVLKTfn138cg==} cpu: [x64] @@ -16261,14 +16348,6 @@ packages: dev: true optional: true - /@rspack/binding-win32-x64-msvc@1.0.10: - resolution: {integrity: sha512-1ad9SONsqp6XXxrCHsClnThW7BOrK5PWWslY+J3G0sHsXztSz/s9/CDRXUyJ8vuolpIy10E1Kyk1aV9y+IMs+g==} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@rspack/binding-win32-x64-msvc@1.0.14: resolution: {integrity: sha512-Gbeg+bayMF9VP9xmlxySL/TC2XrS6/LZM/pqcNOTLHx6LMG/VXCcmKB0rOZo8MzLXEt8D/lQmQ/B6g7pSaAw0g==} cpu: [x64] @@ -16291,6 +16370,14 @@ packages: dev: true optional: true + /@rspack/binding-win32-x64-msvc@1.1.8: + resolution: {integrity: sha512-SBzIcND4qpDt71jlu1MCDxt335tqInT3YID9V4DoQ4t8wgM/uad7EgKOWKTK6vc2RRaOIShfS2XzqjNUxPXh4w==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@rspack/binding@0.5.0: resolution: {integrity: sha512-+v1elZMn6lKBqbXQzhcfeCaPzztFNGEkNDEcQ7weako6yQPsBihGCRzveMMzZkja4RyB9GRHjWRE+THm8V8+3w==} optionalDependencies: @@ -16333,20 +16420,6 @@ packages: '@rspack/binding-win32-x64-msvc': 0.7.5 dev: true - /@rspack/binding@1.0.10: - resolution: {integrity: sha512-ILWPqLl0fS3a76OwQH6SlVIJBST39sc55yp0zwt484sb77khm0JGvJRElCdPuwgaR7JRDdqK23EvW0XIQAvY7A==} - optionalDependencies: - '@rspack/binding-darwin-arm64': 1.0.10 - '@rspack/binding-darwin-x64': 1.0.10 - '@rspack/binding-linux-arm64-gnu': 1.0.10 - '@rspack/binding-linux-arm64-musl': 1.0.10 - '@rspack/binding-linux-x64-gnu': 1.0.10 - '@rspack/binding-linux-x64-musl': 1.0.10 - '@rspack/binding-win32-arm64-msvc': 1.0.10 - '@rspack/binding-win32-ia32-msvc': 1.0.10 - '@rspack/binding-win32-x64-msvc': 1.0.10 - dev: true - /@rspack/binding@1.0.14: resolution: {integrity: sha512-0wWqFvr9hkF4LgNPgWfkTU0hhkZAMvOytoCs2p+wDX1Up1E/SgJ1U1JAsCxsl1XtUKm7mRvdWHzJmHbza3y89Q==} optionalDependencies: @@ -16387,6 +16460,20 @@ packages: '@rspack/binding-win32-x64-msvc': 1.1.1 dev: true + /@rspack/binding@1.1.8: + resolution: {integrity: sha512-+/JzXx1HctfgPj+XtsCTbRkxiaOfAXGZZLEvs7jgp04WgWRSZ5u97WRCePNPvy+sCfOEH/2zw2ZK36Z7oQRGhQ==} + optionalDependencies: + '@rspack/binding-darwin-arm64': 1.1.8 + '@rspack/binding-darwin-x64': 1.1.8 + '@rspack/binding-linux-arm64-gnu': 1.1.8 + '@rspack/binding-linux-arm64-musl': 1.1.8 + '@rspack/binding-linux-x64-gnu': 1.1.8 + '@rspack/binding-linux-x64-musl': 1.1.8 + '@rspack/binding-win32-arm64-msvc': 1.1.8 + '@rspack/binding-win32-ia32-msvc': 1.1.8 + '@rspack/binding-win32-x64-msvc': 1.1.8 + dev: true + /@rspack/core@0.5.0(@swc/helpers@0.5.3): resolution: {integrity: sha512-/Bpujdtx28qYir7AK9VVSbY35GBFEcZ1NTJZBx/WIzZGZWLCxhlVYfjH8cj44y4RvXa0Y26tnj/q7VJ4U3sHug==} engines: {node: '>=16.0.0'} @@ -16472,22 +16559,6 @@ packages: webpack-sources: 3.2.3 dev: true - /@rspack/core@1.0.10(@swc/helpers@0.5.13): - resolution: {integrity: sha512-Jvj6mzf/aFN3c2E+Lu+3dSz6df2pd79/XOLN9ElA7PIjVua4lVt+dUtrTXqVgoAjaKhZJrIt2WXALYdmv4kkVA==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@swc/helpers': '>=0.5.1' - peerDependenciesMeta: - '@swc/helpers': - optional: true - dependencies: - '@module-federation/runtime-tools': 0.5.1 - '@rspack/binding': 1.0.10 - '@rspack/lite-tapable': 1.0.1 - '@swc/helpers': 0.5.13 - caniuse-lite: 1.0.30001668 - dev: true - /@rspack/core@1.0.14(@swc/helpers@0.5.13): resolution: {integrity: sha512-xHl23lxJZNjItGc5YuE9alz3yjb56y7EgJmAcBMPHMqgjtUt8rBu4xd/cSUjbr9/lLF9N4hdyoJiPJOFs9LEjw==} engines: {node: '>=16.0.0'} @@ -16534,8 +16605,8 @@ packages: caniuse-lite: 1.0.30001668 dev: true - /@rspack/core@1.1.1(@swc/helpers@0.5.15): - resolution: {integrity: sha512-khYNAho2evyc7N5mYk4K6B587ou/dN1CDCqWrSDeZZNFFQHtuEp5T3kL1ntsKY7agObQhI60osCYaxFUPs0yww==} + /@rspack/core@1.1.8(@swc/helpers@0.5.15): + resolution: {integrity: sha512-pcZtcj5iXLCuw9oElTYC47bp/RQADm/MMEb3djHdwJuSlFWfWPQi5QFgJ/lJAxIW9UNHnTFrYtytycfjpuoEcA==} engines: {node: '>=16.0.0'} peerDependencies: '@swc/helpers': '>=0.5.1' @@ -16544,13 +16615,13 @@ packages: optional: true dependencies: '@module-federation/runtime-tools': 0.5.1 - '@rspack/binding': 1.1.1 + '@rspack/binding': 1.1.8 '@rspack/lite-tapable': 1.0.1 '@swc/helpers': 0.5.15 caniuse-lite: 1.0.30001668 dev: true - /@rspack/dev-server@1.0.9(@rspack/core@1.0.8)(@types/express@4.17.21)(webpack-cli@5.1.4)(webpack@5.93.0): + /@rspack/dev-server@1.0.9(@rspack/core@1.0.8)(@types/express@4.17.21)(webpack@5.93.0): resolution: {integrity: sha512-VF+apLFfl5LWIhVbfkJ5ccU0Atl5mi+sGTkx+XtE1tbUmMJkde0nm/4+eaQCud7oGl+ZCzt4kW14uuzLSiEGDw==} peerDependencies: '@rspack/core': '*' @@ -16563,7 +16634,7 @@ packages: mime-types: 2.1.35 p-retry: 4.6.2 webpack-dev-middleware: 7.4.2(webpack@5.93.0) - webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.93.0) + webpack-dev-server: 5.0.4(webpack@5.93.0) ws: 8.18.0 transitivePeerDependencies: - '@types/express' @@ -16575,7 +16646,7 @@ packages: - webpack-cli dev: true - /@rspack/dev-server@1.0.9(@rspack/core@1.1.1)(@types/express@4.17.21)(webpack-cli@5.1.4)(webpack@5.93.0): + /@rspack/dev-server@1.0.9(@rspack/core@1.1.1)(@types/express@4.17.21)(webpack@5.93.0): resolution: {integrity: sha512-VF+apLFfl5LWIhVbfkJ5ccU0Atl5mi+sGTkx+XtE1tbUmMJkde0nm/4+eaQCud7oGl+ZCzt4kW14uuzLSiEGDw==} peerDependencies: '@rspack/core': '*' @@ -16588,7 +16659,7 @@ packages: mime-types: 2.1.35 p-retry: 4.6.2 webpack-dev-middleware: 7.4.2(webpack@5.93.0) - webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.93.0) + webpack-dev-server: 5.0.4(webpack@5.93.0) ws: 8.18.0 transitivePeerDependencies: - '@types/express' @@ -17575,7 +17646,7 @@ packages: - supports-color dev: true - /@storybook/builder-webpack5@8.3.5(@rspack/core@1.0.8)(@swc/core@1.7.26)(esbuild@0.24.0)(storybook@8.3.5)(typescript@5.5.2)(webpack-cli@5.1.4): + /@storybook/builder-webpack5@8.3.5(@rspack/core@1.0.8)(@swc/core@1.7.26)(esbuild@0.24.0)(storybook@8.3.5)(typescript@5.5.2): resolution: {integrity: sha512-rhmfdiSlDn3Arki7IMYk11PO29rYuYM4LZ8GlNqREU7VUl/8Vngo/jFIa4pKaIns3ql1RrwzO1wm9JvuL/4ydA==} peerDependencies: storybook: ^8.3.5 @@ -17609,7 +17680,7 @@ packages: url: 0.11.4 util: 0.12.5 util-deprecate: 1.0.2 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) webpack-dev-middleware: 6.1.3(webpack@5.93.0) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.6.2 @@ -18154,7 +18225,7 @@ packages: resolution: {integrity: sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw==} dev: true - /@storybook/nextjs@8.3.5(@rspack/core@1.0.8)(@swc/core@1.7.26)(esbuild@0.24.0)(next@14.2.10)(react-dom@18.3.1)(react@18.3.1)(storybook@8.3.5)(typescript@5.5.2)(webpack-cli@5.1.4)(webpack@5.93.0): + /@storybook/nextjs@8.3.5(@rspack/core@1.0.8)(@swc/core@1.7.26)(esbuild@0.24.0)(next@14.2.16)(react-dom@18.3.1)(react@18.3.1)(storybook@8.3.5)(typescript@5.5.2)(webpack@5.93.0): resolution: {integrity: sha512-YMjDSVd7BHIvj6oLMEFMKRvfZ83INxZinxtrx4ZZXGe+5iP8j7rcV7D67lxKQKWNy36d9Foj4pjT85yYj5s+ZQ==} engines: {node: '>=18.0.0'} peerDependencies: @@ -18184,8 +18255,8 @@ packages: '@babel/preset-typescript': 7.26.0(@babel/core@7.25.7) '@babel/runtime': 7.25.7 '@pmmmwh/react-refresh-webpack-plugin': 0.5.15(react-refresh@0.14.2)(webpack@5.93.0) - '@storybook/builder-webpack5': 8.3.5(@rspack/core@1.0.8)(@swc/core@1.7.26)(esbuild@0.24.0)(storybook@8.3.5)(typescript@5.5.2)(webpack-cli@5.1.4) - '@storybook/preset-react-webpack': 8.3.5(@storybook/test@8.3.5)(@swc/core@1.7.26)(esbuild@0.24.0)(react-dom@18.3.1)(react@18.3.1)(storybook@8.3.5)(typescript@5.5.2)(webpack-cli@5.1.4) + '@storybook/builder-webpack5': 8.3.5(@rspack/core@1.0.8)(@swc/core@1.7.26)(esbuild@0.24.0)(storybook@8.3.5)(typescript@5.5.2) + '@storybook/preset-react-webpack': 8.3.5(@storybook/test@8.3.5)(@swc/core@1.7.26)(esbuild@0.24.0)(react-dom@18.3.1)(react@18.3.1)(storybook@8.3.5)(typescript@5.5.2) '@storybook/react': 8.3.5(@storybook/test@8.3.5)(react-dom@18.3.1)(react@18.3.1)(storybook@8.3.5)(typescript@5.5.2) '@storybook/test': 8.3.5(storybook@8.3.5) '@types/node': 22.7.4 @@ -18196,7 +18267,7 @@ packages: fs-extra: 11.2.0 image-size: 1.1.1 loader-utils: 3.3.1 - next: 14.2.10(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1) + next: 14.2.16(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1) node-polyfill-webpack-plugin: 2.0.1(webpack@5.93.0) pnp-webpack-plugin: 1.7.0(typescript@5.5.2) postcss: 8.4.47 @@ -18214,7 +18285,7 @@ packages: tsconfig-paths: 4.2.0 tsconfig-paths-webpack-plugin: 4.1.0 typescript: 5.5.2 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) optionalDependencies: sharp: 0.33.5 transitivePeerDependencies: @@ -18245,7 +18316,7 @@ packages: resolution: {integrity: sha512-wdzFo7B2naGhS52L3n1qBkt5BfvQjs8uax6B741yKRpiGgeAN8nz8+qelkD25MbSukxvbPgDot7WJvsMU/iCzg==} dev: true - /@storybook/preset-react-webpack@8.3.5(@storybook/test@8.3.5)(@swc/core@1.7.26)(esbuild@0.24.0)(react-dom@18.3.1)(react@18.3.1)(storybook@8.3.5)(typescript@5.5.2)(webpack-cli@5.1.4): + /@storybook/preset-react-webpack@8.3.5(@storybook/test@8.3.5)(@swc/core@1.7.26)(esbuild@0.24.0)(react-dom@18.3.1)(react@18.3.1)(storybook@8.3.5)(typescript@5.5.2): resolution: {integrity: sha512-laS9CiZrZ4CSnBTBfkBba3hmlDhzcjIfCvx8/rk3SZ+zh93NpqXixzRt6m0UH2po63dpdu21nXrsW5Cfs88Ypw==} engines: {node: '>=18.0.0'} peerDependencies: @@ -18273,7 +18344,7 @@ packages: storybook: 8.3.5 tsconfig-paths: 4.2.0 typescript: 5.5.2 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) transitivePeerDependencies: - '@storybook/test' - '@swc/core' @@ -18336,7 +18407,7 @@ packages: react-docgen-typescript: 2.2.2(typescript@5.5.2) tslib: 2.6.3 typescript: 5.5.2 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) transitivePeerDependencies: - supports-color dev: true @@ -18353,9 +18424,9 @@ packages: flat-cache: 3.2.0 micromatch: 4.0.8 react-docgen-typescript: 2.2.2(typescript@5.0.4) - tslib: 2.6.3 + tslib: 2.8.1 typescript: 5.0.4 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) transitivePeerDependencies: - supports-color dev: true @@ -18372,9 +18443,9 @@ packages: flat-cache: 3.2.0 micromatch: 4.0.8 react-docgen-typescript: 2.2.2(typescript@5.5.2) - tslib: 2.6.3 + tslib: 2.8.1 typescript: 5.5.2 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) transitivePeerDependencies: - supports-color dev: true @@ -18993,7 +19064,7 @@ packages: /@swc/helpers@0.5.1: resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} dependencies: - tslib: 2.6.3 + tslib: 2.8.1 /@swc/helpers@0.5.13: resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} @@ -19180,7 +19251,7 @@ packages: /@tybys/wasm-util@0.9.0: resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} dependencies: - tslib: 2.6.3 + tslib: 2.8.1 /@types/accepts@1.3.7: resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} @@ -20738,7 +20809,7 @@ packages: '@babel/core': 7.25.2 '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.25.2) - vite: 5.2.14(@types/node@16.11.68)(less@4.2.0)(stylus@0.64.0) + vite: 5.2.14(@types/node@18.16.9)(less@4.2.0)(stylus@0.64.0) vue: 3.5.10(typescript@5.5.2) transitivePeerDependencies: - supports-color @@ -20751,7 +20822,7 @@ packages: vite: ^5.0.0 vue: ^3.2.25 dependencies: - vite: 5.2.14(@types/node@16.11.68)(less@4.2.0)(stylus@0.64.0) + vite: 5.2.14(@types/node@18.16.9)(less@4.2.0)(stylus@0.64.0) vue: 3.5.10(typescript@5.5.2) dev: true @@ -21366,40 +21437,6 @@ packages: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - /@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.93.0): - resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} - engines: {node: '>=14.15.0'} - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - dependencies: - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.93.0) - - /@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.93.0): - resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} - engines: {node: '>=14.15.0'} - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - dependencies: - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.93.0) - - /@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.93.0): - resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} - engines: {node: '>=14.15.0'} - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - webpack-dev-server: '*' - peerDependenciesMeta: - webpack-dev-server: - optional: true - dependencies: - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.93.0) - /@xmldom/xmldom@0.8.10: resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} engines: {node: '>=10.0.0'} @@ -21418,7 +21455,7 @@ packages: esbuild: '>=0.10.0' dependencies: esbuild: 0.18.20 - tslib: 2.6.3 + tslib: 2.8.1 dev: true /@yarnpkg/fslib@2.10.3: @@ -21445,7 +21482,7 @@ packages: engines: {node: '>=18.12.0'} dependencies: js-yaml: 3.14.1 - tslib: 2.6.3 + tslib: 2.8.1 /@zkochan/js-yaml@0.0.7: resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} @@ -22028,7 +22065,7 @@ packages: resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} engines: {node: '>=10'} dependencies: - tslib: 2.6.3 + tslib: 2.8.1 dev: true /aria-query@5.3.0: @@ -22234,14 +22271,14 @@ packages: resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} engines: {node: '>=4'} dependencies: - tslib: 2.6.3 + tslib: 2.8.1 dev: true /ast-types@0.16.1: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} dependencies: - tslib: 2.6.3 + tslib: 2.8.1 /astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} @@ -22408,7 +22445,7 @@ packages: '@babel/core': 7.26.0 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19) dev: true /babel-loader@9.2.1(@babel/core@7.25.2)(webpack@5.93.0): @@ -22421,7 +22458,7 @@ packages: '@babel/core': 7.25.2 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) dev: true /babel-loader@9.2.1(@babel/core@7.25.7)(webpack@5.93.0): @@ -22434,7 +22471,7 @@ packages: '@babel/core': 7.25.7 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) dev: true /babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.93.0): @@ -22447,7 +22484,7 @@ packages: '@babel/core': 7.26.0 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) /babel-plugin-apply-mdx-type-prop@1.6.22(@babel/core@7.12.9): resolution: {integrity: sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==} @@ -23246,7 +23283,7 @@ packages: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 - tslib: 2.6.3 + tslib: 2.8.1 /camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} @@ -23645,6 +23682,7 @@ packages: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 + dev: true /clone-response@1.0.3: resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} @@ -23778,6 +23816,7 @@ packages: /commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} + dev: true /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -24110,7 +24149,7 @@ packages: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) /copy-webpack-plugin@11.0.0(webpack@5.93.0): resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} @@ -24124,7 +24163,7 @@ packages: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) dev: true /copy-webpack-plugin@11.0.0(webpack@5.95.0): @@ -24139,7 +24178,7 @@ packages: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19) dev: true /core-js-compat@3.38.1: @@ -24455,7 +24494,7 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.47) postcss-value-parser: 4.2.0 semver: 7.6.3 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) /css-loader@6.11.0(@rspack/core@1.1.1)(webpack@5.93.0): resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} @@ -24478,7 +24517,7 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.47) postcss-value-parser: 4.2.0 semver: 7.6.3 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) dev: true /css-minimizer-webpack-plugin@5.0.1(esbuild@0.17.19)(webpack@5.95.0): @@ -24513,7 +24552,7 @@ packages: postcss: 8.4.47 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19) dev: true /css-minimizer-webpack-plugin@5.0.1(esbuild@0.18.20)(webpack@5.93.0): @@ -24548,7 +24587,7 @@ packages: postcss: 8.4.47 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) /css-minimizer-webpack-plugin@5.0.1(esbuild@0.18.20)(webpack@5.95.0): resolution: {integrity: sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==} @@ -24582,7 +24621,7 @@ packages: postcss: 8.4.47 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20) dev: true /css-minimizer-webpack-plugin@5.0.1(esbuild@0.24.0)(webpack@5.93.0): @@ -24617,7 +24656,7 @@ packages: postcss: 8.4.47 schema-utils: 4.2.0 serialize-javascript: 6.0.2 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) dev: true /css-select@4.3.0: @@ -25205,7 +25244,6 @@ packages: dependencies: ms: 2.1.3 supports-color: 8.1.1 - dev: true /debug@4.3.7(supports-color@9.3.1): resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} @@ -25626,7 +25664,7 @@ packages: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 - tslib: 2.6.3 + tslib: 2.8.1 /dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} @@ -25823,6 +25861,7 @@ packages: resolution: {integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==} engines: {node: '>=4'} hasBin: true + dev: true /environment@1.1.0: resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} @@ -27531,10 +27570,6 @@ packages: /fast-uri@3.0.2: resolution: {integrity: sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==} - /fastest-levenshtein@1.0.16: - resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} - engines: {node: '>= 4.9.1'} - /fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: @@ -27646,7 +27681,7 @@ packages: dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) /file-system-cache@2.3.0: resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} @@ -27913,7 +27948,7 @@ packages: resolution: {integrity: sha512-QFaHbhv9WPUeLYBDe/PAuLKJ4Dd9OPvKs9xZBr3yLXnUrDNaVXKu2baDBXe3naPY30hgHYSsf2JW4jzas2mDEQ==} engines: {node: '>=10'} dependencies: - tslib: 2.6.3 + tslib: 2.8.1 dev: false /follow-redirects@1.15.9(debug@4.3.7): @@ -27991,7 +28026,7 @@ packages: semver: 7.6.3 tapable: 2.2.1 typescript: 5.5.2 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) /fork-ts-checker-webpack-plugin@8.0.0(typescript@5.0.4)(webpack@5.93.0): resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} @@ -28013,7 +28048,7 @@ packages: semver: 7.6.3 tapable: 2.2.1 typescript: 5.0.4 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) dev: true /fork-ts-checker-webpack-plugin@8.0.0(typescript@5.5.2)(webpack@5.93.0): @@ -28036,7 +28071,7 @@ packages: semver: 7.6.3 tapable: 2.2.1 typescript: 5.5.2 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) dev: true /fork-ts-checker-webpack-plugin@9.0.2(typescript@5.0.4)(webpack@5.95.0): @@ -28059,7 +28094,7 @@ packages: semver: 7.6.3 tapable: 2.2.1 typescript: 5.0.4 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19) dev: true /fork-ts-checker-webpack-plugin@9.0.2(typescript@5.5.2)(webpack@5.95.0): @@ -28082,7 +28117,7 @@ packages: semver: 7.6.3 tapable: 2.2.1 typescript: 5.5.2 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20) dev: true /form-data-encoder@1.7.2: @@ -29343,7 +29378,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20) dev: true /html-webpack-plugin@5.6.2(@rspack/core@1.0.8)(webpack@5.93.0): @@ -29364,7 +29399,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) /html-webpack-plugin@5.6.3(@rspack/core@1.0.8)(webpack@5.95.0): resolution: {integrity: sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==} @@ -29384,7 +29419,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19) dev: true /htmlparser2@6.1.0: @@ -29801,6 +29836,7 @@ packages: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 + dev: true /import-meta-resolve@4.1.0: resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} @@ -29922,10 +29958,6 @@ packages: side-channel: 1.0.6 dev: true - /interpret@3.1.1: - resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} - engines: {node: '>=10.13.0'} - /intersection-observer@0.12.2: resolution: {integrity: sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==} dev: false @@ -30326,6 +30358,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 + dev: true /is-plain-object@3.0.1: resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} @@ -30527,10 +30560,17 @@ packages: /isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} + dev: true /isomorphic-rslog@0.0.6: resolution: {integrity: sha512-HM0q6XqQ93psDlqvuViNs/Ea3hAyGDkIdVAHlrEocjjAwGrs1fZ+EdQjS9eUPacnYB7Y8SoDdSY3H8p3ce205A==} engines: {node: '>=14.17.6'} + dev: true + + /isomorphic-rslog@0.0.7: + resolution: {integrity: sha512-n6/XnKnZ5eLEj6VllG4XmamXG7/F69nls8dcynHyhcTpsPUYgcgx4ifEaCo4lQJ2uzwfmIT+F0KBGwBcMKmt5g==} + engines: {node: '>=14.17.6'} + dev: false /isomorphic-ws@5.0.0(ws@8.17.1): resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} @@ -31729,7 +31769,7 @@ packages: dependencies: klona: 2.0.6 less: 4.1.3 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) /less-loader@11.1.0(less@4.2.0)(webpack@5.93.0): resolution: {integrity: sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==} @@ -31740,7 +31780,7 @@ packages: dependencies: klona: 2.0.6 less: 4.2.0 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) dev: true /less@4.1.3: @@ -31767,7 +31807,7 @@ packages: dependencies: copy-anything: 2.0.6 parse-node-version: 1.0.1 - tslib: 2.6.3 + tslib: 2.8.1 optionalDependencies: errno: 0.1.8 graceful-fs: 4.2.11 @@ -31804,7 +31844,7 @@ packages: webpack-sources: optional: true dependencies: - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) webpack-sources: 3.2.3 /lilconfig@2.1.0: @@ -32168,7 +32208,7 @@ packages: /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.6.3 + tslib: 2.8.1 /lowercase-keys@2.0.0: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} @@ -32240,6 +32280,12 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + /magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + dev: true + /magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} dependencies: @@ -32597,10 +32643,10 @@ packages: resolution: {integrity: sha512-74wDsex5tQDSClVkeK1vtxqYCAgCoXxx+K4NSHzgU/muYVYByFqa+0RnrPO9NM6naWm1+G9JmZ0p6QHhXmeYfA==} engines: {node: '>= 4.0.0'} dependencies: - '@jsonjoy.com/json-pack': 1.1.0(tslib@2.6.3) - '@jsonjoy.com/util': 1.3.0(tslib@2.6.3) - tree-dump: 1.0.2(tslib@2.6.3) - tslib: 2.6.3 + '@jsonjoy.com/json-pack': 1.1.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.3.0(tslib@2.8.1) + tree-dump: 1.0.2(tslib@2.8.1) + tslib: 2.8.1 /memoizerific@1.11.3: resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} @@ -33089,7 +33135,7 @@ packages: webpack: ^5.0.0 dependencies: schema-utils: 4.2.0 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) /mini-css-extract-plugin@2.7.6(webpack@5.95.0): resolution: {integrity: sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==} @@ -33098,7 +33144,7 @@ packages: webpack: ^5.0.0 dependencies: schema-utils: 4.2.0 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20) dev: true /mini-css-extract-plugin@2.9.1(webpack@5.95.0): @@ -33109,7 +33155,7 @@ packages: dependencies: schema-utils: 4.2.0 tapable: 2.2.1 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19) dev: true /mini-svg-data-uri@1.4.4: @@ -33472,6 +33518,7 @@ packages: transitivePeerDependencies: - '@babel/core' - babel-plugin-macros + dev: false /next@14.2.14(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-Q1coZG17MW0Ly5x76shJ4dkC23woLAhhnDnw+DfTc7EpZSGuWrlsZ3bZaO8t6u1Yu8FVfhkqJE+U8GC7E0GLPQ==} @@ -33515,11 +33562,52 @@ packages: - babel-plugin-macros dev: false + /next@14.2.16(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-LcO7WnFu6lYSvCzZoo1dB+IO0xXz5uEv52HF1IUN0IqVTUIZGHuuR10I5efiLadGt+4oZqTcNZyVVEem/TM5nA==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true + dependencies: + '@next/env': 14.2.16 + '@swc/helpers': 0.5.5 + busboy: 1.6.0 + caniuse-lite: 1.0.30001668 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + styled-jsx: 5.1.1(@babel/core@7.25.2)(react@18.3.1) + optionalDependencies: + '@next/swc-darwin-arm64': 14.2.16 + '@next/swc-darwin-x64': 14.2.16 + '@next/swc-linux-arm64-gnu': 14.2.16 + '@next/swc-linux-arm64-musl': 14.2.16 + '@next/swc-linux-x64-gnu': 14.2.16 + '@next/swc-linux-x64-musl': 14.2.16 + '@next/swc-win32-arm64-msvc': 14.2.16 + '@next/swc-win32-ia32-msvc': 14.2.16 + '@next/swc-win32-x64-msvc': 14.2.16 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + /no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.6.3 + tslib: 2.8.1 /node-abort-controller@3.1.1: resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} @@ -33635,7 +33723,7 @@ packages: url: 0.11.4 util: 0.12.5 vm-browserify: 1.1.2 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) dev: true /node-releases@2.0.18: @@ -33990,7 +34078,7 @@ packages: tar-stream: 2.2.0 tmp: 0.2.3 tsconfig-paths: 4.2.0 - tslib: 2.6.3 + tslib: 2.8.1 yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: @@ -34544,7 +34632,7 @@ packages: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 - tslib: 2.6.3 + tslib: 2.8.1 /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} @@ -34672,7 +34760,7 @@ packages: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 - tslib: 2.6.3 + tslib: 2.8.1 /pascalcase@0.1.1: resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} @@ -34918,6 +35006,7 @@ packages: engines: {node: '>=8'} dependencies: find-up: 4.1.0 + dev: true /pkg-dir@5.0.0: resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} @@ -35354,7 +35443,7 @@ packages: klona: 2.0.6 postcss: 8.4.47 semver: 7.6.3 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) /postcss-loader@8.1.1(@rspack/core@1.0.8)(postcss@8.4.47)(typescript@5.5.2)(webpack@5.93.0): resolution: {integrity: sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==} @@ -35374,7 +35463,7 @@ packages: jiti: 1.21.6 postcss: 8.4.47 semver: 7.6.3 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) transitivePeerDependencies: - typescript dev: true @@ -35397,7 +35486,7 @@ packages: jiti: 1.21.6 postcss: 8.4.47 semver: 7.6.3 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) transitivePeerDependencies: - typescript dev: true @@ -37699,12 +37788,12 @@ packages: react: 18.3.1 dev: true - /react-error-boundary@4.0.13(react@18.3.1): - resolution: {integrity: sha512-b6PwbdSv8XeOSYvjt8LpgpKrZ0yGdtZokYwkwV2wlcZbxgopHX/hgPl5VgpnoVOWd868n1hktM8Qm4b+02MiLQ==} + /react-error-boundary@4.1.2(react@18.3.1): + resolution: {integrity: sha512-GQDxZ5Jd+Aq/qUxbCm1UtzmL/s++V7zKgE8yMktJiCQXCCFZnMZh9ng+6/Ne6PjNSXH0L9CjeOEREfRnq6Duag==} peerDependencies: react: '>=16.13.1' dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 react: 18.3.1 dev: false @@ -37790,7 +37879,7 @@ packages: '@types/react': 18.2.79 react: 18.3.1 react-style-singleton: 2.2.1(@types/react@18.2.79)(react@18.3.1) - tslib: 2.6.3 + tslib: 2.8.1 dev: true /react-remove-scroll@2.5.5(@types/react@18.2.79)(react@18.3.1): @@ -37807,7 +37896,7 @@ packages: react: 18.3.1 react-remove-scroll-bar: 2.3.6(@types/react@18.2.79)(react@18.3.1) react-style-singleton: 2.2.1(@types/react@18.2.79)(react@18.3.1) - tslib: 2.6.3 + tslib: 2.8.1 use-callback-ref: 1.3.2(@types/react@18.2.79)(react@18.3.1) use-sidecar: 1.1.2(@types/react@18.2.79)(react@18.3.1) dev: true @@ -38000,7 +38089,7 @@ packages: get-nonce: 1.0.1 invariant: 2.2.4 react: 18.3.1 - tslib: 2.6.3 + tslib: 2.8.1 dev: true /react-syntax-highlighter@15.5.0(react@18.3.1): @@ -38190,12 +38279,6 @@ packages: tiny-invariant: 1.3.3 tslib: 2.6.3 - /rechoir@0.8.0: - resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} - engines: {node: '>= 10.13.0'} - dependencies: - resolve: 1.22.8 - /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -38561,6 +38644,7 @@ packages: engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 + dev: true /resolve-dir@1.0.1: resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} @@ -38837,8 +38921,8 @@ packages: resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} dev: true - /rsbuild-plugin-dts@0.0.18(@rsbuild/core@1.1.1)(typescript@5.5.2): - resolution: {integrity: sha512-svOrOUi3INkEEhUShMtUBqpBKNdco6qY8BmvO7wAHzU736p3bemlf79ubxDpWFR1WbML9ahv6MqrIQunu3aDNg==} + /rsbuild-plugin-dts@0.2.0(@rsbuild/core@1.1.12)(typescript@5.5.2): + resolution: {integrity: sha512-62ioO9WoBeSzaE81Vq+MLJm0ZPdP8osyYnQLdy49pFHw8avhyR58NJdMevrwVC54k4ziaTQrTa4mAJwXN0Z62A==} engines: {node: '>=16.0.0'} peerDependencies: '@microsoft/api-extractor': ^7 @@ -38850,14 +38934,14 @@ packages: typescript: optional: true dependencies: - '@rsbuild/core': 1.1.1 - magic-string: 0.30.12 + '@rsbuild/core': 1.1.12 + magic-string: 0.30.17 picocolors: 1.1.1 tinyglobby: 0.2.10 typescript: 5.5.2 dev: true - /rsbuild-plugin-html-minifier-terser@1.1.1(@rsbuild/core@1.1.1): + /rsbuild-plugin-html-minifier-terser@1.1.1(@rsbuild/core@1.1.12): resolution: {integrity: sha512-rbDLv+XmGeSQo9JWKSwBst3Qwx1opLqtQCnQ3t9Z0F0ZTxKOC1S/ypPv5tSn/S3GMHct5Yb76mMgh6p80hjOAQ==} peerDependencies: '@rsbuild/core': 1.x || ^1.0.1-beta.0 @@ -38865,7 +38949,7 @@ packages: '@rsbuild/core': optional: true dependencies: - '@rsbuild/core': 1.1.1 + '@rsbuild/core': 1.1.12 '@types/html-minifier-terser': 7.0.2 html-minifier-terser: 7.2.0 dev: true @@ -39442,7 +39526,7 @@ packages: klona: 2.0.6 neo-async: 2.6.2 sass: 1.79.4 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) /sass-loader@13.3.3(webpack@5.93.0): resolution: {integrity: sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==} @@ -39464,7 +39548,7 @@ packages: optional: true dependencies: neo-async: 2.6.2 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) dev: true /sass@1.79.4: @@ -39804,6 +39888,7 @@ packages: engines: {node: '>=8'} dependencies: kind-of: 6.0.3 + dev: true /shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} @@ -39972,7 +40057,7 @@ packages: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} dependencies: dot-case: 3.0.4 - tslib: 2.6.3 + tslib: 2.8.1 /snapdragon-node@2.1.1: resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} @@ -40052,7 +40137,7 @@ packages: dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) /source-map-resolve@0.5.3: resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} @@ -40269,7 +40354,7 @@ packages: dependencies: graceful-fs: 4.2.11 - /storybook-addon-rslib@0.1.4(@rsbuild/core@1.1.1)(@rslib/core@0.0.18)(storybook-builder-rsbuild@0.1.5)(typescript@5.5.2): + /storybook-addon-rslib@0.1.4(@rsbuild/core@1.1.12)(@rslib/core@0.2.0)(storybook-builder-rsbuild@0.1.5)(typescript@5.5.2): resolution: {integrity: sha512-JXF2OZb3NXE7iYztLxiOTMP1j2BGHSNhREu+5LCjsOXxXFXiJrh4T8OeVLKsg7FlBSfnTkALSra0vHHnerFlfA==} engines: {node: '>=18.0.0'} peerDependencies: @@ -40281,13 +40366,13 @@ packages: typescript: optional: true dependencies: - '@rsbuild/core': 1.1.1 - '@rslib/core': 0.0.18(typescript@5.5.2) - storybook-builder-rsbuild: 0.1.5(@rsbuild/core@1.1.1)(@swc/core@1.7.26)(esbuild@0.18.20)(storybook@8.4.2)(typescript@5.5.2)(webpack-cli@5.1.4) + '@rsbuild/core': 1.1.12 + '@rslib/core': 0.2.0(typescript@5.5.2) + storybook-builder-rsbuild: 0.1.5(@rsbuild/core@1.1.12)(@swc/core@1.7.26)(esbuild@0.18.20)(storybook@8.4.2)(typescript@5.5.2) typescript: 5.5.2 dev: true - /storybook-builder-rsbuild@0.1.5(@rsbuild/core@1.1.1)(@swc/core@1.7.26)(esbuild@0.18.20)(storybook@8.4.2)(typescript@5.5.2)(webpack-cli@5.1.4): + /storybook-builder-rsbuild@0.1.5(@rsbuild/core@1.1.12)(@swc/core@1.7.26)(esbuild@0.18.20)(storybook@8.4.2)(typescript@5.5.2): resolution: {integrity: sha512-g8/pVX+2YixHpWt/Q8dQWtkuKpWKxm1i9h+ihTFPO5LQWc3HvlF6PAXccPvedicLizGR2xTaI/RcJkE+2bYXqA==} peerDependencies: '@rsbuild/core': ^1.0.1 @@ -40297,8 +40382,8 @@ packages: typescript: optional: true dependencies: - '@rsbuild/core': 1.1.1 - '@rsbuild/plugin-type-check': 1.0.1(@rsbuild/core@1.1.1)(@swc/core@1.7.26)(esbuild@0.18.20)(typescript@5.5.2)(webpack-cli@5.1.4) + '@rsbuild/core': 1.1.12 + '@rsbuild/plugin-type-check': 1.0.1(@rsbuild/core@1.1.12)(@swc/core@1.7.26)(esbuild@0.18.20)(typescript@5.5.2) '@storybook/addon-docs': 8.3.5(storybook@8.4.2) '@storybook/core-webpack': 8.3.5(storybook@8.4.2) browser-assert: 1.2.1 @@ -40310,7 +40395,7 @@ packages: magic-string: 0.30.12 path-browserify: 1.0.1 process: 0.11.10 - rsbuild-plugin-html-minifier-terser: 1.1.1(@rsbuild/core@1.1.1) + rsbuild-plugin-html-minifier-terser: 1.1.1(@rsbuild/core@1.1.12) sirv: 2.0.4 storybook: 8.4.2(prettier@3.3.3) ts-dedent: 2.2.0 @@ -40326,7 +40411,7 @@ packages: - webpack-sources dev: true - /storybook-react-rsbuild@0.1.5(@rsbuild/core@1.1.1)(@swc/core@1.7.26)(esbuild@0.18.20)(react-dom@18.3.1)(react@18.3.1)(rollup@4.24.0)(storybook@8.4.2)(typescript@5.5.2)(webpack-cli@5.1.4)(webpack@5.93.0): + /storybook-react-rsbuild@0.1.5(@rsbuild/core@1.1.12)(@swc/core@1.7.26)(esbuild@0.18.20)(react-dom@18.3.1)(react@18.3.1)(rollup@4.24.0)(storybook@8.4.2)(typescript@5.5.2)(webpack@5.93.0): resolution: {integrity: sha512-Cy7Ms5COLR1FTelGRxS5pE9LVlDSvaJeBsTH2MVi/29ZK8UEE0VH+Mnve2MboB93GbC3fhZFtIcNSF2dy9pjTw==} engines: {node: '>=18.0.0'} peerDependencies: @@ -40340,7 +40425,7 @@ packages: optional: true dependencies: '@rollup/pluginutils': 5.1.3(rollup@4.24.0) - '@rsbuild/core': 1.1.1 + '@rsbuild/core': 1.1.12 '@storybook/react': 8.3.5(react-dom@18.3.1)(react@18.3.1)(storybook@8.4.2)(typescript@5.5.2) '@storybook/react-docgen-typescript-plugin': 1.0.1(typescript@5.5.2)(webpack@5.93.0) '@types/node': 18.16.9 @@ -40351,7 +40436,7 @@ packages: react-dom: 18.3.1(react@18.3.1) resolve: 1.22.8 storybook: 8.4.2(prettier@3.3.3) - storybook-builder-rsbuild: 0.1.5(@rsbuild/core@1.1.1)(@swc/core@1.7.26)(esbuild@0.18.20)(storybook@8.4.2)(typescript@5.5.2)(webpack-cli@5.1.4) + storybook-builder-rsbuild: 0.1.5(@rsbuild/core@1.1.12)(@swc/core@1.7.26)(esbuild@0.18.20)(storybook@8.4.2)(typescript@5.5.2) tsconfig-paths: 4.2.0 typescript: 5.5.2 transitivePeerDependencies: @@ -40685,7 +40770,7 @@ packages: peerDependencies: webpack: ^5.0.0 dependencies: - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20) dev: true /style-loader@3.3.4(webpack@5.93.0): @@ -40694,7 +40779,7 @@ packages: peerDependencies: webpack: ^5.0.0 dependencies: - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) /style-to-object@0.3.0: resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} @@ -40858,7 +40943,7 @@ packages: fast-glob: 3.3.2 normalize-path: 3.0.0 stylus: 0.64.0 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) /stylus@0.64.0: resolution: {integrity: sha512-ZIdT8eUv8tegmqy1tTIdJv9We2DumkNZFdCF5mz/Kpq3OcTaxSuCAYZge6HKK2CmNC02G1eJig2RV7XTw5hQrA==} @@ -40996,7 +41081,7 @@ packages: dependencies: '@swc/core': 1.7.26(@swc/helpers@0.5.13) '@swc/counter': 0.1.3 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) dev: true /symbol-tree@3.2.4: @@ -41201,7 +41286,7 @@ packages: schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.34.1 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19) dev: true /terser-webpack-plugin@5.3.10(@swc/core@1.7.26)(esbuild@0.18.20)(webpack@5.93.0): @@ -41227,7 +41312,7 @@ packages: schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.34.1 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) /terser-webpack-plugin@5.3.10(@swc/core@1.7.26)(esbuild@0.18.20)(webpack@5.95.0): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} @@ -41252,7 +41337,7 @@ packages: schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.34.1 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20) dev: true /terser-webpack-plugin@5.3.10(@swc/core@1.7.26)(esbuild@0.24.0)(webpack@5.75.0): @@ -41278,7 +41363,7 @@ packages: schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.34.1 - webpack: 5.75.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.75.0(@swc/core@1.7.26)(esbuild@0.24.0) dev: true /terser-webpack-plugin@5.3.10(@swc/core@1.7.26)(esbuild@0.24.0)(webpack@5.93.0): @@ -41304,7 +41389,7 @@ packages: schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.34.1 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) /terser-webpack-plugin@5.3.10(@swc/core@1.7.26)(esbuild@0.24.0)(webpack@5.95.0): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} @@ -41329,7 +41414,7 @@ packages: schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.34.1 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.24.0) dev: true /terser-webpack-plugin@5.3.9(@swc/core@1.7.26)(esbuild@0.18.20)(webpack@5.95.0): @@ -41355,7 +41440,7 @@ packages: schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.34.1 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20) dev: true /terser@5.34.1: @@ -41396,13 +41481,13 @@ packages: dependencies: any-promise: 1.3.0 - /thingies@1.21.0(tslib@2.6.3): + /thingies@1.21.0(tslib@2.8.1): resolution: {integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==} engines: {node: '>=10.18'} peerDependencies: tslib: ^2 dependencies: - tslib: 2.6.3 + tslib: 2.8.1 /thread-stream@0.15.2: resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} @@ -41613,13 +41698,13 @@ packages: engines: {node: '>= 0.4'} dev: true - /tree-dump@1.0.2(tslib@2.6.3): + /tree-dump@1.0.2(tslib@2.8.1): resolution: {integrity: sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' dependencies: - tslib: 2.6.3 + tslib: 2.8.1 /tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} @@ -41760,7 +41845,7 @@ packages: micromatch: 4.0.8 semver: 7.6.3 typescript: 5.0.4 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20) dev: true /ts-loader@9.4.4(typescript@5.5.2)(webpack@5.95.0): @@ -41775,7 +41860,7 @@ packages: micromatch: 4.0.8 semver: 7.6.3 typescript: 5.5.2 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19) dev: true /ts-loader@9.5.1(typescript@5.5.2)(webpack@5.93.0): @@ -41791,7 +41876,7 @@ packages: semver: 7.6.3 source-map: 0.7.4 typescript: 5.5.2 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) /ts-node@10.9.1(@swc/core@1.7.26)(@types/node@18.16.9)(typescript@5.4.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} @@ -41993,7 +42078,6 @@ packages: /tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - dev: true /tsscmp@1.0.6: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} @@ -42654,7 +42738,7 @@ packages: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) dev: true /url-parse@1.5.10: @@ -42683,7 +42767,7 @@ packages: dependencies: '@types/react': 18.2.79 react: 18.3.1 - tslib: 2.6.3 + tslib: 2.8.1 /use-resize-observer@9.1.0(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==} @@ -42709,7 +42793,7 @@ packages: '@types/react': 18.2.79 detect-node-es: 1.1.0 react: 18.3.1 - tslib: 2.6.3 + tslib: 2.8.1 /use-sync-external-store@1.2.2(react@18.3.1): resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} @@ -43380,7 +43464,7 @@ packages: hash-sum: 2.0.0 vue: 3.5.10(typescript@5.5.2) watchpack: 2.4.2 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.24.0) dev: true /vue-router@4.4.5(vue@3.5.10): @@ -43524,38 +43608,6 @@ packages: engines: {node: '>=12'} dev: true - /webpack-cli@5.1.4(webpack@5.93.0): - resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} - engines: {node: '>=14.15.0'} - hasBin: true - peerDependencies: - '@webpack-cli/generators': '*' - webpack: 5.x.x - webpack-bundle-analyzer: '*' - webpack-dev-server: '*' - peerDependenciesMeta: - '@webpack-cli/generators': - optional: true - webpack-bundle-analyzer: - optional: true - webpack-dev-server: - optional: true - dependencies: - '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.93.0) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.93.0) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.93.0) - colorette: 2.0.20 - commander: 10.0.1 - cross-spawn: 7.0.3 - envinfo: 7.14.0 - fastest-levenshtein: 1.0.16 - import-local: 3.2.0 - interpret: 3.1.1 - rechoir: 0.8.0 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) - webpack-merge: 5.10.0 - /webpack-dev-middleware@6.1.3(webpack@5.93.0): resolution: {integrity: sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw==} engines: {node: '>= 14.15.0'} @@ -43570,7 +43622,7 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) dev: true /webpack-dev-middleware@7.4.2(webpack@5.93.0): @@ -43588,9 +43640,9 @@ packages: on-finished: 2.4.1 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) - /webpack-dev-server@5.0.4(webpack-cli@5.1.4)(webpack@5.93.0): + /webpack-dev-server@5.0.4(webpack@5.93.0): resolution: {integrity: sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==} engines: {node: '>= 18.12.0'} hasBin: true @@ -43631,8 +43683,7 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.93.0) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0) webpack-dev-middleware: 7.4.2(webpack@5.93.0) ws: 8.18.0 transitivePeerDependencies: @@ -43642,7 +43693,7 @@ packages: - utf-8-validate dev: true - /webpack-dev-server@5.1.0(webpack-cli@5.1.4)(webpack@5.93.0): + /webpack-dev-server@5.1.0(webpack@5.93.0): resolution: {integrity: sha512-aQpaN81X6tXie1FoOB7xlMfCsN19pSvRAeYUHOdFWOlhpQ/LlbfTqYwwmEDFV0h8GGuqmCmKmT+pxcUV/Nt2gQ==} engines: {node: '>= 18.12.0'} hasBin: true @@ -43681,8 +43732,7 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.93.0) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) webpack-dev-middleware: 7.4.2(webpack@5.93.0) ws: 8.18.0 transitivePeerDependencies: @@ -43706,6 +43756,7 @@ packages: clone-deep: 4.0.1 flat: 5.0.2 wildcard: 2.0.1 + dev: true /webpack-node-externals@3.0.0: resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==} @@ -43727,7 +43778,7 @@ packages: dependencies: html-webpack-plugin: 5.5.3(webpack@5.95.0) typed-assert: 1.0.9 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.18.20) dev: true /webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.2)(webpack@5.93.0): @@ -43742,7 +43793,7 @@ packages: dependencies: html-webpack-plugin: 5.6.2(@rspack/core@1.0.8)(webpack@5.93.0) typed-assert: 1.0.9 - webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4) + webpack: 5.93.0(@swc/core@1.7.26)(esbuild@0.18.20) /webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.3)(webpack@5.95.0): resolution: {integrity: sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==} @@ -43756,13 +43807,13 @@ packages: dependencies: html-webpack-plugin: 5.6.3(@rspack/core@1.0.8)(webpack@5.95.0) typed-assert: 1.0.9 - webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19)(webpack-cli@5.1.4) + webpack: 5.95.0(@swc/core@1.7.26)(esbuild@0.17.19) dev: true /webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - /webpack@5.75.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4): + /webpack@5.75.0(@swc/core@1.7.26)(esbuild@0.24.0): resolution: {integrity: sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==} engines: {node: '>=10.13.0'} hasBin: true @@ -43795,7 +43846,6 @@ packages: tapable: 2.2.1 terser-webpack-plugin: 5.3.10(@swc/core@1.7.26)(esbuild@0.24.0)(webpack@5.75.0) watchpack: 2.4.2 - webpack-cli: 5.1.4(webpack@5.93.0) webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -43803,7 +43853,7 @@ packages: - uglify-js dev: true - /webpack@5.93.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4): + /webpack@5.93.0(@swc/core@1.7.26)(esbuild@0.18.20): resolution: {integrity: sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==} engines: {node: '>=10.13.0'} hasBin: true @@ -43836,14 +43886,13 @@ packages: tapable: 2.2.1 terser-webpack-plugin: 5.3.10(@swc/core@1.7.26)(esbuild@0.18.20)(webpack@5.93.0) watchpack: 2.4.2 - webpack-cli: 5.1.4(webpack@5.93.0) webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - /webpack@5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4): + /webpack@5.93.0(@swc/core@1.7.26)(esbuild@0.24.0): resolution: {integrity: sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==} engines: {node: '>=10.13.0'} hasBin: true @@ -43876,14 +43925,13 @@ packages: tapable: 2.2.1 terser-webpack-plugin: 5.3.10(@swc/core@1.7.26)(esbuild@0.24.0)(webpack@5.93.0) watchpack: 2.4.2 - webpack-cli: 5.1.4(webpack@5.93.0) webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - /webpack@5.95.0(@swc/core@1.7.26)(esbuild@0.17.19)(webpack-cli@5.1.4): + /webpack@5.95.0(@swc/core@1.7.26)(esbuild@0.17.19): resolution: {integrity: sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==} engines: {node: '>=10.13.0'} hasBin: true @@ -43915,7 +43963,6 @@ packages: tapable: 2.2.1 terser-webpack-plugin: 5.3.10(@swc/core@1.7.26)(esbuild@0.17.19)(webpack@5.95.0) watchpack: 2.4.2 - webpack-cli: 5.1.4(webpack@5.93.0) webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -43923,7 +43970,7 @@ packages: - uglify-js dev: true - /webpack@5.95.0(@swc/core@1.7.26)(esbuild@0.18.20)(webpack-cli@5.1.4): + /webpack@5.95.0(@swc/core@1.7.26)(esbuild@0.18.20): resolution: {integrity: sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==} engines: {node: '>=10.13.0'} hasBin: true @@ -43955,7 +44002,6 @@ packages: tapable: 2.2.1 terser-webpack-plugin: 5.3.10(@swc/core@1.7.26)(esbuild@0.18.20)(webpack@5.95.0) watchpack: 2.4.2 - webpack-cli: 5.1.4(webpack@5.93.0) webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -43963,7 +44009,7 @@ packages: - uglify-js dev: true - /webpack@5.95.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4): + /webpack@5.95.0(@swc/core@1.7.26)(esbuild@0.24.0): resolution: {integrity: sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==} engines: {node: '>=10.13.0'} hasBin: true @@ -43995,7 +44041,6 @@ packages: tapable: 2.2.1 terser-webpack-plugin: 5.3.10(@swc/core@1.7.26)(esbuild@0.24.0)(webpack@5.95.0) watchpack: 2.4.2 - webpack-cli: 5.1.4(webpack@5.93.0) webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -44149,6 +44194,7 @@ packages: /wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + dev: true /with@7.0.2: resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} diff --git a/pr-description.md b/pr-description.md new file mode 100644 index 00000000000..b95fb86d93f --- /dev/null +++ b/pr-description.md @@ -0,0 +1,67 @@ +## Description + +This pull request enhances the module sharing functionality in the `enhanced` package by implementing comprehensive layer support. The changes focus on improving the module federation layer system with better type safety, configuration validation, and test coverage. + +### Key Changes + +1. **Layer Support in Sharing Plugins** + - Added layer-specific module loading capabilities in `ConsumeSharedModule` + - Implemented layer context handling in `ConsumeSharedPlugin` + - Enhanced `ProvideSharedPlugin` with layer-aware module sharing + - Updated `SharePlugin` to support layer-based configurations + +2. **Configuration Schema Updates** + - Added new properties for layer support: + - `layer`: Specifies the target layer for the module + - `issuerLayer`: Defines the layer from which the module is requested + - `requiredLayer`: Specifies layer requirements for module resolution + - Enhanced type safety and validation for all layer-related configurations + +3. **Test Infrastructure** + - Added comprehensive test cases for layer-based module sharing + - Implemented layer-specific loaders for testing different scenarios + - Added test coverage for both layered and unlayered sharing configurations + +### Example Configuration + +```js +new SharePlugin({ + shareScope: 'default', + shared: { + react: { + singleton: true, + }, + 'explicit-layer-react': { + request: 'react/index2', + import: 'react/index2', + shareKey: 'react', + singleton: true, + issuerLayer: 'differing-layer', + layer: 'explicit-layer', + }, + // ... other configurations + }, +}), +``` + +### Technical Implementation Details + +* [`ConsumeSharedModule.ts`]: Added layer resolution support with new properties +* [`ConsumeSharedPlugin.ts`]: Updated to handle layer-specific requests +* [`package.json`]: Added new Jest command for enhanced testing +* Added schema validation for new layer-related properties + +## Note +Runtime module aspects will be updated in a future PR. This PR focuses on compiler mechanics for module layers. + +## Types of changes + +- [ ] Docs change / refactoring / dependency upgrade +- [ ] Bug fix (non-breaking change which fixes an issue) +- [x] New feature (non-breaking change which adds functionality) + +## Checklist + +- [x] I have added tests to cover my changes +- [x] All new and existing tests passed +- [ ] I have updated the documentation