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

inra-server-http

v1.4.2

Published

[![npm](https://img.shields.io/npm/v/inra-server-http.svg?maxAge=2592000)](https://www.npmjs.com/package/inra-server-http) [![Dependency Status](https://david-dm.org/project-inra/inra-server.svg?path=packages/inra-server-http)](https://david-dm.org/projec

Downloads

13

Readme

inra-server-http

npm Dependency Status

A wrapper for common Node.js frameworks. Creates a micro application suitable for small applications with low overhead such as RESTful APIS. This class aims to be a better, more expressive, and more robust foundation for web applications and APIs.

Note: full documentation with more examples is published on our Wiki. Please, refer to our Wiki for installation details and API references.

Installation

$ npm install --save inra-server-http

API

const server = new Server({
  port: Number(process.env.PORT)
});

Each Server instance is a Proxy which defines custom behaviors for fundamental operations such as "magic" setters and getters. It allows us to reflect all custom properties to a dependency injector which keeps fundamental object safe and immutable. Gives another layer of abstraction for data.

  • Setters are used to prevent developers from overriding server internals. Additionally, custom-defined properties will be added to an internal Map object which serves as Service Location of services and it's itself a container for them.

  • Getters retrieve those properties from the Map object by key, if such key doesn't exist in server internals. You should avoid to access server internals manually, unless you know what are you doing.

Server

.setEngine(framework)

Sets a engine for server. Each engine must implement methods described in EngineInterface.

Example: using Koa.js

server.setEngine(new Koa());

.setRouter(framework)

Sets a router for server. Each router must implement methods described in RouterInterface.

Example: using koa-router

server.setRouter(new Router());

.import(path)

Imports, initialises and handles a given resource. Resources are recognized based on their name.

Example:

app.import("./path/to/something.js");
// ./path/to/something.js
export default function(app) {
  // …
}

.run(port, callback)

Listens on a given port.

.use(middleware)

Mounts the specified middleware function or functions.

Middlewares

Assuming we are using Koa.js:

import middleware from "inra-server-http/middleware";

@middleware()
export default class SomeMiddleware {
  constructor(app) {
    // …
  }

  async before(ctx, next, ...rest) {
    // …
  }

  async handle(ctx, next, ...rest) {
    // …
  }

  async after(ctx, next, ...rest) {
    // …
  }
}

Controllers

Assuming we are using Koa.js:

import controller, {get, post, patch, del} from "inra-server-http/router";

@controller("/namespace")
export default class SomeController {
  constructor(app) {
    // …
  }

  @post("/resource", function (app) {
    return compose([
      this.isAuthorized(),
      this.hasPermission(["create", …])
    ])
  })
  async create(ctx, next) {
    // …
  }

  @get("/resource/:id")
  async read(ctx, next) {
    // …
  }

  @get("/resource")
  async readAll(ctx, next) {
    // …
  }

  @patch("/resource")
  async update(ctx, next) {
    // …
  }

  @del("/resource")
  async delete(ctx, next) {
    // …
  }
}

Contributing

Bug reporting

Github Open Issues Github Closed Issues Github Pull Requests

We want contributing to Inra Server to be fun, enjoyable, and educational for anyone, and everyone. Changes and improvements are more than welcome! Feel free to fork and open a pull request. If you have found any issues, please report them here - they are being tracked on GitHub Issues.

Development

We have prepared multiple commands to help you develop inra-server-http on your own. Don't forget to install all Node.js dependencies from npm. You will need a local copy of Node.js installed on your machine.

$ npm install

Usage

$ npm run <command>

List of commands

| Command | Description | | ------- | -------------------------------------------- | | build | Builds inra-server-http | | watch | Re-builds inra-server-http on changes | | clean | Deletes builds and cache | | lint | Fixes Lint errors | | flow | Checks Flow errors | | test | Checks for style guide errors and runs tests |