npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

rtn-dev-console

v0.3.0

Published

Cross platform terminal Fabric component for react-native using SwiftSH/SwiftTerm (WIP) for iOS and Termux (TODO) for android.

Downloads

4

Readme

rtn-dev-console

Cross-platform terminal Fabric component for React Native, leveraging SwiftSH/SwiftTerm for iOS, with plans for Termux integration on Android. This initial release introduces a powerful tool for integrating SSH terminal functionality into React Native applications.

Note: This component currently supports the new React Native architecture. Support for the legacy architecture may be added based on community requests.

Features

  • iOS Support: Employs SwiftSH/SwiftTerm for comprehensive SSH connectivity and terminal emulation.
  • Android Support: Android support with feature parity planned for upcoming release.
  • Flexible Configuration: Customize terminal appearance, behavior, and functionality with props.
  • Event Handling: Receive terminal events to handle terminal events, state changes, command output, and more.
  • Command Execution: Execute commands programmatically within the terminal, or via the command line.

Installation

To add rtn-dev-console to your React Native project, use the following npm command:

npm install rtn-dev-console

yarn:

yarn add rtn-dev-console

Note: To use the example app, use ./build.sh in the rtn-dev-console project root first to pack and install the local rtn-dev-console package.

Usage

Add the SshTerminal component to your react native application, configuring it with appropriate props for establishing an SSH connection and handling events:

import React from 'react';
import { SshTerminal } from 'rtn-dev-console';

const initialText = 'Welcome to RNApp Terminal';

function App() {
  return (
    <SshTerminal
      hostConfig={{
        host: '192.168.1.1',
        port: 22,
        terminal: 'xterm',
      }}
      authConfig={{
        authType: 'password',
        username: 'your_username',
        password: 'your_password',
      }}
      initialText={initialText}
      oscHandlerCodes={[1234]}
      onOSC={
        ({ nativeEvent: { code, data } }: OSCEvent) =>
          console.log(`onOSC: ${code} | ${data}`)
      }
      onBell={() => console.log('onBell')}
      onClosed={
        ({ nativeEvent: { reason } }: ClosedEvent) =>
          console.log(`onClosed: ${reason}`)
      }
      onConnect={() => console.log('onConnect')}
      onTerminalLog={
        ({ nativeEvent: { logType, message } }: TerminalLogEvent) =>
          console.log(`onTerminalLog: ${logType}: ${message}`)
      }
      style={{ flex: 1 }}
    />
  );
}

This snippet demonstrates the basic setup required to initiate an SSH session with event handling. The initialText prop is used to set the initial text to display in the terminal upon connection.

Props and Events

The SshTerminal component offers a variety of props and event handlers for customizing the SSH session and terminal interface. These include connection details (hostConfig, authConfig), debug options, and callbacks for significant terminal events (onConnect, onClose, onSizeChanged, etc.).

Caveats

  • Basic functionality has been verified through the example app. However, as this is an early-stage project, terminal methods may exhibit instability.
  • Created for the new React Native architecture; legacy architecture support will be implemented upon request or as community contributions are made.

Special Thanks

Acknowledgments to those whose contributions have made this project possible:

  • Miguel de Icaza for SwiftTerm and the SwiftSH fork. These foundational libraries are crucial for SSH communication and terminal emulation on iOS.
  • Tommaso Madonia for SwiftSH and invaluable build script examples, enhancing the project's build process and capabilities.
  • Andrew Madsen for his work on building OpenSSL for ARM/Apple silicon Macs, facilitating secure connections.

Their efforts have significantly contributed to the development and functionality of rtn-dev-console, and we are grateful for their open-source contributions.

Contributing

We welcome contributions in all forms: bug reports, feature suggestions, and pull requests. Your involvement is key to the continued improvement and success of rtn-dev-console and the react native open source community.