@@ -354,21 +354,28 @@ export function emitWebIdl(
354
354
}
355
355
356
356
/// Get typescript type using object dom type, object name, and it's associated interface name
357
- function convertDomTypeToTsType ( obj : Browser . Typed ) : string {
357
+ function convertDomTypeToTsTypeBase (
358
+ obj : Browser . Typed ,
359
+ forReturn : boolean ,
360
+ ) : string {
358
361
if ( obj . overrideType ) {
359
362
return obj . nullable ? makeNullable ( obj . overrideType ) : obj . overrideType ;
360
363
}
361
364
if ( ! obj . type )
362
365
throw new Error ( "Missing 'type' field in " + JSON . stringify ( obj ) ) ;
363
- let type = convertDomTypeToTsTypeWorker ( obj ) ;
366
+ let type = convertDomTypeToTsTypeWorker ( obj , forReturn ) ;
364
367
if ( type === "Promise<undefined>" ) {
365
368
type = "Promise<void>" ;
366
369
}
367
370
return obj . nullable ? makeNullable ( type ) : type ;
368
371
}
369
372
373
+ function convertDomTypeToTsType ( obj : Browser . Typed ) {
374
+ return convertDomTypeToTsTypeBase ( obj , false ) ;
375
+ }
376
+
370
377
function convertDomTypeToTsReturnType ( obj : Browser . Typed ) : string {
371
- const type = convertDomTypeToTsType ( obj ) ;
378
+ const type = convertDomTypeToTsTypeBase ( obj , true ) ;
372
379
if ( type === "undefined" ) {
373
380
return "void" ;
374
381
}
@@ -378,8 +385,15 @@ export function emitWebIdl(
378
385
return type ;
379
386
}
380
387
381
- function convertDomTypeToTsTypeWorker ( obj : Browser . Typed ) : string {
388
+ function convertDomTypeToTsTypeWorker (
389
+ obj : Browser . Typed ,
390
+ forReturn : boolean ,
391
+ ) : string {
382
392
function convertBaseType ( ) {
393
+ if ( obj . type === "sequence" && ! forReturn && iterator !== "" ) {
394
+ return "Iterable" ;
395
+ }
396
+
383
397
if ( ! obj . additionalTypes && typeof obj . type === "string" ) {
384
398
return convertDomTypeToTsTypeSimple ( obj . type ) ;
385
399
} else {
@@ -390,7 +404,9 @@ export function emitWebIdl(
390
404
types . push ( ...( obj . additionalTypes ?? [ ] ) . map ( ( t ) => ( { type : t } ) ) ) ;
391
405
392
406
// propagate `any`
393
- const converted = types . map ( convertDomTypeToTsTypeWorker ) ;
407
+ const converted = types . map ( ( t ) =>
408
+ convertDomTypeToTsTypeWorker ( t , forReturn ) ,
409
+ ) ;
394
410
if ( converted . includes ( "any" ) ) {
395
411
return "any" ;
396
412
}
@@ -412,7 +428,7 @@ export function emitWebIdl(
412
428
413
429
const type = convertBaseType ( ) ;
414
430
let subtypeString = arrayify ( obj . subtype )
415
- . map ( convertDomTypeToTsType )
431
+ . map ( ( t ) => convertDomTypeToTsTypeBase ( t , forReturn ) )
416
432
. join ( ", " ) ;
417
433
418
434
if (
@@ -453,9 +469,6 @@ export function emitWebIdl(
453
469
}
454
470
455
471
function convertDomTypeToTsTypeSimple ( objDomType : string ) : string {
456
- if ( objDomType === "sequence" && iterator !== "" ) {
457
- return "Iterable" ;
458
- }
459
472
if ( baseTypeConversionMap . has ( objDomType ) ) {
460
473
return baseTypeConversionMap . get ( objDomType ) ! ;
461
474
}
0 commit comments