| Index: lib/src/package_graph.dart
|
| diff --git a/lib/src/package_graph.dart b/lib/src/package_graph.dart
|
| index 02ba973bd1b4deeb6f51b06b6ce44b139c07b8bb..b2a3a54f83da2c3eae4a7028f6f606b729442e9f 100644
|
| --- a/lib/src/package_graph.dart
|
| +++ b/lib/src/package_graph.dart
|
| @@ -72,6 +72,34 @@ class PackageGraph {
|
| return _transitiveDependencies[package];
|
| }
|
|
|
| + /// Returns whether [package], or any of its transitive dependencies, have
|
| + /// transformers that run on any of their public assets.
|
| + ///
|
| + /// This is pessimistic; if any package can't be determined to be transformed,
|
| + /// this returns `true`.
|
| + bool isPackageTransformed(String packageName) {
|
| + if (_isIndividualPackageTransformed(packages[packageName])) return true;
|
| +
|
| + return transitiveDependencies(packageName)
|
| + .any(_isIndividualPackageTransformed);
|
| + }
|
| +
|
| + /// Returns whether [package] itself has transformers that run on any of its
|
| + /// public assets.
|
| + bool _isIndividualPackageTransformed(Package package) {
|
| + // If the caller passed in an unknown package name to isPackageTransformed,
|
| + // the package will be null.
|
| + if (package == null) return true;
|
| +
|
| + if (package.name == entrypoint.root.name) {
|
| + return package.pubspec.transformers.isNotEmpty;
|
| + }
|
| +
|
| + return package.pubspec.transformers.any((phase) {
|
| + return phase.any((config) => config.canTransformPublicFiles);
|
| + });
|
| + }
|
| +
|
| /// Returns whether [package] is mutable.
|
| ///
|
| /// A package is considered to be mutable if it or any of its dependencies
|
|
|