Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: split runtime as core and entry #3154

Open
wants to merge 24 commits into
base: main
Choose a base branch
from

Conversation

2heal1
Copy link
Member

@2heal1 2heal1 commented Nov 1, 2024

Description

  1. split runtime into two parts : runtime-core entry
  • runtime-core: no sideEffect
  • entry: has sideEffect , it will cache federationInstance
  1. external runtime-core

Related Issue

Types of changes

  • Docs change / refactoring / dependency upgrade
  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)

Checklist

  • I have added tests to cover my changes.
  • All new and existing tests passed.
  • I have updated the documentation.

Copy link

netlify bot commented Nov 1, 2024

Deploy Preview for module-federation-docs ready!

Name Link
🔨 Latest commit 5fe3f65
🔍 Latest deploy log https://app.netlify.com/sites/module-federation-docs/deploys/673fde97a060ec000837c25b
😎 Deploy Preview https://deploy-preview-3154--module-federation-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

Copy link
Contributor

@squadronai squadronai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary

The pull request focuses on splitting the runtime module into two separate parts: runtime-core and entry. The key changes are:

  • The runtime-core module is designed to have no side effects, while the entry module will cache the FederationInstance. This separation of concerns aims to improve the overall structure and maintainability of the codebase.
  • The runtime-core module is now externalized and imported from a separate package (@module-federation/runtime-core). This change allows the runtime-core to be used independently without the side effects introduced by the entry module.
  • The utility functions and types previously defined in the runtime module have been restructured. The global utility functions are now imported from the runtime-core package, and the corresponding types are also exported from there.
  • New utility functions, such as getGlobalFederationInstance and getBuilderId, have been added to the utils module to retrieve specific instances of the FederationHost based on the provided name and version.

These changes aim to improve the modularity, flexibility, and maintainability of the runtime module by separating the core functionality from the entry point and its associated side effects.

