1.0.0-beta.14 (2021-04-22)
1.0.0-beta.13 (2021-04-12)
- platform: allow context key names containing forward slashes or starting with a colon (5637832), closes #49
- platform: remove ES2015 import cycles (5dfc7f6), closes #42
-
platform: Allowing context key names containing forward slashes or starting with a colon introduced a breaking change in the host/client communication protocol.
The messaging protocol between host and client HAS CHANGED for context value lookup using the
ContextService
. Therefore, you must update the host and affected clients to the new version together. The API has not changed; the breaking change only applies to the@scion/microfrontend-platform
version.To migrate:
- Upgrade host and clients (which use the
ContextService
) to@scion/[email protected]
.
- Upgrade host and clients (which use the
-
platform: Adding wildcard support for unregistering capabilities and intentions introduced a breaking change.
To migrate:
- upgrade host and client apps to use
@scion/[email protected]
- When searching for capabilities with a qualifier filter that contains scalar qualifier values, only capabilities with exactly those values are now returned. This is different from previous versions where a qualifier filter like
{entity: 'person', id: '5'}
matched capabilities with exactly that qualifier, as well as capabilities containing a wildcard (*
or?
) in the qualifier, such as{entity: 'person', id: '*'}
or{entity: 'person', id: '?'}
. To keep the old lookup behavior, do not pass a qualifier filter and filter the capabilities yourself, e.g. by using theQualifierMatcher
, as follows:Beans.get(ManifestService).lookupCapabilities$({type: 'view'}) .pipe(filterArray(capability => new QualifierMatcher(capability.qualifier, {evalOptional: true, evalAsterisk: true}).matches({entity: 'person', id: '5'})))
- upgrade host and client apps to use
1.0.0-beta.12 (2021-02-22)
- platform: allow preventing default action of registered keystrokes (8ae8595), closes #32
- platform: propagate topic subscription errors in context service (08bbaf7)
- platform: allow collecting values on contextual data lookup (2e87b51)
-
URLs of applications deployed on Vercel now end with
*.vercel.app
instead of*.now.sh
To migrate:
- If using the
SCION Microfrontend Platform DevTools
, load them from https://scion-microfrontend-platform-devtools.vercel.app or from the versioned URL https://scion-microfrontend-platform-devtools-v1-0-0-beta-12.vercel.app. - The Developer Guide is now available under https://scion-microfrontend-platform-developer-guide.vercel.app
- The TypeDoc is now available under https://scion-microfrontend-platform-api.vercel.app
See https://vercel.com/changelog/urls-are-becoming-consistent for more information.
- If using the
1.0.0-beta.11 (2021-02-03)
- platform: add convenience API to reduce code required to respond to requests (d0eeaf5), closes #43
- platform: allow to specify a generic when registering a capability to increase type safety (4af9433), closes #60
- platform: let the message/intent replier control the lifecycle of the requestor’s Observable (77a4dd9)
-
platform: Adding the convenience API for responding to requests introduced the following breaking change for Angular projects.
Note: The messaging protocol between the host and client HAS NOT CHANGED. Thus, you can upgrade the host and clients to the new version independently.
To migrate:
-
If an Angular project, add the method
onMessage
to yourNgZone
message client decorator, as following:public onMessage<IN = any, OUT = any>(topic: string, callback: (message: TopicMessage<IN>) => Observable<OUT> | Promise<OUT> | OUT | void): Subscription { return messageClient.onMessage(topic, callback); }
See https://scion-microfrontend-platform-developer-guide.vercel.app/#chapter:angular-integration-guide:preparing-messaging-for-use-with-angular for more information.
-
If an Angular project, add the method
onIntent
to yourNgZone
intent client decorator, as following:public onIntent<IN = any, OUT = any>(selector: IntentSelector, callback: (intentMessage: IntentMessage<IN>) => Observable<OUT> | Promise<OUT> | OUT | void): Subscription { return intentClient.onIntent(selector, callback); }
See https://scion-microfrontend-platform-developer-guide.vercel.app/#chapter:angular-integration-guide:preparing-messaging-for-use-with-angular for more information.
-
-
platform: Enabling the message/intent replier to control the requestor’s Observable lifecycle introduced a breaking change in the host/client communication protocol.
Note: The messaging protocol between host and client HAS CHANGED for registering/unregistering capabilities/intentions using the
ManifestService
. Therefore, you must update the host and affected clients to the new version together. The API has not changed; the breaking change only applies to the@scion/microfrontend-platform
version.To migrate:
- Upgrade host and clients (which use the
ManifestService
) to@scion/[email protected]
. - Remove the
throwOnErrorStatus
SCION RxJS operator when usingIntentClient#request$
orMessageClient#request$
as already installed by the platform.
- Upgrade host and clients (which use the
1.0.0-beta.10 (2021-01-25)
1.0.0-beta.9 (2021-01-18)
- devtools: perform scope check when computing dependencies between micro applications (5e43bc3)
- platform: resolve host startup promise only once applications and properties are available (f4067c2)
- platform: allow monitoring
sci-router-outlet
whether embedded content has gained or lost focus (14fb178) - platform: allow passing params in an intent (b82b343), closes #44
- platform: open shadow DOM of the router outlet (cb10c32)
1.0.0-beta.8 (2020-12-18)
- platform: allow empty path as url for outlet navigation (8a0a70b)
- platform: ensure trailing slash in application base URLs (62a7a92)
- platform: make platform startup more robust (0d30b72), closes #40 #41
- devtools: add devtools micro application (19db8bf), closes #4
- platform: provide a static list of installed applications in the manifest service (b60015f)
- platform: The
HostPlatformState
bean has been removed as no longer necessary, because activator microfrontends are now installed after completing host platform startup, and because the startup Promise waits until connected to the host.
To migrate: Instead of listening for the host platform to enter the 'started' state, wait for the startup Promise to resolve. Note: You can independently upgrade host and clients to the new version because the platform was not using the platform status at all.
1.0.0-beta.7 (2020-11-05)
- platform: The bean manager was moved from
@scion/microfrontend-platform
to@scion/toolkit
NPM module.
Note: The messaging protocol between host and client HAS NOT CHANGED. You can therefore independently upgrade host and clients to the new version.
To migrate:
- Update
@scion/toolkit
to version10.0.0-beta.3
. - Import following symbols from
@scion/toolkit/bean-manager
instead of from@scion/microfrontend-platform
:BeanManager
,Beans
,Initializer
,InitializerFn
,BeanDecorator
,PreDestroy
,BeanInstanceConstructInstructions
,Type
,AbstractType
. - Replace
InstanceConstructInstructions
withBeanInstanceConstructInstructions
. - Use static methods of the
MicrofrontendPlatform
class to interact with states of the platform lifecycle (formerly viaPlatformState
bean), e.g., to wait for the platform to enter a specific state. In this change, we changed the beanPlatformState
to anenum
to represent platform states (formerlyPlatformStates
). Migrate as follows:- Beans.get(PlatformState).whenState -> MicrofrontendPlatform.whenState, e.g.,
Beans.get(PlatformState).whenState(PlatformStates.Starting) -> MicrofrontendPlatform.whenState(PlatformStates.Starting)
- Beans.get(PlatformState).state -> MicrofrontendPlatform.state
- Beans.get(PlatformState).state$ -> MicrofrontendPlatform.state$
- Beans.get(PlatformState).whenState -> MicrofrontendPlatform.whenState, e.g.,
- Replace occurrences of
PlatformStates
withPlatformState
. - Control bean destruction order by setting its
destroyOrder
in the options object when registering the bean (formerly by setting the destroy phase). Beans with a lower destroy order are destroyed before beans with a higher destroy order. Beans of the same destroy order are destroyed in reverse construction order. By default, the destroy order is 0. - Registering a bean now returns a handle to unregister the bean (formerly
void
). If registering a bean inside avoid
expression, register it inside a void operator, as follows:void (Beans.register(Bean))
1.0.0-beta.6 (2020-09-30)
- platform: allow registering beans under a symbol (98bf890), closes #28
- platform: separate message and intent communication APIs (7610eb0)
- platform: Use
MessageClient
for topic-based messaging, andIntentClient
for intent-based messaging
Note: The messaging protocol between host and client HAS NOT CHANGED. You can therefore independently upgrade host and clients to the new version.
Moved or renamed the following methods:
- MessageClient#onMessage$ -> MessageClient.observe$
- MessageClient#issueIntent -> IntentClient.publish
- MessageClient#requestByIntent$ -> IntentClient.request$
- MessageClient#onIntent$ -> IntentClient.observe$
- MessageClient#isConnected -> MicrofrontendPlatform.isConnectedToHost
Renamed options object of the following methods:
- MessageClient#request$: MessageOptions -> RequestOptions
- IntentClient#publish: MessageOptions -> IntentOptions
- IntentClient#request$: MessageOptions -> IntentOptions
For Angular developers, see Preparing the MessageClient and IntentClient for use with Angular how to decorate the MessageClient
and IntentClient
for making Observables to emit inside the Angular zone.
Messaging can now be deactivated via options object when starting the platform. Previously you had to register a NullMessageClient
bean.
MicrofrontendPlatform.connectToHost({messaging: {enabled: false}}
1.0.0-beta.5 (2020-07-17)
- esm5 and fesm5 format is no longer distributed in
@scion/microfrontend-platform
’s NPM package
We no longer include the distributions for esm5
and fesm5
in the @scion/microfrontend-platform
’s NPM package. Only the formats for esm2015
, fesm2015
, and UMD are distributed. Consequently, the module field in package.json now points to the fesm2015
distribution.
To migrate:
- If requiring
esm5
orfesm5
, you will need to downlevel to ES5 yourself. If using Angular, the Angular CLI will automatically downlevel the code to ES5 if differential loading is enabled in the Angular project, so no action is required from Angular CLI users.
1.0.0-beta.4 (2020-07-14)
- testapp: do not render the application shell in activator microfrontends (2180257)