@@ -154,13 +154,44 @@ async function _getJson<
154154 * // callback
155155 * getHtml({ engine: "google", api_key: API_KEY, q: "coffee" }, console.log);
156156 */
157- export async function getHtml <
157+ export function getHtml <
158+ E extends EngineName = EngineName ,
159+ P1 extends AllowArbitraryParams < EngineParameters < E > > = EngineParameters < E > ,
160+ P2 extends AllowArbitraryParams < EngineParameters < E , false > > =
161+ EngineParameters < E , false > ,
162+ > (
163+ ...args :
164+ | [ parameters : P1 , callback ?: ( html : string ) => void ]
165+ | [
166+ engine : string , // intentionally kept as a string to support arbitrary params
167+ parameters : P2 ,
168+ callback ?: ( html : string ) => void ,
169+ ]
170+ ) : Promise < string > {
171+ if (
172+ typeof args [ 0 ] === "string" &&
173+ typeof args [ 1 ] === "object"
174+ ) {
175+ const [ engine , parameters , callback ] = args ;
176+ return _getHtml ( { ...parameters , engine : engine as E } , callback ) ;
177+ } else if (
178+ typeof args [ 0 ] === "object" &&
179+ ( typeof args [ 1 ] === "undefined" || typeof args [ 1 ] === "function" )
180+ ) {
181+ const [ parameters , callback ] = args ;
182+ return _getHtml ( parameters , callback ) ;
183+ } else {
184+ throw new InvalidArgumentTypesError ( ) ;
185+ }
186+ }
187+
188+ async function _getHtml <
158189 E extends EngineName = EngineName ,
159190 P extends AllowArbitraryParams < EngineParameters < E > > = EngineParameters < E > ,
160191> (
161192 parameters : P ,
162193 callback ?: ( html : string ) => void ,
163- ) {
194+ ) : Promise < string > {
164195 const key = validateApiKey ( parameters . api_key , true ) ;
165196 const timeout = validateTimeout ( parameters . timeout ) ;
166197 const response = await _internals . execute (
0 commit comments