|
1 | 1 | import { Operation } from 'fast-json-patch'
|
2 | 2 | import iterate from 'iterare'
|
3 |
| -import { toPairs } from 'lodash' |
4 | 3 | import { castArray, merge, omit } from 'lodash'
|
| 4 | +import { toPairs } from 'lodash' |
5 | 5 | import hashObject = require('object-hash')
|
6 | 6 | import { Span } from 'opentracing'
|
7 | 7 | import { Observable } from 'rxjs'
|
@@ -40,7 +40,7 @@ import { FileSystem, FileSystemUpdater, LocalFileSystem, RemoteFileSystem } from
|
40 | 40 | import { LanguageClient } from './lang-handler'
|
41 | 41 | import { Logger, LSPLogger } from './logging'
|
42 | 42 | import { InMemoryFileSystem, isTypeScriptLibrary } from './memfs'
|
43 |
| -import { extractDefinitelyTypedPackageName, extractNodeModulesPackageName, PackageJson, PackageManager } from './packages' |
| 43 | +import { DEPENDENCY_KEYS, extractDefinitelyTypedPackageName, extractNodeModulesPackageName, PackageJson, PackageManager } from './packages' |
44 | 44 | import { ProjectConfiguration, ProjectManager } from './project-manager'
|
45 | 45 | import {
|
46 | 46 | CompletionItem,
|
@@ -582,10 +582,13 @@ export class TypeScriptService {
|
582 | 582 | || info.kind !== ts.ScriptElementKind.constructorImplementationElement
|
583 | 583 | ))
|
584 | 584 | // Make proper adjectives
|
585 |
| - .map(mod => ({ |
586 |
| - [ts.ScriptElementKindModifier.ambientModifier]: 'ambient', |
587 |
| - [ts.ScriptElementKindModifier.exportedModifier]: 'exported' |
588 |
| - })[mod] || mod) |
| 585 | + .map(mod => { |
| 586 | + switch (mod) { |
| 587 | + case ts.ScriptElementKindModifier.ambientModifier: return 'ambient' |
| 588 | + case ts.ScriptElementKindModifier.exportedModifier: return 'exported' |
| 589 | + default: return mod |
| 590 | + } |
| 591 | + }) |
589 | 592 | if (modifiers.length > 0) {
|
590 | 593 | kind += ' _(' + modifiers.join(', ') + ')_'
|
591 | 594 | }
|
@@ -714,7 +717,7 @@ export class TypeScriptService {
|
714 | 717 | throw new Error(`Could not find tsconfig for ${packageRootUri}`)
|
715 | 718 | }
|
716 | 719 | // Don't match PackageDescriptor on symbols
|
717 |
| - return this._getSymbolsInConfig(config, omit<Partial<SymbolDescriptor>, Partial<SymbolDescriptor>>(params.symbol!, 'package'), span) |
| 720 | + return this._getSymbolsInConfig(config, omit(params.symbol!, 'package'), span) |
718 | 721 | }))
|
719 | 722 | }
|
720 | 723 | // Regular workspace symbol search
|
@@ -801,7 +804,7 @@ export class TypeScriptService {
|
801 | 804 | * @return Observable of JSON Patches that build a `ReferenceInformation[]` result
|
802 | 805 | */
|
803 | 806 | public workspaceXreferences(params: WorkspaceReferenceParams, span = new Span()): Observable<Operation> {
|
804 |
| - const queryWithoutPackage = omit<Partial<SymbolDescriptor>, Partial<SymbolDescriptor>>(params.query, 'package') |
| 807 | + const queryWithoutPackage = omit(params.query, 'package') |
805 | 808 | const minScore = Math.min(4.75, getPropertyCount(queryWithoutPackage))
|
806 | 809 | return this.isDefinitelyTyped
|
807 | 810 | .mergeMap(isDefinitelyTyped => {
|
@@ -944,10 +947,10 @@ export class TypeScriptService {
|
944 | 947 | repoURL: typeof packageJson.repository === 'object' && packageJson.repository.url || undefined
|
945 | 948 | }
|
946 | 949 | // Collect all dependencies for this package.json
|
947 |
| - return Observable.of<keyof PackageJson>('dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies') |
| 950 | + return Observable.from(DEPENDENCY_KEYS) |
948 | 951 | .filter(key => !!packageJson[key])
|
949 | 952 | // Get [name, version] pairs
|
950 |
| - .mergeMap(key => toPairs(packageJson[key]) as [string, string][]) |
| 953 | + .mergeMap(key => toPairs(packageJson[key])) |
951 | 954 | // Map to DependencyReferences
|
952 | 955 | .map(([name, version]): DependencyReference => ({
|
953 | 956 | attributes: {
|
@@ -986,10 +989,10 @@ export class TypeScriptService {
|
986 | 989 | .mergeMap(uri => this.packageManager.getPackageJson(uri))
|
987 | 990 | // Map package.json to DependencyReferences
|
988 | 991 | .mergeMap(packageJson =>
|
989 |
| - Observable.of<keyof PackageJson>('dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies') |
| 992 | + Observable.from(DEPENDENCY_KEYS) |
990 | 993 | .filter(key => !!packageJson[key])
|
991 | 994 | // Get [name, version] pairs
|
992 |
| - .mergeMap(key => toPairs(packageJson[key]) as [string, string][]) |
| 995 | + .mergeMap(key => toPairs(packageJson[key])) |
993 | 996 | .map(([name, version]): DependencyReference => ({
|
994 | 997 | attributes: {
|
995 | 998 | name,
|
@@ -1458,7 +1461,7 @@ export class TypeScriptService {
|
1458 | 1461 | // Same score for all
|
1459 | 1462 | .map(item => [1, navigateToItemToSymbolInformation(item, program, this.root)] as [number, SymbolInformation])
|
1460 | 1463 | } else {
|
1461 |
| - const queryWithoutPackage = query && omit<Partial<SymbolDescriptor>, Partial<SymbolDescriptor>>(query, 'package') as SymbolDescriptor |
| 1464 | + const queryWithoutPackage = query && omit(query, 'package') as SymbolDescriptor |
1462 | 1465 | // Require at least 2 properties to match (or all if less provided)
|
1463 | 1466 | const minScore = Math.min(2, getPropertyCount(query))
|
1464 | 1467 | const minScoreWithoutPackage = Math.min(2, getPropertyCount(queryWithoutPackage))
|
|
0 commit comments