JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 58
  • Score
    100M100P100Q87786F
  • License MIT

Type-safe, lightweight, framework-agnostic connectivity detection and offline action queue

Package Exports

  • @connectivity-js/core
  • @connectivity-js/core/package.json

Readme

@connectivity-js/core · MIT License NPM Version

Type-safe, framework-agnostic connectivity detection and offline action queue.

Installation

npm install @connectivity-js/core

Usage

import {
  getConnectivityClient,
  browserOnlineDetector,
  heartbeatDetector,
  actionOptions,
} from '@connectivity-js/core';

// Initialize client
const client = getConnectivityClient({
  detectors: [
    browserOnlineDetector(),
    heartbeatDetector({ url: '/api/health', intervalMs: 10_000 }),
  ],
  gracePeriodMs: 3_000,
});

client.start();

// Subscribe to status changes
client.subscribe(() => {
  const { status, quality } = client.getState();
  console.log(status, quality);
});

// Register and execute an action
const saveAction = actionOptions({
  actionKey: 'save',
  request: (input: { id: string; data: string }) => api.save(input),
  dedupeKey: (input) => input.id,
  whenOffline: 'queue',
});

const result = await client.execute(saveAction, { id: '1', data: 'hello' });

if (result.enqueued) {
  console.log('queued:', result.jobId);
} else {
  console.log('executed:', result.result);
}

Documentation

Full documentation