Catalog npm
Back to packageRELEASE DETAILS

0.1.0

npm

4crud

Fast nodejs module for API development

apicrudhttpnodejsserverexpressfastifyhttpspolka
Published11 Jun 2020
Direct dependencies9
Transitive dependenciesNot calculated

README

Current package documentation

4Crud

VERY SMALL (7kb) and fast Node.js module for API development written with ES6 features.

Maintenance HitCount npm

Getting Started

A fast and VERY SMALL Node.js framework for API development using HTTPS written with javascript ES6 features.

Prerequisites

  • nodejs 12.x +

Installing

npm install 4crud --save

Testing

This project uses Mocha-Chai combination in /test folder

npm test

or

node test/server.js

and in other cli type:

curl localhost:3000/getroute1?name=john

curl -X POST -H "Content-Type: application/json" -d '{"name":"john","password":"abc"}' localhost:3000/postroute1

Features

  • HTTPS or HTTP
  • Routing
  • Fast performance (Remember, ES6 have some intrinsic slowdowns but yes, it's fastest as express.js!)
  • Fast implementation on any type of API
  • Very small (just 15 KB!)

Usage

const Server = require('4crud')
const fs = require('fs') //Only for https

const privateKey = fs.readFileSync([PRIVATEKEYPATH], 'utf8') //Only for https
const certificate = fs.readFileSync([CERTIFICATEPATH], 'utf8') //Only for https

const credentials = {
  key: privateKey,
  cert: certificate,
  passphrase: [PASS] //if exists
} //Only for https

const server = new Server()

server
  // curl localhost:3000/getroute1?name=john
  .get('/route1', (req, res) => {
    console.log(`GET on route 1 with name: ${req.search.get('name')}`)
    res.statusCode = 200
    res.setHeader('Content-Type', 'application/json')
    res.end(JSON.stringify(req.url))
  })
  .get('/route2', (req, res) => {
    //console.log('GET on route 2')
    res.statusCode = 200
    res.setHeader('Content-Type', 'application/json')
    res.end('Hello')
  })
  // curl -X POST -H "Content-Type: application/json" -d '{"name":"john","password":"abc"}' localhost:3000/postroute1
  .post('/route1', (req, res) => {
    console.log(`POST route 1 with name ${req.body.name}`)
    res.statusCode = 200
    res.setHeader('Content-Type', 'application/json')
    res.end(JSON.stringify(req.body))
  })
  .post('/route2', (req, res) => {
    console.log('POST on route 2')
    res.statusCode = 200
    res.setHeader('Content-Type', 'application/json')
    res.end(JSON.stringify(req.body))
  })
  .put('/route1', (req, res) => {
    console.log('PUT on route 1')
    res.statusCode = 200
    res.setHeader('Content-Type', 'application/json')
    res.end(JSON.stringify(req.body))
  })
  .delete('/route2', (req, res) => {
    console.log(`DELETE on route 1 with name ${req.body.name}`)
    res.statusCode = 200
    res.setHeader('Content-Type', 'application/json')
    res.end(JSON.stringify(req.body))
  })
  .start(3000, credentials) // start server at port 3000

Express.js comparison

Bellow the benchmark uses wrk (https://github.com/wg/wrk/wiki/Installing-Wrk-on-Linux)

Run on your preferred CLI on /test folder with server on:

wrk -t8 -c100 -d30s http://localhost:3000/getroute1
FrameworkRequests/secondSize(kB)
Express~05500260
4crud~1510015
Native~19000-

Running

npm start

Release History

  • 0.1.0
    • Basic routing implemented
  • 0.1.5
    • File server example added
    • Bugs fixed
    • Benchmark corrected
  • 1.0.1
    • Vulnerability corrections and production release
  • 2.0.0
    • HTTP protocol supressed. HTTPS implemented as the only protocol.
    • Bugs fixed.
  • 2.1.0
    • HTTPS and HTTP working together

Authors

License

This project is licensed under the MIT License - see the LICENSE file for details

Contributing

  1. Fork it (https://github.com/gh3s/4crud/fork)
  2. Create your feature branch (git checkout -b feature/fooBar)
  3. Commit your changes (git commit -am 'Add some fooBar')
  4. Push to the branch (git push origin feature/fooBar)
  5. Create a new Pull Request

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 9

Native requirements
9 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
chai
Environment
{
  "local_name": "chai",
  "alias": false,
  "peer_metadata": null
}
^4.2.0development
chai-http
Environment
{
  "local_name": "chai-http",
  "alias": false,
  "peer_metadata": null
}
^4.3.0development
eslint
Environment
{
  "local_name": "eslint",
  "alias": false,
  "peer_metadata": null
}
^7.1.0development
eslint-config-standard
Environment
{
  "local_name": "eslint-config-standard",
  "alias": false,
  "peer_metadata": null
}
^14.1.0development
eslint-plugin-import
Environment
{
  "local_name": "eslint-plugin-import",
  "alias": false,
  "peer_metadata": null
}
^2.20.0development
eslint-plugin-node
Environment
{
  "local_name": "eslint-plugin-node",
  "alias": false,
  "peer_metadata": null
}
^11.0.0development
eslint-plugin-promise
Environment
{
  "local_name": "eslint-plugin-promise",
  "alias": false,
  "peer_metadata": null
}
^4.2.1development
eslint-plugin-standard
Environment
{
  "local_name": "eslint-plugin-standard",
  "alias": false,
  "peer_metadata": null
}
^4.0.1development
mocha
Environment
{
  "local_name": "mocha",
  "alias": false,
  "peer_metadata": null
}
^7.2.0development

Distribution files

1 collected
Distribution 1

Source distribution

Source file
Checksums from source
{
  "integrity": "sha512-OJcsgZVuQpbZbk6F49xGXLAToVnGix6jxOYyjqbMC2Hz/aU+0rdDRb8hFvZmjDgtmBh12wYq1nejIu4BVgoX6g==",
  "shasum": "a5040222fddd8c447e08e7bad1f091303addd9a5",
  "tarball": "https://registry.npmjs.org/4crud/-/4crud-0.1.0.tgz",
  "fileCount": 7,
  "unpackedSize": 8601,
  "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4nNTCRA9TVsSAnZWagAAbBoP/1aiKHCvZCRora+E/MOr\nTFFZXea2LBM1pPOjx0BfWV9N2GIpWb4aTFOvZwZzmHlHxJjsBxTwFxps0+HL\nRdGJnGVnYY6qv0RHDtGVnjw48VhQ06JEOps5PV/ZDyHsbgT4A+W0OtkF78ni\n4IC3+65ZOz9+BGAl8TJ22CFQQjdvadWImUenu/t1D1LSa72H5nnze3pHlA+k\nTkxleqLzdcPqwBT77T+dyDvDivtXfEGkmZ394dabISlzyVgyCR2m99oPAAAM\nTBWzGYL5MxOWiIOjntmm9wBBtwuIN+rcAQDwvTiTFHB22Mb84eSpN3mOd/kD\ngaBHVFmxACXl4MCQjOBASRXjzNfv4+wNKik4WkiTJ19IKavclqtiA6DxbR1M\nxSicaB6UZQqVA35bY5pHhyEJbMQFTY96l7P8Ydictur41KFF0pDobjZsCGRg\nD2qkdWGImCwq2pz1wzIWc01HnLnyEMsL61R1z1vKSF5WsWwV579VPytZdMiH\nxwZIqDCCsxgE1olN6qXE1hO7tjKvcxlERvGFTOwUVbQNjU+uVC5hxhfznTii\nCoWEZlm2wyaYXACj8O1fpe2XbOkcIbupDGr6Rj8gNsa/C2wfwQgIhF+FYgcI\nqHusIkmGR6kj55f8V8dpUrpTU08SVVYvLKMjDEsy1WOvAYWLiiia2VJtdDtf\nMzvp\r\n=apNv\r\n-----END PGP SIGNATURE-----\r\n",
  "signatures": [
    {
      "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA",
      "sig": "MEYCIQCbPbnQ+MG8y9o/wzkV0SDnxsvviCNIgJsxRPSF/Ig8FwIhAPwEHvr6AKhsj3A2yL3mbZEsw0k3c+MwLB+ONJnl0wH9"
    }
  ]
}

Repository

PENDING
gh3s/4crud

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 20:07 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:7b969224815e6790ec8815194373a162e2fb6bf0d76f12e8a4a6552b3e8d6c68

Other collected versions

2.1.011 May2.0.010 May1.1.010 May1.0.19 Jun0.1.524 AprView all collected versions →