Challenge 1
Expose formatName as the public API.
function formatName(value) { return value.trim(); }
Press Ctrl⌘Enter to check your answer
Practice focused APIs, dependency injection, composition roots, adapters, state ownership, and lifecycle boundaries.
Challenge 1
function formatName(value) { return value.trim(); }
Press Ctrl⌘Enter to check your answer
Challenge 2
export function run(logger) {
logger("started");
}
Press Ctrl⌘Enter to check your answer
Challenge 3
const repository = ;
const feature = createFeature({ repository });
Press Ctrl⌘Enter to check your answer
Challenge 4
return { (value) { storage.setItem("value", JSON.stringify(value)); } };
Press Ctrl⌘Enter to check your answer
Challenge 5
export function total(items) {
return ;
}
Press Ctrl⌘Enter to check your answer
Challenge 6
return { start, };
Press Ctrl⌘Enter to check your answer
Challenge 7
let = 0;
export function increment() { count += 1; }
Press Ctrl⌘Enter to check your answer
Challenge 8
export function expiresAt(duration) { return now() + duration; }
Press Ctrl⌘Enter to check your answer