npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

generator-j2

v2.1.0

Published

This repo provides a seed for dockerised microservices for Node.js, describing minimum requirements and standards. It is based on our [Seed Microservice](https://bitbucket.org/jeniusdeux/seed-microservice-node).

Downloads

41

Readme

generator-microservice

This repo provides a seed for dockerised microservices for Node.js, describing minimum requirements and standards. It is based on our Seed Microservice.

TODO

  • Include CircleCI
  • Include Codecov

Sample APIs

This project exposes some sample APIs to provide useful starting points for talking to REST backends, SOAP backends, MQ backends and public SaaS providers.

| API | Demonstrates | |-----|--------------| | GET /cards | Fetching cards from a REST backend. | | Get Card PAN | (WIP SOAP backend) | | Change Card Limit | (WIP MQ backend) | | TODO | (WIP Public SaaS API) |

Usage

To run this microservice as an interactive docker container

docker run -it -p 3000:3000 -p 4000:4000 mdlingenium/generator-microservice

To run it in a detached mode use the -d flag

docker run -d -p 3000:3000 -p 4000:4000 mdlingenium/generator-microservice
  • Runs the app server on http://localhost:3000
  • Swagger UI runs on http://localhost:4000/docs
  • Swagger spec runs on http://localhost:4000/swagger.yml

Commands

The following commands are useful when working with this repo:

| Command | Usage | |---------|-------| | make build | Builds mdlingenium/generator-microservice:latest, also created an image with the current short git SHA. | | make test | Runs integration tests. | | make deploy | Pushes to the Docker Hub. Make sure you're logged in with docker login. | | - | - | | yarn | Install dependencies. | | npm start | Start the server in prodution mode. | | npm run dev | Start the server in development mode, watching for changes. | | npm run debug | Start the server with a debugger attached. | | npm test | Run all specs matching the pattern *.spec.js. | | npm test:debug | Run the specs, initially paused in the debugger. | | npm run cov | Generate code coverage reports to the screen and to the ./artifacts/coverage directory. |

Application Structure

├── Dockerfile
├── README.md
├── src
│   └── api                     # Each API endpoint should be in its own folder in the api folder
│       ├── get-cards-spec.js   # Unit tests should be adjacent to the files they test
│       └── get-cards.js
├── config
│   └── index.js                # Setup and configuration that are read from environment variables
├── docker-compose.test.yml     # A Docker compose overlay to run the integration tests
├── docker-compose.yml          # Spins up the server with mocked backend dependencies
├── index.js                    # Main server entrypoint
├── makefile                    # Common build commands for Dockerfiles
├── package.json                # Dependencies, metadata and npm commands
├── test-client
│   └── README.md
└── yarn.lock                   # Ensures deterministic dependency resolution

Setup

Install:

Use Node LTS, which is currently 6:

nvm install --lts
nvm use --lts

Developing

Install dependencies:

yarn

Run in development mode with:

npm run dev

This will monitor the source code, reload on changes and run tests when any files are saved.

To debug the code, run:

npm run debug

This will run the server with the debugger attached, open localhost:123/debug to inspect. The server starts initially paused on the first line.

Capabilities and Frameworks

|Capability|Module| |------------------|-----------| |Server framework|hapi as a web server with inert for static content, vision for templating, joi for validation and boom for errors.| |API documentation|hapi-swagger automatically builds swagger specs from code annotations| |Clients|request for standard HTTP client, soap for SOAP clients, xyz for MQ client| |Logging|bunyan to provide logging formats (timestamp, etc.) and log levels| |Hot reload|backpack | hot reloading is baked in and based on webpack. |Coding standards|eslint with the popular eslint-config-standard standard | |Test framework|mocha as a rest runner, chai for assertations, sinon as the mocking library| |Code coverage|nyc for test coverage reporting|

Coding Guidelines

  • Coding Style: Run npm run lint to check the code.
  • Pull Requests: Any pull requests which drop code coverage are likely to be rejected, test your code!
  • Error Handling: Handlers should catch exceptions and use boom. Normal functions should throw exceptions or use error callbacks if they are async.
  • Data Model: Data received from the client should be validated, sanitised and new objects created before passing over to the backend.
  • Business Logic: If writing a fair amount of business logic that should be unit tested, you should write the code in a modular way that can easily be unit tested.

Healthchecks

The service exposes a healthcheck API at /healthcheck, with the following payload:

{
  "status": "ok",
  "version": {current project version extracted from package.json}
}

Testing

Unit Tests

The unit tests are all kept adjacent to the files which they test.

Tests will run automatically when the project is run with npm run dev. To manually run the in-proc unit tests, run:

npm test

This will run mocha, executing tests in any file which matches the pattern *.spec.js.

Debugging Tests

The easiest way to debug tests is to first make sure that only the test in question is running, use the only trick and add a 'debugger' statement:

describe('Some fixture', () => {
  it.only('should do something' => {
    //  Only this test'll run....
  });
});

Now quickly spin up a debugger:

$ npm run test:debug
Debugger listening on port 9229.
Warning: This is an experimental feature and could change at any time.
To start debugging, open the following URL in Chrome:
    chrome-devtools://devtools/remote/serve_file/@60cd6e859b9f557d2312f5bf532f6aec5f284980/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/249e5c8e-a3aa-4200-8a93-b499da24d9be
Debugger attached.

Your test files will not all be shown till the mocha function runs, so you might need to continue in the debugger till your hit your debugger statement.

Integration Tests

Integration tests are in the test-client folder, these tests will test this service and it's mocked dependencies end to end. Integration tests can be run with:

docker-compose -f docker-compose.yml -f docker-compose.test.yml

This spins up the server, mock backend and test client in the test-client/ folder and runs integration tests against the system.

Code Coverage

Code coverage reports can be generated with:

npm run cov

Reports are written to the screen and to the artifacts/coverage directory.

Healthchecks

This service exposes a basic healthcheck at /healthcheck:


GET /healthcheck/ HTTP/1.1
host: localhost

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 33

{"status":"ok","version":"0.0.1"}