File Summaries
File Summary
packages/runtime-core/src/constant.ts The code changes introduce a split of the runtime into two parts: runtime-core and entry. The runtime-core module has no side effects, while the entry module has side effects and will cache the federationInstance.
packages/runtime-core/src/core.ts The changes in this file involve splitting the runtime into two parts: runtime-core and entry. The runtime-core module is designed to have no side effects, while the entry module will cache the federation instance. This separation of concerns aims to improve the overall structure and maintainability of the codebase.
packages/runtime-core/src/global.ts The code changes split the runtime into two parts: runtime-core and entry. The runtime-core has no side effects, while the entry has side effects and will cache the FederationInstance. Additionally, the runtime-core is now externalized.
packages/runtime-core/src/helpers.ts The code changes introduce a new module that exports two utility objects: GlobalUtils and ShareUtils. The GlobalUtils object provides a collection of functions related to managing global state and information, such as resetting federation global info, setting and getting global federation instances, and managing global snapshots. The ShareUtils object provides functions for working with registered shares and the global share scope.
packages/runtime-core/src/index.ts The code changes introduce a split of the runtime into two parts: runtime-core and entry. The runtime-core is designed to have no side effects, while the entry part has side effects and will cache the federation instance. The changes also externalize the runtime-core and update the exports and imports accordingly.
packages/runtime-core/src/module/index.ts The code changes introduce a split of the runtime into two parts: runtime-core and entry. The runtime-core module is now externalized and has no side effects, while the entry module has side effects and will cache the federationInstance.
packages/runtime-core/src/plugins/generate-preload-assets.ts The changes in this file split the runtime into two parts: runtime-core and entry. The runtime-core module has no side effects, while the entry module has side effects and will cache the federationInstance.
packages/runtime-core/src/plugins/snapshot/SnapshotHandler.ts The changes in this file split the runtime into two parts: runtime-core and entry. The runtime-core part has no side effects, while the entry part has side effects and will cache the federationInstance.
packages/runtime-core/src/plugins/snapshot/index.ts The changes in this file involve splitting the runtime into two parts: runtime-core and entry. The runtime-core has no side effects, while the entry part has side effects and will cache the federationInstance. This change aims to externalize the runtime-core for better modularity and flexibility.
packages/runtime-core/src/remote/index.ts The changes in this file split the runtime into two parts: runtime-core and entry. The runtime-core module has no side effects, while the entry module has side effects and will cache the federationInstance. This separation of concerns aims to improve the overall structure and maintainability of the codebase.
packages/runtime-core/src/shared/index.ts The changes in this file involve splitting the runtime into two parts: runtime-core and entry. The runtime-core module is designed to have no side effects, while the entry module will cache the federation instance. This separation of concerns aims to improve the overall structure and maintainability of the codebase.
packages/runtime-core/src/type/config.ts The changes in this file split the runtime into two parts: runtime-core and entry. The runtime-core module has no side effects, while the entry module has side effects and will cache the federationInstance.
packages/runtime-core/src/type/index.ts The changes in this file involve splitting the runtime into two parts: runtime-core and entry. The runtime-core has no side effects, while the entry part has side effects and will cache the federationInstance. This change aims to externalize the runtime-core for better modularity and maintainability.
packages/runtime-core/src/type/plugin.ts The changes in this file introduce a split of the runtime into two parts: runtime-core and entry. The runtime-core is now externalized and has no side effects, while the entry part has side effects and will cache the federation instance.
packages/runtime-core/src/type/preload.ts The code changes introduce a split of the runtime into two parts: runtime-core and entry. The runtime-core module has no side effects, while the entry module has side effects and will cache the federationInstance.
packages/runtime-core/src/types.ts The changes in this file introduce a new export from the runtime-core package, specifically exporting all types from the type.ts file. This allows for the separation of the runtime-core and entry components, where the runtime-core can be used independently without the side effects introduced by the entry point.
packages/runtime-core/src/utils/env.ts The code changes introduce a split of the runtime into two parts: runtime-core and entry. The runtime-core module is designed to have no side effects, while the entry module will cache the federationInstance. This separation aims to improve the overall structure and maintainability of the codebase.
packages/runtime-core/src/utils/hooks/asyncHook.ts The changes in this file involve splitting the runtime into two parts: runtime-core and entry. The runtime-core module is designed to have no side effects, while the entry module will cache the federationInstance. This separation of concerns aims to improve the overall structure and maintainability of the codebase.
packages/runtime-core/src/utils/hooks/asyncWaterfallHooks.ts The code changes introduce a split of the runtime into two parts: runtime-core and entry. The runtime-core is now externalized and has no side effects, while the entry part has side effects and will cache the federationInstance.
packages/runtime-core/src/utils/hooks/index.ts The changes in this file involve splitting the runtime into two parts: runtime-core and entry. The runtime-core is designed to have no side effects, while the entry part has side effects and will cache the federationInstance. This separation aims to externalize the runtime-core for improved modularity and flexibility.
packages/runtime-core/src/utils/hooks/pluginSystem.ts The changes in this file split the runtime into two parts: runtime-core and entry. The runtime-core has no side effects, while the entry part has side effects and will cache the federationInstance.
packages/runtime-core/src/utils/hooks/syncHook.ts The changes in this file split the runtime into two parts: runtime-core and entry. The runtime-core module has no side effects, while the entry module has side effects and caches the federation instance.
packages/runtime-core/src/utils/hooks/syncWaterfallHook.ts The changes in this file split the runtime into two parts: runtime-core and entry. The runtime-core module has no side effects, while the entry module has side effects and will cache the federationInstance.
packages/runtime-core/src/utils/index.ts The changes in this file involve splitting the runtime into two separate parts: runtime-core and entry. The runtime-core module is designed to have no side effects, while the entry module will cache the federation instance. This separation of concerns aims to improve the overall structure and maintainability of the codebase.
packages/runtime-core/src/utils/load.ts The code changes introduce a split of the runtime into two parts: runtime-core and entry. The runtime-core is now externalized and has no side effects, while the entry part has side effects and will cache the federation instance.
packages/runtime-core/src/utils/logger.ts The changes in this file introduce a separation of the runtime into two parts: runtime-core and entry. The runtime-core module is designed to have no side effects, while the entry module will cache the federationInstance. This refactoring aims to externalize the runtime-core module, potentially improving modularity and maintainability.
packages/runtime-core/src/utils/manifest.ts The changes in this file involve splitting the runtime into two parts: runtime-core and entry. The runtime-core is designed to have no side effects, while the entry part has side effects and will cache the federationInstance. This separation aims to externalize the runtime-core for improved modularity and flexibility.
packages/runtime-core/src/utils/plugin.ts The changes in this file involve splitting the runtime into two parts: runtime-core and entry. The runtime-core module has no side effects, while the entry module has side effects and will cache the federationInstance. This separation aims to improve the modularity and maintainability of the codebase.
packages/runtime-core/src/utils/preload.ts The changes in this file split the runtime into two parts: runtime-core and entry. The runtime-core module has no side effects, while the entry module has side effects and caches the federation instance. This separation of concerns aims to improve the overall structure and maintainability of the codebase.
packages/runtime-core/src/utils/semver/compare.ts The code changes introduce a split of the runtime into two parts: runtime-core and entry. The runtime-core is designed to have no side effects, while the entry part has side effects and will cache the federationInstance.
packages/runtime-core/src/utils/semver/constants.ts The changes in this file involve splitting the runtime into two parts: runtime-core and entry. The runtime-core module is designed to have no side effects, while the entry module will cache the federation instance. This separation aims to improve the overall structure and maintainability of the codebase.
packages/runtime-core/src/utils/semver/index.ts The changes in this file involve splitting the runtime into two parts: runtime-core and entry. The runtime-core is now externalized and has no side effects, while the entry part has side effects and will cache the federationInstance.
packages/runtime-core/src/utils/semver/parser.ts The changes in this file primarily involve splitting the runtime into two separate parts: runtime-core and entry. The runtime-core module is designed to have no side effects, while the entry module will handle caching the federation instance. This separation of concerns aims to improve the overall structure and maintainability of the codebase.
packages/runtime-core/src/utils/semver/utils.ts The changes in this file involve splitting the runtime into two parts: runtime-core and entry. The runtime-core is designed to have no side effects, while the entry part has side effects and will cache the federation instance. This separation aims to externalize the runtime-core, potentially improving modularity and flexibility in the codebase.
packages/runtime-core/src/utils/share.ts The changes in this file involve splitting the runtime into two parts: runtime-core and entry. The runtime-core is designed to have no side effects, while the entry part has side effects and will cache the federationInstance. This change aims to externalize the runtime-core, potentially improving modularity and flexibility.
packages/runtime-core/src/utils/tool.ts The changes in this file split the runtime into two parts: runtime-core and entry. The runtime-core module has no side effects, while the entry module caches the federationInstance. This separation of concerns aims to improve the overall structure and maintainability of the codebase.
packages/runtime/src/helpers.ts The code changes in this file involve splitting the runtime into two parts: runtime-core and entry. The runtime-core module is now imported from a separate package '@module-federation/runtime-core' and only the 'getGlobalFederationInstance' function is exported from the local 'utils' module. The rest of the global utility functions are now imported from the runtime-core package, and the file exports the corresponding types as well.
packages/runtime/src/index.ts The code changes focus on splitting the runtime module into two parts: runtime-core and entry. The runtime-core module is designed to have no side effects, while the entry module will cache the FederationInstance. The changes also involve externalizing the runtime-core module and updating the imports and exports accordingly.
packages/runtime/src/types.ts The changes in this file involve externalizing the runtime-core types and importing them directly from the '@module-federation/runtime-core/types' module. This simplifies the codebase by separating the runtime-core and entry components, reducing the overall complexity and potential side effects.
packages/runtime/src/utils.ts The code changes introduce a new utility function getGlobalFederationInstance that retrieves a specific instance of the FederationHost based on the provided name and version. Additionally, a helper function getBuilderId is added to fetch the build identifier, which is used to identify the correct FederationHost instance when multiple instances exist.

it('verify resources when URL specifies protocol (http)', () => {
const url = 'http://a.b.c';
const scriptElement = document.createElement('script');
scriptElement.src = url;

Check warning

Code scanning / CodeQL

Inclusion of functionality from an untrusted source Medium test

Script loaded using unencrypted connection.
Copy link

changeset-bot bot commented Nov 9, 2024

⚠️ No Changeset found

Latest commit: 5fe3f65

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@ScriptedAlchemy ScriptedAlchemy changed the title WIP: chore: split runtime as core and entry chore: split runtime as core and entry Nov 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants