Napping Panda Missionaries

    @lpgroup/feathers-utils

    1.3.89 • 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

    Install

    npm i @lpgroup/feathers-utils

    DownloadsWeekly Downloads

    137

    Version

    1.3.89

    License

    MIT

    Unpacked Size

    43.4 kB

    Total Files

    26

    Last publish

    Collaborators

    • arlukin
    • muscot