@alma3lol/reactive-process
TypeScript icon, indicating that this package has built-in type declarations

2.0.3 • Public • Published

ReactiveProcess

An npm process moduling package made with RxJS

Installation

Using npm:
npm install --save @alma3lol/reactive-process
Using yarn:
yarn add @alma3lol/reactive-process

Usage

Simple enough:

import { ReactiveProcess } from '@alma3lol/reactive-process';

const ls = ReactiveProcess.create("ls", ["-lAsh"], {
	next: (cast) => { /* handle cast */ },
	complete: () => { /* handle complete */ }
});

cast Object

The cast object is just an object with 1 of 3 properties: stdout, stderr or status.

Stdout: This is the output of the process.
Stderr: This is the error stream of the process.
Status: This is the status of the process. It can be either Running or Stopped.

Other process properties & functions

Properties

The process has other properties including all RxJS Subject's and the following:

  • cmd: The executed command.
  • args: Arguments passwed to the command.
  • process: The core process.
  • pid: The process ID.
  • exitCode: The process exit code.

Functions

Functions include all RxJS Subject's and start function:

  • start: A function to start the process. (see blow for more details)

Usage with MobX

Reactive Process is a actually a class that extends RxJS' Subject, which can be treated as a Model.
The base class name for Reactive Process is Model and the return value of ReactiveProcess.create(...) is an instance of Model

In code, it should look as follows:

import { observable } from 'mobx';
import { ReactiveProcess } from '@alma3lol/reactive-process';

class Processes {
	@observable processes: ReactiveProcess.Model[] = [];
	addProcess(process: ReactiveProcess.Model) {
		this.processes.push(process);
	}
}

Model

The Model class is an extend of RxJS' Subject and inherts all of it's functionality.
You can subscribe to it manually whenever/wherever needed.

ReactiveProcess.create vs ReactiveProcess.Model

There's a small difference between .create & .Model in ReactiveProcess: Using .Model doesn't start the process upon initiation.

To start the process when using .Model, you need to call Model.start:

const model = new ReactiveProcess.Model(...);
model.start();
/* OR */
const model = new ReactiveProcess.Model(...).start();

Start

This function has the following call signature:

() => this

It returns this which is the model's instance itself.

GOALS

  • Add support for deamon process
  • Add stdin support

Readme

Keywords

none

Package Sidebar

Install

npm i @alma3lol/reactive-process

Weekly Downloads

1

Version

2.0.3

License

MIT

Unpacked Size

18 kB

Total Files

19

Last publish

Collaborators

  • alma3lol