Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import { getPlayersWithSkillData } from '@/lib/curriculum/server' import { metrics } from '@/lib/metrics' import { createPracticePickerV1Response, type PracticePickerV1Response, } from './contract' /** * Load the versioned practice-picker contract for an authorized viewer. * Authorization and guest-link expiry are inherited from the canonical * parented-player listing inside getPlayersWithSkillData(). */ export async function getPracticePickerV1Data(): Promise<PracticePickerV1Response> { const students = await getPlayersWithSkillData({ measurePayload: false }) const response = createPracticePickerV1Response(students) // Measure the actual bounded object that crosses both the RSC and API boundaries. try { const payloadBytes = new TextEncoder().encode(JSON.stringify(response)).byteLength metrics.practicePicker.payloadSize.observe({ outcome: 'complete' }, payloadBytes) } catch (error) { console.error('[Practice] Failed to measure picker v1 payload size', error) } return response } |