@squide/firefly 15.0.4 → 16.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.
Files changed (70) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/AppRouter.js.map +1 -1
  3. package/dist/AppRouterContext.js.map +1 -1
  4. package/dist/AppRouterReducer.d.ts +3 -4
  5. package/dist/AppRouterReducer.js +51 -82
  6. package/dist/AppRouterReducer.js.map +1 -1
  7. package/dist/AppRouterStore.js.map +1 -1
  8. package/dist/FireflyPlugin.d.ts +6 -0
  9. package/dist/FireflyPlugin.js +6 -0
  10. package/dist/FireflyPlugin.js.map +1 -0
  11. package/dist/FireflyProvider.js.map +1 -1
  12. package/dist/FireflyRuntime.d.ts +9 -7
  13. package/dist/FireflyRuntime.js +20 -28
  14. package/dist/FireflyRuntime.js.map +1 -1
  15. package/dist/GlobalDataQueriesError.js.map +1 -1
  16. package/dist/RootRoute.js.map +1 -1
  17. package/dist/honeycomb/activeSpan.js.map +1 -1
  18. package/dist/honeycomb/createTraceContextId.js.map +1 -1
  19. package/dist/honeycomb/initializeHoneycomb.js.map +1 -1
  20. package/dist/honeycomb/registerHoneycombInstrumentation.d.ts +8 -0
  21. package/dist/honeycomb/registerHoneycombInstrumentation.js +19 -136
  22. package/dist/honeycomb/registerHoneycombInstrumentation.js.map +1 -1
  23. package/dist/honeycomb/tracer.js.map +1 -1
  24. package/dist/honeycomb/utils.js.map +1 -1
  25. package/dist/index.d.ts +2 -3
  26. package/dist/index.js +4 -5
  27. package/dist/index.js.map +1 -1
  28. package/dist/initializeFirefly.d.ts +6 -6
  29. package/dist/initializeFirefly.js +26 -35
  30. package/dist/initializeFirefly.js.map +1 -1
  31. package/dist/internal.d.ts +6 -0
  32. package/dist/internal.js +26 -0
  33. package/dist/internal.js.map +1 -0
  34. package/dist/useAppRouterStore.js.map +1 -1
  35. package/dist/useCanFetchProtectedData.js.map +1 -1
  36. package/dist/useCanFetchPublicData.js.map +1 -1
  37. package/dist/useCanRegisterDeferredRegistrations.js.map +1 -1
  38. package/dist/useCanUpdateDeferredRegistrations.js.map +1 -1
  39. package/dist/useDeferredRegistrations.d.ts +1 -5
  40. package/dist/useDeferredRegistrations.js +2 -5
  41. package/dist/useDeferredRegistrations.js.map +1 -1
  42. package/dist/useExecuteOnce.js.map +1 -1
  43. package/dist/useIsActiveRouteProtected.js.map +1 -1
  44. package/dist/useIsBootstrapping.js.map +1 -1
  45. package/dist/useNavigationItems.js.map +1 -1
  46. package/dist/useProtectedDataHandler.js.map +1 -1
  47. package/dist/useProtectedDataQueries.js.map +1 -1
  48. package/dist/usePublicDataHandler.js.map +1 -1
  49. package/dist/usePublicDataQueries.js.map +1 -1
  50. package/dist/useRegisterDeferredRegistrations.d.ts +1 -4
  51. package/dist/useRegisterDeferredRegistrations.js +1 -5
  52. package/dist/useRegisterDeferredRegistrations.js.map +1 -1
  53. package/dist/useStrictRegistrationMode.js +10 -17
  54. package/dist/useStrictRegistrationMode.js.map +1 -1
  55. package/dist/useUpdateDeferredRegistrations.d.ts +3 -4
  56. package/dist/useUpdateDeferredRegistrations.js +6 -6
  57. package/dist/useUpdateDeferredRegistrations.js.map +1 -1
  58. package/package.json +30 -28
  59. package/src/AppRouterReducer.ts +62 -100
  60. package/src/FireflyPlugin.ts +11 -0
  61. package/src/FireflyRuntime.tsx +31 -34
  62. package/src/honeycomb/initializeHoneycomb.ts +0 -2
  63. package/src/honeycomb/registerHoneycombInstrumentation.ts +30 -169
  64. package/src/index.ts +14 -3
  65. package/src/initializeFirefly.ts +51 -48
  66. package/src/internal.ts +22 -0
  67. package/src/useDeferredRegistrations.ts +3 -12
  68. package/src/useRegisterDeferredRegistrations.ts +1 -2
  69. package/src/useStrictRegistrationMode.ts +10 -15
  70. package/src/useUpdateDeferredRegistrations.ts +8 -2
@@ -1,9 +1,8 @@
1
1
  import type { Runtime } from "@squide/core";
2
- import { registerDeferredRegistrations } from "@squide/module-federation";
3
2
  import { useCallback } from "react";
4
3
 
5
4
  export function useRegisterDeferredRegistrations() {
6
5
  return useCallback(<TData = unknown, TRuntime extends Runtime = Runtime>(data: TData, runtime: TRuntime) => {
7
- return registerDeferredRegistrations(data, runtime);
6
+ return runtime.moduleManager.registerDeferredRegistrations(data);
8
7
  }, []);
9
8
  }
@@ -1,28 +1,23 @@
1
- import { addLocalModuleRegistrationStatusChangedListener, getLocalModuleRegistrationStatus, removeLocalModuleRegistrationStatusChangedListener, useRuntime } from "@squide/core";
2
- import { addRemoteModuleRegistrationStatusChangedListener, areModulesReady, getRemoteModuleRegistrationStatus, removeRemoteModuleRegistrationStatusChangedListener } from "@squide/module-federation";
1
+ import { Runtime, useRuntime } from "@squide/core";
3
2
  import { useEffect, useSyncExternalStore } from "react";
4
3
 
5
- function subscribeToLocalModuleRegistrationStatusChanged(callback: () => void) {
6
- addLocalModuleRegistrationStatusChangedListener(callback);
4
+ function subscribeToModulesReady(runtime: Runtime) {
5
+ return (callback: () => void) => {
6
+ runtime.moduleManager.registerModulesReadyListener(callback);
7
7
 
8
- return () => removeLocalModuleRegistrationStatusChangedListener(callback);
9
- }
10
-
11
- function subscribeToRemoteModuleRegistrationStatusChanged(callback: () => void) {
12
- addRemoteModuleRegistrationStatusChangedListener(callback);
13
-
14
- return () => removeRemoteModuleRegistrationStatusChangedListener(callback);
8
+ return () => runtime.moduleManager.removeModulesReadyListener(callback);
9
+ };
15
10
  }
16
11
 
17
12
  export function useStrictRegistrationMode() {
18
13
  const runtime = useRuntime();
19
14
 
20
- const localModuleStatus = useSyncExternalStore(subscribeToLocalModuleRegistrationStatusChanged, getLocalModuleRegistrationStatus);
21
- const remoteModuleStatus = useSyncExternalStore(subscribeToRemoteModuleRegistrationStatusChanged, getRemoteModuleRegistrationStatus);
15
+ // This listener is only executed if the modules are ready.
16
+ const areModulesReady = useSyncExternalStore(subscribeToModulesReady(runtime), () => runtime.moduleManager.getAreModulesReady());
22
17
 
23
18
  useEffect(() => {
24
- if (areModulesReady(localModuleStatus, remoteModuleStatus)) {
19
+ if (areModulesReady) {
25
20
  runtime._validateRegistrations();
26
21
  }
27
- }, [runtime, localModuleStatus, remoteModuleStatus]);
22
+ }, [runtime, areModulesReady]);
28
23
  }
@@ -1,16 +1,22 @@
1
1
  import type { Runtime } from "@squide/core";
2
- import { updateDeferredRegistrations } from "@squide/module-federation";
3
2
  import { useCallback } from "react";
4
3
  import { useAppRouterDispatcher } from "./AppRouterContext.ts";
5
4
 
5
+ export const DeferredRegistrationsUpdateStartedEvent = "squide-deferred-registrations-update-started";
6
+ export const DeferredRegistrationsUpdateCompletedEvent = "squide-deferred-registrations-update-completed-started";
7
+
6
8
  export function useUpdateDeferredRegistrations() {
7
9
  const dispatch = useAppRouterDispatcher();
8
10
 
9
11
  return useCallback(async <TData = unknown, TRuntime extends Runtime = Runtime>(data: TData, runtime: TRuntime) => {
10
- const errors = await updateDeferredRegistrations(data, runtime);
12
+ runtime.eventBus.dispatch(DeferredRegistrationsUpdateStartedEvent);
13
+
14
+ const errors = await runtime.moduleManager.updateDeferredRegistrations(data);
11
15
 
12
16
  dispatch({ type: "deferred-registrations-updated" });
13
17
 
18
+ runtime.eventBus.dispatch(DeferredRegistrationsUpdateCompletedEvent);
19
+
14
20
  return errors;
15
21
  }, [dispatch]);
16
22
  }