diff --git a/apps/next-app-router-4000/app/page.tsx b/apps/next-app-router-4000/app/page.tsx index da496ca4858..0c8b03c0c0e 100644 --- a/apps/next-app-router-4000/app/page.tsx +++ b/apps/next-app-router-4000/app/page.tsx @@ -1,9 +1,12 @@ import { demos } from '#/lib/demos'; import Link from 'next/link'; +import dynamic from 'next/dynamic'; +const Button = dynamic(() => import('remote_4001/Button'), { ssr: true }); export default function Page() { return (
+

Examples

diff --git a/apps/next-app-router-4000/next.config.js b/apps/next-app-router-4000/next.config.js index 4092b799cbb..da2ee672d59 100644 --- a/apps/next-app-router-4000/next.config.js +++ b/apps/next-app-router-4000/next.config.js @@ -10,6 +10,7 @@ const nextConfig = { // See: https://github.com/gregberge/svgr svgr: false, }, + port: 4000, webpack(config, options) { const { isServer } = options; config.watchOptions = { @@ -17,13 +18,16 @@ const nextConfig = { }; // used for testing build output snapshots const remotes = { - checkout: `checkout@http://localhost:3002/_next/static/${ + remote_4001: `remote_4001@http://localhost:4001/_next/static/${ isServer ? 'ssr' : 'chunks' }/remoteEntry.js`, - home_app: `home_app@http://localhost:3000/_next/static/${ + checkout: `checkout@http://localhost:4000/_next/static/${ isServer ? 'ssr' : 'chunks' }/remoteEntry.js`, - shop: `shop@http://localhost:3001/_next/static/${ + home_app: `home_app@http://localhost:4000/_next/static/${ + isServer ? 'ssr' : 'chunks' + }/remoteEntry.js`, + shop: `shop@http://localhost:4000/_next/static/${ isServer ? 'ssr' : 'chunks' }/remoteEntry.js`, }; @@ -33,28 +37,25 @@ const nextConfig = { name: 'home_app', filename: 'static/chunks/remoteEntry.js', remotes: { + remote_4001: remotes.remote_4001, shop: remotes.shop, checkout: remotes.checkout, }, - // exposes: { - // './SharedNav': './components/SharedNav', - // './menu': './components/menu', - // }, shared: { - // 'lodash/': {}, - // antd: { - // requiredVersion: '5.19.1', - // version: '5.19.1', - // }, - // '@ant-design/': { + // 'react': { // singleton: true, + // requiredVersion: false // }, + // 'react-dom': { + // singleton: true, + // requiredVersion: false + // } }, extraOptions: { - debug: false, - exposePages: true, - enableImageLoaderFix: true, - enableUrlLoaderFix: true, + // debug: false, + // exposePages: true, + // enableImageLoaderFix: true, + // enableUrlLoaderFix: true, }, }), ); diff --git a/apps/next-app-router-4000/package.json b/apps/next-app-router-4000/package.json index 2d02ccd3d86..55521bcf4d2 100644 --- a/apps/next-app-router-4000/package.json +++ b/apps/next-app-router-4000/package.json @@ -2,7 +2,7 @@ "private": true, "scripts": { "build": "next build", - "dev": "NEXT_PRIVATE_LOCAL_WEBPACK=true next dev", + "dev": "NEXT_PRIVATE_LOCAL_WEBPACK=true next dev -p 4000", "lint": "next lint", "lint-staged": "lint-staged", "prettier": "prettier --write --ignore-unknown .", diff --git a/apps/next-app-router-4000/project.json b/apps/next-app-router-4000/project.json index 2285cad2b5a..63f23344afd 100644 --- a/apps/next-app-router-4000/project.json +++ b/apps/next-app-router-4000/project.json @@ -25,24 +25,10 @@ ] }, "serve": { - "executor": "@nx/next:server", - "defaultConfiguration": "development", + "executor": "nx:run-commands", "options": { - "buildTarget": "next-app-router-4000:build", - "dev": true, - "port": 4000 - }, - "configurations": { - "development": { - "buildTarget": "next-app-router-4000:build:development", - "dev": true, - "port": 4000 - }, - "production": { - "buildTarget": "next-app-router-4000:build:production", - "dev": false, - "port": 4000 - } + "command": "pnpm dev", + "cwd": "apps/next-app-router-4000" }, "dependsOn": [ { diff --git a/apps/next-app-router-4001/app/demo/page.tsx b/apps/next-app-router-4001/app/demo/page.tsx new file mode 100644 index 00000000000..9cc67279156 --- /dev/null +++ b/apps/next-app-router-4001/app/demo/page.tsx @@ -0,0 +1,80 @@ +//@ts-check +'use client'; + +import dynamic from 'next/dynamic'; + +// Dynamically import remote components +const Button = dynamic(() => import('remote_4001/Button'), { ssr: true }); +const Header = dynamic(() => import('remote_4001/Header'), { ssr: true }); +const ProductCard = dynamic(() => import('remote_4001/ProductCard'), { ssr: true }); +const TabGroup = dynamic(() => import('remote_4001/TabGroup'), { ssr: true }); +const TabNavItem = dynamic(() => import('remote_4001/TabNavItem'), { ssr: true }); +const CountUp = dynamic(() => import('remote_4001/CountUp'), { ssr: true }); +const RenderingInfo = dynamic(() => import('remote_4001/RenderingInfo'), { ssr: true }); + +export default function DemoPage() { + return ( +
+
+ +
+

Remote Components Demo

+ +
+

Basic UI Components

+
+ + +
+
+ +
+

Navigation Components

+ + Tab 1 + Tab 2 + Tab 3 + +
+ +
+

Product Components

+
+ + +
+
+ +
+

Interactive Components

+
+
+

Count Up Animation

+ +
+
+

Rendering Information

+ +
+
+
+
+
+ ); +} diff --git a/apps/next-app-router-4001/next.config.js b/apps/next-app-router-4001/next.config.js index 4092b799cbb..dafe9d8ca22 100644 --- a/apps/next-app-router-4001/next.config.js +++ b/apps/next-app-router-4001/next.config.js @@ -15,40 +15,42 @@ const nextConfig = { config.watchOptions = { ignored: ['**/node_modules/**', '**/@mf-types/**'], }; - // used for testing build output snapshots - const remotes = { - checkout: `checkout@http://localhost:3002/_next/static/${ - isServer ? 'ssr' : 'chunks' - }/remoteEntry.js`, - home_app: `home_app@http://localhost:3000/_next/static/${ - isServer ? 'ssr' : 'chunks' - }/remoteEntry.js`, - shop: `shop@http://localhost:3001/_next/static/${ - isServer ? 'ssr' : 'chunks' - }/remoteEntry.js`, - }; - config.plugins.push( new NextFederationPlugin({ - name: 'home_app', + name: 'remote_4001', filename: 'static/chunks/remoteEntry.js', - remotes: { - shop: remotes.shop, - checkout: remotes.checkout, + exposes: { + // Core UI Components + './Button': './ui/button', + // './Header': './ui/header', + // './Footer': './ui/footer', + // './GlobalNav': './ui/global-nav', + // + // // Product Related Components + // './ProductCard': './ui/product-card', + // './ProductPrice': './ui/product-price', + // './ProductRating': './ui/product-rating', + // './ProductDeal': './ui/product-deal', + // + // // Navigation Components + // './TabGroup': './ui/tab-group', + // './TabNavItem': './ui/tab-nav-item', + // + // // Utility Components + // './Boundary': './ui/boundary', + // './CountUp': './ui/count-up', + // './RenderedTimeAgo': './ui/rendered-time-ago', + // './RenderingInfo': './ui/rendering-info' }, - // exposes: { - // './SharedNav': './components/SharedNav', - // './menu': './components/menu', - // }, shared: { - // 'lodash/': {}, - // antd: { - // requiredVersion: '5.19.1', - // version: '5.19.1', - // }, - // '@ant-design/': { + // 'react': { // singleton: true, + // requiredVersion: false // }, + // 'react-dom': { + // singleton: true, + // requiredVersion: false + // } }, extraOptions: { debug: false, diff --git a/apps/next-app-router-4001/package.json b/apps/next-app-router-4001/package.json index 2d02ccd3d86..8eac0648797 100644 --- a/apps/next-app-router-4001/package.json +++ b/apps/next-app-router-4001/package.json @@ -2,7 +2,7 @@ "private": true, "scripts": { "build": "next build", - "dev": "NEXT_PRIVATE_LOCAL_WEBPACK=true next dev", + "dev": "NEXT_PRIVATE_LOCAL_WEBPACK=true next dev -p 4001", "lint": "next lint", "lint-staged": "lint-staged", "prettier": "prettier --write --ignore-unknown .", diff --git a/apps/next-app-router-4001/project.json b/apps/next-app-router-4001/project.json index 4880ae4cd16..cba17d562e1 100644 --- a/apps/next-app-router-4001/project.json +++ b/apps/next-app-router-4001/project.json @@ -25,24 +25,10 @@ ] }, "serve": { - "executor": "@nx/next:server", - "defaultConfiguration": "development", + "executor": "nx:run-commands", "options": { - "buildTarget": "next-app-router-4001:build", - "dev": true, - "port": 4001 - }, - "configurations": { - "development": { - "buildTarget": "next-app-router-4001:build:development", - "dev": true, - "port": 4001 - }, - "production": { - "buildTarget": "next-app-router-4001:build:production", - "dev": false, - "port": 4001 - } + "command": "pnpm dev", + "cwd": "apps/next-app-router-4001" }, "dependsOn": [ { diff --git a/packages/nextjs-mf/package.json b/packages/nextjs-mf/package.json index 6e2ffe317d4..fd71b3b90e8 100644 --- a/packages/nextjs-mf/package.json +++ b/packages/nextjs-mf/package.json @@ -8,7 +8,7 @@ "description": "Module Federation helper for NextJS", "repository": { "type": "git", - "url": "https://github.com/module-federation/core/", + "url": "git+https://github.com/module-federation/core.git", "directory": "packages/nextjs-mf" }, "author": "Zack Jackson ", @@ -48,6 +48,9 @@ "@module-federation/node": "workspace:*", "@module-federation/webpack-bundler-runtime": "workspace:*" }, + "devDependencies": { + "@types/btoa": "^1.2.5" + }, "peerDependencies": { "webpack": "^5.40.0", "next": "^12 || ^13 || ^14 || ^15", diff --git a/packages/nextjs-mf/project.json b/packages/nextjs-mf/project.json index 58233861134..1d6a85b97b8 100644 --- a/packages/nextjs-mf/project.json +++ b/packages/nextjs-mf/project.json @@ -5,7 +5,7 @@ "projectType": "library", "tags": ["type:pkg"], "targets": { - "build": { + "build-tsc": { "executor": "@nx/js:tsc", "outputs": ["{options.outputPath}"], "options": { @@ -21,6 +21,35 @@ } ] }, + "build": { + "executor": "nx:run-commands", + "options": { + "parallel": false, + "commands": [ + { + "command": "nx run nextjs-mf:build-tsc", + "forwardAllArgs": false + }, + { + "command": "nx run nextjs-mf:rename-dist-files", + "forwardAllArgs": false + } + ] + } + }, + "rename-dist-files": { + "executor": "nx:run-commands", + "options": { + "commands": [ + { + "command": "mv packages/nextjs-mf/dist/src/federation-noop.js packages/nextjs-mf/dist/src/federation-noop.cjs" + }, + { + "command": "mv packages/nextjs-mf/dist/src/plugins/container/runtimePlugin.js packages/nextjs-mf/dist/src/plugins/container/runtimePlugin.cjs" + } + ] + } + }, "lint": { "executor": "@nx/eslint:lint", "outputs": ["{options.outputFile}"], diff --git a/packages/nextjs-mf/src/plugins/NextFederationPlugin/index.ts b/packages/nextjs-mf/src/plugins/NextFederationPlugin/index.ts index 415581f0f1b..5348bc89ede 100644 --- a/packages/nextjs-mf/src/plugins/NextFederationPlugin/index.ts +++ b/packages/nextjs-mf/src/plugins/NextFederationPlugin/index.ts @@ -155,6 +155,27 @@ export class NextFederationPlugin { asyncFunction: true, }; + // Add layer rules for resource queries + if (!compiler.options.module.rules) { + compiler.options.module.rules = []; + } + + // Add layer rules for RSC, client and SSR + compiler.options.module.rules.push({ + resourceQuery: /\?rsc/, + layer: 'rsc', + }); + + compiler.options.module.rules.push({ + resourceQuery: /\?client/, + layer: 'client', + }); + + compiler.options.module.rules.push({ + resourceQuery: /\?ssr/, + layer: 'ssr', + }); + applyPathFixes(compiler, this._options, this._extraOptions); if (this._extraOptions.debug) { compiler.options.devtool = false; @@ -189,7 +210,7 @@ export class NextFederationPlugin { ...(isServer ? [require.resolve('@module-federation/node/runtimePlugin')] : []), - require.resolve(path.join(__dirname, '../container/runtimePlugin')), + require.resolve(path.join(__dirname, '../container/runtimePlugin.cjs')), ...(this._options.runtimePlugins || []), ].map((plugin) => plugin + '?runtimePlugin'), //@ts-ignore @@ -219,13 +240,7 @@ export class NextFederationPlugin { } private getNoopPath(): string { - let noop; - try { - noop = require.resolve('../../federation-noop'); - } catch (e) { - noop = require.resolve('../../federation-noop.cjs'); - } - return noop; + return require.resolve('../../federation-noop.cjs'); } } diff --git a/packages/nextjs-mf/src/plugins/container/InvertedContainerRuntimeModule.ts b/packages/nextjs-mf/src/plugins/container/InvertedContainerRuntimeModule.ts index b87d149bd55..283fd3cc160 100644 --- a/packages/nextjs-mf/src/plugins/container/InvertedContainerRuntimeModule.ts +++ b/packages/nextjs-mf/src/plugins/container/InvertedContainerRuntimeModule.ts @@ -1,6 +1,4 @@ import { normalizeWebpackPath } from '@module-federation/sdk/normalize-webpack-path'; -import type { Module } from 'webpack'; -import { container } from '@module-federation/enhanced'; import type ContainerEntryModule from '@module-federation/enhanced/src/lib/container/ContainerEntryModule'; const { RuntimeModule, Template, RuntimeGlobals } = require( normalizeWebpackPath('webpack'), diff --git a/packages/nextjs-mf/src/types/btoa.d.ts b/packages/nextjs-mf/src/types/btoa.d.ts new file mode 100644 index 00000000000..8aebed8e393 --- /dev/null +++ b/packages/nextjs-mf/src/types/btoa.d.ts @@ -0,0 +1,4 @@ +declare module 'btoa' { + function btoa(str: string): string; + export = btoa; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a0a00ddb36b..c5b8f914c6e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1211,7 +1211,98 @@ importers: specifier: ~5.0.4 version: 5.0.4 - apps/next-app-router-playground: + apps/next-app-router-4000: + dependencies: + '@heroicons/react': + specifier: 2.1.3 + version: 2.1.3(react@19.0.0-rc-cd22717c-20241013) + '@module-federation/nextjs-mf': + specifier: workspace:* + version: link:../../packages/nextjs-mf + clsx: + specifier: 2.1.1 + version: 2.1.1 + date-fns: + specifier: 3.6.0 + version: 3.6.0 + dinero.js: + specifier: 2.0.0-alpha.10 + version: 2.0.0-alpha.10 + ms: + specifier: 3.0.0-canary.1 + version: 3.0.0-canary.1 + next: + specifier: 15.0.0-canary.193 + version: 15.0.0-canary.193(@babel/core@7.25.2)(react-dom@19.0.0-rc-cd22717c-20241013)(react@19.0.0-rc-cd22717c-20241013) + react: + specifier: 19.0.0-rc-cd22717c-20241013 + version: 19.0.0-rc-cd22717c-20241013 + react-dom: + specifier: 19.0.0-rc-cd22717c-20241013 + version: 19.0.0-rc-cd22717c-20241013(react@19.0.0-rc-cd22717c-20241013) + server-only: + specifier: 0.0.1 + version: 0.0.1 + styled-components: + specifier: 6.1.8 + version: 6.1.8(react-dom@19.0.0-rc-cd22717c-20241013)(react@19.0.0-rc-cd22717c-20241013) + use-count-up: + specifier: 3.0.1 + version: 3.0.1(react@19.0.0-rc-cd22717c-20241013) + vercel: + specifier: 34.0.0 + version: 34.0.0(@swc/core@1.7.26)(encoding@0.1.13) + devDependencies: + '@tailwindcss/forms': + specifier: 0.5.7 + version: 0.5.7(tailwindcss@3.4.3) + '@tailwindcss/typography': + specifier: 0.5.12 + version: 0.5.12(tailwindcss@3.4.3) + '@types/ms': + specifier: 0.7.34 + version: 0.7.34 + '@types/node': + specifier: 20.12.7 + version: 20.12.7 + '@types/react': + specifier: npm:types-react@19.0.0-rc.1 + version: /types-react@19.0.0-rc.1 + '@types/react-dom': + specifier: npm:types-react-dom@19.0.0-rc.1 + version: /types-react-dom@19.0.0-rc.1 + '@vercel/git-hooks': + specifier: 1.0.0 + version: 1.0.0 + autoprefixer: + specifier: 10.4.19 + version: 10.4.19(postcss@8.4.38) + eslint: + specifier: 9.0.0 + version: 9.0.0 + eslint-config-next: + specifier: 14.2.2 + version: 14.2.2(eslint@9.0.0)(typescript@5.4.5) + lint-staged: + specifier: 15.2.2 + version: 15.2.2 + postcss: + specifier: 8.4.38 + version: 8.4.38 + prettier: + specifier: 3.2.5 + version: 3.2.5 + prettier-plugin-tailwindcss: + specifier: 0.5.14 + version: 0.5.14(prettier@3.2.5) + tailwindcss: + specifier: 3.4.3 + version: 3.4.3 + typescript: + specifier: 5.4.5 + version: 5.4.5 + + apps/next-app-router-4001: dependencies: '@heroicons/react': specifier: 2.1.3 @@ -2555,6 +2646,10 @@ importers: webpack: specifier: ^5.40.0 version: 5.93.0(@swc/core@1.7.26)(esbuild@0.24.0)(webpack-cli@5.1.4) + devDependencies: + '@types/btoa': + specifier: ^1.2.5 + version: 1.2.5 packages/node: dependencies: @@ -12525,7 +12620,7 @@ packages: nx: 20.1.1(@swc-node/register@1.10.9)(@swc/core@1.7.26) semver: 7.6.3 tmp: 0.2.3 - tslib: 2.6.3 + tslib: 2.8.1 yargs-parser: 21.1.1 dev: false @@ -12541,7 +12636,7 @@ packages: nx: 20.1.4(@swc-node/register@1.10.9)(@swc/core@1.7.26) semver: 7.6.3 tmp: 0.2.3 - tslib: 2.6.3 + tslib: 2.8.1 yargs-parser: 21.1.1 dev: false @@ -12637,7 +12732,7 @@ packages: '@nx/js': 20.1.1(@swc-node/register@1.10.9)(@swc/core@1.7.26)(@types/node@20.12.14)(nx@20.1.4)(typescript@5.4.5)(verdaccio@5.29.2) eslint: 9.0.0 semver: 7.6.3 - tslib: 2.6.3 + tslib: 2.8.1 typescript: 5.4.5 transitivePeerDependencies: - '@babel/traverse' @@ -12780,7 +12875,7 @@ packages: source-map-support: 0.5.19 ts-node: 10.9.1(@swc/core@1.7.26)(@types/node@20.12.14)(typescript@5.4.5) tsconfig-paths: 4.2.0 - tslib: 2.6.3 + tslib: 2.8.1 verdaccio: 5.29.2(encoding@0.1.13)(typanion@3.14.0) transitivePeerDependencies: - '@babel/traverse' @@ -12831,7 +12926,7 @@ packages: source-map-support: 0.5.19 ts-node: 10.9.1(@swc/core@1.7.26)(@types/node@20.12.14)(typescript@5.5.2) tsconfig-paths: 4.2.0 - tslib: 2.6.3 + tslib: 2.8.1 verdaccio: 5.29.2(encoding@0.1.13)(typanion@3.14.0) transitivePeerDependencies: - '@babel/traverse' @@ -13429,7 +13524,7 @@ packages: detect-port: 1.6.1 http-server: 14.1.1 picocolors: 1.1.1 - tslib: 2.6.3 + tslib: 2.8.1 transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -13639,7 +13734,7 @@ packages: chalk: 4.1.2 enquirer: 2.3.6 nx: 20.1.4(@swc-node/register@1.10.9)(@swc/core@1.7.26) - tslib: 2.6.3 + tslib: 2.8.1 yargs-parser: 21.1.1 transitivePeerDependencies: - '@swc-node/register' @@ -15697,7 +15792,7 @@ packages: optional: true dependencies: '@rsbuild/core': 1.0.19 - acorn: 8.12.1 + acorn: 8.14.0 browserslist-to-es-version: 1.0.0 htmlparser2: 9.1.0 picocolors: 1.1.1 @@ -19253,7 +19348,7 @@ packages: resolution: {integrity: sha512-JxIvIo/Hrpv0JCHSyRpetAdQ6lB27oFYhv0PKCNf1g2gUXOjpeR1exrXccRxLMuAV5WAmGFBwRnNOJqN38+qtg==} dependencies: source-map-support: 0.5.21 - tslib: 2.6.3 + tslib: 2.8.1 /@swc/cli@0.5.0(@swc/core@1.7.26): resolution: {integrity: sha512-eFsrNt85SbHTeX6svpBNcA5DQLP/wrSyCs3KVZjbuEHWD7JGpajZOIwH74lVhyrmrXOcGxgbnxXEbDIfRlLcSw==} @@ -21096,8 +21191,8 @@ packages: dependencies: '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13) '@rollup/pluginutils': 4.2.1 - acorn: 8.12.1 - acorn-import-attributes: 1.9.5(acorn@8.12.1) + acorn: 8.14.0 + acorn-import-attributes: 1.9.5(acorn@8.14.0) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 @@ -22173,6 +22268,14 @@ packages: acorn: ^8 dependencies: acorn: 8.12.1 + dev: true + + /acorn-import-attributes@1.9.5(acorn@8.14.0): + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.14.0 /acorn-jsx@5.3.2(acorn@7.4.1): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -22188,6 +22291,7 @@ packages: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.12.1 + dev: true /acorn-jsx@5.3.2(acorn@8.14.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -33195,7 +33299,7 @@ packages: dependencies: copy-anything: 2.0.6 parse-node-version: 1.0.1 - tslib: 2.6.3 + tslib: 2.8.1 optionalDependencies: errno: 0.1.8 graceful-fs: 4.2.11 @@ -34303,8 +34407,8 @@ packages: /micromark-extension-mdxjs@1.0.1: resolution: {integrity: sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==} dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) micromark-extension-mdx-expression: 1.0.8 micromark-extension-mdx-jsx: 1.0.5 micromark-extension-mdx-md: 1.0.1 @@ -40662,7 +40766,7 @@ packages: fs-extra: 10.1.0 rollup: 4.24.0 semver: 7.6.3 - tslib: 2.6.3 + tslib: 2.8.1 typescript: 5.5.2 dev: true @@ -43014,7 +43118,7 @@ packages: engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/core': 0.1.1 - tslib: 2.6.3 + tslib: 2.8.1 dev: true /table-layout@1.0.2: @@ -43856,7 +43960,7 @@ packages: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 14.18.33 - acorn: 8.12.1 + acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 @@ -43888,7 +43992,7 @@ packages: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 18.16.9 - acorn: 8.12.1 + acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 @@ -43920,7 +44024,7 @@ packages: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 18.16.9 - acorn: 8.12.1 + acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 @@ -43952,7 +44056,7 @@ packages: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 20.12.14 - acorn: 8.12.1 + acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 @@ -43984,7 +44088,7 @@ packages: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 20.12.14 - acorn: 8.12.1 + acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 @@ -45968,8 +46072,8 @@ packages: '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/wasm-edit': 1.12.1 '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.12.1 - acorn-import-attributes: 1.9.5(acorn@8.12.1) + acorn: 8.14.0 + acorn-import-attributes: 1.9.5(acorn@8.14.0) browserslist: 4.24.0 chrome-trace-event: 1.0.4 enhanced-resolve: 5.17.1 @@ -46008,8 +46112,8 @@ packages: '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/wasm-edit': 1.12.1 '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.12.1 - acorn-import-attributes: 1.9.5(acorn@8.12.1) + acorn: 8.14.0 + acorn-import-attributes: 1.9.5(acorn@8.14.0) browserslist: 4.24.0 chrome-trace-event: 1.0.4 enhanced-resolve: 5.17.1