Deno Documentation: https://docs.deno.com/
Requirements: Here's the table rewritten as a markdown checklist:
-
Upload, Update, Download, and Delete Packages
- The system must allow the upload, update, and download of NPM modules, along with checking the package rating. A user should also be able to delete a package by ID.
-
Debloat Options for Upload and Update
- Remove unnecessary bloat from a package using tree-shaking and/or minification.
-
Rate Packages/New Modules
- The system should compute a rating based on code from phase 1 as well as 2 new metrics:
- Fraction of dependencies pinned to at least a specific major+minor version, e.g., version 2.3.X of the dependency.
- Fraction of project code introduced through pull requests with a code review.
- The system should compute a rating based on code from phase 1 as well as 2 new metrics:
-
Fetch Versions
- Support fetching package versions based on exact or ranged versions.
-
Request Public NPM Packages
- Add a feature to request the ingestion of public npm packages.
- Package must score 0.5 on each of the non-latency metrics from the “rate” behavior. If ingestible, proceed to package upload.
- Add a feature to request the ingestion of public npm packages.
-
Search and Fetch Directory/Package
- Provide a way to search for packages and fetch a directory of packages.
- Search for packages through package name and README.
- Search and fetch packages matching Regex
-
Size Cost Calculation
- Compute the size of a package:
- Both directly and through its dependencies.
- Compute the size of a package:
-
Ratings Fetching
- Fetch the ratings (metrics) for a package.
-
Reset to Default
- Include an option to reset the system to its default state.
-
Accessibility
- Should be accessible through a REST-ful API.
- Should be accessible through an ADA-compliant web browser interface.
-
User Registration, Authentication, and Deletion
- The system must support registering new users, authenticating them via username and secure password, and allowing users to delete their accounts.
-
Permission-based Access Control
- Users must have distinct permissions for uploading, searching, and downloading packages.
-
Token-based Authentication
- Upon successful login, the system should issue an authentication token. This token should remain valid for either 1000 API interactions or 10 hours.
-
Administrator Roles
- The system must allow certain users to be assigned as administrators. Administrators are the only users who can register new users or delete accounts.
-
User Groups
- Users should be able to belong to specific user groups.
-
Sensitive Package Download Restrictions
- The system must prevent unauthorized users from downloading sensitive or secret packages.