@@ -71,19 +71,34 @@ export const parseArrayJsonSchema: Type<
7171 }
7272
7373 let itemsIsPrefixItems = false
74+ let itemsHaveBeenPreProcessed = false
75+
7476 if ( "prefixItems" in jsonSchema ) {
7577 if ( "items" in jsonSchema ) {
7678 if ( "additionalItems" in jsonSchema ) {
7779 throwParseError (
7880 writeJsonSchemaArrayAdditionalItemsAndItemsAndPrefixItemsMessage ( )
7981 )
80- } else jsonSchema . additionalItems = jsonSchema . items
82+ }
83+ if ( Array . isArray ( jsonSchema . items ) ) {
84+ arktypeArraySchema . sequence = {
85+ prefix : [ ...jsonSchema . prefixItems , ...jsonSchema . items ] . map (
86+ item => jsonSchemaToType ( item as never ) . internal
87+ )
88+ }
89+ itemsHaveBeenPreProcessed = true
90+ } else {
91+ jsonSchema . additionalItems = jsonSchema . items
92+ jsonSchema . items = jsonSchema . prefixItems
93+ itemsIsPrefixItems = true
94+ }
95+ } else {
96+ jsonSchema . items = jsonSchema . prefixItems
97+ itemsIsPrefixItems = true
8198 }
82- jsonSchema . items = jsonSchema . prefixItems
83- itemsIsPrefixItems = true
8499 }
85100
86- if ( "items" in jsonSchema ) {
101+ if ( ! itemsHaveBeenPreProcessed && "items" in jsonSchema ) {
87102 if ( Array . isArray ( jsonSchema . items ) ) {
88103 arktypeArraySchema . sequence = {
89104 prefix : jsonSchema . items . map ( item => jsonSchemaToType ( item ) . internal )
0 commit comments