0.0.27 • Published 12 months ago

capibar-js v0.0.27

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

Capibar JS

Capibar JS - это фреймворк для создания различных сервисов на основе Node.js >= 16, используя принципы DDD, transport-agnostic, GRASP. Он также предоставляет свою систему модульности, которая обеспечивает Низкую связанность Low Coupling и Высокое зацепление High Cohesion.


Пример: https://github.com/Pysdbi/capibar-js-example


Install

npm install capibar-js
# or yarn
yarn add capibar-js

Node.js версия должна быть 16.x или 18.x

Usage

Пример пользовательского кода доступен в директории example.

Сначала импортируйте Server из capibar-js и создайте экземпляр сервера:

const { Server } = require('capibar-js');
const server = new Server();
server.start();

По умолчанию запускаются Статический сервер из папки app/static и транспортные слои http и ws

Затем создайте файл list.js по пути app/ship/list.js и добавьте следующее содержимое:

defineApi({
    params: ['name:string', 'speed:!int', 'description:?string'],
    returns: ['id'],
    method: async ({name, speed, description}) => {
        const id = Math.floor(Math.random() * 99)
        const newObj = {id, name, speed, description}
        newObj.description = newObj?.description ?? 'New description'
        return newObj;
    }
})

defineApi - Удобная обертка для описания файл-функции.

params - Входные параметры функции, которые валидируются и трансформируются с помощью класса Schema. string[] | ISchemaDefine

returns - Выходные данные из функции. string[] | ISchemaDefine

method - Бизнес-логика функции api.ship.add(...). (...args) => Promise<any> | any

Пример вызова

Пример вызова функции из другой функции api.ship.add({ name: 'first ship', speed: 11 }).

Каждая такая функция является контроллером транспортов.

Например, функцию ship.add можно получить по транспорту HTTP, выполнив запрос: POST http://localhost:3000/api/ship/add

body:{ "name": "ship", "method": "add", args: [{ name:'ship', speed:11 }] }

или по транспорту WebSockets:

{ "name": "ship", "method": "add", "args": [{"name": 123,"speed": 1}] }

Получение структуры API

Для получения структуры API можно вызвать ручку с параметрами:

{
  "name": "_",
  "method": "introspect",
  "args": {}
}

Лицензия

MIT. Подробнее см. в файле LICENSE.

0.0.27

12 months ago

0.0.26

12 months ago

0.0.25

12 months ago

0.0.24

12 months ago

0.0.23

12 months ago

0.0.21

12 months ago

0.0.20

12 months ago

0.0.19

12 months ago

0.0.18

12 months ago

0.0.17

12 months ago

0.0.16

12 months ago

0.0.15

12 months ago

0.0.12

12 months ago

0.0.11

12 months ago

0.0.10

12 months ago

0.0.9

12 months ago

0.0.8

12 months ago

0.0.6

12 months ago