Giter VIP home page Giter VIP logo

npm-security's Introduction

Running:

This project runs via Docker-compose.

docker-compose build
docker-compose up

Alternatively, you can use regular start, but make sure you have Redis locally (or modify it via .env file).

npm start

Testing:

The project runs tests via Mocha and displays code-coverage using Istanbul NYC. Current test coverage is ~95% of lines and ~90% of functions. I am fully aware that counting solely on these statistics is not the right thing to do, though it is a good ambition to have a high code coverage. The quality of tests is a whole other matter.

Next steps:

We will need to compare the result of the API in order to find which packages and dependencies are vulnerable. We can use the tree structure to traverse and mark the vulnerable packages (and packages that have vulnerable children).
We can also use the flat-hash of vulnerable packages to avoid tree-traversion.

Improvements & Comments:

I have decided to use Redis for caching, since it has sofisticated eviction strategies, meaning we can offload the decision-making process to Redis.
Better and more efficient algorithms caching can be put into place to traverse the dependencies: space complexity can be improved if we avoid saving whole JSONs on Redis.
Better sorting and version choosing can be done in the Version querying service of NPM (instead of just 'sort' and 'filter'. we can cache results, cache versions and invalidate the cache every now and then).

npm-security's People

Contributors

levperavante avatar justlev avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.