@squide/firefly-module-federation 1.1.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/dist/ModuleFederationPlugin.js +9 -17
- package/dist/ModuleFederationPlugin.js.map +1 -1
- package/dist/RemoteDefinition.js +0 -2
- package/dist/RemoteDefinition.js.map +1 -1
- package/dist/RemoteModuleRegistry.d.ts +13 -0
- package/dist/RemoteModuleRegistry.js +1 -10
- package/dist/RemoteModuleRegistry.js.map +1 -1
- package/dist/index.js +3 -9
- package/dist/index.js.map +1 -1
- package/dist/initializeFirefly.js +0 -4
- package/dist/initializeFirefly.js.map +1 -1
- package/dist/rslib-runtime.js +11 -0
- package/dist/rslib-runtime.js.map +1 -0
- package/package.json +21 -20
- package/src/ModuleFederationPlugin.ts +19 -25
- package/src/RemoteModuleRegistry.ts +14 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# @squide/firefly-module-federation
|
|
2
2
|
|
|
3
|
+
## 2.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- [#586](https://github.com/workleap/wl-squide/pull/586) [`f26a67f`](https://github.com/workleap/wl-squide/commit/f26a67f80984c50aaf9b3b550a8e1f25edcbb43e) Thanks [@patricklafrance](https://github.com/patricklafrance)! - Added typed EventBus through module augmentation of EventMap.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [[`f26a67f`](https://github.com/workleap/wl-squide/commit/f26a67f80984c50aaf9b3b550a8e1f25edcbb43e)]:
|
|
12
|
+
- @squide/firefly@17.0.0
|
|
13
|
+
- @squide/core@7.0.0
|
|
14
|
+
|
|
15
|
+
## 1.1.2
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- [#575](https://github.com/workleap/wl-squide/pull/575) [`9c91bd4`](https://github.com/workleap/wl-squide/commit/9c91bd47c5357a2b15b1fb0e984f81687a3b8b53) Thanks [@patricklafrance](https://github.com/patricklafrance)! - Bump dependencies
|
|
20
|
+
|
|
21
|
+
- Updated dependencies [[`9c91bd4`](https://github.com/workleap/wl-squide/commit/9c91bd47c5357a2b15b1fb0e984f81687a3b8b53)]:
|
|
22
|
+
- @squide/firefly@16.2.2
|
|
23
|
+
- @squide/core@6.1.15
|
|
24
|
+
|
|
3
25
|
## 1.1.1
|
|
4
26
|
|
|
5
27
|
### Patch Changes
|
|
@@ -3,15 +3,10 @@ import { Plugin } from "@squide/core";
|
|
|
3
3
|
import { addProtectedListener, endActiveSpan, getTracer, startActiveChildSpan, startChildSpan, traceError } from "@squide/firefly/internal";
|
|
4
4
|
import { RemoteModuleDeferredRegistrationFailedEvent, RemoteModuleDeferredRegistrationUpdateFailedEvent, RemoteModuleRegistrationFailedEvent, RemoteModuleRegistry, RemoteModuleRegistryId, RemoteModulesDeferredRegistrationCompletedEvent, RemoteModulesDeferredRegistrationStartedEvent, RemoteModulesDeferredRegistrationsUpdateCompletedEvent, RemoteModulesDeferredRegistrationsUpdateStartedEvent, RemoteModulesRegistrationCompletedEvent, RemoteModulesRegistrationStartedEvent } from "./RemoteModuleRegistry.js";
|
|
5
5
|
|
|
6
|
-
;// CONCATENATED MODULE: external "@module-federation/enhanced/runtime"
|
|
7
6
|
|
|
8
|
-
;// CONCATENATED MODULE: external "@squide/core"
|
|
9
7
|
|
|
10
|
-
;// CONCATENATED MODULE: external "@squide/firefly/internal"
|
|
11
8
|
|
|
12
|
-
;// CONCATENATED MODULE: external "./RemoteModuleRegistry.js"
|
|
13
9
|
|
|
14
|
-
;// CONCATENATED MODULE: ./src/ModuleFederationPlugin.ts
|
|
15
10
|
|
|
16
11
|
|
|
17
12
|
|
|
@@ -47,7 +42,7 @@ class ModuleFederationPlugin extends Plugin {
|
|
|
47
42
|
addProtectedListener(this._runtime, RemoteModulesRegistrationStartedEvent, (payload)=>{
|
|
48
43
|
const bootstrappingSpan = getBootstrappingSpan();
|
|
49
44
|
const attributes = {
|
|
50
|
-
"app.squide.remote_count": payload
|
|
45
|
+
"app.squide.remote_count": payload?.remoteCount
|
|
51
46
|
};
|
|
52
47
|
if (bootstrappingSpan) {
|
|
53
48
|
bootstrappingSpan.addEvent("remote-module-registration-started", attributes);
|
|
@@ -66,7 +61,7 @@ class ModuleFederationPlugin extends Plugin {
|
|
|
66
61
|
const bootstrappingSpan = getBootstrappingSpan();
|
|
67
62
|
if (bootstrappingSpan) {
|
|
68
63
|
bootstrappingSpan.addEvent("remote-module-registration-completed", {
|
|
69
|
-
"app.squide.remote_count": payload
|
|
64
|
+
"app.squide.remote_count": payload?.remoteCount
|
|
70
65
|
});
|
|
71
66
|
}
|
|
72
67
|
if (remoteModuleRegistrationSpan) {
|
|
@@ -78,9 +73,8 @@ class ModuleFederationPlugin extends Plugin {
|
|
|
78
73
|
});
|
|
79
74
|
// Can occur multiple times.
|
|
80
75
|
addProtectedListener(this._runtime, RemoteModuleRegistrationFailedEvent, (payload)=>{
|
|
81
|
-
const registrationError = payload;
|
|
82
76
|
if (remoteModuleRegistrationSpan) {
|
|
83
|
-
traceError(remoteModuleRegistrationSpan,
|
|
77
|
+
traceError(remoteModuleRegistrationSpan, payload);
|
|
84
78
|
}
|
|
85
79
|
}, {
|
|
86
80
|
onError: handleUnmanagedError
|
|
@@ -88,7 +82,7 @@ class ModuleFederationPlugin extends Plugin {
|
|
|
88
82
|
addProtectedListener(this._runtime, RemoteModulesDeferredRegistrationStartedEvent, (payload)=>{
|
|
89
83
|
const bootstrappingSpan = getBootstrappingSpan();
|
|
90
84
|
const attributes = {
|
|
91
|
-
"app.squide.registration_count": payload
|
|
85
|
+
"app.squide.registration_count": payload?.registrationCount
|
|
92
86
|
};
|
|
93
87
|
if (bootstrappingSpan) {
|
|
94
88
|
bootstrappingSpan.addEvent("remote-module-deferred-registration-started", attributes);
|
|
@@ -107,7 +101,7 @@ class ModuleFederationPlugin extends Plugin {
|
|
|
107
101
|
const bootstrappingSpan = getBootstrappingSpan();
|
|
108
102
|
if (bootstrappingSpan) {
|
|
109
103
|
bootstrappingSpan.addEvent("remote-module-deferred-registration-completed", {
|
|
110
|
-
"app.squide.registration_count": payload
|
|
104
|
+
"app.squide.registration_count": payload?.registrationCount
|
|
111
105
|
});
|
|
112
106
|
}
|
|
113
107
|
if (remoteModuleDeferredRegistrationSpan) {
|
|
@@ -119,9 +113,8 @@ class ModuleFederationPlugin extends Plugin {
|
|
|
119
113
|
});
|
|
120
114
|
// Can occur multiple times.
|
|
121
115
|
addProtectedListener(this._runtime, RemoteModuleDeferredRegistrationFailedEvent, (payload)=>{
|
|
122
|
-
const registrationError = payload;
|
|
123
116
|
if (remoteModuleDeferredRegistrationSpan) {
|
|
124
|
-
traceError(remoteModuleDeferredRegistrationSpan,
|
|
117
|
+
traceError(remoteModuleDeferredRegistrationSpan, payload);
|
|
125
118
|
}
|
|
126
119
|
}, {
|
|
127
120
|
onError: handleUnmanagedError
|
|
@@ -130,7 +123,7 @@ class ModuleFederationPlugin extends Plugin {
|
|
|
130
123
|
addProtectedListener(this._runtime, RemoteModulesDeferredRegistrationsUpdateStartedEvent, (payload)=>{
|
|
131
124
|
const deferredRegistrationsUpdateSpan = getDeferredRegistrationsUpdateSpan();
|
|
132
125
|
const attributes = {
|
|
133
|
-
"app.squide.registration_count": payload
|
|
126
|
+
"app.squide.registration_count": payload?.registrationCount
|
|
134
127
|
};
|
|
135
128
|
if (deferredRegistrationsUpdateSpan) {
|
|
136
129
|
deferredRegistrationsUpdateSpan.addEvent("remote-module-deferred-registrations-update-started", attributes);
|
|
@@ -154,7 +147,7 @@ class ModuleFederationPlugin extends Plugin {
|
|
|
154
147
|
const deferredRegistrationsUpdateSpan = getDeferredRegistrationsUpdateSpan();
|
|
155
148
|
if (deferredRegistrationsUpdateSpan) {
|
|
156
149
|
deferredRegistrationsUpdateSpan.addEvent("remote-module-deferred-registrations-update-completed", {
|
|
157
|
-
"app.squide.registration_count": payload
|
|
150
|
+
"app.squide.registration_count": payload?.registrationCount
|
|
158
151
|
});
|
|
159
152
|
}
|
|
160
153
|
if (remoteModuleDeferredRegistrationsUpdateSpan) {
|
|
@@ -165,9 +158,8 @@ class ModuleFederationPlugin extends Plugin {
|
|
|
165
158
|
});
|
|
166
159
|
// Can occur multiple times.
|
|
167
160
|
addProtectedListener(this._runtime, RemoteModuleDeferredRegistrationUpdateFailedEvent, (payload)=>{
|
|
168
|
-
const registrationError = payload;
|
|
169
161
|
if (remoteModuleDeferredRegistrationsUpdateSpan) {
|
|
170
|
-
traceError(remoteModuleDeferredRegistrationsUpdateSpan.instance,
|
|
162
|
+
traceError(remoteModuleDeferredRegistrationsUpdateSpan.instance, payload);
|
|
171
163
|
}
|
|
172
164
|
}, {
|
|
173
165
|
onError: handleUnmanagedError
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModuleFederationPlugin.js","sources":["../src/ModuleFederationPlugin.ts"],"sourcesContent":["import { loadRemote as loadModuleFederationRemote } from \"@module-federation/enhanced/runtime\";\nimport { Span } from \"@opentelemetry/api\";\nimport { Plugin, RegisterModulesOptions, type Runtime } from \"@squide/core\";\nimport { FireflyPlugin, FireflyRuntime } from \"@squide/firefly\";\nimport { ActiveSpan, addProtectedListener, endActiveSpan, getTracer, HoneycombTrackingUnmanagedErrorHandler, startActiveChildSpan, startChildSpan, traceError, type GetSpanFunction } from \"@squide/firefly/internal\";\nimport { RemoteDefinition } from \"./RemoteDefinition.ts\";\nimport { RemoteModuleDeferredRegistrationFailedEvent, RemoteModuleDeferredRegistrationUpdateFailedEvent, RemoteModuleRegistrationError, RemoteModuleRegistrationFailedEvent, RemoteModuleRegistry, RemoteModuleRegistryId, RemoteModulesDeferredRegistrationCompletedEvent, RemoteModulesDeferredRegistrationCompletedEventPayload, RemoteModulesDeferredRegistrationStartedEvent, RemoteModulesDeferredRegistrationStartedEventPayload, RemoteModulesDeferredRegistrationsUpdateCompletedEvent, RemoteModulesDeferredRegistrationsUpdateCompletedEventPayload, RemoteModulesDeferredRegistrationsUpdateStartedEvent, RemoteModulesDeferredRegistrationsUpdateStartedEventPayload, RemoteModulesRegistrationCompletedEvent, RemoteModulesRegistrationCompletedEventPayload, RemoteModulesRegistrationStartedEvent, RemoteModulesRegistrationStartedEventPayload } from \"./RemoteModuleRegistry.ts\";\n\nexport const ModuleFederationPluginName = \"module-federation-plugin\";\n\nexport class ModuleFederationPlugin extends Plugin<FireflyRuntime> implements FireflyPlugin {\n constructor(runtime: FireflyRuntime) {\n super(ModuleFederationPluginName, runtime);\n\n this._runtime.moduleManager.addModuleRegistry(new RemoteModuleRegistry((remoteName, moduleName) => loadModuleFederationRemote(`${remoteName}/${moduleName}`)));\n }\n\n registerRemoteModules<TContext = unknown>(remotes: RemoteDefinition[], options?: RegisterModulesOptions<TContext>) {\n return this._runtime.moduleManager.registerModules(remotes.map(x => ({\n definition: x,\n registryId: RemoteModuleRegistryId\n })), options);\n }\n\n registerHoneycombTrackingListeners(\n getBootstrappingSpan: GetSpanFunction,\n getDeferredRegistrationsUpdateSpan: GetSpanFunction,\n onUnmanagedError: HoneycombTrackingUnmanagedErrorHandler\n ) {\n let remoteModuleRegistrationSpan: Span;\n let remoteModuleDeferredRegistrationSpan: Span;\n let remoteModuleDeferredRegistrationsUpdateSpan: ActiveSpan;\n\n const handleUnmanagedError = (error: unknown) => {\n if (remoteModuleRegistrationSpan) {\n remoteModuleRegistrationSpan.end();\n }\n\n if (remoteModuleDeferredRegistrationSpan) {\n remoteModuleDeferredRegistrationSpan.end();\n }\n\n if (remoteModuleDeferredRegistrationsUpdateSpan) {\n remoteModuleDeferredRegistrationsUpdateSpan.instance.end();\n }\n\n onUnmanagedError(error);\n };\n\n addProtectedListener(this._runtime, RemoteModulesRegistrationStartedEvent, (payload: unknown) => {\n const bootstrappingSpan = getBootstrappingSpan();\n\n const attributes = {\n \"app.squide.remote_count\": (payload as RemoteModulesRegistrationStartedEventPayload).remoteCount\n };\n\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"remote-module-registration-started\", attributes);\n }\n\n remoteModuleRegistrationSpan = startChildSpan(bootstrappingSpan, (options, context) => {\n return getTracer().startSpan(\"remote-module-registration\", { ...options, attributes }, context);\n });\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n addProtectedListener(this._runtime, RemoteModulesRegistrationCompletedEvent, (payload: unknown) => {\n const bootstrappingSpan = getBootstrappingSpan();\n\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"remote-module-registration-completed\", {\n \"app.squide.remote_count\": (payload as RemoteModulesRegistrationCompletedEventPayload).remoteCount\n });\n }\n\n if (remoteModuleRegistrationSpan) {\n remoteModuleRegistrationSpan.end();\n }\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(this._runtime, RemoteModuleRegistrationFailedEvent, (payload: unknown) => {\n const registrationError = payload as RemoteModuleRegistrationError;\n\n if (remoteModuleRegistrationSpan) {\n traceError(remoteModuleRegistrationSpan, registrationError);\n }\n }, {\n onError: handleUnmanagedError\n });\n\n addProtectedListener(this._runtime, RemoteModulesDeferredRegistrationStartedEvent, (payload: unknown) => {\n const bootstrappingSpan = getBootstrappingSpan();\n\n const attributes = {\n \"app.squide.registration_count\": (payload as RemoteModulesDeferredRegistrationStartedEventPayload).registrationCount\n };\n\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"remote-module-deferred-registration-started\", attributes);\n }\n\n remoteModuleDeferredRegistrationSpan = startChildSpan(bootstrappingSpan, (options, context) => {\n return getTracer().startSpan(\"remote-module-deferred-registration\", { ...options, attributes }, context);\n });\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n addProtectedListener(this._runtime, RemoteModulesDeferredRegistrationCompletedEvent, (payload: unknown) => {\n const bootstrappingSpan = getBootstrappingSpan();\n\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"remote-module-deferred-registration-completed\", {\n \"app.squide.registration_count\": (payload as RemoteModulesDeferredRegistrationCompletedEventPayload).registrationCount\n });\n }\n\n if (remoteModuleDeferredRegistrationSpan) {\n remoteModuleDeferredRegistrationSpan.end();\n }\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(this._runtime, RemoteModuleDeferredRegistrationFailedEvent, (payload: unknown) => {\n const registrationError = payload as RemoteModuleRegistrationError;\n\n if (remoteModuleDeferredRegistrationSpan) {\n traceError(remoteModuleDeferredRegistrationSpan, registrationError);\n }\n }, {\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(this._runtime, RemoteModulesDeferredRegistrationsUpdateStartedEvent, (payload: unknown) => {\n const deferredRegistrationsUpdateSpan = getDeferredRegistrationsUpdateSpan();\n\n const attributes = {\n \"app.squide.registration_count\": (payload as RemoteModulesDeferredRegistrationsUpdateStartedEventPayload).registrationCount\n };\n\n if (deferredRegistrationsUpdateSpan) {\n deferredRegistrationsUpdateSpan.addEvent(\"remote-module-deferred-registrations-update-started\", attributes);\n }\n\n remoteModuleDeferredRegistrationsUpdateSpan = startActiveChildSpan(deferredRegistrationsUpdateSpan, (options, context) => {\n const name = \"remote-module-deferred-registrations-update\";\n\n const span = getTracer().startSpan(name, {\n attributes,\n ...options\n }, context);\n\n return {\n name,\n span\n };\n });\n }, {\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(this._runtime, RemoteModulesDeferredRegistrationsUpdateCompletedEvent, (payload: unknown) => {\n const deferredRegistrationsUpdateSpan = getDeferredRegistrationsUpdateSpan();\n\n if (deferredRegistrationsUpdateSpan) {\n deferredRegistrationsUpdateSpan.addEvent(\"remote-module-deferred-registrations-update-completed\", {\n \"app.squide.registration_count\": (payload as RemoteModulesDeferredRegistrationsUpdateCompletedEventPayload).registrationCount\n });\n }\n\n if (remoteModuleDeferredRegistrationsUpdateSpan) {\n endActiveSpan(remoteModuleDeferredRegistrationsUpdateSpan);\n }\n }, {\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(this._runtime, RemoteModuleDeferredRegistrationUpdateFailedEvent, (payload: unknown) => {\n const registrationError = payload as RemoteModuleRegistrationError;\n\n if (remoteModuleDeferredRegistrationsUpdateSpan) {\n traceError(remoteModuleDeferredRegistrationsUpdateSpan.instance, registrationError);\n }\n }, {\n onError: handleUnmanagedError\n });\n\n // Cleanup the spans if the root tracking is failing.\n return (error: unknown) => {\n handleUnmanagedError(error);\n };\n }\n}\n\nexport function getModuleFederationPlugin(runtime: Runtime) {\n const plugin = runtime.getPlugin(ModuleFederationPluginName, {\n throwOnNotFound: false\n }) as ModuleFederationPlugin;\n\n if (!plugin) {\n throw new Error(\"[squide] The getModuleFederationPlugin function is called but no ModuleFederationPlugin instance has been registered with the runtime. Did you import the initializeFirefly function from the \\\"@squide/firefly-module-federation\\\" package?\");\n }\n\n return plugin;\n}\n"],"names":["loadRemote","loadModuleFederationRemote","Plugin","addProtectedListener","endActiveSpan","getTracer","startActiveChildSpan","startChildSpan","traceError","RemoteModuleDeferredRegistrationFailedEvent","RemoteModuleDeferredRegistrationUpdateFailedEvent","RemoteModuleRegistrationFailedEvent","RemoteModuleRegistry","RemoteModuleRegistryId","RemoteModulesDeferredRegistrationCompletedEvent","RemoteModulesDeferredRegistrationStartedEvent","RemoteModulesDeferredRegistrationsUpdateCompletedEvent","RemoteModulesDeferredRegistrationsUpdateStartedEvent","RemoteModulesRegistrationCompletedEvent","RemoteModulesRegistrationStartedEvent","ModuleFederationPluginName","ModuleFederationPlugin","runtime","remoteName","moduleName","remotes","options","x","getBootstrappingSpan","getDeferredRegistrationsUpdateSpan","onUnmanagedError","remoteModuleRegistrationSpan","remoteModuleDeferredRegistrationSpan","remoteModuleDeferredRegistrationsUpdateSpan","handleUnmanagedError","error","payload","bootstrappingSpan","attributes","context","registrationError","deferredRegistrationsUpdateSpan","name","span","getModuleFederationPlugin","plugin","Error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ModuleFederationPlugin.js","sources":["../src/ModuleFederationPlugin.ts"],"sourcesContent":["import { loadRemote as loadModuleFederationRemote } from \"@module-federation/enhanced/runtime\";\nimport { Span } from \"@opentelemetry/api\";\nimport { Plugin, RegisterModulesOptions, type Runtime } from \"@squide/core\";\nimport { FireflyPlugin, FireflyRuntime } from \"@squide/firefly\";\nimport { ActiveSpan, addProtectedListener, endActiveSpan, getTracer, HoneycombTrackingUnmanagedErrorHandler, startActiveChildSpan, startChildSpan, traceError, type GetSpanFunction } from \"@squide/firefly/internal\";\nimport { RemoteDefinition } from \"./RemoteDefinition.ts\";\nimport { RemoteModuleDeferredRegistrationFailedEvent, RemoteModuleDeferredRegistrationUpdateFailedEvent, RemoteModuleRegistrationFailedEvent, RemoteModuleRegistry, RemoteModuleRegistryId, RemoteModulesDeferredRegistrationCompletedEvent, RemoteModulesDeferredRegistrationStartedEvent, RemoteModulesDeferredRegistrationsUpdateCompletedEvent, RemoteModulesDeferredRegistrationsUpdateStartedEvent, RemoteModulesRegistrationCompletedEvent, RemoteModulesRegistrationStartedEvent } from \"./RemoteModuleRegistry.ts\";\n\nexport const ModuleFederationPluginName = \"module-federation-plugin\";\n\nexport class ModuleFederationPlugin extends Plugin<FireflyRuntime> implements FireflyPlugin {\n constructor(runtime: FireflyRuntime) {\n super(ModuleFederationPluginName, runtime);\n\n this._runtime.moduleManager.addModuleRegistry(new RemoteModuleRegistry((remoteName, moduleName) => loadModuleFederationRemote(`${remoteName}/${moduleName}`)));\n }\n\n registerRemoteModules<TContext = unknown>(remotes: RemoteDefinition[], options?: RegisterModulesOptions<TContext>) {\n return this._runtime.moduleManager.registerModules(remotes.map(x => ({\n definition: x,\n registryId: RemoteModuleRegistryId\n })), options);\n }\n\n registerHoneycombTrackingListeners(\n getBootstrappingSpan: GetSpanFunction,\n getDeferredRegistrationsUpdateSpan: GetSpanFunction,\n onUnmanagedError: HoneycombTrackingUnmanagedErrorHandler\n ) {\n let remoteModuleRegistrationSpan: Span;\n let remoteModuleDeferredRegistrationSpan: Span;\n let remoteModuleDeferredRegistrationsUpdateSpan: ActiveSpan;\n\n const handleUnmanagedError = (error: unknown) => {\n if (remoteModuleRegistrationSpan) {\n remoteModuleRegistrationSpan.end();\n }\n\n if (remoteModuleDeferredRegistrationSpan) {\n remoteModuleDeferredRegistrationSpan.end();\n }\n\n if (remoteModuleDeferredRegistrationsUpdateSpan) {\n remoteModuleDeferredRegistrationsUpdateSpan.instance.end();\n }\n\n onUnmanagedError(error);\n };\n\n addProtectedListener(this._runtime, RemoteModulesRegistrationStartedEvent, payload => {\n const bootstrappingSpan = getBootstrappingSpan();\n\n const attributes = {\n \"app.squide.remote_count\": payload?.remoteCount\n };\n\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"remote-module-registration-started\", attributes);\n }\n\n remoteModuleRegistrationSpan = startChildSpan(bootstrappingSpan, (options, context) => {\n return getTracer().startSpan(\"remote-module-registration\", { ...options, attributes }, context);\n });\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n addProtectedListener(this._runtime, RemoteModulesRegistrationCompletedEvent, payload => {\n const bootstrappingSpan = getBootstrappingSpan();\n\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"remote-module-registration-completed\", {\n \"app.squide.remote_count\": payload?.remoteCount\n });\n }\n\n if (remoteModuleRegistrationSpan) {\n remoteModuleRegistrationSpan.end();\n }\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(this._runtime, RemoteModuleRegistrationFailedEvent, payload => {\n if (remoteModuleRegistrationSpan) {\n traceError(remoteModuleRegistrationSpan, payload as Error);\n }\n }, {\n onError: handleUnmanagedError\n });\n\n addProtectedListener(this._runtime, RemoteModulesDeferredRegistrationStartedEvent, payload => {\n const bootstrappingSpan = getBootstrappingSpan();\n\n const attributes = {\n \"app.squide.registration_count\": payload?.registrationCount\n };\n\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"remote-module-deferred-registration-started\", attributes);\n }\n\n remoteModuleDeferredRegistrationSpan = startChildSpan(bootstrappingSpan, (options, context) => {\n return getTracer().startSpan(\"remote-module-deferred-registration\", { ...options, attributes }, context);\n });\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n addProtectedListener(this._runtime, RemoteModulesDeferredRegistrationCompletedEvent, payload => {\n const bootstrappingSpan = getBootstrappingSpan();\n\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"remote-module-deferred-registration-completed\", {\n \"app.squide.registration_count\": payload?.registrationCount\n });\n }\n\n if (remoteModuleDeferredRegistrationSpan) {\n remoteModuleDeferredRegistrationSpan.end();\n }\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(this._runtime, RemoteModuleDeferredRegistrationFailedEvent, payload => {\n if (remoteModuleDeferredRegistrationSpan) {\n traceError(remoteModuleDeferredRegistrationSpan, payload as Error);\n }\n }, {\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(this._runtime, RemoteModulesDeferredRegistrationsUpdateStartedEvent, payload => {\n const deferredRegistrationsUpdateSpan = getDeferredRegistrationsUpdateSpan();\n\n const attributes = {\n \"app.squide.registration_count\": payload?.registrationCount\n };\n\n if (deferredRegistrationsUpdateSpan) {\n deferredRegistrationsUpdateSpan.addEvent(\"remote-module-deferred-registrations-update-started\", attributes);\n }\n\n remoteModuleDeferredRegistrationsUpdateSpan = startActiveChildSpan(deferredRegistrationsUpdateSpan, (options, context) => {\n const name = \"remote-module-deferred-registrations-update\";\n\n const span = getTracer().startSpan(name, {\n attributes,\n ...options\n }, context);\n\n return {\n name,\n span\n };\n });\n }, {\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(this._runtime, RemoteModulesDeferredRegistrationsUpdateCompletedEvent, payload => {\n const deferredRegistrationsUpdateSpan = getDeferredRegistrationsUpdateSpan();\n\n if (deferredRegistrationsUpdateSpan) {\n deferredRegistrationsUpdateSpan.addEvent(\"remote-module-deferred-registrations-update-completed\", {\n \"app.squide.registration_count\": payload?.registrationCount\n });\n }\n\n if (remoteModuleDeferredRegistrationsUpdateSpan) {\n endActiveSpan(remoteModuleDeferredRegistrationsUpdateSpan);\n }\n }, {\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(this._runtime, RemoteModuleDeferredRegistrationUpdateFailedEvent, payload => {\n if (remoteModuleDeferredRegistrationsUpdateSpan) {\n traceError(remoteModuleDeferredRegistrationsUpdateSpan.instance, payload as Error);\n }\n }, {\n onError: handleUnmanagedError\n });\n\n // Cleanup the spans if the root tracking is failing.\n return (error: unknown) => {\n handleUnmanagedError(error);\n };\n }\n}\n\nexport function getModuleFederationPlugin(runtime: Runtime) {\n const plugin = runtime.getPlugin(ModuleFederationPluginName, {\n throwOnNotFound: false\n }) as ModuleFederationPlugin;\n\n if (!plugin) {\n throw new Error(\"[squide] The getModuleFederationPlugin function is called but no ModuleFederationPlugin instance has been registered with the runtime. Did you import the initializeFirefly function from the \\\"@squide/firefly-module-federation\\\" package?\");\n }\n\n return plugin;\n}\n"],"names":["loadRemote","loadModuleFederationRemote","Plugin","addProtectedListener","endActiveSpan","getTracer","startActiveChildSpan","startChildSpan","traceError","RemoteModuleDeferredRegistrationFailedEvent","RemoteModuleDeferredRegistrationUpdateFailedEvent","RemoteModuleRegistrationFailedEvent","RemoteModuleRegistry","RemoteModuleRegistryId","RemoteModulesDeferredRegistrationCompletedEvent","RemoteModulesDeferredRegistrationStartedEvent","RemoteModulesDeferredRegistrationsUpdateCompletedEvent","RemoteModulesDeferredRegistrationsUpdateStartedEvent","RemoteModulesRegistrationCompletedEvent","RemoteModulesRegistrationStartedEvent","ModuleFederationPluginName","ModuleFederationPlugin","runtime","remoteName","moduleName","remotes","options","x","getBootstrappingSpan","getDeferredRegistrationsUpdateSpan","onUnmanagedError","remoteModuleRegistrationSpan","remoteModuleDeferredRegistrationSpan","remoteModuleDeferredRegistrationsUpdateSpan","handleUnmanagedError","error","payload","bootstrappingSpan","attributes","context","deferredRegistrationsUpdateSpan","name","span","getModuleFederationPlugin","plugin","Error"],"mappings":"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"}
|
package/dist/RemoteDefinition.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteDefinition.js","sources":["../src/RemoteDefinition.ts"],"sourcesContent":["export interface RemoteDefinition extends Record<string, unknown> {\n // The name of the remote module.\n name: string;\n}\n\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RemoteDefinition.js","sources":["../src/RemoteDefinition.ts"],"sourcesContent":["export interface RemoteDefinition extends Record<string, unknown> {\n // The name of the remote module.\n name: string;\n}\n\n"],"names":[],"mappings":"AAGC"}
|
|
@@ -28,6 +28,19 @@ export interface RemoteModulesDeferredRegistrationsUpdateStartedEventPayload {
|
|
|
28
28
|
export interface RemoteModulesDeferredRegistrationsUpdateCompletedEventPayload {
|
|
29
29
|
registrationCount: number;
|
|
30
30
|
}
|
|
31
|
+
declare module "@squide/core" {
|
|
32
|
+
interface EventMap {
|
|
33
|
+
"squide-remote-modules-registration-started": RemoteModulesRegistrationStartedEventPayload;
|
|
34
|
+
"squide-remote-modules-registration-completed": RemoteModulesRegistrationCompletedEventPayload;
|
|
35
|
+
"squide-remote-module-registration-failed": ModuleRegistrationError;
|
|
36
|
+
"squide-remote-modules-deferred-registration-started": RemoteModulesDeferredRegistrationStartedEventPayload;
|
|
37
|
+
"squide-remote-modules-deferred-registration-completed": RemoteModulesDeferredRegistrationCompletedEventPayload;
|
|
38
|
+
"squide-some-remote-module-deferred-registration-failed": ModuleRegistrationError;
|
|
39
|
+
"squide-remote-modules-deferred-registrations-update-started": RemoteModulesDeferredRegistrationsUpdateStartedEventPayload;
|
|
40
|
+
"squide-remote-modules-deferred-registrations-update-completed-started": RemoteModulesDeferredRegistrationsUpdateCompletedEventPayload;
|
|
41
|
+
"squide-remote-module-deferred-registration-update-failed": ModuleRegistrationError;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
31
44
|
type LoadRemoteFunction = (remoteName: string, moduleName: string) => Promise<any>;
|
|
32
45
|
export declare class RemoteModuleRegistrationError extends ModuleRegistrationError {
|
|
33
46
|
#private;
|
|
@@ -1,18 +1,9 @@
|
|
|
1
1
|
import { ModuleRegistrationError, registerModule } from "@squide/core";
|
|
2
2
|
import { isFunction, isNil } from "@squide/core/internal";
|
|
3
|
-
|
|
4
|
-
var __webpack_require__ = {};
|
|
3
|
+
import { __webpack_require__ } from "./rslib-runtime.js";
|
|
5
4
|
|
|
6
|
-
// webpack/runtime/has_own_property
|
|
7
|
-
(() => {
|
|
8
|
-
__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
9
|
-
})();
|
|
10
5
|
|
|
11
|
-
;// CONCATENATED MODULE: external "@squide/core"
|
|
12
6
|
|
|
13
|
-
;// CONCATENATED MODULE: external "@squide/core/internal"
|
|
14
|
-
|
|
15
|
-
;// CONCATENATED MODULE: ./src/RemoteModuleRegistry.ts
|
|
16
7
|
|
|
17
8
|
|
|
18
9
|
const RemoteModuleRegistryId = "remote";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteModuleRegistry.js","sources":["webpack/runtime/has_own_property","../src/RemoteModuleRegistry.ts"],"sourcesContent":["__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import { ModuleDefinition, ModuleRegistrationError, registerModule, type DeferredRegistrationFunction, type ModuleRegistrationStatus, type ModuleRegistrationStatusChangedListener, type ModuleRegistry, type RegisterModulesOptions, type Runtime } from \"@squide/core\";\nimport { isFunction, isNil } from \"@squide/core/internal\";\nimport type { Logger, RootLogger } from \"@workleap/logging\";\nimport type { RemoteDefinition } from \"./RemoteDefinition.ts\";\n\nexport const RemoteModuleRegistryId = \"remote\";\n\nexport const RemoteModulesRegistrationStartedEvent = \"squide-remote-modules-registration-started\";\nexport const RemoteModulesRegistrationCompletedEvent = \"squide-remote-modules-registration-completed\";\nexport const RemoteModuleRegistrationFailedEvent = \"squide-remote-module-registration-failed\";\n\nexport const RemoteModulesDeferredRegistrationStartedEvent = \"squide-remote-modules-deferred-registration-started\";\nexport const RemoteModulesDeferredRegistrationCompletedEvent = \"squide-remote-modules-deferred-registration-completed\";\nexport const RemoteModuleDeferredRegistrationFailedEvent = \"squide-some-remote-module-deferred-registration-failed\";\n\nexport const RemoteModulesDeferredRegistrationsUpdateStartedEvent = \"squide-remote-modules-deferred-registrations-update-started\";\nexport const RemoteModulesDeferredRegistrationsUpdateCompletedEvent = \"squide-remote-modules-deferred-registrations-update-completed-started\";\nexport const RemoteModuleDeferredRegistrationUpdateFailedEvent = \"squide-remote-module-deferred-registration-update-failed\";\n\nexport interface RemoteModulesRegistrationStartedEventPayload {\n remoteCount: number;\n}\n\nexport interface RemoteModulesRegistrationCompletedEventPayload {\n remoteCount: number;\n}\n\nexport interface RemoteModulesDeferredRegistrationStartedEventPayload {\n registrationCount: number;\n}\n\nexport interface RemoteModulesDeferredRegistrationCompletedEventPayload {\n registrationCount: number;\n}\n\nexport interface RemoteModulesDeferredRegistrationsUpdateStartedEventPayload {\n registrationCount: number;\n}\n\nexport interface RemoteModulesDeferredRegistrationsUpdateCompletedEventPayload {\n registrationCount: number;\n}\n\nconst RemoteRegisterModuleName = \"register\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype LoadRemoteFunction = (remoteName: string, moduleName: string) => Promise<any>;\n\ninterface DeferredRegistration<TRuntime extends Runtime = Runtime, TData = unknown> {\n remoteName: string;\n index: string;\n fct: DeferredRegistrationFunction<TRuntime, TData>;\n}\n\nexport class RemoteModuleRegistrationError extends ModuleRegistrationError {\n readonly #remoteName: string;\n readonly #moduleName: string;\n\n constructor(message: string, remoteName: string, moduleName: string, options?: ErrorOptions) {\n super(message, options);\n\n this.#remoteName = remoteName;\n this.#moduleName = moduleName;\n }\n\n get remoteName() {\n return this.#remoteName;\n }\n\n get moduleName() {\n return this.#moduleName;\n }\n}\n\nexport class RemoteModuleRegistry implements ModuleRegistry {\n #registrationStatus: ModuleRegistrationStatus = \"none\";\n\n readonly #deferredRegistrations: DeferredRegistration[] = [];\n readonly #loadRemote: LoadRemoteFunction;\n readonly #statusChangedListeners = new Set<ModuleRegistrationStatusChangedListener>();\n\n constructor(loadRemote: LoadRemoteFunction) {\n this.#loadRemote = loadRemote;\n }\n\n get id() {\n return RemoteModuleRegistryId;\n }\n\n #logSharedScope(logger: Logger) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (__webpack_share_scopes__) {\n logger.debug(\n \"[squide] Module Federation shared scope is available:\",\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n __webpack_share_scopes__.default\n );\n }\n }\n\n async registerModules<TRuntime extends Runtime = Runtime, TContext = unknown, TData = unknown>(runtime: TRuntime, remotes: RemoteDefinition[], { context }: RegisterModulesOptions<TContext> = {}) {\n const errors: RemoteModuleRegistrationError[] = [];\n\n if (this.#registrationStatus !== \"none\") {\n throw new Error(\"[squide] The registerRemoteModules function can only be called once.\");\n }\n\n if (remotes.length > 0) {\n runtime.logger.information(`[squide] Found ${remotes.length} remote module${remotes.length !== 1 ? \"s\" : \"\"} to register.`);\n\n this.#setRegistrationStatus(\"registering-modules\");\n\n runtime.eventBus.dispatch(RemoteModulesRegistrationStartedEvent, {\n remoteCount: remotes.length\n } satisfies RemoteModulesRegistrationStartedEventPayload);\n\n let completedCount = 0;\n\n await Promise.allSettled(remotes.map(async (x, index) => {\n const remoteName = x.name;\n const loggerScope = (runtime.logger as RootLogger).startScope(`[squide] ${index + 1}/${remotes.length} Loading module \"${RemoteRegisterModuleName}\" of remote \"${remoteName}\".`);\n const runtimeScope = runtime.startScope(loggerScope);\n\n try {\n const module = await this.#loadRemote(remoteName, RemoteRegisterModuleName);\n\n if (isNil(module.register)) {\n throw new Error(`[squide] A \"register\" function is not available for module \"${RemoteRegisterModuleName}\" of remote \"${remoteName}\". Make sure your remote \"./register.[js,jsx,ts.tsx]\" file export a function named \"register\".`);\n }\n\n loggerScope.debug(\"[squide] Registering module...\");\n\n const optionalDeferredRegistration = await registerModule<TRuntime, TContext, TData>(module.register, runtimeScope as TRuntime, context);\n\n if (isFunction(optionalDeferredRegistration)) {\n this.#deferredRegistrations.push({\n remoteName: x.name,\n index: `${index + 1}/${remotes.length}`,\n fct: optionalDeferredRegistration as DeferredRegistrationFunction\n });\n }\n\n completedCount += 1;\n\n loggerScope.information(\"[squide] Successfully registered remote module.\", {\n style: {\n color: \"green\"\n }\n });\n\n loggerScope.end({\n labelStyle: {\n color: \"green\"\n }\n });\n } catch (error: unknown) {\n loggerScope\n .withText(\"[squide] An error occured while registering the remote module.\")\n .withError(error as Error)\n .error();\n\n loggerScope.end({\n labelStyle: {\n color: \"red\"\n }\n });\n\n errors.push(\n new RemoteModuleRegistrationError(\n `An error occured while registering module \"${RemoteRegisterModuleName}\" of remote \"${remoteName}\".`,\n remoteName,\n RemoteRegisterModuleName,\n { cause: error }\n )\n );\n }\n }));\n\n if (errors.length > 0) {\n errors.forEach(x => {\n runtime.eventBus.dispatch(RemoteModuleRegistrationFailedEvent, x);\n });\n }\n\n // Must be dispatched before updating the registration status to ensure bootstrapping events sequencing.\n runtime.eventBus.dispatch(RemoteModulesRegistrationCompletedEvent, {\n remoteCount: completedCount\n } satisfies RemoteModulesRegistrationCompletedEventPayload);\n\n this.#setRegistrationStatus(this.#deferredRegistrations.length > 0 ? \"modules-registered\" : \"ready\");\n\n // After introducting the \"setRegistrationStatus\" method, TypeScript seems to think that the only possible\n // values for registrationStatus is \"none\" and now complains about the lack of overlapping between \"none\" and \"ready\".\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (this.#registrationStatus === \"ready\") {\n this.#logSharedScope(runtime.logger);\n }\n } else {\n // There's no modules to register, it can be considered as ready.\n this.#setRegistrationStatus(\"ready\");\n }\n\n return errors;\n }\n\n async registerDeferredRegistrations<TRuntime extends Runtime = Runtime, TData = unknown>(runtime: TRuntime, data?: TData) {\n const errors: RemoteModuleRegistrationError[] = [];\n\n if (this.#registrationStatus === \"ready\" && this.#deferredRegistrations.length === 0) {\n // No deferred registrations were returned by the remote modules, skip this phase.\n return errors;\n }\n\n if (this.#registrationStatus === \"none\" || this.#registrationStatus === \"registering-modules\") {\n throw new Error(\"[squide] The registerDeferredRegistrations function can only be called once the remote modules are registered.\");\n }\n\n if (this.#registrationStatus !== \"modules-registered\") {\n throw new Error(\"[squide] The registerDeferredRegistrations function can only be called once.\");\n }\n\n this.#setRegistrationStatus(\"registering-deferred-registration\");\n\n runtime.eventBus.dispatch(RemoteModulesDeferredRegistrationStartedEvent, {\n registrationCount: this.#deferredRegistrations.length\n } satisfies RemoteModulesDeferredRegistrationStartedEventPayload);\n\n let completedCount = 0;\n\n await Promise.allSettled(this.#deferredRegistrations.map(async ({ remoteName, index, fct: deferredRegister }) => {\n const loggerScope = (runtime.logger as RootLogger).startScope(`[squide] ${index} Registering the deferred registrations for module \"${RemoteRegisterModuleName}\" of remote \"${remoteName}\".`);\n const runtimeScope = runtime.startScope(loggerScope);\n\n loggerScope\n .withText(\"Data:\")\n .withObject(data)\n .debug();\n\n try {\n await deferredRegister(runtimeScope, data, \"register\");\n\n completedCount += 1;\n } catch (error: unknown) {\n loggerScope\n .withText(\"[squide] An error occured while registering the deferred registrations.\")\n .withError(error as Error)\n .error();\n\n loggerScope.end({\n labelStyle: {\n color: \"red\"\n }\n });\n\n errors.push(\n new RemoteModuleRegistrationError(\n `An error occured while registering the deferred registrations for module \"${RemoteRegisterModuleName}\" of remote \"${remoteName}\".`,\n remoteName,\n RemoteRegisterModuleName,\n { cause: error }\n )\n );\n }\n\n loggerScope.information(\"[squide] Successfully registered deferred registrations.\", {\n style: {\n color: \"green\"\n }\n });\n\n loggerScope.end({\n labelStyle: {\n color: \"green\"\n }\n });\n }));\n\n if (errors.length > 0) {\n errors.forEach(x => {\n runtime.eventBus.dispatch(RemoteModuleDeferredRegistrationFailedEvent, x);\n });\n }\n\n // Must be dispatched before updating the registration status to ensure bootstrapping events sequencing.\n runtime.eventBus.dispatch(RemoteModulesDeferredRegistrationCompletedEvent, {\n registrationCount: completedCount\n } satisfies RemoteModulesDeferredRegistrationCompletedEventPayload);\n\n this.#setRegistrationStatus(\"ready\");\n this.#logSharedScope(runtime.logger);\n\n return errors;\n }\n\n async updateDeferredRegistrations<TRuntime extends Runtime = Runtime, TData = unknown>(runtime: TRuntime, data?: TData) {\n const errors: RemoteModuleRegistrationError[] = [];\n\n if (this.#registrationStatus !== \"ready\") {\n throw new Error(\"[squide] The updateDeferredRegistrations function can only be called once the remote modules are ready.\");\n }\n\n runtime.eventBus.dispatch(RemoteModulesDeferredRegistrationsUpdateStartedEvent, {\n registrationCount: this.#deferredRegistrations.length\n } satisfies RemoteModulesDeferredRegistrationsUpdateStartedEventPayload);\n\n let completedCount = 0;\n\n await Promise.allSettled(this.#deferredRegistrations.map(async ({ remoteName, index, fct: deferredRegister }) => {\n const loggerScope = (runtime.logger as RootLogger).startScope(`[squide] ${index} Updating the deferred registrations for module \"${RemoteRegisterModuleName}\" of remote \"${remoteName}\".`);\n const runtimeScope = runtime.startScope(loggerScope);\n\n loggerScope\n .withText(\"Data:\")\n .withObject(data)\n .debug();\n\n try {\n await deferredRegister(runtimeScope, data, \"update\");\n\n completedCount += 1;\n } catch (error: unknown) {\n loggerScope\n .withText(\"[squide] An error occured while updating the deferred registrations.\")\n .withError(error as Error)\n .error();\n\n loggerScope.end({\n labelStyle: {\n color: \"red\"\n }\n });\n\n errors.push(\n new RemoteModuleRegistrationError(\n `An error occured while updating the deferred registrations for module \"${RemoteRegisterModuleName}\" of remote \"${remoteName}\".`,\n remoteName,\n RemoteRegisterModuleName,\n { cause: error }\n )\n );\n }\n\n loggerScope.information(\"[squide] Successfully updated the deferred registrations.\", {\n style: {\n color: \"green\"\n }\n });\n\n loggerScope.end({\n labelStyle: {\n color: \"green\"\n }\n });\n }));\n\n if (errors.length > 0) {\n errors.forEach(x => {\n runtime.eventBus.dispatch(RemoteModuleDeferredRegistrationUpdateFailedEvent, x);\n });\n }\n\n runtime.eventBus.dispatch(RemoteModulesDeferredRegistrationsUpdateCompletedEvent, {\n registrationCount: completedCount\n } satisfies RemoteModulesDeferredRegistrationsUpdateCompletedEventPayload);\n\n return errors;\n }\n\n registerStatusChangedListener(callback: ModuleRegistrationStatusChangedListener) {\n this.#statusChangedListeners.add(callback);\n }\n\n removeStatusChangedListener(callback: ModuleRegistrationStatusChangedListener) {\n this.#statusChangedListeners.delete(callback);\n }\n\n setAsReady() {\n if (this.#registrationStatus !== \"none\") {\n throw new Error(`[squide] Cannot set a module registry as \"ready\" when registrations are already in progress. The registry current status is \"${this.#registrationStatus}\".`);\n }\n\n this.#setRegistrationStatus(\"ready\");\n }\n\n #setRegistrationStatus(status: ModuleRegistrationStatus) {\n this.#registrationStatus = status;\n\n this.#statusChangedListeners.forEach(x => {\n x();\n });\n }\n\n get registrationStatus() {\n return this.#registrationStatus;\n }\n}\n\nexport function toRemoteModuleDefinitions(remotes: (RemoteDefinition | undefined)[]): ModuleDefinition[] {\n return remotes\n .filter((x): x is RemoteDefinition => Boolean(x))\n .map(x => ({\n definition: x,\n registryId: RemoteModuleRegistryId\n }));\n}\n"],"names":["ModuleRegistrationError","registerModule","isFunction","isNil","RemoteModuleRegistryId","RemoteModulesRegistrationStartedEvent","RemoteModulesRegistrationCompletedEvent","RemoteModuleRegistrationFailedEvent","RemoteModulesDeferredRegistrationStartedEvent","RemoteModulesDeferredRegistrationCompletedEvent","RemoteModuleDeferredRegistrationFailedEvent","RemoteModulesDeferredRegistrationsUpdateStartedEvent","RemoteModulesDeferredRegistrationsUpdateCompletedEvent","RemoteModuleDeferredRegistrationUpdateFailedEvent","RemoteRegisterModuleName","RemoteModuleRegistrationError","message","remoteName","moduleName","options","RemoteModuleRegistry","Set","loadRemote","logger","__webpack_share_scopes__","runtime","remotes","context","errors","Error","completedCount","Promise","x","index","loggerScope","runtimeScope","module","optionalDeferredRegistration","error","data","deferredRegister","callback","status","toRemoteModuleDefinitions","Boolean"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RemoteModuleRegistry.js","sources":["../src/RemoteModuleRegistry.ts"],"sourcesContent":["import { ModuleDefinition, ModuleRegistrationError, registerModule, type DeferredRegistrationFunction, type ModuleRegistrationStatus, type ModuleRegistrationStatusChangedListener, type ModuleRegistry, type RegisterModulesOptions, type Runtime } from \"@squide/core\";\nimport { isFunction, isNil } from \"@squide/core/internal\";\nimport type { Logger, RootLogger } from \"@workleap/logging\";\nimport type { RemoteDefinition } from \"./RemoteDefinition.ts\";\n\nexport const RemoteModuleRegistryId = \"remote\";\n\nexport const RemoteModulesRegistrationStartedEvent = \"squide-remote-modules-registration-started\";\nexport const RemoteModulesRegistrationCompletedEvent = \"squide-remote-modules-registration-completed\";\nexport const RemoteModuleRegistrationFailedEvent = \"squide-remote-module-registration-failed\";\n\nexport const RemoteModulesDeferredRegistrationStartedEvent = \"squide-remote-modules-deferred-registration-started\";\nexport const RemoteModulesDeferredRegistrationCompletedEvent = \"squide-remote-modules-deferred-registration-completed\";\nexport const RemoteModuleDeferredRegistrationFailedEvent = \"squide-some-remote-module-deferred-registration-failed\";\n\nexport const RemoteModulesDeferredRegistrationsUpdateStartedEvent = \"squide-remote-modules-deferred-registrations-update-started\";\nexport const RemoteModulesDeferredRegistrationsUpdateCompletedEvent = \"squide-remote-modules-deferred-registrations-update-completed-started\";\nexport const RemoteModuleDeferredRegistrationUpdateFailedEvent = \"squide-remote-module-deferred-registration-update-failed\";\n\nexport interface RemoteModulesRegistrationStartedEventPayload {\n remoteCount: number;\n}\n\nexport interface RemoteModulesRegistrationCompletedEventPayload {\n remoteCount: number;\n}\n\nexport interface RemoteModulesDeferredRegistrationStartedEventPayload {\n registrationCount: number;\n}\n\nexport interface RemoteModulesDeferredRegistrationCompletedEventPayload {\n registrationCount: number;\n}\n\nexport interface RemoteModulesDeferredRegistrationsUpdateStartedEventPayload {\n registrationCount: number;\n}\n\nexport interface RemoteModulesDeferredRegistrationsUpdateCompletedEventPayload {\n registrationCount: number;\n}\n\ndeclare module \"@squide/core\" {\n interface EventMap {\n \"squide-remote-modules-registration-started\": RemoteModulesRegistrationStartedEventPayload;\n \"squide-remote-modules-registration-completed\": RemoteModulesRegistrationCompletedEventPayload;\n \"squide-remote-module-registration-failed\": ModuleRegistrationError;\n \"squide-remote-modules-deferred-registration-started\": RemoteModulesDeferredRegistrationStartedEventPayload;\n \"squide-remote-modules-deferred-registration-completed\": RemoteModulesDeferredRegistrationCompletedEventPayload;\n \"squide-some-remote-module-deferred-registration-failed\": ModuleRegistrationError;\n \"squide-remote-modules-deferred-registrations-update-started\": RemoteModulesDeferredRegistrationsUpdateStartedEventPayload;\n \"squide-remote-modules-deferred-registrations-update-completed-started\": RemoteModulesDeferredRegistrationsUpdateCompletedEventPayload;\n \"squide-remote-module-deferred-registration-update-failed\": ModuleRegistrationError;\n }\n}\n\nconst RemoteRegisterModuleName = \"register\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype LoadRemoteFunction = (remoteName: string, moduleName: string) => Promise<any>;\n\ninterface DeferredRegistration<TRuntime extends Runtime = Runtime, TData = unknown> {\n remoteName: string;\n index: string;\n fct: DeferredRegistrationFunction<TRuntime, TData>;\n}\n\nexport class RemoteModuleRegistrationError extends ModuleRegistrationError {\n readonly #remoteName: string;\n readonly #moduleName: string;\n\n constructor(message: string, remoteName: string, moduleName: string, options?: ErrorOptions) {\n super(message, options);\n\n this.#remoteName = remoteName;\n this.#moduleName = moduleName;\n }\n\n get remoteName() {\n return this.#remoteName;\n }\n\n get moduleName() {\n return this.#moduleName;\n }\n}\n\nexport class RemoteModuleRegistry implements ModuleRegistry {\n #registrationStatus: ModuleRegistrationStatus = \"none\";\n\n readonly #deferredRegistrations: DeferredRegistration[] = [];\n readonly #loadRemote: LoadRemoteFunction;\n readonly #statusChangedListeners = new Set<ModuleRegistrationStatusChangedListener>();\n\n constructor(loadRemote: LoadRemoteFunction) {\n this.#loadRemote = loadRemote;\n }\n\n get id() {\n return RemoteModuleRegistryId;\n }\n\n #logSharedScope(logger: Logger) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (__webpack_share_scopes__) {\n logger.debug(\n \"[squide] Module Federation shared scope is available:\",\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n __webpack_share_scopes__.default\n );\n }\n }\n\n async registerModules<TRuntime extends Runtime = Runtime, TContext = unknown, TData = unknown>(runtime: TRuntime, remotes: RemoteDefinition[], { context }: RegisterModulesOptions<TContext> = {}) {\n const errors: RemoteModuleRegistrationError[] = [];\n\n if (this.#registrationStatus !== \"none\") {\n throw new Error(\"[squide] The registerRemoteModules function can only be called once.\");\n }\n\n if (remotes.length > 0) {\n runtime.logger.information(`[squide] Found ${remotes.length} remote module${remotes.length !== 1 ? \"s\" : \"\"} to register.`);\n\n this.#setRegistrationStatus(\"registering-modules\");\n\n runtime.eventBus.dispatch(RemoteModulesRegistrationStartedEvent, {\n remoteCount: remotes.length\n } satisfies RemoteModulesRegistrationStartedEventPayload);\n\n let completedCount = 0;\n\n await Promise.allSettled(remotes.map(async (x, index) => {\n const remoteName = x.name;\n const loggerScope = (runtime.logger as RootLogger).startScope(`[squide] ${index + 1}/${remotes.length} Loading module \"${RemoteRegisterModuleName}\" of remote \"${remoteName}\".`);\n const runtimeScope = runtime.startScope(loggerScope);\n\n try {\n const module = await this.#loadRemote(remoteName, RemoteRegisterModuleName);\n\n if (isNil(module.register)) {\n throw new Error(`[squide] A \"register\" function is not available for module \"${RemoteRegisterModuleName}\" of remote \"${remoteName}\". Make sure your remote \"./register.[js,jsx,ts.tsx]\" file export a function named \"register\".`);\n }\n\n loggerScope.debug(\"[squide] Registering module...\");\n\n const optionalDeferredRegistration = await registerModule<TRuntime, TContext, TData>(module.register, runtimeScope as TRuntime, context);\n\n if (isFunction(optionalDeferredRegistration)) {\n this.#deferredRegistrations.push({\n remoteName: x.name,\n index: `${index + 1}/${remotes.length}`,\n fct: optionalDeferredRegistration as DeferredRegistrationFunction\n });\n }\n\n completedCount += 1;\n\n loggerScope.information(\"[squide] Successfully registered remote module.\", {\n style: {\n color: \"green\"\n }\n });\n\n loggerScope.end({\n labelStyle: {\n color: \"green\"\n }\n });\n } catch (error: unknown) {\n loggerScope\n .withText(\"[squide] An error occured while registering the remote module.\")\n .withError(error as Error)\n .error();\n\n loggerScope.end({\n labelStyle: {\n color: \"red\"\n }\n });\n\n errors.push(\n new RemoteModuleRegistrationError(\n `An error occured while registering module \"${RemoteRegisterModuleName}\" of remote \"${remoteName}\".`,\n remoteName,\n RemoteRegisterModuleName,\n { cause: error }\n )\n );\n }\n }));\n\n if (errors.length > 0) {\n errors.forEach(x => {\n runtime.eventBus.dispatch(RemoteModuleRegistrationFailedEvent, x);\n });\n }\n\n // Must be dispatched before updating the registration status to ensure bootstrapping events sequencing.\n runtime.eventBus.dispatch(RemoteModulesRegistrationCompletedEvent, {\n remoteCount: completedCount\n } satisfies RemoteModulesRegistrationCompletedEventPayload);\n\n this.#setRegistrationStatus(this.#deferredRegistrations.length > 0 ? \"modules-registered\" : \"ready\");\n\n // After introducting the \"setRegistrationStatus\" method, TypeScript seems to think that the only possible\n // values for registrationStatus is \"none\" and now complains about the lack of overlapping between \"none\" and \"ready\".\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (this.#registrationStatus === \"ready\") {\n this.#logSharedScope(runtime.logger);\n }\n } else {\n // There's no modules to register, it can be considered as ready.\n this.#setRegistrationStatus(\"ready\");\n }\n\n return errors;\n }\n\n async registerDeferredRegistrations<TRuntime extends Runtime = Runtime, TData = unknown>(runtime: TRuntime, data?: TData) {\n const errors: RemoteModuleRegistrationError[] = [];\n\n if (this.#registrationStatus === \"ready\" && this.#deferredRegistrations.length === 0) {\n // No deferred registrations were returned by the remote modules, skip this phase.\n return errors;\n }\n\n if (this.#registrationStatus === \"none\" || this.#registrationStatus === \"registering-modules\") {\n throw new Error(\"[squide] The registerDeferredRegistrations function can only be called once the remote modules are registered.\");\n }\n\n if (this.#registrationStatus !== \"modules-registered\") {\n throw new Error(\"[squide] The registerDeferredRegistrations function can only be called once.\");\n }\n\n this.#setRegistrationStatus(\"registering-deferred-registration\");\n\n runtime.eventBus.dispatch(RemoteModulesDeferredRegistrationStartedEvent, {\n registrationCount: this.#deferredRegistrations.length\n } satisfies RemoteModulesDeferredRegistrationStartedEventPayload);\n\n let completedCount = 0;\n\n await Promise.allSettled(this.#deferredRegistrations.map(async ({ remoteName, index, fct: deferredRegister }) => {\n const loggerScope = (runtime.logger as RootLogger).startScope(`[squide] ${index} Registering the deferred registrations for module \"${RemoteRegisterModuleName}\" of remote \"${remoteName}\".`);\n const runtimeScope = runtime.startScope(loggerScope);\n\n loggerScope\n .withText(\"Data:\")\n .withObject(data)\n .debug();\n\n try {\n await deferredRegister(runtimeScope, data, \"register\");\n\n completedCount += 1;\n } catch (error: unknown) {\n loggerScope\n .withText(\"[squide] An error occured while registering the deferred registrations.\")\n .withError(error as Error)\n .error();\n\n loggerScope.end({\n labelStyle: {\n color: \"red\"\n }\n });\n\n errors.push(\n new RemoteModuleRegistrationError(\n `An error occured while registering the deferred registrations for module \"${RemoteRegisterModuleName}\" of remote \"${remoteName}\".`,\n remoteName,\n RemoteRegisterModuleName,\n { cause: error }\n )\n );\n }\n\n loggerScope.information(\"[squide] Successfully registered deferred registrations.\", {\n style: {\n color: \"green\"\n }\n });\n\n loggerScope.end({\n labelStyle: {\n color: \"green\"\n }\n });\n }));\n\n if (errors.length > 0) {\n errors.forEach(x => {\n runtime.eventBus.dispatch(RemoteModuleDeferredRegistrationFailedEvent, x);\n });\n }\n\n // Must be dispatched before updating the registration status to ensure bootstrapping events sequencing.\n runtime.eventBus.dispatch(RemoteModulesDeferredRegistrationCompletedEvent, {\n registrationCount: completedCount\n } satisfies RemoteModulesDeferredRegistrationCompletedEventPayload);\n\n this.#setRegistrationStatus(\"ready\");\n this.#logSharedScope(runtime.logger);\n\n return errors;\n }\n\n async updateDeferredRegistrations<TRuntime extends Runtime = Runtime, TData = unknown>(runtime: TRuntime, data?: TData) {\n const errors: RemoteModuleRegistrationError[] = [];\n\n if (this.#registrationStatus !== \"ready\") {\n throw new Error(\"[squide] The updateDeferredRegistrations function can only be called once the remote modules are ready.\");\n }\n\n runtime.eventBus.dispatch(RemoteModulesDeferredRegistrationsUpdateStartedEvent, {\n registrationCount: this.#deferredRegistrations.length\n } satisfies RemoteModulesDeferredRegistrationsUpdateStartedEventPayload);\n\n let completedCount = 0;\n\n await Promise.allSettled(this.#deferredRegistrations.map(async ({ remoteName, index, fct: deferredRegister }) => {\n const loggerScope = (runtime.logger as RootLogger).startScope(`[squide] ${index} Updating the deferred registrations for module \"${RemoteRegisterModuleName}\" of remote \"${remoteName}\".`);\n const runtimeScope = runtime.startScope(loggerScope);\n\n loggerScope\n .withText(\"Data:\")\n .withObject(data)\n .debug();\n\n try {\n await deferredRegister(runtimeScope, data, \"update\");\n\n completedCount += 1;\n } catch (error: unknown) {\n loggerScope\n .withText(\"[squide] An error occured while updating the deferred registrations.\")\n .withError(error as Error)\n .error();\n\n loggerScope.end({\n labelStyle: {\n color: \"red\"\n }\n });\n\n errors.push(\n new RemoteModuleRegistrationError(\n `An error occured while updating the deferred registrations for module \"${RemoteRegisterModuleName}\" of remote \"${remoteName}\".`,\n remoteName,\n RemoteRegisterModuleName,\n { cause: error }\n )\n );\n }\n\n loggerScope.information(\"[squide] Successfully updated the deferred registrations.\", {\n style: {\n color: \"green\"\n }\n });\n\n loggerScope.end({\n labelStyle: {\n color: \"green\"\n }\n });\n }));\n\n if (errors.length > 0) {\n errors.forEach(x => {\n runtime.eventBus.dispatch(RemoteModuleDeferredRegistrationUpdateFailedEvent, x);\n });\n }\n\n runtime.eventBus.dispatch(RemoteModulesDeferredRegistrationsUpdateCompletedEvent, {\n registrationCount: completedCount\n } satisfies RemoteModulesDeferredRegistrationsUpdateCompletedEventPayload);\n\n return errors;\n }\n\n registerStatusChangedListener(callback: ModuleRegistrationStatusChangedListener) {\n this.#statusChangedListeners.add(callback);\n }\n\n removeStatusChangedListener(callback: ModuleRegistrationStatusChangedListener) {\n this.#statusChangedListeners.delete(callback);\n }\n\n setAsReady() {\n if (this.#registrationStatus !== \"none\") {\n throw new Error(`[squide] Cannot set a module registry as \"ready\" when registrations are already in progress. The registry current status is \"${this.#registrationStatus}\".`);\n }\n\n this.#setRegistrationStatus(\"ready\");\n }\n\n #setRegistrationStatus(status: ModuleRegistrationStatus) {\n this.#registrationStatus = status;\n\n this.#statusChangedListeners.forEach(x => {\n x();\n });\n }\n\n get registrationStatus() {\n return this.#registrationStatus;\n }\n}\n\nexport function toRemoteModuleDefinitions(remotes: (RemoteDefinition | undefined)[]): ModuleDefinition[] {\n return remotes\n .filter((x): x is RemoteDefinition => Boolean(x))\n .map(x => ({\n definition: x,\n registryId: RemoteModuleRegistryId\n }));\n}\n"],"names":["ModuleRegistrationError","registerModule","isFunction","isNil","RemoteModuleRegistryId","RemoteModulesRegistrationStartedEvent","RemoteModulesRegistrationCompletedEvent","RemoteModuleRegistrationFailedEvent","RemoteModulesDeferredRegistrationStartedEvent","RemoteModulesDeferredRegistrationCompletedEvent","RemoteModuleDeferredRegistrationFailedEvent","RemoteModulesDeferredRegistrationsUpdateStartedEvent","RemoteModulesDeferredRegistrationsUpdateCompletedEvent","RemoteModuleDeferredRegistrationUpdateFailedEvent","RemoteRegisterModuleName","RemoteModuleRegistrationError","message","remoteName","moduleName","options","RemoteModuleRegistry","Set","loadRemote","logger","__webpack_share_scopes__","runtime","remotes","context","errors","Error","completedCount","Promise","x","index","loggerScope","runtimeScope","module","optionalDeferredRegistration","error","data","deferredRegister","callback","status","toRemoteModuleDefinitions","Boolean"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
import { initializeFirefly } from "./initializeFirefly.js";
|
|
2
|
-
import { ModuleFederationPluginName, getModuleFederationPlugin } from "./ModuleFederationPlugin.js";
|
|
3
|
-
import { RemoteModuleDeferredRegistrationFailedEvent, RemoteModuleDeferredRegistrationUpdateFailedEvent, RemoteModuleRegistrationFailedEvent, RemoteModuleRegistryId, RemoteModulesDeferredRegistrationCompletedEvent, RemoteModulesDeferredRegistrationStartedEvent, RemoteModulesDeferredRegistrationsUpdateCompletedEvent, RemoteModulesDeferredRegistrationsUpdateStartedEvent, RemoteModulesRegistrationCompletedEvent, RemoteModulesRegistrationStartedEvent } from "./RemoteModuleRegistry.js";
|
|
4
1
|
|
|
5
|
-
;// CONCATENATED MODULE: external "./initializeFirefly.js"
|
|
6
2
|
|
|
7
|
-
;// CONCATENATED MODULE: external "./ModuleFederationPlugin.js"
|
|
8
3
|
|
|
9
|
-
;// CONCATENATED MODULE: external "./RemoteModuleRegistry.js"
|
|
10
4
|
|
|
11
|
-
;// CONCATENATED MODULE: ./src/index.ts
|
|
12
5
|
|
|
13
6
|
|
|
14
7
|
|
|
15
|
-
|
|
16
|
-
export { ModuleFederationPluginName,
|
|
8
|
+
export { initializeFirefly } from "./initializeFirefly.js";
|
|
9
|
+
export { ModuleFederationPluginName, getModuleFederationPlugin } from "./ModuleFederationPlugin.js";
|
|
10
|
+
export { RemoteModuleDeferredRegistrationFailedEvent, RemoteModuleDeferredRegistrationUpdateFailedEvent, RemoteModuleRegistrationFailedEvent, RemoteModuleRegistryId, RemoteModulesDeferredRegistrationCompletedEvent, RemoteModulesDeferredRegistrationStartedEvent, RemoteModulesDeferredRegistrationsUpdateCompletedEvent, RemoteModulesDeferredRegistrationsUpdateStartedEvent, RemoteModulesRegistrationCompletedEvent, RemoteModulesRegistrationStartedEvent } from "./RemoteModuleRegistry.js";
|
|
17
11
|
|
|
18
12
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["export { initializeFirefly, type InitializeFireflyOptions } from \"./initializeFirefly.ts\";\nexport { getModuleFederationPlugin, ModuleFederationPluginName, type ModuleFederationPlugin } from \"./ModuleFederationPlugin.ts\";\nexport type { RemoteDefinition } from \"./RemoteDefinition.ts\";\nexport {\n RemoteModuleDeferredRegistrationFailedEvent,\n RemoteModuleDeferredRegistrationUpdateFailedEvent,\n RemoteModuleRegistrationFailedEvent,\n RemoteModuleRegistryId,\n RemoteModulesDeferredRegistrationCompletedEvent,\n RemoteModulesDeferredRegistrationStartedEvent,\n RemoteModulesDeferredRegistrationsUpdateCompletedEvent,\n RemoteModulesDeferredRegistrationsUpdateStartedEvent,\n RemoteModulesRegistrationCompletedEvent,\n RemoteModulesRegistrationStartedEvent,\n type RemoteModuleRegistrationError,\n type RemoteModulesDeferredRegistrationCompletedEventPayload,\n type RemoteModulesDeferredRegistrationStartedEventPayload,\n type RemoteModulesDeferredRegistrationsUpdateCompletedEventPayload,\n type RemoteModulesDeferredRegistrationsUpdateStartedEventPayload,\n type RemoteModulesRegistrationCompletedEventPayload,\n type RemoteModulesRegistrationStartedEventPayload\n} from \"./RemoteModuleRegistry.ts\";\n\n"],"names":["initializeFirefly","getModuleFederationPlugin","ModuleFederationPluginName","RemoteModuleDeferredRegistrationFailedEvent","RemoteModuleDeferredRegistrationUpdateFailedEvent","RemoteModuleRegistrationFailedEvent","RemoteModuleRegistryId","RemoteModulesDeferredRegistrationCompletedEvent","RemoteModulesDeferredRegistrationStartedEvent","RemoteModulesDeferredRegistrationsUpdateCompletedEvent","RemoteModulesDeferredRegistrationsUpdateStartedEvent","RemoteModulesRegistrationCompletedEvent","RemoteModulesRegistrationStartedEvent"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["export { initializeFirefly, type InitializeFireflyOptions } from \"./initializeFirefly.ts\";\nexport { getModuleFederationPlugin, ModuleFederationPluginName, type ModuleFederationPlugin } from \"./ModuleFederationPlugin.ts\";\nexport type { RemoteDefinition } from \"./RemoteDefinition.ts\";\nexport {\n RemoteModuleDeferredRegistrationFailedEvent,\n RemoteModuleDeferredRegistrationUpdateFailedEvent,\n RemoteModuleRegistrationFailedEvent,\n RemoteModuleRegistryId,\n RemoteModulesDeferredRegistrationCompletedEvent,\n RemoteModulesDeferredRegistrationStartedEvent,\n RemoteModulesDeferredRegistrationsUpdateCompletedEvent,\n RemoteModulesDeferredRegistrationsUpdateStartedEvent,\n RemoteModulesRegistrationCompletedEvent,\n RemoteModulesRegistrationStartedEvent,\n type RemoteModuleRegistrationError,\n type RemoteModulesDeferredRegistrationCompletedEventPayload,\n type RemoteModulesDeferredRegistrationStartedEventPayload,\n type RemoteModulesDeferredRegistrationsUpdateCompletedEventPayload,\n type RemoteModulesDeferredRegistrationsUpdateStartedEventPayload,\n type RemoteModulesRegistrationCompletedEventPayload,\n type RemoteModulesRegistrationStartedEventPayload\n} from \"./RemoteModuleRegistry.ts\";\n\n"],"names":["initializeFirefly","getModuleFederationPlugin","ModuleFederationPluginName","RemoteModuleDeferredRegistrationFailedEvent","RemoteModuleDeferredRegistrationUpdateFailedEvent","RemoteModuleRegistrationFailedEvent","RemoteModuleRegistryId","RemoteModulesDeferredRegistrationCompletedEvent","RemoteModulesDeferredRegistrationStartedEvent","RemoteModulesDeferredRegistrationsUpdateCompletedEvent","RemoteModulesDeferredRegistrationsUpdateStartedEvent","RemoteModulesRegistrationCompletedEvent","RemoteModulesRegistrationStartedEvent"],"mappings":";;;AAA0F;AACuC;AAoB9F"}
|
|
@@ -2,13 +2,9 @@ import { initializeFirefly } from "@squide/firefly";
|
|
|
2
2
|
import { ModuleFederationPlugin } from "./ModuleFederationPlugin.js";
|
|
3
3
|
import { toRemoteModuleDefinitions } from "./RemoteModuleRegistry.js";
|
|
4
4
|
|
|
5
|
-
;// CONCATENATED MODULE: external "@squide/firefly"
|
|
6
5
|
|
|
7
|
-
;// CONCATENATED MODULE: external "./ModuleFederationPlugin.js"
|
|
8
6
|
|
|
9
|
-
;// CONCATENATED MODULE: external "./RemoteModuleRegistry.js"
|
|
10
7
|
|
|
11
|
-
;// CONCATENATED MODULE: ./src/initializeFirefly.ts
|
|
12
8
|
|
|
13
9
|
|
|
14
10
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initializeFirefly.js","sources":["../src/initializeFirefly.ts"],"sourcesContent":["import { FireflyRuntime, initializeFirefly as baseInitializeFirefly, type InitializeFireflyOptions as BaseInitializeFireflyOptions } from \"@squide/firefly\";\nimport { ModuleFederationPlugin } from \"./ModuleFederationPlugin.ts\";\nimport { RemoteDefinition } from \"./RemoteDefinition.ts\";\nimport { toRemoteModuleDefinitions } from \"./RemoteModuleRegistry.ts\";\n\nexport interface InitializeFireflyOptions<TRuntime extends FireflyRuntime, TContext = unknown, TData = unknown> extends BaseInitializeFireflyOptions<TRuntime, TContext, TData> {\n remotes?: (RemoteDefinition | undefined)[];\n}\n\nexport function initializeFirefly<TContext = unknown, TData = unknown>(options: InitializeFireflyOptions<FireflyRuntime, TContext, TData> = {}) {\n const {\n remotes = [],\n moduleDefinitions = [],\n plugins = [],\n ...rest\n } = options;\n\n return baseInitializeFirefly({\n moduleDefinitions: [\n ...moduleDefinitions,\n ...toRemoteModuleDefinitions(remotes)\n ],\n plugins: [\n x => new ModuleFederationPlugin(x),\n ...plugins\n ],\n ...rest\n });\n}\n"],"names":["initializeFirefly","baseInitializeFirefly","ModuleFederationPlugin","toRemoteModuleDefinitions","options","remotes","moduleDefinitions","plugins","rest","x"],"mappings":"
|
|
1
|
+
{"version":3,"file":"initializeFirefly.js","sources":["../src/initializeFirefly.ts"],"sourcesContent":["import { FireflyRuntime, initializeFirefly as baseInitializeFirefly, type InitializeFireflyOptions as BaseInitializeFireflyOptions } from \"@squide/firefly\";\nimport { ModuleFederationPlugin } from \"./ModuleFederationPlugin.ts\";\nimport { RemoteDefinition } from \"./RemoteDefinition.ts\";\nimport { toRemoteModuleDefinitions } from \"./RemoteModuleRegistry.ts\";\n\nexport interface InitializeFireflyOptions<TRuntime extends FireflyRuntime, TContext = unknown, TData = unknown> extends BaseInitializeFireflyOptions<TRuntime, TContext, TData> {\n remotes?: (RemoteDefinition | undefined)[];\n}\n\nexport function initializeFirefly<TContext = unknown, TData = unknown>(options: InitializeFireflyOptions<FireflyRuntime, TContext, TData> = {}) {\n const {\n remotes = [],\n moduleDefinitions = [],\n plugins = [],\n ...rest\n } = options;\n\n return baseInitializeFirefly({\n moduleDefinitions: [\n ...moduleDefinitions,\n ...toRemoteModuleDefinitions(remotes)\n ],\n plugins: [\n x => new ModuleFederationPlugin(x),\n ...plugins\n ],\n ...rest\n });\n}\n"],"names":["initializeFirefly","baseInitializeFirefly","ModuleFederationPlugin","toRemoteModuleDefinitions","options","remotes","moduleDefinitions","plugins","rest","x"],"mappings":";;;;;;;AAA4J;AACvF;AAEC;AAM/D,SAASA,mCAAiBA,CAAsCI,UAAqE,CAAC,CAAC;IAC1I,MAAM,EACFC,UAAU,EAAE,EACZC,oBAAoB,EAAE,EACtBC,UAAU,EAAE,EACZ,GAAGC,MACN,GAAGJ;IAEJ,OAAOH,iBAAqBA,CAAC;QACzB,mBAAmB;eACZK;eACAH,yBAAyBA,CAACE;SAChC;QACD,SAAS;YACLI,CAAAA,IAAK,IAAIP,sBAAsBA,CAACO;eAC7BF;SACN;QACD,GAAGC,IAAI;IACX;AACJ"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// The require scope
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
|
|
4
|
+
// webpack/runtime/has_own_property
|
|
5
|
+
(() => {
|
|
6
|
+
__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
7
|
+
})();
|
|
8
|
+
|
|
9
|
+
export { __webpack_require__ };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=rslib-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rslib-runtime.js","sources":["webpack/runtime/has_own_property"],"sourcesContent":["__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))"],"names":[],"mappings":";;;;;AAAA,wF"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@squide/firefly-module-federation",
|
|
3
3
|
"author": "Workleap",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "2.0.0",
|
|
5
5
|
"description": "Add support for Module Federation to Squide firefly.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"repository": {
|
|
@@ -27,38 +27,39 @@
|
|
|
27
27
|
"CHANGELOG.md"
|
|
28
28
|
],
|
|
29
29
|
"peerDependencies": {
|
|
30
|
-
"@opentelemetry/api": "^1.9.
|
|
31
|
-
"@tanstack/react-query": "^5.
|
|
32
|
-
"msw": "^2.12.
|
|
30
|
+
"@opentelemetry/api": "^1.9.1",
|
|
31
|
+
"@tanstack/react-query": "^5.96.0",
|
|
32
|
+
"msw": "^2.12.14",
|
|
33
33
|
"react": "^18.0.0 || ^19.0.0",
|
|
34
34
|
"react-dom": "^18.0.0 || ^19.0.0",
|
|
35
|
-
"react-router": "^7.13.
|
|
35
|
+
"react-router": "^7.13.2"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@module-federation/enhanced": "0.11.4",
|
|
39
|
-
"@rspack/core": "^1.7.
|
|
40
|
-
"@workleap/logging": "^1.3.
|
|
41
|
-
"@squide/core": "^
|
|
42
|
-
"@squide/firefly": "^
|
|
39
|
+
"@rspack/core": "^1.7.11",
|
|
40
|
+
"@workleap/logging": "^1.3.7",
|
|
41
|
+
"@squide/core": "^7.0.0",
|
|
42
|
+
"@squide/firefly": "^17.0.0"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@eslint/js": "9.39.2",
|
|
46
|
-
"@rsbuild/core": "1.7.
|
|
47
|
-
"@rslib/core": "0.
|
|
46
|
+
"@rsbuild/core": "1.7.5",
|
|
47
|
+
"@rslib/core": "0.20.2",
|
|
48
48
|
"@testing-library/react": "16.3.2",
|
|
49
|
+
"@types/node": "25.5.0",
|
|
49
50
|
"@types/react": "19.2.14",
|
|
50
51
|
"@types/react-dom": "19.2.3",
|
|
51
|
-
"@typescript-eslint/parser": "8.
|
|
52
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
53
|
-
"@vitejs/plugin-react": "
|
|
54
|
-
"@workleap/eslint-configs": "
|
|
55
|
-
"@workleap/rslib-configs": "1.1.
|
|
56
|
-
"@workleap/typescript-configs": "
|
|
52
|
+
"@typescript-eslint/parser": "8.58.0",
|
|
53
|
+
"@typescript/native-preview": "7.0.0-dev.20260331.1",
|
|
54
|
+
"@vitejs/plugin-react": "6.0.1",
|
|
55
|
+
"@workleap/eslint-configs": "2.0.1",
|
|
56
|
+
"@workleap/rslib-configs": "1.1.11",
|
|
57
|
+
"@workleap/typescript-configs": "4.0.0",
|
|
57
58
|
"eslint": "9.39.2",
|
|
58
|
-
"happy-dom": "20.8.
|
|
59
|
-
"typescript": "
|
|
59
|
+
"happy-dom": "20.8.9",
|
|
60
|
+
"typescript": "6.0.2",
|
|
60
61
|
"typescript-eslint": "8.54.0",
|
|
61
|
-
"vitest": "4.
|
|
62
|
+
"vitest": "4.1.2"
|
|
62
63
|
},
|
|
63
64
|
"sideEffects": false,
|
|
64
65
|
"scripts": {
|
|
@@ -4,7 +4,7 @@ import { Plugin, RegisterModulesOptions, type Runtime } from "@squide/core";
|
|
|
4
4
|
import { FireflyPlugin, FireflyRuntime } from "@squide/firefly";
|
|
5
5
|
import { ActiveSpan, addProtectedListener, endActiveSpan, getTracer, HoneycombTrackingUnmanagedErrorHandler, startActiveChildSpan, startChildSpan, traceError, type GetSpanFunction } from "@squide/firefly/internal";
|
|
6
6
|
import { RemoteDefinition } from "./RemoteDefinition.ts";
|
|
7
|
-
import { RemoteModuleDeferredRegistrationFailedEvent, RemoteModuleDeferredRegistrationUpdateFailedEvent,
|
|
7
|
+
import { RemoteModuleDeferredRegistrationFailedEvent, RemoteModuleDeferredRegistrationUpdateFailedEvent, RemoteModuleRegistrationFailedEvent, RemoteModuleRegistry, RemoteModuleRegistryId, RemoteModulesDeferredRegistrationCompletedEvent, RemoteModulesDeferredRegistrationStartedEvent, RemoteModulesDeferredRegistrationsUpdateCompletedEvent, RemoteModulesDeferredRegistrationsUpdateStartedEvent, RemoteModulesRegistrationCompletedEvent, RemoteModulesRegistrationStartedEvent } from "./RemoteModuleRegistry.ts";
|
|
8
8
|
|
|
9
9
|
export const ModuleFederationPluginName = "module-federation-plugin";
|
|
10
10
|
|
|
@@ -47,11 +47,11 @@ export class ModuleFederationPlugin extends Plugin<FireflyRuntime> implements Fi
|
|
|
47
47
|
onUnmanagedError(error);
|
|
48
48
|
};
|
|
49
49
|
|
|
50
|
-
addProtectedListener(this._runtime, RemoteModulesRegistrationStartedEvent,
|
|
50
|
+
addProtectedListener(this._runtime, RemoteModulesRegistrationStartedEvent, payload => {
|
|
51
51
|
const bootstrappingSpan = getBootstrappingSpan();
|
|
52
52
|
|
|
53
53
|
const attributes = {
|
|
54
|
-
"app.squide.remote_count":
|
|
54
|
+
"app.squide.remote_count": payload?.remoteCount
|
|
55
55
|
};
|
|
56
56
|
|
|
57
57
|
if (bootstrappingSpan) {
|
|
@@ -66,12 +66,12 @@ export class ModuleFederationPlugin extends Plugin<FireflyRuntime> implements Fi
|
|
|
66
66
|
onError: handleUnmanagedError
|
|
67
67
|
});
|
|
68
68
|
|
|
69
|
-
addProtectedListener(this._runtime, RemoteModulesRegistrationCompletedEvent,
|
|
69
|
+
addProtectedListener(this._runtime, RemoteModulesRegistrationCompletedEvent, payload => {
|
|
70
70
|
const bootstrappingSpan = getBootstrappingSpan();
|
|
71
71
|
|
|
72
72
|
if (bootstrappingSpan) {
|
|
73
73
|
bootstrappingSpan.addEvent("remote-module-registration-completed", {
|
|
74
|
-
"app.squide.remote_count":
|
|
74
|
+
"app.squide.remote_count": payload?.remoteCount
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
77
|
|
|
@@ -84,21 +84,19 @@ export class ModuleFederationPlugin extends Plugin<FireflyRuntime> implements Fi
|
|
|
84
84
|
});
|
|
85
85
|
|
|
86
86
|
// Can occur multiple times.
|
|
87
|
-
addProtectedListener(this._runtime, RemoteModuleRegistrationFailedEvent,
|
|
88
|
-
const registrationError = payload as RemoteModuleRegistrationError;
|
|
89
|
-
|
|
87
|
+
addProtectedListener(this._runtime, RemoteModuleRegistrationFailedEvent, payload => {
|
|
90
88
|
if (remoteModuleRegistrationSpan) {
|
|
91
|
-
traceError(remoteModuleRegistrationSpan,
|
|
89
|
+
traceError(remoteModuleRegistrationSpan, payload as Error);
|
|
92
90
|
}
|
|
93
91
|
}, {
|
|
94
92
|
onError: handleUnmanagedError
|
|
95
93
|
});
|
|
96
94
|
|
|
97
|
-
addProtectedListener(this._runtime, RemoteModulesDeferredRegistrationStartedEvent,
|
|
95
|
+
addProtectedListener(this._runtime, RemoteModulesDeferredRegistrationStartedEvent, payload => {
|
|
98
96
|
const bootstrappingSpan = getBootstrappingSpan();
|
|
99
97
|
|
|
100
98
|
const attributes = {
|
|
101
|
-
"app.squide.registration_count":
|
|
99
|
+
"app.squide.registration_count": payload?.registrationCount
|
|
102
100
|
};
|
|
103
101
|
|
|
104
102
|
if (bootstrappingSpan) {
|
|
@@ -113,12 +111,12 @@ export class ModuleFederationPlugin extends Plugin<FireflyRuntime> implements Fi
|
|
|
113
111
|
onError: handleUnmanagedError
|
|
114
112
|
});
|
|
115
113
|
|
|
116
|
-
addProtectedListener(this._runtime, RemoteModulesDeferredRegistrationCompletedEvent,
|
|
114
|
+
addProtectedListener(this._runtime, RemoteModulesDeferredRegistrationCompletedEvent, payload => {
|
|
117
115
|
const bootstrappingSpan = getBootstrappingSpan();
|
|
118
116
|
|
|
119
117
|
if (bootstrappingSpan) {
|
|
120
118
|
bootstrappingSpan.addEvent("remote-module-deferred-registration-completed", {
|
|
121
|
-
"app.squide.registration_count":
|
|
119
|
+
"app.squide.registration_count": payload?.registrationCount
|
|
122
120
|
});
|
|
123
121
|
}
|
|
124
122
|
|
|
@@ -131,22 +129,20 @@ export class ModuleFederationPlugin extends Plugin<FireflyRuntime> implements Fi
|
|
|
131
129
|
});
|
|
132
130
|
|
|
133
131
|
// Can occur multiple times.
|
|
134
|
-
addProtectedListener(this._runtime, RemoteModuleDeferredRegistrationFailedEvent,
|
|
135
|
-
const registrationError = payload as RemoteModuleRegistrationError;
|
|
136
|
-
|
|
132
|
+
addProtectedListener(this._runtime, RemoteModuleDeferredRegistrationFailedEvent, payload => {
|
|
137
133
|
if (remoteModuleDeferredRegistrationSpan) {
|
|
138
|
-
traceError(remoteModuleDeferredRegistrationSpan,
|
|
134
|
+
traceError(remoteModuleDeferredRegistrationSpan, payload as Error);
|
|
139
135
|
}
|
|
140
136
|
}, {
|
|
141
137
|
onError: handleUnmanagedError
|
|
142
138
|
});
|
|
143
139
|
|
|
144
140
|
// Can occur multiple times.
|
|
145
|
-
addProtectedListener(this._runtime, RemoteModulesDeferredRegistrationsUpdateStartedEvent,
|
|
141
|
+
addProtectedListener(this._runtime, RemoteModulesDeferredRegistrationsUpdateStartedEvent, payload => {
|
|
146
142
|
const deferredRegistrationsUpdateSpan = getDeferredRegistrationsUpdateSpan();
|
|
147
143
|
|
|
148
144
|
const attributes = {
|
|
149
|
-
"app.squide.registration_count":
|
|
145
|
+
"app.squide.registration_count": payload?.registrationCount
|
|
150
146
|
};
|
|
151
147
|
|
|
152
148
|
if (deferredRegistrationsUpdateSpan) {
|
|
@@ -171,12 +167,12 @@ export class ModuleFederationPlugin extends Plugin<FireflyRuntime> implements Fi
|
|
|
171
167
|
});
|
|
172
168
|
|
|
173
169
|
// Can occur multiple times.
|
|
174
|
-
addProtectedListener(this._runtime, RemoteModulesDeferredRegistrationsUpdateCompletedEvent,
|
|
170
|
+
addProtectedListener(this._runtime, RemoteModulesDeferredRegistrationsUpdateCompletedEvent, payload => {
|
|
175
171
|
const deferredRegistrationsUpdateSpan = getDeferredRegistrationsUpdateSpan();
|
|
176
172
|
|
|
177
173
|
if (deferredRegistrationsUpdateSpan) {
|
|
178
174
|
deferredRegistrationsUpdateSpan.addEvent("remote-module-deferred-registrations-update-completed", {
|
|
179
|
-
"app.squide.registration_count":
|
|
175
|
+
"app.squide.registration_count": payload?.registrationCount
|
|
180
176
|
});
|
|
181
177
|
}
|
|
182
178
|
|
|
@@ -188,11 +184,9 @@ export class ModuleFederationPlugin extends Plugin<FireflyRuntime> implements Fi
|
|
|
188
184
|
});
|
|
189
185
|
|
|
190
186
|
// Can occur multiple times.
|
|
191
|
-
addProtectedListener(this._runtime, RemoteModuleDeferredRegistrationUpdateFailedEvent,
|
|
192
|
-
const registrationError = payload as RemoteModuleRegistrationError;
|
|
193
|
-
|
|
187
|
+
addProtectedListener(this._runtime, RemoteModuleDeferredRegistrationUpdateFailedEvent, payload => {
|
|
194
188
|
if (remoteModuleDeferredRegistrationsUpdateSpan) {
|
|
195
|
-
traceError(remoteModuleDeferredRegistrationsUpdateSpan.instance,
|
|
189
|
+
traceError(remoteModuleDeferredRegistrationsUpdateSpan.instance, payload as Error);
|
|
196
190
|
}
|
|
197
191
|
}, {
|
|
198
192
|
onError: handleUnmanagedError
|
|
@@ -41,6 +41,20 @@ export interface RemoteModulesDeferredRegistrationsUpdateCompletedEventPayload {
|
|
|
41
41
|
registrationCount: number;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
+
declare module "@squide/core" {
|
|
45
|
+
interface EventMap {
|
|
46
|
+
"squide-remote-modules-registration-started": RemoteModulesRegistrationStartedEventPayload;
|
|
47
|
+
"squide-remote-modules-registration-completed": RemoteModulesRegistrationCompletedEventPayload;
|
|
48
|
+
"squide-remote-module-registration-failed": ModuleRegistrationError;
|
|
49
|
+
"squide-remote-modules-deferred-registration-started": RemoteModulesDeferredRegistrationStartedEventPayload;
|
|
50
|
+
"squide-remote-modules-deferred-registration-completed": RemoteModulesDeferredRegistrationCompletedEventPayload;
|
|
51
|
+
"squide-some-remote-module-deferred-registration-failed": ModuleRegistrationError;
|
|
52
|
+
"squide-remote-modules-deferred-registrations-update-started": RemoteModulesDeferredRegistrationsUpdateStartedEventPayload;
|
|
53
|
+
"squide-remote-modules-deferred-registrations-update-completed-started": RemoteModulesDeferredRegistrationsUpdateCompletedEventPayload;
|
|
54
|
+
"squide-remote-module-deferred-registration-update-failed": ModuleRegistrationError;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
44
58
|
const RemoteRegisterModuleName = "register";
|
|
45
59
|
|
|
46
60
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|