diff --git a/.cursor/rules/cursor-rules-location.mdc b/.cursor/rules/cursor-rules-location.mdc new file mode 100644 index 0000000..fc835d5 --- /dev/null +++ b/.cursor/rules/cursor-rules-location.mdc @@ -0,0 +1,78 @@ +--- +description: Cursor Rules Location and Creation +globs: +alwaysApply: false +--- + +# Cursor Rules Location + +Rules for placing and organizing Cursor rule files in the repository. + + +name: cursor_rules_location +description: Standards for placing Cursor rule files in the correct directory +filters: + # Match any .mdc files + - type: file_extension + pattern: "\\.mdc$" + # Match files that look like Cursor rules + - type: content + pattern: "(?s).*?" + # Match file creation events + - type: event + pattern: "file_create" + +actions: + - type: reject + conditions: + - pattern: "^(?!\\.\\/\\.cursor\\/rules\\/.*\\.mdc$)" + message: "Cursor rule files (.mdc) must be placed in the .cursor/rules directory" + + - type: suggest + message: | + When creating Cursor rules: + + 1. Always place rule files in PROJECT_ROOT/.cursor/rules/: + ``` + .cursor/rules/ + ├── your-rule-name.mdc + ├── another-rule.mdc + └── ... + ``` + + 2. Follow the naming convention: + - Use kebab-case for filenames + - Always use .mdc extension + - Make names descriptive of the rule's purpose + + 3. Directory structure: + ``` + PROJECT_ROOT/ + ├── .cursor/ + │ └── rules/ + │ ├── your-rule-name.mdc + │ └── ... + └── ... + ``` + + 4. Never place rule files: + - In the project root + - In subdirectories outside .cursor/rules + - In any other location + +examples: + - input: | + # Bad: Rule file in wrong location + rules/my-rule.mdc + my-rule.mdc + .rules/my-rule.mdc + + # Good: Rule file in correct location + .cursor/rules/my-rule.mdc + output: "Correctly placed Cursor rule file" + +metadata: + priority: high + version: 1.0 + + diff --git a/.cursor/rules/faro-protocol.mdc b/.cursor/rules/faro-protocol.mdc index 5645638..afea8b9 100644 --- a/.cursor/rules/faro-protocol.mdc +++ b/.cursor/rules/faro-protocol.mdc @@ -65,6 +65,6 @@ This Flutter SDK implements: ## Additional Resources -- [Grafana Faro Documentation](https:/grafana.com/docs/grafana-cloud/faro-web-sdk) -- [Grafana Alloy Documentation](https:/grafana.com/docs/alloy/latest) -- [Faro Receiver Component](https:/grafana.com/docs/alloy/latest/reference/components/faro/faro.receiver) +- [Grafana Faro Documentation](mdc:https:/grafana.com/docs/grafana-cloud/faro-web-sdk) +- [Grafana Alloy Documentation](mdc:https:/grafana.com/docs/alloy/latest) +- [Faro Receiver Component](mdc:https:/grafana.com/docs/alloy/latest/reference/components/faro/faro.receiver) diff --git a/.cursor/rules/plan-it-mode.mdc b/.cursor/rules/plan-it-mode.mdc new file mode 100644 index 0000000..be9a523 --- /dev/null +++ b/.cursor/rules/plan-it-mode.mdc @@ -0,0 +1,78 @@ +--- +description: A structured approach to task planning and execution for PlanIt tasks +globs: +alwaysApply: false +--- + +# This rule is automatically applied when a prompt begins with "PlanIt:" +# and implements a structured approach to task planning and execution. + +prompt: | + IMPORTANT: When a user message starts with "PlanIt:", ALWAYS follow this exact sequence: + + 0. STOP AND PLAN FIRST + - When you see "PlanIt:", this is a signal to STOP and PLAN before taking any action + - Do NOT start implementing anything until you have completed steps 1-3 + - CRITICAL: Do NOT write ANY code until the user has explicitly approved the plan + + 1. Initial Prompt Refinement: + - Review and analyze the initial prompt for clarity and completeness + - Suggest improvements if needed + - Seek confirmation before proceeding with any suggested revisions + + 2. Thoughtful Analysis Phase: + Before taking any action: + - Analyze task requirements thoroughly + - Review relevant parts of the codebase + - Document understanding and assumptions + - Confirm understanding with user before proceeding + + 3. Structured Planning and Progress Tracking: + - Create a detailed action plan in `.cursor_tasks.md` using this format: + ([Timestamp] should have date and time in hh:mm:ss) + ```markdown + # Task: [Task Name] + Created: [Timestamp] + + + + ## Action Plan + - [ ] Step 1 + - [ ] Step 2 + - [ ] Substep 2.1 + - [ ] Substep 2.2 + - [ ] Step 3 + + ## Progress Notes + - [Timestamp] Started implementation of... + - [Timestamp] Completed step 1... + ``` + + - After creating the plan, STOP and ask the user: "Does this plan look good to you? Should I proceed with implementation?" + - Only proceed with implementation after explicit user approval + - Update the plan continuously as tasks progress + - Document any new steps identified during execution + + 4. Continuous Learning and Adaptation: + - CRITICAL! If you make a misstake or get feedback, create or update cursor rules with your corrections! + - Document learnings and improvements + + Best Practices: + 1. Maintain clear and specific communication + 2. Provide context for all decisions + 3. Use iterative refinement when needed + 4. Document all significant decisions and changes + 5. Keep the user informed of progress + 6. Seek clarification when requirements are ambiguous + 7. ALWAYS get user approval before starting implementation + + Task Execution Flow: + 1. Initial prompt analysis and refinement + 2. Create/update `.cursor_tasks.md` + 3. GET USER APPROVAL OF PLAN + 4. Execute planned steps + 5. Document progress and learnings + 6. Update plan as needed + 7. Seek user feedback at key points + + \ No newline at end of file diff --git a/.cursor/rules/project-overview.mdc b/.cursor/rules/project-overview.mdc index 89bef36..a3de602 100644 --- a/.cursor/rules/project-overview.mdc +++ b/.cursor/rules/project-overview.mdc @@ -14,7 +14,7 @@ This is a Flutter SDK that implements the Grafana Faro protocol for mobile obser ### Main Packages -- **rum_sdk**: The core SDK that implements the Grafana Faro protocol and handles collecting and sending data +- **faro**: The core SDK that implements the Grafana Faro protocol and handles collecting and sending data ### Features @@ -49,5 +49,6 @@ The SDK is designed to be integrated into Flutter applications with minimal conf ## Project Structure -- `packages/rum_sdk`: Core SDK implementation +- `packages/faro`: Core SDK implementation - `docs/`: Documentation for usage and configuration + diff --git a/.github/workflows/flutter_checks.yml b/.github/workflows/flutter_checks.yml index 97e75fd..0a1e46e 100644 --- a/.github/workflows/flutter_checks.yml +++ b/.github/workflows/flutter_checks.yml @@ -11,15 +11,15 @@ concurrency: cancel-in-progress: true jobs: - build-and-test-rum-sdk: + build-and-test-faro: runs-on: ubuntu-latest timeout-minutes: 20 - name: build & test rum_sdk + name: build & test faro defaults: run: - working-directory: packages/rum_sdk + working-directory: packages/faro steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Flutter uses: subosito/flutter-action@v2 @@ -47,10 +47,10 @@ jobs: build-example-app: name: build Example app runs-on: ubuntu-latest - needs: build-and-test-rum-sdk + needs: build-and-test-faro timeout-minutes: 20 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: @@ -63,17 +63,17 @@ jobs: channel: stable - name: Install dependencies - working-directory: packages/rum_sdk/example + working-directory: packages/faro/example run: flutter pub get - - name: Create api-config file (only for rum_sdk) - working-directory: packages/rum_sdk + - name: Create api-config file (only for faro) + working-directory: packages/faro run: scripts/create-api-config-file.sh - name: Analyze code - working-directory: packages/rum_sdk/example + working-directory: packages/faro/example run: flutter analyze - name: Build example app - working-directory: packages/rum_sdk/example + working-directory: packages/faro/example run: flutter build apk # Replace 'apk' with 'ios', 'web', etc., as needed diff --git a/.gitignore b/.gitignore index 1ee144b..96486fd 100644 --- a/.gitignore +++ b/.gitignore @@ -28,4 +28,3 @@ migrate_working_dir/ .dart_tool/ .packages build/ -**/example/assets/ diff --git a/.vscode/launch.json b/.vscode/launch.json index 3713a09..7f71ddd 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -6,7 +6,7 @@ "type": "dart", "request": "launch", "flutterMode": "debug", - "cwd": "${workspaceFolder}/packages/rum_sdk/example/", + "cwd": "${workspaceFolder}/packages/faro/example/", "args": [ "-t", "lib/main.dart", diff --git a/README.md b/README.md index 677c5c9..a723918 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# rum_sdk +# faro -* Flutter SDK for Real User Monitoring +- Flutter SDK for Real User Monitoring ## Getting Started diff --git a/analysis_options.yaml b/analysis_options.yaml index 5b912e7..701a93b 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -65,7 +65,6 @@ linter: - non_constant_identifier_names - null_closures - only_throw_errors - - package_api_docs - package_prefixed_library_names - parameter_assignments - prefer_adjacent_string_concatenation diff --git a/docs/Configurations.md b/docs/Configurations.md index bbeead3..ae6d2b3 100644 --- a/docs/Configurations.md +++ b/docs/Configurations.md @@ -1,21 +1,23 @@ ## Configurations ### Http Tracking -To enable tracking http requests you can override the global HttpOverrides (if you have any other overrides add them before adding RumHttpOverrides) + +To enable tracking http requests you can override the global HttpOverrides (if you have any other overrides add them before adding FaroHttpOverrides) ```dart - HttpOverrides.global = RumHttpOverrides(HttpOverrides.current); + HttpOverrides.global = FaroHttpOverrides(HttpOverrides.current); ``` ### Mobile Vitals -Mobile Vitals such as cpu usage, memory usage & refresh rate are disabled by default. -The interval for how often the vitals are sent can also be + +Mobile Vitals such as cpu usage, memory usage & refresh rate are disabled by default. +The interval for how often the vitals are sent can also be given (default is set to 60 seconds) ```dart - RumFlutter().runApp( - optionsConfiguration: RumConfig( + Faro().runApp( + optionsConfiguration: FaroConfig( // ... cpuUsageVitals: true, memoryUsageVitals: true, @@ -33,15 +35,15 @@ given (default is set to 60 seconds) ### Batching Configuration -The RUM logs can be batched and sent to the server in a single request. The batch size and the interval for sending the batch can be configured. +The Faro logs can be batched and sent to the server in a single request. The batch size and the interval for sending the batch can be configured. ```dart - RumFlutter().runApp( - optionsConfiguration: RumConfig( + Faro().runApp( + optionsConfiguration: FaroConfig( // ... batchConfig: BatchConfig( payloadItemLimit: 30, // default is 30 - sendTimeout: const Duration(milliseconds: 500 ), // default is 500 milliseconds + sendTimeout: const Duration(milliseconds: 500 ), // default is 500 milliseconds enabled: true, // default is true ), @@ -54,14 +56,13 @@ The RUM logs can be batched and sent to the server in a single request. The batc ``` - ### RateLimiting Configuration -Limit the number of concurrent requests made to the RUM server +Limit the number of concurrent requests made to the Faro server ```dart - RumFlutter().runApp( - optionsConfiguration: RumConfig( + Faro().runApp( + optionsConfiguration: FaroConfig( // ... maxBufferLimit: 30, // default is 30 // ... @@ -78,8 +79,8 @@ Limit the number of concurrent requests made to the RUM server enable capturing of app crashes ```dart - RumFlutter().runApp( -optionsConfiguration: RumConfig( + Faro().runApp( +optionsConfiguration: FaroConfig( // ... enableCrashReporting: false // ... @@ -91,92 +92,91 @@ appRunner: ``` - -RUM Navigator Observer can be added to the list of observers to get view info and also send `view_changed` events when the route changes +Faro Navigator Observer can be added to the list of observers to get view info and also send `view_changed` events when the route changes ```dart return MaterialApp( //... - navigatorObservers: [RumNavigationObserver()], + navigatorObservers: [FaroNavigationObserver()], //... ), ``` -### RUM User Interactions Widget +### Faro User Interactions Widget -Add the Rum User Interactions Widget at the root level to enable the tracking of user interactions (click,tap...) +Add the Faro User Interactions Widget at the root level to enable the tracking of user interactions (click,tap...) ```dart - RumFlutter().runApp( - optionsConfiguration: RumConfig( + Faro().runApp( + optionsConfiguration: FaroConfig( //... ), appRunner: () => runApp( - const RumUserInteractionWidget(child: MyApp()) + const FaroUserInteractionWidget(child: MyApp()) ), ); ``` -### RUM Asset Bundle +### Faro Asset Bundle -Add the Rum Asset Bundle to track asset load info +Add the Faro Asset Bundle to track asset load info ```dart //.. appRunner: () => runApp( - DefaultAssetBundle(bundle: RumAssetBundle(), child: const RumUserInteractionWidget(child: MyApp())) + DefaultAssetBundle(bundle: FaroAssetBundle(), child: const FaroUserInteractionWidget(child: MyApp())) ), //.. ``` ### Sending Custom Events - - ```dart - RumFlutter().pushEvent(String name, {Map? attributes}) + Faro().pushEvent(String name, {Map? attributes}) // example - RumFlutter().pushEvent("event_name") - RumFlutter().pushEvent("event_name", attributes:{ + Faro().pushEvent("event_name") + Faro().pushEvent("event_name", attributes:{ attr1:"value" }) ``` - ### Sending Custom Logs + ```dart -RumFlutter().pushLog(String message, {String? level ,Map? context,Map? trace}) -//example -RumFlutter().pushLog("log_message",level:"warn") +Faro().pushLog(String message, {String? level ,Map? context,Map? trace}) +//example +Faro().pushLog("log_message",level:"warn") ``` ### Sending Custom Measurements + - values can only have numeric values + ```dart - RumFlutter().pushMeasurement(Map? values, String type) - RumFlutter().pushMeasurement({attr1:13.1, attr2:12},"some_measurements") + Faro().pushMeasurement(Map? values, String type) + Faro().pushMeasurement({attr1:13.1, attr2:12},"some_measurements") ``` ### Sending Custom Errors + ```dart - RumFlutter().pushError({required type, required value, StackTrace? stacktrace, String? context}) + Faro().pushError({required type, required value, StackTrace? stacktrace, String? context}) ``` ### Capturing Event Duration To capture the duration of an event you can use the following methods -```dart - RumFlutter().markEventStart(String key,String name) - // code - RumFlutter().markEventEnd(String key,String name, {Map? attributes}) +```dart + Faro().markEventStart(String key,String name) + // code + Faro().markEventEnd(String key,String name, {Map? attributes}) ``` - - ### Adding User Meta + ```dart - RumFlutter().setUserMeta({String? userId, String? userName, String? userEmail}); + Faro().setUserMeta({String? userId, String? userName, String? userEmail}); // example - RumFlutter().addUserMeta(userId:"123",userName:"user",userEmail:"jhondoes@something.com") + Faro().addUserMeta(userId:"123",userName:"user",userEmail:"jhondoes@something.com") ``` diff --git a/docs/Features.md b/docs/Features.md index 7cb204f..687bbbc 100644 --- a/docs/Features.md +++ b/docs/Features.md @@ -1,6 +1,6 @@ -## Rum Features +## Faro Features -## RUM Event metadata +## Faro Event metadata - view info - app info (name, version , env) @@ -35,7 +35,7 @@ - content/type - request/ response size -- Rum Asset Bundle +- Faro Asset Bundle - asset size - asset load time diff --git a/docs/Getting Started.md b/docs/Getting Started.md index a38e03d..78acd47 100644 --- a/docs/Getting Started.md +++ b/docs/Getting Started.md @@ -1,9 +1,9 @@ -# RUM Flutter - 0.0.1 Alpha +# Faro Flutter SDK ## Getting Started - Installation -- Initialise RUM +- Initialize Faro ### Onboarding @@ -12,10 +12,10 @@ Add the following dependencies to your `pubspec.yaml` ```yml -rum_sdk: +faro: git: url: - path: packages/rum_sdk + path: packages/faro ref: main ``` @@ -24,17 +24,17 @@ rum_sdk: - Set up a [Grafana Alloy](https://grafana.com/docs/alloy/latest/configure/) instance. - Configure your instance with [app-agent-receiver](https://grafana.com/docs/alloy/latest/reference/components/faro/faro.receiver/#server-block) integration. The integration exposes an http collection endpoint. -### Initialise RUM +### Initialize Faro -Add the following snippet to initialize RUM Monitoring with the default configurations -use the faro.receiver endpoint as collectorUrl in RumConfig +Add the following snippet to initialize Faro Monitoring with the default configurations +use the faro.receiver endpoint as collectorUrl in FaroConfig ```dart - HttpOverrides.global = RumHttpOverrides(HttpOverrides.current); // enable http tracking + HttpOverrides.global = FaroHttpOverrides(HttpOverrides.current); // enable http tracking - RumFlutter().runApp( - optionsConfiguration: RumConfig( + Faro().runApp( + optionsConfiguration: FaroConfig( appName: "", appVersion: "1.0.0", appEnv: "Test", @@ -42,12 +42,10 @@ use the faro.receiver endpoint as collectorUrl in RumConfig collectorUrl: "faro receiver endpoint" ), appRunner: () => runApp( - RumUserInteractionWidget(child: MyApp()) + FaroUserInteractionWidget(child: MyApp()) ), ); - - ``` -See all [configuration](./Configurations.md) options for RUM Flutter +See all [configuration](./Configurations.md) options for Faro Flutter diff --git a/packages/rum_sdk/.gitignore b/packages/faro/.gitignore similarity index 100% rename from packages/rum_sdk/.gitignore rename to packages/faro/.gitignore diff --git a/packages/rum_sdk/CHANGELOG.md b/packages/faro/CHANGELOG.md similarity index 60% rename from packages/rum_sdk/CHANGELOG.md rename to packages/faro/CHANGELOG.md index f39ec37..ee900e4 100644 --- a/packages/rum_sdk/CHANGELOG.md +++ b/packages/faro/CHANGELOG.md @@ -1,3 +1,15 @@ +## 0.2.0 + +- Renamed package from `rum_sdk` to `faro` +- Renamed main API class from `RumFlutter` to `Faro` +- Renamed all related classes with "Rum" prefix to "Faro" prefix +- Updated all import statements to use the new package name +- Updated documentation with new package name and examples + +## 0.1.2 + +- Bug fixes and improvements + ## 0.0.1 The following Key Metrics of Flutter Applications are Added in the Alpha Release. diff --git a/packages/rum_sdk/LICENSE b/packages/faro/LICENSE similarity index 100% rename from packages/rum_sdk/LICENSE rename to packages/faro/LICENSE diff --git a/packages/faro/README.md b/packages/faro/README.md new file mode 100644 index 0000000..831ef5b --- /dev/null +++ b/packages/faro/README.md @@ -0,0 +1,42 @@ +# Faro Flutter SDK + +Grafana Faro SDK for Flutter applications - Monitor your Flutter app with ease. + +## Getting Started + +This project is a Flutter implementation of the Grafana Faro protocol for mobile observability. It allows Flutter applications to send monitoring data to Grafana Cloud, providing comprehensive insights into app performance, user interactions, errors, and more. + +## Features + +- Performance monitoring (CPU, memory, app startup time) +- Exception and error tracking +- User interaction tracking +- Network request monitoring +- Session tracking +- Custom events and measurements + +## Usage + +```dart +import 'package:faro/faro_sdk.dart'; + +void main() async { + WidgetsFlutterBinding.ensureInitialized(); + + await Faro().runApp( + optionsConfiguration: FaroConfig( + appName: "my_app", + appVersion: "1.0.0", + appEnv: "production", + apiKey: "your-api-key", + collectorUrl: "your-collector-url", + enableCrashReporting: true, + ), + appRunner: () async { + runApp(MyApp()); + } + ); +} +``` + +For more information, see the [online documentation](https://flutter.dev/docs). diff --git a/packages/rum_sdk/analysis_options.yaml b/packages/faro/analysis_options.yaml similarity index 100% rename from packages/rum_sdk/analysis_options.yaml rename to packages/faro/analysis_options.yaml diff --git a/packages/rum_sdk/android/.gitignore b/packages/faro/android/.gitignore similarity index 100% rename from packages/rum_sdk/android/.gitignore rename to packages/faro/android/.gitignore diff --git a/packages/rum_sdk/android/build.gradle b/packages/faro/android/build.gradle similarity index 92% rename from packages/rum_sdk/android/build.gradle rename to packages/faro/android/build.gradle index 1cb8f8c..886e6d2 100644 --- a/packages/rum_sdk/android/build.gradle +++ b/packages/faro/android/build.gradle @@ -1,4 +1,4 @@ -group 'com.example.rum_sdk' +group 'com.example.faro' version '0.1.2' buildscript { @@ -33,7 +33,7 @@ android { minSdkVersion 19 } - namespace 'com.example.rum_sdk' + namespace 'com.example.faro' } dependencies { diff --git a/packages/rum_sdk/android/gradle.properties b/packages/faro/android/gradle.properties similarity index 100% rename from packages/rum_sdk/android/gradle.properties rename to packages/faro/android/gradle.properties diff --git a/packages/rum_sdk/android/gradle/wrapper/gradle-wrapper.jar b/packages/faro/android/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from packages/rum_sdk/android/gradle/wrapper/gradle-wrapper.jar rename to packages/faro/android/gradle/wrapper/gradle-wrapper.jar diff --git a/packages/rum_sdk/android/gradle/wrapper/gradle-wrapper.properties b/packages/faro/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from packages/rum_sdk/android/gradle/wrapper/gradle-wrapper.properties rename to packages/faro/android/gradle/wrapper/gradle-wrapper.properties diff --git a/packages/rum_sdk/android/gradlew b/packages/faro/android/gradlew similarity index 100% rename from packages/rum_sdk/android/gradlew rename to packages/faro/android/gradlew diff --git a/packages/rum_sdk/android/gradlew.bat b/packages/faro/android/gradlew.bat similarity index 100% rename from packages/rum_sdk/android/gradlew.bat rename to packages/faro/android/gradlew.bat diff --git a/packages/faro/android/settings.gradle b/packages/faro/android/settings.gradle new file mode 100644 index 0000000..76d5cc1 --- /dev/null +++ b/packages/faro/android/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'faro' diff --git a/packages/rum_sdk/android/src/main/AndroidManifest.xml b/packages/faro/android/src/main/AndroidManifest.xml similarity index 92% rename from packages/rum_sdk/android/src/main/AndroidManifest.xml rename to packages/faro/android/src/main/AndroidManifest.xml index d8b0774..92d9e46 100644 --- a/packages/rum_sdk/android/src/main/AndroidManifest.xml +++ b/packages/faro/android/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + package="com.example.faro"> diff --git a/packages/rum_sdk/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/faro/example/ios/Runner.xcworkspace/contents.xcworkspacedata similarity index 100% rename from packages/rum_sdk/example/ios/Runner.xcworkspace/contents.xcworkspacedata rename to packages/faro/example/ios/Runner.xcworkspace/contents.xcworkspacedata diff --git a/packages/rum_sdk/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/faro/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from packages/rum_sdk/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to packages/faro/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/packages/rum_sdk/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/faro/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings similarity index 100% rename from packages/rum_sdk/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings rename to packages/faro/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings diff --git a/packages/rum_sdk/example/ios/Runner/AppDelegate.swift b/packages/faro/example/ios/Runner/AppDelegate.swift similarity index 100% rename from packages/rum_sdk/example/ios/Runner/AppDelegate.swift rename to packages/faro/example/ios/Runner/AppDelegate.swift diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json rename to packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png rename to packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png rename to packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png rename to packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png rename to packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png rename to packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png rename to packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png rename to packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png rename to packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png rename to packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png rename to packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png rename to packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png rename to packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png rename to packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png rename to packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png rename to packages/faro/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/faro/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json rename to packages/faro/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/packages/faro/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png rename to packages/faro/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/packages/faro/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png rename to packages/faro/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/packages/faro/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png rename to packages/faro/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png diff --git a/packages/rum_sdk/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/packages/faro/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md rename to packages/faro/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md diff --git a/packages/rum_sdk/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/packages/faro/example/ios/Runner/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Base.lproj/LaunchScreen.storyboard rename to packages/faro/example/ios/Runner/Base.lproj/LaunchScreen.storyboard diff --git a/packages/rum_sdk/example/ios/Runner/Base.lproj/Main.storyboard b/packages/faro/example/ios/Runner/Base.lproj/Main.storyboard similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Base.lproj/Main.storyboard rename to packages/faro/example/ios/Runner/Base.lproj/Main.storyboard diff --git a/packages/rum_sdk/example/ios/Runner/Info.plist b/packages/faro/example/ios/Runner/Info.plist similarity index 96% rename from packages/rum_sdk/example/ios/Runner/Info.plist rename to packages/faro/example/ios/Runner/Info.plist index 7020f60..108164b 100644 --- a/packages/rum_sdk/example/ios/Runner/Info.plist +++ b/packages/faro/example/ios/Runner/Info.plist @@ -5,7 +5,7 @@ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName - Rum Sdk + Faro Sdk CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -13,7 +13,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - rum_sdk_example + faro_example CFBundlePackageType APPL CFBundleShortVersionString diff --git a/packages/rum_sdk/example/ios/Runner/Runner-Bridging-Header.h b/packages/faro/example/ios/Runner/Runner-Bridging-Header.h similarity index 100% rename from packages/rum_sdk/example/ios/Runner/Runner-Bridging-Header.h rename to packages/faro/example/ios/Runner/Runner-Bridging-Header.h diff --git a/packages/rum_sdk/example/ios/RunnerTests/RunnerTests.swift b/packages/faro/example/ios/RunnerTests/RunnerTests.swift similarity index 100% rename from packages/rum_sdk/example/ios/RunnerTests/RunnerTests.swift rename to packages/faro/example/ios/RunnerTests/RunnerTests.swift diff --git a/packages/rum_sdk/example/lib/main.dart b/packages/faro/example/lib/main.dart similarity index 88% rename from packages/rum_sdk/example/lib/main.dart rename to packages/faro/example/lib/main.dart index f8be58f..fc54ef4 100644 --- a/packages/rum_sdk/example/lib/main.dart +++ b/packages/faro/example/lib/main.dart @@ -2,21 +2,21 @@ import 'dart:convert'; import 'dart:io'; import 'package:flutter/material.dart'; -import 'package:rum_sdk/rum_sdk.dart'; +import 'package:faro/faro_sdk.dart'; import 'package:http/http.dart' as http; void main() async { WidgetsFlutterBinding.ensureInitialized(); - HttpOverrides.global = RumHttpOverrides(HttpOverrides.current); + HttpOverrides.global = FaroHttpOverrides(HttpOverrides.current); const faroCollectorUrl = String.fromEnvironment('FARO_COLLECTOR_URL'); final faroApiKey = faroCollectorUrl.split('/').last; - RumFlutter().transports.add(OfflineTransport( + Faro().transports.add(OfflineTransport( maxCacheDuration: const Duration(days: 3), )); - await RumFlutter().runApp( - optionsConfiguration: RumConfig( + await Faro().runApp( + optionsConfiguration: FaroConfig( appName: "example_app", appVersion: "2.0.1", appEnv: "Test", @@ -32,8 +32,8 @@ void main() async { ), appRunner: () async { runApp(DefaultAssetBundle( - bundle: RumAssetBundle(), - child: const RumUserInteractionWidget(child: MyApp()))); + bundle: FaroAssetBundle(), + child: const FaroUserInteractionWidget(child: MyApp()))); }); } @@ -45,9 +45,6 @@ class MyApp extends StatefulWidget { } class _MyAppState extends State { - // test - // final _rumSdkPlugin = RumSdkPlatform.instance; - @override void initState() { super.initState(); @@ -72,7 +69,7 @@ class _MyAppState extends State { @override Widget build(BuildContext context) { return MaterialApp( - navigatorObservers: [RumNavigationObserver()], + navigatorObservers: [FaroNavigationObserver()], initialRoute: '/', routes: { '/home': (context) => const HomePage(), @@ -80,7 +77,7 @@ class _MyAppState extends State { }, home: Scaffold( appBar: AppBar( - title: const Text('RUM Test App'), + title: const Text('Faro Test App'), ), body: const HomePage())); } @@ -121,7 +118,7 @@ class _FeaturesPageState extends State { @override void initState() { super.initState(); - RumFlutter().markEventEnd("home_event_start", "home_page_load"); + Faro().markEventEnd("home_event_start", "home_page_load"); } // Method to simulate an ANR by blocking the main thread @@ -186,20 +183,20 @@ class _FeaturesPageState extends State { ElevatedButton( child: const Text('Custom Warn Log'), onPressed: () { - RumFlutter().pushLog("Custom Log", level: "warn"); + Faro().pushLog("Custom Log", level: "warn"); }, ), ElevatedButton( child: const Text('Custom Measurement'), onPressed: () { - RumFlutter() + Faro() .pushMeasurement({'custom_value': 1}, "custom_measurement"); }, ), ElevatedButton( child: const Text('Custom Event'), onPressed: () { - RumFlutter().pushEvent("custom_event"); + Faro().pushEvent("custom_event"); }, ), ElevatedButton( @@ -222,13 +219,13 @@ class _FeaturesPageState extends State { ElevatedButton( child: const Text('Mark Event Start'), onPressed: () async { - RumFlutter().markEventStart("event1", "event1_duration"); + Faro().markEventStart("event1", "event1_duration"); }, ), ElevatedButton( child: const Text('Mark Event End'), onPressed: () async { - RumFlutter().markEventEnd("event1", "event1_duration"); + Faro().markEventEnd("event1", "event1_duration"); }, ), ElevatedButton( diff --git a/packages/rum_sdk/example/pubspec.lock b/packages/faro/example/pubspec.lock similarity index 99% rename from packages/rum_sdk/example/pubspec.lock rename to packages/faro/example/pubspec.lock index 0c0204b..f6f194a 100644 --- a/packages/rum_sdk/example/pubspec.lock +++ b/packages/faro/example/pubspec.lock @@ -113,6 +113,13 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.2" + faro: + dependency: "direct main" + description: + path: ".." + relative: true + source: path + version: "0.2.0" ffi: dependency: transitive description: @@ -376,13 +383,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.2.2" - rum_sdk: - dependency: "direct main" - description: - path: ".." - relative: true - source: path - version: "0.1.2" shared_preferences: dependency: transitive description: diff --git a/packages/rum_sdk/example/pubspec.yaml b/packages/faro/example/pubspec.yaml similarity index 96% rename from packages/rum_sdk/example/pubspec.yaml rename to packages/faro/example/pubspec.yaml index cbcf446..1e5fbb7 100644 --- a/packages/rum_sdk/example/pubspec.yaml +++ b/packages/faro/example/pubspec.yaml @@ -1,5 +1,5 @@ -name: rum_sdk_example -description: Demonstrates how to use the rum_sdk plugin. +name: faro_example +description: Demonstrates how to use the faro plugin. publish_to: "none" environment: @@ -14,7 +14,7 @@ environment: dependencies: flutter: sdk: flutter - rum_sdk: + faro: path: ../ http: ^1.2.2 # path: ../../rum_dart diff --git a/packages/faro/example/pubspec_overrides.yaml b/packages/faro/example/pubspec_overrides.yaml new file mode 100644 index 0000000..85e472d --- /dev/null +++ b/packages/faro/example/pubspec_overrides.yaml @@ -0,0 +1,4 @@ +# melos_managed_dependency_overrides: faro +dependency_overrides: + faro: + path: .. diff --git a/packages/rum_sdk/example/test/widget_test.dart b/packages/faro/example/test/widget_test.dart similarity index 57% rename from packages/rum_sdk/example/test/widget_test.dart rename to packages/faro/example/test/widget_test.dart index f949767..e3eed7b 100644 --- a/packages/rum_sdk/example/test/widget_test.dart +++ b/packages/faro/example/test/widget_test.dart @@ -5,23 +5,17 @@ // gestures. You can also use WidgetTester to find child widgets in the widget // tree, read text, and verify that the values of widget properties are correct. -import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:rum_sdk_example/main.dart'; +import 'package:faro_example/main.dart'; void main() { - testWidgets('Verify Platform version', (WidgetTester tester) async { + testWidgets('Verify MyApp can run', (WidgetTester tester) async { // Build our app and trigger a frame. await tester.pumpWidget(const MyApp()); - // Verify that platform version is retrieved. - expect( - find.byWidgetPredicate( - (Widget widget) => - widget is Text && widget.data!.startsWith('Running on:'), - ), - findsOneWidget, - ); + // Verify that MyApp can be built without errors + // This test passes if the widget builds without throwing any exceptions + expect(find.byType(MyApp), findsOneWidget); }); } diff --git a/packages/rum_sdk/ios/.gitignore b/packages/faro/ios/.gitignore similarity index 100% rename from packages/rum_sdk/ios/.gitignore rename to packages/faro/ios/.gitignore diff --git a/packages/rum_sdk/ios/Assets/.gitkeep b/packages/faro/ios/Assets/.gitkeep similarity index 100% rename from packages/rum_sdk/ios/Assets/.gitkeep rename to packages/faro/ios/Assets/.gitkeep diff --git a/packages/rum_sdk/ios/Classes/AppStart.swift b/packages/faro/ios/Classes/AppStart.swift similarity index 100% rename from packages/rum_sdk/ios/Classes/AppStart.swift rename to packages/faro/ios/Classes/AppStart.swift diff --git a/packages/rum_sdk/ios/Classes/CPUInfo.swift b/packages/faro/ios/Classes/CPUInfo.swift similarity index 100% rename from packages/rum_sdk/ios/Classes/CPUInfo.swift rename to packages/faro/ios/Classes/CPUInfo.swift diff --git a/packages/rum_sdk/ios/Classes/CrashReportingIntegration.swift b/packages/faro/ios/Classes/CrashReportingIntegration.swift similarity index 100% rename from packages/rum_sdk/ios/Classes/CrashReportingIntegration.swift rename to packages/faro/ios/Classes/CrashReportingIntegration.swift diff --git a/packages/rum_sdk/ios/Classes/RumSdkPlugin.swift b/packages/faro/ios/Classes/FaroPlugin.swift similarity index 95% rename from packages/rum_sdk/ios/Classes/RumSdkPlugin.swift rename to packages/faro/ios/Classes/FaroPlugin.swift index 94f3a60..4bc0207 100644 --- a/packages/rum_sdk/ios/Classes/RumSdkPlugin.swift +++ b/packages/faro/ios/Classes/FaroPlugin.swift @@ -4,10 +4,10 @@ import Foundation import CrashReporter -public class RumSdkPlugin: NSObject, FlutterPlugin { +public class FaroPlugin: NSObject, FlutterPlugin { public static func register(with registrar: FlutterPluginRegistrar) { - let channel = FlutterMethodChannel(name: "rum_sdk", binaryMessenger: registrar.messenger()) - let instance = RumSdkPlugin() + let channel = FlutterMethodChannel(name: "faro", binaryMessenger: registrar.messenger()) + let instance = FaroPlugin() // if(isCrashReportAutoEnabled() == true){ // let crashreporter = CrashReportingIntegration() diff --git a/packages/rum_sdk/ios/Classes/RefreshRateVitals.swift b/packages/faro/ios/Classes/RefreshRateVitals.swift similarity index 100% rename from packages/rum_sdk/ios/Classes/RefreshRateVitals.swift rename to packages/faro/ios/Classes/RefreshRateVitals.swift diff --git a/packages/rum_sdk/ios/Classes/RumCrashReport.swift b/packages/faro/ios/Classes/RumCrashReport.swift similarity index 100% rename from packages/rum_sdk/ios/Classes/RumCrashReport.swift rename to packages/faro/ios/Classes/RumCrashReport.swift diff --git a/packages/rum_sdk/ios/rum_sdk.podspec b/packages/faro/ios/faro.podspec similarity index 87% rename from packages/rum_sdk/ios/rum_sdk.podspec rename to packages/faro/ios/faro.podspec index 9fd0274..6929544 100644 --- a/packages/rum_sdk/ios/rum_sdk.podspec +++ b/packages/faro/ios/faro.podspec @@ -1,10 +1,10 @@ # # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. -# Run `pod lib lint rum_sdk.podspec` to validate before publishing. +# Run `pod lib lint faro.podspec` to validate before publishing. # Pod::Spec.new do |s| - s.name = 'rum_sdk' - s.version = '0.1.2' + s.name = 'faro' + s.version = '0.2.0' s.summary = 'A new Flutter plugin project.' s.description = <<-DESC A new Flutter plugin project. diff --git a/packages/rum_sdk/lib/rum_flutter.dart b/packages/faro/lib/faro.dart similarity index 85% rename from packages/rum_sdk/lib/rum_flutter.dart rename to packages/faro/lib/faro.dart index 1aff9d3..8e231e3 100644 --- a/packages/rum_sdk/lib/rum_flutter.dart +++ b/packages/faro/lib/faro.dart @@ -4,34 +4,34 @@ import 'dart:async'; import 'dart:convert'; import 'dart:developer'; import 'dart:io'; + +import 'package:faro/faro_native_methods.dart'; +import 'package:faro/faro_sdk.dart'; +import 'package:faro/src/data_collection_policy.dart'; +import 'package:faro/src/device_info/session_attributes_provider.dart'; +import 'package:faro/src/models/span_record.dart'; +import 'package:faro/src/tracing/tracer_provider.dart'; +import 'package:faro/src/transport/batch_transport.dart'; +import 'package:faro/src/util/generate_session.dart'; import 'package:flutter/cupertino.dart'; import 'package:package_info_plus/package_info_plus.dart'; -import 'package:rum_sdk/rum_native_methods.dart'; -import 'package:rum_sdk/rum_sdk.dart'; -import 'package:rum_sdk/src/data_collection_policy.dart'; -import 'package:rum_sdk/src/device_info/session_attributes_provider.dart'; -import 'package:rum_sdk/src/models/span_record.dart'; -import 'package:rum_sdk/src/tracing/tracer_provider.dart'; -import 'package:rum_sdk/src/transport/batch_transport.dart'; -import 'package:rum_sdk/src/util/generate_session.dart'; - Timer? timer; typedef AppRunner = FutureOr Function(); -class RumFlutter { - factory RumFlutter() { +class Faro { + factory Faro() { return _instance; } // Private constructor - RumFlutter._(); + Faro._(); // Singleton instance - static RumFlutter _instance = RumFlutter._(); + static Faro _instance = Faro._(); @visibleForTesting - static set instance(RumFlutter instance) => _instance = instance; + static set instance(Faro instance) => _instance = instance; bool get enableDataCollection => DataCollectionPolicy().isEnabled; set enableDataCollection(bool enable) { @@ -42,7 +42,7 @@ class RumFlutter { } } - RumConfig? config; + FaroConfig? config; List _transports = []; BatchTransport? _batchTransport; List get transports => _transports; @@ -55,12 +55,12 @@ class RumFlutter { List? ignoreUrls = []; Map eventMark = {}; - RumNativeMethods? _nativeChannel; + FaroNativeMethods? _nativeChannel; - RumNativeMethods? get nativeChannel => _nativeChannel; + FaroNativeMethods? get nativeChannel => _nativeChannel; @visibleForTesting - set nativeChannel(RumNativeMethods? nativeChannel) { + set nativeChannel(FaroNativeMethods? nativeChannel) { _nativeChannel = nativeChannel; } @@ -74,12 +74,12 @@ class RumFlutter { _batchTransport = batchTransport; } - Future init({required RumConfig optionsConfiguration}) async { + Future init({required FaroConfig optionsConfiguration}) async { final attributesProvider = await SessionAttributesProviderFactory().create(); meta.session?.attributes = await attributesProvider.getAttributes(); - _nativeChannel ??= RumNativeMethods(); + _nativeChannel ??= FaroNativeMethods(); config = optionsConfiguration; _batchTransport = _batchTransport ?? BatchTransport( @@ -88,8 +88,8 @@ class RumFlutter { transports: _transports); if (config?.transports == null) { - RumFlutter()._transports.add( - RUMTransport( + Faro()._transports.add( + FaroTransport( collectorUrl: optionsConfiguration.collectorUrl ?? '', apiKey: optionsConfiguration.apiKey, maxBufferLimit: config?.maxBufferLimit, @@ -97,7 +97,7 @@ class RumFlutter { ), ); } else { - RumFlutter()._transports.addAll(config?.transports ?? []); + Faro()._transports.addAll(config?.transports ?? []); } _instance.ignoreUrls = optionsConfiguration.ignoreUrls ?? []; final packageInfo = await PackageInfo.fromPlatform(); @@ -128,11 +128,11 @@ class RumFlutter { WidgetsBinding.instance.addPostFrameCallback((_) { NativeIntegration.instance.getAppStart(); }); - WidgetsBinding.instance.addObserver(RumWidgetsBindingObserver()); + WidgetsBinding.instance.addObserver(FaroWidgetsBindingObserver()); } Future runApp( - {required RumConfig optionsConfiguration, + {required FaroConfig optionsConfiguration, required AppRunner? appRunner}) async { OnErrorIntegration().call(); FlutterErrorIntegration().call(); @@ -193,7 +193,7 @@ class RumFlutter { Map? trace, }) { _batchTransport?.addLog( - RumLog(message, level: level, context: context, trace: trace), + FaroLog(message, level: level, context: context, trace: trace), ); return null; } @@ -210,10 +210,10 @@ class RumFlutter { }) { var parsedStackTrace = {}; if (stacktrace != null) { - parsedStackTrace = {'frames': RumException.stackTraceParse(stacktrace)}; + parsedStackTrace = {'frames': FaroException.stackTraceParse(stacktrace)}; } _batchTransport?.addExceptions( - RumException(type, value, parsedStackTrace, context: context), + FaroException(type, value, parsedStackTrace, context: context), ); return null; } @@ -313,7 +313,7 @@ class RumFlutter { } } catch (error, stacktrace) { log( - 'RumFlutter: enableCrashReporter failed with error: $error', + 'Faro: enableCrashReporter failed with error: $error', stackTrace: stacktrace, ); } diff --git a/packages/faro/lib/faro_native_methods.dart b/packages/faro/lib/faro_native_methods.dart new file mode 100644 index 0000000..2c3d395 --- /dev/null +++ b/packages/faro/lib/faro_native_methods.dart @@ -0,0 +1,47 @@ +import 'package:faro/faro_sdk_platform_interface.dart'; + +class FaroNativeMethods { + Future getMemoryUsage() { + return FaroSdkPlatform.instance.getMemoryUsage(); + } + + Future getRefreshRate() { + return FaroSdkPlatform.instance.getRefreshRate(); + } + + Future initRefreshRate() { + return FaroSdkPlatform.instance.initRefreshRate(); + } + + Future getCpuUsage() { + return FaroSdkPlatform.instance.getCpuUsage(); + } + + Future?> getAppStart() { + return FaroSdkPlatform.instance.getAppStart(); + } + + Future?> getWarmStart() { + return FaroSdkPlatform.instance.getWarmStart(); + } + + Future?> stopFramesTracker() { + return FaroSdkPlatform.instance.stopFramesTracker(); + } + + Future startFramesTracker() { + return FaroSdkPlatform.instance.startFramesTracker(); + } + + Future?> getANRStatus() { + return FaroSdkPlatform.instance.getANRStatus(); + } + + Future enableCrashReporter(Map config) { + return FaroSdkPlatform.instance.enableCrashReporter(config); + } + + Future?> getCrashReport() { + return FaroSdkPlatform.instance.getCrashReport(); + } +} diff --git a/packages/rum_sdk/lib/rum_sdk.dart b/packages/faro/lib/faro_sdk.dart similarity index 53% rename from packages/rum_sdk/lib/rum_sdk.dart rename to packages/faro/lib/faro_sdk.dart index 6e3673d..606e4a1 100644 --- a/packages/rum_sdk/lib/rum_sdk.dart +++ b/packages/faro/lib/faro_sdk.dart @@ -1,7 +1,11 @@ library; export './src/configurations/batch_config.dart'; -export './src/configurations/rum_config.dart'; +export './src/configurations/faro_config.dart'; +export './src/faro_asset_bundle.dart'; +export './src/faro_navigation_observer.dart'; +export './src/faro_user_interaction_widget.dart'; +export './src/faro_widgets_binding_observer.dart'; export './src/integrations/flutter_error_integration.dart'; export './src/integrations/http_tracking_client.dart'; export './src/integrations/native_integration.dart'; @@ -9,14 +13,10 @@ export './src/integrations/on_error_integration.dart'; export './src/integrations/run_zoned_integration.dart'; export './src/models/models.dart'; export './src/offline_transport/offline_transport.dart'; -export './src/rum_asset_bundle.dart'; -export './src/rum_navigation_observer.dart'; -export './src/rum_user_interaction_widget.dart'; -export './src/rum_widgets_binding_observer.dart'; export './src/tracing/span.dart'; export './src/tracing/tracer.dart'; -export './src/transport/rum_base_transport.dart'; -export './src/transport/rum_transport.dart'; -export 'rum_flutter.dart'; -export 'rum_sdk_method_channel.dart'; -export 'rum_sdk_platform_interface.dart'; +export './src/transport/faro_base_transport.dart'; +export './src/transport/faro_transport.dart'; +export 'faro.dart'; +export 'faro_sdk_method_channel.dart'; +export 'faro_sdk_platform_interface.dart'; diff --git a/packages/rum_sdk/lib/rum_sdk_method_channel.dart b/packages/faro/lib/faro_sdk_method_channel.dart similarity index 89% rename from packages/rum_sdk/lib/rum_sdk_method_channel.dart rename to packages/faro/lib/faro_sdk_method_channel.dart index 594239a..6c8b822 100644 --- a/packages/rum_sdk/lib/rum_sdk_method_channel.dart +++ b/packages/faro/lib/faro_sdk_method_channel.dart @@ -1,13 +1,12 @@ +import 'package:faro/faro_sdk_platform_interface.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; -import 'package:rum_sdk/rum_sdk_platform_interface.dart'; - -/// An implementation of [RumSdkPlatform] that uses method channels. -class MethodChannelRumSdk extends RumSdkPlatform { +/// An implementation of [FaroSdkPlatform] that uses method channels. +class MethodChannelFaroSdk extends FaroSdkPlatform { /// The method channel used to interact with the native platform. @visibleForTesting - final methodChannel = const MethodChannel('rum_sdk'); + final methodChannel = const MethodChannel('faro'); @override Future initRefreshRate() async { diff --git a/packages/rum_sdk/lib/rum_sdk_platform_interface.dart b/packages/faro/lib/faro_sdk_platform_interface.dart similarity index 79% rename from packages/rum_sdk/lib/rum_sdk_platform_interface.dart rename to packages/faro/lib/faro_sdk_platform_interface.dart index e4e0ff5..76be47b 100644 --- a/packages/rum_sdk/lib/rum_sdk_platform_interface.dart +++ b/packages/faro/lib/faro_sdk_platform_interface.dart @@ -1,20 +1,19 @@ +import 'package:faro/faro_sdk_method_channel.dart'; import 'package:plugin_platform_interface/plugin_platform_interface.dart'; -import 'package:rum_sdk/rum_sdk_method_channel.dart'; - -abstract class RumSdkPlatform extends PlatformInterface { - /// Constructs a RumSdkPlatform. - RumSdkPlatform() : super(token: _token); +abstract class FaroSdkPlatform extends PlatformInterface { + /// Constructs a FaroSdkPlatform. + FaroSdkPlatform() : super(token: _token); static final Object _token = Object(); - static RumSdkPlatform _instance = MethodChannelRumSdk(); + static FaroSdkPlatform _instance = MethodChannelFaroSdk(); - /// The default instance of [RumSdkPlatform] to use. - /// Defaults to [MethodChannelRumSdk]. - static RumSdkPlatform get instance => _instance; + /// The default instance of [FaroSdkPlatform] to use. + /// Defaults to [MethodChannelFaroSdk]. + static FaroSdkPlatform get instance => _instance; - static set instance(RumSdkPlatform instance) { + static set instance(FaroSdkPlatform instance) { PlatformInterface.verifyToken(instance, _token); _instance = instance; } diff --git a/packages/rum_sdk/lib/src/configurations/batch_config.dart b/packages/faro/lib/src/configurations/batch_config.dart similarity index 100% rename from packages/rum_sdk/lib/src/configurations/batch_config.dart rename to packages/faro/lib/src/configurations/batch_config.dart diff --git a/packages/rum_sdk/lib/src/configurations/rum_config.dart b/packages/faro/lib/src/configurations/faro_config.dart similarity index 87% rename from packages/rum_sdk/lib/src/configurations/rum_config.dart rename to packages/faro/lib/src/configurations/faro_config.dart index 08d047a..35c8f6b 100644 --- a/packages/rum_sdk/lib/src/configurations/rum_config.dart +++ b/packages/faro/lib/src/configurations/faro_config.dart @@ -1,7 +1,7 @@ -import 'package:rum_sdk/rum_sdk.dart'; +import 'package:faro/faro_sdk.dart'; -class RumConfig { - RumConfig({ +class FaroConfig { + FaroConfig({ required this.appName, required this.appEnv, required this.apiKey, @@ -29,7 +29,7 @@ class RumConfig { final String? appVersion; final String? namespace; final String? collectorUrl; - final List? transports; + final List? transports; final bool memoryUsageVitals; final bool cpuUsageVitals; final bool anrTracking; @@ -40,5 +40,5 @@ class RumConfig { final Duration? fetchVitalsInterval; final List? ignoreUrls; -// Other methods or properties of RumConfig can be added here +// Other methods or properties of FaroConfig can be added here } diff --git a/packages/rum_sdk/lib/src/data_collection_policy.dart b/packages/faro/lib/src/data_collection_policy.dart similarity index 100% rename from packages/rum_sdk/lib/src/data_collection_policy.dart rename to packages/faro/lib/src/data_collection_policy.dart diff --git a/packages/rum_sdk/lib/src/device_info/device_id_provider.dart b/packages/faro/lib/src/device_info/device_id_provider.dart similarity index 92% rename from packages/rum_sdk/lib/src/device_info/device_id_provider.dart rename to packages/faro/lib/src/device_info/device_id_provider.dart index 2638883..7d829de 100644 --- a/packages/rum_sdk/lib/src/device_info/device_id_provider.dart +++ b/packages/faro/lib/src/device_info/device_id_provider.dart @@ -1,5 +1,5 @@ -import 'package:rum_sdk/src/models/device_id.dart'; -import 'package:rum_sdk/src/util/uuid_provider.dart'; +import 'package:faro/src/models/device_id.dart'; +import 'package:faro/src/util/uuid_provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; class DeviceIdProvider { diff --git a/packages/rum_sdk/lib/src/device_info/device_info_provider.dart b/packages/faro/lib/src/device_info/device_info_provider.dart similarity index 95% rename from packages/rum_sdk/lib/src/device_info/device_info_provider.dart rename to packages/faro/lib/src/device_info/device_info_provider.dart index a2954a4..c828171 100644 --- a/packages/rum_sdk/lib/src/device_info/device_info_provider.dart +++ b/packages/faro/lib/src/device_info/device_info_provider.dart @@ -1,6 +1,6 @@ import 'package:device_info_plus/device_info_plus.dart'; -import 'package:rum_sdk/src/device_info/platform_info_provider.dart'; -import 'package:rum_sdk/src/models/device_info.dart'; +import 'package:faro/src/device_info/platform_info_provider.dart'; +import 'package:faro/src/models/device_info.dart'; class DeviceInfoProvider { DeviceInfoProvider({ diff --git a/packages/rum_sdk/lib/src/device_info/platform_info_provider.dart b/packages/faro/lib/src/device_info/platform_info_provider.dart similarity index 100% rename from packages/rum_sdk/lib/src/device_info/platform_info_provider.dart rename to packages/faro/lib/src/device_info/platform_info_provider.dart diff --git a/packages/rum_sdk/lib/src/device_info/session_attributes_provider.dart b/packages/faro/lib/src/device_info/session_attributes_provider.dart similarity index 91% rename from packages/rum_sdk/lib/src/device_info/session_attributes_provider.dart rename to packages/faro/lib/src/device_info/session_attributes_provider.dart index 7ac2e7b..8c0b08c 100644 --- a/packages/rum_sdk/lib/src/device_info/session_attributes_provider.dart +++ b/packages/faro/lib/src/device_info/session_attributes_provider.dart @@ -1,5 +1,5 @@ -import 'package:rum_sdk/src/device_info/device_id_provider.dart'; -import 'package:rum_sdk/src/device_info/device_info_provider.dart'; +import 'package:faro/src/device_info/device_id_provider.dart'; +import 'package:faro/src/device_info/device_info_provider.dart'; class SessionAttributesProvider { SessionAttributesProvider({ diff --git a/packages/rum_sdk/lib/src/rum_asset_bundle.dart b/packages/faro/lib/src/faro_asset_bundle.dart similarity index 87% rename from packages/rum_sdk/lib/src/rum_asset_bundle.dart rename to packages/faro/lib/src/faro_asset_bundle.dart index cb51090..46dcffe 100644 --- a/packages/rum_sdk/lib/src/rum_asset_bundle.dart +++ b/packages/faro/lib/src/faro_asset_bundle.dart @@ -1,8 +1,8 @@ +import 'package:faro/faro.dart'; import 'package:flutter/services.dart'; -import 'package:rum_sdk/rum_flutter.dart'; -class RumAssetBundle extends AssetBundle { - RumAssetBundle({AssetBundle? bundle}) : _bundle = bundle ?? rootBundle; +class FaroAssetBundle extends AssetBundle { + FaroAssetBundle({AssetBundle? bundle}) : _bundle = bundle ?? rootBundle; final AssetBundle _bundle; @override @@ -15,7 +15,7 @@ class RumAssetBundle extends AssetBundle { final afterLoad = DateTime.now().millisecondsSinceEpoch; final duration = afterLoad - beforeLoad; dataSize = _getDataLength(data); - RumFlutter().pushEvent('Asset-load', attributes: { + Faro().pushEvent('Asset-load', attributes: { 'name': _getFileName(key), 'size': '$dataSize', 'duration': '$duration' @@ -36,7 +36,7 @@ class RumAssetBundle extends AssetBundle { final afterLoad = DateTime.now().millisecondsSinceEpoch; final duration = afterLoad - beforeLoad; dataSize = _getDataLength(data); - RumFlutter().pushEvent('Asset-load', attributes: { + Faro().pushEvent('Asset-load', attributes: { 'name': _getFileName(key), 'size': '$dataSize', 'duration': '$duration' diff --git a/packages/rum_sdk/lib/src/rum_navigation_observer.dart b/packages/faro/lib/src/faro_navigation_observer.dart similarity index 60% rename from packages/rum_sdk/lib/src/rum_navigation_observer.dart rename to packages/faro/lib/src/faro_navigation_observer.dart index c20e539..3e49c8e 100644 --- a/packages/rum_sdk/lib/src/rum_navigation_observer.dart +++ b/packages/faro/lib/src/faro_navigation_observer.dart @@ -1,12 +1,12 @@ +import 'package:faro/faro_sdk.dart'; import 'package:flutter/widgets.dart'; -import 'package:rum_sdk/rum_sdk.dart'; -class RumNavigationObserver extends RouteObserver> { +class FaroNavigationObserver extends RouteObserver> { @override void didPop(Route route, Route? previousRoute) { super.didPop(route, previousRoute); - RumFlutter().setViewMeta(name: previousRoute?.settings.name); - RumFlutter().pushEvent('view_changed', attributes: { + Faro().setViewMeta(name: previousRoute?.settings.name); + Faro().pushEvent('view_changed', attributes: { 'fromView': route.settings.name, 'toView': previousRoute?.settings.name, }); @@ -15,8 +15,8 @@ class RumNavigationObserver extends RouteObserver> { @override void didPush(Route route, Route? previousRoute) { super.didPush(route, previousRoute); - RumFlutter().setViewMeta(name: route.settings.name); - RumFlutter().pushEvent('view_changed', attributes: { + Faro().setViewMeta(name: route.settings.name); + Faro().pushEvent('view_changed', attributes: { 'fromView': previousRoute?.settings.name, 'toView': route.settings.name, }); @@ -25,8 +25,8 @@ class RumNavigationObserver extends RouteObserver> { @override void didReplace({Route? newRoute, Route? oldRoute}) { super.didReplace(newRoute: newRoute, oldRoute: oldRoute); - RumFlutter().setViewMeta(name: newRoute?.settings.name); - RumFlutter().pushEvent('view_changed', attributes: { + Faro().setViewMeta(name: newRoute?.settings.name); + Faro().pushEvent('view_changed', attributes: { 'fromView': oldRoute?.settings.name, 'toView': newRoute?.settings.name, }); diff --git a/packages/rum_sdk/lib/src/rum_user_interaction_widget.dart b/packages/faro/lib/src/faro_user_interaction_widget.dart similarity index 94% rename from packages/rum_sdk/lib/src/rum_user_interaction_widget.dart rename to packages/faro/lib/src/faro_user_interaction_widget.dart index a36019a..ce7b2d5 100644 --- a/packages/rum_sdk/lib/src/rum_user_interaction_widget.dart +++ b/packages/faro/lib/src/faro_user_interaction_widget.dart @@ -1,7 +1,7 @@ +import 'package:faro/faro.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; -import 'package:rum_sdk/rum_flutter.dart'; Element? _clickTrackerElement; const _tapAreaSizeSquared = 20 * 20.0; @@ -15,8 +15,8 @@ class UserInteractionProperties { String? eventType; } -class RumUserInteractionWidget extends StatefulWidget { - const RumUserInteractionWidget({super.key, required this.child}); +class FaroUserInteractionWidget extends StatefulWidget { + const FaroUserInteractionWidget({super.key, required this.child}); final Widget child; @override @@ -27,11 +27,11 @@ class RumUserInteractionWidget extends StatefulWidget { } @override - State createState() => - _RumUserInteractionWidgetState(); + State createState() => + _FaroUserInteractionWidgetState(); } -class _RumUserInteractionWidgetState extends State { +class _FaroUserInteractionWidgetState extends State { int? _lastPointerId; Offset? _lastPointerDownLocation; @@ -66,7 +66,7 @@ class _RumUserInteractionWidgetState extends State { void _onTapped(Offset localPosition, String tap) { final tappedElement = _findElementTapped(localPosition); if (tappedElement != null) { - RumFlutter().pushEvent('user_interaction', attributes: { + Faro().pushEvent('user_interaction', attributes: { 'element_type': tappedElement.elementType, 'element_description': tappedElement.description, 'event_type': tappedElement.eventType, diff --git a/packages/rum_sdk/lib/src/rum_widgets_binding_observer.dart b/packages/faro/lib/src/faro_widgets_binding_observer.dart similarity index 76% rename from packages/rum_sdk/lib/src/rum_widgets_binding_observer.dart rename to packages/faro/lib/src/faro_widgets_binding_observer.dart index 517c0a1..f5bb8cf 100644 --- a/packages/rum_sdk/lib/src/rum_widgets_binding_observer.dart +++ b/packages/faro/lib/src/faro_widgets_binding_observer.dart @@ -1,7 +1,7 @@ +import 'package:faro/faro_sdk.dart'; import 'package:flutter/cupertino.dart'; -import 'package:rum_sdk/rum_sdk.dart'; -class RumWidgetsBindingObserver extends WidgetsBindingObserver { +class FaroWidgetsBindingObserver extends WidgetsBindingObserver { AppLifecycleState? _previousState; @override @@ -14,7 +14,7 @@ class RumWidgetsBindingObserver extends WidgetsBindingObserver { NativeIntegration.instance.setWarmStart(); } - RumFlutter().pushEvent('app_lifecycle_changed', attributes: { + Faro().pushEvent('app_lifecycle_changed', attributes: { 'fromState': _previousState?.name ?? '', 'toState': state.name, }); diff --git a/packages/rum_sdk/lib/src/integrations/flutter_error_integration.dart b/packages/faro/lib/src/integrations/flutter_error_integration.dart similarity index 89% rename from packages/rum_sdk/lib/src/integrations/flutter_error_integration.dart rename to packages/faro/lib/src/integrations/flutter_error_integration.dart index e31d0a1..b417e60 100644 --- a/packages/rum_sdk/lib/src/integrations/flutter_error_integration.dart +++ b/packages/faro/lib/src/integrations/flutter_error_integration.dart @@ -1,5 +1,5 @@ +import 'package:faro/faro.dart'; import 'package:flutter/foundation.dart'; -import 'package:rum_sdk/rum_flutter.dart'; class FlutterErrorIntegration { FlutterExceptionHandler? _defaultOnError; @@ -10,7 +10,7 @@ class FlutterErrorIntegration { _defaultOnError = FlutterError.onError; _onErrorIntegration = (details) async { if (details.stack != null) { - RumFlutter().pushError( + Faro().pushError( type: 'flutter_error', value: details.exceptionAsString(), stacktrace: details.stack); diff --git a/packages/rum_sdk/lib/src/integrations/http_tracking_client.dart b/packages/faro/lib/src/integrations/http_tracking_client.dart similarity index 92% rename from packages/rum_sdk/lib/src/integrations/http_tracking_client.dart rename to packages/faro/lib/src/integrations/http_tracking_client.dart index 0ec6855..0189e56 100644 --- a/packages/rum_sdk/lib/src/integrations/http_tracking_client.dart +++ b/packages/faro/lib/src/integrations/http_tracking_client.dart @@ -2,24 +2,24 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; -import 'package:rum_sdk/rum_flutter.dart'; -import 'package:rum_sdk/src/tracing/span.dart'; +import 'package:faro/faro.dart'; +import 'package:faro/src/tracing/span.dart'; import 'package:uuid/uuid.dart'; -class RumHttpOverrides extends HttpOverrides { - RumHttpOverrides(this.existingOverrides); +class FaroHttpOverrides extends HttpOverrides { + FaroHttpOverrides(this.existingOverrides); final HttpOverrides? existingOverrides; @override HttpClient createHttpClient(SecurityContext? context) { final innerClient = existingOverrides?.createHttpClient(context) ?? super.createHttpClient(context); - return RumHttpTrackingClient(innerClient); + return FaroHttpTrackingClient(innerClient); } } -class RumHttpTrackingClient implements HttpClient { - RumHttpTrackingClient( +class FaroHttpTrackingClient implements HttpClient { + FaroHttpTrackingClient( this.innerClient, ); final HttpClient innerClient; @@ -65,10 +65,10 @@ class RumHttpTrackingClient implements HttpClient { final userAttributes = {}; try { request = await innerClient.openUrl(method, url); - if (url.toString() != RumFlutter().config?.collectorUrl) { + if (url.toString() != Faro().config?.collectorUrl) { final key = const Uuid().v1(); - RumFlutter().markEventStart(key, 'http_request'); - request = RumTrackingHttpClientRequest( + Faro().markEventStart(key, 'http_request'); + request = FaroTrackingHttpClientRequest( key, request, userAttributes, @@ -205,14 +205,14 @@ class RumHttpTrackingClient implements HttpClient { Future putUrl(Uri url) => _openUrl('put', url); } -class RumTrackingHttpClientRequest implements HttpClientRequest { - RumTrackingHttpClientRequest( +class FaroTrackingHttpClientRequest implements HttpClientRequest { + FaroTrackingHttpClientRequest( this.key, this.innerContext, this.userAttributes, { String? userAgent, }) { - _httpSpan = RumFlutter().getTracer().startSpan( + _httpSpan = Faro().getTracer().startSpan( 'HTTP ${innerContext.method}', attributes: { 'http.method': innerContext.method, @@ -255,7 +255,7 @@ class RumTrackingHttpClientRequest implements HttpClientRequest { _httpSpan.setStatus(SpanStatusCode.ok); _httpSpan.end(); - return RumTrackingHttpResponse(key, value, { + return FaroTrackingHttpResponse(key, value, { 'response_size': '${value.headers.contentLength}', 'content_type': '${value.headers.contentType}', 'status_code': '${value.statusCode}', @@ -359,9 +359,9 @@ class RumTrackingHttpClientRequest implements HttpClientRequest { } } -class RumTrackingHttpResponse extends Stream> +class FaroTrackingHttpResponse extends Stream> implements HttpClientResponse { - RumTrackingHttpResponse( + FaroTrackingHttpResponse( this.key, this.innerResponse, this.userAttributes, @@ -386,7 +386,7 @@ class RumTrackingHttpResponse extends Stream> } else if (onError is void Function(Object)) { onError(e); } else { - RumFlutter().pushLog( + Faro().pushLog( // ignore: lines_longer_than_80_chars "network_error on : ${userAttributes["method"]} : ${userAttributes["url"]}", level: 'error', @@ -403,7 +403,7 @@ class RumTrackingHttpResponse extends Stream> } void _onFinish() { - RumFlutter().markEventEnd(key, 'http_request', attributes: userAttributes); + Faro().markEventEnd(key, 'http_request', attributes: userAttributes); } @override diff --git a/packages/rum_sdk/lib/src/integrations/native_integration.dart b/packages/faro/lib/src/integrations/native_integration.dart similarity index 80% rename from packages/rum_sdk/lib/src/integrations/native_integration.dart rename to packages/faro/lib/src/integrations/native_integration.dart index 4073650..e3e3c4b 100644 --- a/packages/rum_sdk/lib/src/integrations/native_integration.dart +++ b/packages/faro/lib/src/integrations/native_integration.dart @@ -3,13 +3,13 @@ import 'dart:convert'; import 'dart:developer'; import 'dart:io'; +import 'package:faro/faro.dart'; import 'package:flutter/services.dart'; -import 'package:rum_sdk/rum_flutter.dart'; /// NativeIntegration provides access to native platform metrics and events /// such as memory usage, CPU usage, ANR detection, and crash reporting. class NativeIntegration { - final MethodChannel _channel = const MethodChannel('rum_sdk'); + final MethodChannel _channel = const MethodChannel('faro'); static final NativeIntegration instance = NativeIntegration(); static int warmStart = 0; @@ -43,7 +43,7 @@ class NativeIntegration { /// Initialize refresh rate monitoring Future initRefreshRate() async { try { - await RumFlutter().nativeChannel?.initRefreshRate(); + await Faro().nativeChannel?.initRefreshRate(); } catch (error) { log('Error initializing refresh rate: $error'); } @@ -52,9 +52,9 @@ class NativeIntegration { /// Get app start metrics for cold start Future getAppStart() async { try { - final appStart = await RumFlutter().nativeChannel?.getAppStart(); + final appStart = await Faro().nativeChannel?.getAppStart(); if (appStart != null) { - RumFlutter().pushMeasurement( + Faro().pushMeasurement( {'appStartDuration': appStart['appStartDuration'], 'coldStart': 1}, 'app_startup'); } @@ -74,7 +74,7 @@ class NativeIntegration { final warmStartDuration = DateTime.now().millisecondsSinceEpoch - warmStart; if (warmStartDuration > 0) { - RumFlutter().pushMeasurement( + Faro().pushMeasurement( {'appStartDuration': warmStartDuration, 'coldStart': 0}, 'app_startup'); } @@ -113,27 +113,26 @@ class NativeIntegration { } Future _pushRefreshRate() async { - final refreshRate = await RumFlutter().nativeChannel?.getRefreshRate(); + final refreshRate = await Faro().nativeChannel?.getRefreshRate(); log('refreshRate $refreshRate'); if (refreshRate != null) { - RumFlutter() - .pushMeasurement({'refresh_rate': refreshRate}, 'app_refresh_rate'); + Faro().pushMeasurement({'refresh_rate': refreshRate}, 'app_refresh_rate'); } } Future _pushCpuUsage() async { - final cpuUsage = await RumFlutter().nativeChannel?.getCpuUsage(); + final cpuUsage = await Faro().nativeChannel?.getCpuUsage(); if (cpuUsage! > 0.0 && cpuUsage < 100.0) { - RumFlutter().pushMeasurement({'cpu_usage': cpuUsage}, 'app_cpu_usage'); + Faro().pushMeasurement({'cpu_usage': cpuUsage}, 'app_cpu_usage'); } } Future _getAnrStatus() async { - final anr = await RumFlutter().nativeChannel?.getANRStatus(); + final anr = await Faro().nativeChannel?.getANRStatus(); if (anr != null && anr.isNotEmpty) { // Push the ANR count as a measurement - RumFlutter().pushMeasurement({'anr_count': anr.length}, 'anr'); + Faro().pushMeasurement({'anr_count': anr.length}, 'anr'); // Log each ANR as a warning with its stacktrace for (final anrItem in anr) { @@ -141,7 +140,7 @@ class NativeIntegration { // Parse the JSON string to extract just the stacktrace final anrJson = jsonDecode(anrItem); if (anrJson.containsKey('stacktrace')) { - RumFlutter().pushError( + Faro().pushError( type: 'flutter_error', value: 'ANR (Application Not Responding)', context: {'stacktrace': anrJson['stacktrace']}, @@ -153,8 +152,8 @@ class NativeIntegration { } Future _pushMemoryUsage() async { - final memUsage = await RumFlutter().nativeChannel?.getMemoryUsage(); - RumFlutter().pushMeasurement({'mem_usage': memUsage}, 'app_memory'); + final memUsage = await Faro().nativeChannel?.getMemoryUsage(); + Faro().pushMeasurement({'mem_usage': memUsage}, 'app_memory'); } static void initializeMethodChannel() { @@ -163,13 +162,13 @@ class NativeIntegration { switch (call.method) { case 'lastCrashReport': if (call.arguments != null) { - RumFlutter().pushLog(call.arguments, level: 'error'); + Faro().pushLog(call.arguments, level: 'error'); } break; case 'onFrozenFrame': if (call.arguments != null) { - RumFlutter().pushMeasurement({ + Faro().pushMeasurement({ 'frozen_frames': call.arguments, }, 'app_frozen_frame'); } @@ -177,7 +176,7 @@ class NativeIntegration { case 'onRefreshRate': if (call.arguments != null) { - RumFlutter().pushMeasurement({ + Faro().pushMeasurement({ 'refresh_rate': call.arguments, }, 'app_refresh_rate'); } @@ -185,7 +184,7 @@ class NativeIntegration { case 'onSlowFrames': if (call.arguments != null) { - RumFlutter().pushMeasurement( + Faro().pushMeasurement( {'slow_frames': call.arguments}, 'app_frames_rate'); } break; diff --git a/packages/rum_sdk/lib/src/integrations/on_error_integration.dart b/packages/faro/lib/src/integrations/on_error_integration.dart similarity index 91% rename from packages/rum_sdk/lib/src/integrations/on_error_integration.dart rename to packages/faro/lib/src/integrations/on_error_integration.dart index 699d6a2..df45b94 100644 --- a/packages/rum_sdk/lib/src/integrations/on_error_integration.dart +++ b/packages/faro/lib/src/integrations/on_error_integration.dart @@ -1,6 +1,6 @@ import 'dart:ui'; -import 'package:rum_sdk/rum_flutter.dart'; +import 'package:faro/faro.dart'; class OnErrorIntegration { ErrorCallback? _defaultOnError; @@ -9,7 +9,7 @@ class OnErrorIntegration { void call() { _defaultOnError = PlatformDispatcher.instance.onError; _onErrorIntegration = (exception, stackTrace) { - RumFlutter().pushError( + Faro().pushError( type: 'flutter_error', value: exception.toString(), stacktrace: stackTrace); diff --git a/packages/rum_sdk/lib/src/integrations/run_zoned_integration.dart b/packages/faro/lib/src/integrations/run_zoned_integration.dart similarity index 74% rename from packages/rum_sdk/lib/src/integrations/run_zoned_integration.dart rename to packages/faro/lib/src/integrations/run_zoned_integration.dart index 5261abf..5400fec 100644 --- a/packages/rum_sdk/lib/src/integrations/run_zoned_integration.dart +++ b/packages/faro/lib/src/integrations/run_zoned_integration.dart @@ -1,8 +1,8 @@ -import 'package:rum_sdk/rum_flutter.dart'; +import 'package:faro/faro.dart'; class RunZonedIntegration { static void runZonedOnError(Object exception, StackTrace stackTrace) { - RumFlutter().pushError( + Faro().pushError( type: 'flutter_error', value: exception.toString(), stacktrace: stackTrace, diff --git a/packages/rum_sdk/lib/src/models/app.dart b/packages/faro/lib/src/models/app.dart similarity index 100% rename from packages/rum_sdk/lib/src/models/app.dart rename to packages/faro/lib/src/models/app.dart diff --git a/packages/rum_sdk/lib/src/models/browser.dart b/packages/faro/lib/src/models/browser.dart similarity index 100% rename from packages/rum_sdk/lib/src/models/browser.dart rename to packages/faro/lib/src/models/browser.dart diff --git a/packages/rum_sdk/lib/src/models/device_id.dart b/packages/faro/lib/src/models/device_id.dart similarity index 100% rename from packages/rum_sdk/lib/src/models/device_id.dart rename to packages/faro/lib/src/models/device_id.dart diff --git a/packages/rum_sdk/lib/src/models/device_info.dart b/packages/faro/lib/src/models/device_info.dart similarity index 100% rename from packages/rum_sdk/lib/src/models/device_info.dart rename to packages/faro/lib/src/models/device_info.dart diff --git a/packages/rum_sdk/lib/src/models/event.dart b/packages/faro/lib/src/models/event.dart similarity index 100% rename from packages/rum_sdk/lib/src/models/event.dart rename to packages/faro/lib/src/models/event.dart diff --git a/packages/rum_sdk/lib/src/models/exception.dart b/packages/faro/lib/src/models/exception.dart similarity index 94% rename from packages/rum_sdk/lib/src/models/exception.dart rename to packages/faro/lib/src/models/exception.dart index 1737f67..9629ee3 100644 --- a/packages/rum_sdk/lib/src/models/exception.dart +++ b/packages/faro/lib/src/models/exception.dart @@ -25,10 +25,10 @@ class StackFrames { } } -class RumException { - RumException(this.type, this.value, this.stacktrace, {this.context}); +class FaroException { + FaroException(this.type, this.value, this.stacktrace, {this.context}); - RumException.fromJson(dynamic json) { + FaroException.fromJson(dynamic json) { type = json['type']; value = json['value']; stacktrace = json['stacktrace']; diff --git a/packages/rum_sdk/lib/src/models/integrations.dart b/packages/faro/lib/src/models/integrations.dart similarity index 100% rename from packages/rum_sdk/lib/src/models/integrations.dart rename to packages/faro/lib/src/models/integrations.dart diff --git a/packages/rum_sdk/lib/src/models/log.dart b/packages/faro/lib/src/models/log.dart similarity index 84% rename from packages/rum_sdk/lib/src/models/log.dart rename to packages/faro/lib/src/models/log.dart index e99e4f8..50b524b 100644 --- a/packages/rum_sdk/lib/src/models/log.dart +++ b/packages/faro/lib/src/models/log.dart @@ -1,9 +1,9 @@ import 'package:intl/intl.dart'; -class RumLog { - RumLog(this.message, {this.level, this.context, this.trace}); +class FaroLog { + FaroLog(this.message, {this.level, this.context, this.trace}); - RumLog.fromJson(dynamic json) { + FaroLog.fromJson(dynamic json) { message = json['message']; level = json['level']; context = json['context']; diff --git a/packages/rum_sdk/lib/src/models/measurement.dart b/packages/faro/lib/src/models/measurement.dart similarity index 100% rename from packages/rum_sdk/lib/src/models/measurement.dart rename to packages/faro/lib/src/models/measurement.dart diff --git a/packages/rum_sdk/lib/src/models/meta.dart b/packages/faro/lib/src/models/meta.dart similarity index 79% rename from packages/rum_sdk/lib/src/models/meta.dart rename to packages/faro/lib/src/models/meta.dart index 4f54ad4..7e31542 100644 --- a/packages/rum_sdk/lib/src/models/meta.dart +++ b/packages/faro/lib/src/models/meta.dart @@ -1,10 +1,10 @@ -import 'package:rum_sdk/src/models/app.dart'; -import 'package:rum_sdk/src/models/browser.dart'; -import 'package:rum_sdk/src/models/page.dart'; -import 'package:rum_sdk/src/models/sdk.dart'; -import 'package:rum_sdk/src/models/session.dart'; -import 'package:rum_sdk/src/models/user.dart'; -import 'package:rum_sdk/src/models/view_meta.dart'; +import 'package:faro/src/models/app.dart'; +import 'package:faro/src/models/browser.dart'; +import 'package:faro/src/models/page.dart'; +import 'package:faro/src/models/sdk.dart'; +import 'package:faro/src/models/session.dart'; +import 'package:faro/src/models/user.dart'; +import 'package:faro/src/models/view_meta.dart'; class Meta { Meta({ diff --git a/packages/rum_sdk/lib/src/models/models.dart b/packages/faro/lib/src/models/models.dart similarity index 100% rename from packages/rum_sdk/lib/src/models/models.dart rename to packages/faro/lib/src/models/models.dart diff --git a/packages/rum_sdk/lib/src/models/page.dart b/packages/faro/lib/src/models/page.dart similarity index 100% rename from packages/rum_sdk/lib/src/models/page.dart rename to packages/faro/lib/src/models/page.dart diff --git a/packages/rum_sdk/lib/src/models/payload.dart b/packages/faro/lib/src/models/payload.dart similarity index 86% rename from packages/rum_sdk/lib/src/models/payload.dart rename to packages/faro/lib/src/models/payload.dart index b0e2612..ee8272c 100644 --- a/packages/rum_sdk/lib/src/models/payload.dart +++ b/packages/faro/lib/src/models/payload.dart @@ -1,5 +1,5 @@ -import 'package:rum_sdk/rum_sdk.dart'; -import 'package:rum_sdk/src/models/models.dart'; +import 'package:faro/faro_sdk.dart'; +import 'package:faro/src/models/models.dart'; class Payload { Payload(this.meta) { @@ -22,13 +22,13 @@ class Payload { if (json['logs'] != null) { logs = []; json['logs'].forEach((dynamic v) { - logs.add(RumLog.fromJson(v)); + logs.add(FaroLog.fromJson(v)); }); } if (json['exceptions'] != null) { exceptions = []; json['exceptions'].forEach((dynamic v) { - exceptions.add(RumException.fromJson(v)); + exceptions.add(FaroException.fromJson(v)); }); } if (json['traces'] != null) { @@ -38,8 +38,8 @@ class Payload { } List events = []; List measurements = []; - List logs = []; - List exceptions = []; + List logs = []; + List exceptions = []; Traces traces = Traces(); Meta? meta; diff --git a/packages/rum_sdk/lib/src/models/sdk.dart b/packages/faro/lib/src/models/sdk.dart similarity index 92% rename from packages/rum_sdk/lib/src/models/sdk.dart rename to packages/faro/lib/src/models/sdk.dart index 1b28902..d49f9e6 100644 --- a/packages/rum_sdk/lib/src/models/sdk.dart +++ b/packages/faro/lib/src/models/sdk.dart @@ -1,4 +1,4 @@ -import 'package:rum_sdk/src/models/integrations.dart'; +import 'package:faro/src/models/integrations.dart'; class Sdk { Sdk(this.name, this.version, this.integrations); diff --git a/packages/rum_sdk/lib/src/models/session.dart b/packages/faro/lib/src/models/session.dart similarity index 100% rename from packages/rum_sdk/lib/src/models/session.dart rename to packages/faro/lib/src/models/session.dart diff --git a/packages/rum_sdk/lib/src/models/span_record.dart b/packages/faro/lib/src/models/span_record.dart similarity index 88% rename from packages/rum_sdk/lib/src/models/span_record.dart rename to packages/faro/lib/src/models/span_record.dart index 64c0890..633d5d8 100644 --- a/packages/rum_sdk/lib/src/models/span_record.dart +++ b/packages/faro/lib/src/models/span_record.dart @@ -1,8 +1,8 @@ +import 'package:faro/src/models/trace/trace_resource.dart'; +import 'package:faro/src/models/trace/trace_scope_spans.dart'; +import 'package:faro/src/models/trace/trace_span.dart'; +import 'package:faro/src/tracing/extensions.dart'; import 'package:opentelemetry/sdk.dart' as otel_sdk; -import 'package:rum_sdk/src/models/trace/trace_resource.dart'; -import 'package:rum_sdk/src/models/trace/trace_scope_spans.dart'; -import 'package:rum_sdk/src/models/trace/trace_span.dart'; -import 'package:rum_sdk/src/tracing/extensions.dart'; class SpanRecord { SpanRecord({ diff --git a/packages/rum_sdk/lib/src/models/trace/trace.dart b/packages/faro/lib/src/models/trace/trace.dart similarity index 89% rename from packages/rum_sdk/lib/src/models/trace/trace.dart rename to packages/faro/lib/src/models/trace/trace.dart index 75f3b29..298ed53 100644 --- a/packages/rum_sdk/lib/src/models/trace/trace.dart +++ b/packages/faro/lib/src/models/trace/trace.dart @@ -1,5 +1,5 @@ -import 'package:rum_sdk/src/models/span_record.dart'; -import 'package:rum_sdk/src/models/trace/trace_resource_spans.dart'; +import 'package:faro/src/models/span_record.dart'; +import 'package:faro/src/models/trace/trace_resource_spans.dart'; class Traces { Traces(); diff --git a/packages/rum_sdk/lib/src/models/trace/trace_attribute.dart b/packages/faro/lib/src/models/trace/trace_attribute.dart similarity index 100% rename from packages/rum_sdk/lib/src/models/trace/trace_attribute.dart rename to packages/faro/lib/src/models/trace/trace_attribute.dart diff --git a/packages/rum_sdk/lib/src/models/trace/trace_resource.dart b/packages/faro/lib/src/models/trace/trace_resource.dart similarity index 89% rename from packages/rum_sdk/lib/src/models/trace/trace_resource.dart rename to packages/faro/lib/src/models/trace/trace_resource.dart index 2e17cf0..e74a424 100644 --- a/packages/rum_sdk/lib/src/models/trace/trace_resource.dart +++ b/packages/faro/lib/src/models/trace/trace_resource.dart @@ -1,4 +1,4 @@ -import 'package:rum_sdk/src/models/trace/trace_attribute.dart'; +import 'package:faro/src/models/trace/trace_attribute.dart'; class TraceResource { TraceResource({ diff --git a/packages/rum_sdk/lib/src/models/trace/trace_resource_spans.dart b/packages/faro/lib/src/models/trace/trace_resource_spans.dart similarity index 88% rename from packages/rum_sdk/lib/src/models/trace/trace_resource_spans.dart rename to packages/faro/lib/src/models/trace/trace_resource_spans.dart index aa64b25..a9e5588 100644 --- a/packages/rum_sdk/lib/src/models/trace/trace_resource_spans.dart +++ b/packages/faro/lib/src/models/trace/trace_resource_spans.dart @@ -1,6 +1,6 @@ -import 'package:rum_sdk/src/models/span_record.dart'; -import 'package:rum_sdk/src/models/trace/trace_resource.dart'; -import 'package:rum_sdk/src/models/trace/trace_scope_spans.dart'; +import 'package:faro/src/models/span_record.dart'; +import 'package:faro/src/models/trace/trace_resource.dart'; +import 'package:faro/src/models/trace/trace_scope_spans.dart'; class TraceResourceSpans { TraceResourceSpans(); diff --git a/packages/rum_sdk/lib/src/models/trace/trace_scope_spans.dart b/packages/faro/lib/src/models/trace/trace_scope_spans.dart similarity index 96% rename from packages/rum_sdk/lib/src/models/trace/trace_scope_spans.dart rename to packages/faro/lib/src/models/trace/trace_scope_spans.dart index 9168e97..ed9feb5 100644 --- a/packages/rum_sdk/lib/src/models/trace/trace_scope_spans.dart +++ b/packages/faro/lib/src/models/trace/trace_scope_spans.dart @@ -1,4 +1,4 @@ -import 'package:rum_sdk/src/models/trace/trace_span.dart'; +import 'package:faro/src/models/trace/trace_span.dart'; class TraceScopeSpans { TraceScopeSpans({ diff --git a/packages/rum_sdk/lib/src/models/trace/trace_span.dart b/packages/faro/lib/src/models/trace/trace_span.dart similarity index 93% rename from packages/rum_sdk/lib/src/models/trace/trace_span.dart rename to packages/faro/lib/src/models/trace/trace_span.dart index 757aa06..c663cad 100644 --- a/packages/rum_sdk/lib/src/models/trace/trace_span.dart +++ b/packages/faro/lib/src/models/trace/trace_span.dart @@ -1,8 +1,8 @@ +import 'package:faro/src/models/trace/trace_attribute.dart'; +import 'package:faro/src/models/trace/trace_span_event.dart'; +import 'package:faro/src/models/trace/trace_span_link.dart'; +import 'package:faro/src/models/trace/trace_span_status.dart'; import 'package:fixnum/fixnum.dart'; -import 'package:rum_sdk/src/models/trace/trace_attribute.dart'; -import 'package:rum_sdk/src/models/trace/trace_span_event.dart'; -import 'package:rum_sdk/src/models/trace/trace_span_link.dart'; -import 'package:rum_sdk/src/models/trace/trace_span_status.dart'; class TraceSpan { TraceSpan({ diff --git a/packages/rum_sdk/lib/src/models/trace/trace_span_event.dart b/packages/faro/lib/src/models/trace/trace_span_event.dart similarity index 95% rename from packages/rum_sdk/lib/src/models/trace/trace_span_event.dart rename to packages/faro/lib/src/models/trace/trace_span_event.dart index bb21a75..777d841 100644 --- a/packages/rum_sdk/lib/src/models/trace/trace_span_event.dart +++ b/packages/faro/lib/src/models/trace/trace_span_event.dart @@ -1,5 +1,5 @@ +import 'package:faro/src/models/trace/trace_attribute.dart'; import 'package:fixnum/fixnum.dart'; -import 'package:rum_sdk/src/models/trace/trace_attribute.dart'; class TraceSpanEvent { TraceSpanEvent({ diff --git a/packages/rum_sdk/lib/src/models/trace/trace_span_link.dart b/packages/faro/lib/src/models/trace/trace_span_link.dart similarity index 95% rename from packages/rum_sdk/lib/src/models/trace/trace_span_link.dart rename to packages/faro/lib/src/models/trace/trace_span_link.dart index f5e5814..eca0007 100644 --- a/packages/rum_sdk/lib/src/models/trace/trace_span_link.dart +++ b/packages/faro/lib/src/models/trace/trace_span_link.dart @@ -1,4 +1,4 @@ -import 'package:rum_sdk/src/models/trace/trace_attribute.dart'; +import 'package:faro/src/models/trace/trace_attribute.dart'; class TraceSpanLink { TraceSpanLink({ diff --git a/packages/rum_sdk/lib/src/models/trace/trace_span_status.dart b/packages/faro/lib/src/models/trace/trace_span_status.dart similarity index 100% rename from packages/rum_sdk/lib/src/models/trace/trace_span_status.dart rename to packages/faro/lib/src/models/trace/trace_span_status.dart diff --git a/packages/rum_sdk/lib/src/models/user.dart b/packages/faro/lib/src/models/user.dart similarity index 100% rename from packages/rum_sdk/lib/src/models/user.dart rename to packages/faro/lib/src/models/user.dart diff --git a/packages/rum_sdk/lib/src/models/view_meta.dart b/packages/faro/lib/src/models/view_meta.dart similarity index 100% rename from packages/rum_sdk/lib/src/models/view_meta.dart rename to packages/faro/lib/src/models/view_meta.dart diff --git a/packages/rum_sdk/lib/src/offline_transport/connectivity_checker.dart b/packages/faro/lib/src/offline_transport/connectivity_checker.dart similarity index 100% rename from packages/rum_sdk/lib/src/offline_transport/connectivity_checker.dart rename to packages/faro/lib/src/offline_transport/connectivity_checker.dart diff --git a/packages/rum_sdk/lib/src/offline_transport/internet_connectivity_service.dart b/packages/faro/lib/src/offline_transport/internet_connectivity_service.dart similarity index 97% rename from packages/rum_sdk/lib/src/offline_transport/internet_connectivity_service.dart rename to packages/faro/lib/src/offline_transport/internet_connectivity_service.dart index 10b40f3..30aaddc 100644 --- a/packages/rum_sdk/lib/src/offline_transport/internet_connectivity_service.dart +++ b/packages/faro/lib/src/offline_transport/internet_connectivity_service.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'dart:io'; import 'package:connectivity_plus/connectivity_plus.dart'; -import 'package:rum_sdk/src/offline_transport/connectivity_checker.dart'; +import 'package:faro/src/offline_transport/connectivity_checker.dart'; class InternetConnectivityService { InternetConnectivityService({ diff --git a/packages/rum_sdk/lib/src/offline_transport/offline_transport.dart b/packages/faro/lib/src/offline_transport/offline_transport.dart similarity index 95% rename from packages/rum_sdk/lib/src/offline_transport/offline_transport.dart rename to packages/faro/lib/src/offline_transport/offline_transport.dart index bd16664..aa84e42 100644 --- a/packages/rum_sdk/lib/src/offline_transport/offline_transport.dart +++ b/packages/faro/lib/src/offline_transport/offline_transport.dart @@ -5,10 +5,10 @@ import 'dart:convert'; import 'dart:developer'; import 'dart:io'; +import 'package:faro/faro_sdk.dart'; +import 'package:faro/src/offline_transport/internet_connectivity_service.dart'; +import 'package:faro/src/util/payload_extension.dart'; import 'package:path_provider/path_provider.dart'; -import 'package:rum_sdk/rum_sdk.dart'; -import 'package:rum_sdk/src/offline_transport/internet_connectivity_service.dart'; -import 'package:rum_sdk/src/util/payload_extension.dart'; class OfflineTransport extends BaseTransport { OfflineTransport({ @@ -157,7 +157,7 @@ class OfflineTransport extends BaseTransport { Future _sendCachedData(Payload payload) async { try { - for (final transport in RumFlutter().transports) { + for (final transport in Faro().transports) { if (this != transport) { await transport.send(payload.toJson()); } diff --git a/packages/rum_sdk/lib/src/tracing/dart_otel_tracer_resources_factory.dart b/packages/faro/lib/src/tracing/dart_otel_tracer_resources_factory.dart similarity index 79% rename from packages/rum_sdk/lib/src/tracing/dart_otel_tracer_resources_factory.dart rename to packages/faro/lib/src/tracing/dart_otel_tracer_resources_factory.dart index b7b4ded..0fca4c3 100644 --- a/packages/rum_sdk/lib/src/tracing/dart_otel_tracer_resources_factory.dart +++ b/packages/faro/lib/src/tracing/dart_otel_tracer_resources_factory.dart @@ -1,10 +1,10 @@ +import 'package:faro/faro.dart'; import 'package:opentelemetry/api.dart' as otel_api; import 'package:opentelemetry/sdk.dart' as otel_sdk; -import 'package:rum_sdk/rum_flutter.dart'; class DartOtelTracerResourcesFactory { otel_sdk.Resource getTracerResource() { - final rumFlutter = RumFlutter(); + final faro = Faro(); const unknownString = 'unknown'; return otel_sdk.Resource( @@ -12,19 +12,19 @@ class DartOtelTracerResourcesFactory { // App info otel_api.Attribute.fromString( otel_api.ResourceAttributes.serviceName, - rumFlutter.meta.app?.name ?? unknownString, + faro.meta.app?.name ?? unknownString, ), otel_api.Attribute.fromString( otel_api.ResourceAttributes.deploymentEnvironment, - rumFlutter.meta.app?.environment ?? unknownString, + faro.meta.app?.environment ?? unknownString, ), otel_api.Attribute.fromString( otel_api.ResourceAttributes.serviceVersion, - rumFlutter.meta.app?.version ?? unknownString, + faro.meta.app?.version ?? unknownString, ), otel_api.Attribute.fromString( otel_api.ResourceAttributes.serviceNamespace, - rumFlutter.meta.app?.namespace ?? 'flutter_app', + faro.meta.app?.namespace ?? 'flutter_app', ), // Otel info diff --git a/packages/rum_sdk/lib/src/tracing/extensions.dart b/packages/faro/lib/src/tracing/extensions.dart similarity index 91% rename from packages/rum_sdk/lib/src/tracing/extensions.dart rename to packages/faro/lib/src/tracing/extensions.dart index dfa9b70..cd3480d 100644 --- a/packages/rum_sdk/lib/src/tracing/extensions.dart +++ b/packages/faro/lib/src/tracing/extensions.dart @@ -1,9 +1,9 @@ +import 'package:faro/src/models/trace/trace_attribute.dart'; +import 'package:faro/src/models/trace/trace_span_event.dart'; +import 'package:faro/src/models/trace/trace_span_link.dart'; +import 'package:faro/src/models/trace/trace_span_status.dart'; import 'package:opentelemetry/api.dart' as otel_api; import 'package:opentelemetry/sdk.dart' as otel_sdk; -import 'package:rum_sdk/src/models/trace/trace_attribute.dart'; -import 'package:rum_sdk/src/models/trace/trace_span_event.dart'; -import 'package:rum_sdk/src/models/trace/trace_span_link.dart'; -import 'package:rum_sdk/src/models/trace/trace_span_status.dart'; extension TraceAttributesX on otel_sdk.Attributes { List toTraceAttributes() { diff --git a/packages/rum_sdk/lib/src/tracing/faro_exporter.dart b/packages/faro/lib/src/tracing/faro_exporter.dart similarity index 79% rename from packages/rum_sdk/lib/src/tracing/faro_exporter.dart rename to packages/faro/lib/src/tracing/faro_exporter.dart index b0d5619..88f81bf 100644 --- a/packages/rum_sdk/lib/src/tracing/faro_exporter.dart +++ b/packages/faro/lib/src/tracing/faro_exporter.dart @@ -1,6 +1,6 @@ +import 'package:faro/faro.dart'; +import 'package:faro/src/models/span_record.dart'; import 'package:opentelemetry/sdk.dart' as otel_sdk; -import 'package:rum_sdk/rum_flutter.dart'; -import 'package:rum_sdk/src/models/span_record.dart'; class FaroExporter implements otel_sdk.SpanExporter { var _isShutdown = false; @@ -24,19 +24,19 @@ class FaroExporter implements otel_sdk.SpanExporter { } void _sendSpansToFaro(List spans) { - final rumFlutter = RumFlutter(); + final faro = Faro(); for (var i = 0; i < spans.length; i++) { final otelReadOnlySpan = spans[i]; final spanRecord = SpanRecord(otelReadOnlySpan: otelReadOnlySpan); - rumFlutter.pushEvent( + faro.pushEvent( 'faro.tracing.${spanRecord.name()}', attributes: spanRecord.getFaroEventAttributes(), trace: spanRecord.getFaroSpanContext(), ); - rumFlutter.pushSpan(spanRecord); + faro.pushSpan(spanRecord); } } } diff --git a/packages/rum_sdk/lib/src/tracing/span.dart b/packages/faro/lib/src/tracing/span.dart similarity index 100% rename from packages/rum_sdk/lib/src/tracing/span.dart rename to packages/faro/lib/src/tracing/span.dart diff --git a/packages/rum_sdk/lib/src/tracing/tracer.dart b/packages/faro/lib/src/tracing/tracer.dart similarity index 93% rename from packages/rum_sdk/lib/src/tracing/tracer.dart rename to packages/faro/lib/src/tracing/tracer.dart index 5d3548d..9062f17 100644 --- a/packages/rum_sdk/lib/src/tracing/tracer.dart +++ b/packages/faro/lib/src/tracing/tracer.dart @@ -1,6 +1,6 @@ +import 'package:faro/faro.dart'; +import 'package:faro/src/tracing/span.dart'; import 'package:opentelemetry/api.dart' as otel_api; -import 'package:rum_sdk/rum_flutter.dart'; -import 'package:rum_sdk/src/tracing/span.dart'; class Tracer { Tracer._({required otel_api.Tracer otelTracer}) : _otelTracer = otelTracer; @@ -58,9 +58,9 @@ class Tracer { }).toList(), ); - final rumFlutter = RumFlutter(); + final faro = Faro(); - final sessionId = rumFlutter.meta.session?.id ?? ''; + final sessionId = faro.meta.session?.id ?? ''; otelSpan.setAttributes([ otel_api.Attribute.fromString('session_id', sessionId), otel_api.Attribute.fromString('session.id', sessionId), diff --git a/packages/rum_sdk/lib/src/tracing/tracer_provider.dart b/packages/faro/lib/src/tracing/tracer_provider.dart similarity index 72% rename from packages/rum_sdk/lib/src/tracing/tracer_provider.dart rename to packages/faro/lib/src/tracing/tracer_provider.dart index 140e108..69d1e3a 100644 --- a/packages/rum_sdk/lib/src/tracing/tracer_provider.dart +++ b/packages/faro/lib/src/tracing/tracer_provider.dart @@ -1,9 +1,9 @@ +import 'package:faro/faro.dart'; +import 'package:faro/src/tracing/dart_otel_tracer_resources_factory.dart'; +import 'package:faro/src/tracing/faro_exporter.dart'; +import 'package:faro/src/tracing/tracer.dart'; import 'package:opentelemetry/api.dart' as otel_api; import 'package:opentelemetry/sdk.dart' as otel_sdk; -import 'package:rum_sdk/rum_flutter.dart'; -import 'package:rum_sdk/src/tracing/dart_otel_tracer_resources_factory.dart'; -import 'package:rum_sdk/src/tracing/faro_exporter.dart'; -import 'package:rum_sdk/src/tracing/tracer.dart'; abstract class TracerProvider { Tracer getTracer(); @@ -28,10 +28,10 @@ class DartOtelTracerProvider implements TracerProvider { otel_api.registerGlobalTracerProvider(provider); - final rumFlutter = RumFlutter(); + final faro = Faro(); final otelTracer = provider.getTracer( 'main-instrumentation', - version: rumFlutter.meta.app?.version ?? 'unknown', + version: faro.meta.app?.version ?? 'unknown', ); final tracer = TracerBuilder().buildTracer(otelTracer: otelTracer); diff --git a/packages/rum_sdk/lib/src/transport/batch_transport.dart b/packages/faro/lib/src/transport/batch_transport.dart similarity index 87% rename from packages/rum_sdk/lib/src/transport/batch_transport.dart rename to packages/faro/lib/src/transport/batch_transport.dart index c01b013..7db8233 100644 --- a/packages/rum_sdk/lib/src/transport/batch_transport.dart +++ b/packages/faro/lib/src/transport/batch_transport.dart @@ -1,7 +1,7 @@ import 'dart:async'; -import 'package:rum_sdk/rum_sdk.dart'; -import 'package:rum_sdk/src/models/span_record.dart'; -import 'package:rum_sdk/src/util/payload_extension.dart'; +import 'package:faro/faro_sdk.dart'; +import 'package:faro/src/models/span_record.dart'; +import 'package:faro/src/util/payload_extension.dart'; class BatchTransport { BatchTransport( @@ -33,8 +33,8 @@ class BatchTransport { checkPayloadItemLimit(); } - Future addLog(RumLog rumLog) async { - payload.logs.add(rumLog); + Future addLog(FaroLog faroLog) async { + payload.logs.add(faroLog); checkPayloadItemLimit(); } @@ -43,7 +43,7 @@ class BatchTransport { checkPayloadItemLimit(); } - Future addExceptions(RumException exception) async { + Future addExceptions(FaroException exception) async { payload.exceptions.add(exception); checkPayloadItemLimit(); } diff --git a/packages/rum_sdk/lib/src/transport/rum_base_transport.dart b/packages/faro/lib/src/transport/faro_base_transport.dart similarity index 100% rename from packages/rum_sdk/lib/src/transport/rum_base_transport.dart rename to packages/faro/lib/src/transport/faro_base_transport.dart diff --git a/packages/rum_sdk/lib/src/transport/rum_transport.dart b/packages/faro/lib/src/transport/faro_transport.dart similarity index 86% rename from packages/rum_sdk/lib/src/transport/rum_transport.dart rename to packages/faro/lib/src/transport/faro_transport.dart index 529815a..1e2c4f8 100644 --- a/packages/rum_sdk/lib/src/transport/rum_transport.dart +++ b/packages/faro/lib/src/transport/faro_transport.dart @@ -2,13 +2,13 @@ import 'dart:async'; import 'dart:convert'; import 'dart:developer'; +import 'package:faro/src/data_collection_policy.dart'; +import 'package:faro/src/transport/faro_base_transport.dart'; +import 'package:faro/src/transport/task_buffer.dart'; import 'package:http/http.dart' as http; -import 'package:rum_sdk/src/data_collection_policy.dart'; -import 'package:rum_sdk/src/transport/rum_base_transport.dart'; -import 'package:rum_sdk/src/transport/task_buffer.dart'; -class RUMTransport extends BaseTransport { - RUMTransport({ +class FaroTransport extends BaseTransport { + FaroTransport({ required this.collectorUrl, required this.apiKey, this.sessionId, diff --git a/packages/rum_sdk/lib/src/transport/task_buffer.dart b/packages/faro/lib/src/transport/task_buffer.dart similarity index 100% rename from packages/rum_sdk/lib/src/transport/task_buffer.dart rename to packages/faro/lib/src/transport/task_buffer.dart diff --git a/packages/rum_sdk/lib/src/util/generate_session.dart b/packages/faro/lib/src/util/generate_session.dart similarity index 100% rename from packages/rum_sdk/lib/src/util/generate_session.dart rename to packages/faro/lib/src/util/generate_session.dart diff --git a/packages/rum_sdk/lib/src/util/payload_extension.dart b/packages/faro/lib/src/util/payload_extension.dart similarity index 83% rename from packages/rum_sdk/lib/src/util/payload_extension.dart rename to packages/faro/lib/src/util/payload_extension.dart index f64cf9b..1d16aca 100644 --- a/packages/rum_sdk/lib/src/util/payload_extension.dart +++ b/packages/faro/lib/src/util/payload_extension.dart @@ -1,4 +1,4 @@ -import 'package:rum_sdk/rum_sdk.dart'; +import 'package:faro/faro_sdk.dart'; extension PayloadX on Payload { bool isEmpty() { diff --git a/packages/rum_sdk/lib/src/util/uuid_provider.dart b/packages/faro/lib/src/util/uuid_provider.dart similarity index 100% rename from packages/rum_sdk/lib/src/util/uuid_provider.dart rename to packages/faro/lib/src/util/uuid_provider.dart diff --git a/packages/rum_sdk/pubspec.lock b/packages/faro/pubspec.lock similarity index 100% rename from packages/rum_sdk/pubspec.lock rename to packages/faro/pubspec.lock diff --git a/packages/rum_sdk/pubspec.yaml b/packages/faro/pubspec.yaml similarity index 66% rename from packages/rum_sdk/pubspec.yaml rename to packages/faro/pubspec.yaml index ac6af1e..98845cc 100644 --- a/packages/rum_sdk/pubspec.yaml +++ b/packages/faro/pubspec.yaml @@ -1,7 +1,7 @@ publish_to: none -name: rum_sdk -description: A new Flutter plugin project. -version: 0.1.2 +name: faro +description: Grafana Faro SDK for Flutter applications - Monitor your Flutter app with ease. +version: 0.2.0 environment: sdk: ">=3.0.0 <4.0.0" @@ -34,13 +34,13 @@ flutter: plugin: platforms: android: - package: com.example.rum_sdk - pluginClass: RumSdkPlugin + package: com.example.faro + pluginClass: FaroPlugin ios: - pluginClass: RumSdkPlugin + pluginClass: FaroPlugin linux: - pluginClass: RumSdkPlugin + pluginClass: FaroPlugin macos: - pluginClass: RumSdkPlugin + pluginClass: FaroPlugin windows: - pluginClass: RumSdkPluginCApi + pluginClass: FaroPluginCApi diff --git a/packages/rum_sdk/scripts/create-api-config-file.sh b/packages/faro/scripts/create-api-config-file.sh similarity index 100% rename from packages/rum_sdk/scripts/create-api-config-file.sh rename to packages/faro/scripts/create-api-config-file.sh diff --git a/packages/rum_sdk/test/src/device_info/device_id_provider_test.dart b/packages/faro/test/src/device_info/device_id_provider_test.dart similarity index 95% rename from packages/rum_sdk/test/src/device_info/device_id_provider_test.dart rename to packages/faro/test/src/device_info/device_id_provider_test.dart index 6c3cb3a..4210c29 100644 --- a/packages/rum_sdk/test/src/device_info/device_id_provider_test.dart +++ b/packages/faro/test/src/device_info/device_id_provider_test.dart @@ -1,7 +1,7 @@ +import 'package:faro/src/device_info/device_id_provider.dart'; +import 'package:faro/src/util/uuid_provider.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; -import 'package:rum_sdk/src/device_info/device_id_provider.dart'; -import 'package:rum_sdk/src/util/uuid_provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; class MockSharedPreferences extends Mock implements SharedPreferences {} diff --git a/packages/rum_sdk/test/src/device_info/device_info_provider_test.dart b/packages/faro/test/src/device_info/device_info_provider_test.dart similarity index 97% rename from packages/rum_sdk/test/src/device_info/device_info_provider_test.dart rename to packages/faro/test/src/device_info/device_info_provider_test.dart index 5ce5dbf..74fc4ff 100644 --- a/packages/rum_sdk/test/src/device_info/device_info_provider_test.dart +++ b/packages/faro/test/src/device_info/device_info_provider_test.dart @@ -1,8 +1,8 @@ import 'package:device_info_plus/device_info_plus.dart'; +import 'package:faro/src/device_info/device_info_provider.dart'; +import 'package:faro/src/device_info/platform_info_provider.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; -import 'package:rum_sdk/src/device_info/device_info_provider.dart'; -import 'package:rum_sdk/src/device_info/platform_info_provider.dart'; class MockDeviceInfoPlugin extends Mock implements DeviceInfoPlugin {} diff --git a/packages/rum_sdk/test/src/device_info/session_attributes_provider_test.dart b/packages/faro/test/src/device_info/session_attributes_provider_test.dart similarity index 87% rename from packages/rum_sdk/test/src/device_info/session_attributes_provider_test.dart rename to packages/faro/test/src/device_info/session_attributes_provider_test.dart index 3a01a30..de918e7 100644 --- a/packages/rum_sdk/test/src/device_info/session_attributes_provider_test.dart +++ b/packages/faro/test/src/device_info/session_attributes_provider_test.dart @@ -1,9 +1,9 @@ +import 'package:faro/src/device_info/device_id_provider.dart'; +import 'package:faro/src/device_info/device_info_provider.dart'; +import 'package:faro/src/device_info/session_attributes_provider.dart'; +import 'package:faro/src/models/models.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; -import 'package:rum_sdk/src/device_info/device_id_provider.dart'; -import 'package:rum_sdk/src/device_info/device_info_provider.dart'; -import 'package:rum_sdk/src/device_info/session_attributes_provider.dart'; -import 'package:rum_sdk/src/models/models.dart'; class MockDeviceIdProvider extends Mock implements DeviceIdProvider {} diff --git a/packages/rum_sdk/test/src/models/device_id_test.dart b/packages/faro/test/src/models/device_id_test.dart similarity index 86% rename from packages/rum_sdk/test/src/models/device_id_test.dart rename to packages/faro/test/src/models/device_id_test.dart index 77c8d36..1d71109 100644 --- a/packages/rum_sdk/test/src/models/device_id_test.dart +++ b/packages/faro/test/src/models/device_id_test.dart @@ -1,5 +1,5 @@ +import 'package:faro/src/models/models.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:rum_sdk/src/models/models.dart'; void main() { group('DeviceId:', () { diff --git a/packages/rum_sdk/test/src/models/device_info_test.dart b/packages/faro/test/src/models/device_info_test.dart similarity index 97% rename from packages/rum_sdk/test/src/models/device_info_test.dart rename to packages/faro/test/src/models/device_info_test.dart index fabf85c..494fc91 100644 --- a/packages/rum_sdk/test/src/models/device_info_test.dart +++ b/packages/faro/test/src/models/device_info_test.dart @@ -1,5 +1,5 @@ +import 'package:faro/faro_sdk.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:rum_sdk/rum_sdk.dart'; void main() { group('DeviceInfo:', () { diff --git a/packages/rum_sdk/test/src/models/measurement_test.dart b/packages/faro/test/src/models/measurement_test.dart similarity index 98% rename from packages/rum_sdk/test/src/models/measurement_test.dart rename to packages/faro/test/src/models/measurement_test.dart index 88bdd3a..49d8670 100644 --- a/packages/rum_sdk/test/src/models/measurement_test.dart +++ b/packages/faro/test/src/models/measurement_test.dart @@ -1,6 +1,7 @@ import 'dart:convert'; + +import 'package:faro/src/models/measurement.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:rum_sdk/src/models/measurement.dart'; void main() { group('Measurement:', () { diff --git a/packages/rum_sdk/test/src/offline_transport/internet_connectivity_service_test.dart b/packages/faro/test/src/offline_transport/internet_connectivity_service_test.dart similarity index 96% rename from packages/rum_sdk/test/src/offline_transport/internet_connectivity_service_test.dart rename to packages/faro/test/src/offline_transport/internet_connectivity_service_test.dart index 567cbe7..5e29a3c 100644 --- a/packages/rum_sdk/test/src/offline_transport/internet_connectivity_service_test.dart +++ b/packages/faro/test/src/offline_transport/internet_connectivity_service_test.dart @@ -1,9 +1,10 @@ import 'dart:async'; + import 'package:connectivity_plus/connectivity_plus.dart'; +import 'package:faro/src/offline_transport/connectivity_checker.dart'; +import 'package:faro/src/offline_transport/internet_connectivity_service.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; -import 'package:rum_sdk/src/offline_transport/connectivity_checker.dart'; -import 'package:rum_sdk/src/offline_transport/internet_connectivity_service.dart'; class MockConnectivityChecker extends Mock implements ConnectivityChecker {} diff --git a/packages/rum_sdk/test/unit_test/batch_transport_test.dart b/packages/faro/test/unit_test/batch_transport_test.dart similarity index 94% rename from packages/rum_sdk/test/unit_test/batch_transport_test.dart rename to packages/faro/test/unit_test/batch_transport_test.dart index 26582ec..28f6ff7 100644 --- a/packages/rum_sdk/test/unit_test/batch_transport_test.dart +++ b/packages/faro/test/unit_test/batch_transport_test.dart @@ -1,8 +1,8 @@ import 'package:fake_async/fake_async.dart'; +import 'package:faro/faro_sdk.dart'; +import 'package:faro/src/transport/batch_transport.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; -import 'package:rum_sdk/rum_sdk.dart'; -import 'package:rum_sdk/src/transport/batch_transport.dart'; class MockPayload extends Mock implements Payload {} @@ -72,8 +72,8 @@ void main() { }); test('addLog should add log and check payload item limit', () async { - final log = RumLog('Test log'); - final mockLogs = []; + final log = FaroLog('Test log'); + final mockLogs = []; when(() => mockPayload.logs).thenReturn(mockLogs); await batchTransport.addLog(log); @@ -84,8 +84,8 @@ void main() { test('addExceptions should add exception and check payload item limit', () async { - final exception = RumException('TestException', 'Test', {}); - final mockExceptions = []; + final exception = FaroException('TestException', 'Test', {}); + final mockExceptions = []; when(() => mockPayload.exceptions).thenReturn(mockExceptions); await batchTransport.addExceptions(exception); @@ -113,10 +113,10 @@ void main() { batchConfig: mockBatchConfig, ); - batchTransport.addLog(RumLog('Test log')); + batchTransport.addLog(FaroLog('Test log')); batchTransport.addEvent(Event('test_event')); batchTransport.addMeasurement(Measurement({'test_value': 12}, 'test')); - batchTransport.addExceptions(RumException('TestException', 'Test', {})); + batchTransport.addExceptions(FaroException('TestException', 'Test', {})); expect(payload.events.length, equals(1)); expect(payload.measurements.length, equals(1)); diff --git a/packages/rum_sdk/test/unit_test/flutter_error_integration_test.dart b/packages/faro/test/unit_test/flutter_error_integration_test.dart similarity index 84% rename from packages/rum_sdk/test/unit_test/flutter_error_integration_test.dart rename to packages/faro/test/unit_test/flutter_error_integration_test.dart index 3aaba98..8a4681d 100644 --- a/packages/rum_sdk/test/unit_test/flutter_error_integration_test.dart +++ b/packages/faro/test/unit_test/flutter_error_integration_test.dart @@ -1,8 +1,8 @@ +import 'package:faro/faro_sdk.dart'; +import 'package:faro/src/transport/batch_transport.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; -import 'package:rum_sdk/rum_sdk.dart'; -import 'package:rum_sdk/src/transport/batch_transport.dart'; class Functions { void defaultOnError(FlutterErrorDetails details) async { @@ -12,7 +12,7 @@ class Functions { class MockFunctions extends Mock implements Functions {} -class MockRUMTransport extends Mock implements RUMTransport {} +class MockFaroTransport extends Mock implements FaroTransport {} class MockBatchTransport extends Mock implements BatchTransport {} @@ -25,13 +25,13 @@ void main() { setUpAll(() { registerFallbackValue( FlutterErrorDetails(exception: FlutterError('Fallback Error'))); - registerFallbackValue(RumException('exception', 'test exception', {})); + registerFallbackValue(FaroException('exception', 'test exception', {})); }); setUp(() { mockBatchTransport = MockBatchTransport(); mockFunctions = MockFunctions(); - RumFlutter().batchTransport = mockBatchTransport; + Faro().batchTransport = mockBatchTransport; when(() => mockBatchTransport.addExceptions(any())) .thenAnswer((_) async {}); flutterErrorDetails = FlutterErrorDetails( @@ -41,7 +41,7 @@ void main() { tearDown(() {}); - test('call method should push errors to rum when error occurs ', () { + test('call method should push errors to faro when error occurs ', () { FlutterError.onError = null; FlutterErrorIntegration().call(); FlutterError.onError?.call(flutterErrorDetails); diff --git a/packages/rum_sdk/test/unit_test/http_tracking_client_test.dart b/packages/faro/test/unit_test/http_tracking_client_test.dart similarity index 84% rename from packages/rum_sdk/test/unit_test/http_tracking_client_test.dart rename to packages/faro/test/unit_test/http_tracking_client_test.dart index 4dda0a1..22b2ce4 100644 --- a/packages/rum_sdk/test/unit_test/http_tracking_client_test.dart +++ b/packages/faro/test/unit_test/http_tracking_client_test.dart @@ -2,9 +2,10 @@ import 'dart:async'; import 'dart:io'; + +import 'package:faro/faro_sdk.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; -import 'package:rum_sdk/rum_sdk.dart'; class MockHttpClient extends Mock implements HttpClient {} @@ -17,9 +18,9 @@ class MockStreamSubscription extends Mock implements StreamSubscription {} class MockHttpHeaders extends Mock implements HttpHeaders {} void main() { - group('RumHttpTrackingClient', () { + group('FaroHttpTrackingClient', () { late MockHttpClient mockHttpClient; - late RumHttpTrackingClient rumHttpTrackingClient; + late FaroHttpTrackingClient faroHttpTrackingClient; late MockHttpClientRequest mockHttpClientRequest; late MockHttpHeaders mockHttpHeaders; @@ -33,7 +34,7 @@ void main() { when(() => mockHttpClientRequest.uri) .thenReturn(Uri.parse('http://example.com/path')); - rumHttpTrackingClient = RumHttpTrackingClient(mockHttpClient); + faroHttpTrackingClient = FaroHttpTrackingClient(mockHttpClient); }); test('openUrl should call innerClient.openUrl', () async { @@ -42,7 +43,7 @@ void main() { when(() => mockHttpClient.openUrl('GET', url)) .thenAnswer((_) async => mockHttpClientRequest); - final requestFuture = rumHttpTrackingClient.openUrl('GET', url); + final requestFuture = faroHttpTrackingClient.openUrl('GET', url); verify(() => mockHttpClient.openUrl('GET', url)).called(1); @@ -50,9 +51,9 @@ void main() { }); }); - group('RumTrackingHttpClientRequest', () { + group('FaroTrackingHttpClientRequest', () { late MockHttpClientRequest mockHttpClientRequest; - late RumTrackingHttpClientRequest rumTrackingHttpClientRequest; + late FaroTrackingHttpClientRequest faroTrackingHttpClientRequest; late Map userAttributes; late MockHttpHeaders mockHttpHeaders; @@ -71,7 +72,7 @@ void main() { 'method': 'GET', 'url': 'http://example.com/path', }; - rumTrackingHttpClientRequest = RumTrackingHttpClientRequest( + faroTrackingHttpClientRequest = FaroTrackingHttpClientRequest( 'key', mockHttpClientRequest, userAttributes); }); @@ -86,7 +87,7 @@ void main() { when(() => mockHttpClientResponse.headers).thenReturn(mockHttpHeaders); when(() => mockHttpClientResponse.statusCode).thenReturn(200); - final responseFuture = rumTrackingHttpClientRequest.close(); + final responseFuture = faroTrackingHttpClientRequest.close(); verify(() => mockHttpClientRequest.close()).called(1); diff --git a/packages/rum_sdk/test/unit_test/native_integration_test.dart b/packages/faro/test/unit_test/native_integration_test.dart similarity index 69% rename from packages/rum_sdk/test/unit_test/native_integration_test.dart rename to packages/faro/test/unit_test/native_integration_test.dart index e7873ee..c767996 100644 --- a/packages/rum_sdk/test/unit_test/native_integration_test.dart +++ b/packages/faro/test/unit_test/native_integration_test.dart @@ -1,29 +1,29 @@ +import 'package:faro/faro_native_methods.dart'; +import 'package:faro/faro_sdk.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; -import 'package:rum_sdk/rum_native_methods.dart'; -import 'package:rum_sdk/rum_sdk.dart'; -class MockRumFlutter extends Mock implements RumFlutter {} +class MockFaro extends Mock implements Faro {} -class MockNativeChannel extends Mock implements RumNativeMethods {} +class MockNativeChannel extends Mock implements FaroNativeMethods {} void main() { TestWidgetsFlutterBinding.ensureInitialized(); - late MockRumFlutter mockRumFlutter; + late MockFaro mockFaro; late MockNativeChannel mockNativeChannel; late NativeIntegration nativeIntegration; setUp(() { - mockRumFlutter = MockRumFlutter(); + mockFaro = MockFaro(); mockNativeChannel = MockNativeChannel(); nativeIntegration = NativeIntegration(); - when(() => mockRumFlutter.nativeChannel).thenReturn(mockNativeChannel); + when(() => mockFaro.nativeChannel).thenReturn(mockNativeChannel); when(() => mockNativeChannel.getMemoryUsage()) .thenAnswer((_) async => 50.0); when(() => mockNativeChannel.initRefreshRate()).thenAnswer((_) async {}); - RumFlutter.instance = mockRumFlutter; + Faro.instance = mockFaro; }); group('NativeIntegration', () { @@ -44,8 +44,7 @@ void main() { await Future.delayed(const Duration(milliseconds: 10)); nativeIntegration.getWarmStart(); - verify(() => mockRumFlutter.pushMeasurement(any(), 'app_startup')) - .called(1); + verify(() => mockFaro.pushMeasurement(any(), 'app_startup')).called(1); }); }); } diff --git a/packages/rum_sdk/test/unit_test/on_error_integration_test.dart b/packages/faro/test/unit_test/on_error_integration_test.dart similarity index 100% rename from packages/rum_sdk/test/unit_test/on_error_integration_test.dart rename to packages/faro/test/unit_test/on_error_integration_test.dart diff --git a/packages/rum_sdk/test/unit_test/payload_extension_test.dart b/packages/faro/test/unit_test/payload_extension_test.dart similarity index 88% rename from packages/rum_sdk/test/unit_test/payload_extension_test.dart rename to packages/faro/test/unit_test/payload_extension_test.dart index af72fcc..2626137 100644 --- a/packages/rum_sdk/test/unit_test/payload_extension_test.dart +++ b/packages/faro/test/unit_test/payload_extension_test.dart @@ -1,9 +1,9 @@ // ignore_for_file: avoid_positional_boolean_parameters, use_setters_to_change_properties, lines_longer_than_80_chars +import 'package:faro/faro_sdk.dart'; +import 'package:faro/src/models/models.dart'; +import 'package:faro/src/util/payload_extension.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:rum_sdk/rum_sdk.dart'; -import 'package:rum_sdk/src/models/models.dart'; -import 'package:rum_sdk/src/util/payload_extension.dart'; class MockTraces extends Traces { bool _hasTraces = false; @@ -39,13 +39,13 @@ void main() { test('isEmpty returns false when logs is not empty', () { final payload = Payload(Meta()); - payload.logs.add(RumLog('test_message')); + payload.logs.add(FaroLog('test_message')); expect(payload.isEmpty(), false); }); test('isEmpty returns false when exceptions is not empty', () { final payload = Payload(Meta()); - payload.exceptions.add(RumException( + payload.exceptions.add(FaroException( 'test_type', 'test_value', {'frames': []}, diff --git a/packages/rum_sdk/test/unit_test/rum_flutter_test.dart b/packages/faro/test/unit_test/rum_flutter_test.dart similarity index 67% rename from packages/rum_sdk/test/unit_test/rum_flutter_test.dart rename to packages/faro/test/unit_test/rum_flutter_test.dart index 46fedd8..b10ade6 100644 --- a/packages/rum_sdk/test/unit_test/rum_flutter_test.dart +++ b/packages/faro/test/unit_test/rum_flutter_test.dart @@ -1,17 +1,17 @@ +import 'package:faro/faro_native_methods.dart'; +import 'package:faro/faro_sdk.dart'; +import 'package:faro/src/transport/batch_transport.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; import 'package:package_info_plus/package_info_plus.dart'; -import 'package:rum_sdk/rum_native_methods.dart'; -import 'package:rum_sdk/rum_sdk.dart'; -import 'package:rum_sdk/src/transport/batch_transport.dart'; import 'package:shared_preferences/shared_preferences.dart'; -class MockRUMTransport extends Mock implements RUMTransport {} +class MockFaroTransport extends Mock implements FaroTransport {} class MockBatchTransport extends Mock implements BatchTransport {} -class MockRumNativeMethods extends Mock implements RumNativeMethods {} +class MockFaroNativeMethods extends Mock implements FaroNativeMethods {} void main() { group('RUM Flutter initialization', () { @@ -21,9 +21,9 @@ void main() { const apiKey = 'TestAPIKey'; const appNamespace = 'FlutterApp'; - late MockRUMTransport mockRUMTransport; + late MockFaroTransport mockFaroTransport; late MockBatchTransport mockBatchTransport; - late MockRumNativeMethods mockRumNativeMethods; + late MockFaroNativeMethods mockFaroNativeMethods; setUp(() { // Mock SharedPreferences @@ -38,19 +38,23 @@ void main() { ); registerFallbackValue( - RumException('test', 'something', {'frames': >[]}), + FaroException( + 'test', + 'something', + {'frames': >[]}, + ), ); registerFallbackValue(Event('test', attributes: {'test': 'test'})); - registerFallbackValue(RumLog('This is a message')); + registerFallbackValue(FaroLog('This is a message')); registerFallbackValue(Measurement({'test': 123}, 'test')); registerFallbackValue(Payload(Meta())); - mockRUMTransport = MockRUMTransport(); + mockFaroTransport = MockFaroTransport(); mockBatchTransport = MockBatchTransport(); - mockRumNativeMethods = MockRumNativeMethods(); - RumFlutter().transports = [mockRUMTransport]; - RumFlutter().nativeChannel = mockRumNativeMethods; - RumFlutter().batchTransport = mockBatchTransport; - when(() => mockRumNativeMethods.enableCrashReporter(any())) + mockFaroNativeMethods = MockFaroNativeMethods(); + Faro().transports = [mockFaroTransport]; + Faro().nativeChannel = mockFaroNativeMethods; + Faro().batchTransport = mockBatchTransport; + when(() => mockFaroNativeMethods.enableCrashReporter(any())) .thenAnswer((_) async {}); when(() => mockBatchTransport.addExceptions(any())) .thenAnswer((_) async {}); @@ -58,14 +62,14 @@ void main() { when(() => mockBatchTransport.addEvent(any())).thenAnswer((_) async {}); when(() => mockBatchTransport.addMeasurement(any())) .thenAnswer((_) async {}); - when(() => mockRUMTransport.send(any())).thenAnswer((_) async {}); + when(() => mockFaroTransport.send(any())).thenAnswer((_) async {}); }); tearDown(() {}); test('init called with no error', () async { TestWidgetsFlutterBinding.ensureInitialized(); - final rumConfig = RumConfig( + final rumConfig = FaroConfig( appName: appName, appVersion: appVersion, appEnv: appEnv, @@ -76,9 +80,9 @@ void main() { collectorUrl: 'https://some-url.com', ); - await RumFlutter().init(optionsConfiguration: rumConfig); + await Faro().init(optionsConfiguration: rumConfig); - final app = RumFlutter().meta.app; + final app = Faro().meta.app; expect(app?.name, rumConfig.appName); expect(app?.version, rumConfig.appVersion); expect(app?.environment, rumConfig.appEnv); @@ -86,36 +90,36 @@ void main() { }); test('set App Meta data', () { - RumFlutter().setAppMeta( + Faro().setAppMeta( appName: appName, appEnv: appEnv, appVersion: appVersion, namespace: appNamespace, ); - expect(RumFlutter().meta.app?.name, appName); - expect(RumFlutter().meta.app?.environment, appEnv); - expect(RumFlutter().meta.app?.version, appVersion); + expect(Faro().meta.app?.name, appName); + expect(Faro().meta.app?.environment, appEnv); + expect(Faro().meta.app?.version, appVersion); }); test('set user meta data ', () { - RumFlutter().setUserMeta( + Faro().setUserMeta( userId: 'testuserid', userName: 'testusername', userEmail: 'testusermail@example.com'); - expect(RumFlutter().meta.user?.id, 'testuserid'); - expect(RumFlutter().meta.user?.username, 'testusername'); - expect(RumFlutter().meta.user?.email, 'testusermail@example.com'); + expect(Faro().meta.user?.id, 'testuserid'); + expect(Faro().meta.user?.username, 'testusername'); + expect(Faro().meta.user?.email, 'testusermail@example.com'); }); test('set view meta data ', () { - RumFlutter().setViewMeta(name: 'Testview'); - expect(RumFlutter().meta.view?.name, 'Testview'); + Faro().setViewMeta(name: 'Testview'); + expect(Faro().meta.view?.name, 'Testview'); }); test('send custom event', () { const eventName = 'TestEvent'; const eventAttributes = {'testkey': 'testvalue'}; - RumFlutter().pushEvent(eventName, attributes: eventAttributes); + Faro().pushEvent(eventName, attributes: eventAttributes); verify(() => mockBatchTransport.addEvent(any())).called(1); }); @@ -124,7 +128,7 @@ void main() { const logLevel = 'info'; const logContext = {'testkey': 'testvalue'}; const trace = {'traceId': 'testtraceid', 'spanId': 'testspanid'}; - RumFlutter().pushLog(logMessage, + Faro().pushLog(logMessage, level: logLevel, context: logContext, trace: trace); verify(() => mockBatchTransport.addLog(any())).called(1); }); @@ -133,7 +137,7 @@ void main() { final flutterErrorDetails = FlutterErrorDetails(exception: FlutterError('Test Error')); const errorType = 'flutter_error'; - RumFlutter().pushError( + Faro().pushError( type: errorType, value: flutterErrorDetails.exception.toString(), stacktrace: flutterErrorDetails.stack); @@ -143,7 +147,7 @@ void main() { test('send custom measurement', () { const measurementType = 'TestMeasurement'; const measurementValue = {'key1': 1233, 'key2': 100}; - RumFlutter().pushMeasurement(measurementValue, measurementType); + Faro().pushMeasurement(measurementValue, measurementType); verify(() => mockBatchTransport.addMeasurement(any())).called(1); }); }); diff --git a/packages/rum_sdk/README.md b/packages/rum_sdk/README.md deleted file mode 100644 index b73a326..0000000 --- a/packages/rum_sdk/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# rum_sdk - -A new Flutter plugin project. - -## Getting Started - -This project is a starting point for a Flutter -[plug-in package](https://flutter.dev/developing-packages/), -a specialized package that includes platform-specific implementation code for -Android and/or iOS. - -For help getting started with Flutter development, view the -[online documentation](https://flutter.dev/docs), which offers tutorials, -samples, guidance on mobile development, and a full API reference. - diff --git a/packages/rum_sdk/android/settings.gradle b/packages/rum_sdk/android/settings.gradle deleted file mode 100644 index 99d0e6a..0000000 --- a/packages/rum_sdk/android/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -rootProject.name = 'rum_sdk' diff --git a/packages/rum_sdk/example/pubspec_overrides.yaml b/packages/rum_sdk/example/pubspec_overrides.yaml deleted file mode 100644 index 9db0f99..0000000 --- a/packages/rum_sdk/example/pubspec_overrides.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# melos_managed_dependency_overrides: rum_sdk -dependency_overrides: - rum_sdk: - path: .. diff --git a/packages/rum_sdk/lib/rum_native_methods.dart b/packages/rum_sdk/lib/rum_native_methods.dart deleted file mode 100644 index 9baf886..0000000 --- a/packages/rum_sdk/lib/rum_native_methods.dart +++ /dev/null @@ -1,47 +0,0 @@ -import 'package:rum_sdk/rum_sdk_platform_interface.dart'; - -class RumNativeMethods { - Future getMemoryUsage() { - return RumSdkPlatform.instance.getMemoryUsage(); - } - - Future getRefreshRate() { - return RumSdkPlatform.instance.getRefreshRate(); - } - - Future initRefreshRate() { - return RumSdkPlatform.instance.initRefreshRate(); - } - - Future getCpuUsage() { - return RumSdkPlatform.instance.getCpuUsage(); - } - - Future?> getAppStart() { - return RumSdkPlatform.instance.getAppStart(); - } - - Future?> getWarmStart() { - return RumSdkPlatform.instance.getWarmStart(); - } - - Future?> stopFramesTracker() { - return RumSdkPlatform.instance.stopFramesTracker(); - } - - Future startFramesTracker() { - return RumSdkPlatform.instance.startFramesTracker(); - } - - Future?> getANRStatus() { - return RumSdkPlatform.instance.getANRStatus(); - } - - Future enableCrashReporter(Map config) { - return RumSdkPlatform.instance.enableCrashReporter(config); - } - - Future?> getCrashReport() { - return RumSdkPlatform.instance.getCrashReport(); - } -}