docs
evals
scenario-1
scenario-10
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
Build a data processing utility that transforms and analyzes user activity logs using method chaining.
Implement a function processActivityLogs(logs) that accepts an array of user activity log objects and returns a processed summary object. The function should:
status field is 'invalid'userId fieldpoints earned across all activitiesEach log object has this structure:
{
userId: string,
activity: string,
points: number,
status: 'valid' | 'invalid'
}The output should be an array of objects with this structure:
{
userId: string,
activityCount: number,
totalPoints: number
}Important: Your solution should use a fluent chaining approach for data transformation rather than multiple intermediate variables.
Input:
const logs = [
{ userId: 'user1', activity: 'login', points: 10, status: 'valid' },
{ userId: 'user2', activity: 'post', points: 50, status: 'valid' },
{ userId: 'user1', activity: 'comment', points: 20, status: 'valid' },
{ userId: 'user3', activity: 'share', points: 5, status: 'invalid' },
{ userId: 'user2', activity: 'like', points: 5, status: 'valid' }
];Expected Output:
[
{ userId: 'user2', activityCount: 2, totalPoints: 55 },
{ userId: 'user1', activityCount: 2, totalPoints: 30 }
]Input:
const logs = [
{ userId: 'user1', activity: 'post', points: 100, status: 'valid' },
{ userId: 'user2', activity: 'post', points: 90, status: 'valid' },
{ userId: 'user3', activity: 'post', points: 80, status: 'valid' },
{ userId: 'user4', activity: 'post', points: 70, status: 'valid' },
{ userId: 'user5', activity: 'post', points: 60, status: 'valid' },
{ userId: 'user6', activity: 'post', points: 50, status: 'valid' },
{ userId: 'user7', activity: 'post', points: 40, status: 'valid' }
];Expected Output:
[
{ userId: 'user1', activityCount: 1, totalPoints: 100 },
{ userId: 'user2', activityCount: 1, totalPoints: 90 },
{ userId: 'user3', activityCount: 1, totalPoints: 80 },
{ userId: 'user4', activityCount: 1, totalPoints: 70 },
{ userId: 'user5', activityCount: 1, totalPoints: 60 }
]Implement the processActivityLogs function here and export it.
Test file for the implementation. Should include the test cases specified above and any additional tests.
Provides utility functions for data transformation and chaining.