0.1.22 • Published 10 months ago

@capibar/core v0.1.22

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

Capibar JS

CapibarJS - это фреймворк для создания различных сервисов на основе Node.js >= 18,

Принципы:

  • DDD
  • transport-protocol-agnostic
  • GRASP
  • Low Coupling
  • High Cohesion

Он также предоставляет свою систему модульности, которая обеспечивает Низкую связанность Low Coupling и Высокое зацепление High Cohesion.


Demo: http://chotko-reklama.ru:5500

Example: https://github.com/CapibarJS/example


Install

npm install @capibar/core
# or yarn
yarn add @capibar/core

Node.js версия должна выше 18.x

Usage

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

const { Server } = require('@capibar/core');
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.1.20

10 months ago

0.1.21

10 months ago

0.1.10

10 months ago

0.1.22

10 months ago

0.1.11

10 months ago

0.1.13

10 months ago

0.1.14

10 months ago

0.1.15

10 months ago

0.1.16

10 months ago

0.1.8

11 months ago

0.1.17

10 months ago

0.1.7

11 months ago

0.1.18

10 months ago

0.1.19

10 months ago

0.1.9

10 months ago

0.1.6

11 months ago

0.1.5

11 months ago

0.1.4

11 months ago

0.1.3

11 months ago

0.1.2

11 months ago

0.1.1

12 months ago