33 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			33 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								import { parseDef } from "../parseDef.mjs";
							 | 
						||
| 
								 | 
							
								export function parseTupleDef(def, refs) {
							 | 
						||
| 
								 | 
							
								    if (def.rest) {
							 | 
						||
| 
								 | 
							
								        return {
							 | 
						||
| 
								 | 
							
								            type: 'array',
							 | 
						||
| 
								 | 
							
								            minItems: def.items.length,
							 | 
						||
| 
								 | 
							
								            items: def.items
							 | 
						||
| 
								 | 
							
								                .map((x, i) => parseDef(x._def, {
							 | 
						||
| 
								 | 
							
								                ...refs,
							 | 
						||
| 
								 | 
							
								                currentPath: [...refs.currentPath, 'items', `${i}`],
							 | 
						||
| 
								 | 
							
								            }))
							 | 
						||
| 
								 | 
							
								                .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),
							 | 
						||
| 
								 | 
							
								            additionalItems: parseDef(def.rest._def, {
							 | 
						||
| 
								 | 
							
								                ...refs,
							 | 
						||
| 
								 | 
							
								                currentPath: [...refs.currentPath, 'additionalItems'],
							 | 
						||
| 
								 | 
							
								            }),
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    else {
							 | 
						||
| 
								 | 
							
								        return {
							 | 
						||
| 
								 | 
							
								            type: 'array',
							 | 
						||
| 
								 | 
							
								            minItems: def.items.length,
							 | 
						||
| 
								 | 
							
								            maxItems: def.items.length,
							 | 
						||
| 
								 | 
							
								            items: def.items
							 | 
						||
| 
								 | 
							
								                .map((x, i) => parseDef(x._def, {
							 | 
						||
| 
								 | 
							
								                ...refs,
							 | 
						||
| 
								 | 
							
								                currentPath: [...refs.currentPath, 'items', `${i}`],
							 | 
						||
| 
								 | 
							
								            }))
							 | 
						||
| 
								 | 
							
								                .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								//# sourceMappingURL=tuple.mjs.map
							 |