-
Notifications
You must be signed in to change notification settings - Fork 673
Expand file tree
/
Copy pathTelemetryProviderBase.ts
More file actions
91 lines (86 loc) · 3.33 KB
/
Copy pathTelemetryProviderBase.ts
File metadata and controls
91 lines (86 loc) · 3.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import type {
AuthMetadata,
ExecutionContext,
ExecutionErrorMetadata,
ExecutionSuccessMetadata,
HelpCenterClosedMetadata,
HelpCenterOpenedMetadata,
HelpResourceClickedMetadata,
NodeSearchMetadata,
NodeSearchResultMetadata,
PageVisibilityMetadata,
RunButtonProperties,
SettingChangedMetadata,
SurveyResponses,
TabCountMetadata,
TelemetryProvider,
TemplateFilterMetadata,
TemplateLibraryClosedMetadata,
TemplateLibraryMetadata,
TemplateMetadata,
UiButtonClickMetadata,
WorkflowCreatedMetadata,
WorkflowImportMetadata
} from '../types'
/**
* Abstract base class for telemetry providers with lifecycle management.
* Concrete providers should extend this class for consistent behavior.
*/
export abstract class TelemetryProviderBase implements TelemetryProvider {
protected isEnabled = true
protected isInitialized = false
/**
* Initialize the provider (e.g., load external libraries)
*/
abstract initialize(): Promise<void>
/**
* Check if the provider is ready to track events
*/
isReady(): boolean {
return this.isEnabled && this.isInitialized
}
setEnabled(enabled: boolean): void {
this.isEnabled = enabled
}
abstract trackAuth(metadata: AuthMetadata): void
abstract trackUserLoggedIn(): void
abstract trackSubscription(event: 'modal_opened' | 'subscribe_clicked'): void
abstract trackMonthlySubscriptionSucceeded(): void
abstract trackAddApiCreditButtonClicked(): void
abstract trackApiCreditTopupButtonPurchaseClicked(amount: number): void
abstract trackApiCreditTopupSucceeded(): void
abstract trackRunButton(properties: RunButtonProperties): void
abstract startTopupTracking(): void
abstract checkForCompletedTopup(events: any[] | undefined | null): boolean
abstract clearTopupTracking(): void
abstract trackSurvey(
stage: 'opened' | 'submitted',
responses?: SurveyResponses
): void
abstract trackEmailVerification(
stage: 'opened' | 'requested' | 'completed'
): void
abstract trackTemplate(metadata: TemplateMetadata): void
abstract trackTemplateLibraryOpened(metadata: TemplateLibraryMetadata): void
abstract trackTemplateLibraryClosed(
metadata: TemplateLibraryClosedMetadata
): void
abstract trackWorkflowImported(metadata: WorkflowImportMetadata): void
abstract trackWorkflowOpened(metadata: WorkflowImportMetadata): void
abstract trackPageVisibilityChanged(metadata: PageVisibilityMetadata): void
abstract trackTabCount(metadata: TabCountMetadata): void
abstract trackNodeSearch(metadata: NodeSearchMetadata): void
abstract trackNodeSearchResultSelected(
metadata: NodeSearchResultMetadata
): void
abstract trackTemplateFilterChanged(metadata: TemplateFilterMetadata): void
abstract trackHelpCenterOpened(metadata: HelpCenterOpenedMetadata): void
abstract trackHelpResourceClicked(metadata: HelpResourceClickedMetadata): void
abstract trackHelpCenterClosed(metadata: HelpCenterClosedMetadata): void
abstract trackWorkflowCreated(metadata: WorkflowCreatedMetadata): void
abstract trackWorkflowExecution(context?: ExecutionContext): void
abstract trackExecutionError(metadata: ExecutionErrorMetadata): void
abstract trackExecutionSuccess(metadata: ExecutionSuccessMetadata): void
abstract trackSettingChanged(metadata: SettingChangedMetadata): void
abstract trackUiButtonClicked(metadata: UiButtonClickMetadata): void
}