| Index: mojo/public/dart/third_party/barback/lib/src/package_provider.dart
|
| diff --git a/mojo/public/dart/third_party/barback/lib/src/package_provider.dart b/mojo/public/dart/third_party/barback/lib/src/package_provider.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ce6ee23355e7f5882a88d3d515b2a61057772665
|
| --- /dev/null
|
| +++ b/mojo/public/dart/third_party/barback/lib/src/package_provider.dart
|
| @@ -0,0 +1,49 @@
|
| +// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +library barback.package_provider;
|
| +
|
| +import 'dart:async';
|
| +
|
| +import 'asset/asset.dart';
|
| +import 'asset/asset_id.dart';
|
| +
|
| +/// API for locating and accessing packages on disk.
|
| +///
|
| +/// Implemented by pub and provided to barback so that it isn't coupled
|
| +/// directly to pub.
|
| +abstract class PackageProvider {
|
| + /// The names of all packages that can be provided by this provider.
|
| + ///
|
| + /// This is equal to the transitive closure of the entrypoint package
|
| + /// dependencies.
|
| + Iterable<String> get packages;
|
| +
|
| + /// Loads an asset from disk.
|
| + ///
|
| + /// This should be re-entrant; it may be called multiple times with the same
|
| + /// id before the previously returned future has completed.
|
| + ///
|
| + /// If no asset with [id] exists, the provider should throw an
|
| + /// [AssetNotFoundException].
|
| + Future<Asset> getAsset(AssetId id);
|
| +}
|
| +
|
| +/// A PackageProvider for which some packages are known to be static—that is,
|
| +/// the package has no transformers and its assets won't ever change.
|
| +///
|
| +/// For static packages, rather than telling barback up-front which assets that
|
| +/// package contains via [Barback.updateSources], barback will lazily query the
|
| +/// provider for an asset when it's needed. This is much more efficient.
|
| +abstract class StaticPackageProvider implements PackageProvider {
|
| + /// The names of all static packages provided by this provider.
|
| + ///
|
| + /// This must be disjoint from [packages].
|
| + Iterable<String> get staticPackages;
|
| +
|
| + /// Returns all ids of assets in [package].
|
| + ///
|
| + /// This is used for [Barback.getAllAssets].
|
| + Stream<AssetId> getAllAssetIds(String package);
|
| +}
|
|
|