open-index/open-npm huggingface dataset:
npm package: @powerise/sdk
Description: The Powerise JavaScript SDK
Author: Powerise
Latest version: 0.1.14

# Powerise JavaScript SDK

<p>The Powerise JavaScript SDK implements the client-side libraries to integrate Powerise with external applications.</p>

<p><b>Version:</b> 0.1.9</p>

<h2>Author</h2>
Powerise &lt;support@powerise.io&gt;
npm package: @powerit/cms-grpc
Description: Shared gRPC/HTTP transport for PowerIT CMS packages
Author: PowerIT
Latest version: 1.1.0

# @powerit/cms-grpc

Shared gRPC/HTTP transport for PowerIT CMS packages.

## Installation

```bash
npm install @powerit/cms-grpc
```

## Usage

```javascript
import { createGrpcTransport } from '@powerit/cms-grpc';

const transport = createGrpcTransport({
  baseUrl: 'https://cms.example.com',
  apiKey: 'your-api-key',
  logger: true // Enable logging
});

// Connect to server
await transport.connect();

// Send a request
const response = await transport.send({
  endpoint: '/api/public/analytics/page-view',
  method: 'POST',
  data: {
    path: '/home',
    pageTitle: 'Home Page'
  }
});

if (response.success) {
  console.log('Response:', response.data);
}

// Queue events for batch sending
transport.queue([
  { type: 'click', label: 'button-1' },
  { type: 'click', label: 'button-2' }
]);

// Events are auto-flushed, or flush manually
await transport.flush();

// Use sendBeacon for page unload (reliable delivery)
window.addEventListener('beforeunload', () => {
  transport.sendBeacon('/api/public/analytics/exit', {
    pageViewId: 123,
    timeOnPage: 45
  });
});

// Disconnect when done
transport.disconnect();
```

## Configuration

| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `baseUrl` | string | *required* | Base URL for the server |
| `apiKey` | string | *required* | API key for authentication |
| `logger` | boolean \| object | false | Enable logging or provide custom logger |
| `maxReconnectAttempts` | number | 5 | Maximum reconnection attempts |
| `reconnectDelay` | number | 1000 | Base delay between reconnection attempts (ms) |
| `timeout` | number | 10000 | Request timeout (ms) |
| `batchSize` | number | 50 | Maximum events per batch |
| `flushInterval` | number | 5000 | Auto-flush interval (ms) |

## API

### `createGrpcTransport(config)`

Create a new transport instance.

### `transport.connect()`

Connect to the server. Returns a Promise resolving to `true` on success.

### `transport.disconnect()`

Disconnect from the server and stop any pending operations.

### `transport.isConnected()`

Check if the transport is connected.

### `transport.send(request)`

Send a request to the server.

```typescript
interface TransportRequest {
  endpoint: string;      // e.g., '/analytics/page-view'
  method?: string;       // 'POST' (default), 'PATCH', etc.
  data: object;          // Request payload
  useBeacon?: boolean;   // Use sendBeacon for exit handling
}
```

### `transport.sendBeacon(endpoint, data)`

Send data using the Beacon API for reliable page unload handling.

### `transport.queue(events)`

Queue events for batch sending. Events are auto-flushed at the configured interval.

### `transport.flush()`

Immediately flush all queued events.

### `transport.getQueueSize()`

Get the number of events in the queue.

## License

MIT