1+ import { EngineMap } from "./engines/engine_map.ts" ;
12import { InvalidArgumentTypesError } from "./errors.ts" ;
23import {
34 AccountApiParameters ,
45 AccountInformation ,
5- AllowArbitraryParams ,
66 BaseResponse ,
7- EngineName ,
87 EngineParameters ,
98 GetBySearchIdParameters ,
109 Locations ,
@@ -71,16 +70,16 @@ const SEARCH_ARCHIVE_PATH = `/searches`;
7170 * });
7271 */
7372export function getJson <
74- E extends EngineName = EngineName ,
75- P1 extends AllowArbitraryParams < EngineParameters < E > > = EngineParameters < E > ,
76- P2 extends AllowArbitraryParams < EngineParameters < E , false > > =
77- EngineParameters < E , false > ,
73+ E extends keyof EngineMap ,
7874> (
7975 ...args :
80- | [ parameters : P1 , callback ?: ( json : BaseResponse < E > ) => void ]
8176 | [
82- engine : string , // intentionally kept as a string to support arbitrary params
83- parameters : P2 ,
77+ parameters : EngineParameters < E > ,
78+ callback ?: ( json : BaseResponse < E > ) => void ,
79+ ]
80+ | [
81+ engine : E | string ,
82+ parameters : EngineParameters < E , false > ,
8483 callback ?: ( json : BaseResponse < E > ) => void ,
8584 ]
8685) : Promise < BaseResponse < E > > {
@@ -89,7 +88,7 @@ export function getJson<
8988 typeof args [ 1 ] === "object"
9089 ) {
9190 const [ engine , parameters , callback ] = args ;
92- const newParameters = { engine , ...parameters } as P1 ;
91+ const newParameters = { ...parameters , engine } as EngineParameters < E > ;
9392 return _getJson ( newParameters , callback ) ;
9493 } else if (
9594 typeof args [ 0 ] === "object" &&
@@ -103,10 +102,9 @@ export function getJson<
103102}
104103
105104async function _getJson <
106- E extends EngineName = EngineName ,
107- P extends AllowArbitraryParams < EngineParameters < E > > = EngineParameters < E > ,
105+ E extends keyof EngineMap ,
108106> (
109- parameters : P ,
107+ parameters : EngineParameters < E > ,
110108 callback ?: ( json : BaseResponse < E > ) => void ,
111109) : Promise < BaseResponse < E > > {
112110 const key = validateApiKey ( parameters . api_key , true ) ;
@@ -156,16 +154,16 @@ async function _getJson<
156154 * getHtml({ engine: "google", api_key: API_KEY, q: "coffee" }, console.log);
157155 */
158156export function getHtml <
159- E extends EngineName = EngineName ,
160- P1 extends AllowArbitraryParams < EngineParameters < E > > = EngineParameters < E > ,
161- P2 extends AllowArbitraryParams < EngineParameters < E , false > > =
162- EngineParameters < E , false > ,
157+ E extends keyof EngineMap ,
163158> (
164159 ...args :
165- | [ parameters : P1 , callback ?: ( html : string ) => void ]
166160 | [
167- engine : string , // intentionally kept as a string to support arbitrary params
168- parameters : P2 ,
161+ parameters : EngineParameters < E > ,
162+ callback ?: ( html : string ) => void ,
163+ ]
164+ | [
165+ engine : E | string ,
166+ parameters : EngineParameters < E , false > ,
169167 callback ?: ( html : string ) => void ,
170168 ]
171169) : Promise < string > {
@@ -174,7 +172,7 @@ export function getHtml<
174172 typeof args [ 1 ] === "object"
175173 ) {
176174 const [ engine , parameters , callback ] = args ;
177- const newParameters = { engine , ...parameters } as P1 ;
175+ const newParameters = { ...parameters , engine } as EngineParameters < E > ;
178176 return _getHtml ( newParameters , callback ) ;
179177 } else if (
180178 typeof args [ 0 ] === "object" &&
@@ -188,10 +186,9 @@ export function getHtml<
188186}
189187
190188async function _getHtml <
191- E extends EngineName = EngineName ,
192- P extends AllowArbitraryParams < EngineParameters < E > > = EngineParameters < E > ,
189+ E extends keyof EngineMap ,
193190> (
194- parameters : P ,
191+ parameters : EngineParameters < E > ,
195192 callback ?: ( html : string ) => void ,
196193) : Promise < string > {
197194 const key = validateApiKey ( parameters . api_key , true ) ;
@@ -233,7 +230,7 @@ async function _getHtml<
233230 * getJsonBySearchId(id, { api_key: API_KEY }, console.log);
234231 */
235232export async function getJsonBySearchId <
236- R extends BaseResponse ,
233+ R extends BaseResponse < keyof EngineMap > ,
237234> (
238235 searchId : string ,
239236 parameters : GetBySearchIdParameters = { } ,
0 commit comments