open-index/open-npm huggingface dataset:
npm package: @snugdesk/core
Description: Core utility and session management library required for all Snugdesk widgets. Handles authentication, configuration, and shared services.
Latest version: 0.2.33

# @snugdesk/core

`@snugdesk/core` is the foundational Angular library that powers Snugdesk widgets and shared modules. It provides authentication, shared helpers, and other essential services required for seamless integration of Snugdesk modules such as `@snugdesk/avaya-ipo-widget`, `@snugdesk/whatsapp-widget`, and others.

To purchase licenses or for assistance with implementing the Snugdesk libraries in your Angular web application, please contact:

**SNUG Technologies Pvt Ltd**  
📧 [sales@snug.in](mailto:sales@snug.in)

---

## 🔐 Mandatory Dependency

> **IMPORTANT**: This library **must be installed and initialized** before using any other Snugdesk widget or library.  
> All other Snugdesk packages depend on `@snugdesk/core` for centralized session management, configuration, and shared services.

---

## ✨ Features

- Centralized session management using `tenantId` and `userId`
- Shared services for authentication, token reuse, and lifecycle handling
- Lightweight, plug-and-play design for host Angular applications
- Built-in support for multi-widget communication and coordination

---

## 🧩 Usage

### Step 1: Install Required Peer Dependencies

```bash
npm install @angular/animations
npm install @auth0/angular-jwt crypto-js moment-timezone uuid
```

### Step 2: Install the package

```bash
npm install @snugdesk/core
npm install aws-amplify@^5 @aws-amplify/api-graphql@^3
```

Amplify v5 is required. Other Snugdesk widgets rely on this package for AppSync configuration.

Peer dependency ranges (from the package manifest):
- Angular: >=19.0.0
- RxJS: ~7.8.0

### Step 3: Setup

#### 1) Import the module (if you use the shared components)

```ts
import { SnugdeskCoreModule } from '@snugdesk/core';

@NgModule({
  imports: [SnugdeskCoreModule],
})
export class AppModule {}
```

#### 2) Initialize authentication

```ts
import { SnugdeskAuthenticationService } from '@snugdesk/core';

constructor(private authenticationService: SnugdeskAuthenticationService) {}

ngOnInit() {
  this.authenticationService.login('yourTenantId', 'yourUserId');
}
```

> Other Snugdesk libraries will automatically retrieve and reuse the session.

## What you get
- Authentication utilities (`SnugdeskAuthenticationService`)
- Common pipes, components, and shared helpers
- AppSync helper (`AppSyncHelperService`) that handles query/mutate/subscribe
- GraphQL services and shared models used by Snugdesk widgets

## Support and licensing

This library is a proprietary product of Snugdesk and is protected under applicable intellectual property laws. 

> **Note**: Usage of this library requires a valid license or an active Snugdesk subscription. Unauthorized distribution or usage is strictly prohibited.

For licensing inquiries or to obtain a valid subscription, please contact [sales@snugdesk.com](mailto:sales@snugdesk.com).