small tweaks

This commit is contained in:
EthanShoeDev
2025-10-07 10:19:45 -04:00
parent 8e7ec01e28
commit e4139c6f7b
7 changed files with 99 additions and 32 deletions

View File

@@ -16,11 +16,42 @@ Peer dependencies (you manage): `react`, `react-native`.
### Usage
This package exposes a native Rust module for SSH transport. For a complete,
working integration, see the example app in this monorepo at `apps/mobile`.
working integration, see the example app:
- https://github.com/EthanShoeDev/fressh/tree/main/apps/mobile
### API overview
High-level API surface (see code for full types):
```ts
import { RnRussh } from '@fressh/react-native-uniffi-russh';
await RnRussh.uniffiInitAsync();
const conn = await RnRussh.connect({
host: 'example.com',
port: 22,
username: 'me',
security: { type: 'password', password: '...' },
onServerKey: async () => true,
});
const shell = await conn.startShell({ term: 'Xterm' });
shell.addListener(
(ev) => {
// handle TerminalChunk or DropNotice
},
{ cursor: { mode: 'live' } },
);
```
### Links
- Changelog: [`CHANGELOG.md`](./CHANGELOG.md)
- Contributing: see the monorepo guide at
[`../../CONTRIBUTING.md`](../../CONTRIBUTING.md)
- Changelog:
[`CHANGELOG.md`](https://github.com/EthanShoeDev/fressh/blob/main/packages/react-native-uniffi-russh/CHANGELOG.md)
- Contributing:
[`CONTRIBUTING.md`](https://github.com/EthanShoeDev/fressh/blob/main/CONTRIBUTING.md)
- API source:
[`src/api.ts`](https://github.com/EthanShoeDev/fressh/blob/main/packages/react-native-uniffi-russh/src/api.ts)
- License: MIT

View File

@@ -1,6 +1,6 @@
{
"name": "@fressh/react-native-uniffi-russh",
"homepage": "https://github.com/EthanShoeDev/fressh",
"homepage": "https://github.com/EthanShoeDev/fressh#readme",
"license": "MIT",
"description": "Uniffi bindings for russh",
"version": "0.0.1",
@@ -52,15 +52,23 @@
"release": "GITHUB_TOKEN=$(gh auth token) release-it",
"release:dry": "release-it --dry-run"
},
"keywords": [
"react-native",
"ios",
"android"
],
"repository": {
"type": "git",
"url": "git+https://github.com/EthanShoeDev/fressh.git"
},
"bugs": {
"url": "https://github.com/EthanShoeDev/fressh/issues"
},
"keywords": [
"react-native",
"ssh",
"russh",
"uniffi",
"rust",
"expo",
"android",
"ios"
],
"author": "EthanShoeDev <13422990+EthanShoeDev@users.noreply.github.com> (https://github.com/EthanShoeDev)",
"publishConfig": {
"registry": "https://registry.npmjs.org/"

View File

@@ -24,7 +24,7 @@
"dependsOn": ["build:bob"],
},
"typecheck": {
"dependsOn": ["build:native"],
"dependsOn": ["build:native", "build:bob"],
},
// Special tasks

View File

@@ -11,28 +11,33 @@ defaults and a bridge for input and output.
pnpm add @fressh/react-native-xtermjs-webview react-native-webview
```
Peer dependencies: `react`, `react-dom` (for web), `react-native-webview`.
Peer dependencies: `react`, `react-native-webview`.
### Usage
See `apps/mobile` in this monorepo for a complete example. Basic usage:
For a complete production example, see the mobile app:
https://github.com/EthanShoeDev/fressh/tree/main/apps/mobile
Basic usage:
```tsx
import React, { useRef } from 'react';
import {
XtermJsWebView,
type XtermWebViewHandle,
} from '@fressh/react-native-xtermjs-webview';
import type { XtermWebViewHandle } from '@fressh/react-native-xtermjs-webview';
import { XtermJsWebView } from '@fressh/react-native-xtermjs-webview';
export function Terminal() {
const termRef = useRef<XtermWebViewHandle | null>(null);
return (
<XtermJsWebView
ref={termRef}
onInitialized={() =>
termRef.current?.write(new TextEncoder().encode('hello'))
}
onData={(input) => console.log('user input:', input)}
onInitialized={() => {
const hello = new TextEncoder().encode('hello');
termRef.current?.write(hello);
}}
onData={(input) => {
console.log('user input:', input);
}}
/>
);
}
@@ -60,8 +65,14 @@ transparency and debugging.
### Links
- Changelog: [`CHANGELOG.md`](./CHANGELOG.md)
- Contributing: see the monorepo guide at
[`../../CONTRIBUTING.md`](../../CONTRIBUTING.md)
- Example: `apps/mobile`
- Changelog:
[`CHANGELOG.md`](https://github.com/EthanShoeDev/fressh/blob/main/packages/react-native-xtermjs-webview/CHANGELOG.md)
- Contributing:
[`CONTRIBUTING.md`](https://github.com/EthanShoeDev/fressh/blob/main/CONTRIBUTING.md)
- Example app:
[`apps/mobile`](https://github.com/EthanShoeDev/fressh/tree/main/apps/mobile)
and source usage:
[`apps/mobile/src/app/(tabs)/shell/detail.tsx`](<https://github.com/EthanShoeDev/fressh/blob/main/apps/mobile/src/app/(tabs)/shell/detail.tsx>)
- API source:
[`src/index.tsx`](https://github.com/EthanShoeDev/fressh/blob/main/packages/react-native-xtermjs-webview/src/index.tsx)
- License: MIT

View File

@@ -15,6 +15,24 @@
"exports": {
".": "./dist/index.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/EthanShoeDev/fressh.git"
},
"bugs": {
"url": "https://github.com/EthanShoeDev/fressh/issues"
},
"homepage": "https://github.com/EthanShoeDev/fressh#readme",
"keywords": [
"react-native",
"xterm",
"webview",
"terminal",
"ssh",
"expo",
"android",
"ios"
],
"scripts": {
"fmt": "cross-env SORT_IMPORTS=true prettier --write .",
"fmt:check": "cross-env SORT_IMPORTS=true prettier --check .",
@@ -33,7 +51,6 @@
},
"peerDependencies": {
"react": "19.1.0",
"react-dom": "19.1.0",
"react-native-webview": "13.15.0"
},
"devDependencies": {