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

node-flask

v1.5.4

Published

Microserver for nodejs based based on python flask.

Downloads

17

Readme

Node Flask

Node implementation flask like server framework. With the introduction of function decorators and classes we are able to make a small and easy to implement routing system. This is build on koa2 for their support of es2016 functionality and because of its small foot print when compared to express. I am using koa@2 because all routes are handled though blueprint classes and passing a context to a function as a parameter and allowing this to still refer to the blueprint helps class logic. Even though we are using koa@2 you do not have to run you code though a compiler such as babel (though this step makes function decorators posible).

API

Server() => Server

Main server to run blueprint classes. Extends Koa Class from koa@2.

| Option | type | description | | ------ | ------ | ----------- | | port | Number | Http port to listen on | | blueprints | Object|Array|String | (optional) Blueprints or path to blueprint classes |

Example

const { Server } = require("node-flask")
const MainRoutes = require("./MainRoutes")
const server = new Server({
  port: 5000,
  blueprints: [MainRoutes],
})
server.start()

Server#start() => Promise

Run server from configuration Example

const server = // ...from example above
server.start()
.then(() => console.log("Server online on port 5000"))
.catch(err => console.error(`An error occurred (such as port in use)`, err.stack))

#prefix(prefix: string, ...middleware: fn) => decorator

Class decorator for blueprint class level configuration.

#all(path: string, ...middleware: fn) => decorator

Handle all http requests on path.

#get(path: string, ...middleware: fn) => decorator

Handle all GET http requests on path.

#post(path: string, ...middleware: fn) => decorator

Handle all POST http requests on path.

#put(path: string, ...middleware: fn) => decorator

Handle all PUT http requests on path.

#patch(path: string, ...middleware: fn) => decorator

Handle all PATCH http requests on path.

#del(path: string, ...middleware: fn) => decorator

Handle all DELETE http requests on path.

Example (babel w/ transform-legacy-decorators)

const flask = require("node-flask")

@flask.prefix("/main", middlewarefunction)
class MainRoutes {

  @flask.get("/home")
  async home(ctx) {
    const data = await getData()
    ctx.body = data
  }
}

Example (node6)

const flask = require("node-flask")

class MainRoutes {
  constructor() {
    this.prefix = "/main"
    this.routes = flask.registerRoutes(this, {
      home: flask.get("/home"),
    })
  }

  *home(ctx) {
    const data = yield getData()
    ctx.body = data
  }
}

TODO:

  • Write more tests for Server
  • Add helpful middleware and more decorators upon need

Contributions:

Feedback, use cases and code is all appreciated. Simply make an issue or pull request on the github repo.