diff --git a/README.md b/README.md index a9b73ba..7a494aa 100644 --- a/README.md +++ b/README.md @@ -216,10 +216,10 @@ class UserSignupEvent extends BaseEvent { }); @override - String getName() => 'user_signup'; + String get name => 'user_signup'; @override - Map getProperties() => { + Map get properties => { 'signup_method': method, 'accepted_marketing': acceptedMarketing, 'timestamp': DateTime.now().millisecondsSinceEpoch, @@ -245,10 +245,10 @@ class PurchaseEvent extends BaseEvent { }); @override - String getName() => 'purchase'; + String get name => 'purchase'; @override - Map getProperties() => { + Map get properties => { 'product_id': productId, 'amount': amount, 'currency': currency, @@ -272,10 +272,10 @@ class ButtonClickEvent extends BaseEvent { }); @override - String getName() => 'button_click'; + String get name => 'button_click'; @override - Map getProperties() => { + Map get properties => { 'button_id': buttonId, 'screen_name': screenName, }; @@ -412,8 +412,8 @@ class FirebaseTracker extends BaseTrackerStrategy { @override Future doTrack(BaseEvent event) async { await _analytics.logEvent( - name: event.getName(), - parameters: _convertProperties(event.getProperties()), + name: event.name, + parameters: _convertProperties(event.properties), ); } @@ -489,7 +489,7 @@ class MixpanelTracker extends BaseTrackerStrategy { @override Future doTrack(BaseEvent event) async { - _mixpanel.track(event.getName(), properties: event.getProperties()); + _mixpanel.track(event.name, properties: event.properties); } @override @@ -559,8 +559,8 @@ class CustomAPITracker extends BaseTrackerStrategy { @override Future doTrack(BaseEvent event) async { final payload = { - 'event_name': event.getName(), - 'properties': event.getProperties(), + 'event_name': event.name, + 'properties': event.properties, 'timestamp': DateTime.now().toIso8601String(), 'category': event.category?.name, }; @@ -1166,7 +1166,7 @@ See exactly how your events are being routed: final event = PurchaseEvent(productId: 'abc', amount: 99.99); final debugInfo = FlexTrack.debugEvent(event); -print('Event: ${debugInfo.event.getName()}'); +print('Event: ${debugInfo.event.name}'); print('Target trackers: ${debugInfo.routingResult.targetTrackers}'); print('Applied rules: ${debugInfo.routingResult.appliedRules.length}'); print('Skipped rules: ${debugInfo.routingResult.skippedRules.length}'); @@ -1301,9 +1301,9 @@ void main() { expect(mockTracker.capturedEvents, hasLength(1)); final event = mockTracker.capturedEvents.first; - expect(event.getName(), equals('user_signup')); + expect(event.name, equals('user_signup')); - final properties = event.getProperties(); + final properties = event.properties; expect(properties?['signup_method'], equals('email')); }); @@ -1318,9 +1318,9 @@ void main() { expect(mockTracker.capturedEvents, hasLength(1)); final event = mockTracker.capturedEvents.first; - expect(event.getName(), equals('purchase')); - expect(event.getProperties()?['amount'], equals(99.99)); - expect(event.getProperties()?['product_id'], equals('test_product')); + expect(event.name, equals('purchase')); + expect(event.properties?['amount'], equals(99.99)); + expect(event.properties?['product_id'], equals('test_product')); }); testWidgets('should not track when disabled', (tester) async { @@ -1418,7 +1418,7 @@ testWidgets('complete user signup flow', (tester) async { expect(mockTracker.capturedEvents.length, greaterThan(0)); final signupEvent = mockTracker.capturedEvents.firstWhere( - (event) => event.getName() == 'user_signup', + (event) => event.name == 'user_signup', ); expect(signupEvent, isNotNull); @@ -1602,17 +1602,17 @@ class MyTracker extends BaseTrackerStrategy { // ❌ WRONG: Not handling errors @override Future doTrack(BaseEvent event) async { - await myAPI.send(event.getName()); // What if this fails? + await myAPI.send(event.name); // What if this fails? } // ✅ CORRECT: Handle errors gracefully @override Future doTrack(BaseEvent event) async { try { - await myAPI.send(event.getName()); + await myAPI.send(event.name); } catch (e) { // Log error but don't crash the app - print('Failed to track ${event.getName()}: $e'); + print('Failed to track ${event.name}: $e'); // FlexTrack will handle the TrackerException } } @@ -1732,10 +1732,10 @@ class ProductViewEvent extends BaseEvent { }); @override - String getName() => 'product_view'; + String get name => 'product_view'; @override - Map getProperties() => { + Map get properties => { 'product_id': productId, 'product_name': productName, 'price': price, @@ -1762,10 +1762,10 @@ class PurchaseCompleteEvent extends BaseEvent { }); @override - String getName() => 'purchase_complete'; + String get name => 'purchase_complete'; @override - Map getProperties() => { + Map get properties => { 'order_id': orderId, 'total_amount': totalAmount, 'currency': currency, @@ -1891,10 +1891,10 @@ class FeatureUsageEvent extends BaseEvent { }); @override - String getName() => 'feature_usage'; + String get name => 'feature_usage'; @override - Map getProperties() => { + Map get properties => { 'feature_name': featureName, 'time_spent_seconds': timeSpentSeconds, 'is_first_time': isFirstTime, @@ -1921,10 +1921,10 @@ class SubscriptionChangeEvent extends BaseEvent { }); @override - String getName() => 'subscription_change'; + String get name => 'subscription_change'; @override - Map getProperties() => { + Map get properties => { 'plan_from': planFrom, 'plan_to': planTo, 'price_change': priceChange, @@ -2064,10 +2064,10 @@ await FlexTrack.track(PurchaseEvent( ```dart class MyEvent extends BaseEvent { @override - String getName() => 'my_event'; // Required + String get name => 'my_event'; // Required @override - Map getProperties() => {}; // Required + Map get properties => {}; // Required @override EventCategory? get category => EventCategory.user; // Recommended @@ -2197,7 +2197,7 @@ class TenantAwareTracker extends BaseTrackerStrategy { @override Future doTrack(BaseEvent event) async { - final tenantId = event.getProperties()?['tenant_id'] as String?; + final tenantId = event.properties?['tenant_id'] as String?; if (tenantId == null) return; final config = _tenantConfigs[tenantId]; @@ -2247,10 +2247,10 @@ class ExperimentEvent extends BaseEvent { }); @override - String getName() => 'experiment_outcome'; + String get name => 'experiment_outcome'; @override - Map getProperties() => { + Map get properties => { 'experiment_id': experimentId, 'variant': variant, 'outcome': outcome, @@ -2301,8 +2301,8 @@ class WebSocketTracker extends BaseTrackerStrategy { final payload = { 'type': 'analytics_event', - 'event': event.getName(), - 'properties': event.getProperties(), + 'event': event.name, + 'properties': event.properties, 'timestamp': DateTime.now().toIso8601String(), }; @@ -2364,8 +2364,8 @@ class RESTAPITracker extends BaseTrackerStrategy { @override Future doTrack(BaseEvent event) async { final eventData = { - 'name': event.getName(), - 'properties': event.getProperties(), + 'name': event.name, + 'properties': event.properties, 'timestamp': event.timestamp.toIso8601String(), 'category': event.category?.name, }; @@ -2488,8 +2488,8 @@ class DatabaseTracker extends BaseTrackerStrategy { @override Future doTrack(BaseEvent event) async { await _database.insert('events', { - 'name': event.getName(), - 'properties': jsonEncode(event.getProperties()), + 'name': event.name, + 'properties': jsonEncode(event.properties), 'category': event.category?.name, 'timestamp': event.timestamp.toIso8601String(), }); @@ -2669,9 +2669,9 @@ void main() { ]; for (final event in testEvents) { - expect(event.getName(), isNotEmpty); - expect(event.getName(), matches(RegExp(r'^[a-z_]+))); - expect(event.getName().length, lessThan(50)); + expect(event.name, isNotEmpty); + expect(event.name, matches(RegExp(r'^[a-z_]+))); + expect(event.name.length, lessThan(50)); } }); @@ -2682,7 +2682,7 @@ void main() { ]; for (final event in testEvents) { - final properties = event.getProperties(); + final properties = event.properties; if (properties != null) { // Should be JSON serializable expect(() => jsonEncode(properties), returnsNormally); @@ -2776,7 +2776,7 @@ class SanitizingTracker extends BaseTrackerStrategy { @override Future doTrack(BaseEvent event) async { - final sanitizedProperties = _sanitizeProperties(event.getProperties()); + final sanitizedProperties = _sanitizeProperties(event.properties); // Create sanitized event final sanitizedEvent = SanitizedEvent( @@ -2836,10 +2836,10 @@ class RevenueAttributionEvent extends BaseEvent { }); @override - String getName() => 'revenue_attribution'; + String get name => 'revenue_attribution'; @override - Map getProperties() => { + Map get properties => { 'revenue': revenue, 'currency': currency, 'source': source, @@ -2897,10 +2897,10 @@ class CLVUpdateEvent extends BaseEvent { }); @override - String getName() => 'clv_update'; + String get name => 'clv_update'; @override - Map getProperties() => { + Map get properties => { 'user_id': userId, 'current_clv': currentCLV, 'previous_clv': previousCLV, @@ -2967,13 +2967,13 @@ void main() async { // ✅ GOOD: Clear, descriptive names class UserCompletedPurchaseEvent extends BaseEvent { @override - String getName() => 'user_completed_purchase'; + String get name => 'user_completed_purchase'; } // ❌ BAD: Vague or abbreviated names class UCPEvent extends BaseEvent { @override - String getName() => 'ucp'; + String get name => 'ucp'; } ``` @@ -2983,17 +2983,17 @@ class UCPEvent extends BaseEvent { // ✅ GOOD: Consistent naming patterns class UserRegistrationStartedEvent extends BaseEvent { @override - String getName() => 'user_registration_started'; + String get name => 'user_registration_started'; } class UserRegistrationCompletedEvent extends BaseEvent { @override - String getName() => 'user_registration_completed'; + String get name => 'user_registration_completed'; } class UserRegistrationAbandonedEvent extends BaseEvent { @override - String getName() => 'user_registration_abandoned'; + String get name => 'user_registration_abandoned'; } ``` diff --git a/example/lib/events/app_events.dart b/example/lib/events/app_events.dart index 569008b..ebaf130 100644 --- a/example/lib/events/app_events.dart +++ b/example/lib/events/app_events.dart @@ -15,10 +15,10 @@ class AppStartEvent extends BaseEvent { platform = platform ?? 'unknown'; @override - String getName() => 'app_start'; + String get name => 'app_start'; @override - Map getProperties() => { + Map get properties => { 'app_version': appVersion, 'build_number': buildNumber, 'platform': platform, @@ -49,10 +49,10 @@ class PageViewEvent extends BaseEvent { }) : timestamp = timestamp ?? DateTime.now(); @override - String getName() => 'page_view'; + String get name => 'page_view'; @override - Map getProperties() => { + Map get properties => { 'page_name': pageName, if (parameters != null) 'parameters': parameters!, 'timestamp': timestamp.millisecondsSinceEpoch, @@ -78,10 +78,10 @@ class ButtonClickEvent extends BaseEvent { }); @override - String getName() => 'button_click'; + String get name => 'button_click'; @override - Map getProperties() => { + Map get properties => { 'button_id': buttonId, 'button_text': buttonText, if (screenName != null) 'screen_name': screenName!, @@ -110,10 +110,10 @@ class ErrorEvent extends BaseEvent { }); @override - String getName() => 'error'; + String get name => 'error'; @override - Map getProperties() => { + Map get properties => { 'error_type': errorType, 'error_message': errorMessage, if (stackTrace != null) 'stack_trace': stackTrace!, @@ -146,10 +146,10 @@ class PerformanceEvent extends BaseEvent { }); @override - String getName() => 'performance_metric'; + String get name => 'performance_metric'; @override - Map getProperties() => { + Map get properties => { 'metric_name': metricName, 'value': value, 'unit': unit, diff --git a/example/lib/events/business_events.dart b/example/lib/events/business_events.dart index 6e2970c..d4dda42 100644 --- a/example/lib/events/business_events.dart +++ b/example/lib/events/business_events.dart @@ -21,10 +21,10 @@ class PurchaseEvent extends BaseEvent { }); @override - String getName() => 'purchase'; + String get name => 'purchase'; @override - Map getProperties() => { + Map get properties => { 'product_id': productId, 'product_name': productName, 'amount': amount, @@ -62,10 +62,10 @@ class CartAbandonmentEvent extends BaseEvent { }); @override - String getName() => 'cart_abandonment'; + String get name => 'cart_abandonment'; @override - Map getProperties() => { + Map get properties => { 'product_ids': productIds, 'total_value': totalValue, 'currency': currency, @@ -98,10 +98,10 @@ class AddToCartEvent extends BaseEvent { }); @override - String getName() => 'add_to_cart'; + String get name => 'add_to_cart'; @override - Map getProperties() => { + Map get properties => { 'product_id': productId, 'product_name': productName, 'price': price, @@ -133,10 +133,10 @@ class SubscriptionEvent extends BaseEvent { }); @override - String getName() => 'subscription_$action'; + String get name => 'subscription_$action'; @override - Map getProperties() => { + Map get properties => { 'plan_id': planId, 'plan_name': planName, 'price': price, diff --git a/example/lib/events/user_events.dart b/example/lib/events/user_events.dart index 85a403a..130cdb2 100644 --- a/example/lib/events/user_events.dart +++ b/example/lib/events/user_events.dart @@ -13,10 +13,10 @@ class UserRegistrationEvent extends BaseEvent { }); @override - String getName() => 'user_registration'; + String get name => 'user_registration'; @override - Map getProperties() => { + Map get properties => { 'registration_method': registrationMethod, 'accepted_terms': hasAcceptedTerms, 'accepted_marketing': hasAcceptedMarketing, @@ -44,10 +44,10 @@ class UserLoginEvent extends BaseEvent { }); @override - String getName() => 'user_login'; + String get name => 'user_login'; @override - Map getProperties() => { + Map get properties => { 'login_method': loginMethod, 'is_first_login': isFirstLogin, 'timestamp': timestamp.millisecondsSinceEpoch, @@ -71,10 +71,10 @@ class UserProfileUpdateEvent extends BaseEvent { }); @override - String getName() => 'user_profile_update'; + String get name => 'user_profile_update'; @override - Map getProperties() => { + Map get properties => { 'updated_fields': updatedFields, 'is_complete': isComplete, 'field_count': updatedFields.length, @@ -103,10 +103,10 @@ class FeatureUsageEvent extends BaseEvent { }); @override - String getName() => 'feature_usage'; + String get name => 'feature_usage'; @override - Map getProperties() => { + Map get properties => { 'feature_name': featureName, 'action': action, if (duration != null) 'duration_seconds': duration!, @@ -137,10 +137,10 @@ class UserEngagementEvent extends BaseEvent { }); @override - String getName() => 'user_engagement'; + String get name => 'user_engagement'; @override - Map getProperties() => { + Map get properties => { 'engagement_type': engagementType, if (sessionDuration != null) 'session_duration_seconds': sessionDuration!, diff --git a/example/lib/screens/home_screen.dart b/example/lib/screens/home_screen.dart index 4e5f96a..16cfac8 100644 --- a/example/lib/screens/home_screen.dart +++ b/example/lib/screens/home_screen.dart @@ -524,7 +524,7 @@ class _AdditionalDemoSection extends StatelessWidget { final routingResults = testEvents.map((event) { final debug = FlexTrack.debugEvent(event); return { - 'event': event.getName(), + 'event': event.name, 'category': event.category?.name ?? 'none', 'trackers': debug.routingResult.targetTrackers, 'rules': debug.routingResult.appliedRules.length, @@ -581,10 +581,10 @@ class HighVolumeTestEvent extends BaseEvent { }); @override - String getName() => 'high_volume_test'; + String get name => 'high_volume_test'; @override - Map getProperties() => { + Map get properties => { 'sequence_number': sequenceNumber, 'batch_id': batchId, 'timestamp': timestamp.millisecondsSinceEpoch, @@ -661,10 +661,10 @@ class DebugEvent extends BaseEvent { }); @override - String getName() => 'debug_event'; + String get name => 'debug_event'; @override - Map getProperties() => { + Map get properties => { 'debug_info': debugInfo, 'level': level, 'timestamp': timestamp.millisecondsSinceEpoch, diff --git a/example/lib/screens/setting_screen.dart b/example/lib/screens/setting_screen.dart index 8433e44..9c5240e 100644 --- a/example/lib/screens/setting_screen.dart +++ b/example/lib/screens/setting_screen.dart @@ -491,7 +491,7 @@ class _SettingsScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - Text('Event: ${testEvent.getName()}'), + Text('Event: ${testEvent.name}'), SizedBox(height: 8), Text( 'Target Trackers: ${debugInfo.routingResult.targetTrackers.join(', ')}'), diff --git a/example/lib/trackers/amplitude_tracker.dart b/example/lib/trackers/amplitude_tracker.dart index c5a9898..ed6b916 100644 --- a/example/lib/trackers/amplitude_tracker.dart +++ b/example/lib/trackers/amplitude_tracker.dart @@ -36,7 +36,7 @@ class AmplitudeTracker extends BaseTrackerStrategy { @override Future doTrack(BaseEvent event) async { - final properties = event.getProperties() ?? {}; + final properties = event.properties ?? {}; // Add event metadata for Amplitude final enhancedProperties = { @@ -49,11 +49,11 @@ class AmplitudeTracker extends BaseTrackerStrategy { // In real implementation: // await Amplitude.getInstance().logEvent( - // event.getName(), + // event.name, // eventProperties: enhancedProperties, // ); - debugPrint('📊 Amplitude tracking: ${event.getName()} $enhancedProperties'); + debugPrint('📊 Amplitude tracking: ${event.name} $enhancedProperties'); // Handle revenue events if (event is PurchaseEvent) { diff --git a/example/lib/trackers/custom_api_tracker.dart b/example/lib/trackers/custom_api_tracker.dart index 7f4c06f..54b2b84 100644 --- a/example/lib/trackers/custom_api_tracker.dart +++ b/example/lib/trackers/custom_api_tracker.dart @@ -91,8 +91,8 @@ class CustomAPITracker extends BaseTrackerStrategy { final payload = { 'events': eventsToSend .map((event) => { - 'name': event.getName(), - 'properties': event.getProperties(), + 'name': event.name, + 'properties': event.properties, 'timestamp': event.timestamp.toIso8601String(), 'category': event.category?.name, 'contains_pii': event.containsPII, diff --git a/example/lib/trackers/firebase_tracker.dart b/example/lib/trackers/firebase_tracker.dart index 84e66df..5514e69 100644 --- a/example/lib/trackers/firebase_tracker.dart +++ b/example/lib/trackers/firebase_tracker.dart @@ -43,12 +43,12 @@ class FirebaseTracker extends BaseTrackerStrategy { Future doTrack(BaseEvent event) async { // In real implementation: // await _analytics.logEvent( - // name: event.getName(), - // parameters: _convertProperties(event.getProperties()), + // name: event.name, + // parameters: _convertProperties(event.properties), // ); debugPrint( - '🔥 Firebase tracking: ${event.getName()} ${event.getProperties()}'); + '🔥 Firebase tracking: ${event.name} ${event.properties}'); // Handle special business events if (event is PurchaseEvent) { diff --git a/example/lib/trackers/mixpanel_tracker.dart b/example/lib/trackers/mixpanel_tracker.dart index 68c6c56..53813b5 100644 --- a/example/lib/trackers/mixpanel_tracker.dart +++ b/example/lib/trackers/mixpanel_tracker.dart @@ -47,7 +47,7 @@ class MixpanelTracker extends BaseTrackerStrategy { @override Future doTrack(BaseEvent event) async { - final properties = event.getProperties() ?? {}; + final properties = event.properties ?? {}; // Add event metadata final enhancedProperties = { @@ -59,9 +59,9 @@ class MixpanelTracker extends BaseTrackerStrategy { }; // In real implementation: - // _mixpanel.track(event.getName(), properties: enhancedProperties); + // _mixpanel.track(event.name, properties: enhancedProperties); - debugPrint('🎯 Mixpanel tracking: ${event.getName()} $enhancedProperties'); + debugPrint('🎯 Mixpanel tracking: ${event.name} $enhancedProperties'); // Handle special events if (event is PurchaseEvent) { diff --git a/example/lib/utils/gdpr_manager.dart b/example/lib/utils/gdpr_manager.dart index cdf90a5..eb387d7 100644 --- a/example/lib/utils/gdpr_manager.dart +++ b/example/lib/utils/gdpr_manager.dart @@ -242,10 +242,10 @@ class ConsentChangeEvent extends BaseEvent { }); @override - String getName() => 'consent_change'; + String get name => 'consent_change'; @override - Map getProperties() => { + Map get properties => { 'general_consent': hasGeneralConsent, 'pii_consent': hasPIIConsent, 'marketing_consent': hasMarketingConsent, diff --git a/example/pubspec.lock b/example/pubspec.lock index d984f66..d048d04 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -143,7 +143,7 @@ packages: path: ".." relative: true source: path - version: "0.1.0" + version: "0.1.1" flutter: dependency: "direct main" description: flutter diff --git a/lib/src/core/event_processor.dart b/lib/src/core/event_processor.dart index d7b86c0..bbde3b1 100644 --- a/lib/src/core/event_processor.dart +++ b/lib/src/core/event_processor.dart @@ -106,7 +106,7 @@ class EventProcessor { error: TrackerException( 'Tracker not found: $trackerId', trackerId: trackerId, - eventName: event.getName(), + eventName: event.name, code: 'NOT_FOUND', ), )); @@ -120,7 +120,7 @@ class EventProcessor { error: TrackerException( 'Tracker is disabled: $trackerId', trackerId: trackerId, - eventName: event.getName(), + eventName: event.name, code: 'DISABLED', ), )); @@ -143,7 +143,7 @@ class EventProcessor { : TrackerException( 'Failed to track event: $e', trackerId: trackerId, - eventName: event.getName(), + eventName: event.name, originalError: e, ), )); @@ -258,7 +258,7 @@ class EventProcessingResult { @override String toString() { return 'EventProcessingResult(' - 'event: ${event.getName()}, ' + 'event: ${event.name}, ' 'routed: $wasRouted, ' 'tracked: $wasTracked, ' 'successful: $successfulTrackingCount/${trackingResults.length}' diff --git a/lib/src/models/event/base_event.dart b/lib/src/models/event/base_event.dart index f2e0adf..041784c 100644 --- a/lib/src/models/event/base_event.dart +++ b/lib/src/models/event/base_event.dart @@ -3,10 +3,10 @@ import 'package:flex_track/src/models/routing/tracker_group.dart'; abstract class BaseEvent { /// Returns the name of the event - String getName(); + String get name; /// Returns the properties associated with the event - Map? getProperties(); + Map? get properties; /// Optional category for automatic routing /// Override this in subclasses to enable category-based routing @@ -47,8 +47,8 @@ abstract class BaseEvent { /// Useful for debugging and serialization Map toMap() { return { - 'name': getName(), - 'properties': getProperties(), + 'name': name, + 'properties': properties, 'category': category?.name, 'preferredGroup': preferredGroup?.name, 'containsPII': containsPII, @@ -63,6 +63,6 @@ abstract class BaseEvent { @override String toString() { - return 'Event(${getName()}${category != null ? ', category: ${category!.name}' : ''})'; + return 'Event($name${category != null ? ', category: ${category!.name}' : ''})'; } } diff --git a/lib/src/models/routing/routing_rule.dart b/lib/src/models/routing/routing_rule.dart index 2e8ab43..8e4bfa1 100644 --- a/lib/src/models/routing/routing_rule.dart +++ b/lib/src/models/routing/routing_rule.dart @@ -60,13 +60,12 @@ class RoutingRule { } // Check event name pattern (contains check) - if (eventNamePattern != null && - !event.getName().contains(eventNamePattern!)) { + if (eventNamePattern != null && !event.name.contains(eventNamePattern!)) { return false; } // Check regex pattern - if (eventNameRegex != null && !eventNameRegex!.hasMatch(event.getName())) { + if (eventNameRegex != null && !eventNameRegex!.hasMatch(event.name)) { return false; } @@ -77,7 +76,7 @@ class RoutingRule { // Check property existence and value if (hasProperty != null) { - final props = event.getProperties(); + final props = event.properties; if (props == null || !props.containsKey(hasProperty)) { return false; } diff --git a/lib/src/routing/routing_engine.dart b/lib/src/routing/routing_engine.dart index 02aa6c5..8d86a17 100644 --- a/lib/src/routing/routing_engine.dart +++ b/lib/src/routing/routing_engine.dart @@ -99,8 +99,8 @@ class RoutingEngine { ); } catch (e, stackTrace) { throw RoutingException( - 'Failed to route event ${event.getName()}: $e', - eventName: event.getName(), + 'Failed to route event ${event.name}: $e', + eventName: event.name, originalError: e, stackTrace: stackTrace, ); @@ -183,15 +183,15 @@ class RoutingEngine { } if (rule.eventNamePattern != null && - !event.getName().contains(rule.eventNamePattern!)) { + !event.name.contains(rule.eventNamePattern!)) { reasons.add( - 'Event name pattern mismatch: "${event.getName()}" does not contain "${rule.eventNamePattern}"'); + 'Event name pattern mismatch: "${event.name}" does not contain "${rule.eventNamePattern}"'); } if (rule.eventNameRegex != null && - !rule.eventNameRegex!.hasMatch(event.getName())) { + !rule.eventNameRegex!.hasMatch(event.name)) { reasons.add( - 'Event name regex mismatch: "${event.getName()}" does not match /${rule.eventNameRegex!.pattern}/'); + 'Event name regex mismatch: "${event.name}" does not match /${rule.eventNameRegex!.pattern}/'); } if (rule.category != null && event.category != rule.category) { diff --git a/lib/src/strategies/base_tracker_strategy.dart b/lib/src/strategies/base_tracker_strategy.dart index cc22b31..47994cc 100644 --- a/lib/src/strategies/base_tracker_strategy.dart +++ b/lib/src/strategies/base_tracker_strategy.dart @@ -66,9 +66,9 @@ abstract class BaseTrackerStrategy implements TrackerStrategy { await doTrack(event); } catch (e) { throw TrackerException( - 'Failed to track event ${event.getName()} with tracker $_id: $e', + 'Failed to track event ${event.name} with tracker $_id: $e', trackerId: _id, - eventName: event.getName(), + eventName: event.name, originalError: e, ); } diff --git a/lib/src/strategies/built_in/console_tracker.dart b/lib/src/strategies/built_in/console_tracker.dart index 0b85ca1..e1dbe19 100644 --- a/lib/src/strategies/built_in/console_tracker.dart +++ b/lib/src/strategies/built_in/console_tracker.dart @@ -59,7 +59,7 @@ class ConsoleTracker extends BaseTrackerStrategy { buffer.write('$_prefix: '); // Add event name - buffer.write(event.getName()); + buffer.write(event.name); // Add category if available if (event.category != null) { @@ -78,8 +78,8 @@ class ConsoleTracker extends BaseTrackerStrategy { _log(buffer.toString()); // Show properties if enabled - if (_showProperties && event.getProperties() != null) { - final properties = event.getProperties()!; + if (_showProperties && event.properties != null) { + final properties = event.properties!; if (properties.isNotEmpty) { _log(' Properties: ${_formatProperties(properties)}', indent: 2); } @@ -109,7 +109,7 @@ class ConsoleTracker extends BaseTrackerStrategy { _eventHistory.add(event); final buffer = StringBuffer(); - buffer.write(' ${i + 1}. ${event.getName()}'); + buffer.write(' ${i + 1}. ${event.name}'); if (event.category != null) { buffer.write(' (${event.category!.name})'); @@ -121,8 +121,8 @@ class ConsoleTracker extends BaseTrackerStrategy { _log(buffer.toString()); - if (_showProperties && event.getProperties() != null) { - final properties = event.getProperties()!; + if (_showProperties && event.properties != null) { + final properties = event.properties!; if (properties.isNotEmpty) { _log(' Props: ${_formatProperties(properties, compact: true)}', indent: 6); diff --git a/test/core/event_processor_test.dart b/test/core/event_processor_test.dart index 2b4068d..72aac43 100644 --- a/test/core/event_processor_test.dart +++ b/test/core/event_processor_test.dart @@ -223,7 +223,7 @@ void main() { final stringResult = result.toString(); expect(stringResult, contains('EventProcessingResult')); - expect(stringResult, contains(event.getName())); + expect(stringResult, contains(event.name)); expect(stringResult, contains('routed: true')); expect(stringResult, contains('tracked: true')); expect(stringResult, contains('successful: 1/1')); @@ -302,10 +302,10 @@ class _TestEvent extends BaseEvent { _TestEvent(this.eventName); @override - String getName() => eventName; + String get name => eventName; @override - Map? getProperties() => {'test': 'value'}; + Map? get properties => {'test': 'value'}; } class _NonTrackerExceptionTracker extends BaseTrackerStrategy { @@ -339,7 +339,7 @@ class _TrackerExceptionTracker extends BaseTrackerStrategy { throw TrackerException( 'Custom tracker error', trackerId: id, - eventName: event.getName(), + eventName: event.name, ); } } diff --git a/test/core/flex_track_test.dart b/test/core/flex_track_test.dart index 051164d..6d560e9 100644 --- a/test/core/flex_track_test.dart +++ b/test/core/flex_track_test.dart @@ -8,10 +8,10 @@ class TestEvent extends BaseEvent { TestEvent({required this.testProperty}); @override - String getName() => 'test_event'; + String get name => 'test_event'; @override - Map getProperties() => {'test_property': testProperty}; + Map get properties => {'test_property': testProperty}; } class PurchaseTestEvent extends BaseEvent { @@ -20,10 +20,10 @@ class PurchaseTestEvent extends BaseEvent { PurchaseTestEvent({required this.amount}); @override - String getName() => 'purchase'; + String get name => 'purchase'; @override - Map getProperties() => {'amount': amount}; + Map get properties => {'amount': amount}; @override EventCategory get category => EventCategory.business; @@ -34,10 +34,10 @@ class PurchaseTestEvent extends BaseEvent { class DebugTestEvent extends BaseEvent { @override - String getName() => 'debug_test'; + String get name => 'debug_test'; @override - Map? getProperties() => null; + Map? get properties => null; @override EventCategory get category => EventCategory.technical; @@ -49,10 +49,10 @@ class PIITestEvent extends BaseEvent { PIITestEvent({required this.email}); @override - String getName() => 'user_data'; + String get name => 'user_data'; @override - Map getProperties() => {'email': email}; + Map get properties => {'email': email}; @override bool get containsPII => true; @@ -63,10 +63,10 @@ class PIITestEvent extends BaseEvent { class EssentialTestEvent extends BaseEvent { @override - String getName() => 'system_essential'; + String get name => 'system_essential'; @override - Map? getProperties() => null; + Map? get properties => null; @override bool get isEssential => true; @@ -124,7 +124,7 @@ void main() { expect(mockTracker1.capturedEvents, hasLength(1)); expect(mockTracker2.capturedEvents, hasLength(1)); expect( - mockTracker1.capturedEvents.first.getName(), equals('test_event')); + mockTracker1.capturedEvents.first.name, equals('test_event')); }); test('should track multiple events', () async { diff --git a/test/core/tracker_registry_test.dart b/test/core/tracker_registry_test.dart index 68db255..2afc051 100644 --- a/test/core/tracker_registry_test.dart +++ b/test/core/tracker_registry_test.dart @@ -392,8 +392,8 @@ void main() { class FakeBaseEvent extends Fake implements BaseEvent { @override - String getName() => 'FakeEvent'; + String get name => 'FakeEvent'; @override - Map? getProperties() => {}; + Map? get properties => {}; } diff --git a/test/models/routing/routing_config_test.dart b/test/models/routing/routing_config_test.dart index 97c561d..767e033 100644 --- a/test/models/routing/routing_config_test.dart +++ b/test/models/routing/routing_config_test.dart @@ -60,7 +60,7 @@ void main() { id: 'rule3', priority: 15, targetGroup: TrackerGroup.all); final config = RoutingConfiguration(rules: [rule1, rule2, rule3]); final event = MockBaseEvent(); - when(event.getName()).thenReturn('test_event'); + when(event.name).thenReturn('test_event'); final matchingRules = config.getMatchingRules(event); expect(matchingRules, @@ -74,7 +74,7 @@ void main() { id: 'default', isDefault: true, targetGroup: TrackerGroup.all); final config = RoutingConfiguration(rules: [defaultRule]); final event = MockBaseEvent(); - when(event.getName()).thenReturn('non_matching_event'); + when(event.name).thenReturn('non_matching_event'); final matchingRules = config.getMatchingRules(event); expect(matchingRules, [defaultRule]); @@ -86,7 +86,7 @@ void main() { final config = RoutingConfiguration(rules: [], defaultGroup: TrackerGroup.all); final event = MockBaseEvent(); - when(event.getName()).thenReturn('non_matching_event'); + when(event.name).thenReturn('non_matching_event'); final matchingRules = config.getMatchingRules(event); expect(matchingRules.length, 1); @@ -100,7 +100,7 @@ void main() { () { final config = RoutingConfiguration.empty(); final event = MockBaseEvent(); - when(event.getName()).thenReturn('non_matching_event'); + when(event.name).thenReturn('non_matching_event'); expect(config.getMatchingRules(event), isEmpty); }); @@ -112,7 +112,7 @@ void main() { final config = RoutingConfiguration( rules: [debugRule, normalRule], isDebugMode: false); final event = MockBaseEvent(); - when(event.getName()).thenReturn('test_event'); + when(event.name).thenReturn('test_event'); final matchingRules = config.getMatchingRules(event); expect(matchingRules, contains(normalRule)); @@ -127,7 +127,7 @@ void main() { final config = RoutingConfiguration( rules: [debugRule, normalRule], isDebugMode: true); final event = MockBaseEvent(); - when(event.getName()).thenReturn('test_event'); + when(event.name).thenReturn('test_event'); final matchingRules = config.getMatchingRules(event); expect(matchingRules, contains(normalRule)); @@ -143,7 +143,7 @@ void main() { id: 'rule2', priority: 5, targetGroup: TrackerGroup.all); final config = RoutingConfiguration(rules: [rule1, rule2]); final event = MockBaseEvent(); - when(event.getName()).thenReturn('test_event'); + when(event.name).thenReturn('test_event'); expect(config.getPrimaryRule(event), rule1); }); @@ -151,7 +151,7 @@ void main() { test('should return null if no rules match', () { final config = RoutingConfiguration.empty(); final event = MockBaseEvent(); - when(event.getName()).thenReturn('test_event'); + when(event.name).thenReturn('test_event'); expect(config.getPrimaryRule(event), isNull); }); }); @@ -172,7 +172,7 @@ void main() { requirePIIConsent: true); final config = RoutingConfiguration(rules: [rule1, rule2, rule3]); final event = MockBaseEvent(); - when(event.getName()).thenReturn('test_event'); + when(event.name).thenReturn('test_event'); when(event.isEssential).thenReturn(false); when(event.requiresConsent).thenReturn(true); when(event.containsPII).thenReturn(true); @@ -218,7 +218,7 @@ void main() { id: 'rule2', priority: 5, targetGroup: TrackerGroup.development); final config = RoutingConfiguration(rules: [rule1, rule2]); final event = MockBaseEvent(); - when(event.getName()).thenReturn('test_event'); + when(event.name).thenReturn('test_event'); when(event.isEssential).thenReturn(false); when(event.requiresConsent).thenReturn(true); when(event.containsPII).thenReturn(false); @@ -236,7 +236,7 @@ void main() { id: 'rule2', priority: 10, targetGroup: TrackerGroup.development); final config = RoutingConfiguration(rules: [rule1, rule2]); final event = MockBaseEvent(); - when(event.getName()).thenReturn('test_event'); + when(event.name).thenReturn('test_event'); when(event.isEssential).thenReturn(false); when(event.requiresConsent).thenReturn(true); when(event.containsPII).thenReturn(false); diff --git a/test/models/routing/routing_config_test.mocks.dart b/test/models/routing/routing_config_test.mocks.dart index 5a5f32c..52c4a7d 100644 --- a/test/models/routing/routing_config_test.mocks.dart +++ b/test/models/routing/routing_config_test.mocks.dart @@ -73,7 +73,7 @@ class MockBaseEvent extends _i1.Mock implements _i2.BaseEvent { ) as DateTime); @override - String getName() => (super.noSuchMethod( + String get name => (super.noSuchMethod( Invocation.method( #getName, [], diff --git a/test/routing/presets/smart_defaults_test.dart b/test/routing/presets/smart_defaults_test.dart index 7313c28..0a1eb18 100644 --- a/test/routing/presets/smart_defaults_test.dart +++ b/test/routing/presets/smart_defaults_test.dart @@ -590,15 +590,15 @@ void main() { class TestEvent extends BaseEvent { final String eventName; final EventCategory? eventCategory; - final Map? properties; + final Map? _properties; - TestEvent(this.eventName, [this.eventCategory, this.properties]); + TestEvent(this.eventName, [this.eventCategory, this._properties]); @override - String getName() => eventName; + String get name => eventName; @override - Map? getProperties() => properties; + Map? get properties => _properties; @override EventCategory? get category => eventCategory; @@ -610,10 +610,10 @@ class HighVolumeTestEvent extends BaseEvent { HighVolumeTestEvent(this.eventName); @override - String getName() => eventName; + String get name => eventName; @override - Map? getProperties() => null; + Map? get properties => null; @override bool get isHighVolume => true; @@ -625,10 +625,10 @@ class EssentialTestEvent extends BaseEvent { EssentialTestEvent(this.eventName); @override - String getName() => eventName; + String get name => eventName; @override - Map? getProperties() => null; + Map? get properties => null; @override bool get isEssential => true; diff --git a/test/routing/route_config_builder_test.dart b/test/routing/route_config_builder_test.dart index 322c4d7..31db35a 100644 --- a/test/routing/route_config_builder_test.dart +++ b/test/routing/route_config_builder_test.dart @@ -568,10 +568,10 @@ class TestEvent extends BaseEvent { TestEvent(this.eventName); @override - String getName() => eventName; + String get name => eventName; @override - Map? getProperties() => null; + Map? get properties => null; } class BusinessEvent extends BaseEvent { @@ -581,10 +581,10 @@ class BusinessEvent extends BaseEvent { BusinessEvent(this.eventName, this.revenue); @override - String getName() => eventName; + String get name => eventName; @override - Map getProperties() => {'revenue': revenue}; + Map get properties => {'revenue': revenue}; @override EventCategory get category => EventCategory.business; diff --git a/test/routing/routing_builder_test.dart b/test/routing/routing_builder_test.dart index ad9c9ff..711dd18 100644 --- a/test/routing/routing_builder_test.dart +++ b/test/routing/routing_builder_test.dart @@ -797,8 +797,8 @@ class TestEvent extends BaseEvent { TestEvent(this.eventName); @override - String getName() => eventName; + String get name => eventName; @override - Map? getProperties() => null; + Map? get properties => null; } diff --git a/test/routing/routing_engine_test.dart b/test/routing/routing_engine_test.dart index f1484b6..af37447 100644 --- a/test/routing/routing_engine_test.dart +++ b/test/routing/routing_engine_test.dart @@ -1268,15 +1268,15 @@ void main() { // Test Event Classes class TestEvent extends BaseEvent { final String eventName; - final Map? properties; + final Map? _properties; - TestEvent(this.eventName, [this.properties]); + TestEvent(this.eventName, [this._properties]); @override - String getName() => eventName; + String get name => eventName; @override - Map? getProperties() => properties; + Map? get properties => _properties; } class BusinessTestEvent extends BaseEvent { @@ -1286,10 +1286,10 @@ class BusinessTestEvent extends BaseEvent { BusinessTestEvent(this.eventName, this.amount); @override - String getName() => eventName; + String get name => eventName; @override - Map getProperties() => {'amount': amount}; + Map get properties => {'amount': amount}; @override EventCategory get category => EventCategory.business; @@ -1304,10 +1304,10 @@ class DebugTestEvent extends BaseEvent { DebugTestEvent(this.eventName); @override - String getName() => eventName; + String get name => eventName; @override - Map? getProperties() => null; + Map? get properties => null; @override EventCategory get category => EventCategory.technical; @@ -1320,10 +1320,10 @@ class PIITestEvent extends BaseEvent { PIITestEvent(this.eventName, this.email); @override - String getName() => eventName; + String get name => eventName; @override - Map getProperties() => {'email': email}; + Map get properties => {'email': email}; @override bool get containsPII => true; @@ -1338,10 +1338,10 @@ class EssentialTestEvent extends BaseEvent { EssentialTestEvent(this.eventName); @override - String getName() => eventName; + String get name => eventName; @override - Map? getProperties() => null; + Map? get properties => null; @override bool get isEssential => true; @@ -1356,10 +1356,10 @@ class HighVolumeTestEvent extends BaseEvent { HighVolumeTestEvent(this.eventName); @override - String getName() => eventName; + String get name => eventName; @override - Map? getProperties() => null; + Map? get properties => null; @override bool get isHighVolume => true; @@ -1372,10 +1372,10 @@ class MarketingTestEvent extends BaseEvent { MarketingTestEvent(this.eventName, this.campaign); @override - String getName() => eventName; + String get name => eventName; @override - Map getProperties() => {'campaign': campaign}; + Map get properties => {'campaign': campaign}; @override EventCategory get category => EventCategory.marketing; @@ -1387,10 +1387,10 @@ class SystemTestEvent extends BaseEvent { SystemTestEvent(this.eventName); @override - String getName() => eventName; + String get name => eventName; @override - Map? getProperties() => null; + Map? get properties => null; @override EventCategory get category => EventCategory.system; @@ -1405,10 +1405,10 @@ class SecurityTestEvent extends BaseEvent { SecurityTestEvent(this.eventName); @override - String getName() => eventName; + String get name => eventName; @override - Map? getProperties() => null; + Map? get properties => null; @override EventCategory get category => EventCategory.security; @@ -1428,10 +1428,10 @@ class PropertyTestEvent extends BaseEvent { PropertyTestEvent(this.eventName, this.eventProperties); @override - String getName() => eventName; + String get name => eventName; @override - Map getProperties() => eventProperties; + Map get properties => eventProperties; @override bool get containsPII => mockContainsPII; diff --git a/test/routing/routing_rule_builder_test.dart b/test/routing/routing_rule_builder_test.dart index 95ef77c..3b2292e 100644 --- a/test/routing/routing_rule_builder_test.dart +++ b/test/routing/routing_rule_builder_test.dart @@ -687,8 +687,8 @@ class TestEvent extends BaseEvent { TestEvent(this.eventName); @override - String getName() => eventName; + String get name => eventName; @override - Map? getProperties() => null; + Map? get properties => null; } diff --git a/test/strategies/base_tracker_strategy_test.dart b/test/strategies/base_tracker_strategy_test.dart index d679d1f..27e4d78 100644 --- a/test/strategies/base_tracker_strategy_test.dart +++ b/test/strategies/base_tracker_strategy_test.dart @@ -106,7 +106,7 @@ void main() { setUp(() { tracker = TestTrackerStrategy(id: 'testId', name: 'Test Tracker'); mockEvent = MockBaseEvent(); - when(mockEvent.getName()).thenReturn('testEvent'); + when(mockEvent.name).thenReturn('testEvent'); }); test('constructor sets id, name, and enabled status correctly', () { @@ -216,8 +216,8 @@ void main() { setUp(() async { mockEvents = [MockBaseEvent(), MockBaseEvent()]; - when(mockEvents[0].getName()).thenReturn('event1'); - when(mockEvents[1].getName()).thenReturn('event2'); + when(mockEvents[0].name).thenReturn('event1'); + when(mockEvents[1].name).thenReturn('event2'); await tracker.initialize(); }); diff --git a/test/strategies/base_tracker_strategy_test.mocks.dart b/test/strategies/base_tracker_strategy_test.mocks.dart index 188b4c2..ae3a5a2 100644 --- a/test/strategies/base_tracker_strategy_test.mocks.dart +++ b/test/strategies/base_tracker_strategy_test.mocks.dart @@ -73,7 +73,7 @@ class MockBaseEvent extends _i1.Mock implements _i2.BaseEvent { ) as DateTime); @override - String getName() => (super.noSuchMethod( + String get name => (super.noSuchMethod( Invocation.method( #getName, [], diff --git a/test/test_utils/mock_events.dart b/test/test_utils/mock_events.dart index 8570e78..e6fbfeb 100644 --- a/test/test_utils/mock_events.dart +++ b/test/test_utils/mock_events.dart @@ -41,12 +41,12 @@ class CustomEvent extends BaseEvent { } @override - String getName() => _name; + String get name => _name; @override @override @override - Map? getProperties() => _properties?.cast(); + Map? get properties => _properties?.cast(); @override EventCategory? get category => _category;