(rows: Record<number, Buffer[]>)
| 201 | } |
| 202 | |
| 203 | function tableStream(rows: Record<number, Buffer[]>) { |
| 204 | // Emit a minimal #~ metadata table stream. |
| 205 | const tableIds = Object.keys(rows) |
| 206 | .map(Number) |
| 207 | .sort((left, right) => left - right); |
| 208 | const validTables = tableIds.reduce((mask, tableId) => mask | (1n << BigInt(tableId)), 0n); |
| 209 | |
| 210 | return Buffer.concat([ |
| 211 | u32(0), // Reserved |
| 212 | bytes(2, 0, 0, 1), // MajorVersion, MinorVersion, HeapSizes, Reserved |
| 213 | u64(validTables), |
| 214 | u64(0n), // Sorted table mask; the parser only needs the valid table mask and row order. |
| 215 | ...tableIds.map(tableId => u32(rows[tableId].length)), |
| 216 | ...tableIds.flatMap(tableId => rows[tableId]), |
| 217 | ]); |
| 218 | } |
| 219 | |
| 220 | function methodSignature(returnType: Buffer, parameters: Buffer[], genericParameterCount = 0) { |
| 221 | return Buffer.concat([ |
no test coverage detected