@@ -418,35 +418,14 @@ export default async function readPatches(): Promise<{
418418 // Stage 1: Parse all file KDLs into Documents
419419 const documents = await Promise . all ( fileUrls . map ( readPatchDocument ) ) ;
420420
421- // Stage 2: For each document, split main nodes and removals nodes
422- const patchNodeGroups : Node [ ] [ ] = [ ] ;
423- const removalsNodeGroups : Node [ ] [ ] = [ ] ;
424-
425- for ( const doc of documents ) {
426- const mainNodes : Node [ ] = [ ] ;
427- let localRemovalsNodes : Node [ ] = [ ] ;
428- for ( const node of doc ) {
429- if ( node . name === "removals" ) {
430- // Each removals node may itself contain multiple root nodes
431- localRemovalsNodes = localRemovalsNodes . concat ( node . children ) ;
432- } else {
433- mainNodes . push ( node ) ;
434- }
435- }
436- patchNodeGroups . push ( mainNodes ) ;
437- if ( localRemovalsNodes . length > 0 ) {
438- removalsNodeGroups . push ( localRemovalsNodes ) ;
439- }
440- }
441-
442- // Stage 3: Merge all main patches and removals separately using convertKDLNodes
443- const patchObjs = patchNodeGroups . map ( ( nodes ) => convertKDLNodes ( nodes ) ) ;
444- const removalObjs = removalsNodeGroups . map ( ( nodes ) => convertKDLNodes ( nodes ) ) ;
445-
446- const patches = patchObjs . reduce ( ( acc , cur ) => merge ( acc , cur ) , { } ) ;
447- const removalPatches = sanitizeRemovals (
448- removalObjs . reduce ( ( acc , cur ) => merge ( acc , cur ) , { } ) ,
449- ) as DeepPartial < WebIdl > ;
421+ // Stage 2: Group by patches or removals
422+ const merged = documents . flat ( ) ;
423+ const patchNodes = merged . filter ( ( node ) => node . name !== "removals" ) ;
424+ const removalNodes = merged . filter ( ( node ) => node . name === "removals" ) . map ( ( node ) => node . children ) ) . flat ( ) ;
425+
426+ // Stage 3: Convert the nodes for patches and removals respectively
427+ const patches = convertKDLNodes ( patchNodes ) ;
428+ const removalPatches = sanitizeRemovals ( convertKDLNodes ( removalNodes ) ) ;
450429
451430 // Only because we don't use them
452431 removalPatches . mixins = undefined ;
0 commit comments