getVersions method

  1. @Route.get('/api/packages/<name>')
Future<Response> getVersions(
  1. Request req,
  2. String name
)

Implementation

@Route.get('/api/packages/<name>')
Future<shelf.Response> getVersions(shelf.Request req, String name) async {
  var package = await metaStore.queryPackage(name);

  if (package == null) {
    return shelf.Response.found(
        Uri.parse(upstream).resolve('/api/packages/$name').toString());
  }

  package.versions.sort((a, b) {
    return semver.Version.prioritize(
        semver.Version.parse(a.version), semver.Version.parse(b.version));
  });

  var versionMaps =
      package.versions.map((item) => _versionToJson(item, req)).toList();

  return _okWithJson({
    'name': name,
    'latest': versionMaps.last, // TODO: Exclude pre release
    'versions': versionMaps,
  });
}