New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@jaris/core

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@jaris/core

> TODO: description

  • 0.0.7
  • latest
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

@jaris/core

jaris is still in very early alpha, production usage is not recommended

Jaris. A 0 dependency, functional (phoenix) inspired, node / typescript web framework.

Installation

$ npm install -S @jaris/core

Usage

The core concept behind jaris is that the conn object gets passed through a series of functions (middleware), and the final resulting conn determines what is sent.

The conn object should never be mutated directly, only copied via spread (...conn), or modified using one of the conn helper functions provided.

A simple hello world would look like:

import server, { text } from '@jaris/core';

server([conn => text('Hello, world!', conn)]);

An example using multiple middleware would look like:

import server, { text } from '@jaris/core';

server([
  (conn) => ({
    ...conn,
    body: 'I will be overwritten',
  }),
  (conn) => text('Hello, world!', conn),
  (conn) => {
    console.log('I dont modify the connection at all, I just do some logging'),
    return conn;
  }
])

Since the conn object is simply modified to achieve a response, and all of the response helper functions provided by jaris are automatically curried, we can combine them using the pipe helper:

import server, { json, status, header } from '@jaris/core';
import { pipe } from '@jaris/util';

server([
  conn =>
    pipe(
      status(200),
      header('X-Custom', 'my value'),
      json({ ok: true }),
    )(conn),
]);

Which becomes even more useful when you start making re-usable responses

import server, { json, status, header } from '@jaris/core';
import { pipe } from '@jaris/util';

const formErrors = (errors: any) =>
  pipe(
    status(422),
    json({ errors }),
  );

server([
  conn =>
    formErrors({
      name: 'is required',
    })(conn),
]);

A simple request-time example:

import server, { header } from '@jaris/core';
import { pipe } from '@jaris/util';

const currentTimestamp = () => Math.round((new Date()).getTime() / 1000);

server([
  conn => header('X-Start-Time', `${currentTimestamp()}`, conn),
  conn => {
    // ...perform some relatively long task
    return conn;
  },
  conn => {
    const startTime = parseInt(conn.headers['X-Start-Time']);
    const endTime = currentTimestamp();

    return pipe(
      header('X-End-Time', `${endTime}`)
      header('X-Total-Time', `${endTime - startTime} seconds`)
    )(conn);
  }
]);

FAQs

Package last updated on 19 Feb 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc