From ca2df337841937148da93c6f7385e567e46969e7 Mon Sep 17 00:00:00 2001 From: Sam Rawlins Date: Thu, 18 Dec 2025 13:31:16 -0800 Subject: [PATCH 1/3] Use markdown lists in doc comments --- pkgs/unified_analytics/lib/src/event.dart | 349 +++++++++++----------- 1 file changed, 176 insertions(+), 173 deletions(-) diff --git a/pkgs/unified_analytics/lib/src/event.dart b/pkgs/unified_analytics/lib/src/event.dart index fb66b189f..daa813c65 100644 --- a/pkgs/unified_analytics/lib/src/event.dart +++ b/pkgs/unified_analytics/lib/src/event.dart @@ -24,7 +24,7 @@ final class Event { /// Event that is emitted whenever a user has opted in /// or out of the analytics collection. /// - /// [status] - boolean value where `true` indicates user is opting in. + /// * [status] - Boolean value where `true` indicates user is opting in. Event.analyticsCollectionEnabled({required bool status}) : this._( eventName: DashEvent.analyticsCollectionEnabled, @@ -37,12 +37,12 @@ final class Event { /// Tools using this package should instead use the more generic /// [Event.exception] constructor. /// - /// [workflow] - refers to what process caused the error, such as + /// * [workflow] - refers to what process caused the error, such as /// "LogHandler.logFileStats". /// - /// [error] - the name of the error, such as "FormatException". + /// * [error] - the name of the error, such as "FormatException". /// - /// [description] - the description of the error being caught. + /// * [description] - the description of the error being caught. Event.analyticsException({ required String workflow, required String error, @@ -59,11 +59,11 @@ final class Event { /// This is for various workflows within the flutter tool related /// to iOS and macOS workflows. /// - /// [workflow] - which workflow is running, such as "assemble". + /// * [workflow] - which workflow is running, such as "assemble". /// - /// [parameter] - subcategory of the workflow, such as "ios-archive". + /// * [parameter] - subcategory of the workflow, such as "ios-archive". /// - /// [result] - usually to indicate success or failure of the workflow. + /// * [result] - usually to indicate success or failure of the workflow. Event.appleUsageEvent({ required String workflow, required String parameter, @@ -81,15 +81,15 @@ final class Event { /// analysis server's handling of a specific kind of notification from the /// client. /// - /// [duration] - json encoded percentile values indicating how long it took - /// from the time the server started handling the notification until the - /// server had finished handling the notification. + /// * [duration] - JSON-encoded percentile values indicating how long it took + /// from the time the server started handling the notification until the + /// server had finished handling the notification. /// - /// [latency] - json encoded percentile values indicating how long it took - /// from the time the notification was sent until the server started - /// handling it. + /// * [latency] - JSON-encoded percentile values indicating how long it took + /// from the time the notification was sent until the server started + /// handling it. /// - /// [method] - the name of the notification method that was sent. + /// * [method] - the name of the notification method that was sent. Event.clientNotification({ required String duration, required String latency, @@ -106,9 +106,9 @@ final class Event { /// Event that is emitted periodically to report the performance of the /// analyzer. /// - /// [workingDuration] - json encoded percentile values indicating how long - /// the analysis status was "working". - /// [withFineDependencies] - whether the fine-grained feature is enabled. + /// * [workingDuration] - JSON-encoded percentile values indicating how long + /// the analysis status was "working". + /// * [withFineDependencies] - whether the fine-grained feature is enabled. /// /// Then there are three groups of measurements: /// * file modifications @@ -116,19 +116,19 @@ final class Event { /// * background analysis /// /// The file modifications group includes: - /// [changedFileEventCount] - the number of file change events received. - /// [removedFileEventCount] - the number of file removal events received. - /// [changedFileUniqueCount] - the number of unique files that were changed. - /// [removedFileUniqueCount] - the number of unique files that were removed. + /// * [changedFileEventCount] - the number of file change events received. + /// * [removedFileEventCount] - the number of file removal events received. + /// * [changedFileUniqueCount] - the number of unique files that were changed. + /// * [removedFileUniqueCount] - the number of unique files that were removed. /// /// The workspace shape group includes: - /// * [immediateFileCountPercentiles] - json encoded percentile values for the + /// * [immediateFileCountPercentiles] - JSON-encoded percentile values for the /// number of files in the immediate workspace. - /// * [immediateFileLineCountPercentiles] - json encoded percentile values for + /// * [immediateFileLineCountPercentiles] - JSON-encoded percentile values for /// the number of lines in the immediate workspace files. - /// * [transitiveFileCountPercentiles] - json encoded percentile values for + /// * [transitiveFileCountPercentiles] - JSON-encoded percentile values for /// the number of files in the transitive workspace. - /// * [transitiveFileLineCountPercentiles] - json encoded percentile values + /// * [transitiveFileLineCountPercentiles] - JSON-encoded percentile values /// for the number of lines in the transitive workspace files. /// /// This allows us to understand how big is the workspace, and how it changed @@ -206,45 +206,44 @@ final class Event { /// Event that is emitted periodically to report the performance of the /// analysis server's handling of a specific kind of request from the client. /// - /// [duration] - json encoded percentile values indicating how long it took - /// from the time the server started handling the request until the server - /// had send a response. + /// * [duration] - JSON-encoded percentile values indicating how long it took + /// from the time the server started handling the request until the server + /// had send a response. /// - /// [latency] - json encoded percentile values indicating how long it took - /// from the time the request was sent until the server started handling - /// it. + /// * [latency] - JSON-encoded percentile values indicating how long it took + /// from the time the request was sent until the server started handling it. /// - /// [method] - the name of the request method that was sent. + /// * [method] - the name of the request method that was sent. /// /// If the method is `workspace/didChangeWorkspaceFolders`, then the following /// parameters should be included: /// - /// [added] - json encoded percentile values indicating the number of folders - /// that were added. + /// * [added] - JSON-encoded percentile values indicating the number of folders + /// that were added. /// - /// [removed] - json encoded percentile values indicating the number of - /// folders that were removed. + /// * [removed] - JSON-encoded percentile values indicating the number of + /// folders that were removed. /// /// If the method is `initialized`, then the following parameters should be /// included: /// - /// [openWorkspacePaths] - json encoded percentile values indicating the - /// number of workspace paths that were opened. + /// * [openWorkspacePaths] - JSON-encoded percentile values indicating the + /// number of workspace paths that were opened. /// /// If the method is `analysis.setAnalysisRoots`, then the following /// parameters should be included: /// - /// [included] - json encoded percentile values indicating the number of - /// analysis roots in the included list. + /// * [included] - JSON-encoded percentile values indicating the number of + /// analysis roots in the included list. /// - /// [excluded] - json encoded percentile values indicating the number of - /// analysis roots in the excluded list. + /// * [excluded] - JSON-encoded percentile values indicating the number of + /// analysis roots in the excluded list. /// /// If the method is `analysis.setPriorityFiles`, then the following /// parameters should be included: /// - /// [files] - json encoded percentile values indicating the number of priority - /// files. + /// * [files] - JSON-encoded percentile values indicating the number of + /// priority files. /// Event.clientRequest({ required String duration, @@ -275,7 +274,7 @@ final class Event { /// An event that reports when the code size measurement is run /// via `--analyze-size`. /// - /// [platform] - string identifier for which platform was run "ios", "apk", + /// * [platform] - string identifier for which platform was run "ios", "apk", /// "aab", etc. Event.codeSizeAnalysis({required String platform}) : this._( @@ -288,9 +287,9 @@ final class Event { /// Event that is emitted periodically to report the number of times a given /// command has been executed. /// - /// [count] - the number of times the command was executed. + /// * [count] - the number of times the command was executed. /// - /// [name] - the name of the command that was executed. + /// * [name] - the name of the command that was executed. Event.commandExecuted({ required int count, required String name, @@ -302,10 +301,10 @@ final class Event { }, ); - /// Event to capture usage values for different flutter commands. + /// Event to capture usage values for different Flutter commands. /// /// There are several implementations of the `FlutterCommand` class within the - /// flutter-tool that pass information based on the [workflow] being ran. An + /// Flutter tool that pass information based on the [workflow] being ran. An /// example of a [workflow] can be "create". The optional parameters for this /// constructor are a superset of all the implementations of `FlutterCommand`. /// There should never be a time where all of the parameters are passed to @@ -409,41 +408,41 @@ final class Event { /// Event that is emitted on shutdown to report the structure of the analysis /// contexts created immediately after startup. /// - /// [immediateFileCount] - the number of files in one of the analysis - /// contexts. + /// * [immediateFileCount] - the number of files in one of the analysis + /// contexts. /// - /// [immediateFileLineCount] - the number of lines in the immediate files. + /// * [immediateFileLineCount] - the number of lines in the immediate files. /// - /// [numberOfContexts] - the number of analysis context created. + /// * [numberOfContexts] - the number of analysis context created. /// - /// [transitiveFileCount] - the number of files reachable from the files in - /// each analysis context, where files can be counted multiple times if - /// they are reachable from multiple contexts. + /// * [transitiveFileCount] - the number of files reachable from the files in + /// each analysis context, where files can be counted multiple times if they + /// are reachable from multiple contexts. /// - /// [transitiveFileLineCount] - the number of lines in the transitive files, - /// where files can be counted multiple times if they are reachable from - /// multiple contexts. + /// * [transitiveFileLineCount] - the number of lines in the transitive files, + /// where files can be counted multiple times if they are reachable from + /// multiple contexts. /// - /// [transitiveFileUniqueCount] - the number of unique files reachable from - /// the files in each analysis context. + /// * [transitiveFileUniqueCount] - the number of unique files reachable from + /// the files in each analysis context. /// - /// [transitiveFileUniqueLineCount] - the number of lines in the unique - /// transitive files. + /// * [transitiveFileUniqueLineCount] - the number of lines in the unique + /// transitive files. /// - /// [libraryCycleLibraryCounts] - json encoded percentile values indicating - /// the number of libraries in a single library cycle. + /// * [libraryCycleLibraryCounts] - JSON-encoded percentile values indicating + /// the number of libraries in a single library cycle. /// - /// [libraryCycleLineCounts] - json encoded percentile values indicating the - /// number of lines of code in all of the files in a single library cycle. + /// * [libraryCycleLineCounts] - JSON-encoded percentile values indicating the + /// number of lines of code in all of the files in a single library cycle. /// - /// [contextWorkspaceType] - json encoded list with the total number of - /// workspaces of each type for all of the contexts: - /// - index 0: Blaze, GN or other workspace count - /// - index 1: Package workspace count - /// - index 2: Pub workspace count + /// * [contextWorkspaceType] - JSON-encoded list with the total number of + /// workspaces of each type for all of the contexts: + /// * index 0: Blaze, GN or other workspace count + /// * index 1: Package workspace count + /// * index 2: Pub workspace count /// - /// [numberOfPackagesInWorkspace] - json encoded percentile values for the - /// number of packages in the Pub workspaces. + /// * [numberOfPackagesInWorkspace] - JSON-encoded percentile values for the + /// number of packages in the Pub workspaces. Event.contextStructure({ required int immediateFileCount, required int immediateFileLineCount, @@ -475,12 +474,13 @@ final class Event { /// Event that is emitted when a Dart CLI command has been executed. /// - /// [name] - the name of the command that was executed + /// * [name] - the name of the command that was executed. /// - /// [enabledExperiments] - a set of Dart language experiments enabled when - /// running the command. + /// * [enabledExperiments] - a set of Dart language experiments enabled when + /// running the command. /// - /// [exitCode] - the process exit code set as a result of running the command. + /// * [exitCode] - the process exit code set as a result of running the + /// command. Event.dartCliCommandExecuted({ required String name, required String enabledExperiments, @@ -556,19 +556,19 @@ final class Event { /// Event that contains the results for a specific doctor validator. /// - /// [validatorName] - the name for the doctor validator. + /// * [validatorName] - the name for the doctor validator. /// - /// [result] - the final result for a specific doctor validator. + /// * [result] - the final result for a specific doctor validator. /// - /// [partOfGroupedValidator] - `true` indicates that this validator belongs + /// * [partOfGroupedValidator] - `true` indicates that this validator belongs /// to a grouped validator. /// - /// [doctorInvocationId] - epoch formatted timestamp that can be used in + /// * [doctorInvocationId] - epoch formatted timestamp that can be used in /// combination with the client ID in GA4 to group the validators that /// ran in one doctor invocation. /// - /// [statusInfo] - optional description of the result from the - /// doctor validator. + /// * [statusInfo] - optional description of the result from the doctor + /// validator. Event.doctorValidatorResult({ required String validatorName, required String result, @@ -589,8 +589,8 @@ final class Event { /// Generic event for all dash tools to use when encountering an /// exception that we want to log. /// - /// [exception] - string representation of the exception that occured. - /// [data] - optional structured data to include with the exception event. + /// * [exception] - string representation of the exception that occured. + /// * [data] - optional structured data to include with the exception event. Event.exception({ required String exception, Map data = const {}, @@ -605,17 +605,17 @@ final class Event { /// Event that is emitted from the flutter tool when a build invocation /// has been run by the user. /// - /// [label] - the identifier for that build event. + /// * [label] - the identifier for that build event. /// - /// [buildType] - the identifier for which platform the build event was for, + /// * [buildType] - the identifier for which platform the build event was for, /// examples include "ios", "gradle", and "web". /// - /// [command] - the command that was ran to kick off the build event. + /// * [command] - the command that was ran to kick off the build event. /// - /// [settings] - the settings used for the build event related to + /// * [settings] - the settings used for the build event related to /// configuration and other relevant build information. /// - /// [error] - short identifier used to explain the cause of the build error, + /// * [error] - short identifier used to explain the cause of the build error, /// stacktraces should not be passed to this parameter. Event.flutterBuildInfo({ required String label, @@ -637,14 +637,15 @@ final class Event { /// Provides information about which flutter command was run /// and whether it was successful. /// - /// [commandPath] - information about the flutter command, such as "build/apk". + /// * [commandPath] - information about the flutter command, such as + /// "build/apk". /// - /// [result] - if the command failed or succeeded. + /// * [result] - if the command failed or succeeded. /// - /// [commandHasTerminal] - boolean indicating if the flutter command ran with - /// a terminal. + /// * [commandHasTerminal] - Boolean indicating if the flutter command ran + /// with a terminal. /// - /// [maxRss] - maximum resident size for a given flutter command. + /// * [maxRss] - maximum resident size for a given flutter command. Event.flutterCommandResult({ required String commandPath, required String result, @@ -673,14 +674,14 @@ final class Event { }, ); - /// Provides information about the results of a wasm dry run including public + /// Provides information about the results of a WASM dry run including public /// package names and versions. /// - /// [result] - dry run result summary + /// * [result] - dry run result summary. /// - /// [exitCode] - the exit code of the dry run. + /// * [exitCode] - the exit code of the dry run. /// - /// [findingsInfo] - findings for the dry run, keyed by finding index. + /// * [findingsInfo] - findings for the dry run, keyed by finding index. /// The value is a comma-separated string containing flags and package /// information in `name:version` format, e.g., `'-ph,pkg1:1.2.3'`. Event.flutterWasmDryRunPackage({ @@ -701,38 +702,39 @@ final class Event { /// /// This event is not sent if a project has no plugins. /// - /// [platform] - The project's platform. Either 'ios' or 'macos'. + /// * [platform] - The project's platform. Either 'ios' or 'macos'. /// - /// [isModule] - whether the project is an add-to-app Flutter module. + /// * [isModule] - whether the project is an add-to-app Flutter module. /// - /// [swiftPackageManagerUsable] - if `true`, Swift Package Manager can be used - /// for the project's plugins if any are Swift Package Manager compatible. + /// * [swiftPackageManagerUsable] - if `true`, Swift Package Manager can be + /// used for the project's plugins if any are Swift Package Manager + /// compatible. /// - /// [swiftPackageManagerFeatureEnabled] - if the Swift Package Manager feature - /// flag is on. If false, Swift Package Manager is off for all projects on - /// the development machine. + /// * [swiftPackageManagerFeatureEnabled] - if the Swift Package Manager + /// feature flag is on. If false, Swift Package Manager is off for all + /// projects on the development machine. /// - /// [projectDisabledSwiftPackageManager] - if the project's .pubspec has - /// `disable-swift-package-manager: true`. This turns off Swift Package - /// Manager for a single project. + /// * [projectDisabledSwiftPackageManager] - if the project's .pubspec has + /// `disable-swift-package-manager: true`. This turns off Swift Package + /// Manager for a single project. /// - /// [projectHasSwiftPackageManagerIntegration] - if the Xcode project has - /// Swift Package Manager integration. If `false`, the project needs to be - /// migrated. + /// * [projectHasSwiftPackageManagerIntegration] - if the Xcode project has + /// Swift Package Manager integration. If `false`, the project needs to be + /// migrated. /// - /// [pluginCount] - the total number of plugins for this project. A plugin - /// can be compatible with both Swift Package Manager and CocoaPods. Plugins - /// compatible with both will be counted in both [swiftPackageCount] and - /// [podCount]. Swift Package Manager was used to inject all plugins if - /// [pluginCount] is equal to [swiftPackageCount]. + /// * [pluginCount] - the total number of plugins for this project. A plugin + /// can be compatible with both Swift Package Manager and CocoaPods. Plugins + /// compatible with both will be counted in both [swiftPackageCount] and + /// [podCount]. Swift Package Manager was used to inject all plugins if + /// [pluginCount] is equal to [swiftPackageCount]. /// - /// [swiftPackageCount] - the number of plugins compatible with Swift Package - /// Manager. This is less than or equal to [pluginCount]. If - /// [swiftPackageCount] is less than [pluginCount], the project uses CocoaPods - /// to inject plugins. + /// * [swiftPackageCount] - the number of plugins compatible with Swift + /// Package Manager. This is less than or equal to [pluginCount]. If + /// [swiftPackageCount] is less than [pluginCount], the project uses + /// CocoaPods to inject plugins. /// - /// [podCount] - the number of plugins compatible with CocoaPods. This is less - /// than or equal to [podCount]. + /// * [podCount] - the number of plugins compatible with CocoaPods. This is + /// less than or equal to [podCount]. Event.flutterInjectDarwinPlugins({ required String platform, required bool isModule, @@ -762,7 +764,7 @@ final class Event { ); // TODO: eliasyishak, remove this or replace once we have a generic - // timing event that can be used by potentially more than one DashTool + // timing event that can be used by potentially more than one DashTool. Event.hotReloadTime({required int timeMs}) : this._( eventName: DashEvent.hotReloadTime, @@ -826,9 +828,9 @@ final class Event { /// Event that is emitted periodically to report the number of times each lint /// has been enabled. /// - /// [count] - the number of options files in which the lint was enabled. + /// * [count] - the number of options files in which the lint was enabled. /// - /// [name] - the name of the lint. + /// * [name] - the name of the lint. Event.lintUsageCount({ required int count, required String name, @@ -843,16 +845,16 @@ final class Event { /// Event that is emitted periodically to report the amount of memory being /// used. /// - /// [rss] - the resident set size in megabytes. + /// * [rss] - the resident set size in megabytes. /// /// If this is not the first time memory has been reported for this session, /// then the following parameters should be included: /// - /// [periodSec] - the number of seconds since the last memory usage data was - /// gathered. + /// * [periodSec] - the number of seconds since the last memory usage data was + /// gathered. /// - /// [mbPerSec] - the number of megabytes of memory that were added or - /// subtracted per second since the last report. + /// * [mbPerSec] - the number of megabytes of memory that were added or + /// subtracted per second since the last report. Event.memoryInfo({ required int rss, int? periodSec, @@ -869,13 +871,13 @@ final class Event { /// Event that is emitted periodically to report the performance of analyzer /// plugins when handling requests. /// - /// [duration] - JSON-encoded percentile values indicating how long it took - /// from the time the request was sent to the plugin until the response - /// was processed by the server. + /// * [duration] - JSON-encoded percentile values indicating how long it took + /// from the time the request was sent to the plugin until the response + /// was processed by the server. /// - /// [method] - the name of the request sent to the plugin. + /// * [method] - the name of the request sent to the plugin. /// - /// [pluginId] - the ID of the plugin whose performance is being reported. + /// * [pluginId] - the ID of the plugin whose performance is being reported. Event.pluginRequest({ required String duration, required String method, @@ -921,13 +923,13 @@ final class Event { /// Event that is emitted periodically to report the frequency with which a /// given _legacy_ analyzer plugin has been used. /// - /// [count] - the number of times plugins usage was changed, which will always - /// be at least one. + /// * [count] - the number of times plugins usage was changed, which will + /// always be at least one. /// - /// [enabled] - JSON-encoded percentile values indicating the number of - /// analysis contexts for which the plugin was enabled. + /// * [enabled] - JSON-encoded percentile values indicating the number of + /// contexts for which the plugin was enabled. /// - /// [pluginId] - the ID of the plugin associated with the data. + /// * [pluginId] - the ID of the plugin associated with the data. Event.pluginUse({ required int count, required String enabled, @@ -943,12 +945,12 @@ final class Event { /// Event that is emitted when `pub get` is run. /// - /// [packageName] - the name of the package that was resolved + /// * [packageName] - the name of the package that was resolved. /// - /// [version] - the resolved, canonicalized package version + /// * [version] - the resolved, canonicalized package version. /// - /// [dependencyType] - the kind of dependency that resulted in this package - /// being resolved (e.g., direct, transitive, or dev dependencies). + /// * [dependencyType] - the kind of dependency that resulted in this package + /// being resolved (e.g., direct, transitive, or dev dependencies). Event.pubGet({ required String packageName, required String version, @@ -965,19 +967,20 @@ final class Event { /// Event that is emitted on shutdown to report information about the whole /// session for which the analysis server was running. /// - /// [clientId] - the id of the client that started the server. + /// * [clientId] - the id of the client that started the server. /// - /// [clientVersion] - the version of the client that started the server. + /// * [clientVersion] - the version of the client that started the server. /// - /// [duration] - the number of milliseconds for which the server was running. + /// * [duration] - the number of milliseconds for which the server was + /// running. /// - /// [flags] - the flags passed to the analysis server on startup, without any - /// argument values for flags that take values, or an empty string if - /// there were no arguments. + /// * [flags] - the flags passed to the analysis server on startup, without + /// any argument values for flags that take values, or an empty string if + /// there were no arguments. /// - /// [parameters] - the names of the parameters passed to the `initialize` - /// request, or an empty string if the `initialize` request was not sent - /// or if there were no parameters given. + /// * [parameters] - the names of the parameters passed to the `initialize` + /// request, or an empty string if the `initialize` request was not sent + /// or if there were no parameters given. Event.serverSession({ required String clientId, required String clientVersion, @@ -998,10 +1001,10 @@ final class Event { /// Event that is emitted periodically to report the number of times the /// severity of a diagnostic was changed in the analysis options file. /// - /// [diagnostic] - the name of the diagnostic whose severity was changed. + /// * [diagnostic] - the name of the diagnostic whose severity was changed. /// - /// [adjustments] - json encoded map of severities to the number of times the - /// diagnostic's severity was changed to the key. + /// * [adjustments] - JSON-encoded map of severities to the number of times + /// the diagnostic's severity was changed to the key. Event.severityAdjustment({ required String diagnostic, required String adjustments, @@ -1016,10 +1019,10 @@ final class Event { /// Event that is emitted by `package:unified_analytics` when /// the user takes action when prompted with a survey. /// - /// [surveyId] - the unique id for a given survey. + /// * [surveyId] - the unique id for a given survey. /// - /// [status] - the string identifier for a given `SurveyButton` under the - /// `action` field. + /// * [status] - the string identifier for a given `SurveyButton` under the + /// `action` field. Event.surveyAction({ required String surveyId, required String status, @@ -1031,10 +1034,10 @@ final class Event { }, ); - /// Event that is emitted by `package:unified_analytics` when the - /// user has been shown a survey. + /// Event that is emitted by `package:unified_analytics` when the user has + /// been shown a survey. /// - /// [surveyId] - the unique id for a given survey. + /// * [surveyId] - the unique ID for a given survey. Event.surveyShown({ required String surveyId, }) : this._( @@ -1046,16 +1049,16 @@ final class Event { /// Event that records how long a given process takes to complete. /// - /// [workflow] - the overall process or command being run, for example + /// * [workflow] - the overall process or command being run, for example /// "build" is a possible value for the flutter tool. /// - /// [variableName] - the specific variable being measured, for example + /// * [variableName] - the specific variable being measured, for example /// "gradle" would indicate how long it took for a gradle build under the /// "build" [workflow]. /// - /// [elapsedMilliseconds] - how long the process took in milliseconds. + /// * [elapsedMilliseconds] - how long the process took in milliseconds. /// - /// [label] - an optional field that can be used for further filtering, for + /// * [label] - an optional field that can be used for further filtering, for /// example, "success" can indicate how long a successful build in gradle /// takes to complete. Event.timing({ @@ -1125,13 +1128,13 @@ final class Event { final keySetB = b.keys.toSet(); final intersection = keySetA.intersection(keySetB); - // Ensure that the keys are the same for each object + // Ensure that the keys are the same for each object. if (intersection.length != keySetA.length || intersection.length != keySetB.length) { return false; } - // Ensure that each of the key's values are the same + // Ensure that each of the key's values are the same. for (final key in a.keys) { if (a[key] != b[key]) return false; } @@ -1148,8 +1151,8 @@ final class Event { try { final jsonMap = jsonDecode(json) as Map; - // Ensure that eventName is a string and a valid label and - // eventData is a nested object + // Ensure that `eventName` is a string and a valid label and `eventData` + // is a nested object. if (jsonMap case { 'eventName': final String eventName, @@ -1179,6 +1182,6 @@ final class Event { abstract base class CustomMetrics { /// Converts the custom metrics data to a [Map] object. /// - /// This must be a JSON encodable [Map]. + /// This must be a JSON-encodable [Map]. Map toMap(); } From fe22e2793f9a37d68f7587a8439f96d77ed554e8 Mon Sep 17 00:00:00 2001 From: Sam Rawlins Date: Thu, 18 Dec 2025 13:37:40 -0800 Subject: [PATCH 2/3] nit --- pkgs/unified_analytics/lib/src/event.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/unified_analytics/lib/src/event.dart b/pkgs/unified_analytics/lib/src/event.dart index daa813c65..d4af3ad78 100644 --- a/pkgs/unified_analytics/lib/src/event.dart +++ b/pkgs/unified_analytics/lib/src/event.dart @@ -734,7 +734,7 @@ final class Event { /// CocoaPods to inject plugins. /// /// * [podCount] - the number of plugins compatible with CocoaPods. This is - /// less than or equal to [podCount]. + /// less than or equal to [pluginCount]. Event.flutterInjectDarwinPlugins({ required String platform, required bool isModule, From 5a8c3faf007adac4fea500d758b621dae9382d57 Mon Sep 17 00:00:00 2001 From: Sam Rawlins Date: Thu, 18 Dec 2025 13:38:42 -0800 Subject: [PATCH 3/3] 80-columns --- pkgs/unified_analytics/lib/src/event.dart | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/unified_analytics/lib/src/event.dart b/pkgs/unified_analytics/lib/src/event.dart index d4af3ad78..71899586d 100644 --- a/pkgs/unified_analytics/lib/src/event.dart +++ b/pkgs/unified_analytics/lib/src/event.dart @@ -218,8 +218,8 @@ final class Event { /// If the method is `workspace/didChangeWorkspaceFolders`, then the following /// parameters should be included: /// - /// * [added] - JSON-encoded percentile values indicating the number of folders - /// that were added. + /// * [added] - JSON-encoded percentile values indicating the number of + /// folders that were added. /// /// * [removed] - JSON-encoded percentile values indicating the number of /// folders that were removed. @@ -244,7 +244,6 @@ final class Event { /// /// * [files] - JSON-encoded percentile values indicating the number of /// priority files. - /// Event.clientRequest({ required String duration, required String latency,