| Index: sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart
 | 
| diff --git a/sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart b/sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart
 | 
| index e385ef34a2c0b47ffbaec04fa4c09887f1d8d266..b1a8eb3c30ac464bb47dbab39cc769f80d50a533 100644
 | 
| --- a/sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart
 | 
| +++ b/sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart
 | 
| @@ -123,6 +123,13 @@ class ForeignTransform implements Transform {
 | 
|      }).then(deserializeAsset);
 | 
|    }
 | 
|  
 | 
| +  Future<bool> hasInput(AssetId id) {
 | 
| +    return getInput(id).then((_) => true).catchError((error) {
 | 
| +      if (error is AssetNotFoundException && error.id == id) return false;
 | 
| +      throw error;
 | 
| +    });
 | 
| +  }
 | 
| +
 | 
|    Future<String> readInputAsString(AssetId id, {Encoding encoding}) {
 | 
|      if (encoding == null) encoding = UTF8;
 | 
|      return getInput(id).then((input) => input.readAsString(encoding: encoding));
 | 
| @@ -137,6 +144,10 @@ class ForeignTransform implements Transform {
 | 
|        'output': serializeAsset(output)
 | 
|      });
 | 
|    }
 | 
| +
 | 
| +  void consumePrimary() {
 | 
| +    _call(_port, {'type': 'consumePrimary'});
 | 
| +  }
 | 
|  }
 | 
|  
 | 
|  /// Returns the mirror for the root Object type.
 | 
| @@ -536,6 +547,11 @@ Map _serializeTransform(Transform transform) {
 | 
|          return null;
 | 
|        }
 | 
|  
 | 
| +      if (message['type'] == 'consumePrimary') {
 | 
| +        transform.consumePrimary();
 | 
| +        return null;
 | 
| +      }
 | 
| +
 | 
|        assert(message['type'] == 'log');
 | 
|        var method;
 | 
|        if (message['level'] == 'Info') {
 | 
| 
 |