CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-update-notifier

Update notifications for your CLI app

Overall
score

97%

Overview
Eval results
Files

rubric.jsonevals/scenario-6/

{
  "context": "This evaluation assesses the engineer's proficiency in implementing class-based architecture with proper encapsulation in JavaScript. It focuses on the correct use of private fields, public methods, and defensive programming techniques to prevent external modification of internal state.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Class Constructor",
      "description": "The PackageMonitor class has a properly implemented constructor that accepts packageName and currentVersion parameters and stores them appropriately",
      "max_score": 10
    },
    {
      "name": "Private Fields",
      "description": "Internal state (check history, package name, current version) is stored using private fields (e.g., using # syntax like #checkHistory, #packageName, #currentVersion) or through closure-based privacy",
      "max_score": 25
    },
    {
      "name": "recordCheck Method",
      "description": "The recordCheck method correctly stores check information with a timestamp (e.g., using Date.now() or new Date()) and the provided latestVersion in the internal check history",
      "max_score": 15
    },
    {
      "name": "getLastCheck Method",
      "description": "The getLastCheck method returns the most recent check information as an object with timestamp and latestVersion properties, or null if no checks exist",
      "max_score": 10
    },
    {
      "name": "getCheckCount Method",
      "description": "The getCheckCount method returns the correct count of checks performed (e.g., using array.length or a counter)",
      "max_score": 10
    },
    {
      "name": "Read-Only Accessors",
      "description": "The getPackageName and getCurrentVersion methods provide read-only access to package information without exposing internal fields directly",
      "max_score": 10
    },
    {
      "name": "Defensive Copying",
      "description": "The getLastCheck method returns a defensive copy (e.g., using object spread {...obj}, Object.assign, or structured cloning) to prevent external modification of internal state",
      "max_score": 15
    },
    {
      "name": "Encapsulation Integrity",
      "description": "Internal state cannot be accessed or modified from outside the class - no public properties expose the check history or allow direct mutation of stored data",
      "max_score": 5
    }
  ]
}

Install with Tessl CLI

npx tessl i tessl/npm-update-notifier

tile.json