in Sources/PackageCollections/API.swift [57:237]
func addCollection(
_ source: PackageCollectionsModel.CollectionSource,
order: Int?,
trustConfirmationProvider: ((PackageCollectionsModel.Collection, @escaping (Bool) -> Void) -> Void)?,
callback: @escaping (Result<PackageCollectionsModel.Collection, Error>) -> Void
)
/// Removes a package collection.
///
/// - Parameters:
/// - source: The package collection's source
/// - callback: The closure to invoke with the result becomes available
func removeCollection(
_ source: PackageCollectionsModel.CollectionSource,
callback: @escaping (Result<Void, Error>) -> Void
)
/// Moves a package collection to a different order.
///
/// - Parameters:
/// - source: The source of the `PackageCollection` to be reordered
/// - order: The new order that the `PackageCollection` should be positioned after the move
/// - callback: The closure to invoke with the result becomes available
func moveCollection(
_ source: PackageCollectionsModel.CollectionSource,
to order: Int,
callback: @escaping (Result<Void, Error>) -> Void
)
/// Updates settings of a `PackageCollection` source (e.g., if it is trusted or not).
///
/// - Parameters:
/// - source: The `PackageCollection` source to be updated
/// - callback: The closure to invoke when result becomes available
func updateCollection(
_ source: PackageCollectionsModel.CollectionSource,
callback: @escaping (Result<PackageCollectionsModel.Collection, Error>) -> Void
)
/// Returns information about a package collection. The collection is not required to be in the configured list. If
/// not found locally, the collection will be fetched from the source.
///
/// - Parameters:
/// - source: The package collection's source
/// - callback: The closure to invoke with the `PackageCollection`
func getCollection(
_ source: PackageCollectionsModel.CollectionSource,
callback: @escaping (Result<PackageCollectionsModel.Collection, Error>) -> Void
)
// MARK: - Package APIs
/// Returns metadata for the package identified by the given `PackageReference`, along with the
/// identifiers of `PackageCollection`s where the package is found.
///
/// A failure is returned if the package is not found.
///
/// - Parameters:
/// - reference: The package reference
/// - callback: The closure to invoke when result becomes available
// deprecated 9/21
@available(*, deprecated, message: "use getPackageMetadata(identity:) instead")
func getPackageMetadata(
_ reference: PackageReference,
callback: @escaping (Result<PackageCollectionsModel.PackageMetadata, Error>) -> Void
)
/// Returns metadata for the package identified by the given `PackageReference`, along with the
/// identifiers of `PackageCollection`s where the package is found.
///
/// A failure is returned if the package is not found.
///
/// - Parameters:
/// - reference: The package reference
/// - collections: Optional. If specified, only look for package in these collections. Data from the most recently
/// processed collection will be used.
/// - callback: The closure to invoke when result becomes available
// deprecated 9/21
@available(*, deprecated, message: "use getPackageMetadata(identity:) instead")
func getPackageMetadata(
_ reference: PackageReference,
collections: Set<PackageCollectionsModel.CollectionIdentifier>?,
callback: @escaping (Result<PackageCollectionsModel.PackageMetadata, Error>) -> Void
)
/// Returns metadata for the package identified by the given `PackageIdentity`, along with the
/// identifiers of `PackageCollection`s where the package is found.
///
/// A failure is returned if the package is not found.
///
/// - Parameters:
/// - identity: The package identity
/// - location: The package location (optional for deduplication)
/// - callback: The closure to invoke when result becomes available
func getPackageMetadata(
identity: PackageIdentity,
location: String?,
callback: @escaping (Result<PackageCollectionsModel.PackageMetadata, Error>) -> Void
)
/// Returns metadata for the package identified by the given `PackageIdentity`, along with the
/// identifiers of `PackageCollection`s where the package is found.
///
/// A failure is returned if the package is not found.
///
/// - Parameters:
/// - identity: The package identity
/// - location: The package location (optional for deduplication)
/// - collections: Optional. If specified, only look for package in these collections. Data from the most recently
/// processed collection will be used.
/// - callback: The closure to invoke when result becomes available
func getPackageMetadata(
identity: PackageIdentity,
location: String?,
collections: Set<PackageCollectionsModel.CollectionIdentifier>?,
callback: @escaping (Result<PackageCollectionsModel.PackageMetadata, Error>) -> Void
)
/// Lists packages from the specified collections.
///
/// - Parameters:
/// - collections: Optional. If specified, only packages in these collections are included.
/// - callback: The closure to invoke when result becomes available
func listPackages(
collections: Set<PackageCollectionsModel.CollectionIdentifier>?,
callback: @escaping (Result<PackageCollectionsModel.PackageSearchResult, Error>) -> Void
)
// MARK: - Target (Module) APIs
/// List all known targets.
///
/// A target name may be found in different packages and/or different versions of a package, and a package
/// may belong to multiple package collections. This API's result items will be consolidated by target then package,
/// with the package's versions list filtered to only include those that contain the target.
///
/// - Parameters:
/// - collections: Optional. If specified, only list targets within these collections.
/// - callback: The closure to invoke when result becomes available
func listTargets(
collections: Set<PackageCollectionsModel.CollectionIdentifier>?,
callback: @escaping (Result<PackageCollectionsModel.TargetListResult, Error>) -> Void
)
// MARK: - Search APIs
/// Finds and returns packages that match the query.
///
/// If applicable, for example when we search by package name which might change between versions,
/// the versions list in the result will be filtered to only include those matching the query.
///
/// - Parameters:
/// - query: The search query
/// - collections: Optional. If specified, only search within these collections.
/// - callback: The closure to invoke when result becomes available
func findPackages(
_ query: String,
collections: Set<PackageCollectionsModel.CollectionIdentifier>?,
callback: @escaping (Result<PackageCollectionsModel.PackageSearchResult, Error>) -> Void
)
/// Finds targets by name and returns the corresponding packages.
///
/// This API's result items will be consolidated by target then package, with the
/// package's versions list filtered to only include those that contain the target.
///
/// - Parameters:
/// - query: The search query
/// - searchType: Optional. Target names must either match exactly or contain the prefix.
/// For more flexibility, use the `findPackages` API instead.
/// - collections: Optional. If specified, only search within these collections.
/// - callback: The closure to invoke when result becomes available
func findTargets(
_ query: String,
searchType: PackageCollectionsModel.TargetSearchType?,
collections: Set<PackageCollectionsModel.CollectionIdentifier>?,
callback: @escaping (Result<PackageCollectionsModel.TargetSearchResult, Error>) -> Void
)
}
public enum PackageCollectionError: Equatable, Error {