Latihan 1 dari materi Remote Debugging di Debugging — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi dua function di kode awal. Data, pemanggilan, dan enam console.log di bawahnya sudah ada, biarkan begitu.
createSourceMap(mappings): mappings berisi object { minLine, minCol, origFile, origLine, origCol }. Kembalikan object yang punya method resolve(minLine, minCol):
Cari pemetaan yang minLinedanminCol-nya sama persis.
Gak ketemu: kembalikan null (bukan pemetaan terdekat, bukan undefined).
formatStackTrace(frames, sourceMap): frames berisi { fn, file, line, col } (posisi di bundle). Untuk tiap frame, panggil sourceMap.resolve(frame.line, frame.col), lalu kembalikan array string berpola fn (file:line:col). Kalau resolve mengembalikan null, pakai file, line, dan col milik frame itu sendiri.
Output-nya harus persis enam baris ini, berurutan:
auth.ts
45
login.ts
null
validateUser (auth.ts:45:2)
handleLogin (login.ts:103:4)
Ada juga cek dengan pemetaan lain: resolve(3, 7) harus ketemu, dan resolve(3, 8) di pemetaan yang sama harus null.
Hint
Source map adalah tabel: posisi di bundle (baris, kolom) menunjuk ke posisi di file asli. resolve cuma menjawab posisi yang ada persis di tabel, selain itu null.
createSourceMap mengembalikan { resolve(minLine, minCol) { ... } } yang memakai mappings.find dengan dua syarat. formatStackTrace memakai frames.map: resolve dulu, lalu pilih posisi asli atau posisi frame sendiri.