@axmit/transport

Transport layer for any APPs

Usage no npm install needed!

<script type="module">
  import axmitTransport from 'https://cdn.skypack.dev/@axmit/transport';
</script>

README

Transport

This package provides a toolset to simplify working with transport layer (http, ws).

Installation

npm i @axmit/transport or yarn add @axmit/transport

Quick start

To create a new transport you should do the following:

Base usage

User.transport.ts

import { BaseHttpTransport } from '@axmit/transport';
import axios, { AxiosInstance } from 'axios';
import { IUserModel } from 'entities/User/User.models';

const basePath = '/users';
export const userTransport = new BaseHttpTransport<AxiosInstance, IUserModel>('/users', axios);

Advanced usage

If you want add some methods or override some of them you should extent base class and implement custom logic

import axios, { AxiosInstance } from 'axios';
import { IUserCollectionModel, IUserModel, IUserUpdateModel } from 'entities/User/User.models';
import { ISocialModel } from 'entities/Auth';
import { BaseHttpTransport } from '@axmit/transport';

const basePath = '/users';

const baseMapper = {
  mapFrom: data => data.data,
  mapCollectionFrom: data => data.data
};

class UserTransport extends BaseHttpTransport<AxiosInstance, IUserModel, IUserCollectionModel, IUserModel, IUserUpdateModel> {
  constructor() {
    super(basePath, axios, baseMapper);
  }

  public socialBind = (params: { id: string; data: ISocialModel }): Promise<IUserModel> =>
    this.axios.put(`${basePath}/${params.id}/social`, params.data).then(r => baseMapper.mapFrom(r));
}

export const userTransport = new UserTransport();

And then use it in a communication

User.communication.ts

...

const UserAPIProviders = [
  new APIProvider(actionsTypes.get, userTransport.get),
  new APIProvider(actionsTypes.update, userTransport.update)
];

const socialApiProvider = [new APIProvider(actionsTypes.update, userTransport.socialBind)];
...

Available methods

  • add
  • get
  • update
  • delete
  • deleteAll
  • getCollection