@@ -7,6 +7,7 @@ import { isServiceError } from "@/lib/utils";
77import { withOptionalAuthV2 } from "@/withAuthV2" ;
88import { SearchResponse } from "../search/types" ;
99import { FindRelatedSymbolsRequest , FindRelatedSymbolsResponse } from "./types" ;
10+ import { QueryIR } from '../search/ir' ;
1011
1112// The maximum number of matches to return from the search API.
1213const MAX_REFERENCE_COUNT = 1000 ;
@@ -19,14 +20,37 @@ export const findSearchBasedSymbolReferences = async (props: FindRelatedSymbolsR
1920 revisionName = "HEAD" ,
2021 } = props ;
2122
22- const query = `\\b${ symbolName } \\b rev:${ revisionName } ${ getExpandedLanguageFilter ( language ) } ` ;
23+ const languageFilter = getExpandedLanguageFilter ( language ) ;
24+
25+ const query : QueryIR = {
26+ and : {
27+ children : [
28+ {
29+ regexp : {
30+ regexp : `\\b${ symbolName } \\b` ,
31+ case_sensitive : true ,
32+ file_name : false ,
33+ content : true ,
34+ }
35+ } ,
36+ {
37+ branch : {
38+ pattern : revisionName ,
39+ exact : true ,
40+ }
41+ } ,
42+ languageFilter ,
43+ ]
44+ }
45+ }
2346
2447 const searchResult = await search ( {
48+ queryType : 'ir' ,
2549 query,
26- matches : MAX_REFERENCE_COUNT ,
27- contextLines : 0 ,
28- isCaseSensitivityEnabled : true ,
29- isRegexEnabled : true ,
50+ options : {
51+ matches : MAX_REFERENCE_COUNT ,
52+ contextLines : 0 ,
53+ }
3054 } ) ;
3155
3256 if ( isServiceError ( searchResult ) ) {
@@ -39,27 +63,54 @@ export const findSearchBasedSymbolReferences = async (props: FindRelatedSymbolsR
3963
4064export const findSearchBasedSymbolDefinitions = async ( props : FindRelatedSymbolsRequest ) : Promise < FindRelatedSymbolsResponse | ServiceError > => sew ( ( ) =>
4165 withOptionalAuthV2 ( async ( ) => {
42- const {
43- symbolName,
44- language,
45- revisionName = "HEAD" ,
46- } = props ;
66+ const {
67+ symbolName,
68+ language,
69+ revisionName = "HEAD" ,
70+ } = props ;
4771
48- const query = `sym:\\b${ symbolName } \\b rev:${ revisionName } ${ getExpandedLanguageFilter ( language ) } ` ;
72+ const languageFilter = getExpandedLanguageFilter ( language ) ;
73+
74+ const query : QueryIR = {
75+ and : {
76+ children : [
77+ {
78+ symbol : {
79+ expr : {
80+ regexp : {
81+ regexp : `\\b${ symbolName } \\b` ,
82+ case_sensitive : true ,
83+ file_name : false ,
84+ content : true ,
85+ }
86+ } ,
87+ }
88+ } ,
89+ {
90+ branch : {
91+ pattern : revisionName ,
92+ exact : true ,
93+ }
94+ } ,
95+ languageFilter ,
96+ ]
97+ }
98+ }
4999
50- const searchResult = await search ( {
51- query,
100+ const searchResult = await search ( {
101+ queryType : 'ir' ,
102+ query,
103+ options : {
52104 matches : MAX_REFERENCE_COUNT ,
53105 contextLines : 0 ,
54- isCaseSensitivityEnabled : true ,
55- isRegexEnabled : true ,
56- } ) ;
57-
58- if ( isServiceError ( searchResult ) ) {
59- return searchResult ;
60106 }
107+ } ) ;
108+
109+ if ( isServiceError ( searchResult ) ) {
110+ return searchResult ;
111+ }
61112
62- return parseRelatedSymbolsSearchResponse ( searchResult ) ;
113+ return parseRelatedSymbolsSearchResponse ( searchResult ) ;
63114 } ) ) ;
64115
65116const parseRelatedSymbolsSearchResponse = ( searchResult : SearchResponse ) : FindRelatedSymbolsResponse => {
@@ -89,14 +140,43 @@ const parseRelatedSymbolsSearchResponse = (searchResult: SearchResponse): FindRe
89140}
90141
91142// Expands the language filter to include all variants of the language.
92- const getExpandedLanguageFilter = ( language : string ) => {
143+ const getExpandedLanguageFilter = ( language : string ) : QueryIR => {
93144 switch ( language ) {
94145 case "TypeScript" :
95146 case "JavaScript" :
96147 case "JSX" :
97148 case "TSX" :
98- return `(lang:TypeScript or lang:JavaScript or lang:JSX or lang:TSX)`
149+ return {
150+ or : {
151+ children : [
152+ {
153+ language : {
154+ language : "TypeScript" ,
155+ }
156+ } ,
157+ {
158+ language : {
159+ language : "JavaScript" ,
160+ }
161+ } ,
162+ {
163+ language : {
164+ language : "JSX" ,
165+ }
166+ } ,
167+ {
168+ language : {
169+ language : "TSX" ,
170+ }
171+ } ,
172+ ]
173+ } ,
174+ }
99175 default :
100- return `lang:${ language } `
176+ return {
177+ language : {
178+ language : language ,
179+ } ,
180+ }
101181 }
102182}
0 commit comments