@@ -448,6 +448,7 @@ function transformSchemaObjectCore(schemaObject: SchemaObject, options: Transfor
448
448
if (
449
449
( "properties" in schemaObject && schemaObject . properties && Object . keys ( schemaObject . properties ) . length ) ||
450
450
( "additionalProperties" in schemaObject && schemaObject . additionalProperties ) ||
451
+ ( "patternProperties" in schemaObject && schemaObject . patternProperties ) ||
451
452
( "$defs" in schemaObject && schemaObject . $defs )
452
453
) {
453
454
// properties
@@ -547,13 +548,22 @@ function transformSchemaObjectCore(schemaObject: SchemaObject, options: Transfor
547
548
) ;
548
549
}
549
550
550
- // additionalProperties
551
- if ( schemaObject . additionalProperties || options . ctx . additionalProperties ) {
551
+ // additionalProperties / patternProperties
552
+ if ( schemaObject . additionalProperties || options . ctx . additionalProperties || schemaObject . patternProperties ) {
552
553
const hasExplicitAdditionalProperties =
553
554
typeof schemaObject . additionalProperties === "object" && Object . keys ( schemaObject . additionalProperties ) . length ;
554
- const addlType = hasExplicitAdditionalProperties
555
- ? transformSchemaObject ( schemaObject . additionalProperties as SchemaObject , options )
556
- : UNKNOWN ;
555
+ const hasExplicitPatternProperties =
556
+ typeof schemaObject . patternProperties === "object" && Object . keys ( schemaObject . patternProperties ) . length ;
557
+ const addlTypes = [ ] ;
558
+ if ( hasExplicitAdditionalProperties ) {
559
+ addlTypes . push ( transformSchemaObject ( schemaObject . additionalProperties as SchemaObject , options ) ) ;
560
+ }
561
+ if ( hasExplicitPatternProperties ) {
562
+ for ( const [ _ , v ] of getEntries ( schemaObject . patternProperties ?? { } , options . ctx ) ) {
563
+ addlTypes . push ( transformSchemaObject ( v , options ) ) ;
564
+ }
565
+ }
566
+ const addlType = addlTypes . length === 0 ? UNKNOWN : tsUnion ( addlTypes ) ;
557
567
return tsIntersection ( [
558
568
...( coreObjectType . length ? [ ts . factory . createTypeLiteralNode ( coreObjectType ) ] : [ ] ) ,
559
569
ts . factory . createTypeLiteralNode ( [
0 commit comments