@lpgroup/feathers-utils

1.4.6 • Public • Published

@lpgroup/feathers-utils

npm version Known Vulnerabilities Licence MIT tested with jest codecov

Collection of feathers-utils hooks and helper functions

Install

Installation of the npm

npm install @lpgroup/feathers-utils

Example

const auth = require("@lpgroup/feathers-utils");

How to use cache feature

If you want to cache the mongodb document (JSON) in the cache the only thing you need to do is to extend from ServiceCache instead of Service. it will use the default cache configuration. The cached item will be invalidated and removed on update, patch, removed.

max: 500 items ttl: 300000 // 5 minutes

you can override this in service options

const options = {
  id: "_id",
  paginate: app.get("paginate"),
  schema,
  cache: { max: 1000 },
};

Example using service cache

const { ServiceCache } = require("@lpgroup/feathers-utils");

export class Service1 extends ServiceCache {
  constructor(options, app) {
    super(options);
    this.app = app;

    onPluginReady("mongodb").then(({ database }) => {
      this.Model = database.collection("serivce1");
    });
  }
}

If you want to cache just part of the the mongodb document (JSON) in the cache. You can create caches on the service that you can access anywhere where you have access to the app.

You can specify a callback to set data in the cache and options:

const { CreateCache } = require("@lpgroup/feathers-utils");
import { Service } from "feathers-mongodb";

export class Service1 extends Service {
  constructor(options, app) {
    super(options);
    this.app = app;

    onPluginReady("mongodb").then(({ database }) => {
      this.Model = database.collection("serivce1");
    });

    CreateCache(
        this,
        "mapToOwner"
        (data) => {
          return { owner: data.owner };
        },
        { max: 1000 }
      );
  }
}

To use the cache you get access to the caches from the service:

// setting the owner of the message to the same as the visitor, this makes it possible for
// admin to create messages for the visitors.
const { owner } = await app
  .service("/organisations/:organisationAlias/bots/:botAlias/visitors")
  .caches.mapToOwner.get(visitorId);

data.owner = owner;

limitRequest

This is a middleware to limit the request. And will respond a status of 429.

import { limitRequest } from "@lpgroup/feathers-utils";

export default (app) => {
  app.use(limitRequest(app));
};

default.json

  "tooManyRequest": {
    "isEnabled": true,
    "buketSize": 80,
    "ttlSec": 2,
    "whiteList": ["127.0.0.2"]
  },

Property Default Type Description
isEnabled true boolean enable/disable 429
bucketSize 100 number num of request to display 429
ttlSec 5 sec number refresh bucketSize time in sec
whiteList [] array exempted IPs e.g ["127.0.0.1"]

API

xxx

xxx(xxx)

xxx(xxx);

Contribute

See contribute

License

MIT - See licence

Package Sidebar

Install

npm i @lpgroup/feathers-utils

Weekly Downloads

16

Version

1.4.6

License

MIT

Unpacked Size

54.4 kB

Total Files

31

Last publish

Collaborators

  • arlukin
  • muscot