@@ -23,7 +23,7 @@ export interface SearchEngine {
2323}
2424
2525/** Available search engines */
26- export const AVAILABLE_SEARCH_ENGINES : Record < string , SearchEngine > = {
26+ export const AVAILABLE_SEARCH_ENGINES = {
2727 google : {
2828 name : "Google" ,
2929 searchUrlBuilder : ( query ) =>
@@ -37,6 +37,45 @@ export const AVAILABLE_SEARCH_ENGINES: Record<string, SearchEngine> = {
3737 return [ ] ;
3838 } ,
3939 } ,
40+ bing : {
41+ name : "Microsoft Bing" ,
42+ searchUrlBuilder : ( query ) =>
43+ `https://www.bing.com/search?q=${ encodeURIComponent ( query ) } ` ,
44+ suggestUrlBuilder : ( query ) =>
45+ `https://www.bing.com/osjson.aspx?query=${ encodeURIComponent ( query ) } ` ,
46+ suggestionParser : ( data ) => {
47+ if ( Array . isArray ( data ) && data . length > 1 && Array . isArray ( data [ 1 ] ) ) {
48+ return data [ 1 ] . map ( ( item : any ) => String ( item ) ) . filter ( Boolean ) ;
49+ }
50+ return [ ] ;
51+ } ,
52+ } ,
53+ yahoo : {
54+ name : "Yahoo!" ,
55+ searchUrlBuilder : ( query ) =>
56+ `https://search.yahoo.com/search?q=${ encodeURIComponent ( query ) } ` ,
57+ suggestUrlBuilder : ( query ) =>
58+ `https://search.yahoo.com/sugg/chrome?output=fxjson&appid=crmas_sfp&command=${ encodeURIComponent ( query ) } ` ,
59+ suggestionParser : ( data ) => {
60+ if ( Array . isArray ( data ) && data . length > 1 && Array . isArray ( data [ 1 ] ) ) {
61+ return data [ 1 ] . map ( ( item : any ) => String ( item ) ) . filter ( Boolean ) ;
62+ }
63+ return [ ] ;
64+ } ,
65+ } ,
66+ duckduckgo : {
67+ name : "DuckDuckGo" ,
68+ searchUrlBuilder : ( query ) =>
69+ `https://duckduckgo.com/?q=${ encodeURIComponent ( query ) } ` ,
70+ suggestUrlBuilder : ( query ) =>
71+ `https://duckduckgo.com/ac/?q=${ encodeURIComponent ( query ) } &type=list` ,
72+ suggestionParser : ( data ) => {
73+ if ( Array . isArray ( data ) && data . length > 1 && Array . isArray ( data [ 1 ] ) ) {
74+ return data [ 1 ] . map ( ( item : any ) => String ( item ) ) . filter ( Boolean ) ;
75+ }
76+ return [ ] ;
77+ } ,
78+ } ,
4079 brave : {
4180 name : "Brave" ,
4281 searchUrlBuilder : ( query ) =>
@@ -46,7 +85,6 @@ export const AVAILABLE_SEARCH_ENGINES: Record<string, SearchEngine> = {
4685 suggestionParser : ( data ) => {
4786 // Google format
4887 if ( Array . isArray ( data ) && data . length > 1 && Array . isArray ( data [ 1 ] ) ) {
49- // biome-ignore lint/suspicious/noExplicitAny: <explanation>
5088 return data [ 1 ] . map ( ( item : any ) => String ( item ) ) . filter ( Boolean ) ;
5189 }
5290 // Brave Format
@@ -60,7 +98,7 @@ export const AVAILABLE_SEARCH_ENGINES: Record<string, SearchEngine> = {
6098 return [ ] ;
6199 } ,
62100 } ,
63- } ;
101+ } as const satisfies Record < string , SearchEngine > ;
64102
65103function calculateRelevanceScore ( result : OmniboxResult , query : string ) : number {
66104 if ( ! query ) return 0 ;
0 commit comments