Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

rx-sample

Package Overview
Dependencies
Maintainers
0
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rx-sample

rx-sample simplifies managing RxJS Observables with Effector events, ensuring streamlined subscription control in reactive applications.

  • 1.0.3
  • Source
  • npm
  • Socket score

Version published
Maintainers
0
Created
Source

rx-sample

rx-sample is a utility for working with RxJS in conjunction with Effector, making it easy to manage subscriptions to Observables using Effector events.

Installation

You can install the rx-sample package via npm:

npm install rx-sample

Quick Start

Usage Example

Here’s a basic example of how to use rxSample in your project:

import { Subject } from "rxjs";
import { createEvent } from "effector";
import { rxSample } from "rx-sample";

// Create Effector events
const mockChannel = new Subject();
const subscribe = createEvent();
const unsubscribe = createEvent();
const target = createEvent();

// Use rxSample
rxSample({
  source: mockChannel,
  subscribeOn: subscribe,
  unsubscribeOn: unsubscribe,
  target,
});

// Example usage of events
// Start subscription to mockChannel
sample({
  clock: subscribeTriggered, // Some event
  target: subscribe,
});

mockChannel.next("some data"); // Send data

sample({
  clock: unsubscribeTriggered, // Some event
  target: unsubscribe,
});

Parameter Description

The rxSample function takes a single argument — an object with four required parameters:

type Input<D> = {
  source: Observable<D>;
  subscribeOn: Event<unknown>;
  unsubscribeOn: Event<unknown>;
  target: EventCallable<D>;
};

type InputWithStore<D> = {
  source: Store<Observable<D>>;
  subscribeOn: Event<unknown>;
  unsubscribeOn: Event<unknown>;
  target: EventCallable<D>;
};
  • source: Observable<D> — The Observable to subscribe to.
  • subscribeOn: EventCallable<S> — An Effector event that triggers the subscription to source.
  • unsubscribeOn: EventCallable<U> — An Effector event that triggers the unsubscription from source.
  • target: EventCallable<D> | EventCallable<void> — An Effector event where data from source will be sent, or a void event to execute side effects.

How It Works

  • Subscribe to the Observable: When the subscribeOn event triggers, the function subscribes to the specified source and starts sending data from the Observable to the target.

  • Unsubscribe from the Observable: When the unsubscribeOn event triggers, the function unsubscribes from source, freeing resources and stopping the data flow.

  • Store the Subscription: The subscription is stored in an internal Effector store ($subscription), allowing easy unsubscription management and ensuring that the subscription is always properly terminated.

Detailed Example

Suppose we have an Observable representing a stream of messages, and we want to manage subscriptions to this stream using Effector events.

You can see example here: codesandox

Common Use Cases

  • Managing Real-Time Data Subscriptions: For example, news feeds, chat messages, server updates.

  • Integration with Existing Systems: rx-sample is ideal for scenarios where you need to manage subscriptions to Observables within your application using Effector events.

Additional info

Special thanks to VOISO frontend developers:

no-treasure/
Arseniy
AndreyTheWeb/
Andrey

Keywords

FAQs

Package last updated on 19 Sep 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc