@powerit/cms-grpc
v1.1.0
Published
Shared gRPC/HTTP transport for PowerIT CMS packages
Downloads
207
Maintainers
Readme
@powerit/cms-grpc
Shared gRPC/HTTP transport for PowerIT CMS packages.
Installation
npm install @powerit/cms-grpcUsage
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.
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
