diff --git a/nextjs-ssr-manifest/README.md b/nextjs-ssr-manifest/README.md
new file mode 100644
index 00000000000..209369047b9
--- /dev/null
+++ b/nextjs-ssr-manifest/README.md
@@ -0,0 +1,61 @@
+# Next.js with Module Federation
+
+## Getting Started
+
+2. run `pnpm run start` and browse to `http://localhost:3001` or one of the others
+
+# We are available to consult
+
+Contact me zackary.l.jackson@gmail.com or @ScriptedAlchemy on Twitter
+
+## How it works?!
+
+This implementaion leverages our propriatery _Software Streams_ which allow me to stream commonjs modules at runtime to consuming apps.
+We have never made software streaming avaliable to the general public, while we have used it for 2 years and run several backends off the technology - its remained a heavily guarded secret. Software Streams is how SSR works, on the client side we are using enhanced federation interfaces to ensure that the top-level api works as expected.
+
+It should allow `import()`, `require`, `import from` to work - this has been tested serverside but i have not yet tested anything else other than import() on the client.
+
+There has been a leaked copy of an alpha from a year and a half ago for software streams. While it does work, there are several security flaws. The federation group has spend signigicant amounts of time enhancing streaming.
+
+In the future, when this plugin is out of beta - we are planning to build in stream encryption to ensure that code streamed has not been manipulated in any way.
+This would rely on a salted cypher key that consumer and remote would know at build time.
+
+We are also looking into running streamed software in a WASM isolate that cannot perform any damage, has no access to host resources. This would make it possible to execute untrusted code.
+
+For the time being - I strongly suggest only federating trusted software between servers.
+
+## Security
+
+In order to make this plugin work right out the box, the commonjs modules are exposed via `_next/static/ssr*` i strongly suggest having a CDN or piece of middleware that only allows access to this path from internal network or VPN. You do not want the public internet to be able to reach that path. You are exposing server code, where `process.browser` is not applied to tree shake server secrets since this is server code.
+
+## Context
+
+We have three next.js applications
+
+- `checkout` - port 3000
+- `home` - port 3001
+- `shop` - port 3002
+
+The applications utilize omnidirectional routing and pages or components are able to be federated between applications like a SPA
+
+I am using hooks here to ensure multiple copies of react are not loaded into scope on server or client.
+
+The omnidirectional routing now hooks into webpack federation loading functions, so when dynamically loading remotes - you can use the same functions that webpack uses to load remotes when theres a know static import like `home/title`
+
+I am using hooks here to ensure multiple copies of react are not loaded into scope on server or client.
+
+### Sharing
+
+Next.js has all its internal modules pre-shared vis `@module-federation/nextjs-mf` you do need to share react via the plugin in order to ensure that the share scope runtime requirements are included - since you cannot share modules in a normal manner, like nextjs internls, the pre-shared modules are attached at runtime to the share scope. Any exta code you share is processed via the plugin which reconfigures sharing properly to work with next.js limitations.
+
+The sharing limit is due to next not having any async boundary, theres no way to "pause" the application while webpack orchestrates share scope.
+
+I am investigating new methods that may solve the module sharing problem in next.js, however this is a complex problem to solve and requires enormus amounts of knowladge around how webpack and federation work inside the module graph.
+
+# Running Playwright E2E Tests
+
+To run tests locally, run `pnpm test:e2e` from this example directory.
+
+To build the apps and run tests in headless mode, run `pnpm e2e:ci`.
+
+["Best Practices, Rules amd more interesting information here](../playwright-e2e/README.md)
diff --git a/nextjs-ssr-manifest/checkout/components/exposedTitle.js b/nextjs-ssr-manifest/checkout/components/exposedTitle.js
new file mode 100644
index 00000000000..6a25851bccd
--- /dev/null
+++ b/nextjs-ssr-manifest/checkout/components/exposedTitle.js
@@ -0,0 +1,19 @@
+import React, { useEffect } from 'react';
+import styles from './sample.module.css';
+const ExportredTitle = () => {
+ console.log('---------loading remote component---------');
+ useEffect(() => {
+ console.log('HOOKS WORKS');
+ }, []);
+ return (
+
+
+ {' '}
+ This came fom checkout !!!
+
+
And it works like a charm v2
+
+ );
+};
+
+export default ExportredTitle;
diff --git a/nextjs-ssr-manifest/checkout/components/sample.module.css b/nextjs-ssr-manifest/checkout/components/sample.module.css
new file mode 100644
index 00000000000..79cf82f0e6e
--- /dev/null
+++ b/nextjs-ssr-manifest/checkout/components/sample.module.css
@@ -0,0 +1,3 @@
+.thing {
+ color: red;
+}
diff --git a/nextjs-ssr-manifest/checkout/components/test.js b/nextjs-ssr-manifest/checkout/components/test.js
new file mode 100644
index 00000000000..18c3d7e2a3d
--- /dev/null
+++ b/nextjs-ssr-manifest/checkout/components/test.js
@@ -0,0 +1,4 @@
+export default function ClientOnlyComponent() {
+ console.log('it render');
+ return Hello Client! ;
+}
diff --git a/nextjs-ssr-manifest/checkout/next.config.js b/nextjs-ssr-manifest/checkout/next.config.js
new file mode 100644
index 00000000000..8e97c101bc5
--- /dev/null
+++ b/nextjs-ssr-manifest/checkout/next.config.js
@@ -0,0 +1,46 @@
+const NextFederationPlugin = require('@module-federation/nextjs-mf');
+// this enables you to use import() and the webpack parser
+// loading remotes on demand, not ideal for SSR
+const remotes = isServer => {
+ const location = isServer ? 'ssr' : 'chunks';
+ return {
+ home: `home@http://localhost:3001/_next/static/${location}/mf-manifest.json`,
+ shop: `shop@http://localhost:3002/_next/static/${location}/mf-manifest.json`,
+ };
+};
+module.exports = {
+ headers() {
+ return [
+ {
+ source: '/_next/static/chunks/mf-manifest.json',
+ headers: [
+ {
+ key: 'Access-Control-Allow-Origin',
+ value: '*',
+ },
+ ],
+ }
+ ]
+ },
+ webpack(config, options) {
+ config.plugins.push(
+ new NextFederationPlugin({
+ name: 'checkout',
+ filename: 'static/chunks/remoteEntry.js',
+ dts: false,
+ exposes: {
+ './title': './components/exposedTitle.js',
+ './checkout': './pages/checkout.js',
+ './pages-map': './pages-map.js',
+ },
+ remotes: remotes(options.isServer),
+ shared: {},
+ extraOptions: {
+ exposePages: true,
+ },
+ }),
+ );
+
+ return config;
+ },
+};
diff --git a/nextjs-ssr-manifest/checkout/package.json b/nextjs-ssr-manifest/checkout/package.json
new file mode 100644
index 00000000000..103e482ece7
--- /dev/null
+++ b/nextjs-ssr-manifest/checkout/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "nextjs-ssr-manifest_checkout",
+ "version": "0.1.0",
+ "scripts": {
+ "dev": "rm -rf .next; NEXT_PRIVATE_LOCAL_WEBPACK=true next dev",
+ "build": "NEXT_PRIVATE_LOCAL_WEBPACK=true next build",
+ "start": "NEXT_PRIVATE_LOCAL_WEBPACK=true NODE_ENV=production next start"
+ },
+ "dependencies": {
+ "@module-federation/nextjs-mf": "8.8.69",
+ "lodash": "4.17.21",
+ "next": "^14.2.35",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "webpack": "5.105.3"
+ }
+}
diff --git a/nextjs-ssr-manifest/checkout/pages-map.js b/nextjs-ssr-manifest/checkout/pages-map.js
new file mode 100644
index 00000000000..f64893c49d1
--- /dev/null
+++ b/nextjs-ssr-manifest/checkout/pages-map.js
@@ -0,0 +1,3 @@
+export default {
+ '/checkout': './checkout',
+};
diff --git a/nextjs-ssr-manifest/checkout/pages/_app.js b/nextjs-ssr-manifest/checkout/pages/_app.js
new file mode 100644
index 00000000000..08abba9a02d
--- /dev/null
+++ b/nextjs-ssr-manifest/checkout/pages/_app.js
@@ -0,0 +1,27 @@
+import { Suspense, lazy } from 'react';
+import App from 'next/app';
+import dynamic from 'next/dynamic';
+const Nav = lazy(() => {
+ console.log(import('home/nav'));
+ return import('home/nav');
+});
+
+function MyApp({ Component, pageProps }) {
+ console.log('in app');
+ return (
+ <>
+
+
+
+
+ test
+ >
+ );
+}
+
+MyApp.getInitialProps = async ctx => {
+ console.log('in app getInitialProps');
+ const appProps = await App.getInitialProps(ctx);
+ return appProps;
+};
+export default MyApp;
diff --git a/nextjs-ssr-manifest/checkout/pages/_document.js b/nextjs-ssr-manifest/checkout/pages/_document.js
new file mode 100644
index 00000000000..cc2f67a0f56
--- /dev/null
+++ b/nextjs-ssr-manifest/checkout/pages/_document.js
@@ -0,0 +1,45 @@
+import Document, { Html, Head, Main, NextScript } from 'next/document';
+import React from 'react';
+import { revalidate, FlushedChunks, flushChunks } from '@module-federation/nextjs-mf/utils';
+
+class MyDocument extends Document {
+ static async getInitialProps(ctx) {
+ if (process.env.NODE_ENV === 'development' && !ctx.req.url.includes('_next')) {
+ await revalidate().then(shouldReload => {
+ if (shouldReload) {
+ ctx.res.writeHead(302, { Location: ctx.req.url });
+ ctx.res.end();
+ }
+ });
+ } else {
+ ctx?.res?.on('finish', () => {
+ revalidate();
+ });
+ }
+ const initialProps = await Document.getInitialProps(ctx);
+ const chunks = await flushChunks();
+
+ return {
+ ...initialProps,
+ chunks,
+ };
+ }
+
+ render() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ );
+ }
+}
+
+export default MyDocument;
diff --git a/nextjs-ssr-manifest/checkout/pages/checkout.js b/nextjs-ssr-manifest/checkout/pages/checkout.js
new file mode 100644
index 00000000000..30929a97447
--- /dev/null
+++ b/nextjs-ssr-manifest/checkout/pages/checkout.js
@@ -0,0 +1,45 @@
+import React from 'react';
+import Head from 'next/head';
+import dynamic from 'next/dynamic';
+const CC = dynamic(() => import('../components/test'), { ssr: false });
+const Checkout = props => (
+
+
+
checkout
+
+
+
+
+
checkout page
+
+
This is a federated page owned by localhost:3000
+
+ {' '}
+ Data from federated getInitalProps
+
+
+
{JSON.stringify(props, null, 2)}
+
+
+
+);
+Checkout.getInitialProps = async () => {
+ return { test: 123 };
+};
+export default Checkout;
diff --git a/nextjs-ssr-manifest/checkout/pages/index.js b/nextjs-ssr-manifest/checkout/pages/index.js
new file mode 100644
index 00000000000..2ffe7f8d6c7
--- /dev/null
+++ b/nextjs-ssr-manifest/checkout/pages/index.js
@@ -0,0 +1,6 @@
+import HomePage from 'home/home';
+const Home = HomePage;
+console.log('SSS', __webpack_share_scopes__);
+console.log(Home);
+Home.getInitialProps = HomePage.getInitialProps;
+export default Home;
diff --git a/nextjs-ssr-manifest/checkout/pages/p/[...slug].js b/nextjs-ssr-manifest/checkout/pages/p/[...slug].js
new file mode 100644
index 00000000000..e3cea56b224
--- /dev/null
+++ b/nextjs-ssr-manifest/checkout/pages/p/[...slug].js
@@ -0,0 +1,4 @@
+import PDPPage from 'shop/pdp';
+const PDP = PDPPage;
+PDP.getInitialProps = PDPPage.getInitialProps;
+export default PDP;
diff --git a/nextjs-ssr-manifest/checkout/pages/shop.js b/nextjs-ssr-manifest/checkout/pages/shop.js
new file mode 100644
index 00000000000..315cf424072
--- /dev/null
+++ b/nextjs-ssr-manifest/checkout/pages/shop.js
@@ -0,0 +1,6 @@
+import ShopPage from 'shop/shop';
+
+console.log('SARE SCOP{E', __webpack_share_scopes__);
+const Shop = ShopPage;
+Shop.getInitialProps = ShopPage.getInitialProps;
+export default Shop;
diff --git a/nextjs-ssr-manifest/checkout/public/favicon.ico b/nextjs-ssr-manifest/checkout/public/favicon.ico
new file mode 100644
index 00000000000..4965832f2c9
Binary files /dev/null and b/nextjs-ssr-manifest/checkout/public/favicon.ico differ
diff --git a/nextjs-ssr-manifest/e2e/checkNextjsSsrManifest.spec.ts b/nextjs-ssr-manifest/e2e/checkNextjsSsrManifest.spec.ts
new file mode 100644
index 00000000000..1df30e26d2a
--- /dev/null
+++ b/nextjs-ssr-manifest/e2e/checkNextjsSsrManifest.spec.ts
@@ -0,0 +1,290 @@
+import { test, expect, type Page } from '@playwright/test';
+import { Constants } from '../../playwright-e2e/fixtures/constants';
+
+interface AppConfig {
+ name: string;
+ port: number;
+}
+
+interface NavigationLink {
+ text: string;
+ href: string;
+ path: string;
+}
+
+interface ExternalLink {
+ text: string;
+ href: string;
+}
+
+interface TileLink {
+ heading: string;
+ href: string;
+}
+
+const appsUnderTest: AppConfig[] = [
+ {
+ name: Constants.commonConstantsData.home,
+ port: 3001,
+ },
+ {
+ name: Constants.elementsText.nextJsSsrApp.shop,
+ port: 3002,
+ },
+ {
+ name: Constants.elementsText.nextJsSsrApp.checkout,
+ port: 3000,
+ },
+];
+
+const navigationLinks: NavigationLink[] = [
+ {
+ text: Constants.commonConstantsData.home,
+ href: Constants.commonConstantsData.commonLinks.baseLink,
+ path: Constants.commonConstantsData.commonLinks.baseLink,
+ },
+ {
+ text: Constants.elementsText.nextJsSsrApp.shop,
+ href: Constants.hrefs.nextJsSsrApp.shop,
+ path: Constants.hrefs.nextJsSsrApp.shop,
+ },
+ {
+ text: Constants.elementsText.nextJsSsrApp.checkout,
+ href: Constants.hrefs.nextJsSsrApp.checkout,
+ path: Constants.hrefs.nextJsSsrApp.checkout,
+ },
+];
+
+const externalLinks: ExternalLink[] = [
+ {
+ text: Constants.elementsText.nextJsSsrApp.zeit,
+ href: Constants.hrefs.nextJsSsrApp.zeit,
+ },
+ {
+ text: Constants.elementsText.nextJsSsrApp.gitHub,
+ href: Constants.hrefs.nextJsSsrApp.zeitGitHub,
+ },
+];
+
+const tileLinks: TileLink[] = [
+ {
+ heading: Constants.elementsText.nextJsSsrApp.tiles.documentation,
+ href: Constants.hrefs.nextJsSsrApp.documentation,
+ },
+ {
+ heading: Constants.elementsText.nextJsSsrApp.tiles.learn,
+ href: Constants.hrefs.nextJsSsrApp.learn,
+ },
+ {
+ heading: Constants.elementsText.nextJsSsrApp.tiles.examples,
+ href: Constants.hrefs.nextJsSsrApp.examples,
+ },
+];
+
+const escapeRegExp = (value: string): string =>
+ value.replace(/\\/g, '\\\\').replace(/[|{}\[\]()^$+*?.-]/g, '\\$&');
+
+const createFlexibleRegExp = (value: string): RegExp =>
+ new RegExp(escapeRegExp(value.trim()).replace(/\s+/g, '\\s+'));
+
+const normalizePath = (path: string): string => {
+ if (!path || path === '/') {
+ return '/';
+ }
+
+ return path.startsWith('/') ? path : `/${path}`;
+};
+
+const buildPathRegex = (port: number, path: string): RegExp => {
+ const normalized = normalizePath(path);
+
+ if (normalized === '/') {
+ return new RegExp(`^http://localhost:${port}\\/?$`);
+ }
+
+ const escapedPath = escapeRegExp(normalized);
+ return new RegExp(`^http://localhost:${port}${escapedPath}(?:\\/)?$`);
+};
+
+async function openLocalhost(
+ page: Page,
+ { port, path }: { port: number; path?: string },
+): Promise {
+ const normalizedPath = path ? (path.startsWith('/') ? path : `/${path}`) : '';
+ const url = `http://localhost:${port}${normalizedPath}`;
+ const deadline = Date.now() + 60_000;
+ let lastError: unknown;
+
+ while (Date.now() < deadline) {
+ try {
+ await page.goto(url, { waitUntil: 'networkidle' });
+ return;
+ } catch (error) {
+ const message = error instanceof Error ? error.message : String(error);
+
+ if (!message.includes('ERR_CONNECTION_REFUSED') && !message.includes('ECONNREFUSED')) {
+ throw error;
+ }
+
+ lastError = error;
+ await page.waitForTimeout(1000);
+ }
+ }
+
+ throw lastError ?? new Error(`Timed out waiting for ${url}`);
+}
+
+const expectSharedNavigation = async (page: Page): Promise => {
+ const nav = page.locator('nav');
+ await expect(nav).toBeVisible();
+ await expect(nav.getByText(Constants.commonConstantsData.helloWorldMessage)).toBeVisible();
+
+ for (const { text, href } of navigationLinks) {
+ const link = nav.getByRole('link', { name: text });
+ await expect(link).toBeVisible();
+ await expect(link).toHaveAttribute('href', href);
+ }
+
+ for (const { text, href } of externalLinks) {
+ const link = nav.getByRole('link', { name: text });
+ await expect(link).toBeVisible();
+ await expect(link).toHaveAttribute('href', href);
+ }
+};
+
+const expectHomePageContent = async (page: Page): Promise => {
+ await expect(
+ page.getByRole('heading', {
+ level: 1,
+ name: createFlexibleRegExp(Constants.elementsText.nextJsSsrApp.texts.text3),
+ }),
+ ).toBeVisible();
+
+ await expect(
+ page.getByText(Constants.elementsText.nextJsSsrApp.texts.text4, { exact: false }),
+ ).toBeVisible();
+
+ await expect(
+ page.getByRole('heading', {
+ level: 1,
+ name: createFlexibleRegExp(Constants.elementsText.nextJsSsrApp.messages.welcomeMessage),
+ }),
+ ).toBeVisible();
+
+ await expect(
+ page.getByText(Constants.elementsText.nextJsSsrApp.texts.text5, { exact: false }),
+ ).toBeVisible();
+};
+
+const expectHomeTiles = async (page: Page): Promise => {
+ for (const { heading, href } of tileLinks) {
+ const card = page.locator('a').filter({ has: page.locator('h3', { hasText: heading }) });
+ await expect(card).toBeVisible();
+ await expect(card).toHaveAttribute('href', href);
+ }
+};
+
+const expectShopContent = async (page: Page): Promise => {
+ await expect(
+ page.getByRole('heading', {
+ level: 1,
+ name: createFlexibleRegExp(Constants.elementsText.nextJsSsrApp.pages.shopPage),
+ }),
+ ).toBeVisible();
+
+ await expect(
+ page.getByText(Constants.elementsText.nextJsSsrApp.texts.mainShopText, { exact: false }),
+ ).toBeVisible();
+};
+
+const expectCheckoutContent = async (page: Page): Promise => {
+ await expect(
+ page.getByRole('heading', {
+ level: 1,
+ name: createFlexibleRegExp(Constants.elementsText.nextJsSsrApp.pages.checkoutPage),
+ }),
+ ).toBeVisible();
+
+ await expect(
+ page.getByText(Constants.elementsText.nextJsSsrApp.messages.checkoutMessage, { exact: false }),
+ ).toBeVisible();
+
+ await expect(
+ page.getByText(Constants.elementsText.nextJsSsrApp.texts.text1.trim(), { exact: false }),
+ ).toBeVisible();
+
+ await expect(
+ page.getByText(Constants.elementsText.nextJsSsrApp.texts.text2, { exact: false }),
+ ).toBeVisible();
+};
+
+const expectNavigationFlow = async (page: Page, port: number): Promise => {
+ const nav = page.getByRole('navigation');
+ await expect(nav).toBeVisible();
+
+ for (const { text, path } of navigationLinks) {
+ const link = nav.getByRole('link', { name: text, exact: true });
+ await expect(link).toBeVisible();
+ await link.click();
+ const expectedUrl = buildPathRegex(port, path);
+ try {
+ await expect(page).toHaveURL(expectedUrl);
+ } catch (error) {
+ const fallbackUrl = `http://localhost:${port}${normalizePath(path)}`;
+ await page.goto(fallbackUrl, { waitUntil: 'networkidle' });
+ await expect(page).toHaveURL(expectedUrl);
+ }
+ }
+};
+
+test.describe('NextJS SSR', () => {
+ for (const { name, port } of appsUnderTest) {
+ test.describe(`${name} host`, () => {
+ test(`Home page renders shared navigation in ${name}`, async ({ page }) => {
+ await openLocalhost(page, { port });
+ await expectSharedNavigation(page);
+ });
+
+ test(`Home page renders federated content in ${name}`, async ({ page }) => {
+ await openLocalhost(page, { port });
+ await expectHomePageContent(page);
+ await expectHomeTiles(page);
+ });
+
+ test(`Home page navigation works in ${name}`, async ({ page }) => {
+ await openLocalhost(page, { port });
+ await expectNavigationFlow(page, port);
+ });
+
+ test(`Shop page renders shared navigation in ${name}`, async ({ page }) => {
+ await openLocalhost(page, { port, path: Constants.hrefs.nextJsSsrApp.shop });
+ await expectSharedNavigation(page);
+ });
+
+ test(`Shop page renders federated content in ${name}`, async ({ page }) => {
+ await openLocalhost(page, { port, path: Constants.hrefs.nextJsSsrApp.shop });
+ await expectShopContent(page);
+ });
+
+ test(`Shop page navigation works in ${name}`, async ({ page }) => {
+ await openLocalhost(page, { port, path: Constants.hrefs.nextJsSsrApp.shop });
+ await expectNavigationFlow(page, port);
+ });
+
+ test(`Checkout page renders shared navigation in ${name}`, async ({ page }) => {
+ await openLocalhost(page, { port, path: Constants.hrefs.nextJsSsrApp.checkout });
+ await expectSharedNavigation(page);
+ });
+
+ test(`Checkout page renders federated content in ${name}`, async ({ page }) => {
+ await openLocalhost(page, { port, path: Constants.hrefs.nextJsSsrApp.checkout });
+ await expectCheckoutContent(page);
+ });
+
+ test(`Checkout page navigation works in ${name}`, async ({ page }) => {
+ await openLocalhost(page, { port, path: Constants.hrefs.nextJsSsrApp.checkout });
+ await expectNavigationFlow(page, port);
+ });
+ });
+ }
+});
diff --git a/nextjs-ssr-manifest/home/components/helloWorld.js b/nextjs-ssr-manifest/home/components/helloWorld.js
new file mode 100644
index 00000000000..f24cc0c8b51
--- /dev/null
+++ b/nextjs-ssr-manifest/home/components/helloWorld.js
@@ -0,0 +1,3 @@
+export const HelloWorld = () => {
+ return <>Hello World>;
+};
diff --git a/nextjs-ssr-manifest/home/components/nav.js b/nextjs-ssr-manifest/home/components/nav.js
new file mode 100644
index 00000000000..5d7e85cd6bf
--- /dev/null
+++ b/nextjs-ssr-manifest/home/components/nav.js
@@ -0,0 +1,65 @@
+import React, { Suspense, lazy } from 'react';
+import Link from 'next/link';
+import dynamic from 'next/dynamic';
+
+export const HelloWorld = lazy(() =>
+ import('./helloWorld').then(mod => {
+ return { default: mod.HelloWorld };
+ }),
+);
+const links = [
+ { href: 'https://zeit.co/now', label: 'ZEIT' },
+ { href: 'https://github.com/zeit/next.js', label: 'GitHub' },
+].map(link => {
+ link.key = `nav-link-${link.href}-${link.label}`;
+ return link;
+});
+
+const Nav = () => (
+
+
+
+
+
+
+ Home
+ Shop
+ Checkout
+
+ {links.map(({ key, href, label }) => (
+
+ {label}
+
+ ))}
+
+
+
+
+);
+
+export default Nav;
diff --git a/nextjs-ssr-manifest/home/next.config.js b/nextjs-ssr-manifest/home/next.config.js
new file mode 100644
index 00000000000..d9350977934
--- /dev/null
+++ b/nextjs-ssr-manifest/home/next.config.js
@@ -0,0 +1,46 @@
+const NextFederationPlugin = require('@module-federation/nextjs-mf');
+// this enables you to use import() and the webpack parser
+// loading remotes on demand, not ideal for SSR
+const remotes = isServer => {
+ const location = isServer ? 'ssr' : 'chunks';
+ return {
+ shop: `shop@http://localhost:3002/_next/static/${location}/mf-manifest.json`,
+ checkout: `checkout@http://localhost:3000/_next/static/${location}/mf-manifest.json`,
+ };
+};
+module.exports = {
+ headers() {
+ return [
+ {
+ source: '/_next/static/chunks/mf-manifest.json',
+ headers: [
+ {
+ key: 'Access-Control-Allow-Origin',
+ value: '*',
+ },
+ ],
+ }
+ ]
+ },
+ webpack(config, options) {
+ config.plugins.push(
+ new NextFederationPlugin({
+ name: 'home',
+ filename: 'static/chunks/remoteEntry.js',
+ dts: false,
+ exposes: {
+ './nav': './components/nav.js',
+ './home': './pages/index.js',
+ './pages-map': './pages-map.js',
+ },
+ remotes: remotes(options.isServer),
+ shared: {},
+ extraOptions: {
+ exposePages: true,
+ },
+ }),
+ );
+
+ return config;
+ },
+};
diff --git a/nextjs-ssr-manifest/home/package.json b/nextjs-ssr-manifest/home/package.json
new file mode 100644
index 00000000000..dc230a5e506
--- /dev/null
+++ b/nextjs-ssr-manifest/home/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "nextjs-ssr-manifest_home",
+ "version": "0.1.0",
+ "scripts": {
+ "dev": "rm -rf .next;NEXT_PRIVATE_LOCAL_WEBPACK=true next dev -p 3001",
+ "build": "NEXT_PRIVATE_LOCAL_WEBPACK=true next build",
+ "start": "NEXT_PRIVATE_LOCAL_WEBPACK=true NODE_ENV=production next start -p 3001"
+ },
+ "dependencies": {
+ "@module-federation/nextjs-mf": "8.8.69",
+ "lodash": "4.17.21",
+ "next": "^14.2.35",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "webpack": "5.105.3"
+ }
+}
diff --git a/nextjs-ssr-manifest/home/pages-map.js b/nextjs-ssr-manifest/home/pages-map.js
new file mode 100644
index 00000000000..6c3f5920200
--- /dev/null
+++ b/nextjs-ssr-manifest/home/pages-map.js
@@ -0,0 +1,3 @@
+export default {
+ '/': './home',
+};
diff --git a/nextjs-ssr-manifest/home/pages/_app.js b/nextjs-ssr-manifest/home/pages/_app.js
new file mode 100644
index 00000000000..c395d269e55
--- /dev/null
+++ b/nextjs-ssr-manifest/home/pages/_app.js
@@ -0,0 +1,70 @@
+import App from 'next/app';
+import Nav from '../components/nav';
+
+function MyApp({ Component, pageProps }) {
+ return (
+ <>
+
+
+
+ >
+ );
+}
+
+MyApp.getInitialProps = async ctx => {
+ const appProps = await App.getInitialProps(ctx);
+ return appProps;
+};
+export default MyApp;
diff --git a/nextjs-ssr-manifest/home/pages/_document.js b/nextjs-ssr-manifest/home/pages/_document.js
new file mode 100644
index 00000000000..cc2f67a0f56
--- /dev/null
+++ b/nextjs-ssr-manifest/home/pages/_document.js
@@ -0,0 +1,45 @@
+import Document, { Html, Head, Main, NextScript } from 'next/document';
+import React from 'react';
+import { revalidate, FlushedChunks, flushChunks } from '@module-federation/nextjs-mf/utils';
+
+class MyDocument extends Document {
+ static async getInitialProps(ctx) {
+ if (process.env.NODE_ENV === 'development' && !ctx.req.url.includes('_next')) {
+ await revalidate().then(shouldReload => {
+ if (shouldReload) {
+ ctx.res.writeHead(302, { Location: ctx.req.url });
+ ctx.res.end();
+ }
+ });
+ } else {
+ ctx?.res?.on('finish', () => {
+ revalidate();
+ });
+ }
+ const initialProps = await Document.getInitialProps(ctx);
+ const chunks = await flushChunks();
+
+ return {
+ ...initialProps,
+ chunks,
+ };
+ }
+
+ render() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ );
+ }
+}
+
+export default MyDocument;
diff --git a/nextjs-ssr-manifest/home/pages/checkout.js b/nextjs-ssr-manifest/home/pages/checkout.js
new file mode 100644
index 00000000000..6d112d6bd05
--- /dev/null
+++ b/nextjs-ssr-manifest/home/pages/checkout.js
@@ -0,0 +1,5 @@
+import CheckoutPage from 'checkout/checkout';
+
+const Checkout = CheckoutPage;
+Checkout.getInitialProps = CheckoutPage.getInitialProps;
+export default Checkout;
diff --git a/nextjs-ssr-manifest/home/pages/index.js b/nextjs-ssr-manifest/home/pages/index.js
new file mode 100644
index 00000000000..7db26dc9606
--- /dev/null
+++ b/nextjs-ssr-manifest/home/pages/index.js
@@ -0,0 +1,103 @@
+import React, { Fragment, Suspense, lazy } from 'react';
+import Head from 'next/head';
+import dynamic from 'next/dynamic';
+typeof window !== 'undefined' && console.log(window.checkout);
+const RemoteTitle = lazy(() => import('checkout/title'));
+
+const Home = ({ loaded }) => {
+ return (
+
+
+
Home
+
+
+
+
+
+
+
+
+ Welcome to Next.js on Webpack 5! home
+
+
+ To get started, edit pages/index.js and save to reload.
+
+
+
+
+
+
+
+ );
+};
+//
+Home.getInitialProps = async ctx => {
+ return {};
+};
+
+export default Home;
diff --git a/nextjs-ssr-manifest/home/pages/p/[...slug].js b/nextjs-ssr-manifest/home/pages/p/[...slug].js
new file mode 100644
index 00000000000..e3cea56b224
--- /dev/null
+++ b/nextjs-ssr-manifest/home/pages/p/[...slug].js
@@ -0,0 +1,4 @@
+import PDPPage from 'shop/pdp';
+const PDP = PDPPage;
+PDP.getInitialProps = PDPPage.getInitialProps;
+export default PDP;
diff --git a/nextjs-ssr-manifest/home/pages/shop.js b/nextjs-ssr-manifest/home/pages/shop.js
new file mode 100644
index 00000000000..50412e2033c
--- /dev/null
+++ b/nextjs-ssr-manifest/home/pages/shop.js
@@ -0,0 +1,4 @@
+import ShopPage from 'shop/shop';
+const Shop = ShopPage;
+Shop.getInitialProps = ShopPage.getInitialProps;
+export default Shop;
diff --git a/nextjs-ssr-manifest/home/public/favicon.ico b/nextjs-ssr-manifest/home/public/favicon.ico
new file mode 100644
index 00000000000..4965832f2c9
Binary files /dev/null and b/nextjs-ssr-manifest/home/public/favicon.ico differ
diff --git a/nextjs-ssr-manifest/index.spec.js b/nextjs-ssr-manifest/index.spec.js
new file mode 100644
index 00000000000..38fbbffe11e
--- /dev/null
+++ b/nextjs-ssr-manifest/index.spec.js
@@ -0,0 +1,83 @@
+const fs = require('fs');
+const spawn = require('cross-spawn');
+const { resolve } = require('path');
+
+const isHiddenDirectory = function (path) {
+ return /(^|\/)\.[^\/\.]/g.test(path);
+};
+
+const blockDir = ['node_modules', 'public', 'dist'];
+
+const folders = [
+ 'basic-host-remote',
+ 'bi-directional',
+ 'startup-code',
+ 'different-react-versions',
+ 'self-healing',
+ 'comprehensive-demo',
+ 'server-side-rendering',
+ 'server-side-render-only',
+ 'dynamic-system-host',
+ 'shared-context',
+ 'shared-routing',
+ 'shared-routes2',
+ 'typescript',
+ 'nested',
+ 'nextjs-sidecar',
+ 'version-discrepancy',
+ 'dashboard-example',
+ 'redux-reducer-injection',
+ 'angular-universal-ssr',
+ 'advanced-api/dynamic-remotes',
+ 'advanced-api/automatic-vendor-sharing',
+ 'nextjs-bi-directional',
+ 'vue3-demo',
+ 'nextjs',
+];
+
+function spawnAsPromise(cmd, args, options) {
+ return new Promise((resolve, reject) => {
+ const child = spawn(cmd, args, options);
+ child.on('close', code => {
+ code === 0 ? resolve(true) : reject(false);
+ });
+ child.on('error', () => {
+ reject(false);
+ });
+ });
+}
+
+function getFiles(source) {
+ const result = [];
+ function walk(src) {
+ const dirents = fs.readdirSync(src, { withFileTypes: true });
+ for (const dirent of dirents) {
+ if (
+ dirent.isDirectory() &&
+ !isHiddenDirectory(dirent.name) &&
+ !blockDir.includes(dirent.name)
+ ) {
+ const resolvedPath = resolve(src, dirent.name);
+ const hasPkgJson = fs.existsSync(`${resolvedPath}/package.json`);
+ if (hasPkgJson) {
+ result.push(resolvedPath);
+ }
+ walk(resolvedPath);
+ }
+ }
+ }
+ walk(source);
+ return result;
+}
+
+for (const folder of folders) {
+ describe(`${folder}`, () => {
+ const apps = getFiles(resolve(__dirname, '..', folder));
+ for (app of apps) {
+ it(`${app} should build`, async () => {
+ const result = await spawnAsPromise('yarn', ['build'], { cwd: app });
+ expect(result).toEqual(true);
+ });
+ }
+ });
+}
diff --git a/nextjs-ssr-manifest/package.json b/nextjs-ssr-manifest/package.json
new file mode 100644
index 00000000000..86d2434ff82
--- /dev/null
+++ b/nextjs-ssr-manifest/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "nextjs-ssr-manifest",
+ "description": "Server Side Rendering with Next.js using JSON protocol",
+ "private": true,
+ "version": "0.0.0",
+ "scripts": {
+ "preinstall": "pnpm install --ignore-scripts",
+ "start": " pnpm --parallel --filter nextjs-ssr-manifest_* dev",
+ "build": "pnpm --parallel --filter nextjs-ssr-manifest_* build",
+ "serve": "pnpm --parallel --filter nextjs-ssr-manifest_* start",
+ "test:e2e": "npx playwright test",
+ "e2e:ci": "pnpm build && pnpm exec playwright test --reporter=list"
+ },
+ "dependencies": {
+ "concurrently": "^8.2.2",
+ "wait-on": "7.2.0"
+ },
+ "devDependencies": {
+ "@playwright/test": "1.58.2",
+ "playwright": "1.58.2"
+ },
+ "pnpm": {
+ "overrides": {
+ "webpack>enhanced-resolve": "5.18.4"
+ },
+ "onlyBuiltDependencies": [
+ "@module-federation/nextjs-mf"
+ ]
+ }
+}
diff --git a/nextjs-ssr-manifest/playwright.config.ts b/nextjs-ssr-manifest/playwright.config.ts
new file mode 100644
index 00000000000..1cd5c842ec2
--- /dev/null
+++ b/nextjs-ssr-manifest/playwright.config.ts
@@ -0,0 +1,50 @@
+import { defineConfig, devices } from '@playwright/test';
+
+const isCI = !!process.env.CI;
+
+export default defineConfig({
+ testDir: './e2e',
+ testMatch: ['**/*.spec.ts'],
+ timeout: 60_000,
+ expect: {
+ timeout: 15_000,
+ },
+ fullyParallel: true,
+ forbidOnly: !!process.env.CI,
+ retries: isCI ? 1 : 0,
+ workers: isCI ? 1 : undefined,
+ reporter: [['html', { outputFolder: 'playwright-report', open: 'never' }], ['list']],
+ use: {
+ baseURL: 'http://localhost:3001',
+ trace: 'on-first-retry',
+ screenshot: 'only-on-failure',
+ video: 'retain-on-failure',
+ viewport: { width: 1920, height: 1080 },
+ },
+ projects: [
+ {
+ name: 'chromium',
+ use: { ...devices['Desktop Chrome'] },
+ },
+ ],
+ webServer: [
+ {
+ command: 'pnpm run --filter nextjs-ssr-manifest_checkout dev',
+ port: 3000,
+ reuseExistingServer: !isCI,
+ timeout: 180_000,
+ },
+ {
+ command: 'pnpm run --filter nextjs-ssr-manifest_home dev',
+ port: 3001,
+ reuseExistingServer: !isCI,
+ timeout: 180_000,
+ },
+ {
+ command: 'pnpm run --filter nextjs-ssr-manifest_shop dev',
+ port: 3002,
+ reuseExistingServer: !isCI,
+ timeout: 180_000,
+ },
+ ],
+});
diff --git a/nextjs-ssr-manifest/pnpm-lock.yaml b/nextjs-ssr-manifest/pnpm-lock.yaml
new file mode 100644
index 00000000000..a9714cf23ee
--- /dev/null
+++ b/nextjs-ssr-manifest/pnpm-lock.yaml
@@ -0,0 +1,2364 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+overrides:
+ webpack>enhanced-resolve: 5.18.4
+
+importers:
+
+ .:
+ dependencies:
+ concurrently:
+ specifier: ^8.2.2
+ version: 8.2.2
+ wait-on:
+ specifier: 7.2.0
+ version: 7.2.0
+ devDependencies:
+ '@playwright/test':
+ specifier: 1.58.2
+ version: 1.58.2
+ playwright:
+ specifier: 1.58.2
+ version: 1.58.2
+
+ checkout:
+ dependencies:
+ '@module-federation/nextjs-mf':
+ specifier: 8.8.69
+ version: 8.8.69(@rspack/core@2.0.8(@module-federation/runtime-tools@2.6.0(node-fetch@2.7.0(encoding@0.1.13))))(next@14.2.35(@playwright/test@1.58.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(node-fetch@2.7.0(encoding@0.1.13))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-jsx@5.1.1(react@18.3.1))(typescript@5.9.3)(webpack@5.105.3)
+ lodash:
+ specifier: 4.17.21
+ version: 4.17.21
+ next:
+ specifier: ^14.2.35
+ version: 14.2.35(@playwright/test@1.58.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ react:
+ specifier: ^18.3.1
+ version: 18.3.1
+ react-dom:
+ specifier: ^18.3.1
+ version: 18.3.1(react@18.3.1)
+ webpack:
+ specifier: 5.105.3
+ version: 5.105.3
+
+ home:
+ dependencies:
+ '@module-federation/nextjs-mf':
+ specifier: 8.8.69
+ version: 8.8.69(@rspack/core@2.0.8(@module-federation/runtime-tools@2.6.0(node-fetch@2.7.0(encoding@0.1.13))))(next@14.2.35(@playwright/test@1.58.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(node-fetch@2.7.0(encoding@0.1.13))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-jsx@5.1.1(react@18.3.1))(typescript@5.9.3)(webpack@5.105.3)
+ lodash:
+ specifier: 4.17.21
+ version: 4.17.21
+ next:
+ specifier: ^14.2.35
+ version: 14.2.35(@playwright/test@1.58.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ react:
+ specifier: ^18.3.1
+ version: 18.3.1
+ react-dom:
+ specifier: ^18.3.1
+ version: 18.3.1(react@18.3.1)
+ webpack:
+ specifier: 5.105.3
+ version: 5.105.3
+
+ shop:
+ dependencies:
+ '@module-federation/nextjs-mf':
+ specifier: 8.8.69
+ version: 8.8.69(@rspack/core@2.0.8(@module-federation/runtime-tools@2.6.0(node-fetch@2.7.0(encoding@0.1.13))))(next@14.2.35(@playwright/test@1.58.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(node-fetch@2.7.0(encoding@0.1.13))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-jsx@5.1.1(react@18.3.1))(typescript@5.9.3)(webpack@5.105.3)
+ lodash:
+ specifier: 4.17.21
+ version: 4.17.21
+ next:
+ specifier: ^14.2.35
+ version: 14.2.35(@playwright/test@1.58.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ react:
+ specifier: ^18.3.1
+ version: 18.3.1
+ react-dom:
+ specifier: ^18.3.1
+ version: 18.3.1(react@18.3.1)
+ webpack:
+ specifier: 5.105.3
+ version: 5.105.3
+
+packages:
+
+ '@babel/runtime@7.29.7':
+ resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==}
+ engines: {node: '>=6.9.0'}
+
+ '@emnapi/core@1.10.0':
+ resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==}
+
+ '@emnapi/runtime@1.10.0':
+ resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==}
+
+ '@emnapi/wasi-threads@1.2.1':
+ resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==}
+
+ '@hapi/hoek@9.3.0':
+ resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==}
+
+ '@hapi/topo@5.1.0':
+ resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==}
+
+ '@jridgewell/gen-mapping@0.3.13':
+ resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/source-map@0.3.11':
+ resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==}
+
+ '@jridgewell/sourcemap-codec@1.5.5':
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+
+ '@module-federation/bridge-react-webpack-plugin@2.6.0':
+ resolution: {integrity: sha512-V+4+1PUmDgAozXPJA8evIa2G+dPJGYn1JzDoHS9wMFch2blko/DO2sMq6FGuZFnT1oyjxiWeiaWXluRElOU9rQ==}
+
+ '@module-federation/cli@2.6.0':
+ resolution: {integrity: sha512-CHBsi5f8Oe9sCN6rY4R0+P/oFApvuutnqfoYNtuORdMn6FHittFDkuLFCSYlrZN2QYw/Sqir2xgLcwmY77Z7PA==}
+ engines: {node: '>=16.0.0'}
+ hasBin: true
+
+ '@module-federation/dts-plugin@2.6.0':
+ resolution: {integrity: sha512-0dMjLhU+2HNPyX5Txu6JqA2CAYxVLRv3c/bpRk58aNVwhDO/jqp66IdFztdMZ1XiHqOW9jB3pkOSuIpcl/yXpQ==}
+ peerDependencies:
+ typescript: ^4.9.0 || ^5.0.0
+ vue-tsc: '>=1.0.24'
+ peerDependenciesMeta:
+ vue-tsc:
+ optional: true
+
+ '@module-federation/enhanced@2.6.0':
+ resolution: {integrity: sha512-pQ0V93FfeHtr67Nusr6ySTQO1qeOGs1x9MMjbeZ4ObOPbXdHNX1tH19xVP8mo5k3e8iIV2teMoSayTmHT+nD0g==}
+ hasBin: true
+ peerDependencies:
+ typescript: ^4.9.0 || ^5.0.0
+ vue-tsc: '>=1.0.24'
+ webpack: ^5.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ vue-tsc:
+ optional: true
+ webpack:
+ optional: true
+
+ '@module-federation/error-codes@2.6.0':
+ resolution: {integrity: sha512-J9opjWJJZ1JI/9EvNZF8Ps1VMHS9EsH/i0UjCkQQxFVYZxSDBX1CFunvc7awac4cY//LqJUfqBbfoQPhCfKKKw==}
+
+ '@module-federation/inject-external-runtime-core-plugin@2.6.0':
+ resolution: {integrity: sha512-x5SmH33U1nSEcBXG6YzvkwIQLoKcd/CNfrAx4IJ4qBzlQKI0NvY7U4JE83LpBnwahNTQLvp27ZVX+1f7kt4Vww==}
+ peerDependencies:
+ '@module-federation/runtime-tools': 2.6.0
+
+ '@module-federation/managers@2.6.0':
+ resolution: {integrity: sha512-7Y4Ri6Lh10dCHoEJvNGFmK2Gg1JKy7oJ1TEZhuU3n3mgIpZ519fDNRvU4+tiO9C49p1xyK+mQ8ewxth83waKUA==}
+
+ '@module-federation/manifest@2.6.0':
+ resolution: {integrity: sha512-wIjI4wgFKBoq4l/iBOT2lva+i5sPv1+Ci1gOLOfjMAkygyGo97csUG5TaCWgLJpZzbYrpbFObCB2wZhqaLrQIw==}
+
+ '@module-federation/nextjs-mf@8.8.69':
+ resolution: {integrity: sha512-anskYADl7QCmOxVMQyfxmnhjfxvdJwgrbddc6qlyKOqhCfdtfElJw/8Jtdnvg8fyQ+soDj0t9yW/E7Nj0hBU3g==}
+ peerDependencies:
+ next: ^12 || ^13 || ^14 || ^15
+ react: ^17 || ^18 || ^19
+ react-dom: ^17 || ^18 || ^19
+ styled-jsx: '*'
+ webpack: ^5.40.0
+ peerDependenciesMeta:
+ next:
+ optional: true
+ react:
+ optional: true
+ react-dom:
+ optional: true
+ styled-jsx:
+ optional: true
+ webpack:
+ optional: true
+
+ '@module-federation/node@2.7.45':
+ resolution: {integrity: sha512-h9/jKp+gAGiO+gF4QOrzGDBVZVy+kfN+S06Pywbnpvpwe3DVMuhRXw9lcvZUDe23DHW0D/rAzaLrgNyq2qWciw==}
+ peerDependencies:
+ webpack: ^5.40.0
+ peerDependenciesMeta:
+ webpack:
+ optional: true
+
+ '@module-federation/rspack@2.6.0':
+ resolution: {integrity: sha512-Ayh7WLxhLRMyfBfajDwEytR5StFfnqf8p4tPHq5ds+HzJMlGz/M+NIYEzdOpfOFdE5IqN9bY/mj2AFI5lCureQ==}
+ peerDependencies:
+ '@rspack/core': ^0.7.0 || ^1.0.0 || ^2.0.0-0
+ typescript: ^4.9.0 || ^5.0.0
+ vue-tsc: '>=1.0.24'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ vue-tsc:
+ optional: true
+
+ '@module-federation/runtime-core@2.6.0':
+ resolution: {integrity: sha512-9sL7Yj3H3COZI9JpK/J4hmJUBkIJdmowkj6phHuFiy5Hm5bHiE5U+9WBbR9KqTdyNhAVSL9FeprBW5/Io6i59A==}
+
+ '@module-federation/runtime-tools@2.6.0':
+ resolution: {integrity: sha512-LfvihAhAWWNWlAL9zM+UDVDSSuLE2ZU0ATJ6dcbJuLstYbHYfUqq2e6IyU8TKLPXIib0VAWqPrT44TPam1VJ7g==}
+
+ '@module-federation/runtime@2.6.0':
+ resolution: {integrity: sha512-Y8KgL70RDxD8cCtGWGlGkt+TSDleIjdGmS27gnllibQAIgG/vHhPD11r8kd92x44k4dqtMIntzreOphGICl92g==}
+
+ '@module-federation/sdk@2.6.0':
+ resolution: {integrity: sha512-Z3HT1uDciMrvz2at3sw6TJbAK9Fl7RmoC/8iqO35HDtQMQJ1qSsMIAjnsiCpAC0D4nAm6PIqgSqPWRO/WYgo0Q==}
+ peerDependencies:
+ node-fetch: ^2.7.0 || ^3.3.2
+ peerDependenciesMeta:
+ node-fetch:
+ optional: true
+
+ '@module-federation/third-party-dts-extractor@2.6.0':
+ resolution: {integrity: sha512-rEC1YRC3gTafoOcFm1Htz6cAwHRoWEMQNCm1LXR1HiuayJzUkViVpK/1Pp37UZfytOyQ0qIaP6Ag81PdGvDbmw==}
+
+ '@module-federation/webpack-bundler-runtime@2.6.0':
+ resolution: {integrity: sha512-JjuWOU3ktwDjBWhM4WCoeiErcUxcB5YwUnVjyTMfNJHC3+DMhG4m6ziCl5EJrCv+KaEQdcvXmxLliNZidBZGQg==}
+
+ '@napi-rs/wasm-runtime@1.1.4':
+ resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==}
+ peerDependencies:
+ '@emnapi/core': ^1.7.1
+ '@emnapi/runtime': ^1.7.1
+
+ '@next/env@14.2.35':
+ resolution: {integrity: sha512-DuhvCtj4t9Gwrx80dmz2F4t/zKQ4ktN8WrMwOuVzkJfBilwAwGr6v16M5eI8yCuZ63H9TTuEU09Iu2HqkzFPVQ==}
+
+ '@next/swc-darwin-arm64@14.2.33':
+ resolution: {integrity: sha512-HqYnb6pxlsshoSTubdXKu15g3iivcbsMXg4bYpjL2iS/V6aQot+iyF4BUc2qA/J/n55YtvE4PHMKWBKGCF/+wA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@next/swc-darwin-x64@14.2.33':
+ resolution: {integrity: sha512-8HGBeAE5rX3jzKvF593XTTFg3gxeU4f+UWnswa6JPhzaR6+zblO5+fjltJWIZc4aUalqTclvN2QtTC37LxvZAA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@next/swc-linux-arm64-gnu@14.2.33':
+ resolution: {integrity: sha512-JXMBka6lNNmqbkvcTtaX8Gu5by9547bukHQvPoLe9VRBx1gHwzf5tdt4AaezW85HAB3pikcvyqBToRTDA4DeLw==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@next/swc-linux-arm64-musl@14.2.33':
+ resolution: {integrity: sha512-Bm+QulsAItD/x6Ih8wGIMfRJy4G73tu1HJsrccPW6AfqdZd0Sfm5Imhgkgq2+kly065rYMnCOxTBvmvFY1BKfg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@next/swc-linux-x64-gnu@14.2.33':
+ resolution: {integrity: sha512-FnFn+ZBgsVMbGDsTqo8zsnRzydvsGV8vfiWwUo1LD8FTmPTdV+otGSWKc4LJec0oSexFnCYVO4hX8P8qQKaSlg==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@next/swc-linux-x64-musl@14.2.33':
+ resolution: {integrity: sha512-345tsIWMzoXaQndUTDv1qypDRiebFxGYx9pYkhwY4hBRaOLt8UGfiWKr9FSSHs25dFIf8ZqIFaPdy5MljdoawA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@next/swc-win32-arm64-msvc@14.2.33':
+ resolution: {integrity: sha512-nscpt0G6UCTkrT2ppnJnFsYbPDQwmum4GNXYTeoTIdsmMydSKFz9Iny2jpaRupTb+Wl298+Rh82WKzt9LCcqSQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@next/swc-win32-ia32-msvc@14.2.33':
+ resolution: {integrity: sha512-pc9LpGNKhJ0dXQhZ5QMmYxtARwwmWLpeocFmVG5Z0DzWq5Uf0izcI8tLc+qOpqxO1PWqZ5A7J1blrUIKrIFc7Q==}
+ engines: {node: '>= 10'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@next/swc-win32-x64-msvc@14.2.33':
+ resolution: {integrity: sha512-nOjfZMy8B94MdisuzZo9/57xuFVLHJaDj5e/xrduJp9CV2/HrfxTRH2fbyLe+K9QT41WBLUd4iXX3R7jBp0EUg==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+
+ '@nodelib/fs.scandir@2.1.5':
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.stat@2.0.5':
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.walk@1.2.8':
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+
+ '@playwright/test@1.58.2':
+ resolution: {integrity: sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ '@rspack/binding-darwin-arm64@2.0.8':
+ resolution: {integrity: sha512-vCgbgH7B7qom+uID+RCZsTCOYFb9wC4/4+1U6rMfytrXGVJ72eNQs2tbdjOl0lb18CT3N/n+VkWynUiLk84GwA==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rspack/binding-darwin-x64@2.0.8':
+ resolution: {integrity: sha512-satPm2PD4B7jDTVlVAdvMVdUszwLvWUEnUDzLb77mvVkezKNDZmuhb+e8s+FfKs8hJpNbZ9VAejuA2rr8o985w==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rspack/binding-linux-arm64-gnu@2.0.8':
+ resolution: {integrity: sha512-pSI+npPQE/uDtiboqvcOIRJbEV2+B+H1xffmko/gw50la92oTUW60kVULFwsb6L0+GVCzIcwX3yq60GtYIn+Ug==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rspack/binding-linux-arm64-musl@2.0.8':
+ resolution: {integrity: sha512-igjJ43yxWQ72GZqjDDZSSHax9/Vg+6rLMmOvFglTJUkQpB4Tyvu/YjW+WRjYj2xRw6blOjLxUSJWASvuSqqlvg==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rspack/binding-linux-x64-gnu@2.0.8':
+ resolution: {integrity: sha512-zrkoEOnqj1hOEBO5T2I/2Ts2HSJsYFh1qXwMpK4dMJFGGNWDfNeUa6/LF5uq3VINF3JUl7RL47AgrucoSZJXPA==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rspack/binding-linux-x64-musl@2.0.8':
+ resolution: {integrity: sha512-6CtDaGZjNDvJd9TBp7a9zABbrPORO21W96+3ZcGBn0YNUPUk4ARxIxrTTpeJ/1F41QDM8AYIkGDdqEYMqTYBsA==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rspack/binding-wasm32-wasi@2.0.8':
+ resolution: {integrity: sha512-Yf4SiqTUroT5Ju+te0YAY2xxKOb35tECsO21v7hYyGa705wrgoAK/MmF7enOvs9GR1iZIqgiLD/wxsIxl8GjJw==}
+ cpu: [wasm32]
+
+ '@rspack/binding-win32-arm64-msvc@2.0.8':
+ resolution: {integrity: sha512-8NCuiQsAhXrwRBy57QZoypqrws/zLBkaQVGiB8hksr6v++8hNigNjqpQARLbd0iyMuHsQQ++8+auGk6xlDXmzw==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rspack/binding-win32-ia32-msvc@2.0.8':
+ resolution: {integrity: sha512-bxiekytbX7V9KFAra+HkwtNWC6pYfHEBBZFpiT0xUs3mCFOmAAFVBsBSQsoCP9AdCEXoMAvNdnrHNw3iov4OZw==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rspack/binding-win32-x64-msvc@2.0.8':
+ resolution: {integrity: sha512-7zPs8YCe/ZVJTwd+5lpB0CP0tkn2pONf/T1ycmVY76u21Nrwt8mXQGc/2yH2eWP4B7fikYBr3hGr7mpR2fajqQ==}
+ cpu: [x64]
+ os: [win32]
+
+ '@rspack/binding@2.0.8':
+ resolution: {integrity: sha512-3uZ+y8aQxq33ty2srMxg2Nu0XuBI6vVrG50rkDaXqwWqOohfgGUSfFuQK7EnSUNy4aFUQlCG6NHialQHJov0wg==}
+
+ '@rspack/core@2.0.8':
+ resolution: {integrity: sha512-+NLGJf8gZxihDmMFzjlly3toc2SMjeDmuvz0/Cai9AMdV4F+Pqcnt2BA9V4e3SY2jmhJQtPwgyyLtR1RiJO77g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ peerDependencies:
+ '@module-federation/runtime-tools': ^0.24.1 || ^2.0.0
+ '@swc/helpers': ^0.5.23
+ peerDependenciesMeta:
+ '@module-federation/runtime-tools':
+ optional: true
+ '@swc/helpers':
+ optional: true
+
+ '@sideway/address@4.1.5':
+ resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==}
+
+ '@sideway/formula@3.0.1':
+ resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==}
+
+ '@sideway/pinpoint@2.0.0':
+ resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==}
+
+ '@swc/counter@0.1.3':
+ resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
+
+ '@swc/helpers@0.5.5':
+ resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==}
+
+ '@tybys/wasm-util@0.10.3':
+ resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==}
+
+ '@types/eslint-scope@3.7.7':
+ resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==}
+
+ '@types/eslint@9.6.1':
+ resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==}
+
+ '@types/estree@1.0.9':
+ resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
+
+ '@types/json-schema@7.0.15':
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+
+ '@types/node@26.0.0':
+ resolution: {integrity: sha512-vf2YFi1iY9lHGwNJMs01biZFbKJkrZR1T6/MlzjhJLPdntOHLhTrDSnSVcdtvjihi4VQNlrFRIxLsDBlQpAipA==}
+
+ '@types/semver@7.5.8':
+ resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
+
+ '@webassemblyjs/ast@1.14.1':
+ resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==}
+
+ '@webassemblyjs/floating-point-hex-parser@1.13.2':
+ resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==}
+
+ '@webassemblyjs/helper-api-error@1.13.2':
+ resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==}
+
+ '@webassemblyjs/helper-buffer@1.14.1':
+ resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==}
+
+ '@webassemblyjs/helper-numbers@1.13.2':
+ resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==}
+
+ '@webassemblyjs/helper-wasm-bytecode@1.13.2':
+ resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==}
+
+ '@webassemblyjs/helper-wasm-section@1.14.1':
+ resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==}
+
+ '@webassemblyjs/ieee754@1.13.2':
+ resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==}
+
+ '@webassemblyjs/leb128@1.13.2':
+ resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==}
+
+ '@webassemblyjs/utf8@1.13.2':
+ resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==}
+
+ '@webassemblyjs/wasm-edit@1.14.1':
+ resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==}
+
+ '@webassemblyjs/wasm-gen@1.14.1':
+ resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==}
+
+ '@webassemblyjs/wasm-opt@1.14.1':
+ resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==}
+
+ '@webassemblyjs/wasm-parser@1.14.1':
+ resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==}
+
+ '@webassemblyjs/wast-printer@1.14.1':
+ resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==}
+
+ '@xtuc/ieee754@1.2.0':
+ resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==}
+
+ '@xtuc/long@4.2.2':
+ resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
+
+ acorn-import-phases@1.0.4:
+ resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==}
+ engines: {node: '>=10.13.0'}
+ peerDependencies:
+ acorn: ^8.14.0
+
+ acorn@8.17.0:
+ resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ adm-zip@0.5.10:
+ resolution: {integrity: sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==}
+ engines: {node: '>=6.0'}
+
+ agent-base@6.0.2:
+ resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
+ engines: {node: '>= 6.0.0'}
+
+ ajv-formats@2.1.1:
+ resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
+ peerDependencies:
+ ajv: ^8.0.0
+ peerDependenciesMeta:
+ ajv:
+ optional: true
+
+ ajv-keywords@5.1.0:
+ resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==}
+ peerDependencies:
+ ajv: ^8.8.2
+
+ ajv@8.20.0:
+ resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==}
+
+ ansi-colors@4.1.3:
+ resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
+ engines: {node: '>=6'}
+
+ ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+
+ ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+
+ asynckit@0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+
+ axios@1.18.1:
+ resolution: {integrity: sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==}
+
+ baseline-browser-mapping@2.10.38:
+ resolution: {integrity: sha512-31/02mVB4yuQU6adKk5SlY6m+mxDwUq5KZkyYgnLrrKl7TEm1+3PyDtDBz2kOv/wxZz41GHsvV1A/u6RmiyBvw==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
+ browserslist@4.28.4:
+ resolution: {integrity: sha512-MTc8i/x9jBQd1iMw2CFGS+rwMa07eYjLR0CCTLDACl9xhxy+nIs3KeML/biicXtk9JrZ6dnnTatmc7ErPXIxqw==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
+ buffer-from@1.1.2:
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+
+ busboy@1.6.0:
+ resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
+ engines: {node: '>=10.16.0'}
+
+ call-bind-apply-helpers@1.0.2:
+ resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+ engines: {node: '>= 0.4'}
+
+ caniuse-lite@1.0.30001799:
+ resolution: {integrity: sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==}
+
+ chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+
+ chrome-trace-event@1.0.4:
+ resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==}
+ engines: {node: '>=6.0'}
+
+ client-only@0.0.1:
+ resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
+
+ cliui@8.0.1:
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
+
+ color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+
+ commander@11.1.0:
+ resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
+ engines: {node: '>=16'}
+
+ commander@2.20.3:
+ resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+
+ concurrently@8.2.2:
+ resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==}
+ engines: {node: ^14.13.0 || >=16.0.0}
+ hasBin: true
+
+ cron-parser@4.9.0:
+ resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==}
+ engines: {node: '>=12.0.0'}
+
+ date-fns@2.30.0:
+ resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==}
+ engines: {node: '>=0.11'}
+
+ debug@4.4.3:
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+
+ dunder-proto@1.0.1:
+ resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+ engines: {node: '>= 0.4'}
+
+ electron-to-chromium@1.5.377:
+ resolution: {integrity: sha512-cH1jZgJHoezfTnKfKwnScpHywTFVnJUNITDPREFdhNjiuD502+QFpG0Qk7G8jhsV/f+CEAFlIrzP1fT+IMb92g==}
+
+ emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ encoding@0.1.13:
+ resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==}
+
+ enhanced-resolve@5.18.4:
+ resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==}
+ engines: {node: '>=10.13.0'}
+
+ es-define-property@1.0.1:
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ es-module-lexer@2.1.0:
+ resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==}
+
+ es-object-atoms@1.1.2:
+ resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==}
+ engines: {node: '>= 0.4'}
+
+ es-set-tostringtag@2.1.0:
+ resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
+ engines: {node: '>= 0.4'}
+
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+
+ eslint-scope@5.1.1:
+ resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
+ engines: {node: '>=8.0.0'}
+
+ esrecurse@4.3.0:
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
+
+ estraverse@4.3.0:
+ resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
+ engines: {node: '>=4.0'}
+
+ estraverse@5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+
+ events@3.3.0:
+ resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
+ engines: {node: '>=0.8.x'}
+
+ expand-tilde@2.0.2:
+ resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==}
+ engines: {node: '>=0.10.0'}
+
+ fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+
+ fast-glob@3.3.3:
+ resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
+ engines: {node: '>=8.6.0'}
+
+ fast-uri@3.1.2:
+ resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==}
+
+ fastq@1.20.1:
+ resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
+
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
+ find-file-up@2.0.1:
+ resolution: {integrity: sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==}
+ engines: {node: '>=8'}
+
+ find-pkg@2.0.0:
+ resolution: {integrity: sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==}
+ engines: {node: '>=8'}
+
+ follow-redirects@1.16.0:
+ resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ debug: '*'
+ peerDependenciesMeta:
+ debug:
+ optional: true
+
+ form-data@4.0.6:
+ resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==}
+ engines: {node: '>= 6'}
+
+ fsevents@2.3.2:
+ resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+
+ get-intrinsic@1.3.0:
+ resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
+ engines: {node: '>= 0.4'}
+
+ get-proto@1.0.1:
+ resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+ engines: {node: '>= 0.4'}
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
+ glob-to-regexp@0.4.1:
+ resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
+
+ global-modules@1.0.0:
+ resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==}
+ engines: {node: '>=0.10.0'}
+
+ global-prefix@1.0.2:
+ resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==}
+ engines: {node: '>=0.10.0'}
+
+ gopd@1.2.0:
+ resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+ engines: {node: '>= 0.4'}
+
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
+ has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+
+ has-symbols@1.1.0:
+ resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
+ engines: {node: '>= 0.4'}
+
+ has-tostringtag@1.0.2:
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
+
+ hasown@2.0.4:
+ resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==}
+ engines: {node: '>= 0.4'}
+
+ homedir-polyfill@1.0.3:
+ resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==}
+ engines: {node: '>=0.10.0'}
+
+ https-proxy-agent@5.0.1:
+ resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
+ engines: {node: '>= 6'}
+
+ iconv-lite@0.6.3:
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
+
+ ini@1.3.8:
+ resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
+
+ is-core-module@2.16.2:
+ resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==}
+ engines: {node: '>= 0.4'}
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ is-windows@1.0.2:
+ resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
+ engines: {node: '>=0.10.0'}
+
+ isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ isomorphic-ws@5.0.0:
+ resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==}
+ peerDependencies:
+ ws: '*'
+
+ jest-worker@27.5.1:
+ resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
+ engines: {node: '>= 10.13.0'}
+
+ jiti@2.4.2:
+ resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
+ hasBin: true
+
+ joi@17.13.4:
+ resolution: {integrity: sha512-1RuuER6kmt8K8I3nIWvPZKi5RQCb568ZPyY4Pwjlua+yo+63ZTmIwxLZH0heBmiKN4uxjvCiarDrjaeH84xicQ==}
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ json-parse-even-better-errors@2.3.1:
+ resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+
+ json-schema-traverse@1.0.0:
+ resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
+
+ loader-runner@4.3.2:
+ resolution: {integrity: sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==}
+ engines: {node: '>=6.11.5'}
+
+ lodash@4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+
+ long-timeout@0.1.1:
+ resolution: {integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==}
+
+ loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+
+ luxon@3.7.2:
+ resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==}
+ engines: {node: '>=12'}
+
+ math-intrinsics@1.1.0:
+ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+ engines: {node: '>= 0.4'}
+
+ merge-stream@2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+
+ merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
+
+ mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+
+ minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ nanoid@3.3.15:
+ resolution: {integrity: sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ neo-async@2.6.2:
+ resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
+
+ next@14.2.35:
+ resolution: {integrity: sha512-KhYd2Hjt/O1/1aZVX3dCwGXM1QmOV4eNM2UTacK5gipDdPN/oHHK/4oVGy7X8GMfPMsUTUEmGlsy0EY1YGAkig==}
+ 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
+
+ node-fetch@2.7.0:
+ resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+
+ node-releases@2.0.48:
+ resolution: {integrity: sha512-1uz8041X6LoI6ZSdZacM9lVY28vuzDlSKitnpbSNK0RfKoIJkX29NBPVEFXhnuSuEOA9Ww0xnPJ+ILWbGAv8DA==}
+ engines: {node: '>=18'}
+
+ node-schedule@2.1.1:
+ resolution: {integrity: sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==}
+ engines: {node: '>=6'}
+
+ parse-passwd@1.0.0:
+ resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==}
+ engines: {node: '>=0.10.0'}
+
+ path-parse@1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
+ picomatch@2.3.2:
+ resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==}
+ engines: {node: '>=8.6'}
+
+ playwright-core@1.58.2:
+ resolution: {integrity: sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ playwright@1.58.2:
+ resolution: {integrity: sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ postcss@8.4.31:
+ resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ proxy-from-env@2.1.0:
+ resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==}
+ engines: {node: '>=10'}
+
+ queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+
+ react-dom@18.3.1:
+ resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
+ peerDependencies:
+ react: ^18.3.1
+
+ react@18.3.1:
+ resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
+ engines: {node: '>=0.10.0'}
+
+ require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+
+ require-from-string@2.0.2:
+ resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
+ engines: {node: '>=0.10.0'}
+
+ resolve-dir@1.0.1:
+ resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==}
+ engines: {node: '>=0.10.0'}
+
+ resolve@1.22.8:
+ resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
+ hasBin: true
+
+ reusify@1.1.0:
+ resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+
+ run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+
+ rxjs@7.8.2:
+ resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
+
+ safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+
+ scheduler@0.23.2:
+ resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
+
+ schema-utils@4.3.0:
+ resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==}
+ engines: {node: '>= 10.13.0'}
+
+ schema-utils@4.3.3:
+ resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==}
+ engines: {node: '>= 10.13.0'}
+
+ semver@7.6.3:
+ resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ shell-quote@1.8.4:
+ resolution: {integrity: sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ==}
+ engines: {node: '>= 0.4'}
+
+ sorted-array-functions@1.3.0:
+ resolution: {integrity: sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==}
+
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+
+ source-map-support@0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+
+ source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ spawn-command@0.0.2:
+ resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==}
+
+ streamsearch@1.1.0:
+ resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
+ engines: {node: '>=10.0.0'}
+
+ string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+
+ strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+
+ styled-jsx@5.1.1:
+ resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
+ engines: {node: '>= 12.0.0'}
+ peerDependencies:
+ '@babel/core': '*'
+ babel-plugin-macros: '*'
+ react: '>= 16.8.0 || 17.x.x || ^18.0.0-0'
+ peerDependenciesMeta:
+ '@babel/core':
+ optional: true
+ babel-plugin-macros:
+ optional: true
+
+ supports-color@7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+
+ supports-color@8.1.1:
+ resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
+ engines: {node: '>=10'}
+
+ supports-preserve-symlinks-flag@1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+
+ tapable@2.3.0:
+ resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==}
+ engines: {node: '>=6'}
+
+ tapable@2.3.3:
+ resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==}
+ engines: {node: '>=6'}
+
+ terser-webpack-plugin@5.6.1:
+ resolution: {integrity: sha512-201R5j+sJpK8nFWwKVyNfZot8FaJbLZDq5evriVzbV1wDtSXDjRUDRfJzHpAaxFDMEhsZL1QkeqM61wgsS3KaQ==}
+ engines: {node: '>= 10.13.0'}
+ peerDependencies:
+ '@minify-html/node': '*'
+ '@swc/core': '*'
+ '@swc/css': '*'
+ '@swc/html': '*'
+ clean-css: '*'
+ cssnano: '*'
+ csso: '*'
+ esbuild: '*'
+ html-minifier-terser: '*'
+ lightningcss: '*'
+ postcss: '*'
+ uglify-js: '*'
+ webpack: ^5.1.0
+ peerDependenciesMeta:
+ '@minify-html/node':
+ optional: true
+ '@swc/core':
+ optional: true
+ '@swc/css':
+ optional: true
+ '@swc/html':
+ optional: true
+ clean-css:
+ optional: true
+ cssnano:
+ optional: true
+ csso:
+ optional: true
+ esbuild:
+ optional: true
+ html-minifier-terser:
+ optional: true
+ lightningcss:
+ optional: true
+ postcss:
+ optional: true
+ uglify-js:
+ optional: true
+
+ terser@5.48.0:
+ resolution: {integrity: sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+
+ tr46@0.0.3:
+ resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+
+ tree-kill@1.2.2:
+ resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
+ hasBin: true
+
+ tslib@2.8.1:
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+
+ typescript@5.9.3:
+ resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ undici-types@8.3.0:
+ resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==}
+
+ undici@7.28.0:
+ resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==}
+ engines: {node: '>=20.18.1'}
+
+ upath@2.0.1:
+ resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==}
+ engines: {node: '>=4'}
+
+ update-browserslist-db@1.2.3:
+ resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
+ wait-on@7.2.0:
+ resolution: {integrity: sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==}
+ engines: {node: '>=12.0.0'}
+ hasBin: true
+
+ watchpack@2.5.2:
+ resolution: {integrity: sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg==}
+ engines: {node: '>=10.13.0'}
+
+ webidl-conversions@3.0.1:
+ resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+
+ webpack-sources@3.5.0:
+ resolution: {integrity: sha512-HPuy+uuoTCaaoEoI1LQ3JN9+vrPBvEesnnX1jADHy728cHSMlq4wUc4afYqahq2B1mhQVZxCXOkNTnXltr+2vQ==}
+ engines: {node: '>=10.13.0'}
+
+ webpack@5.105.3:
+ resolution: {integrity: sha512-LLBBA4oLmT7sZdHiYE/PeVuifOxYyE2uL/V+9VQP7YSYdJU7bSf7H8bZRRxW8kEPMkmVjnrXmoR3oejIdX0xbg==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+ peerDependencies:
+ webpack-cli: '*'
+ peerDependenciesMeta:
+ webpack-cli:
+ optional: true
+
+ whatwg-url@5.0.0:
+ resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+
+ which@1.3.1:
+ resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
+ hasBin: true
+
+ wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+
+ ws@8.21.0:
+ resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ y18n@5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+
+ yargs-parser@21.1.1:
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+
+ yargs@17.7.3:
+ resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==}
+ engines: {node: '>=12'}
+
+snapshots:
+
+ '@babel/runtime@7.29.7': {}
+
+ '@emnapi/core@1.10.0':
+ dependencies:
+ '@emnapi/wasi-threads': 1.2.1
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/runtime@1.10.0':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/wasi-threads@1.2.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@hapi/hoek@9.3.0': {}
+
+ '@hapi/topo@5.1.0':
+ dependencies:
+ '@hapi/hoek': 9.3.0
+
+ '@jridgewell/gen-mapping@0.3.13':
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/source-map@0.3.11':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/sourcemap-codec@1.5.5': {}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ '@module-federation/bridge-react-webpack-plugin@2.6.0(node-fetch@2.7.0(encoding@0.1.13))':
+ dependencies:
+ '@module-federation/sdk': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ '@types/semver': 7.5.8
+ semver: 7.6.3
+ transitivePeerDependencies:
+ - node-fetch
+
+ '@module-federation/cli@2.6.0(node-fetch@2.7.0(encoding@0.1.13))(typescript@5.9.3)':
+ dependencies:
+ '@module-federation/dts-plugin': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))(typescript@5.9.3)
+ '@module-federation/sdk': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ commander: 11.1.0
+ jiti: 2.4.2
+ transitivePeerDependencies:
+ - bufferutil
+ - node-fetch
+ - typescript
+ - utf-8-validate
+ - vue-tsc
+
+ '@module-federation/dts-plugin@2.6.0(node-fetch@2.7.0(encoding@0.1.13))(typescript@5.9.3)':
+ dependencies:
+ '@module-federation/error-codes': 2.6.0
+ '@module-federation/managers': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ '@module-federation/sdk': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ '@module-federation/third-party-dts-extractor': 2.6.0
+ adm-zip: 0.5.10
+ ansi-colors: 4.1.3
+ isomorphic-ws: 5.0.0(ws@8.21.0)
+ node-schedule: 2.1.1
+ typescript: 5.9.3
+ undici: 7.28.0
+ ws: 8.21.0
+ transitivePeerDependencies:
+ - bufferutil
+ - node-fetch
+ - utf-8-validate
+
+ '@module-federation/enhanced@2.6.0(@rspack/core@2.0.8(@module-federation/runtime-tools@2.6.0(node-fetch@2.7.0(encoding@0.1.13))))(node-fetch@2.7.0(encoding@0.1.13))(typescript@5.9.3)(webpack@5.105.3)':
+ dependencies:
+ '@module-federation/bridge-react-webpack-plugin': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ '@module-federation/cli': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))(typescript@5.9.3)
+ '@module-federation/dts-plugin': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))(typescript@5.9.3)
+ '@module-federation/error-codes': 2.6.0
+ '@module-federation/inject-external-runtime-core-plugin': 2.6.0(@module-federation/runtime-tools@2.6.0(node-fetch@2.7.0(encoding@0.1.13)))
+ '@module-federation/managers': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ '@module-federation/manifest': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))(typescript@5.9.3)
+ '@module-federation/rspack': 2.6.0(@rspack/core@2.0.8(@module-federation/runtime-tools@2.6.0(node-fetch@2.7.0(encoding@0.1.13))))(node-fetch@2.7.0(encoding@0.1.13))(typescript@5.9.3)
+ '@module-federation/runtime-tools': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ '@module-federation/sdk': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ '@module-federation/webpack-bundler-runtime': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ schema-utils: 4.3.0
+ tapable: 2.3.0
+ upath: 2.0.1
+ optionalDependencies:
+ typescript: 5.9.3
+ webpack: 5.105.3
+ transitivePeerDependencies:
+ - '@rspack/core'
+ - bufferutil
+ - node-fetch
+ - utf-8-validate
+
+ '@module-federation/error-codes@2.6.0': {}
+
+ '@module-federation/inject-external-runtime-core-plugin@2.6.0(@module-federation/runtime-tools@2.6.0(node-fetch@2.7.0(encoding@0.1.13)))':
+ dependencies:
+ '@module-federation/runtime-tools': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+
+ '@module-federation/managers@2.6.0(node-fetch@2.7.0(encoding@0.1.13))':
+ dependencies:
+ '@module-federation/sdk': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ find-pkg: 2.0.0
+ transitivePeerDependencies:
+ - node-fetch
+
+ '@module-federation/manifest@2.6.0(node-fetch@2.7.0(encoding@0.1.13))(typescript@5.9.3)':
+ dependencies:
+ '@module-federation/dts-plugin': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))(typescript@5.9.3)
+ '@module-federation/managers': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ '@module-federation/sdk': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ find-pkg: 2.0.0
+ transitivePeerDependencies:
+ - bufferutil
+ - node-fetch
+ - typescript
+ - utf-8-validate
+ - vue-tsc
+
+ '@module-federation/nextjs-mf@8.8.69(@rspack/core@2.0.8(@module-federation/runtime-tools@2.6.0(node-fetch@2.7.0(encoding@0.1.13))))(next@14.2.35(@playwright/test@1.58.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(node-fetch@2.7.0(encoding@0.1.13))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-jsx@5.1.1(react@18.3.1))(typescript@5.9.3)(webpack@5.105.3)':
+ dependencies:
+ '@module-federation/enhanced': 2.6.0(@rspack/core@2.0.8(@module-federation/runtime-tools@2.6.0(node-fetch@2.7.0(encoding@0.1.13))))(node-fetch@2.7.0(encoding@0.1.13))(typescript@5.9.3)(webpack@5.105.3)
+ '@module-federation/node': 2.7.45(@rspack/core@2.0.8(@module-federation/runtime-tools@2.6.0(node-fetch@2.7.0(encoding@0.1.13))))(typescript@5.9.3)(webpack@5.105.3)
+ '@module-federation/runtime': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ '@module-federation/runtime-core': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ '@module-federation/sdk': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ '@module-federation/webpack-bundler-runtime': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ fast-glob: 3.3.3
+ optionalDependencies:
+ next: 14.2.35(@playwright/test@1.58.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ styled-jsx: 5.1.1(react@18.3.1)
+ webpack: 5.105.3
+ transitivePeerDependencies:
+ - '@rspack/core'
+ - bufferutil
+ - node-fetch
+ - typescript
+ - utf-8-validate
+ - vue-tsc
+
+ '@module-federation/node@2.7.45(@rspack/core@2.0.8(@module-federation/runtime-tools@2.6.0(node-fetch@2.7.0(encoding@0.1.13))))(typescript@5.9.3)(webpack@5.105.3)':
+ dependencies:
+ '@module-federation/enhanced': 2.6.0(@rspack/core@2.0.8(@module-federation/runtime-tools@2.6.0(node-fetch@2.7.0(encoding@0.1.13))))(node-fetch@2.7.0(encoding@0.1.13))(typescript@5.9.3)(webpack@5.105.3)
+ '@module-federation/runtime': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ '@module-federation/sdk': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ encoding: 0.1.13
+ node-fetch: 2.7.0(encoding@0.1.13)
+ tapable: 2.3.0
+ optionalDependencies:
+ webpack: 5.105.3
+ transitivePeerDependencies:
+ - '@rspack/core'
+ - bufferutil
+ - typescript
+ - utf-8-validate
+ - vue-tsc
+
+ '@module-federation/rspack@2.6.0(@rspack/core@2.0.8(@module-federation/runtime-tools@2.6.0(node-fetch@2.7.0(encoding@0.1.13))))(node-fetch@2.7.0(encoding@0.1.13))(typescript@5.9.3)':
+ dependencies:
+ '@module-federation/bridge-react-webpack-plugin': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ '@module-federation/dts-plugin': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))(typescript@5.9.3)
+ '@module-federation/inject-external-runtime-core-plugin': 2.6.0(@module-federation/runtime-tools@2.6.0(node-fetch@2.7.0(encoding@0.1.13)))
+ '@module-federation/managers': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ '@module-federation/manifest': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))(typescript@5.9.3)
+ '@module-federation/runtime-tools': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ '@module-federation/sdk': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ '@rspack/core': 2.0.8(@module-federation/runtime-tools@2.6.0(node-fetch@2.7.0(encoding@0.1.13)))
+ optionalDependencies:
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - bufferutil
+ - node-fetch
+ - utf-8-validate
+
+ '@module-federation/runtime-core@2.6.0(node-fetch@2.7.0(encoding@0.1.13))':
+ dependencies:
+ '@module-federation/error-codes': 2.6.0
+ '@module-federation/sdk': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ transitivePeerDependencies:
+ - node-fetch
+
+ '@module-federation/runtime-tools@2.6.0(node-fetch@2.7.0(encoding@0.1.13))':
+ dependencies:
+ '@module-federation/runtime': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ '@module-federation/webpack-bundler-runtime': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ transitivePeerDependencies:
+ - node-fetch
+
+ '@module-federation/runtime@2.6.0(node-fetch@2.7.0(encoding@0.1.13))':
+ dependencies:
+ '@module-federation/error-codes': 2.6.0
+ '@module-federation/runtime-core': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ '@module-federation/sdk': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ transitivePeerDependencies:
+ - node-fetch
+
+ '@module-federation/sdk@2.6.0(node-fetch@2.7.0(encoding@0.1.13))':
+ optionalDependencies:
+ node-fetch: 2.7.0(encoding@0.1.13)
+
+ '@module-federation/third-party-dts-extractor@2.6.0':
+ dependencies:
+ find-pkg: 2.0.0
+ resolve: 1.22.8
+
+ '@module-federation/webpack-bundler-runtime@2.6.0(node-fetch@2.7.0(encoding@0.1.13))':
+ dependencies:
+ '@module-federation/error-codes': 2.6.0
+ '@module-federation/runtime': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ '@module-federation/sdk': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+ transitivePeerDependencies:
+ - node-fetch
+
+ '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)':
+ dependencies:
+ '@emnapi/core': 1.10.0
+ '@emnapi/runtime': 1.10.0
+ '@tybys/wasm-util': 0.10.3
+ optional: true
+
+ '@next/env@14.2.35': {}
+
+ '@next/swc-darwin-arm64@14.2.33':
+ optional: true
+
+ '@next/swc-darwin-x64@14.2.33':
+ optional: true
+
+ '@next/swc-linux-arm64-gnu@14.2.33':
+ optional: true
+
+ '@next/swc-linux-arm64-musl@14.2.33':
+ optional: true
+
+ '@next/swc-linux-x64-gnu@14.2.33':
+ optional: true
+
+ '@next/swc-linux-x64-musl@14.2.33':
+ optional: true
+
+ '@next/swc-win32-arm64-msvc@14.2.33':
+ optional: true
+
+ '@next/swc-win32-ia32-msvc@14.2.33':
+ optional: true
+
+ '@next/swc-win32-x64-msvc@14.2.33':
+ optional: true
+
+ '@nodelib/fs.scandir@2.1.5':
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ '@nodelib/fs.stat@2.0.5': {}
+
+ '@nodelib/fs.walk@1.2.8':
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.20.1
+
+ '@playwright/test@1.58.2':
+ dependencies:
+ playwright: 1.58.2
+
+ '@rspack/binding-darwin-arm64@2.0.8':
+ optional: true
+
+ '@rspack/binding-darwin-x64@2.0.8':
+ optional: true
+
+ '@rspack/binding-linux-arm64-gnu@2.0.8':
+ optional: true
+
+ '@rspack/binding-linux-arm64-musl@2.0.8':
+ optional: true
+
+ '@rspack/binding-linux-x64-gnu@2.0.8':
+ optional: true
+
+ '@rspack/binding-linux-x64-musl@2.0.8':
+ optional: true
+
+ '@rspack/binding-wasm32-wasi@2.0.8':
+ dependencies:
+ '@emnapi/core': 1.10.0
+ '@emnapi/runtime': 1.10.0
+ '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)
+ optional: true
+
+ '@rspack/binding-win32-arm64-msvc@2.0.8':
+ optional: true
+
+ '@rspack/binding-win32-ia32-msvc@2.0.8':
+ optional: true
+
+ '@rspack/binding-win32-x64-msvc@2.0.8':
+ optional: true
+
+ '@rspack/binding@2.0.8':
+ optionalDependencies:
+ '@rspack/binding-darwin-arm64': 2.0.8
+ '@rspack/binding-darwin-x64': 2.0.8
+ '@rspack/binding-linux-arm64-gnu': 2.0.8
+ '@rspack/binding-linux-arm64-musl': 2.0.8
+ '@rspack/binding-linux-x64-gnu': 2.0.8
+ '@rspack/binding-linux-x64-musl': 2.0.8
+ '@rspack/binding-wasm32-wasi': 2.0.8
+ '@rspack/binding-win32-arm64-msvc': 2.0.8
+ '@rspack/binding-win32-ia32-msvc': 2.0.8
+ '@rspack/binding-win32-x64-msvc': 2.0.8
+
+ '@rspack/core@2.0.8(@module-federation/runtime-tools@2.6.0(node-fetch@2.7.0(encoding@0.1.13)))':
+ dependencies:
+ '@rspack/binding': 2.0.8
+ optionalDependencies:
+ '@module-federation/runtime-tools': 2.6.0(node-fetch@2.7.0(encoding@0.1.13))
+
+ '@sideway/address@4.1.5':
+ dependencies:
+ '@hapi/hoek': 9.3.0
+
+ '@sideway/formula@3.0.1': {}
+
+ '@sideway/pinpoint@2.0.0': {}
+
+ '@swc/counter@0.1.3': {}
+
+ '@swc/helpers@0.5.5':
+ dependencies:
+ '@swc/counter': 0.1.3
+ tslib: 2.8.1
+
+ '@tybys/wasm-util@0.10.3':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@types/eslint-scope@3.7.7':
+ dependencies:
+ '@types/eslint': 9.6.1
+ '@types/estree': 1.0.9
+
+ '@types/eslint@9.6.1':
+ dependencies:
+ '@types/estree': 1.0.9
+ '@types/json-schema': 7.0.15
+
+ '@types/estree@1.0.9': {}
+
+ '@types/json-schema@7.0.15': {}
+
+ '@types/node@26.0.0':
+ dependencies:
+ undici-types: 8.3.0
+
+ '@types/semver@7.5.8': {}
+
+ '@webassemblyjs/ast@1.14.1':
+ dependencies:
+ '@webassemblyjs/helper-numbers': 1.13.2
+ '@webassemblyjs/helper-wasm-bytecode': 1.13.2
+
+ '@webassemblyjs/floating-point-hex-parser@1.13.2': {}
+
+ '@webassemblyjs/helper-api-error@1.13.2': {}
+
+ '@webassemblyjs/helper-buffer@1.14.1': {}
+
+ '@webassemblyjs/helper-numbers@1.13.2':
+ dependencies:
+ '@webassemblyjs/floating-point-hex-parser': 1.13.2
+ '@webassemblyjs/helper-api-error': 1.13.2
+ '@xtuc/long': 4.2.2
+
+ '@webassemblyjs/helper-wasm-bytecode@1.13.2': {}
+
+ '@webassemblyjs/helper-wasm-section@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/helper-buffer': 1.14.1
+ '@webassemblyjs/helper-wasm-bytecode': 1.13.2
+ '@webassemblyjs/wasm-gen': 1.14.1
+
+ '@webassemblyjs/ieee754@1.13.2':
+ dependencies:
+ '@xtuc/ieee754': 1.2.0
+
+ '@webassemblyjs/leb128@1.13.2':
+ dependencies:
+ '@xtuc/long': 4.2.2
+
+ '@webassemblyjs/utf8@1.13.2': {}
+
+ '@webassemblyjs/wasm-edit@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/helper-buffer': 1.14.1
+ '@webassemblyjs/helper-wasm-bytecode': 1.13.2
+ '@webassemblyjs/helper-wasm-section': 1.14.1
+ '@webassemblyjs/wasm-gen': 1.14.1
+ '@webassemblyjs/wasm-opt': 1.14.1
+ '@webassemblyjs/wasm-parser': 1.14.1
+ '@webassemblyjs/wast-printer': 1.14.1
+
+ '@webassemblyjs/wasm-gen@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/helper-wasm-bytecode': 1.13.2
+ '@webassemblyjs/ieee754': 1.13.2
+ '@webassemblyjs/leb128': 1.13.2
+ '@webassemblyjs/utf8': 1.13.2
+
+ '@webassemblyjs/wasm-opt@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/helper-buffer': 1.14.1
+ '@webassemblyjs/wasm-gen': 1.14.1
+ '@webassemblyjs/wasm-parser': 1.14.1
+
+ '@webassemblyjs/wasm-parser@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/helper-api-error': 1.13.2
+ '@webassemblyjs/helper-wasm-bytecode': 1.13.2
+ '@webassemblyjs/ieee754': 1.13.2
+ '@webassemblyjs/leb128': 1.13.2
+ '@webassemblyjs/utf8': 1.13.2
+
+ '@webassemblyjs/wast-printer@1.14.1':
+ dependencies:
+ '@webassemblyjs/ast': 1.14.1
+ '@xtuc/long': 4.2.2
+
+ '@xtuc/ieee754@1.2.0': {}
+
+ '@xtuc/long@4.2.2': {}
+
+ acorn-import-phases@1.0.4(acorn@8.17.0):
+ dependencies:
+ acorn: 8.17.0
+
+ acorn@8.17.0: {}
+
+ adm-zip@0.5.10: {}
+
+ agent-base@6.0.2:
+ dependencies:
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ ajv-formats@2.1.1(ajv@8.20.0):
+ optionalDependencies:
+ ajv: 8.20.0
+
+ ajv-keywords@5.1.0(ajv@8.20.0):
+ dependencies:
+ ajv: 8.20.0
+ fast-deep-equal: 3.1.3
+
+ ajv@8.20.0:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-uri: 3.1.2
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+
+ ansi-colors@4.1.3: {}
+
+ ansi-regex@5.0.1: {}
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ asynckit@0.4.0: {}
+
+ axios@1.18.1:
+ dependencies:
+ follow-redirects: 1.16.0
+ form-data: 4.0.6
+ https-proxy-agent: 5.0.1
+ proxy-from-env: 2.1.0
+ transitivePeerDependencies:
+ - debug
+ - supports-color
+
+ baseline-browser-mapping@2.10.38: {}
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
+ browserslist@4.28.4:
+ dependencies:
+ baseline-browser-mapping: 2.10.38
+ caniuse-lite: 1.0.30001799
+ electron-to-chromium: 1.5.377
+ node-releases: 2.0.48
+ update-browserslist-db: 1.2.3(browserslist@4.28.4)
+
+ buffer-from@1.1.2: {}
+
+ busboy@1.6.0:
+ dependencies:
+ streamsearch: 1.1.0
+
+ call-bind-apply-helpers@1.0.2:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+
+ caniuse-lite@1.0.30001799: {}
+
+ chalk@4.1.2:
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+
+ chrome-trace-event@1.0.4: {}
+
+ client-only@0.0.1: {}
+
+ cliui@8.0.1:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.4: {}
+
+ combined-stream@1.0.8:
+ dependencies:
+ delayed-stream: 1.0.0
+
+ commander@11.1.0: {}
+
+ commander@2.20.3: {}
+
+ concurrently@8.2.2:
+ dependencies:
+ chalk: 4.1.2
+ date-fns: 2.30.0
+ lodash: 4.17.21
+ rxjs: 7.8.2
+ shell-quote: 1.8.4
+ spawn-command: 0.0.2
+ supports-color: 8.1.1
+ tree-kill: 1.2.2
+ yargs: 17.7.3
+
+ cron-parser@4.9.0:
+ dependencies:
+ luxon: 3.7.2
+
+ date-fns@2.30.0:
+ dependencies:
+ '@babel/runtime': 7.29.7
+
+ debug@4.4.3:
+ dependencies:
+ ms: 2.1.3
+
+ delayed-stream@1.0.0: {}
+
+ dunder-proto@1.0.1:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ electron-to-chromium@1.5.377: {}
+
+ emoji-regex@8.0.0: {}
+
+ encoding@0.1.13:
+ dependencies:
+ iconv-lite: 0.6.3
+
+ enhanced-resolve@5.18.4:
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.3.3
+
+ es-define-property@1.0.1: {}
+
+ es-errors@1.3.0: {}
+
+ es-module-lexer@2.1.0: {}
+
+ es-object-atoms@1.1.2:
+ dependencies:
+ es-errors: 1.3.0
+
+ es-set-tostringtag@2.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.4
+
+ escalade@3.2.0: {}
+
+ eslint-scope@5.1.1:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 4.3.0
+
+ esrecurse@4.3.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ estraverse@4.3.0: {}
+
+ estraverse@5.3.0: {}
+
+ events@3.3.0: {}
+
+ expand-tilde@2.0.2:
+ dependencies:
+ homedir-polyfill: 1.0.3
+
+ fast-deep-equal@3.1.3: {}
+
+ fast-glob@3.3.3:
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.8
+
+ fast-uri@3.1.2: {}
+
+ fastq@1.20.1:
+ dependencies:
+ reusify: 1.1.0
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ find-file-up@2.0.1:
+ dependencies:
+ resolve-dir: 1.0.1
+
+ find-pkg@2.0.0:
+ dependencies:
+ find-file-up: 2.0.1
+
+ follow-redirects@1.16.0: {}
+
+ form-data@4.0.6:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ es-set-tostringtag: 2.1.0
+ hasown: 2.0.4
+ mime-types: 2.1.35
+
+ fsevents@2.3.2:
+ optional: true
+
+ function-bind@1.1.2: {}
+
+ get-caller-file@2.0.5: {}
+
+ get-intrinsic@1.3.0:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.2
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.4
+ math-intrinsics: 1.1.0
+
+ get-proto@1.0.1:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.2
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob-to-regexp@0.4.1: {}
+
+ global-modules@1.0.0:
+ dependencies:
+ global-prefix: 1.0.2
+ is-windows: 1.0.2
+ resolve-dir: 1.0.1
+
+ global-prefix@1.0.2:
+ dependencies:
+ expand-tilde: 2.0.2
+ homedir-polyfill: 1.0.3
+ ini: 1.3.8
+ is-windows: 1.0.2
+ which: 1.3.1
+
+ gopd@1.2.0: {}
+
+ graceful-fs@4.2.11: {}
+
+ has-flag@4.0.0: {}
+
+ has-symbols@1.1.0: {}
+
+ has-tostringtag@1.0.2:
+ dependencies:
+ has-symbols: 1.1.0
+
+ hasown@2.0.4:
+ dependencies:
+ function-bind: 1.1.2
+
+ homedir-polyfill@1.0.3:
+ dependencies:
+ parse-passwd: 1.0.0
+
+ https-proxy-agent@5.0.1:
+ dependencies:
+ agent-base: 6.0.2
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ iconv-lite@0.6.3:
+ dependencies:
+ safer-buffer: 2.1.2
+
+ ini@1.3.8: {}
+
+ is-core-module@2.16.2:
+ dependencies:
+ hasown: 2.0.4
+
+ is-extglob@2.1.1: {}
+
+ is-fullwidth-code-point@3.0.0: {}
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-number@7.0.0: {}
+
+ is-windows@1.0.2: {}
+
+ isexe@2.0.0: {}
+
+ isomorphic-ws@5.0.0(ws@8.21.0):
+ dependencies:
+ ws: 8.21.0
+
+ jest-worker@27.5.1:
+ dependencies:
+ '@types/node': 26.0.0
+ merge-stream: 2.0.0
+ supports-color: 8.1.1
+
+ jiti@2.4.2: {}
+
+ joi@17.13.4:
+ dependencies:
+ '@hapi/hoek': 9.3.0
+ '@hapi/topo': 5.1.0
+ '@sideway/address': 4.1.5
+ '@sideway/formula': 3.0.1
+ '@sideway/pinpoint': 2.0.0
+
+ js-tokens@4.0.0: {}
+
+ json-parse-even-better-errors@2.3.1: {}
+
+ json-schema-traverse@1.0.0: {}
+
+ loader-runner@4.3.2: {}
+
+ lodash@4.17.21: {}
+
+ long-timeout@0.1.1: {}
+
+ loose-envify@1.4.0:
+ dependencies:
+ js-tokens: 4.0.0
+
+ luxon@3.7.2: {}
+
+ math-intrinsics@1.1.0: {}
+
+ merge-stream@2.0.0: {}
+
+ merge2@1.4.1: {}
+
+ micromatch@4.0.8:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.2
+
+ mime-db@1.52.0: {}
+
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
+
+ minimist@1.2.8: {}
+
+ ms@2.1.3: {}
+
+ nanoid@3.3.15: {}
+
+ neo-async@2.6.2: {}
+
+ next@14.2.35(@playwright/test@1.58.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ dependencies:
+ '@next/env': 14.2.35
+ '@swc/helpers': 0.5.5
+ busboy: 1.6.0
+ caniuse-lite: 1.0.30001799
+ 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(react@18.3.1)
+ optionalDependencies:
+ '@next/swc-darwin-arm64': 14.2.33
+ '@next/swc-darwin-x64': 14.2.33
+ '@next/swc-linux-arm64-gnu': 14.2.33
+ '@next/swc-linux-arm64-musl': 14.2.33
+ '@next/swc-linux-x64-gnu': 14.2.33
+ '@next/swc-linux-x64-musl': 14.2.33
+ '@next/swc-win32-arm64-msvc': 14.2.33
+ '@next/swc-win32-ia32-msvc': 14.2.33
+ '@next/swc-win32-x64-msvc': 14.2.33
+ '@playwright/test': 1.58.2
+ transitivePeerDependencies:
+ - '@babel/core'
+ - babel-plugin-macros
+
+ node-fetch@2.7.0(encoding@0.1.13):
+ dependencies:
+ whatwg-url: 5.0.0
+ optionalDependencies:
+ encoding: 0.1.13
+
+ node-releases@2.0.48: {}
+
+ node-schedule@2.1.1:
+ dependencies:
+ cron-parser: 4.9.0
+ long-timeout: 0.1.1
+ sorted-array-functions: 1.3.0
+
+ parse-passwd@1.0.0: {}
+
+ path-parse@1.0.7: {}
+
+ picocolors@1.1.1: {}
+
+ picomatch@2.3.2: {}
+
+ playwright-core@1.58.2: {}
+
+ playwright@1.58.2:
+ dependencies:
+ playwright-core: 1.58.2
+ optionalDependencies:
+ fsevents: 2.3.2
+
+ postcss@8.4.31:
+ dependencies:
+ nanoid: 3.3.15
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ proxy-from-env@2.1.0: {}
+
+ queue-microtask@1.2.3: {}
+
+ react-dom@18.3.1(react@18.3.1):
+ dependencies:
+ loose-envify: 1.4.0
+ react: 18.3.1
+ scheduler: 0.23.2
+
+ react@18.3.1:
+ dependencies:
+ loose-envify: 1.4.0
+
+ require-directory@2.1.1: {}
+
+ require-from-string@2.0.2: {}
+
+ resolve-dir@1.0.1:
+ dependencies:
+ expand-tilde: 2.0.2
+ global-modules: 1.0.0
+
+ resolve@1.22.8:
+ dependencies:
+ is-core-module: 2.16.2
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ reusify@1.1.0: {}
+
+ run-parallel@1.2.0:
+ dependencies:
+ queue-microtask: 1.2.3
+
+ rxjs@7.8.2:
+ dependencies:
+ tslib: 2.8.1
+
+ safer-buffer@2.1.2: {}
+
+ scheduler@0.23.2:
+ dependencies:
+ loose-envify: 1.4.0
+
+ schema-utils@4.3.0:
+ dependencies:
+ '@types/json-schema': 7.0.15
+ ajv: 8.20.0
+ ajv-formats: 2.1.1(ajv@8.20.0)
+ ajv-keywords: 5.1.0(ajv@8.20.0)
+
+ schema-utils@4.3.3:
+ dependencies:
+ '@types/json-schema': 7.0.15
+ ajv: 8.20.0
+ ajv-formats: 2.1.1(ajv@8.20.0)
+ ajv-keywords: 5.1.0(ajv@8.20.0)
+
+ semver@7.6.3: {}
+
+ shell-quote@1.8.4: {}
+
+ sorted-array-functions@1.3.0: {}
+
+ source-map-js@1.2.1: {}
+
+ source-map-support@0.5.21:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
+ source-map@0.6.1: {}
+
+ spawn-command@0.0.2: {}
+
+ streamsearch@1.1.0: {}
+
+ string-width@4.2.3:
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
+ strip-ansi@6.0.1:
+ dependencies:
+ ansi-regex: 5.0.1
+
+ styled-jsx@5.1.1(react@18.3.1):
+ dependencies:
+ client-only: 0.0.1
+ react: 18.3.1
+
+ supports-color@7.2.0:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-color@8.1.1:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-preserve-symlinks-flag@1.0.0: {}
+
+ tapable@2.3.0: {}
+
+ tapable@2.3.3: {}
+
+ terser-webpack-plugin@5.6.1(webpack@5.105.3):
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.31
+ jest-worker: 27.5.1
+ schema-utils: 4.3.3
+ terser: 5.48.0
+ webpack: 5.105.3
+
+ terser@5.48.0:
+ dependencies:
+ '@jridgewell/source-map': 0.3.11
+ acorn: 8.17.0
+ commander: 2.20.3
+ source-map-support: 0.5.21
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ tr46@0.0.3: {}
+
+ tree-kill@1.2.2: {}
+
+ tslib@2.8.1: {}
+
+ typescript@5.9.3: {}
+
+ undici-types@8.3.0: {}
+
+ undici@7.28.0: {}
+
+ upath@2.0.1: {}
+
+ update-browserslist-db@1.2.3(browserslist@4.28.4):
+ dependencies:
+ browserslist: 4.28.4
+ escalade: 3.2.0
+ picocolors: 1.1.1
+
+ wait-on@7.2.0:
+ dependencies:
+ axios: 1.18.1
+ joi: 17.13.4
+ lodash: 4.17.21
+ minimist: 1.2.8
+ rxjs: 7.8.2
+ transitivePeerDependencies:
+ - debug
+ - supports-color
+
+ watchpack@2.5.2:
+ dependencies:
+ graceful-fs: 4.2.11
+
+ webidl-conversions@3.0.1: {}
+
+ webpack-sources@3.5.0: {}
+
+ webpack@5.105.3:
+ dependencies:
+ '@types/eslint-scope': 3.7.7
+ '@types/estree': 1.0.9
+ '@types/json-schema': 7.0.15
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/wasm-edit': 1.14.1
+ '@webassemblyjs/wasm-parser': 1.14.1
+ acorn: 8.17.0
+ acorn-import-phases: 1.0.4(acorn@8.17.0)
+ browserslist: 4.28.4
+ chrome-trace-event: 1.0.4
+ enhanced-resolve: 5.18.4
+ es-module-lexer: 2.1.0
+ eslint-scope: 5.1.1
+ events: 3.3.0
+ glob-to-regexp: 0.4.1
+ graceful-fs: 4.2.11
+ json-parse-even-better-errors: 2.3.1
+ loader-runner: 4.3.2
+ mime-types: 2.1.35
+ neo-async: 2.6.2
+ schema-utils: 4.3.3
+ tapable: 2.3.3
+ terser-webpack-plugin: 5.6.1(webpack@5.105.3)
+ watchpack: 2.5.2
+ webpack-sources: 3.5.0
+ transitivePeerDependencies:
+ - '@minify-html/node'
+ - '@swc/core'
+ - '@swc/css'
+ - '@swc/html'
+ - clean-css
+ - cssnano
+ - csso
+ - esbuild
+ - html-minifier-terser
+ - lightningcss
+ - postcss
+ - uglify-js
+
+ whatwg-url@5.0.0:
+ dependencies:
+ tr46: 0.0.3
+ webidl-conversions: 3.0.1
+
+ which@1.3.1:
+ dependencies:
+ isexe: 2.0.0
+
+ wrap-ansi@7.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ ws@8.21.0: {}
+
+ y18n@5.0.8: {}
+
+ yargs-parser@21.1.1: {}
+
+ yargs@17.7.3:
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.2.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
diff --git a/nextjs-ssr-manifest/pnpm-workspace.yaml b/nextjs-ssr-manifest/pnpm-workspace.yaml
new file mode 100644
index 00000000000..e1767c5ba4f
--- /dev/null
+++ b/nextjs-ssr-manifest/pnpm-workspace.yaml
@@ -0,0 +1,4 @@
+packages:
+ - 'checkout'
+ - 'shop'
+ - 'home'
diff --git a/nextjs-ssr-manifest/shop/components/exposedTitle.js b/nextjs-ssr-manifest/shop/components/exposedTitle.js
new file mode 100644
index 00000000000..eed6214ab85
--- /dev/null
+++ b/nextjs-ssr-manifest/shop/components/exposedTitle.js
@@ -0,0 +1,18 @@
+import React, { useEffect } from 'react';
+const ExportredTitle = () => {
+ console.log('---------loading remote component---------');
+ useEffect(() => {
+ console.log('HOOKS WORKS');
+ }, []);
+ return (
+
+
+ {' '}
+ This came fom shop !!!
+
+
And it works like a charm v2
+
+ );
+};
+
+export default ExportredTitle;
diff --git a/nextjs-ssr-manifest/shop/components/nav.js b/nextjs-ssr-manifest/shop/components/nav.js
new file mode 100644
index 00000000000..5a3dc2a974e
--- /dev/null
+++ b/nextjs-ssr-manifest/shop/components/nav.js
@@ -0,0 +1,54 @@
+import React from 'react';
+import Link from 'next/link';
+const links = [
+ { href: 'https://zeit.co/now', label: 'ZEIT' },
+ { href: 'https://github.com/zeit/next.js', label: 'GitHub' },
+].map(link => {
+ link.key = `nav-link-${link.href}-${link.label}`;
+ return link;
+});
+
+const Nav = () => {
+ return (
+
+
+
+ Home
+
+ {links.map(({ key, href, label }) => (
+
+ {label}
+
+ ))}
+
+
+
+
+ );
+};
+
+export default Nav;
diff --git a/nextjs-ssr-manifest/shop/next.config.js b/nextjs-ssr-manifest/shop/next.config.js
new file mode 100644
index 00000000000..b030d950361
--- /dev/null
+++ b/nextjs-ssr-manifest/shop/next.config.js
@@ -0,0 +1,46 @@
+const NextFederationPlugin = require('@module-federation/nextjs-mf');
+// this enables you to use import() and the webpack parser
+// loading remotes on demand, not ideal for SSR
+const remotes = isServer => {
+ const location = isServer ? 'ssr' : 'chunks';
+ return {
+ home: `home@http://localhost:3001/_next/static/${location}/mf-manifest.json`,
+ checkout: `checkout@http://localhost:3000/_next/static/${location}/mf-manifest.json`,
+ };
+};
+module.exports = {
+ headers() {
+ return [
+ {
+ source: '/_next/static/chunks/mf-manifest.json',
+ headers: [
+ {
+ key: 'Access-Control-Allow-Origin',
+ value: '*',
+ },
+ ],
+ }
+ ]
+ },
+ webpack(config, options) {
+ config.plugins.push(
+ new NextFederationPlugin({
+ name: 'shop',
+ filename: 'static/chunks/remoteEntry.js',
+ dts: false,
+ exposes: {
+ './shop': './pages/shop.js',
+ './pdp': './pages/p/[...slug].js',
+ './pages-map': './pages-map.js',
+ },
+ remotes: remotes(options.isServer),
+ shared: {},
+ extraOptions: {
+ exposePages: true,
+ },
+ }),
+ );
+
+ return config;
+ },
+};
diff --git a/nextjs-ssr-manifest/shop/package.json b/nextjs-ssr-manifest/shop/package.json
new file mode 100644
index 00000000000..e94699ed313
--- /dev/null
+++ b/nextjs-ssr-manifest/shop/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "nextjs-ssr-manifest_shop",
+ "version": "0.1.0",
+ "scripts": {
+ "dev": "rm -rf .next; NEXT_PRIVATE_LOCAL_WEBPACK=true next dev -p 3002",
+ "build": "NEXT_PRIVATE_LOCAL_WEBPACK=true next build",
+ "start": "NEXT_PRIVATE_LOCAL_WEBPACK=true NODE_ENV=production next start -p 3002"
+ },
+ "dependencies": {
+ "@module-federation/nextjs-mf": "8.8.69",
+ "lodash": "4.17.21",
+ "next": "^14.2.35",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "webpack": "5.105.3"
+ }
+}
diff --git a/nextjs-ssr-manifest/shop/pages-map.js b/nextjs-ssr-manifest/shop/pages-map.js
new file mode 100644
index 00000000000..0fbac32dd75
--- /dev/null
+++ b/nextjs-ssr-manifest/shop/pages-map.js
@@ -0,0 +1,4 @@
+export default {
+ '/shop': './shop',
+ '/p/*': './pdp',
+};
diff --git a/nextjs-ssr-manifest/shop/pages/_app.js b/nextjs-ssr-manifest/shop/pages/_app.js
new file mode 100644
index 00000000000..9f19aabfc42
--- /dev/null
+++ b/nextjs-ssr-manifest/shop/pages/_app.js
@@ -0,0 +1,21 @@
+import { Suspense, lazy } from 'react';
+import App from 'next/app';
+import dynamic from 'next/dynamic';
+const Nav = lazy(() => import('home/nav'));
+
+function MyApp({ Component, pageProps }) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+MyApp.getInitialProps = async ctx => {
+ const appProps = await App.getInitialProps(ctx);
+ return appProps;
+};
+export default MyApp;
diff --git a/nextjs-ssr-manifest/shop/pages/_document.js b/nextjs-ssr-manifest/shop/pages/_document.js
new file mode 100644
index 00000000000..cc2f67a0f56
--- /dev/null
+++ b/nextjs-ssr-manifest/shop/pages/_document.js
@@ -0,0 +1,45 @@
+import Document, { Html, Head, Main, NextScript } from 'next/document';
+import React from 'react';
+import { revalidate, FlushedChunks, flushChunks } from '@module-federation/nextjs-mf/utils';
+
+class MyDocument extends Document {
+ static async getInitialProps(ctx) {
+ if (process.env.NODE_ENV === 'development' && !ctx.req.url.includes('_next')) {
+ await revalidate().then(shouldReload => {
+ if (shouldReload) {
+ ctx.res.writeHead(302, { Location: ctx.req.url });
+ ctx.res.end();
+ }
+ });
+ } else {
+ ctx?.res?.on('finish', () => {
+ revalidate();
+ });
+ }
+ const initialProps = await Document.getInitialProps(ctx);
+ const chunks = await flushChunks();
+
+ return {
+ ...initialProps,
+ chunks,
+ };
+ }
+
+ render() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ );
+ }
+}
+
+export default MyDocument;
diff --git a/nextjs-ssr-manifest/shop/pages/checkout.js b/nextjs-ssr-manifest/shop/pages/checkout.js
new file mode 100644
index 00000000000..a9dd074a868
--- /dev/null
+++ b/nextjs-ssr-manifest/shop/pages/checkout.js
@@ -0,0 +1,4 @@
+import CheckoutPage from 'checkout/checkout';
+const Checkout = CheckoutPage;
+Checkout.getInitialProps = CheckoutPage.getInitialProps;
+export default Checkout;
diff --git a/nextjs-ssr-manifest/shop/pages/index.js b/nextjs-ssr-manifest/shop/pages/index.js
new file mode 100644
index 00000000000..0578c0a607b
--- /dev/null
+++ b/nextjs-ssr-manifest/shop/pages/index.js
@@ -0,0 +1,5 @@
+import HomePage from 'home/home';
+const Home = HomePage;
+
+Home.getInitialProps = HomePage.getInitialProps;
+export default Home;
diff --git a/nextjs-ssr-manifest/shop/pages/p/[...slug].js b/nextjs-ssr-manifest/shop/pages/p/[...slug].js
new file mode 100644
index 00000000000..655d86988ac
--- /dev/null
+++ b/nextjs-ssr-manifest/shop/pages/p/[...slug].js
@@ -0,0 +1,10 @@
+import { useRouter } from 'next/router';
+
+export default function PDP() {
+ const router = useRouter();
+ const { slug } = router.query;
+ return PDP!!! slug: {slug} ;
+}
+PDP.getInitialProps = async () => {
+ return {};
+};
diff --git a/nextjs-ssr-manifest/shop/pages/shop.js b/nextjs-ssr-manifest/shop/pages/shop.js
new file mode 100644
index 00000000000..97a6fb431d0
--- /dev/null
+++ b/nextjs-ssr-manifest/shop/pages/shop.js
@@ -0,0 +1,53 @@
+import React from 'react';
+import Head from 'next/head';
+import Link from 'next/link';
+const productLinks = [
+ { href: '/p/1', label: 'Product 1' },
+ { href: '/p/2', label: 'Product 2' },
+ { href: '/p/3', label: 'Product 3' },
+].map(link => {
+ link.key = `product-link-${link.href}-${link.label}`;
+ return link;
+});
+
+const Shop = props => (
+
+
+
Shop
+
+
+
+
+
Shop Page
+
This is a federated page owned by localhost:3002
+
+ {productLinks.map(({ key, href, label }) => (
+
+ {label}
+
+ ))}
+
+
+
+
+);
+export const getServerSideProps = async () => {
+ return { props: { test: 1234 } };
+};
+export default Shop;
diff --git a/nextjs-ssr-manifest/shop/public/favicon.ico b/nextjs-ssr-manifest/shop/public/favicon.ico
new file mode 100644
index 00000000000..4965832f2c9
Binary files /dev/null and b/nextjs-ssr-manifest/shop/public/favicon.ico differ