New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

sdk-base

Package Overview
Dependencies
Maintainers
0
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

sdk-base

a base class for sdk with default error handler

  • 5.0.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
149K
increased by29.12%
Maintainers
0
Weekly downloads
 
Created
Source

sdk-base

NPM version Node.js CI Test coverage Known Vulnerabilities npm download Node.js Version

A base class for sdk with some common & useful functions.

Installation

npm install sdk-base

Usage

Constructor argument:

  • {Object} options

    • {String} [initMethod] - the async init method name, the method should be a function return promise. If set, will execute the function in the constructor.
    • {AsyncLocalStorage} [localStorage] - async localStorage instance.
    const { Base } = require('sdk-base');
    
    class Client extends Base {
      constructor() {
        super({
          initMethod: 'init',
          localStorage: app.ctxStorage,
        });
      }
    
      async init() {
        // put your async init logic here
      }
      // support async function too
      // async init() {
      //   // put your async init logic here
      // }
    }
    
    (async function main() {
      const client = new Client();
      // wait client ready, if init failed, client will throw an error.
      await client.ready();
    
      // support async event listener
      client.on('data', async function (data) {
        // put your async process logic here
        //
        // @example
        // ----------
        // await submit(data);
      });
    
      client.emit('data', { foo: 'bar' });
    
    })().catch(err => { console.error(err); });
    

API

  • .ready(flagOrFunction) flagOrFunction is optional, and the argument type can be Boolean, Error or Function.

    // init ready
    client.ready(true);
    // init failed
    client.ready(new Error('init failed'));
    
    // listen client ready
    client.ready(err => {
      if (err) {
        console.log('client init failed');
        console.error(err);
        return;
      }
      console.log('client is ready');
    });
    
    // support promise style call
    client.ready()
      .then(() => { ... })
      .catch(err => { ... });
    
    // support async function style call
    await client.ready();
    
  • async readyOrTimeout(milliseconds) ready or timeout, after milliseconds not ready will throw TimeoutError

    await client.readyOrTimeout(100);
    
  • .isReady getter detect client start ready or not.

  • .on(event, listener) wrap the EventEmitter.prototype.on(event, listener), the only difference is to support adding async function listener on events, except 'error' event.

  • once(event, listener) wrap the EventEmitter.prototype.once(event, listener), the only difference is to support adding async function listener on events, except 'error' event.

  • prependListener(event, listener) wrap the EventEmitter.prototype.prependListener(event, listener), the only difference is to support adding async function listener on events, except 'error' event.

  • prependOnceListener(event, listener) wrap the EventEmitter.prototype.prependOnceListener(event, listener), the only difference is to support adding generator listener on events, except 'error' event.

  • addListener(event, listener) wrap the EventEmitter.prototype.addListener(event, listener), the only difference is to support adding async function listener on events, except 'error' event.

    client.on('data', async function(data) {
      // your async process logic here
    });
    client.once('foo', async function(bar) {
      // ...
    });
    
    // listen error event
    client.on('error', err => {
      console.error(err.stack);
    });
    
  • .await(event): await an event, return a promise, and it will resolve(reject if event is error) once this event emmited.

    const data = await client.await('data');
    
  • ._close(): The _close() method is called by close. It can be overridden by child class, but should not be called directly. It must return promise or generator.

  • .close(): The close() method is used to close the instance.

Breaking changes between v4 and v5

  • Drop .awaitFirst(events) support
  • Drop generator function support
  • Don't catch event listener inside error

License

MIT

Contributors

Contributors

Made with contributors-img.

Keywords

FAQs

Package last updated on 22 Dec 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc