# @555platform/555-js-sdk

> JavaScript SDK for 555 Platform

Latest version **4.4.27** (published 2022-06-17) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install @555platform/555-js-sdk
pnpm add @555platform/555-js-sdk
yarn add @555platform/555-js-sdk
bun add @555platform/555-js-sdk
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; large bundle.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 4.4.27 |
| Published | 2022-06-17 |
| First published | 2020-01-31 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 10 |
| Unpacked size | 13.9 MB |
| Known vulnerabilities | 0 (+26 in 2 direct dependencies) |
| Install scripts | no |
| Author | Comcast |
| Maintainers | robjsliwa, kdriadon, colinroberts, nija, nadeemgudaganur |
| Keywords | 555 |

## Links

- npm: https://www.npmjs.com/package/@555platform/555-js-sdk
- npm.io page: https://npm.io/package/@555platform/555-js-sdk

## Dependencies (10)

- [rxjs](https://npm.io/package/rxjs.md) ^6.6.3
- [axios](https://npm.io/package/axios.md) ^0.21.1
- [ramda](https://npm.io/package/ramda.md) 0.26.1
- [@types/uuid](https://npm.io/package/@types/uuid.md) ^7.0.4
- [iris-js-sdk](https://npm.io/package/iris-js-sdk.md) 3.5.23
- [ts-toolbelt](https://npm.io/package/ts-toolbelt.md) 4.7.7
- [@types/ramda](https://npm.io/package/@types/ramda.md) ^0.26.33
- [jsonwebtoken](https://npm.io/package/jsonwebtoken.md) ^8.5.1
- [@types/jsonwebtoken](https://npm.io/package/@types/jsonwebtoken.md) ^8.5.0
- [@555platform/555parser.ts](https://npm.io/package/@555platform/555parser.ts.md) ^1.2.7

## Recent versions

- 4.4.27 (latest) — 2022-06-17
- 4.4.27-beta.0 — 2022-05-02
- 4.4.26 — 2022-04-05
- 4.4.25 — 2022-03-28
- 4.4.24 — 2022-03-03
- 4.4.23 — 2022-01-10
- 4.4.22 — 2022-01-04
- 4.4.21 — 2021-11-11
- 4.4.20 — 2021-07-27
- 4.4.20-beta1 — 2021-07-12
- 4.4.19-beta1 — 2021-05-06
- 4.4.19 — 2021-04-28
- 4.4.18 — 2021-02-17
- 4.4.17 — 2021-01-29
- 4.4.16-beta2 — 2021-01-16
- … 40 more at https://npm.io/package/@555platform/555-js-sdk/versions

## README

# 555-js-sdk 

[![Build Status](https://drone-server.555.systems/api/badges/555platform/555-js-sdk/status.svg?branch=master)](https://drone-server.555.systems/555platform/555-js-sdk)

# 555 JavaScript SDK

555-js-sdk provides simple APIs to build chat based applications using 555 Platform.


## Getting started
  ```sh
  npm i @555platform/555-js-sdk
  ```
  
## Usage - Examples

```javascript
import SDK from '@555platform/555-js-sdk';
```

1. Make connection using `555token`, `ConnectOptions` and `MessageAdapter`
  	
	```javascript
	const sdk = SDK.Client.create(
		    	userData.access_token,
		    	{
			  url: '',
			  automaticReconnect: true
		    	},
		    	new SDK.QueuedMessageAdapter<SDK.MessagePayload>()
		    );
		
	    
	sdk.chat.connect();
	```

2. Get list of rooms current user is a member of.

  	```javascript
	const iter: SDK.Paginator<
        SDK.RoomDescriptor,
        SDK.RoomIterator
      > = await sdk.chat.getUserRoomDescriptors(0, 0);
    ```

3. Callbacks and Events from SDK.
	 
	```javascript	
    SDK.Client.Chat.on(
    	SDK.CMF.ChatServerEventTypes.RoomAdded,
    	this.onRoomsChanged
  	 );
	
    SDK.Client.Chat.on(
      SDK.CMF.ChatServerEventTypes.UserJoinedRoom,
      this.onRoomsChanged
    );
	
    SDK.Client.Chat.on(
      SDK.CMF.ChatServerEventTypes.UserLeftRoom,
      this.onRoomsChanged
    );
	
    SDK.Client.Chat.on(
      SDK.CMF.ChatServerEventTypes.RoomReceivedMessage,
      this.onRoomReceivedMessage
    );
    
    sdk.onTokenAboutToExpire(() =>
     // renewToken is a function you need to implement to fetch new token
     // from application server
     renewToken(renewedToken => sdk.updateToken(renewedToken));
    );
    ```	

## APIs

## Connect

### Methods

#### &lt;static&gt; create(accessToken, ConnectOptions, messageAdapter)

Factory method to create and initialize Client

**Parameters**

Name | Type | Argument | Description
--- | --- | --- | ---
accessToken | string | required | 555 Platform access token
options | ConnectOptions | required | Options to customize 555 Connection behavior
messageAdapter | MessageAdapter | required | Message adapter class conforming to MessageAdapter interface

**Returns**

*Type*

`Client|Error`

#### updateToken(accessToken)

Updates current token.  Used to update Client with refreshed token.

**Parameters**

Name | Type | Argument | Description
--- | --- | --- | ---
accessToken | string | required | 555 Platform access token

**Returns**

*Type*

`void`

#### connect()

Connect to platform.

**Parameters**

Name | Type | Argument | Description
--- | --- | --- | ---
options | ConnectOptions | optional | Connection options

**Returns**

*Type*

`Promise.<Client|void>`

#### disconnect()

Manually disconnect the client.

**Returns**

*Type*

`Promise.<void|Error>`

#### on(event, callback)

Register handler for event.

**Parameters**

Name | Type | Description
--- | --- | ---
event | Event | Event type
callback | Function | Callback function


#### AccessTokenAboutToExpire

Triggered 5 minutes before access token is to expire.

```
client.onTokenAboutToExpire(() =>
  // renewToken is a function you need to implement to fetch new token
  // from application server
  renewToken(renewedToken => sdk.updateToken(renewedToken));
);
```

### Options

#### ConnectOptions

These options are parameters for connecting to platform.

*Type*

Object

*Properties*

Name | Type | Argument 
--- | --- | --- 
url | string | required
protocol | string[] | optional
automaticReconnect | boolean | optional
reconnectionAttempts | number | optional
reconnectDelay | number | optional
reconnectBackoffAlgorithm | BackoffAlgorithm | optional
pollInterval | number | optional
requestTimeout | number | optional
requestRetries | number | optional
paginatorDefaultPageSize | number | optional
nextPingDelay | number | optional
pingWaitDelay | number | optional

## Chat

### Methods


#### createRoom(options)

Create room on the server with current user as the member.

**Parameters**

Name | Type | Argument | Description
--- | --- | --- | ---
options | CreateRoomOptions | Create room options

**Returns**

*Type*

`Promise.<Room>`

#### getRoomById(roomId)

Get room by its ID.

**Parameters**

Name | Type | Description
--- | --- | ---
roomId | String | room ID

**Returns**

*Type*

`Promise.<Room>`

#### getPublicRoomDescriptors()

Get list of public rooms.

**Returns**

*Type*

`Promis.<Paginator.<RoomDescriptor>>`

#### getUserRoomDescriptors()

Get list of rooms current user is a member of.

**Returns**

*Type*

`Promise.<Paginator.<RoomDescriptor>>`

#### getUser(userId)

Return User object for the user ID.

**Parameters**

Name | Type | Description
--- | --- | ---
userId | String | User ID

**Returns**

*Type*

`Promise.<User>`

#### getCurrentUser()

Return User object for currently logged in user.

**Returns**

*Type*

`Promise.<User>`

#### disconnect()

Gracefully disconnect SDK from the platform

**Returns**

*Type*

`Promise.<void>`

#### updateLastConsumedMessageIndex(index)

Set last consumed message index to new index.

**Parameters**

Name | Type | Description
--- | --- | ---
index | Number | Message index to set last read to

**Returns**

*Type*

`Promise.<number|Error>`

### Events

#### roomReceivedMessage

*Type*

Object

*Properties*

Name | Type | Description
--- | --- | ---
room | RoomDescriptor | Room descriptor with updated last message and consumed message index
message | Message | Message object with the new message

#### UserJoinedRoom

Triggered when user joins the room.

*Type*

User

#### UserLeftRoom

Triggered when user leaves the room.

*Type*

User

#### MessageUpdated

Triggered when message was updated.

*Type*

Object

*Properties*

Name | Type | Description
--- | --- | ---
message | Message | Updated Message
index | Number | Index of the updated message

#### UserIsTyping

Triggered when a user in the room started typing.

*Type*

User

### Options

#### CreateRoomOptions

These options are parameters for creating a room.

*Type*

Object

*Properties*

Name | Type | Argument 
--- | --- | --- 
attributes | Object | optional |
friendlyName | String | required | 
createdBy | string | required |
isPrivate | boolean | required |
isDirect | boolean | required |
isSMS | boolean | optional |
smsNumber | string | optional |
members | string[] | required |


## Room

**Properties**

Name | Type | Description
--- | --- | ---
roomId | String | Room ID
friendlyName | String | Room display name
createdAt | Date | Date of creation
createdBy | User | User who created the room
updatedAt | Date | Date of update
members | Array.&lt;User&gt; | Users who are members of this room
isPrivate | Boolean | Is room private or public ('public' or 'private')
isArchive | boolean | Is room archived
isSms | boolean | Is sms
smsNumber | string | sms number
attributes | Object | Object with room's custom attributes
lastMessageIndex | number | Index of last message
lastConsumedMessageIndex | number | Index of last consumed message
consumedMessageOffset | number | Number of unread messages by user this message is directed to

### Methods

#### inviteUsers(userId)

Invite a user to the room.

**Parameters**

Name | Type | Description
--- | --- | ---
userId | String | User ID

**Returns**

*Type*

`Promise.<Room|Error>`

#### leaveRoom(options)

Leave the Room.

**Returns**

*Type*

`Promise.<Room|Error>`

#### options

*Properties*

Name | Type | Argument 
--- | --- | --- 
roomId | string | required 

#### removeUser(roomId, userId)

Remove user from the Room.

**Returns**

*Type*

`Promise.<Room|Error>`

#### archiveRoom()

Archives the Room.

**Returns**

*Type*

`Promise.<Room|Error>`

#### deleteRoom()

Deletes the Room.

**Returns**

*Type*

`Promise.<Room|Error>`

#### updateRoom(room)

Update the Room.

**Returns**

*Type*

`Promise.<Void|Error>`

#### updateMessage(messageId, messageUpdate)

update message.

**Returns**

*Type*

`Promise.<Void|Error>`

#### deleteMessage(options)

delete message.

**Returns**

*Type*

`Promise.<Message|Error>`

#### options

*Properties*

Name | Type | Argument 
--- | --- | --- 
roomId | string | required 
messageId | string | required

#### removeUser(userId)

Remove user from this Room.

**Parameters**

Name | Type | Description
--- | --- | ---
userId | String | User ID

**Returns**

*Type*

`Promise.<void|Error>`


### Events

#### UserJoinedRoom

Triggered when user joins the room.

*Type*

User

#### UserLeftRoom

Triggered when user leaves the room.

*Type*

User

#### MessageUpdated

Triggered when message was updated.

*Type*

Object

*Properties*

Name | Type | Description
--- | --- | ---
message | Message | Updated Message
index | Number | Index of the updated message

#### UserIsTyping

Triggered when a user in the room started typing.

*Type*

User


## RTC JS SDK

Import JS SDK as below:

```javascript
import { JSSDK } from '@555platform/555-js-sdk';
```

And declare global variables  inside .ts wrapper to access Rtc components via window object.

```javascript
declare var window: any;

or

declare var IrisRtcSession: any;
```

JS SDK Documenation is available [ here ](https://www.555.comcast.com/docs/js_sdk/js_sdk_getting_started "555 Platform")

---
_Source: https://npm.io/package/@555platform/555-js-sdk · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
