diff --git a/README.md b/README.md index fad7d57f6..178386f10 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # wl-squide -A federated web application shell built on top of [Module Federation](https://module-federation.io/), [React Router](https://reactrouter.com/en/main) and [TanStack Query](https://tanstack.com/query/latest). +A modular web application shell built on top of [Module Federation](https://module-federation.io/), [React Router](https://reactrouter.com/en/main) and [TanStack Query](https://tanstack.com/query/latest). [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](./LICENSE) [![CI](https://github.com/gsoft-inc/wl-squide/actions/workflows/ci.yml/badge.svg)](https://github.com/gsoft-inc/wl-squide/actions/workflows/ci.yml) @@ -36,6 +36,6 @@ View the [contributor's documentation](./CONTRIBUTING.md). ## License -Copyright © 2023, Workleap This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. +Copyright © 2024, Workleap This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. diff --git a/docs/guides/add-a-shared-dependency.md b/docs/guides/add-a-shared-dependency.md index 510f4e3a3..03d2b1a4c 100644 --- a/docs/guides/add-a-shared-dependency.md +++ b/docs/guides/add-a-shared-dependency.md @@ -4,6 +4,10 @@ order: 760 # Add a shared dependency +!!!warning +This guide only applies to applications that include [remote modules](../reference/registration/registerRemoteModules.md). +!!! + [Shared dependencies](https://module-federation.io/configure/shared.html) is one of the most powerful concepts of Module Federation. However, mastering its configuration can be quite challenging. **Failure** to configure shared dependencies properly in a federated application using Module Federation can significantly **impact** both **user** and **developer experiences**. Squide aims to **simplify** the configuration of shared dependencies by abstracting the shared dependencies necessary for building an application with React, React Router, and optionally MSW and i18next. Nevertheless, every federated application will inevitably have to configure additional custom shared dependencies. diff --git a/docs/guides/default.md b/docs/guides/default.md index da8623c4e..1ea1f81cf 100644 --- a/docs/guides/default.md +++ b/docs/guides/default.md @@ -14,7 +14,7 @@ expanded: true - [Add authentication](./add-authentication.md) - [Add a public route](./add-a-public-route.md) - [Override the host layout](./override-the-host-layout.md) -- [Use federated tabs](./use-federated-tabs.md) +- [Use modular tabs](./use-modular-tabs.md) - [Use feature flags](./use-feature-flags.md) - [Setup i18next](./setup-i18next.md) - [Develop a module in isolation](./develop-a-module-in-isolation.md) diff --git a/docs/guides/use-federated-tabs.md b/docs/guides/use-modular-tabs.md similarity index 70% rename from docs/guides/use-federated-tabs.md rename to docs/guides/use-modular-tabs.md index b8e9d29f0..57d27a4d9 100644 --- a/docs/guides/use-federated-tabs.md +++ b/docs/guides/use-modular-tabs.md @@ -2,36 +2,36 @@ order: 860 --- -# Use federated tabs +# Use modular tabs While it's typically recommended for a Squide application to maintain the boundary of a page within a single domain, there are situations where **enhancing** the **user experience** necessitates rendering a page with parts from **multiple domains**, or at the very least, simulating it 😊. -For this guide, we'll take as an example a page for which the parts that are owned by different domains are organized by tabs (federated tabs): +For this guide, we'll take as an example a page for which the parts that are owned by different domains are organized by tabs (modular tabs) and registered by different modules: - `Tab 1`: Registered by `Remote Module 1` - `Tab 2`: Registered by `Remote Module 2` - `Tab 3`: Registered by `Local Module` :::align-image-left -![Anatomy of a page rendering federated tabs](../static/federated-tabs-anatomy.svg) +![Anatomy of a page rendering modular tabs](../static/modular-tabs-anatomy.svg) ::: ## Define a nested layout To build this page while adhering to Squide's constraint of avoiding hard references to elements from other modules, let's start by defining a React Router [nested layout](https://reactrouter.com/en/main/start/tutorial#nested-routes). This nested layout will handle rendering all the tab headers and the content of the active tab: -```tsx !#9-11,15 remote-module-3/src/federated-tabs-layout.tsx +```tsx !#9-11,15 remote-module-3/src/tabs-layout.tsx import { Suspense } from "react"; import { Link, Outlet } from "react-router-dom"; -export function FederatedTabsLayout() { +export function TabsLayout() { return (

Every tab is registered by a different module.

Loading...
}> @@ -43,25 +43,25 @@ export function FederatedTabsLayout() { } ``` -In the previous code sample, the `FederatedTabsLayout` component is similar to the `RootLayout` component introduced in previous guides. However, the key distinction is that this layout will be bound to the `/federated-tabs` URL path. By nesting the layout under a specific path, it will only render when the user navigates to one of the federated tab pages (e.g. `/federated-tabs/tab-1`, `/federated-tabs/tab-2`, `/federated-tabs/tab-3`). +In the previous code sample, the `TabsLayout` component is similar to the `RootLayout` component introduced in previous guides. However, the key distinction is that this layout will be bound to the `/tabs` URL path. By nesting the layout under a specific path, it will only render when the user navigates to one of the modular tab pages (e.g. `/tabs`, `/tabs/tab-1`, `/tabs/tab-2`, `/tabs/tab-3`). To register the newly created layout as a nested layout, use the [registerRoute](../reference/runtime/runtime-class.md#register-routes) function: ```tsx !#7-8 remote-module-3/src/register.tsx import type { ModuleRegisterFunction, FireflyRuntime } from "@squide/firefly"; -import { FederatedTabsLayout } from "./FederatedTabsLayout.tsx"; +import { TabsLayout } from "./TabsLayout.tsx"; export const register: ModuleRegisterFunction = runtime => { runtime.registerRoute({ - // Register the layout as a nested layout under the "/federated-tabs" URL path. - path: "/federated-tabs", - element: + // Register the layout as a nested layout under the "/tabs" URL path. + path: "/tabs", + element: }); runtime.registerNavigationItem({ - $key: "federated-tabs", - $label: "Federated tabs", - to: "/federated-tabs" + $key: "tabs", + $label: "tabs", + to: "/tabs" }); } ``` @@ -76,7 +76,7 @@ It is recommended to define the shared layouts in a standalone package as it's d ## Create the tab routes -Next, let's add the actual tabs to the modules. To do so, we'll use the [parentPath](../reference/runtime/runtime-class.md#register-nested-routes-under-an-existing-route) option of the [registerRoute](../reference/runtime/runtime-class.md#register-routes) function to register the routes under the `FederatedTabsLayout` component: +Next, let's add the actual tabs to the modules. To do so, we'll use the [parentPath](../reference/runtime/runtime-class.md#register-nested-routes-under-an-existing-route) option of the [registerRoute](../reference/runtime/runtime-class.md#register-routes) function to register the routes under the `TabsLayout` component: ```tsx !#7,10 remote-module-1/src/register.tsx import type { ModuleRegisterFunction, FireflyRuntime } from "@squide/firefly"; @@ -88,7 +88,7 @@ export const register: ModuleRegisterFunction = runtime => { index: true element: }, { - parentPath: "/federated-tabs" + parentPath: "/tabs" }); } ``` @@ -108,11 +108,11 @@ import { Tab2 } from "./Tab2.tsx"; export const register: ModuleRegisterFunction = runtime => { runtime.registerRoute({ // React Router nested routes requires the first part of the "path" to be the same - // as the nested layout path (FederatedTabsLayout). - path: "/federated-tabs/tab-2" + // as the nested layout path (TabsLayout). + path: "/tabs/tab-2" element: }, { - parentPath: "/federated-tabs" + parentPath: "/tabs" }); } ``` @@ -132,11 +132,11 @@ import { Tab3 } from "./Tab3.tsx"; export const register: ModuleRegisterFunction = runtime => { runtime.registerRoute({ // React Router nested routes requires the first part of the "path" to be the same - // as the nested layout path (FederatedTabsLayout). - path: "/federated-tabs/tab-3" + // as the nested layout path (TabsLayout). + path: "/tabs/tab-3" element: }, { - parentPath: "/federated-tabs" + parentPath: "/tabs" }); } ``` @@ -149,15 +149,15 @@ export function Tab3() { } ``` -Now that the tabs has been registered, ensure that all four modules (including `remote-module-3`) are registered in the host application. Start the development servers using the `dev` script. Navigate to the `/federated-tabs` page, you should see the tab headers. Click on each tab header to confirm that the content renders correctly. +Now that the tabs has been registered, ensure that all four modules (including `remote-modules-3`) are registered in the host application. Start the development servers using the `dev` script. Navigate to the `/tabs` page, you should see the tab headers. Click on each tab header to confirm that the content renders correctly. ## Decouple the navigation items -Althought it's functional, the modules are currently coupled by hardcoded URLs within the `FederatedTabsLayout` component. +Althought it's functional, the modules are currently coupled by hardcoded URLs within the `TabsLayout` component. -To decouple the navigation items, similar to what is done for regular federated routes, we'll use the [registerNavigationItem](../reference/runtime/runtime-class.md#register-navigation-items) function. In this case, we'll specify a [menuId](../reference/runtime/runtime-class.md#register-navigation-items-for-a-specific-menu) option. Defining the `menuId` option will instruct the `FederatedTabsLayout` component to exclusively retrieve the navigation items that belongs to this layout. +To decouple the navigation items, similar to what is done for regular module's routes, we'll use the [registerNavigationItem](../reference/runtime/runtime-class.md#register-navigation-items) function. In this case, we'll specify a [menuId](../reference/runtime/runtime-class.md#register-navigation-items-for-a-specific-menu) option. Defining the `menuId` option will allow the `TabsLayout` component to exclusively retrieve the navigation items that belongs to him. -First, let's register the navigation items with the `menuId` option. For this example the `menuId` will be `/federated-tabs` (it can be anything): +First, let's register the navigation items with the `menuId` option. For this example the `menuId` will be `/tabs` (it can be anything): ```tsx !#20 remote-module-1/src/register.tsx import type { ModuleRegisterFunction, FireflyRuntime } from "@squide/firefly"; @@ -169,17 +169,17 @@ export const register: ModuleRegisterFunction = runtime => { index: true element: }, { - parentPath: "/federated-tabs" + parentPath: "/tabs" }); runtime.registerNavigationItem({ $key: "tab-1", $label: "Tab 1", - to: "/federated-tabs" + to: "/tabs" }, { // The menu id could be anything, in this example we are using the same path as the nested layout // path for convenience. - menuId: "/federated-tabs" + menuId: "/tabs" }); } ``` @@ -191,21 +191,21 @@ import { Tab2 } from "./Tab2.tsx"; export const register: ModuleRegisterFunction = runtime => { runtime.registerRoute({ // React Router nested routes requires the first part of the "path" to be the same - // as the nested layout path (FederatedTabsLayout). - path: "/federated-tabs/tab-2" + // as the nested layout path (TabsLayout). + path: "/tabs/tab-2" element: }, { - parentPath: "/federated-tabs" + parentPath: "/tabs" }); runtime.registerNavigationItem({ $key: "tab-2", $label: "Tab 2", - to: "/federated-tabs/tab-2" + to: "/tabs/tab-2" }, { // The menu id could be anything, in this example we are using the same path as the nested layout // path for convenience. - menuId: "/federated-tabs" + menuId: "/tabs" }); } ``` @@ -217,28 +217,28 @@ import { Tab3 } from "./Tab3.tsx"; export const register: ModuleRegisterFunction = runtime => { runtime.registerRoute({ // React Router nested routes requires the first part of the "path" to be the same - // as the nested layout path (FederatedTabsLayout). - path: "/federated-tabs/tab-3" + // as the nested layout path (TabsLayout). + path: "/tabs/tab-3" element: }, { - parentPath: "/federated-tabs" + parentPath: "/tabs" }); runtime.registerNavigationItem({ $key: "tab-3", $label: "Tab 3", - to: "/federated-tabs/tab-3" + to: "/tabs/tab-3" }, { // The menu id could be anything, in this example we are using the same path as the nested layout // path for convenience. - menuId: "/federated-tabs" + menuId: "/tabs" }); } ``` -Then, update the `FederatedTabsLayout` component to render the registered navigation items instead of the hardcoded URLs: +Then, update the `TabsLayout` component to render the registered navigation items instead of the hardcoded URLs: -```tsx !#32 remote-module-3/src/federated-tabs-layout.tsx +```tsx !#32 remote-module-3/src/tabs-layout.tsx import { useNavigationItems, useRenderedNavigationItems, @@ -269,8 +269,8 @@ const renderSection: RenderSectionFunction = elements => { ); }; -export function FederatedTabsLayout() { - const navigationItems = useNavigationItems({ menuId: "/federated-tabs" }); +export function TabsLayout() { + const navigationItems = useNavigationItems({ menuId: "/tabs" }); const renderedTabs = useRenderedNavigationItems(navigationItems, renderItem, renderSection); return ( @@ -289,7 +289,7 @@ export function FederatedTabsLayout() { ## Change the display order of the tabs -Similarly to how the display order of regular navigation items can be configured, a federated tab position can be affected with the [priority](http://localhost:5000/wl-squide/reference/runtime/runtime-class/#sort-registered-navigation-items) property. +Similarly to how the display order of regular navigation items can be configured, a modular tab position can be affected with the [priority](http://localhost:5000/wl-squide/reference/runtime/runtime-class/#sort-registered-navigation-items) property. To force `Tab 3` to be positioned first, we'll give him a priority of `999`: @@ -299,10 +299,10 @@ import { Tab3 } from "./Tab3.tsx"; export const register: ModuleRegisterFunction = runtime => { runtime.registerRoute({ - path: "/federated-tabs/tab-3" + path: "/tabs/tab-3" element: }, { - parentPath: "/federated-tabs" + parentPath: "/tabs" }); runtime.registerNavigationItem({ @@ -310,23 +310,23 @@ export const register: ModuleRegisterFunction = runtime => { $label: "Tab 3", // Highest priority goes first. $priority: 999, - to: "/federated-tabs/tab-3" + to: "/tabs/tab-3" }, { - menuId: "/federated-tabs" + menuId: "/tabs" }); } ``` ## Try it :rocket: -To ensure everything is still working correctly, start the development servers using the `dev` script and navigate to the `/federated-tabs` page. You should see all three tabs, and you should be able to switch between them by clicking on the tab headers. +To ensure everything is still working correctly, start the development servers using the `dev` script and navigate to the `/tabs` page. You should see all three tabs, and you should be able to switch between them by clicking on the tab headers. ### Troubleshoot issues If you are experiencing issues with this guide: - Open the [DevTools](https://developer.chrome.com/docs/devtools/) console. You'll find a log entry for each registration that occurs and error messages if something went wrong: - - `[squide] The following route has been registered as a children of the "/federated-tabs" route.` - - `[squide] The following static navigation item has been registered to the "/federated-tabs" menu for a total of 1 item.` + - `[squide] The following route has been registered as a children of the "/tabs" route.` + - `[squide] The following static navigation item has been registered to the "/tabs" menu for a total of 1 item.` - Refer to a working example on [GitHub](https://github.com/gsoft-inc/wl-squide/tree/main/samples/basic). - Refer to the [troubleshooting](../troubleshooting.md) page. diff --git a/docs/reference/registration/registerLocalModules.md b/docs/reference/registration/registerLocalModules.md index 650b9641b..c14b062d3 100644 --- a/docs/reference/registration/registerLocalModules.md +++ b/docs/reference/registration/registerLocalModules.md @@ -8,7 +8,7 @@ order: 100 Register one or many local module(s). During the registration process, the specified registration function will be invoked with a `FireflyRuntime` instance and an optional `context` object. To **defer the registration** of specific navigation items, a registration function can return an anonymous function. -> A local module is a regular module that is part of the **host application build** and is bundled at build time, as opposed to remote module which is loaded at runtime from a remote server. Local modules are particularly valuable when **launching a new product** with an evolving business domain or when undergoing a **migration** from a monolithic application to a federated application. +> A local module is a regular module that is part of the **host application build** and is bundled at build time, as opposed to a [remote module](./registerRemoteModules.md) which is loaded at runtime from a remote server. Local modules are particularly valuable when **launching a new product** with an evolving business domain or when undergoing a **migration** from a monolithic application to a federated application. ## Reference diff --git a/docs/reference/runtime/runtime-class.md b/docs/reference/runtime/runtime-class.md index 704ad268d..ee2001bbb 100644 --- a/docs/reference/runtime/runtime-class.md +++ b/docs/reference/runtime/runtime-class.md @@ -260,7 +260,7 @@ runtime.registerRoute({ }); ``` -[!ref text="Learn more about using nested routes for federated tabs"](../../guides/use-federated-tabs.md) +[!ref text="Learn more about using nested routes for modular tabs"](../../guides/use-modular-tabs.md) !!!info Likewise any other React Router routes, the `path` property of a route rendered under an existing parent route must be an absolute path. For example, if a parent route `path` is `/layout`, the `path` property of a route rendered under that parent route and responding to the `/page-1` url, should be `/layout/page-1`. diff --git a/docs/static/federated-tabs-anatomy.svg b/docs/static/modular-tabs-anatomy.svg similarity index 100% rename from docs/static/federated-tabs-anatomy.svg rename to docs/static/modular-tabs-anatomy.svg diff --git a/packages/core/README.md b/packages/core/README.md index 4a003beb7..2f45c54e8 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -10,4 +10,4 @@ View the [contributor's documentation](../../CONTRIBUTING.md). ## License -Copyright © 2023, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. +Copyright © 2024, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. diff --git a/packages/core/package.json b/packages/core/package.json index 68f99cf35..e0df06a32 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -2,7 +2,7 @@ "name": "@squide/core", "author": "Workleap", "version": "5.0.0", - "description": "The core package of @squide federated application shell.", + "description": "The core package of @squide application shell.", "license": "Apache-2.0", "repository": { "type": "git", diff --git a/packages/fakes/README.md b/packages/fakes/README.md index bc4327eb0..e9dcf14ea 100644 --- a/packages/fakes/README.md +++ b/packages/fakes/README.md @@ -10,4 +10,4 @@ View the [contributor's documentation](../../CONTRIBUTING.md). ## License -Copyright © 2023, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. +Copyright © 2024, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. diff --git a/packages/fakes/package.json b/packages/fakes/package.json index d6fd37df3..354a93e0c 100644 --- a/packages/fakes/package.json +++ b/packages/fakes/package.json @@ -2,7 +2,7 @@ "name": "@squide/fakes", "author": "Workleap", "version": "2.0.0", - "description": "Fake implementations to facilitate the development of federated modules in isolation with @squide.", + "description": "Fake implementations to facilitate the development of modules in isolation with @squide.", "license": "Apache-2.0", "repository": { "type": "git", diff --git a/packages/firefly-webpack-configs/README.md b/packages/firefly-webpack-configs/README.md index f01afdc93..37c95798d 100644 --- a/packages/firefly-webpack-configs/README.md +++ b/packages/firefly-webpack-configs/README.md @@ -10,4 +10,4 @@ View the [contributor's documentation](../../CONTRIBUTING.md). ## License -Copyright © 2023, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. +Copyright © 2024, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. diff --git a/packages/firefly/README.md b/packages/firefly/README.md index 7919561dd..974cba8cf 100644 --- a/packages/firefly/README.md +++ b/packages/firefly/README.md @@ -10,4 +10,4 @@ View the [contributor's documentation](../../CONTRIBUTING.md). ## License -Copyright © 2023, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. +Copyright © 2024, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. diff --git a/packages/i18next/README.md b/packages/i18next/README.md index 35022accd..6413e942e 100644 --- a/packages/i18next/README.md +++ b/packages/i18next/README.md @@ -10,4 +10,4 @@ View the [contributor's documentation](../../CONTRIBUTING.md). ## License -Copyright © 2023, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. +Copyright © 2024, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. diff --git a/packages/i18next/package.json b/packages/i18next/package.json index 9db749c15..ebf019ffc 100644 --- a/packages/i18next/package.json +++ b/packages/i18next/package.json @@ -2,7 +2,7 @@ "name": "@squide/i18next", "author": "Workleap", "version": "2.0.0", - "description": "Add support for i18next to @squide federated application shell.", + "description": "Add support for i18next to @squide application shell.", "license": "Apache-2.0", "repository": { "type": "git", diff --git a/packages/module-federation/README.md b/packages/module-federation/README.md index 7a9d6e896..5db054375 100644 --- a/packages/module-federation/README.md +++ b/packages/module-federation/README.md @@ -10,4 +10,4 @@ View the [contributor's documentation](../../CONTRIBUTING.md). ## License -Copyright © 2023, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. +Copyright © 2024, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. diff --git a/packages/module-federation/package.json b/packages/module-federation/package.json index 1ef13740d..a07f28079 100644 --- a/packages/module-federation/package.json +++ b/packages/module-federation/package.json @@ -2,7 +2,7 @@ "name": "@squide/module-federation", "author": "Workleap", "version": "6.0.0", - "description": "Add support for Module Federation to @squide federated application shell.", + "description": "Add support for Module Federation to @squide application shell.", "license": "Apache-2.0", "repository": { "type": "git", diff --git a/packages/msw/README.md b/packages/msw/README.md index 35022accd..6413e942e 100644 --- a/packages/msw/README.md +++ b/packages/msw/README.md @@ -10,4 +10,4 @@ View the [contributor's documentation](../../CONTRIBUTING.md). ## License -Copyright © 2023, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. +Copyright © 2024, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. diff --git a/packages/msw/package.json b/packages/msw/package.json index 90f75e418..d48ae64c2 100644 --- a/packages/msw/package.json +++ b/packages/msw/package.json @@ -2,7 +2,7 @@ "name": "@squide/msw", "author": "Workleap", "version": "3.0.0", - "description": "Add support for MSW to @squide federated application shell.", + "description": "Add support for MSW to @squide application shell.", "license": "Apache-2.0", "repository": { "type": "git", diff --git a/packages/react-router/README.md b/packages/react-router/README.md index 0b62b82f2..6b84913a8 100644 --- a/packages/react-router/README.md +++ b/packages/react-router/README.md @@ -10,4 +10,4 @@ View the [contributor's documentation](../../CONTRIBUTING.md). ## License -Copyright © 2023, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. +Copyright © 2024, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. diff --git a/packages/react-router/package.json b/packages/react-router/package.json index a480b6248..8326fe163 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -2,7 +2,7 @@ "name": "@squide/react-router", "author": "Workleap", "version": "6.0.0", - "description": "Add support for React Router to @squide federated application shell.", + "description": "Add support for React Router to @squide application shell.", "license": "Apache-2.0", "repository": { "type": "git", diff --git a/packages/webpack-configs/README.md b/packages/webpack-configs/README.md index be7701441..81aa07dcf 100644 --- a/packages/webpack-configs/README.md +++ b/packages/webpack-configs/README.md @@ -10,4 +10,4 @@ View the [contributor's documentation](../../CONTRIBUTING.md). ## License -Copyright © 2023, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. +Copyright © 2024, Workleap. This code is licensed under the Apache License, Version 2.0. You may obtain a copy of this license at https://github.com/gsoft-inc/workleap-license/blob/master/LICENSE. diff --git a/packages/webpack-configs/package.json b/packages/webpack-configs/package.json index f2d888069..b97b4d63f 100644 --- a/packages/webpack-configs/package.json +++ b/packages/webpack-configs/package.json @@ -2,7 +2,7 @@ "name": "@squide/webpack-configs", "author": "Workleap", "version": "4.0.0", - "description": "Utilities to configure webpack with a @squide federated application shell.", + "description": "Utilities to configure webpack with a @squide application shell.", "license": "Apache-2.0", "repository": { "type": "git",