8.0.2 • Published 2 months ago

cabal-client v8.0.2

Weekly downloads
24
License
AGPL-3.0-or-later
Repository
github
Last release
2 months ago

cabal-client

cabal-client is a new type of client library for cabal chat clients.

New chat clients can be implemented using only this library, without having to mess around with cabal-core anymore.

Some of its features:

  • consolidates logic common to all chat clients
  • leaving and joining of channels
  • virtual messages (such as status messages) and virtual channels (currently only the !status channel)
  • handling multiple cabal instances
  • receiving unread notifications and mentions for channels
  • resolving of DNS shortnames (cabal.chat) to cabal keys

For a couple of brief examples, see the examples/ directory.

Usage

See cabal-cli for an example client implementation.

Read the API documentation

var Client = require('cabal-client')

const client = new Client({
  config: {
    dbdir: '/tmp/cabals'
  }
})

client.createCabal()
  .then((cabal) => {
    // resolves when the cabal is ready, returns a CabalDetails instance
  })

Concepts

cabal-client has three core abstractions: Client, CabalDetails and ChannelDetails.

Client is the entrypoint. It has a list of CabalDetails (one details for each joined cabal) as well as an API for interacting with a cabal (getting a count of the new messages for a channel, the joined channels for the current peer etc).

CabalDetails is the instance that clients mostly operate on, as it encapsulates all information for a particular cabal. (joined channels, users in that channel, the topic). It also emits events.

When a change has happened, a CabalDetails instance will call this._emitUpdate(). When a client receives this event, they should update their state & rerender. (Check out how the cli does it.)

ChannelDetails encapsulates everything channels (mentions in that channel, status messages for the channel (like having called a command eg /names, when it was last read, if it's currently being viewed, if it's joined and so on). It also has a barebones implementation for virtual channels, which currently is only the !status channel.

Install

With npm installed, run

$ npm install cabal-client

Developing

Changelog

See the instructions for generating the changelog in the cabal-core readme.

License

AGPL-3.0-or-later

8.0.2

2 months ago

8.0.1

5 months ago

8.0.0

5 months ago

7.3.3

10 months ago

7.3.2

1 year ago

7.3.1

2 years ago

7.3.0

2 years ago

7.2.2

2 years ago

7.2.1

2 years ago

7.2.0

2 years ago

7.1.0

2 years ago

7.0.0

3 years ago

6.3.2

3 years ago

6.3.0

3 years ago

6.3.1

3 years ago

6.2.7

3 years ago

6.2.6

3 years ago

6.2.5

3 years ago

6.2.4

3 years ago

6.2.3

3 years ago

6.2.2

3 years ago

6.2.1

3 years ago

6.2.0

4 years ago

6.1.4

4 years ago

6.1.3

4 years ago

6.1.2

4 years ago

6.1.1

4 years ago

6.1.0

4 years ago

6.0.0

4 years ago

5.1.1

4 years ago

5.1.0

4 years ago

5.0.0

4 years ago

4.1.0

4 years ago

4.0.1

4 years ago

4.0.0

4 years ago

3.0.0

4 years ago

2.1.1

4 years ago

3.0.0-prerelease

4 years ago

2.1.0

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago