@squide/firefly 14.1.0 → 15.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 +14 -0
- package/dist/honeycomb/initializeHoneycomb.d.ts +2 -1
- package/dist/honeycomb/initializeHoneycomb.js +5 -9
- package/dist/honeycomb/initializeHoneycomb.js.map +1 -1
- package/dist/honeycomb/registerHoneycombInstrumentation.d.ts +2 -1
- package/dist/honeycomb/registerHoneycombInstrumentation.js +6 -24
- package/dist/honeycomb/registerHoneycombInstrumentation.js.map +1 -1
- package/dist/initializeFirefly.d.ts +2 -0
- package/dist/initializeFirefly.js +2 -2
- package/dist/initializeFirefly.js.map +1 -1
- package/package.json +18 -17
- package/src/honeycomb/initializeHoneycomb.ts +6 -6
- package/src/honeycomb/registerHoneycombInstrumentation.ts +8 -28
- package/src/initializeFirefly.ts +4 -1
- package/dist/honeycomb/canRegisterHoneycombInstrumentation.d.ts +0 -1
- package/dist/honeycomb/canRegisterHoneycombInstrumentation.js +0 -12
- package/dist/honeycomb/canRegisterHoneycombInstrumentation.js.map +0 -1
- package/src/honeycomb/canRegisterHoneycombInstrumentation.ts +0 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @squide/firefly
|
|
2
2
|
|
|
3
|
+
## 15.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- [#318](https://github.com/workleap/wl-squide/pull/318) [`6bf9a65`](https://github.com/workleap/wl-squide/commit/6bf9a65f222a6201655cf1ee525e94211aabe0b7) Thanks [@patricklafrance](https://github.com/patricklafrance)! - Honeycomb instrumentation is now registered when an Honeycomb client is provided to the `initializeFirefly` function rather than by implicitly using global variables. Also updated dependency versions.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [[`6bf9a65`](https://github.com/workleap/wl-squide/commit/6bf9a65f222a6201655cf1ee525e94211aabe0b7)]:
|
|
12
|
+
- @squide/module-federation@7.0.2
|
|
13
|
+
- @squide/react-router@8.1.1
|
|
14
|
+
- @squide/core@6.1.1
|
|
15
|
+
- @squide/msw@4.0.2
|
|
16
|
+
|
|
3
17
|
## 14.1.0
|
|
4
18
|
|
|
5
19
|
### Minor Changes
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
import type { HoneycombInstrumentationPartialClient } from "@workleap-telemetry/core";
|
|
1
2
|
import type { FireflyRuntime } from "../FireflyRuntime.tsx";
|
|
2
|
-
export declare function initializeHoneycomb(runtime: FireflyRuntime): Promise<void>;
|
|
3
|
+
export declare function initializeHoneycomb(runtime: FireflyRuntime, honeycombInstrumentationClient?: HoneycombInstrumentationPartialClient): Promise<void>;
|
|
@@ -1,22 +1,18 @@
|
|
|
1
|
-
import { canRegisterHoneycombInstrumentation } from "./canRegisterHoneycombInstrumentation.js";
|
|
2
|
-
|
|
3
|
-
;// CONCATENATED MODULE: external "./canRegisterHoneycombInstrumentation.js"
|
|
4
1
|
|
|
5
2
|
;// CONCATENATED MODULE: ./src/honeycomb/initializeHoneycomb.ts
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
if (canRegisterHoneycombInstrumentation()) {
|
|
3
|
+
async function initializeHoneycomb(runtime, honeycombInstrumentationClient) {
|
|
4
|
+
if (honeycombInstrumentationClient) {
|
|
9
5
|
try {
|
|
10
6
|
// Dynamically import the Honeycomb instrumentation to prevent loading all the Honeycomb libraries
|
|
11
7
|
// if Honeycomb instrumentation is not registered by the hosting application.
|
|
12
8
|
const mod = await import("./registerHoneycombInstrumentation.js");
|
|
13
|
-
mod.registerHoneycombInstrumentation(runtime);
|
|
9
|
+
mod.registerHoneycombInstrumentation(runtime, honeycombInstrumentationClient);
|
|
14
10
|
} catch (error) {
|
|
15
|
-
runtime.logger.error("[squide] Failed to register Honeycomb instrumentation. The \"./registerHoneycombInstrumentation.ts\" cannot be imported.");
|
|
11
|
+
runtime.logger.error("[squide] Failed to register Honeycomb instrumentation. The \"./registerHoneycombInstrumentation.ts\" file cannot be imported.");
|
|
16
12
|
throw error;
|
|
17
13
|
}
|
|
18
14
|
} else {
|
|
19
|
-
runtime.logger.information("[squide] Cannot register Honeycomb instrumentation because the host application
|
|
15
|
+
runtime.logger.information("[squide] Cannot register Honeycomb instrumentation because the host application hasn't provided a client.");
|
|
20
16
|
}
|
|
21
17
|
}
|
|
22
18
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"honeycomb/initializeHoneycomb.js","sources":["webpack://@squide/firefly/./src/honeycomb/initializeHoneycomb.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"honeycomb/initializeHoneycomb.js","sources":["webpack://@squide/firefly/./src/honeycomb/initializeHoneycomb.ts"],"sourcesContent":["import type { HoneycombInstrumentationPartialClient } from \"@workleap-telemetry/core\";\nimport type { FireflyRuntime } from \"../FireflyRuntime.tsx\";\n\nexport async function initializeHoneycomb(runtime: FireflyRuntime, honeycombInstrumentationClient?: HoneycombInstrumentationPartialClient) {\n if (honeycombInstrumentationClient) {\n try {\n // Dynamically import the Honeycomb instrumentation to prevent loading all the Honeycomb libraries\n // if Honeycomb instrumentation is not registered by the hosting application.\n const mod = await import(\"./registerHoneycombInstrumentation.ts\");\n\n mod.registerHoneycombInstrumentation(runtime, honeycombInstrumentationClient);\n } catch (error: unknown) {\n runtime.logger.error(\"[squide] Failed to register Honeycomb instrumentation. The \\\"./registerHoneycombInstrumentation.ts\\\" file cannot be imported.\");\n\n throw error;\n }\n } else {\n runtime.logger.information(\"[squide] Cannot register Honeycomb instrumentation because the host application hasn't provided a client.\");\n }\n}\n\n\n"],"names":["initializeHoneycomb","runtime","honeycombInstrumentationClient","mod","error"],"mappings":";;AAGO,eAAeA,oBAAoBC,OAAuB,EAAEC,8BAAsE;IACrI,IAAIA,gCAAgC;QAChC,IAAI;YACA,kGAAkG;YAClG,6EAA6E;YAC7E,MAAMC,MAAM,MAAM,+CAA+C;YAEjEA,IAAI,gCAAgC,CAACF,SAASC;QAClD,EAAE,OAAOE,OAAgB;YACrBH,QAAQ,MAAM,CAAC,KAAK,CAAC;YAErB,MAAMG;QACV;IACJ,OAAO;QACHH,QAAQ,MAAM,CAAC,WAAW,CAAC;IAC/B;AACJ"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { HoneycombInstrumentationPartialClient } from "@workleap-telemetry/core";
|
|
1
2
|
import type { FireflyRuntime } from "../FireflyRuntime.tsx";
|
|
2
3
|
export declare function reduceDataFetchEvents(runtime: FireflyRuntime, onDataFetchStarted: () => void, onDataReady: () => void, onPublicDataFetchStarted: () => void, onPublicDataReady: () => void, onProtectedDataFetchStarted: () => void, onProtectedDataReady: () => void, onDataFetchFailed: (queriesErrors: Error[]) => void, onUnmanagedError: (error: unknown) => void): void;
|
|
3
|
-
export declare function registerHoneycombInstrumentation(runtime: FireflyRuntime): void;
|
|
4
|
+
export declare function registerHoneycombInstrumentation(runtime: FireflyRuntime, honeycombInstrumentationClient: HoneycombInstrumentationPartialClient): void;
|
|
@@ -507,32 +507,14 @@ function registerTrackingListeners(runtime) {
|
|
|
507
507
|
onError: handleUnmanagedError
|
|
508
508
|
});
|
|
509
509
|
}
|
|
510
|
-
function
|
|
511
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
512
|
-
// @ts-ignore
|
|
513
|
-
if (globalThis.__WLP_HONEYCOMB_REGISTER_DYNAMIC_FETCH_REQUEST_HOOK__) {
|
|
514
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
515
|
-
// @ts-ignore
|
|
516
|
-
return globalThis.__WLP_HONEYCOMB_REGISTER_DYNAMIC_FETCH_REQUEST_HOOK__;
|
|
517
|
-
}
|
|
518
|
-
// Fallback to fix an error. Will remove soon.
|
|
519
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
520
|
-
// @ts-ignore
|
|
521
|
-
return globalThis.__WLP_HONEYCOMB_REGISTER_DYNAMIC_FETCH_REQUEST_HOOK;
|
|
522
|
-
}
|
|
523
|
-
function registerHoneycombInstrumentation(runtime) {
|
|
510
|
+
function registerHoneycombInstrumentation(runtime, honeycombInstrumentationClient) {
|
|
524
511
|
try {
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
// Dynamically registering this request hook function to nest the HTTP requests
|
|
530
|
-
// of squide bootstrapping under the appropriate Honeycomb span.
|
|
531
|
-
registerFetchRequestHookFunction(activeSpanOverrideFunction);
|
|
532
|
-
} else {
|
|
533
|
-
runtime.logger.warning("[squide] Cannot register Honeycomb fetch request hook because \"globalThis.__WLP_HONEYCOMB_REGISTER_DYNAMIC_FETCH_REQUEST_HOOK__\" is not available. Honeycomb instrumentation is still functional but in degraded mode.");
|
|
534
|
-
}
|
|
512
|
+
registerActiveSpanStack();
|
|
513
|
+
// Dynamically registering this request hook function to nest the HTTP requests
|
|
514
|
+
// of squide bootstrapping under the appropriate Honeycomb span.
|
|
515
|
+
honeycombInstrumentationClient.registerFetchRequestHook(createOverrideFetchRequestSpanWithActiveSpanContext(runtime.logger));
|
|
535
516
|
registerTrackingListeners(runtime);
|
|
517
|
+
runtime.logger.information("[squide] Honeycomb instrumentation is registered.");
|
|
536
518
|
} catch (error) {
|
|
537
519
|
runtime.logger.withText("[squide] An error occurred while registering Honeycomb instrumentation:").withError(error).error();
|
|
538
520
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"honeycomb/registerHoneycombInstrumentation.js","sources":["webpack://@squide/firefly/./src/honeycomb/registerHoneycombInstrumentation.ts"],"sourcesContent":["import type { Span } from \"@opentelemetry/api\";\nimport {\n type AddListenerOptions,\n type EventCallbackFunction,\n type EventName,\n LocalModuleDeferredRegistrationFailedEvent,\n LocalModuleDeferredRegistrationUpdateFailedEvent,\n LocalModuleRegistrationFailedEvent,\n LocalModulesDeferredRegistrationCompletedEvent,\n type LocalModulesDeferredRegistrationCompletedEventPayload,\n LocalModulesDeferredRegistrationStartedEvent,\n type LocalModulesDeferredRegistrationStartedEventPayload,\n LocalModulesDeferredRegistrationsUpdateCompletedEvent,\n type LocalModulesDeferredRegistrationsUpdateCompletedEventPayload,\n LocalModulesDeferredRegistrationsUpdateStartedEvent,\n type LocalModulesDeferredRegistrationsUpdateStartedEventPayload,\n LocalModulesRegistrationCompletedEvent,\n type LocalModulesRegistrationCompletedEventPayload,\n LocalModulesRegistrationStartedEvent,\n type LocalModulesRegistrationStartedEventPayload,\n type ModuleRegistrationError\n} from \"@squide/core\";\nimport {\n DeferredRegistrationsUpdateCompletedEvent,\n DeferredRegistrationsUpdateStartedEvent,\n RemoteModuleDeferredRegistrationFailedEvent,\n RemoteModuleDeferredRegistrationUpdateFailedEvent,\n type RemoteModuleRegistrationError,\n RemoteModuleRegistrationFailedEvent,\n RemoteModulesDeferredRegistrationCompletedEvent,\n type RemoteModulesDeferredRegistrationCompletedEventPayload,\n RemoteModulesDeferredRegistrationStartedEvent,\n type RemoteModulesDeferredRegistrationStartedEventPayload,\n RemoteModulesDeferredRegistrationsUpdateCompletedEvent,\n type RemoteModulesDeferredRegistrationsUpdateCompletedEventPayload,\n RemoteModulesDeferredRegistrationsUpdateStartedEvent,\n type RemoteModulesDeferredRegistrationsUpdateStartedEventPayload,\n RemoteModulesRegistrationCompletedEvent,\n type RemoteModulesRegistrationCompletedEventPayload,\n RemoteModulesRegistrationStartedEvent,\n type RemoteModulesRegistrationStartedEventPayload\n} from \"@squide/module-federation\";\nimport { ApplicationBoostrappedEvent, type AppRouterWaitState, ModulesReadyEvent, ModulesRegisteredEvent, MswReadyEvent, ProtectedDataReadyEvent, PublicDataReadyEvent } from \"../AppRouterReducer.ts\";\nimport type { FireflyRuntime } from \"../FireflyRuntime.tsx\";\nimport { ApplicationBootstrappingStartedEvent } from \"../initializeFirefly.ts\";\nimport { ProtectedDataFetchFailedEvent, ProtectedDataFetchStartedEvent } from \"../useProtectedDataQueries.ts\";\nimport { PublicDataFetchFailedEvent, PublicDataFetchStartedEvent } from \"../usePublicDataQueries.ts\";\nimport { type ActiveSpan, createOverrideFetchRequestSpanWithActiveSpanContext, registerActiveSpanStack } from \"./activeSpan.ts\";\nimport { getTracer } from \"./tracer.ts\";\nimport { endActiveSpan, startActiveChildSpan, startChildSpan, startSpan, traceError } from \"./utils.ts\";\n\n// TIPS:\n// To query those traces in Honeycomb, use the following query filter: \"root.name = squide-bootstrapping\".\n\ninterface AddProtectedListenerOptions extends AddListenerOptions {\n onError?: (error: unknown) => void;\n}\n\nfunction addProtectedListener(runtime: FireflyRuntime, eventName: EventName, callback: EventCallbackFunction, options?: AddProtectedListenerOptions) {\n const protectedCallback = (...args: unknown[]) => {\n try {\n callback(...args);\n } catch (error: unknown) {\n runtime.logger\n .withText(`[squide] An unmanaged error occurred while handling event \"${eventName.toString()}\" for Honeycomb instrumentation:`)\n .withError(error as Error)\n .error();\n }\n };\n\n runtime.eventBus.addListener(eventName, protectedCallback, options);\n}\n\ntype DataFetchState = \"none\" | \"fetching-data\" | \"public-data-ready\" | \"protected-data-ready\" | \"data-ready\" | \"data-fetch-failed\";\n\nexport function reduceDataFetchEvents(\n runtime: FireflyRuntime,\n onDataFetchStarted: () => void,\n onDataReady: () => void,\n onPublicDataFetchStarted: () => void,\n onPublicDataReady: () => void,\n onProtectedDataFetchStarted: () => void,\n onProtectedDataReady: () => void,\n onDataFetchFailed: (queriesErrors: Error[]) => void,\n onUnmanagedError: (error: unknown) => void\n) {\n let dataFetchState: DataFetchState = \"none\";\n\n addProtectedListener(runtime, PublicDataFetchStartedEvent, () => {\n if (dataFetchState === \"none\") {\n dataFetchState = \"fetching-data\";\n onDataFetchStarted();\n }\n\n onPublicDataFetchStarted();\n }, {\n once: true,\n onError: onUnmanagedError\n });\n\n addProtectedListener(runtime, PublicDataReadyEvent, payload => {\n onPublicDataReady();\n\n if (dataFetchState === \"fetching-data\") {\n if (payload && !(payload as AppRouterWaitState).waitForProtectedData) {\n dataFetchState = \"data-ready\";\n onDataReady();\n } else {\n dataFetchState = \"public-data-ready\";\n }\n } else if (dataFetchState === \"protected-data-ready\") {\n dataFetchState = \"data-ready\";\n onDataReady();\n }\n }, {\n once: true,\n onError: onUnmanagedError\n });\n\n addProtectedListener(runtime, ProtectedDataFetchStartedEvent, () => {\n if (dataFetchState === \"none\") {\n dataFetchState = \"fetching-data\";\n onDataFetchStarted();\n }\n\n onProtectedDataFetchStarted();\n }, {\n once: true,\n onError: onUnmanagedError\n });\n\n addProtectedListener(runtime, ProtectedDataReadyEvent, payload => {\n onProtectedDataReady();\n\n if (dataFetchState === \"fetching-data\") {\n if (payload && !(payload as AppRouterWaitState).waitForPublicData) {\n dataFetchState = \"data-ready\";\n onDataReady();\n } else {\n dataFetchState = \"protected-data-ready\";\n }\n } else if (dataFetchState === \"public-data-ready\") {\n dataFetchState = \"data-ready\";\n onDataReady();\n }\n }, {\n once: true,\n onError: onUnmanagedError\n });\n\n const handleDataFetchFailed = (payload: unknown) => {\n if (dataFetchState !== \"data-fetch-failed\") {\n dataFetchState = \"data-fetch-failed\";\n\n onDataFetchFailed(payload as Error[]);\n }\n };\n\n addProtectedListener(runtime, PublicDataFetchFailedEvent, handleDataFetchFailed, {\n once: true,\n onError: onUnmanagedError\n });\n\n addProtectedListener(runtime, ProtectedDataFetchFailedEvent, handleDataFetchFailed, {\n once: true,\n onError: onUnmanagedError\n });\n}\n\nfunction registerTrackingListeners(runtime: FireflyRuntime) {\n let bootstrappingSpan: Span;\n let bootstrappingSpanHasEnded: boolean = false;\n let localModuleRegistrationSpan: Span;\n let localModuleDeferredRegistrationSpan: Span;\n let remoteModuleRegistrationSpan: Span;\n let remoteModuleDeferredRegistrationSpan: Span;\n let dataFetchSpan: ActiveSpan;\n let deferredRegistrationsUpdateSpan: Span;\n let localModuleDeferredRegistrationsUpdateSpan: ActiveSpan;\n let remoteModuleDeferredRegistrationsUpdateSpan: ActiveSpan;\n\n const handleUnmanagedError = (error: unknown) => {\n if (bootstrappingSpan && !bootstrappingSpanHasEnded) {\n traceError(bootstrappingSpan, error as Error);\n\n bootstrappingSpan.end();\n bootstrappingSpanHasEnded = true;\n }\n\n if (localModuleRegistrationSpan) {\n localModuleRegistrationSpan.end();\n }\n\n if (localModuleDeferredRegistrationSpan) {\n localModuleDeferredRegistrationSpan.end();\n }\n\n if (remoteModuleRegistrationSpan) {\n remoteModuleRegistrationSpan.end();\n }\n\n if (remoteModuleDeferredRegistrationSpan) {\n remoteModuleDeferredRegistrationSpan.end();\n }\n\n if (dataFetchSpan) {\n dataFetchSpan.instance.end();\n }\n\n if (deferredRegistrationsUpdateSpan) {\n deferredRegistrationsUpdateSpan.end();\n }\n\n if (localModuleDeferredRegistrationsUpdateSpan) {\n localModuleDeferredRegistrationsUpdateSpan.instance.end();\n }\n\n if (remoteModuleDeferredRegistrationsUpdateSpan) {\n remoteModuleDeferredRegistrationsUpdateSpan.instance.end();\n }\n };\n\n addProtectedListener(runtime, ApplicationBootstrappingStartedEvent, () => {\n bootstrappingSpan = startSpan((options, context) => getTracer().startSpan(\"squide-bootstrapping\", options, context));\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n addProtectedListener(runtime, ApplicationBoostrappedEvent, () => {\n if (bootstrappingSpan) {\n bootstrappingSpan.end();\n bootstrappingSpanHasEnded = true;\n }\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n addProtectedListener(runtime, MswReadyEvent, () => {\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"msw-ready\");\n }\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n addProtectedListener(runtime, LocalModulesRegistrationStartedEvent, (payload: unknown) => {\n const attributes = {\n \"app.squide.module_count\": (payload as LocalModulesRegistrationStartedEventPayload).moduleCount\n };\n\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"local-module-registration-started\", attributes);\n }\n\n localModuleRegistrationSpan = startChildSpan(bootstrappingSpan, (options, context) => {\n return getTracer().startSpan(\"local-module-registration\", { ...options, attributes }, context);\n });\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n addProtectedListener(runtime, LocalModulesRegistrationCompletedEvent, (payload: unknown) => {\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"local-module-registration-completed\", {\n \"app.squide.module_count\": (payload as LocalModulesRegistrationCompletedEventPayload).moduleCount\n });\n }\n\n if (localModuleRegistrationSpan) {\n localModuleRegistrationSpan.end();\n }\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(runtime, LocalModuleRegistrationFailedEvent, (payload: unknown) => {\n const registrationError = payload as ModuleRegistrationError;\n\n if (localModuleRegistrationSpan) {\n traceError(localModuleRegistrationSpan, registrationError);\n }\n }, {\n onError: handleUnmanagedError\n });\n\n addProtectedListener(runtime, LocalModulesDeferredRegistrationStartedEvent, (payload: unknown) => {\n const attributes = {\n \"app.squide.registration_count\": (payload as LocalModulesDeferredRegistrationStartedEventPayload).registrationCount\n };\n\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"local-module-deferred-registration-started\", attributes);\n }\n\n localModuleDeferredRegistrationSpan = startChildSpan(bootstrappingSpan, (options, context) => {\n return getTracer().startSpan(\"local-module-deferred-registration\", { ...options, attributes }, context);\n });\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n addProtectedListener(runtime, LocalModulesDeferredRegistrationCompletedEvent, (payload: unknown) => {\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"local-module-deferred-registration-completed\", {\n \"app.squide.registration_count\": (payload as LocalModulesDeferredRegistrationCompletedEventPayload).registrationCount\n });\n }\n\n if (localModuleDeferredRegistrationSpan) {\n localModuleDeferredRegistrationSpan.end();\n }\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(runtime, LocalModuleDeferredRegistrationFailedEvent, (payload: unknown) => {\n const registrationError = payload as ModuleRegistrationError;\n\n if (localModuleDeferredRegistrationSpan) {\n traceError(localModuleRegistrationSpan, registrationError);\n }\n }, {\n onError: handleUnmanagedError\n });\n\n addProtectedListener(runtime, RemoteModulesRegistrationStartedEvent, (payload: unknown) => {\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(runtime, RemoteModulesRegistrationCompletedEvent, (payload: unknown) => {\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(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(runtime, RemoteModulesDeferredRegistrationStartedEvent, (payload: unknown) => {\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(runtime, RemoteModulesDeferredRegistrationCompletedEvent, (payload: unknown) => {\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(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 const handleFetchDataStarted = () => {\n dataFetchSpan = startActiveChildSpan(bootstrappingSpan, (options, context) => {\n const name = \"data-fetch\";\n const span = getTracer().startSpan(name, options, context);\n\n return {\n name,\n span\n };\n });\n };\n\n const handleDataReady = () => {\n if (dataFetchSpan) {\n endActiveSpan(dataFetchSpan);\n }\n };\n\n const handlePublicDataFetchStarted = () => {\n if (dataFetchSpan) {\n dataFetchSpan.instance.addEvent(\"public-data-fetch-started\");\n }\n };\n\n const handlePublicDataReady = () => {\n if (dataFetchSpan) {\n dataFetchSpan.instance.addEvent(\"public-data-ready\");\n }\n };\n\n const handleProtectedDataFetchStarted = () => {\n if (dataFetchSpan) {\n dataFetchSpan.instance.addEvent(\"protected-data-fetch-started\");\n }\n };\n\n const handleProtectedDataReady = () => {\n if (dataFetchSpan) {\n dataFetchSpan.instance.addEvent(\"protected-data-ready\");\n }\n };\n\n const handleDataFetchFailed = (queriesErrors: Error[]) => {\n if (dataFetchSpan) {\n queriesErrors.forEach(x => {\n traceError(dataFetchSpan.instance, x);\n });\n\n endActiveSpan(dataFetchSpan);\n\n // Global data fetch errors are unmanaged, which mean the host application bootstrapping flow\n // will be aborted and a react-router error boundary will be rendered.\n if (bootstrappingSpan) {\n bootstrappingSpan.end();\n bootstrappingSpanHasEnded = true;\n }\n }\n };\n\n reduceDataFetchEvents(\n runtime,\n handleFetchDataStarted,\n handleDataReady,\n handlePublicDataFetchStarted,\n handlePublicDataReady,\n handleProtectedDataFetchStarted,\n handleProtectedDataReady,\n handleDataFetchFailed,\n handleUnmanagedError\n );\n\n addProtectedListener(runtime, ModulesRegisteredEvent, () => {\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"modules-registered\");\n }\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n addProtectedListener(runtime, ModulesReadyEvent, () => {\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"modules-ready\");\n }\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(runtime, DeferredRegistrationsUpdateStartedEvent, () => {\n deferredRegistrationsUpdateSpan = startSpan((options, context) => getTracer().startSpan(\"squide-deferred-registrations-update\", options, context));\n }, {\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(runtime, DeferredRegistrationsUpdateCompletedEvent, () => {\n if (deferredRegistrationsUpdateSpan) {\n deferredRegistrationsUpdateSpan.end();\n }\n }, {\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(runtime, LocalModulesDeferredRegistrationsUpdateStartedEvent, (payload: unknown) => {\n const attributes = {\n \"app.squide.registration_count\": (payload as LocalModulesDeferredRegistrationsUpdateStartedEventPayload).registrationCount\n };\n\n if (deferredRegistrationsUpdateSpan) {\n deferredRegistrationsUpdateSpan.addEvent(\"local-module-deferred-registrations-update-started\", attributes);\n }\n\n localModuleDeferredRegistrationsUpdateSpan = startActiveChildSpan(deferredRegistrationsUpdateSpan, (options, context) => {\n const name = \"local-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(runtime, LocalModulesDeferredRegistrationsUpdateCompletedEvent, (payload: unknown) => {\n if (deferredRegistrationsUpdateSpan) {\n deferredRegistrationsUpdateSpan.addEvent(\"local-module-deferred-registrations-update-completed\", {\n \"app.squide.registration_count\": (payload as LocalModulesDeferredRegistrationsUpdateCompletedEventPayload).registrationCount\n });\n }\n\n if (localModuleDeferredRegistrationsUpdateSpan) {\n endActiveSpan(localModuleDeferredRegistrationsUpdateSpan);\n }\n }, {\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(runtime, LocalModuleDeferredRegistrationUpdateFailedEvent, (payload: unknown) => {\n const registrationError = payload as ModuleRegistrationError;\n\n if (localModuleDeferredRegistrationsUpdateSpan) {\n traceError(localModuleDeferredRegistrationsUpdateSpan.instance, registrationError);\n }\n }, {\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(runtime, RemoteModulesDeferredRegistrationsUpdateStartedEvent, (payload: unknown) => {\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(runtime, RemoteModulesDeferredRegistrationsUpdateCompletedEvent, (payload: unknown) => {\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(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\nfunction getRegisterFetchRequestHookFunction() {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (globalThis.__WLP_HONEYCOMB_REGISTER_DYNAMIC_FETCH_REQUEST_HOOK__) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return globalThis.__WLP_HONEYCOMB_REGISTER_DYNAMIC_FETCH_REQUEST_HOOK__;\n }\n\n // Fallback to fix an error. Will remove soon.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return globalThis.__WLP_HONEYCOMB_REGISTER_DYNAMIC_FETCH_REQUEST_HOOK;\n}\n\nexport function registerHoneycombInstrumentation(runtime: FireflyRuntime) {\n try {\n const registerFetchRequestHookFunction = getRegisterFetchRequestHookFunction();\n\n if (registerFetchRequestHookFunction) {\n registerActiveSpanStack();\n\n const activeSpanOverrideFunction = createOverrideFetchRequestSpanWithActiveSpanContext(runtime.logger);\n\n // Dynamically registering this request hook function to nest the HTTP requests\n // of squide bootstrapping under the appropriate Honeycomb span.\n registerFetchRequestHookFunction(activeSpanOverrideFunction);\n } else {\n runtime.logger.warning(\"[squide] Cannot register Honeycomb fetch request hook because \\\"globalThis.__WLP_HONEYCOMB_REGISTER_DYNAMIC_FETCH_REQUEST_HOOK__\\\" is not available. Honeycomb instrumentation is still functional but in degraded mode.\");\n }\n\n registerTrackingListeners(runtime);\n } catch (error: unknown) {\n runtime.logger\n .withText(\"[squide] An error occurred while registering Honeycomb instrumentation:\")\n .withError(error as Error)\n .error();\n }\n}\n"],"names":["LocalModuleDeferredRegistrationFailedEvent","LocalModuleDeferredRegistrationUpdateFailedEvent","LocalModuleRegistrationFailedEvent","LocalModulesDeferredRegistrationCompletedEvent","LocalModulesDeferredRegistrationStartedEvent","LocalModulesDeferredRegistrationsUpdateCompletedEvent","LocalModulesDeferredRegistrationsUpdateStartedEvent","LocalModulesRegistrationCompletedEvent","LocalModulesRegistrationStartedEvent","DeferredRegistrationsUpdateCompletedEvent","DeferredRegistrationsUpdateStartedEvent","RemoteModuleDeferredRegistrationFailedEvent","RemoteModuleDeferredRegistrationUpdateFailedEvent","RemoteModuleRegistrationFailedEvent","RemoteModulesDeferredRegistrationCompletedEvent","RemoteModulesDeferredRegistrationStartedEvent","RemoteModulesDeferredRegistrationsUpdateCompletedEvent","RemoteModulesDeferredRegistrationsUpdateStartedEvent","RemoteModulesRegistrationCompletedEvent","RemoteModulesRegistrationStartedEvent","ApplicationBoostrappedEvent","ModulesReadyEvent","ModulesRegisteredEvent","MswReadyEvent","ProtectedDataReadyEvent","PublicDataReadyEvent","ApplicationBootstrappingStartedEvent","ProtectedDataFetchFailedEvent","ProtectedDataFetchStartedEvent","PublicDataFetchFailedEvent","PublicDataFetchStartedEvent","createOverrideFetchRequestSpanWithActiveSpanContext","registerActiveSpanStack","getTracer","endActiveSpan","startActiveChildSpan","startChildSpan","startSpan","traceError","addProtectedListener","runtime","eventName","callback","options","protectedCallback","args","error","reduceDataFetchEvents","onDataFetchStarted","onDataReady","onPublicDataFetchStarted","onPublicDataReady","onProtectedDataFetchStarted","onProtectedDataReady","onDataFetchFailed","onUnmanagedError","dataFetchState","payload","handleDataFetchFailed","registerTrackingListeners","bootstrappingSpan","bootstrappingSpanHasEnded","localModuleRegistrationSpan","localModuleDeferredRegistrationSpan","remoteModuleRegistrationSpan","remoteModuleDeferredRegistrationSpan","dataFetchSpan","deferredRegistrationsUpdateSpan","localModuleDeferredRegistrationsUpdateSpan","remoteModuleDeferredRegistrationsUpdateSpan","handleUnmanagedError","context","attributes","registrationError","handleFetchDataStarted","name","span","handleDataReady","handlePublicDataFetchStarted","handlePublicDataReady","handleProtectedDataFetchStarted","handleProtectedDataReady","queriesErrors","x","getRegisterFetchRequestHookFunction","globalThis","registerHoneycombInstrumentation","registerFetchRequestHookFunction","activeSpanOverrideFunction"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"honeycomb/registerHoneycombInstrumentation.js","sources":["webpack://@squide/firefly/./src/honeycomb/registerHoneycombInstrumentation.ts"],"sourcesContent":["import type { Span } from \"@opentelemetry/api\";\nimport {\n type AddListenerOptions,\n type EventCallbackFunction,\n type EventName,\n LocalModuleDeferredRegistrationFailedEvent,\n LocalModuleDeferredRegistrationUpdateFailedEvent,\n LocalModuleRegistrationFailedEvent,\n LocalModulesDeferredRegistrationCompletedEvent,\n type LocalModulesDeferredRegistrationCompletedEventPayload,\n LocalModulesDeferredRegistrationStartedEvent,\n type LocalModulesDeferredRegistrationStartedEventPayload,\n LocalModulesDeferredRegistrationsUpdateCompletedEvent,\n type LocalModulesDeferredRegistrationsUpdateCompletedEventPayload,\n LocalModulesDeferredRegistrationsUpdateStartedEvent,\n type LocalModulesDeferredRegistrationsUpdateStartedEventPayload,\n LocalModulesRegistrationCompletedEvent,\n type LocalModulesRegistrationCompletedEventPayload,\n LocalModulesRegistrationStartedEvent,\n type LocalModulesRegistrationStartedEventPayload,\n type ModuleRegistrationError\n} from \"@squide/core\";\nimport {\n DeferredRegistrationsUpdateCompletedEvent,\n DeferredRegistrationsUpdateStartedEvent,\n RemoteModuleDeferredRegistrationFailedEvent,\n RemoteModuleDeferredRegistrationUpdateFailedEvent,\n type RemoteModuleRegistrationError,\n RemoteModuleRegistrationFailedEvent,\n RemoteModulesDeferredRegistrationCompletedEvent,\n type RemoteModulesDeferredRegistrationCompletedEventPayload,\n RemoteModulesDeferredRegistrationStartedEvent,\n type RemoteModulesDeferredRegistrationStartedEventPayload,\n RemoteModulesDeferredRegistrationsUpdateCompletedEvent,\n type RemoteModulesDeferredRegistrationsUpdateCompletedEventPayload,\n RemoteModulesDeferredRegistrationsUpdateStartedEvent,\n type RemoteModulesDeferredRegistrationsUpdateStartedEventPayload,\n RemoteModulesRegistrationCompletedEvent,\n type RemoteModulesRegistrationCompletedEventPayload,\n RemoteModulesRegistrationStartedEvent,\n type RemoteModulesRegistrationStartedEventPayload\n} from \"@squide/module-federation\";\nimport type { HoneycombInstrumentationPartialClient } from \"@workleap-telemetry/core\";\nimport { ApplicationBoostrappedEvent, type AppRouterWaitState, ModulesReadyEvent, ModulesRegisteredEvent, MswReadyEvent, ProtectedDataReadyEvent, PublicDataReadyEvent } from \"../AppRouterReducer.ts\";\nimport type { FireflyRuntime } from \"../FireflyRuntime.tsx\";\nimport { ApplicationBootstrappingStartedEvent } from \"../initializeFirefly.ts\";\nimport { ProtectedDataFetchFailedEvent, ProtectedDataFetchStartedEvent } from \"../useProtectedDataQueries.ts\";\nimport { PublicDataFetchFailedEvent, PublicDataFetchStartedEvent } from \"../usePublicDataQueries.ts\";\nimport { type ActiveSpan, createOverrideFetchRequestSpanWithActiveSpanContext, registerActiveSpanStack } from \"./activeSpan.ts\";\nimport { getTracer } from \"./tracer.ts\";\nimport { endActiveSpan, startActiveChildSpan, startChildSpan, startSpan, traceError } from \"./utils.ts\";\n\n// TIPS:\n// To query those traces in Honeycomb, use the following query filter: \"root.name = squide-bootstrapping\".\n\ninterface AddProtectedListenerOptions extends AddListenerOptions {\n onError?: (error: unknown) => void;\n}\n\nfunction addProtectedListener(runtime: FireflyRuntime, eventName: EventName, callback: EventCallbackFunction, options?: AddProtectedListenerOptions) {\n const protectedCallback = (...args: unknown[]) => {\n try {\n callback(...args);\n } catch (error: unknown) {\n runtime.logger\n .withText(`[squide] An unmanaged error occurred while handling event \"${eventName.toString()}\" for Honeycomb instrumentation:`)\n .withError(error as Error)\n .error();\n }\n };\n\n runtime.eventBus.addListener(eventName, protectedCallback, options);\n}\n\ntype DataFetchState = \"none\" | \"fetching-data\" | \"public-data-ready\" | \"protected-data-ready\" | \"data-ready\" | \"data-fetch-failed\";\n\nexport function reduceDataFetchEvents(\n runtime: FireflyRuntime,\n onDataFetchStarted: () => void,\n onDataReady: () => void,\n onPublicDataFetchStarted: () => void,\n onPublicDataReady: () => void,\n onProtectedDataFetchStarted: () => void,\n onProtectedDataReady: () => void,\n onDataFetchFailed: (queriesErrors: Error[]) => void,\n onUnmanagedError: (error: unknown) => void\n) {\n let dataFetchState: DataFetchState = \"none\";\n\n addProtectedListener(runtime, PublicDataFetchStartedEvent, () => {\n if (dataFetchState === \"none\") {\n dataFetchState = \"fetching-data\";\n onDataFetchStarted();\n }\n\n onPublicDataFetchStarted();\n }, {\n once: true,\n onError: onUnmanagedError\n });\n\n addProtectedListener(runtime, PublicDataReadyEvent, payload => {\n onPublicDataReady();\n\n if (dataFetchState === \"fetching-data\") {\n if (payload && !(payload as AppRouterWaitState).waitForProtectedData) {\n dataFetchState = \"data-ready\";\n onDataReady();\n } else {\n dataFetchState = \"public-data-ready\";\n }\n } else if (dataFetchState === \"protected-data-ready\") {\n dataFetchState = \"data-ready\";\n onDataReady();\n }\n }, {\n once: true,\n onError: onUnmanagedError\n });\n\n addProtectedListener(runtime, ProtectedDataFetchStartedEvent, () => {\n if (dataFetchState === \"none\") {\n dataFetchState = \"fetching-data\";\n onDataFetchStarted();\n }\n\n onProtectedDataFetchStarted();\n }, {\n once: true,\n onError: onUnmanagedError\n });\n\n addProtectedListener(runtime, ProtectedDataReadyEvent, payload => {\n onProtectedDataReady();\n\n if (dataFetchState === \"fetching-data\") {\n if (payload && !(payload as AppRouterWaitState).waitForPublicData) {\n dataFetchState = \"data-ready\";\n onDataReady();\n } else {\n dataFetchState = \"protected-data-ready\";\n }\n } else if (dataFetchState === \"public-data-ready\") {\n dataFetchState = \"data-ready\";\n onDataReady();\n }\n }, {\n once: true,\n onError: onUnmanagedError\n });\n\n const handleDataFetchFailed = (payload: unknown) => {\n if (dataFetchState !== \"data-fetch-failed\") {\n dataFetchState = \"data-fetch-failed\";\n\n onDataFetchFailed(payload as Error[]);\n }\n };\n\n addProtectedListener(runtime, PublicDataFetchFailedEvent, handleDataFetchFailed, {\n once: true,\n onError: onUnmanagedError\n });\n\n addProtectedListener(runtime, ProtectedDataFetchFailedEvent, handleDataFetchFailed, {\n once: true,\n onError: onUnmanagedError\n });\n}\n\nfunction registerTrackingListeners(runtime: FireflyRuntime) {\n let bootstrappingSpan: Span;\n let bootstrappingSpanHasEnded: boolean = false;\n let localModuleRegistrationSpan: Span;\n let localModuleDeferredRegistrationSpan: Span;\n let remoteModuleRegistrationSpan: Span;\n let remoteModuleDeferredRegistrationSpan: Span;\n let dataFetchSpan: ActiveSpan;\n let deferredRegistrationsUpdateSpan: Span;\n let localModuleDeferredRegistrationsUpdateSpan: ActiveSpan;\n let remoteModuleDeferredRegistrationsUpdateSpan: ActiveSpan;\n\n const handleUnmanagedError = (error: unknown) => {\n if (bootstrappingSpan && !bootstrappingSpanHasEnded) {\n traceError(bootstrappingSpan, error as Error);\n\n bootstrappingSpan.end();\n bootstrappingSpanHasEnded = true;\n }\n\n if (localModuleRegistrationSpan) {\n localModuleRegistrationSpan.end();\n }\n\n if (localModuleDeferredRegistrationSpan) {\n localModuleDeferredRegistrationSpan.end();\n }\n\n if (remoteModuleRegistrationSpan) {\n remoteModuleRegistrationSpan.end();\n }\n\n if (remoteModuleDeferredRegistrationSpan) {\n remoteModuleDeferredRegistrationSpan.end();\n }\n\n if (dataFetchSpan) {\n dataFetchSpan.instance.end();\n }\n\n if (deferredRegistrationsUpdateSpan) {\n deferredRegistrationsUpdateSpan.end();\n }\n\n if (localModuleDeferredRegistrationsUpdateSpan) {\n localModuleDeferredRegistrationsUpdateSpan.instance.end();\n }\n\n if (remoteModuleDeferredRegistrationsUpdateSpan) {\n remoteModuleDeferredRegistrationsUpdateSpan.instance.end();\n }\n };\n\n addProtectedListener(runtime, ApplicationBootstrappingStartedEvent, () => {\n bootstrappingSpan = startSpan((options, context) => getTracer().startSpan(\"squide-bootstrapping\", options, context));\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n addProtectedListener(runtime, ApplicationBoostrappedEvent, () => {\n if (bootstrappingSpan) {\n bootstrappingSpan.end();\n bootstrappingSpanHasEnded = true;\n }\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n addProtectedListener(runtime, MswReadyEvent, () => {\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"msw-ready\");\n }\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n addProtectedListener(runtime, LocalModulesRegistrationStartedEvent, (payload: unknown) => {\n const attributes = {\n \"app.squide.module_count\": (payload as LocalModulesRegistrationStartedEventPayload).moduleCount\n };\n\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"local-module-registration-started\", attributes);\n }\n\n localModuleRegistrationSpan = startChildSpan(bootstrappingSpan, (options, context) => {\n return getTracer().startSpan(\"local-module-registration\", { ...options, attributes }, context);\n });\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n addProtectedListener(runtime, LocalModulesRegistrationCompletedEvent, (payload: unknown) => {\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"local-module-registration-completed\", {\n \"app.squide.module_count\": (payload as LocalModulesRegistrationCompletedEventPayload).moduleCount\n });\n }\n\n if (localModuleRegistrationSpan) {\n localModuleRegistrationSpan.end();\n }\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(runtime, LocalModuleRegistrationFailedEvent, (payload: unknown) => {\n const registrationError = payload as ModuleRegistrationError;\n\n if (localModuleRegistrationSpan) {\n traceError(localModuleRegistrationSpan, registrationError);\n }\n }, {\n onError: handleUnmanagedError\n });\n\n addProtectedListener(runtime, LocalModulesDeferredRegistrationStartedEvent, (payload: unknown) => {\n const attributes = {\n \"app.squide.registration_count\": (payload as LocalModulesDeferredRegistrationStartedEventPayload).registrationCount\n };\n\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"local-module-deferred-registration-started\", attributes);\n }\n\n localModuleDeferredRegistrationSpan = startChildSpan(bootstrappingSpan, (options, context) => {\n return getTracer().startSpan(\"local-module-deferred-registration\", { ...options, attributes }, context);\n });\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n addProtectedListener(runtime, LocalModulesDeferredRegistrationCompletedEvent, (payload: unknown) => {\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"local-module-deferred-registration-completed\", {\n \"app.squide.registration_count\": (payload as LocalModulesDeferredRegistrationCompletedEventPayload).registrationCount\n });\n }\n\n if (localModuleDeferredRegistrationSpan) {\n localModuleDeferredRegistrationSpan.end();\n }\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(runtime, LocalModuleDeferredRegistrationFailedEvent, (payload: unknown) => {\n const registrationError = payload as ModuleRegistrationError;\n\n if (localModuleDeferredRegistrationSpan) {\n traceError(localModuleRegistrationSpan, registrationError);\n }\n }, {\n onError: handleUnmanagedError\n });\n\n addProtectedListener(runtime, RemoteModulesRegistrationStartedEvent, (payload: unknown) => {\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(runtime, RemoteModulesRegistrationCompletedEvent, (payload: unknown) => {\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(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(runtime, RemoteModulesDeferredRegistrationStartedEvent, (payload: unknown) => {\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(runtime, RemoteModulesDeferredRegistrationCompletedEvent, (payload: unknown) => {\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(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 const handleFetchDataStarted = () => {\n dataFetchSpan = startActiveChildSpan(bootstrappingSpan, (options, context) => {\n const name = \"data-fetch\";\n const span = getTracer().startSpan(name, options, context);\n\n return {\n name,\n span\n };\n });\n };\n\n const handleDataReady = () => {\n if (dataFetchSpan) {\n endActiveSpan(dataFetchSpan);\n }\n };\n\n const handlePublicDataFetchStarted = () => {\n if (dataFetchSpan) {\n dataFetchSpan.instance.addEvent(\"public-data-fetch-started\");\n }\n };\n\n const handlePublicDataReady = () => {\n if (dataFetchSpan) {\n dataFetchSpan.instance.addEvent(\"public-data-ready\");\n }\n };\n\n const handleProtectedDataFetchStarted = () => {\n if (dataFetchSpan) {\n dataFetchSpan.instance.addEvent(\"protected-data-fetch-started\");\n }\n };\n\n const handleProtectedDataReady = () => {\n if (dataFetchSpan) {\n dataFetchSpan.instance.addEvent(\"protected-data-ready\");\n }\n };\n\n const handleDataFetchFailed = (queriesErrors: Error[]) => {\n if (dataFetchSpan) {\n queriesErrors.forEach(x => {\n traceError(dataFetchSpan.instance, x);\n });\n\n endActiveSpan(dataFetchSpan);\n\n // Global data fetch errors are unmanaged, which mean the host application bootstrapping flow\n // will be aborted and a react-router error boundary will be rendered.\n if (bootstrappingSpan) {\n bootstrappingSpan.end();\n bootstrappingSpanHasEnded = true;\n }\n }\n };\n\n reduceDataFetchEvents(\n runtime,\n handleFetchDataStarted,\n handleDataReady,\n handlePublicDataFetchStarted,\n handlePublicDataReady,\n handleProtectedDataFetchStarted,\n handleProtectedDataReady,\n handleDataFetchFailed,\n handleUnmanagedError\n );\n\n addProtectedListener(runtime, ModulesRegisteredEvent, () => {\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"modules-registered\");\n }\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n addProtectedListener(runtime, ModulesReadyEvent, () => {\n if (bootstrappingSpan) {\n bootstrappingSpan.addEvent(\"modules-ready\");\n }\n }, {\n once: true,\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(runtime, DeferredRegistrationsUpdateStartedEvent, () => {\n deferredRegistrationsUpdateSpan = startSpan((options, context) => getTracer().startSpan(\"squide-deferred-registrations-update\", options, context));\n }, {\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(runtime, DeferredRegistrationsUpdateCompletedEvent, () => {\n if (deferredRegistrationsUpdateSpan) {\n deferredRegistrationsUpdateSpan.end();\n }\n }, {\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(runtime, LocalModulesDeferredRegistrationsUpdateStartedEvent, (payload: unknown) => {\n const attributes = {\n \"app.squide.registration_count\": (payload as LocalModulesDeferredRegistrationsUpdateStartedEventPayload).registrationCount\n };\n\n if (deferredRegistrationsUpdateSpan) {\n deferredRegistrationsUpdateSpan.addEvent(\"local-module-deferred-registrations-update-started\", attributes);\n }\n\n localModuleDeferredRegistrationsUpdateSpan = startActiveChildSpan(deferredRegistrationsUpdateSpan, (options, context) => {\n const name = \"local-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(runtime, LocalModulesDeferredRegistrationsUpdateCompletedEvent, (payload: unknown) => {\n if (deferredRegistrationsUpdateSpan) {\n deferredRegistrationsUpdateSpan.addEvent(\"local-module-deferred-registrations-update-completed\", {\n \"app.squide.registration_count\": (payload as LocalModulesDeferredRegistrationsUpdateCompletedEventPayload).registrationCount\n });\n }\n\n if (localModuleDeferredRegistrationsUpdateSpan) {\n endActiveSpan(localModuleDeferredRegistrationsUpdateSpan);\n }\n }, {\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(runtime, LocalModuleDeferredRegistrationUpdateFailedEvent, (payload: unknown) => {\n const registrationError = payload as ModuleRegistrationError;\n\n if (localModuleDeferredRegistrationsUpdateSpan) {\n traceError(localModuleDeferredRegistrationsUpdateSpan.instance, registrationError);\n }\n }, {\n onError: handleUnmanagedError\n });\n\n // Can occur multiple times.\n addProtectedListener(runtime, RemoteModulesDeferredRegistrationsUpdateStartedEvent, (payload: unknown) => {\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(runtime, RemoteModulesDeferredRegistrationsUpdateCompletedEvent, (payload: unknown) => {\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(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\nexport function registerHoneycombInstrumentation(runtime: FireflyRuntime, honeycombInstrumentationClient: HoneycombInstrumentationPartialClient) {\n try {\n registerActiveSpanStack();\n\n // Dynamically registering this request hook function to nest the HTTP requests\n // of squide bootstrapping under the appropriate Honeycomb span.\n honeycombInstrumentationClient.registerFetchRequestHook(createOverrideFetchRequestSpanWithActiveSpanContext(runtime.logger));\n\n registerTrackingListeners(runtime);\n\n runtime.logger.information(\"[squide] Honeycomb instrumentation is registered.\");\n } catch (error: unknown) {\n runtime.logger\n .withText(\"[squide] An error occurred while registering Honeycomb instrumentation:\")\n .withError(error as Error)\n .error();\n }\n}\n"],"names":["LocalModuleDeferredRegistrationFailedEvent","LocalModuleDeferredRegistrationUpdateFailedEvent","LocalModuleRegistrationFailedEvent","LocalModulesDeferredRegistrationCompletedEvent","LocalModulesDeferredRegistrationStartedEvent","LocalModulesDeferredRegistrationsUpdateCompletedEvent","LocalModulesDeferredRegistrationsUpdateStartedEvent","LocalModulesRegistrationCompletedEvent","LocalModulesRegistrationStartedEvent","DeferredRegistrationsUpdateCompletedEvent","DeferredRegistrationsUpdateStartedEvent","RemoteModuleDeferredRegistrationFailedEvent","RemoteModuleDeferredRegistrationUpdateFailedEvent","RemoteModuleRegistrationFailedEvent","RemoteModulesDeferredRegistrationCompletedEvent","RemoteModulesDeferredRegistrationStartedEvent","RemoteModulesDeferredRegistrationsUpdateCompletedEvent","RemoteModulesDeferredRegistrationsUpdateStartedEvent","RemoteModulesRegistrationCompletedEvent","RemoteModulesRegistrationStartedEvent","ApplicationBoostrappedEvent","ModulesReadyEvent","ModulesRegisteredEvent","MswReadyEvent","ProtectedDataReadyEvent","PublicDataReadyEvent","ApplicationBootstrappingStartedEvent","ProtectedDataFetchFailedEvent","ProtectedDataFetchStartedEvent","PublicDataFetchFailedEvent","PublicDataFetchStartedEvent","createOverrideFetchRequestSpanWithActiveSpanContext","registerActiveSpanStack","getTracer","endActiveSpan","startActiveChildSpan","startChildSpan","startSpan","traceError","addProtectedListener","runtime","eventName","callback","options","protectedCallback","args","error","reduceDataFetchEvents","onDataFetchStarted","onDataReady","onPublicDataFetchStarted","onPublicDataReady","onProtectedDataFetchStarted","onProtectedDataReady","onDataFetchFailed","onUnmanagedError","dataFetchState","payload","handleDataFetchFailed","registerTrackingListeners","bootstrappingSpan","bootstrappingSpanHasEnded","localModuleRegistrationSpan","localModuleDeferredRegistrationSpan","remoteModuleRegistrationSpan","remoteModuleDeferredRegistrationSpan","dataFetchSpan","deferredRegistrationsUpdateSpan","localModuleDeferredRegistrationsUpdateSpan","remoteModuleDeferredRegistrationsUpdateSpan","handleUnmanagedError","context","attributes","registrationError","handleFetchDataStarted","name","span","handleDataReady","handlePublicDataFetchStarted","handlePublicDataReady","handleProtectedDataFetchStarted","handleProtectedDataReady","queriesErrors","x","registerHoneycombInstrumentation","honeycombInstrumentationClient"],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type ModuleRegisterFunction, type RegisterModulesOptions } from "@squide/core";
|
|
2
2
|
import { type RemoteDefinition } from "@squide/module-federation";
|
|
3
|
+
import type { HoneycombInstrumentationPartialClient } from "@workleap-telemetry/core";
|
|
3
4
|
import { FireflyRuntime, type FireflyRuntimeOptions } from "./FireflyRuntime.tsx";
|
|
4
5
|
export declare const ApplicationBootstrappingStartedEvent = "squide-app-bootstrapping-started";
|
|
5
6
|
export type OnInitializationErrorFunction = (error: unknown) => void;
|
|
@@ -7,6 +8,7 @@ export type StartMswFunction<TRuntime = FireflyRuntime> = (runtime: TRuntime) =>
|
|
|
7
8
|
export interface InitializeFireflyOptions<TRuntime extends FireflyRuntime, TContext = unknown, TData = unknown> extends RegisterModulesOptions<TContext>, FireflyRuntimeOptions {
|
|
8
9
|
localModules?: ModuleRegisterFunction<TRuntime, TContext, TData>[];
|
|
9
10
|
remotes?: RemoteDefinition[];
|
|
11
|
+
honeycombInstrumentationClient?: HoneycombInstrumentationPartialClient;
|
|
10
12
|
startMsw?: StartMswFunction<FireflyRuntime>;
|
|
11
13
|
onError?: OnInitializationErrorFunction;
|
|
12
14
|
}
|
|
@@ -59,7 +59,7 @@ function bootstrap(runtime, options = {}) {
|
|
|
59
59
|
}
|
|
60
60
|
let hasExecuted = false;
|
|
61
61
|
function initializeFirefly(options = {}) {
|
|
62
|
-
const { mode, useMsw, loggers, plugins, onError } = options;
|
|
62
|
+
const { mode, useMsw, loggers, plugins, honeycombInstrumentationClient, onError } = options;
|
|
63
63
|
if (hasExecuted) {
|
|
64
64
|
throw new Error("[squide] A squide application can only be initialized once. Did you call the \"initializeSquide\" function twice?");
|
|
65
65
|
}
|
|
@@ -70,7 +70,7 @@ function initializeFirefly(options = {}) {
|
|
|
70
70
|
loggers,
|
|
71
71
|
plugins
|
|
72
72
|
});
|
|
73
|
-
initializeHoneycomb(runtime).catch((error)=>{
|
|
73
|
+
initializeHoneycomb(runtime, honeycombInstrumentationClient).catch((error)=>{
|
|
74
74
|
if (onError) {
|
|
75
75
|
onError(error);
|
|
76
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initializeFirefly.js","sources":["webpack://@squide/firefly/./src/initializeFirefly.ts"],"sourcesContent":["import { isFunction, registerLocalModules, type ModuleRegisterFunction, type RegisterModulesOptions } from \"@squide/core\";\nimport { registerRemoteModules, type RemoteDefinition } from \"@squide/module-federation\";\nimport { setMswAsReady } from \"@squide/msw\";\nimport { FireflyRuntime, type FireflyRuntimeOptions } from \"./FireflyRuntime.tsx\";\nimport { initializeHoneycomb } from \"./honeycomb/initializeHoneycomb.ts\";\n\nexport const ApplicationBootstrappingStartedEvent = \"squide-app-bootstrapping-started\";\n\nexport type OnInitializationErrorFunction = (error: unknown) => void;\n\nexport type StartMswFunction<TRuntime = FireflyRuntime> = (runtime: TRuntime) => Promise<void>;\n\nexport interface InitializeFireflyOptions<TRuntime extends FireflyRuntime, TContext = unknown, TData = unknown> extends RegisterModulesOptions<TContext>, FireflyRuntimeOptions {\n localModules?: ModuleRegisterFunction<TRuntime, TContext, TData>[];\n remotes?: RemoteDefinition[];\n startMsw?: StartMswFunction<FireflyRuntime>;\n onError?: OnInitializationErrorFunction;\n}\n\nfunction propagateRegistrationErrors(results: PromiseSettledResult<unknown[]>, onError: OnInitializationErrorFunction) {\n if (results) {\n if (results.status === \"fulfilled\") {\n results.value.forEach(x => {\n onError(x);\n });\n }\n }\n}\n\nexport function bootstrap<TRuntime extends FireflyRuntime = FireflyRuntime, TContext = unknown, TData = unknown>(runtime: TRuntime, options: InitializeFireflyOptions<TRuntime, TContext, TData> = {}) {\n const {\n localModules = [],\n remotes = [],\n startMsw,\n onError,\n context\n } = options;\n\n runtime.eventBus.dispatch(ApplicationBootstrappingStartedEvent);\n\n Promise.allSettled([\n registerLocalModules<TRuntime, TContext, TData>(localModules, runtime, { context }),\n registerRemoteModules(remotes, runtime, { context })\n ]).then(results => {\n if (runtime.isMswEnabled) {\n if (!isFunction(startMsw)) {\n throw new Error(\"[squide] When MSW is enabled, the \\\"startMsw\\\" function must be provided.\");\n }\n\n startMsw(runtime)\n .then(() => {\n setMswAsReady();\n })\n .catch((error: unknown) => {\n runtime.logger\n .withText(\"[squide] An error occured while starting MSW.\")\n .withError(error as Error)\n .error();\n });\n }\n\n if (onError) {\n propagateRegistrationErrors(results[0], onError);\n propagateRegistrationErrors(results[1], onError);\n }\n });\n}\n\nlet hasExecuted = false;\n\nexport function initializeFirefly<TContext = unknown, TData = unknown>(options: InitializeFireflyOptions<FireflyRuntime, TContext, TData> = {}) {\n const {\n mode,\n useMsw,\n loggers,\n plugins,\n onError\n } = options;\n\n if (hasExecuted) {\n throw new Error(\"[squide] A squide application can only be initialized once. Did you call the \\\"initializeSquide\\\" function twice?\");\n }\n\n hasExecuted = true;\n\n const runtime = new FireflyRuntime({\n mode,\n useMsw,\n loggers,\n plugins\n });\n\n initializeHoneycomb(runtime)\n .catch((error: unknown) => {\n if (onError) {\n onError(error);\n }\n })\n .finally(() => {\n bootstrap(runtime, options);\n });\n\n return runtime;\n}\n\nexport function __resetHasExecuteGuard() {\n hasExecuted = false;\n}\n"],"names":["isFunction","registerLocalModules","registerRemoteModules","setMswAsReady","FireflyRuntime","initializeHoneycomb","ApplicationBootstrappingStartedEvent","propagateRegistrationErrors","results","onError","x","bootstrap","runtime","options","localModules","remotes","startMsw","context","Promise","Error","error","hasExecuted","initializeFirefly","mode","useMsw","loggers","plugins","__resetHasExecuteGuard"],"mappings":";;;;;;;;;;;;;;;;;AAA0H;AACjC;AAC7C;
|
|
1
|
+
{"version":3,"file":"initializeFirefly.js","sources":["webpack://@squide/firefly/./src/initializeFirefly.ts"],"sourcesContent":["import { isFunction, registerLocalModules, type ModuleRegisterFunction, type RegisterModulesOptions } from \"@squide/core\";\nimport { registerRemoteModules, type RemoteDefinition } from \"@squide/module-federation\";\nimport { setMswAsReady } from \"@squide/msw\";\nimport type { HoneycombInstrumentationPartialClient } from \"@workleap-telemetry/core\";\nimport { FireflyRuntime, type FireflyRuntimeOptions } from \"./FireflyRuntime.tsx\";\nimport { initializeHoneycomb } from \"./honeycomb/initializeHoneycomb.ts\";\n\nexport const ApplicationBootstrappingStartedEvent = \"squide-app-bootstrapping-started\";\n\nexport type OnInitializationErrorFunction = (error: unknown) => void;\n\nexport type StartMswFunction<TRuntime = FireflyRuntime> = (runtime: TRuntime) => Promise<void>;\n\nexport interface InitializeFireflyOptions<TRuntime extends FireflyRuntime, TContext = unknown, TData = unknown> extends RegisterModulesOptions<TContext>, FireflyRuntimeOptions {\n localModules?: ModuleRegisterFunction<TRuntime, TContext, TData>[];\n remotes?: RemoteDefinition[];\n honeycombInstrumentationClient?: HoneycombInstrumentationPartialClient;\n startMsw?: StartMswFunction<FireflyRuntime>;\n onError?: OnInitializationErrorFunction;\n}\n\nfunction propagateRegistrationErrors(results: PromiseSettledResult<unknown[]>, onError: OnInitializationErrorFunction) {\n if (results) {\n if (results.status === \"fulfilled\") {\n results.value.forEach(x => {\n onError(x);\n });\n }\n }\n}\n\nexport function bootstrap<TRuntime extends FireflyRuntime = FireflyRuntime, TContext = unknown, TData = unknown>(runtime: TRuntime, options: InitializeFireflyOptions<TRuntime, TContext, TData> = {}) {\n const {\n localModules = [],\n remotes = [],\n startMsw,\n onError,\n context\n } = options;\n\n runtime.eventBus.dispatch(ApplicationBootstrappingStartedEvent);\n\n Promise.allSettled([\n registerLocalModules<TRuntime, TContext, TData>(localModules, runtime, { context }),\n registerRemoteModules(remotes, runtime, { context })\n ]).then(results => {\n if (runtime.isMswEnabled) {\n if (!isFunction(startMsw)) {\n throw new Error(\"[squide] When MSW is enabled, the \\\"startMsw\\\" function must be provided.\");\n }\n\n startMsw(runtime)\n .then(() => {\n setMswAsReady();\n })\n .catch((error: unknown) => {\n runtime.logger\n .withText(\"[squide] An error occured while starting MSW.\")\n .withError(error as Error)\n .error();\n });\n }\n\n if (onError) {\n propagateRegistrationErrors(results[0], onError);\n propagateRegistrationErrors(results[1], onError);\n }\n });\n}\n\nlet hasExecuted = false;\n\nexport function initializeFirefly<TContext = unknown, TData = unknown>(options: InitializeFireflyOptions<FireflyRuntime, TContext, TData> = {}) {\n const {\n mode,\n useMsw,\n loggers,\n plugins,\n honeycombInstrumentationClient,\n onError\n } = options;\n\n if (hasExecuted) {\n throw new Error(\"[squide] A squide application can only be initialized once. Did you call the \\\"initializeSquide\\\" function twice?\");\n }\n\n hasExecuted = true;\n\n const runtime = new FireflyRuntime({\n mode,\n useMsw,\n loggers,\n plugins\n });\n\n initializeHoneycomb(runtime, honeycombInstrumentationClient)\n .catch((error: unknown) => {\n if (onError) {\n onError(error);\n }\n })\n .finally(() => {\n bootstrap(runtime, options);\n });\n\n return runtime;\n}\n\nexport function __resetHasExecuteGuard() {\n hasExecuted = false;\n}\n"],"names":["isFunction","registerLocalModules","registerRemoteModules","setMswAsReady","FireflyRuntime","initializeHoneycomb","ApplicationBootstrappingStartedEvent","propagateRegistrationErrors","results","onError","x","bootstrap","runtime","options","localModules","remotes","startMsw","context","Promise","Error","error","hasExecuted","initializeFirefly","mode","useMsw","loggers","plugins","honeycombInstrumentationClient","__resetHasExecuteGuard"],"mappings":";;;;;;;;;;;;;;;;;AAA0H;AACjC;AAC7C;AAEsC;AACT;AAElE,MAAMM,uCAAuC,mCAAmC;AAcvF,SAASC,4BAA4BC,OAAwC,EAAEC,OAAsC;IACjH,IAAID,SAAS;QACT,IAAIA,QAAQ,MAAM,KAAK,aAAa;YAChCA,QAAQ,KAAK,CAAC,OAAO,CAACE,CAAAA;gBAClBD,QAAQC;YACZ;QACJ;IACJ;AACJ;AAEO,SAASC,UAAiGC,OAAiB,EAAEC,UAA+D,CAAC,CAAC;IACjM,MAAM,EACFC,eAAe,EAAE,EACjBC,UAAU,EAAE,EACZC,QAAQ,EACRP,OAAO,EACPQ,OAAO,EACV,GAAGJ;IAEJD,QAAQ,QAAQ,CAAC,QAAQ,CAACN;IAE1BY,QAAQ,UAAU,CAAC;QACfjB,oBAAoBA,CAA4Ba,cAAcF,SAAS;YAAEK;QAAQ;QACjFf,qBAAqBA,CAACa,SAASH,SAAS;YAAEK;QAAQ;KACrD,EAAE,IAAI,CAACT,CAAAA;QACJ,IAAII,QAAQ,YAAY,EAAE;YACtB,IAAI,CAACZ,UAAUA,CAACgB,WAAW;gBACvB,MAAM,IAAIG,MAAM;YACpB;YAEAH,SAASJ,SACJ,IAAI,CAAC;gBACFT,aAAaA;YACjB,GACC,KAAK,CAAC,CAACiB;gBACJR,QAAQ,MAAM,CACT,QAAQ,CAAC,iDACT,SAAS,CAACQ,OACV,KAAK;YACd;QACR;QAEA,IAAIX,SAAS;YACTF,4BAA4BC,OAAO,CAAC,EAAE,EAAEC;YACxCF,4BAA4BC,OAAO,CAAC,EAAE,EAAEC;QAC5C;IACJ;AACJ;AAEA,IAAIY,cAAc;AAEX,SAASC,kBAAuDT,UAAqE,CAAC,CAAC;IAC1I,MAAM,EACFU,IAAI,EACJC,MAAM,EACNC,OAAO,EACPC,OAAO,EACPC,8BAA8B,EAC9BlB,OAAO,EACV,GAAGI;IAEJ,IAAIQ,aAAa;QACb,MAAM,IAAIF,MAAM;IACpB;IAEAE,cAAc;IAEd,MAAMT,UAAU,IAAIR,cAAcA,CAAC;QAC/BmB;QACAC;QACAC;QACAC;IACJ;IAEArB,mBAAmBA,CAACO,SAASe,gCACxB,KAAK,CAAC,CAACP;QACJ,IAAIX,SAAS;YACTA,QAAQW;QACZ;IACJ,GACC,OAAO,CAAC;QACLT,UAAUC,SAASC;IACvB;IAEJ,OAAOD;AACX;AAEO,SAASgB;IACZP,cAAc;AAClB"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@squide/firefly",
|
|
3
3
|
"author": "Workleap",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "15.0.0",
|
|
5
5
|
"description": "Helpers to facilitate the creation of an application with the Squide firefly technology stack.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"repository": {
|
|
@@ -29,34 +29,35 @@
|
|
|
29
29
|
],
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"@opentelemetry/api": "^1.9.0",
|
|
32
|
-
"@tanstack/react-query": "^5.
|
|
33
|
-
"msw": "^2.11.
|
|
32
|
+
"@tanstack/react-query": "^5.90.2",
|
|
33
|
+
"msw": "^2.11.3",
|
|
34
34
|
"react": "^18.0.0 || ^19.0.0",
|
|
35
35
|
"react-dom": "^18.0.0 || ^19.0.0",
|
|
36
|
-
"react-router": "^7.
|
|
36
|
+
"react-router": "^7.9.3"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
+
"@workleap-telemetry/core": "^1.0.1",
|
|
39
40
|
"@workleap/logging": "^1.3.0",
|
|
40
|
-
"uuid": "^
|
|
41
|
-
"@squide/core": "6.1.
|
|
42
|
-
"@squide/module-federation": "7.0.
|
|
43
|
-
"@squide/msw": "4.0.
|
|
44
|
-
"@squide/react-router": "8.1.
|
|
41
|
+
"uuid": "^13.0.0",
|
|
42
|
+
"@squide/core": "6.1.1",
|
|
43
|
+
"@squide/module-federation": "7.0.2",
|
|
44
|
+
"@squide/msw": "4.0.2",
|
|
45
|
+
"@squide/react-router": "8.1.1"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
47
|
-
"@rsbuild/core": "1.5.
|
|
48
|
-
"@rslib/core": "0.
|
|
48
|
+
"@rsbuild/core": "1.5.13",
|
|
49
|
+
"@rslib/core": "0.15.0",
|
|
49
50
|
"@testing-library/react": "16.3.0",
|
|
50
|
-
"@types/react": "19.
|
|
51
|
-
"@types/react-dom": "19.1
|
|
52
|
-
"@typescript-eslint/parser": "8.
|
|
53
|
-
"@vitejs/plugin-react": "5.0.
|
|
51
|
+
"@types/react": "19.2.2",
|
|
52
|
+
"@types/react-dom": "19.2.1",
|
|
53
|
+
"@typescript-eslint/parser": "8.46.0",
|
|
54
|
+
"@vitejs/plugin-react": "5.0.4",
|
|
54
55
|
"@workleap/eslint-plugin": "3.5.0",
|
|
55
56
|
"@workleap/rslib-configs": "1.1.0",
|
|
56
57
|
"@workleap/typescript-configs": "3.0.4",
|
|
57
58
|
"eslint": "8.57.0",
|
|
58
|
-
"happy-dom": "
|
|
59
|
-
"typescript": "5.9.
|
|
59
|
+
"happy-dom": "19.0.2",
|
|
60
|
+
"typescript": "5.9.3",
|
|
60
61
|
"vitest": "3.2.4"
|
|
61
62
|
},
|
|
62
63
|
"sideEffects": false,
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
+
import type { HoneycombInstrumentationPartialClient } from "@workleap-telemetry/core";
|
|
1
2
|
import type { FireflyRuntime } from "../FireflyRuntime.tsx";
|
|
2
|
-
import { canRegisterHoneycombInstrumentation } from "./canRegisterHoneycombInstrumentation.ts";
|
|
3
3
|
|
|
4
|
-
export async function initializeHoneycomb(runtime: FireflyRuntime) {
|
|
5
|
-
if (
|
|
4
|
+
export async function initializeHoneycomb(runtime: FireflyRuntime, honeycombInstrumentationClient?: HoneycombInstrumentationPartialClient) {
|
|
5
|
+
if (honeycombInstrumentationClient) {
|
|
6
6
|
try {
|
|
7
7
|
// Dynamically import the Honeycomb instrumentation to prevent loading all the Honeycomb libraries
|
|
8
8
|
// if Honeycomb instrumentation is not registered by the hosting application.
|
|
9
9
|
const mod = await import("./registerHoneycombInstrumentation.ts");
|
|
10
10
|
|
|
11
|
-
mod.registerHoneycombInstrumentation(runtime);
|
|
11
|
+
mod.registerHoneycombInstrumentation(runtime, honeycombInstrumentationClient);
|
|
12
12
|
} catch (error: unknown) {
|
|
13
|
-
runtime.logger.error("[squide] Failed to register Honeycomb instrumentation. The \"./registerHoneycombInstrumentation.ts\" cannot be imported.");
|
|
13
|
+
runtime.logger.error("[squide] Failed to register Honeycomb instrumentation. The \"./registerHoneycombInstrumentation.ts\" file cannot be imported.");
|
|
14
14
|
|
|
15
15
|
throw error;
|
|
16
16
|
}
|
|
17
17
|
} else {
|
|
18
|
-
runtime.logger.information("[squide] Cannot register Honeycomb instrumentation because the host application
|
|
18
|
+
runtime.logger.information("[squide] Cannot register Honeycomb instrumentation because the host application hasn't provided a client.");
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
|
|
@@ -40,6 +40,7 @@ import {
|
|
|
40
40
|
RemoteModulesRegistrationStartedEvent,
|
|
41
41
|
type RemoteModulesRegistrationStartedEventPayload
|
|
42
42
|
} from "@squide/module-federation";
|
|
43
|
+
import type { HoneycombInstrumentationPartialClient } from "@workleap-telemetry/core";
|
|
43
44
|
import { ApplicationBoostrappedEvent, type AppRouterWaitState, ModulesReadyEvent, ModulesRegisteredEvent, MswReadyEvent, ProtectedDataReadyEvent, PublicDataReadyEvent } from "../AppRouterReducer.ts";
|
|
44
45
|
import type { FireflyRuntime } from "../FireflyRuntime.tsx";
|
|
45
46
|
import { ApplicationBootstrappingStartedEvent } from "../initializeFirefly.ts";
|
|
@@ -630,38 +631,17 @@ function registerTrackingListeners(runtime: FireflyRuntime) {
|
|
|
630
631
|
});
|
|
631
632
|
}
|
|
632
633
|
|
|
633
|
-
function
|
|
634
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
635
|
-
// @ts-ignore
|
|
636
|
-
if (globalThis.__WLP_HONEYCOMB_REGISTER_DYNAMIC_FETCH_REQUEST_HOOK__) {
|
|
637
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
638
|
-
// @ts-ignore
|
|
639
|
-
return globalThis.__WLP_HONEYCOMB_REGISTER_DYNAMIC_FETCH_REQUEST_HOOK__;
|
|
640
|
-
}
|
|
641
|
-
|
|
642
|
-
// Fallback to fix an error. Will remove soon.
|
|
643
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
644
|
-
// @ts-ignore
|
|
645
|
-
return globalThis.__WLP_HONEYCOMB_REGISTER_DYNAMIC_FETCH_REQUEST_HOOK;
|
|
646
|
-
}
|
|
647
|
-
|
|
648
|
-
export function registerHoneycombInstrumentation(runtime: FireflyRuntime) {
|
|
634
|
+
export function registerHoneycombInstrumentation(runtime: FireflyRuntime, honeycombInstrumentationClient: HoneycombInstrumentationPartialClient) {
|
|
649
635
|
try {
|
|
650
|
-
|
|
636
|
+
registerActiveSpanStack();
|
|
651
637
|
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
const activeSpanOverrideFunction = createOverrideFetchRequestSpanWithActiveSpanContext(runtime.logger);
|
|
656
|
-
|
|
657
|
-
// Dynamically registering this request hook function to nest the HTTP requests
|
|
658
|
-
// of squide bootstrapping under the appropriate Honeycomb span.
|
|
659
|
-
registerFetchRequestHookFunction(activeSpanOverrideFunction);
|
|
660
|
-
} else {
|
|
661
|
-
runtime.logger.warning("[squide] Cannot register Honeycomb fetch request hook because \"globalThis.__WLP_HONEYCOMB_REGISTER_DYNAMIC_FETCH_REQUEST_HOOK__\" is not available. Honeycomb instrumentation is still functional but in degraded mode.");
|
|
662
|
-
}
|
|
638
|
+
// Dynamically registering this request hook function to nest the HTTP requests
|
|
639
|
+
// of squide bootstrapping under the appropriate Honeycomb span.
|
|
640
|
+
honeycombInstrumentationClient.registerFetchRequestHook(createOverrideFetchRequestSpanWithActiveSpanContext(runtime.logger));
|
|
663
641
|
|
|
664
642
|
registerTrackingListeners(runtime);
|
|
643
|
+
|
|
644
|
+
runtime.logger.information("[squide] Honeycomb instrumentation is registered.");
|
|
665
645
|
} catch (error: unknown) {
|
|
666
646
|
runtime.logger
|
|
667
647
|
.withText("[squide] An error occurred while registering Honeycomb instrumentation:")
|
package/src/initializeFirefly.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { isFunction, registerLocalModules, type ModuleRegisterFunction, type RegisterModulesOptions } from "@squide/core";
|
|
2
2
|
import { registerRemoteModules, type RemoteDefinition } from "@squide/module-federation";
|
|
3
3
|
import { setMswAsReady } from "@squide/msw";
|
|
4
|
+
import type { HoneycombInstrumentationPartialClient } from "@workleap-telemetry/core";
|
|
4
5
|
import { FireflyRuntime, type FireflyRuntimeOptions } from "./FireflyRuntime.tsx";
|
|
5
6
|
import { initializeHoneycomb } from "./honeycomb/initializeHoneycomb.ts";
|
|
6
7
|
|
|
@@ -13,6 +14,7 @@ export type StartMswFunction<TRuntime = FireflyRuntime> = (runtime: TRuntime) =>
|
|
|
13
14
|
export interface InitializeFireflyOptions<TRuntime extends FireflyRuntime, TContext = unknown, TData = unknown> extends RegisterModulesOptions<TContext>, FireflyRuntimeOptions {
|
|
14
15
|
localModules?: ModuleRegisterFunction<TRuntime, TContext, TData>[];
|
|
15
16
|
remotes?: RemoteDefinition[];
|
|
17
|
+
honeycombInstrumentationClient?: HoneycombInstrumentationPartialClient;
|
|
16
18
|
startMsw?: StartMswFunction<FireflyRuntime>;
|
|
17
19
|
onError?: OnInitializationErrorFunction;
|
|
18
20
|
}
|
|
@@ -74,6 +76,7 @@ export function initializeFirefly<TContext = unknown, TData = unknown>(options:
|
|
|
74
76
|
useMsw,
|
|
75
77
|
loggers,
|
|
76
78
|
plugins,
|
|
79
|
+
honeycombInstrumentationClient,
|
|
77
80
|
onError
|
|
78
81
|
} = options;
|
|
79
82
|
|
|
@@ -90,7 +93,7 @@ export function initializeFirefly<TContext = unknown, TData = unknown>(options:
|
|
|
90
93
|
plugins
|
|
91
94
|
});
|
|
92
95
|
|
|
93
|
-
initializeHoneycomb(runtime)
|
|
96
|
+
initializeHoneycomb(runtime, honeycombInstrumentationClient)
|
|
94
97
|
.catch((error: unknown) => {
|
|
95
98
|
if (onError) {
|
|
96
99
|
onError(error);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function canRegisterHoneycombInstrumentation(): boolean;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
;// CONCATENATED MODULE: ./src/honeycomb/canRegisterHoneycombInstrumentation.ts
|
|
3
|
-
function canRegisterHoneycombInstrumentation() {
|
|
4
|
-
// The second one is due to an error. Will be able to remove soon.
|
|
5
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
6
|
-
// @ts-ignore
|
|
7
|
-
return globalThis.__WLP_HONEYCOMB_INSTRUMENTATION_IS_REGISTERED__ === true || globalThis.__WLP_HONEYCOMB_INSTRUMENTATION_IS_REGISTERED === true;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export { canRegisterHoneycombInstrumentation };
|
|
11
|
-
|
|
12
|
-
//# sourceMappingURL=canRegisterHoneycombInstrumentation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"honeycomb/canRegisterHoneycombInstrumentation.js","sources":["webpack://@squide/firefly/./src/honeycomb/canRegisterHoneycombInstrumentation.ts"],"sourcesContent":["export function canRegisterHoneycombInstrumentation() {\n // The second one is due to an error. Will be able to remove soon.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return globalThis.__WLP_HONEYCOMB_INSTRUMENTATION_IS_REGISTERED__ === true || globalThis.__WLP_HONEYCOMB_INSTRUMENTATION_IS_REGISTERED === true;\n}\n"],"names":["canRegisterHoneycombInstrumentation","globalThis"],"mappings":";;AAAO,SAASA;IACZ,kEAAkE;IAClE,6DAA6D;IAC7D,aAAa;IACb,OAAOC,WAAW,+CAA+C,KAAK,QAAQA,WAAW,6CAA6C,KAAK;AAC/I"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export function canRegisterHoneycombInstrumentation() {
|
|
2
|
-
// The second one is due to an error. Will be able to remove soon.
|
|
3
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
4
|
-
// @ts-ignore
|
|
5
|
-
return globalThis.__WLP_HONEYCOMB_INSTRUMENTATION_IS_REGISTERED__ === true || globalThis.__WLP_HONEYCOMB_INSTRUMENTATION_IS_REGISTERED === true;
|
|
6
|
-
}
|