public async Task<IEnumerable<string>> GetLibraryIdsAsync(CancellationToken cancellationToken) { NpmPackageInfo npmPackageInfo = await NpmPackageInfoCache.GetPackageInfoAsync(DisplayName, CancellationToken.None); if (npmPackageInfo != null) { return npmPackageInfo.Versions.Select(semanticVersion => semanticVersion.ToString()).ToArray(); } return Enumerable.Empty<string>(); }
public async Task <IEnumerable <string> > GetLibraryIdsAsync(CancellationToken cancellationToken) { NpmPackageInfo npmPackageInfo = await NpmPackageInfoCache.GetPackageInfoAsync(DisplayName, CancellationToken.None); if (npmPackageInfo != null) { return(npmPackageInfo.Versions .OrderByDescending(v => v) .Select(semanticVersion => LibraryIdToNameAndVersionConverter.Instance.GetLibraryId(DisplayName, semanticVersion.ToString(), UnpkgProvider.IdText)) .ToList()); } return(Enumerable.Empty <string>()); }
public async Task <IEnumerable <string> > GetLibraryVersions(CancellationToken cancellationToken) { NpmPackageInfo npmPackageInfo = await NpmPackageInfoCache.GetPackageInfoAsync(DisplayName, CancellationToken.None); if (npmPackageInfo != null) { return(npmPackageInfo.Versions .OrderByDescending(v => v) .Select(semanticVersion => semanticVersion.ToString()) .ToList()); } return(Enumerable.Empty <string>()); }
public async Task <CompletionSet> GetLibraryCompletionSetAsync(string libraryNameStart, int caretPosition) { CompletionSet completionSet = new CompletionSet { Start = 0, Length = libraryNameStart.Length }; List <CompletionItem> completions = new List <CompletionItem>(); (string name, string version) = LibraryIdToNameAndVersionConverter.Instance.GetLibraryNameAndVersion(libraryNameStart, _provider.Id); // Typing '@' after the library name should have version completion. int at = name.LastIndexOf('@'); name = at > -1 ? name.Substring(0, at) : name; try { // library name completion if (caretPosition < name.Length + 1) { IEnumerable <string> packageNames = await NpmPackageSearch.GetPackageNamesAsync(libraryNameStart, CancellationToken.None); foreach (string packageName in packageNames) { CompletionItem completionItem = new CompletionItem { DisplayText = packageName, InsertionText = packageName, }; completions.Add(completionItem); } completionSet.CompletionType = CompletionSortOrder.AsSpecified; } // library version completion else { completionSet.Start = name.Length + 1; completionSet.Length = version.Length; NpmPackageInfo npmPackageInfo = await NpmPackageInfoCache.GetPackageInfoAsync(name, CancellationToken.None); foreach (SemanticVersion semVersion in npmPackageInfo.Versions) { string versionText = semVersion.ToString(); CompletionItem completionItem = new CompletionItem { DisplayText = versionText, InsertionText = name + "@" + versionText }; completions.Add(completionItem); } completionSet.CompletionType = CompletionSortOrder.Version; } completionSet.Completions = completions; } catch (Exception ex) { _provider.HostInteraction.Logger.Log(ex.ToString(), LogLevel.Error); } return(completionSet); }
public async Task <CompletionSet> GetLibraryCompletionSetAsync(string libraryNameStart, int caretPosition) { var completions = new List <CompletionItem>(); var completionSet = new CompletionSet { Start = 0, Length = 0, Completions = completions }; if (string.IsNullOrEmpty(libraryNameStart)) { // no point in doing the rest of the work, we know it's going to be an empty completion set anyway return(completionSet); } completionSet.Length = libraryNameStart.Length; (string name, string version) = _libraryNamingScheme.GetLibraryNameAndVersion(libraryNameStart); // Typing '@' after the library name should have version completion. try { // library name completion if (caretPosition < name.Length + 1) { IEnumerable <string> packageNames = await NpmPackageSearch.GetPackageNamesAsync(libraryNameStart, CancellationToken.None); foreach (string packageName in packageNames) { var completionItem = new CompletionItem { DisplayText = packageName, InsertionText = packageName, }; completions.Add(completionItem); } completionSet.CompletionType = CompletionSortOrder.AsSpecified; } // library version completion else { completionSet.Start = name.Length + 1; completionSet.Length = version.Length; NpmPackageInfo npmPackageInfo = await NpmPackageInfoCache.GetPackageInfoAsync(name, CancellationToken.None); IList <SemanticVersion> versions = npmPackageInfo.Versions; if (versions != null) { foreach (SemanticVersion semVersion in versions) { string versionText = semVersion.ToString(); var completionItem = new CompletionItem { DisplayText = versionText, InsertionText = name + "@" + versionText }; completions.Add(completionItem); } } completionSet.CompletionType = CompletionSortOrder.Version; } } catch (Exception ex) { _logger.Log(ex.ToString(), LogLevel.Error); } return(completionSet); }
public async Task <CompletionSet> GetLibraryCompletionSetAsync(string libraryNameStart, int caretPosition) { CompletionSet completionSet = new CompletionSet { Start = 0, Length = libraryNameStart.Length }; List <CompletionItem> completions = new List <CompletionItem>(); (string name, string version) = LibraryNamingScheme.Instance.GetLibraryNameAndVersion(libraryNameStart); try { // library name completion if (caretPosition < name.Length + 1) { IEnumerable <string> packageNames = await NpmPackageSearch.GetPackageNamesAsync(libraryNameStart, CancellationToken.None); foreach (string packageName in packageNames) { CompletionItem completionItem = new CompletionItem { DisplayText = packageName, InsertionText = packageName }; completions.Add(completionItem); } } // library version completion else { completionSet.Start = name.Length + 1; completionSet.Length = version.Length; NpmPackageInfo npmPackageInfo = await NpmPackageInfoCache.GetPackageInfoAsync(name, CancellationToken.None); foreach (SemanticVersion semVersion in npmPackageInfo.Versions) { string itemText = name + "@" + semVersion.ToString(); CompletionItem completionItem = new CompletionItem { DisplayText = itemText, InsertionText = itemText }; completions.Add(completionItem); } } completionSet.Completions = completions; } catch (Exception ex) { _provider.HostInteraction.Logger.Log(ex.ToString(), LogLevel.Error); } return(completionSet); }