es-modular

0.3.0 • Public • Published

ES-Modular

A universal library for converting server-side functions into ES Modules.

server:

// https://au215ybu51.us.aircode.run/index
import {config, modular} from 'es-modular';

function add(x, y) {
  return x + y;
}

function getUrl(context) {
  const {url} = context;
  return url;
}

export default modular({
  add,
  getUrl,
}, config.aircode);

client

import {add, getUrl} from 'https://au215ybu51.us.aircode.run/index';

console.log(await add(1, 2)); // => 3
console.log(await getUrl()); // => /index

Online example

Server: https://runkit.com/akira-cn/es-modular-with-koa

Client:

Features

  • 🧸 Tiny and easy to use.

  • 🌎 Works in any where, almost in all Node.js HTTP servers or cloud environments.

    ES-Modular inherently supports the following environments through corresponding configurations:

  • 🧩 Esay to extends.

    You can extend ES-Modular to other environments such as Deno, Edge Runtime, or Ben by creating your own configurations.

Usage

  1. Work with Koa:
import Koa from "koa";
import { bodyParser } from "@koa/bodyparser";
import { modular, config } from "../src/index.js";

function add(x, y) {
  return x + y;
}

function getHost($context) {
  return $context.request.hostname;
}

const app = new Koa();
app.use(bodyParser());

// response
app.use(modular({ add, getHost }, config.koa));

app.listen(3000);
  1. Work with Express:
import express from "express";
import bodyParser from 'body-parser';
import { modular, config } from "../src/index.js";

const app = express();

app.use(bodyParser.json({
  limit: '4.5mb',
  type: '*/*',
}));

function add(x, y) {
  return x + y;
}

function getHost($context) {
  return $context.request.hostname;
}

function getMessage() {
  return {hi: 'there'};
}

app.all('/', modular({ add, getHost, getMessage }, config.express));

app.listen(3000);
  1. Work with Fastify:
import Fastify from 'fastify';
import { modular, config } from "../src/index.js";

const fastify = Fastify({
  logger: true
});


function add(x, y) {
  return x + y;
}

function getHost($context) {
  return $context.request.hostname;
}

function getMessage() {
  return {hi: 'there'};
}

// Declare a route
fastify.all('/', modular({add, getHost, getMessage}, config.fastify));

// Run the server!
fastify.listen({ port: 3000 }, function (err, address) {
  if (err) {
    fastify.log.error(err);
    process.exit(1);
  }
  // Server is now listening on ${address}
});
  1. Work with Nitro
import { modular, config } from "es-modular";

function add(x, y) {
  return x + y;
}

async function echo(...args) {
  const $context = args.pop();
  return await readBody($context);
}

function getMessage() {
  return {hi: 'there'};
}

export default eventHandler(
  modular({add, echo, getMessage}, config.nitro)
);
  1. Work with Vercel api function:
import { modular, config } from "../../../src/index.js";

function add(x, y) {
  return x + y;
}

function echo($context) {
  return $context.request.body;
}

function getMessage() {
  return {hi: 'there'};
}

export default modular({add, echo, getMessage}, config.vercel);
  1. Work with AirCode cloud function:
import {config, modular} from 'es-modular';

function add(x, y) {
  return x + y;
}

function getUrl(context) {
  const {url} = context;
  return url;
}

export default modular({
  add,
  getUrl,
}, config.aircode);

Readme

Keywords

none

Package Sidebar

Install

npm i es-modular

Weekly Downloads

0

Version

0.3.0

License

MIT

Unpacked Size

30.2 kB

Total Files

28

Last publish

Collaborators

  • spritejs