1.0.1 โ€ข Published 5 months ago

react-adonis-transmit v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

React Adonis Transmit

๐Ÿš€ Seamless Server-Sent Events integration for React applications using AdonisJS Transmit.

npm version License: MIT Stars NPM CI

โœจ Features

  • ๐Ÿ”Œ Zero-config setup with AdonisJS Transmit
  • ๐ŸŽฏ Simple and intuitive React hooks API
  • ๐Ÿ”„ Automatic connection management and reconnection
  • ๐Ÿงฎ Smart subscription handling with reference counting
  • ๐Ÿ”’ Simple authentication handling
  • ๐Ÿ“ Built-in logging for easy debugging
  • ๐Ÿ“ฆ Tiny footprint (~3KB gzipped)
  • ๐Ÿ’ช Written in TypeScript with full type support
  • ๐Ÿงช Thoroughly tested with Jest and React Testing Library

๐Ÿš€ Installation

npm install react-adonis-transmit

๐ŸŽฏ Quick Start

  1. Wrap your app with the TransmitProvider:
import { TransmitProvider } from 'react-adonis-transmit'

function App() {
  return (
    <TransmitProvider 
      baseUrl="http://your-api-url"
      // Optional: Add auth header
      authHeader="Bearer your-token-here"
      // Optional: Handle messages globally
      onMessage={(channel, event) => {
        console.log(`Message from ${channel}:`, event)
      }}
      // Optional: Enable debug logging
      enableLogging={true}
    >
      {/* Your app components */}
    </TransmitProvider>
  )
}
  1. Subscribe to channels with our simple hook:
import { useTransmit } from 'react-adonis-transmit'

function MyComponent() {
  const { subscribe } = useTransmit()

  useEffect(() => {
    // Subscribe to real-time updates
    const unsubscribe = subscribe('my-channel', (event) => {
      console.log('Received event:', event)
    })

    // Auto-cleanup on unmount
    return () => unsubscribe()
  }, [])

  return <div>My Component</div>
}

๐Ÿ›  Configuration Options

TransmitProvider Props

PropTypeDescription
baseUrlstringRequired. Base URL of your Adonis API
authHeaderstringAuthorization header value (e.g. "Bearer token")
onMessage(channel, event) => voidGlobal message handler
enableLoggingbooleanEnable debug logging

๐ŸŒŸ Why React Adonis Transmit?

  • Simple Integration: Get real-time updates in your React app with just a few lines of code
  • Smart Memory Management: Automatic cleanup of unused subscriptions
  • Production Ready: Built with performance and reliability in mind
  • Developer Friendly: Comprehensive TypeScript support and debugging tools

๐Ÿค Contributing

We welcome contributions! Feel free to:

  • Open issues for bugs or feature requests
  • Submit pull requests
  • Improve documentation

๐Ÿ“ฆ Release Process

To release a new version:

  1. Make sure you have GitHub CLI installed (brew install gh on macOS)
  2. Login to GitHub CLI: gh auth login
  3. Run one of the following commands:

    # Create a custom version release
    npm run release 1.2.3
    
    # Or use semantic versioning shortcuts
    npm run release:patch  # 0.0.x
    npm run release:minor  # 0.x.0
    npm run release:major  # x.0.0

The release process will:

  • Check for uncommitted changes
  • Update version in package.json
  • Create and push git tag
  • Create GitHub release with auto-generated notes
  • Trigger CI/CD pipeline to:
    • Run tests across Node.js 18.x and 20.x
    • Build the package
    • Publish to npm (on release only)

Note: Make sure you have the NPM_TOKEN secret set in your GitHub repository settings for automatic npm publishing.

๐Ÿ“ License

MIT ยฉ Alexis Faure

๐Ÿงช Testing

The library is thoroughly tested using Jest and React Testing Library. Tests cover:

  • Provider initialization
  • Authentication handling
  • Subscription lifecycle
  • Multiple subscriptions to the same channel
  • Error cases
  • Logging functionality

To run the tests:

# Run tests once
npm test

# Run tests in watch mode
npm run test:watch

# Run tests with coverage
npm run test:coverage

Coverage thresholds are set to 80% for:

  • Branches
  • Functions
  • Lines
  • Statements
1.0.1

5 months ago

1.0.0

5 months ago

0.1.17

5 months ago

0.1.16

5 months ago

0.1.15

5 months ago

0.1.14

5 months ago

0.1.13

5 months ago

0.1.12

5 months ago

0.1.9

5 months ago

0.1.8

5 months ago

0.1.7

5 months ago

0.1.6

5 months ago

0.1.5

5 months ago

0.1.4

5 months ago

0.1.3

5 months ago

0.1.2

5 months ago