@equinor/fusion-framework-module-analytics 3.0.0 → 3.0.2
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 +48 -0
- package/dist/esm/AnalyticsConfigurator.js +11 -2
- package/dist/esm/AnalyticsConfigurator.js.map +1 -1
- package/dist/esm/AnalyticsProvider.js +12 -2
- package/dist/esm/AnalyticsProvider.js.map +1 -1
- package/dist/esm/adapters/ConsoleAnalyticsAdapter.js +7 -1
- package/dist/esm/adapters/ConsoleAnalyticsAdapter.js.map +1 -1
- package/dist/esm/adapters/FusionAnalyticsAdapter.js +7 -2
- package/dist/esm/adapters/FusionAnalyticsAdapter.js.map +1 -1
- package/dist/esm/collectors/AppLoadedCollector.js +11 -3
- package/dist/esm/collectors/AppLoadedCollector.js.map +1 -1
- package/dist/esm/collectors/AppSelectedCollector.js +11 -2
- package/dist/esm/collectors/AppSelectedCollector.js.map +1 -1
- package/dist/esm/collectors/ContextSelectedCollector.js +11 -2
- package/dist/esm/collectors/ContextSelectedCollector.js.map +1 -1
- package/dist/esm/collectors/{BaseCollector.js → create-schema.js} +4 -1
- package/dist/esm/collectors/create-schema.js.map +1 -0
- package/dist/esm/collectors/utils/app-key-schema.js +14 -0
- package/dist/esm/collectors/utils/app-key-schema.js.map +1 -0
- package/dist/esm/collectors/utils/app-schema.js +19 -0
- package/dist/esm/collectors/utils/app-schema.js.map +1 -0
- package/dist/esm/collectors/utils/context-schema.js +19 -0
- package/dist/esm/collectors/utils/context-schema.js.map +1 -0
- package/dist/esm/collectors/utils/extract-app-key-metadata.js +12 -0
- package/dist/esm/collectors/utils/extract-app-key-metadata.js.map +1 -0
- package/dist/esm/collectors/utils/extract-app-metadata.js +17 -0
- package/dist/esm/collectors/utils/extract-app-metadata.js.map +1 -0
- package/dist/esm/collectors/utils/extract-context-metadata.js +16 -0
- package/dist/esm/collectors/utils/extract-context-metadata.js.map +1 -0
- package/dist/esm/enable-analytics.js +1 -0
- package/dist/esm/enable-analytics.js.map +1 -1
- package/dist/esm/logExporters/fusionOTLPLogExporter/HttpClientExporterTransport.js +5 -0
- package/dist/esm/logExporters/fusionOTLPLogExporter/HttpClientExporterTransport.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/AnalyticsConfigurator.d.ts +3 -0
- package/dist/types/AnalyticsProvider.d.ts +3 -0
- package/dist/types/adapters/ConsoleAnalyticsAdapter.d.ts +7 -1
- package/dist/types/adapters/FusionAnalyticsAdapter.d.ts +6 -1
- package/dist/types/collectors/AppLoadedCollector.d.ts +9 -3
- package/dist/types/collectors/AppSelectedCollector.d.ts +8 -2
- package/dist/types/collectors/ContextSelectedCollector.d.ts +8 -2
- package/dist/types/collectors/{BaseCollector.d.ts → create-schema.d.ts} +2 -0
- package/dist/types/collectors/utils/app-key-schema.d.ts +12 -0
- package/dist/types/collectors/utils/app-schema.d.ts +18 -0
- package/dist/types/collectors/utils/{extractContextMetadata.d.ts → context-schema.d.ts} +0 -8
- package/dist/types/collectors/utils/extract-app-key-metadata.d.ts +10 -0
- package/dist/types/collectors/utils/extract-app-metadata.d.ts +10 -0
- package/dist/types/collectors/utils/extract-context-metadata.d.ts +10 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +14 -14
- package/src/AnalyticsConfigurator.ts +7 -0
- package/src/AnalyticsProvider.ts +12 -2
- package/src/adapters/ConsoleAnalyticsAdapter.ts +7 -1
- package/src/adapters/FusionAnalyticsAdapter.ts +7 -2
- package/src/collectors/AppLoadedCollector.ts +11 -7
- package/src/collectors/AppSelectedCollector.ts +11 -6
- package/src/collectors/ContextSelectedCollector.ts +11 -6
- package/src/collectors/{BaseCollector.ts → create-schema.ts} +3 -0
- package/src/collectors/utils/app-key-schema.ts +17 -0
- package/src/collectors/utils/app-schema.ts +22 -0
- package/src/collectors/utils/{extractContextMetadata.ts → context-schema.ts} +0 -17
- package/src/collectors/utils/extract-app-key-metadata.ts +15 -0
- package/src/collectors/utils/extract-app-metadata.ts +20 -0
- package/src/collectors/utils/extract-context-metadata.ts +19 -0
- package/src/enable-analytics.ts +1 -0
- package/src/logExporters/fusionOTLPLogExporter/HttpClientExporterTransport.ts +5 -0
- package/src/version.ts +1 -1
- package/dist/esm/collectors/BaseCollector.js.map +0 -1
- package/dist/esm/collectors/utils/extractAppMetadata.js +0 -58
- package/dist/esm/collectors/utils/extractAppMetadata.js.map +0 -1
- package/dist/esm/collectors/utils/extractContextMetadata.js +0 -34
- package/dist/esm/collectors/utils/extractContextMetadata.js.map +0 -1
- package/dist/types/collectors/utils/extractAppMetadata.d.ts +0 -44
- package/src/collectors/utils/extractAppMetadata.ts +0 -68
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
# @equinor/fusion-framework-module-analytics
|
|
2
2
|
|
|
3
|
+
## 3.0.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 80c3e4a: Internal: resolve fusion-lint warnings across the analytics module.
|
|
8
|
+
- Added intent comments above control-flow and RxJS `.pipe()` chains that were missing them.
|
|
9
|
+
- Added missing constructor and method TSDoc (including `@param`/`@returns` tags).
|
|
10
|
+
- Split `extractAppMetadata.ts` and `extractContextMetadata.ts` so each export lives in its own file, satisfying the `single-export-per-file` rule while preserving existing TSDoc.
|
|
11
|
+
- Replaced ad-hoc `@TODO` comments in `AnalyticsProvider` with references to [#5098](https://github.com/equinor/fusion-framework/issues/5098).
|
|
12
|
+
|
|
13
|
+
No public API changes.
|
|
14
|
+
|
|
15
|
+
- 80c3e4a: Internal: renamed 45 source files across these packages to comply with the `filename-convention` lint rule (e.g. `AIConfigurator.ts` → `AiConfigurator.ts`, `BookmarkProvider.actions.ts` → `bookmark-actions.ts`, `errors/app-build-error.ts` → `errors/AppBuildError.ts`, `plugins/api/plugin.ts` → `plugins/api/ApiPlugin.ts`, `errors.ts` → `UnsupportedApiVersion.ts`, etc.). Also added `enable-signalr.ts` to the `filename-convention` exclude list since the suggested rename would incorrectly split the "SignalR" brand name. No public API changes.
|
|
16
|
+
- Updated dependencies [80c3e4a]
|
|
17
|
+
- Updated dependencies [80c3e4a]
|
|
18
|
+
- Updated dependencies [80c3e4a]
|
|
19
|
+
- Updated dependencies [80c3e4a]
|
|
20
|
+
- Updated dependencies [80c3e4a]
|
|
21
|
+
- Updated dependencies [80c3e4a]
|
|
22
|
+
- Updated dependencies [80c3e4a]
|
|
23
|
+
- Updated dependencies [80c3e4a]
|
|
24
|
+
- Updated dependencies [80c3e4a]
|
|
25
|
+
- Updated dependencies [80c3e4a]
|
|
26
|
+
- Updated dependencies [80c3e4a]
|
|
27
|
+
- Updated dependencies [80c3e4a]
|
|
28
|
+
- Updated dependencies [80c3e4a]
|
|
29
|
+
- Updated dependencies [80c3e4a]
|
|
30
|
+
- Updated dependencies [80c3e4a]
|
|
31
|
+
- Updated dependencies [80c3e4a]
|
|
32
|
+
- Updated dependencies [80c3e4a]
|
|
33
|
+
- Updated dependencies [80c3e4a]
|
|
34
|
+
- Updated dependencies [80c3e4a]
|
|
35
|
+
- Updated dependencies [80c3e4a]
|
|
36
|
+
- Updated dependencies [80c3e4a]
|
|
37
|
+
- Updated dependencies [80c3e4a]
|
|
38
|
+
- @equinor/fusion-framework-module-app@8.0.3
|
|
39
|
+
- @equinor/fusion-framework-module-context@8.0.1
|
|
40
|
+
- @equinor/fusion-framework-module-event@6.0.1
|
|
41
|
+
- @equinor/fusion-framework-module-http@8.0.4
|
|
42
|
+
- @equinor/fusion-framework-module@6.1.1
|
|
43
|
+
- @equinor/fusion-observable@9.1.1
|
|
44
|
+
|
|
45
|
+
## 3.0.1
|
|
46
|
+
|
|
47
|
+
### Patch Changes
|
|
48
|
+
|
|
49
|
+
- c424e43: Updated OpenTelemetry dependencies (`api-logs`, `exporter-logs-otlp-http`, `otlp-exporter-base`, `otlp-transformer`, `resources`, `sdk-logs`) from `^0.218.0` to `^0.220.0`.
|
|
50
|
+
|
|
3
51
|
## 3.0.0
|
|
4
52
|
|
|
5
53
|
### Patch Changes
|
|
@@ -21,18 +21,27 @@ import { map, scan, filter, defaultIfEmpty, shareReplay, mergeMap } from 'rxjs/o
|
|
|
21
21
|
export class AnalyticsConfigurator extends BaseConfigBuilder {
|
|
22
22
|
#collectorCallbacks = {};
|
|
23
23
|
#adapterCallbacks = {};
|
|
24
|
+
/**
|
|
25
|
+
* Registers the async resolvers for `collectors` and `adapters` config keys.
|
|
26
|
+
*/
|
|
24
27
|
constructor() {
|
|
25
28
|
super();
|
|
26
29
|
// Configure async collectors resolution using mergeMap to handle Promise/Observable collector factories
|
|
27
30
|
this._set('collectors', (args) => {
|
|
28
|
-
|
|
31
|
+
// Resolve each collector factory and drop any that resolve to a falsy value
|
|
32
|
+
return from(Object.entries(this.#collectorCallbacks)).pipe(mergeMap(([identifier, collectorFn]) =>
|
|
33
|
+
// Resolve the collector's own Promise/Observable factory result
|
|
34
|
+
from(collectorFn(args)).pipe(filter((collector) => !!collector), map((collector) => [identifier, collector]))), scan((acc, [identifier, collector]) => {
|
|
29
35
|
acc[identifier] = collector;
|
|
30
36
|
return acc;
|
|
31
37
|
}, {}), defaultIfEmpty({}), shareReplay({ bufferSize: 1, refCount: true }));
|
|
32
38
|
});
|
|
33
39
|
// Configure async adapters resolution using mergeMap to handle Promise/Observable adapter factories
|
|
34
40
|
this._set('adapters', (args) => {
|
|
35
|
-
|
|
41
|
+
// Resolve each adapter factory and drop any that resolve to a falsy value
|
|
42
|
+
return from(Object.entries(this.#adapterCallbacks)).pipe(mergeMap(([identifier, adapterFn]) =>
|
|
43
|
+
// Resolve the adapter's own Promise/Observable factory result
|
|
44
|
+
from(adapterFn(args)).pipe(filter((adapter) => !!adapter), map((adapter) => [identifier, adapter]))), scan((acc, [identifier, adapter]) => {
|
|
36
45
|
acc[identifier] = adapter;
|
|
37
46
|
return acc;
|
|
38
47
|
}, {}), defaultIfEmpty({}), shareReplay({ bufferSize: 1, refCount: true }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnalyticsConfigurator.js","sourceRoot":"","sources":["../../src/AnalyticsConfigurator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAGlB,MAAM,kCAAkC,CAAC;AAK1C,OAAO,EAAE,IAAI,EAAwB,MAAM,MAAM,CAAC;AAElD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1F;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,qBACX,SAAQ,iBAAkC;IAG1C,mBAAmB,GAA+D,EAAE,CAAC;IACrF,iBAAiB,GAA6D,EAAE,CAAC;IAEjF;QACE,KAAK,EAAE,CAAC;QAER,wGAAwG;QACxG,IAAI,CAAC,IAAI,CACP,YAAY,EACZ,CAAC,IAA+B,EAAwD,EAAE;YACxF,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CACxD,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"AnalyticsConfigurator.js","sourceRoot":"","sources":["../../src/AnalyticsConfigurator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAGlB,MAAM,kCAAkC,CAAC;AAK1C,OAAO,EAAE,IAAI,EAAwB,MAAM,MAAM,CAAC;AAElD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1F;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,qBACX,SAAQ,iBAAkC;IAG1C,mBAAmB,GAA+D,EAAE,CAAC;IACrF,iBAAiB,GAA6D,EAAE,CAAC;IAEjF;;OAEG;IACH;QACE,KAAK,EAAE,CAAC;QAER,wGAAwG;QACxG,IAAI,CAAC,IAAI,CACP,YAAY,EACZ,CAAC,IAA+B,EAAwD,EAAE;YACxF,4EAA4E;YAC5E,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CACxD,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,EAAE;YACrC,gEAAgE;YAChE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1B,MAAM,CAAC,CAAC,SAAS,EAAoC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EACpE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,SAAS,CAAU,CAAC,CACrD,CACF,EACD,IAAI,CACF,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE;gBAC/B,GAAG,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;gBAC5B,OAAO,GAAG,CAAC;YACb,CAAC,EACD,EAAyC,CAC1C,EACD,cAAc,CAAC,EAAE,CAAC,EAClB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAC/C,CAAC;QACJ,CAAC,CACF,CAAC;QAEF,oGAAoG;QACpG,IAAI,CAAC,IAAI,CACP,UAAU,EACV,CAAC,IAA+B,EAAsD,EAAE;YACtF,0EAA0E;YAC1E,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CACtD,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE;YACnC,8DAA8D;YAC9D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CACxB,MAAM,CAAC,CAAC,OAAO,EAAgC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAC5D,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,CAAU,CAAC,CACjD,CACF,EACD,IAAI,CACF,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE;gBAC7B,GAAG,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;gBAC1B,OAAO,GAAG,CAAC;YACb,CAAC,EACD,EAAuC,CACxC,EACD,cAAc,CAAC,EAAE,CAAC,EAClB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAC/C,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CACV,UAAkB,EAClB,QAAuD;QAEvD,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;OAOG;IACH,UAAU,CACR,UAAkB,EAClB,QAAqD;QAErD,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -9,6 +9,9 @@ import { from, Subject, Subscription } from 'rxjs';
|
|
|
9
9
|
* with either `subscription.unsubscribe()` or `using` / `Symbol.dispose`.
|
|
10
10
|
*/
|
|
11
11
|
class DisposableSubscription extends Subscription {
|
|
12
|
+
/**
|
|
13
|
+
* @param subscription - The underlying subscription to wrap with `Symbol.dispose` support.
|
|
14
|
+
*/
|
|
12
15
|
constructor(subscription) {
|
|
13
16
|
super(subscription.unsubscribe);
|
|
14
17
|
}
|
|
@@ -38,6 +41,9 @@ export class AnalyticsProvider extends BaseModuleProvider {
|
|
|
38
41
|
#analytics;
|
|
39
42
|
#collectors;
|
|
40
43
|
#adapters;
|
|
44
|
+
/**
|
|
45
|
+
* @param config - Resolved analytics module configuration, including collectors and adapters.
|
|
46
|
+
*/
|
|
41
47
|
constructor(config) {
|
|
42
48
|
super({ version, config });
|
|
43
49
|
this.#analytics = new Subject();
|
|
@@ -62,10 +68,13 @@ export class AnalyticsProvider extends BaseModuleProvider {
|
|
|
62
68
|
* @returns A promise that resolves when all adapters and collectors are initialised.
|
|
63
69
|
*/
|
|
64
70
|
async initialize() {
|
|
71
|
+
// Kick off initialization for every collector, tolerating individual failures
|
|
65
72
|
const initializedCollectors = Object.values(this.#collectors).map((collector) => Promise.resolve(collector.initialize?.()));
|
|
73
|
+
// Kick off initialization for every adapter, tolerating individual failures
|
|
66
74
|
const initializedAdapters = Object.values(this.#adapters).map((adapters) => Promise.resolve(adapters.initialize?.()));
|
|
67
75
|
await Promise.allSettled(initializedCollectors);
|
|
68
76
|
await Promise.allSettled(initializedAdapters);
|
|
77
|
+
// Forward every collector's emissions into the shared analytics subject
|
|
69
78
|
for (const collector of Object.values(this.#collectors)) {
|
|
70
79
|
const subscription = collector.subscribe({
|
|
71
80
|
next: (event) => {
|
|
@@ -76,6 +85,7 @@ export class AnalyticsProvider extends BaseModuleProvider {
|
|
|
76
85
|
}
|
|
77
86
|
const adapterSubscription = this.#analytics.subscribe({
|
|
78
87
|
next: (event) => {
|
|
88
|
+
// Dispatch every emitted event to all registered adapters
|
|
79
89
|
for (const adapter of Object.values(this.#adapters)) {
|
|
80
90
|
adapter.registerAnalytic(event);
|
|
81
91
|
}
|
|
@@ -89,7 +99,7 @@ export class AnalyticsProvider extends BaseModuleProvider {
|
|
|
89
99
|
* @param event - The analytics event to track.
|
|
90
100
|
*/
|
|
91
101
|
trackAnalytic(event) {
|
|
92
|
-
//
|
|
102
|
+
// TODO(#5098): Validate AnalyticsEvent includes name, value and attributes
|
|
93
103
|
this.#analytics.next(event);
|
|
94
104
|
}
|
|
95
105
|
/**
|
|
@@ -101,7 +111,7 @@ export class AnalyticsProvider extends BaseModuleProvider {
|
|
|
101
111
|
*/
|
|
102
112
|
trackAnalytic$(analytic$) {
|
|
103
113
|
const subscription = from(analytic$)
|
|
104
|
-
//
|
|
114
|
+
// TODO(#5098): Validate AnalyticsEvent includes name, value and attributes
|
|
105
115
|
.subscribe({
|
|
106
116
|
next: (event) => {
|
|
107
117
|
this.#analytics.next(event);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnalyticsProvider.js","sourceRoot":"","sources":["../../src/AnalyticsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAE/E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAKvC,OAAO,EAAE,IAAI,EAAwB,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAIzE;;;;;;GAMG;AACH,MAAM,sBAAuB,SAAQ,YAAY;IAC/C,YAAY,YAA0B;QACpC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAED,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,EAAE;QACtB,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,iBACX,SAAQ,kBAAmC;IAG3C,UAAU,CAA0B;IACpC,WAAW,CAAsC;IACjD,SAAS,CAAoC;IAE7C,YAAY,MAAuB;QACjC,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAE3B,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAC9E,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC,CAC1C,CAAC;QACF,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACzE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CACzC,CAAC;QAEF,MAAM,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;QAChD,MAAM,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;QAE9C,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACxD,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC;gBACvC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;oBACd,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YACpD,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;gBACd,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;oBACpD,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,KAAqB;QACjC,
|
|
1
|
+
{"version":3,"file":"AnalyticsProvider.js","sourceRoot":"","sources":["../../src/AnalyticsProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,10 +15,16 @@
|
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
17
17
|
export class ConsoleAnalyticsAdapter {
|
|
18
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Logs the event to the console.
|
|
20
|
+
*
|
|
21
|
+
* @param event - The analytics event to log.
|
|
22
|
+
* @returns Resolves once the event has been logged.
|
|
23
|
+
*/
|
|
19
24
|
registerAnalytic(event) {
|
|
20
25
|
console.log('Analytics::Adapter::Console', event);
|
|
21
26
|
}
|
|
27
|
+
/** No teardown is required for this adapter. */
|
|
22
28
|
[Symbol.dispose]() {
|
|
23
29
|
// no-op
|
|
24
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleAnalyticsAdapter.js","sourceRoot":"","sources":["../../../src/adapters/ConsoleAnalyticsAdapter.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,uBAAuB;IAGlC
|
|
1
|
+
{"version":3,"file":"ConsoleAnalyticsAdapter.js","sourceRoot":"","sources":["../../../src/adapters/ConsoleAnalyticsAdapter.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,uBAAuB;IAGlC;;;;;OAKG;IACH,gBAAgB,CAAC,KAAQ;QACvB,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,gDAAgD;IAChD,CAAC,MAAM,CAAC,OAAO,CAAC;QACd,QAAQ;IACV,CAAC;CACF"}
|
|
@@ -43,7 +43,7 @@ export class FusionAnalyticsAdapter {
|
|
|
43
43
|
constructor(args) {
|
|
44
44
|
this.#logExporter = args.logExporter;
|
|
45
45
|
this.#loggerProvider = new LoggerProvider({
|
|
46
|
-
processors: [new BatchLogRecordProcessor(this.#logExporter)],
|
|
46
|
+
processors: [new BatchLogRecordProcessor({ exporter: this.#logExporter })],
|
|
47
47
|
resource: resourceFromAttributes({
|
|
48
48
|
'module.version': version,
|
|
49
49
|
'session.id': uuid(),
|
|
@@ -52,7 +52,12 @@ export class FusionAnalyticsAdapter {
|
|
|
52
52
|
});
|
|
53
53
|
this.#logger = this.#loggerProvider.getLogger('fusion');
|
|
54
54
|
}
|
|
55
|
-
/**
|
|
55
|
+
/**
|
|
56
|
+
* Maps an analytics event to an OTLP `LogRecord` and emits it via the logger.
|
|
57
|
+
*
|
|
58
|
+
* @param event - The analytics event to map and emit.
|
|
59
|
+
* @returns Resolves once the event has been emitted to the logger.
|
|
60
|
+
*/
|
|
56
61
|
registerAnalytic(event) {
|
|
57
62
|
const logRecord = {
|
|
58
63
|
eventName: event.name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FusionAnalyticsAdapter.js","sourceRoot":"","sources":["../../../src/adapters/FusionAnalyticsAdapter.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EACd,uBAAuB,GAExB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,cAAc,GAIf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,OAAO,sBAAsB;IAGjC,YAAY,CAAwC;IACpD,eAAe,CAAiB;IAChC,OAAO,CAAS;IAEhB;;;;;;OAMG;IACH,YAAY,IAA8E;QACxF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;QAErC,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC;YACxC,UAAU,EAAE,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"FusionAnalyticsAdapter.js","sourceRoot":"","sources":["../../../src/adapters/FusionAnalyticsAdapter.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EACd,uBAAuB,GAExB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,cAAc,GAIf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,OAAO,sBAAsB;IAGjC,YAAY,CAAwC;IACpD,eAAe,CAAiB;IAChC,OAAO,CAAS;IAEhB;;;;;;OAMG;IACH,YAAY,IAA8E;QACxF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;QAErC,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC;YACxC,UAAU,EAAE,CAAC,IAAI,uBAAuB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YAC1E,QAAQ,EAAE,sBAAsB,CAAC;gBAC/B,gBAAgB,EAAE,OAAO;gBACzB,YAAY,EAAE,IAAI,EAAE;gBACpB,WAAW,EAAE,IAAI,CAAC,QAAQ;aAC3B,CAAC;SACH,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,KAAQ;QACvB,MAAM,SAAS,GAAuB;YACpC,SAAS,EAAE,KAAK,CAAC,IAAI;YACrB,UAAU,EAAE,KAAK,CAAC,UAA2B;YAC7C,IAAI,EAAE,KAAK,CAAC,KAAK;YACjB,cAAc,EAAE,cAAc,CAAC,IAAI;SACpC,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,mFAAmF;IACnF,CAAC,MAAM,CAAC,OAAO,CAAC;QACd,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { BaseCollector, createSchema } from './
|
|
2
|
-
import { appSchema
|
|
3
|
-
import {
|
|
1
|
+
import { BaseCollector, createSchema } from './create-schema.js';
|
|
2
|
+
import { appSchema } from './utils/app-schema.js';
|
|
3
|
+
import { extractAppMetadata } from './utils/extract-app-metadata.js';
|
|
4
|
+
import { contextSchema } from './utils/context-schema.js';
|
|
5
|
+
import { extractContextMetadata } from './utils/extract-context-metadata.js';
|
|
4
6
|
import { Subject } from 'rxjs';
|
|
5
7
|
import { z } from 'zod';
|
|
6
8
|
const EVENT_NAME = 'onAppModulesLoaded';
|
|
@@ -36,6 +38,12 @@ export class AppLoadedCollector extends BaseCollector {
|
|
|
36
38
|
this.#eventProvider = eventProvider;
|
|
37
39
|
this.#appProvider = appProvider;
|
|
38
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Builds an observable that emits an analytics event whenever the app-loaded
|
|
43
|
+
* event fires, falling back to `appProvider` for manifest data when needed.
|
|
44
|
+
*
|
|
45
|
+
* @returns An observable input emitting the app-loaded event's value and attributes.
|
|
46
|
+
*/
|
|
39
47
|
_initialize() {
|
|
40
48
|
const subject = new Subject();
|
|
41
49
|
this.#eventProvider.addEventListener(EVENT_NAME, (event) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppLoadedCollector.js","sourceRoot":"","sources":["../../../src/collectors/AppLoadedCollector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAoB,SAAS,EAAE,kBAAkB,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"AppLoadedCollector.js","sourceRoot":"","sources":["../../../src/collectors/AppLoadedCollector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAoB,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAwB,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAU7E,OAAO,EAAwB,OAAO,EAAE,MAAM,MAAM,CAAC;AACrD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,GAAG,oBAAoB,CAAC;AAExC,kEAAkE;AAClE,MAAM,WAAW,GAAG,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;AAElF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,kBACX,SAAQ,aAAyD;IAGjE,cAAc,CAAuB;IACrC,YAAY,CAAoB;IAEhC;;;OAGG;IACH,YAAY,aAAmC,EAAE,WAA8B;QAC7E,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACjC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,WAAW;QAIT,MAAM,OAAO,GAAG,IAAI,OAAO,EAGvB,CAAC;QACL,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;YACzD,yEAAyE;YACzE,qDAAqD;YACrD,MAAM,QAAQ,GACX,KAAK,CAAC,MAAM,CAAC,QAAwB,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC;YAChF,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAA8C,CAAC;YAE5E,MAAM,IAAI,GAAG;gBACX,KAAK,EAAE,QAAQ,IAAI,kBAAkB,CAAC,QAAQ,CAAC;gBAC/C,UAAU,EAAE;oBACV,OAAO,EACL,OAAO,CAAC,OAAO,EAAE,cAAc;wBAC/B,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;iBACzD;aACF,CAAC;YAEF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { map, pairwise } from 'rxjs';
|
|
2
|
-
import { BaseCollector, createSchema } from './
|
|
3
|
-
import { appKeySchema
|
|
2
|
+
import { BaseCollector, createSchema } from './create-schema.js';
|
|
3
|
+
import { appKeySchema } from './utils/app-key-schema.js';
|
|
4
|
+
import { extractAppKeyMetadata } from './utils/extract-app-key-metadata.js';
|
|
4
5
|
import { z } from 'zod';
|
|
5
6
|
/** Zod schema for the `app-selected` event (value + attributes). */
|
|
6
7
|
const eventSchema = createSchema(appKeySchema, z.object({ previous: appKeySchema }));
|
|
@@ -28,8 +29,16 @@ export class AppSelectedCollector extends BaseCollector {
|
|
|
28
29
|
super('app-selected', eventSchema);
|
|
29
30
|
this.#appProvider = appProvider;
|
|
30
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Builds an observable that emits an analytics event each time the selected
|
|
34
|
+
* app changes, including the previous app's key metadata.
|
|
35
|
+
*
|
|
36
|
+
* @returns An observable input emitting the newly selected app's value and attributes.
|
|
37
|
+
*/
|
|
31
38
|
_initialize() {
|
|
39
|
+
// Pair each app-selection emission with the previously selected app
|
|
32
40
|
const appSelected$ = this.#appProvider.current$.pipe(pairwise());
|
|
41
|
+
// Map the [previous, next] pair into the analytics event shape
|
|
33
42
|
const data$ = appSelected$.pipe(map(([prev, next]) => {
|
|
34
43
|
return {
|
|
35
44
|
value: extractAppKeyMetadata(next),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppSelectedCollector.js","sourceRoot":"","sources":["../../../src/collectors/AppSelectedCollector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAwB,QAAQ,EAAE,MAAM,MAAM,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"AppSelectedCollector.js","sourceRoot":"","sources":["../../../src/collectors/AppSelectedCollector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAwB,QAAQ,EAAE,MAAM,MAAM,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAmB,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAI5E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,oEAAoE;AACpE,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;AAErF;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,oBACX,SAAQ,aAAoD;IAG5D,YAAY,CAAoB;IAEhC;;OAEG;IACH,YAAY,WAA8B;QACxC,KAAK,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,WAAW;QAIT,oEAAoE;QACpE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEjE,+DAA+D;QAC/D,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAC7B,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;YACnB,OAAO;gBACL,KAAK,EAAE,qBAAqB,CAAC,IAAI,CAAC;gBAClC,UAAU,EAAE;oBACV,QAAQ,EAAE,IAAI,IAAI,qBAAqB,CAAC,IAAI,CAAC;iBAC9C;aACF,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { distinctUntilChanged, map, pairwise } from 'rxjs';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { BaseCollector, createSchema } from './
|
|
4
|
-
import { contextSchema
|
|
3
|
+
import { BaseCollector, createSchema } from './create-schema.js';
|
|
4
|
+
import { contextSchema } from './utils/context-schema.js';
|
|
5
|
+
import { extractContextMetadata } from './utils/extract-context-metadata.js';
|
|
5
6
|
/** Zod schema for the `context-selected` event (value + attributes). */
|
|
6
7
|
const eventSchema = createSchema(contextSchema, z.object({ previous: contextSchema, appKey: z.string().optional() }));
|
|
7
8
|
/**
|
|
@@ -33,12 +34,20 @@ export class ContextSelectedCollector extends BaseCollector {
|
|
|
33
34
|
this.#contextProvider = contextProvider;
|
|
34
35
|
this.#appProvider = appProvider;
|
|
35
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Builds an observable that emits an analytics event each time the selected
|
|
39
|
+
* context changes, including the previous context and current app key.
|
|
40
|
+
*
|
|
41
|
+
* @returns An observable input emitting the newly selected context's value and attributes.
|
|
42
|
+
*/
|
|
36
43
|
_initialize() {
|
|
44
|
+
// Track context changes, pairing each new context with the previously selected one
|
|
37
45
|
const contextSelected$ = this.#contextProvider.currentContext$.pipe(
|
|
38
46
|
// Only emit when an actual change has happened.
|
|
39
47
|
distinctUntilChanged((prev, curr) => prev?.id === curr?.id),
|
|
40
48
|
// Provide both the old and the new value.
|
|
41
49
|
pairwise());
|
|
50
|
+
// Map the [previous, next] pair into the analytics event shape
|
|
42
51
|
const data$ = contextSelected$.pipe(map(([prev, next]) => {
|
|
43
52
|
return {
|
|
44
53
|
value: next && extractContextMetadata(next),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextSelectedCollector.js","sourceRoot":"","sources":["../../../src/collectors/ContextSelectedCollector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,GAAG,EAAwB,QAAQ,EAAE,MAAM,MAAM,CAAC;AAIjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"ContextSelectedCollector.js","sourceRoot":"","sources":["../../../src/collectors/ContextSelectedCollector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,GAAG,EAAwB,QAAQ,EAAE,MAAM,MAAM,CAAC;AAIjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAwB,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,wEAAwE;AACxE,MAAM,WAAW,GAAG,YAAY,CAC9B,aAAa,EACb,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CACrE,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,wBACX,SAAQ,aAA+E;IAGvF,gBAAgB,CAAmB;IACnC,YAAY,CAAoB;IAEhC;;;OAGG;IACH,YAAY,eAAiC,EAAE,WAA8B;QAC3E,KAAK,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QACvC,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,WAAW;QAIT,mFAAmF;QACnF,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI;QACjE,gDAAgD;QAChD,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;QAC3D,0CAA0C;QAC1C,QAAQ,EAAE,CACX,CAAC;QAEF,+DAA+D;QAC/D,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CACjC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;YACnB,OAAO;gBACL,KAAK,EAAE,IAAI,IAAI,sBAAsB,CAAC,IAAI,CAAC;gBAC3C,UAAU,EAAE;oBACV,QAAQ,EAAE,IAAI,IAAI,sBAAsB,CAAC,IAAI,CAAC;oBAC9C,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM;iBAC1C;aACF,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -60,8 +60,11 @@ export class BaseCollector {
|
|
|
60
60
|
* Subscribes to the source returned by {@link BaseCollector._initialize},
|
|
61
61
|
* validates each emission with the Zod schema, and publishes through the
|
|
62
62
|
* internal subject.
|
|
63
|
+
*
|
|
64
|
+
* @returns Resolves once the source has been subscribed to.
|
|
63
65
|
*/
|
|
64
66
|
initialize() {
|
|
67
|
+
// Shape each emission into the named/validated event before publishing
|
|
65
68
|
from(this._initialize())
|
|
66
69
|
.pipe(map(({ value, attributes }) => {
|
|
67
70
|
return {
|
|
@@ -82,4 +85,4 @@ export class BaseCollector {
|
|
|
82
85
|
return this.#subject.subscribe(observer);
|
|
83
86
|
}
|
|
84
87
|
}
|
|
85
|
-
//# sourceMappingURL=
|
|
88
|
+
//# sourceMappingURL=create-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-schema.js","sourceRoot":"","sources":["../../../src/collectors/create-schema.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAwB,OAAO,EAAsC,MAAM,MAAM,CAAC;AACpG,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAA0B,EAC1B,UAA8B,EAC9B,EAAE;IACF,OAAO,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE;KAClC,CAAC,CAAC;AACL,CAAC,CAAC;AAOF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAgB,aAAa;IAKjC,OAAO,CAAiC;IACxC,KAAK,CAAS;IACd,QAAQ,GAAqD,IAAI,OAAO,EAErE,CAAC;IAEJ;;;;;OAKG;IACH,YAAY,IAAY,EAAE,MAAsC;QAC9D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAaD;;;;;;OAMG;IACH,UAAU;QACR,uEAAuE;QACvE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;aACrB,IAAI,CACH,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;YAC5B,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,KAAK;gBAChB,KAAK,EAAE,KAAK;gBACZ,UAAU,EAAE,UAAU;aACvB,CAAC;QACJ,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAClC;aACA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,QAAoE;QAC5E,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Zod schema for an object containing an optional `appKey` string.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Used by {@link AppSelectedCollector} to validate the event body.
|
|
7
|
+
*/
|
|
8
|
+
export const appKeySchema = z
|
|
9
|
+
.object({
|
|
10
|
+
appKey: z.string().optional(),
|
|
11
|
+
})
|
|
12
|
+
.optional()
|
|
13
|
+
.nullable();
|
|
14
|
+
//# sourceMappingURL=app-key-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-key-schema.js","sourceRoot":"","sources":["../../../../src/collectors/utils/app-key-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC;KACD,QAAQ,EAAE;KACV,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Zod schema for a Fusion application metadata object.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Validates core app fields (appKey, displayName, type) and optional build
|
|
7
|
+
* and category information. Used by {@link AppLoadedCollector}.
|
|
8
|
+
*/
|
|
9
|
+
export const appSchema = z
|
|
10
|
+
.object({
|
|
11
|
+
appKey: z.string(),
|
|
12
|
+
displayName: z.string(),
|
|
13
|
+
type: z.string(),
|
|
14
|
+
categoryName: z.string().optional(),
|
|
15
|
+
buildVersion: z.string().optional(),
|
|
16
|
+
buildTag: z.string().optional().nullable(),
|
|
17
|
+
})
|
|
18
|
+
.optional();
|
|
19
|
+
//# sourceMappingURL=app-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-schema.js","sourceRoot":"","sources":["../../../../src/collectors/utils/app-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC;KACvB,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC3C,CAAC;KACD,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Zod schema for a Fusion context metadata object.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Validates core context fields (id, type) and optional title, externalId,
|
|
7
|
+
* and source. Used by {@link ContextSelectedCollector} and {@link AppLoadedCollector}.
|
|
8
|
+
*/
|
|
9
|
+
export const contextSchema = z
|
|
10
|
+
.object({
|
|
11
|
+
id: z.string(),
|
|
12
|
+
type: z.string(),
|
|
13
|
+
title: z.string().optional(),
|
|
14
|
+
externalId: z.string().optional(),
|
|
15
|
+
source: z.string().optional(),
|
|
16
|
+
})
|
|
17
|
+
.optional()
|
|
18
|
+
.nullable();
|
|
19
|
+
//# sourceMappingURL=context-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-schema.js","sourceRoot":"","sources":["../../../../src/collectors/utils/context-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC;KACD,QAAQ,EAAE;KACV,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracts app-key metadata from a `CurrentApp` instance.
|
|
3
|
+
*
|
|
4
|
+
* @param app - The current app object.
|
|
5
|
+
* @returns An object containing the optional `appKey`.
|
|
6
|
+
*/
|
|
7
|
+
export const extractAppKeyMetadata = (app) => {
|
|
8
|
+
return {
|
|
9
|
+
appKey: app?.appKey,
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=extract-app-key-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-app-key-metadata.js","sourceRoot":"","sources":["../../../../src/collectors/utils/extract-app-key-metadata.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAe,EAAgC,EAAE;IACrF,OAAO;QACL,MAAM,EAAE,GAAG,EAAE,MAAM;KACpB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracts detailed app metadata from an `AppManifest` for analytics events.
|
|
3
|
+
*
|
|
4
|
+
* @param app - The application manifest.
|
|
5
|
+
* @returns An object with appKey, displayName, type, and optional build/category info.
|
|
6
|
+
*/
|
|
7
|
+
export const extractAppMetadata = (app) => {
|
|
8
|
+
return {
|
|
9
|
+
appKey: app.appKey,
|
|
10
|
+
displayName: app.displayName,
|
|
11
|
+
type: app.type,
|
|
12
|
+
categoryName: app.category?.name,
|
|
13
|
+
buildVersion: app.build?.version,
|
|
14
|
+
buildTag: app.build?.tag,
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=extract-app-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-app-metadata.js","sourceRoot":"","sources":["../../../../src/collectors/utils/extract-app-metadata.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAgB,EAA6B,EAAE;IAChF,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,YAAY,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI;QAChC,YAAY,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO;QAChC,QAAQ,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG;KACzB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracts context metadata from a `ContextItem` for analytics events.
|
|
3
|
+
*
|
|
4
|
+
* @param context - The Fusion context item.
|
|
5
|
+
* @returns An object with id, type, and optional title, externalId, and source.
|
|
6
|
+
*/
|
|
7
|
+
export const extractContextMetadata = (context) => {
|
|
8
|
+
return {
|
|
9
|
+
id: context.id,
|
|
10
|
+
externalId: context.externalId ?? undefined,
|
|
11
|
+
title: context.title ?? undefined,
|
|
12
|
+
type: context.type.id,
|
|
13
|
+
source: context.source ?? undefined,
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=extract-context-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-context-metadata.js","sourceRoot":"","sources":["../../../../src/collectors/utils/extract-context-metadata.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAAoB,EAAiC,EAAE;IAC5F,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS;QAC3C,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;QACjC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;QACrB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,SAAS;KACpC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enable-analytics.js","sourceRoot":"","sources":["../../src/enable-analytics.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;AAC7B,sFAAsF;AACtF,YAA4C,EAC5C,QAAmC,EAC7B,EAAE;IACR,YAAY,CAAC,SAAS,CAAC;QACrB,MAAM;QACN,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC3B,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"enable-analytics.js","sourceRoot":"","sources":["../../src/enable-analytics.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;AAC7B,sFAAsF;AACtF,YAA4C,EAC5C,QAAmC,EAC7B,EAAE;IACR,YAAY,CAAC,SAAS,CAAC;QACrB,MAAM;QACN,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC3B,+DAA+D;YAC/D,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -20,15 +20,18 @@ function isExportRetryable(statusCode) {
|
|
|
20
20
|
* @returns Delay in milliseconds, `-1` for non-positive integers, or `undefined` if absent.
|
|
21
21
|
*/
|
|
22
22
|
function parseRetryAfterToMills(retryAfter) {
|
|
23
|
+
// No header present — nothing to compute
|
|
23
24
|
if (retryAfter == null) {
|
|
24
25
|
return undefined;
|
|
25
26
|
}
|
|
26
27
|
const seconds = Number.parseInt(retryAfter, 10);
|
|
28
|
+
// Retry-After given as a plain integer number of seconds
|
|
27
29
|
if (Number.isInteger(seconds)) {
|
|
28
30
|
return seconds > 0 ? seconds * 1000 : -1;
|
|
29
31
|
}
|
|
30
32
|
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After#directives
|
|
31
33
|
const delay = new Date(retryAfter).getTime() - Date.now();
|
|
34
|
+
// Only report a positive delay; a past date means retry is already due
|
|
32
35
|
if (delay >= 0) {
|
|
33
36
|
return delay;
|
|
34
37
|
}
|
|
@@ -75,6 +78,7 @@ export class HttpClientExporterTransport {
|
|
|
75
78
|
body: new Blob([data.slice().buffer], { type: 'application/json' }),
|
|
76
79
|
signal: abortController.signal,
|
|
77
80
|
});
|
|
81
|
+
// A 2xx response means the export succeeded outright
|
|
78
82
|
if (response.ok) {
|
|
79
83
|
return { status: 'success' };
|
|
80
84
|
}
|
|
@@ -90,6 +94,7 @@ export class HttpClientExporterTransport {
|
|
|
90
94
|
}
|
|
91
95
|
catch (error) {
|
|
92
96
|
const err = error;
|
|
97
|
+
// Distinguish a timeout (AbortController fired) from other fetch failures
|
|
93
98
|
if (err?.name === 'AbortError') {
|
|
94
99
|
return {
|
|
95
100
|
status: 'failure',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpClientExporterTransport.js","sourceRoot":"","sources":["../../../../src/logExporters/fusionOTLPLogExporter/HttpClientExporterTransport.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,UAAkB;IAC3C,oDAAoD;IACpD,wBAAwB;IACxB,kBAAkB;IAClB,0BAA0B;IAC1B,sBAAsB;IACtB,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,OAAO,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,UAAsC;IACpE,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAChD,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,mFAAmF;IACnF,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE1D,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,2BAA2B;IAM5B;
|
|
1
|
+
{"version":3,"file":"HttpClientExporterTransport.js","sourceRoot":"","sources":["../../../../src/logExporters/fusionOTLPLogExporter/HttpClientExporterTransport.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/version.js
CHANGED