{"id":37227594,"url":"https://github.com/gurezo/web-serial-rxjs","last_synced_at":"2026-05-31T09:01:14.498Z","repository":{"id":328505460,"uuid":"1115759560","full_name":"gurezo/web-serial-rxjs","owner":"gurezo","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-11T12:03:17.000Z","size":2628,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-11T13:35:45.313Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://gurezo.github.io/web-serial-rxjs/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gurezo.png","metadata":{"files":{"readme":"README.ja.md","changelog":null,"contributing":"CONTRIBUTING.ja.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-13T13:52:01.000Z","updated_at":"2026-05-11T12:03:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gurezo/web-serial-rxjs","commit_stats":null,"previous_names":["gurezo/web-serial-rxjs"],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/gurezo/web-serial-rxjs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gurezo%2Fweb-serial-rxjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gurezo%2Fweb-serial-rxjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gurezo%2Fweb-serial-rxjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gurezo%2Fweb-serial-rxjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gurezo","download_url":"https://codeload.github.com/gurezo/web-serial-rxjs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gurezo%2Fweb-serial-rxjs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33725060,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-15T03:22:47.281Z","updated_at":"2026-05-31T09:01:14.492Z","avatar_url":"https://github.com/gurezo.png","language":"TypeScript","funding_links":[],"categories":["Underlying Technologies"],"sub_categories":["RxJS"],"readme":"# web-serial-rxjs\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./assets/icon/web-serial-rxjs-icon.png\" alt=\"web-serial-rxjs プロジェクトアイコン\" width=\"512\" /\u003e\n\u003c/p\u003e\n\nWeb Serial API を最小限の Session 指向 RxJS API でラップする TypeScript ライブラリです。v2 では単一の `SerialSession` を公開し、アプリケーション側は `state$` / `isConnected$` / `receive$` / `lines$` / `errors$` を購読するだけで UI を駆動できます。BehaviorSubject による状態再構築・read loop・送信キューの自前実装は一切不要です。\n\n## 目次\n\n- [SerialSession（v2）の全体像](#serialsessionv2の全体像)\n- [機能](#機能)\n- [対応フレームワーク](#対応フレームワーク)\n- [ブラウザサポート](#ブラウザサポート)\n- [インストール](#インストール)\n- [ドキュメント](#ドキュメント)\n- [サンプル](#サンプル)\n- [プロジェクトアイコンについて](#プロジェクトアイコンについて)\n- [貢献](#貢献)\n- [ライセンス](#ライセンス)\n- [リンク](#リンク)\n\n## 機能\n\n- **Session 指向のリアクティブ API**: 1 つの `SerialSession` が `state$` / `isConnected$` / `receive$` / `lines$` / `errors$` と `connect$` / `disconnect$` / `send$` を公開\n- **UTF-8 テキストストリーム**: `receive$` は内部でストリーミング `TextDecoder` を用いてデコード済み。マルチバイト文字がチャンクにまたがっても正しく結合されます\n- **順序保証された送信キュー**: 並行する `send$` 呼び出しも内部キューで FIFO 処理され、呼び出し順に書き込まれます\n- **統一エラーチャネル**: すべての I/O エラーは `SerialError` に正規化され `errors$` に多重化されます\n- **明示的なライフサイクル**: `state$` は `idle` / `connecting` / `connected` / `disconnecting` / `unsupported` / `error` を emit するので UI から直接駆動できます\n- **TypeScript サポート**: 完全な TypeScript 型定義を同梱\n- **フレームワーク非依存**: 任意の JavaScript/TypeScript フレームワークまたはバニラ JavaScript で利用可能\n\n## 対応フレームワーク\n\nこのライブラリはフレームワーク非依存で、以下の環境で利用できます。\n\n- Angular\n- React\n- Svelte\n- Vanilla JavaScript / TypeScript\n\n## ブラウザサポート\n\nWeb Serial API は**デスクトップ**ブラウザでのみサポートされています。スマートフォンなどのモバイルブラウザには対応していません。\n\n対応しているデスクトップブラウザ：\n\n- **Chrome** 89+\n- **Edge** 89+\n- **Opera** 75+\n- **Firefox** 151+\n\n**Safari** は現時点で Web Serial API をサポートしていません。\n\n`connect$` を呼ぶ前の feature detection には `SerialSession.isBrowserSupported()` が使えます（同期的に `boolean` を返します）。\n\n## インストール\n\nnpm または pnpm を使用してパッケージをインストールします：\n\n```bash\nnpm install @gurezo/web-serial-rxjs\n# または\npnpm add @gurezo/web-serial-rxjs\n```\n\n### ピア依存関係\n\nこのライブラリは RxJS をピア依存関係として必要とします：\n\n```bash\nnpm install rxjs\n# または\npnpm add rxjs\n```\n\n**最小要件バージョン**: RxJS ^7.8.0\n\n## SerialSession（v2）の全体像\n\n機能一覧と **`SerialSession` 早見表**、**`SerialSessionState` 表**、**最小サンプル**の正本は次のパッケージドキュメントにあります。\n\n- **[SerialSession（v2）の概要](packages/web-serial-rxjs/docs/OVERVIEW.ja.md)**（[English](packages/web-serial-rxjs/docs/OVERVIEW.md)）\n\nnpm の [`@gurezo/web-serial-rxjs` README](packages/web-serial-rxjs/README.ja.md) は短い目次に留め、初回接続の手順は [クイックスタート](packages/web-serial-rxjs/docs/QUICK_START.ja.md) を参照してください。\n\n**`receive$`** と **`lines$`** をいつ使うか（ターミナル表示・バッファと、改行区切りログ・解析の違い）は [パッケージ README](packages/web-serial-rxjs/README.ja.md) の「`receive$` と `lines$`」にまとめています。\n\n## ドキュメント\n\n| ドキュメント | 用途 |\n| --- | --- |\n| **この README** | モノレポのハブ：機能要約、サンプル、貢献導線。 |\n| **[SerialSession（v2）の概要](packages/web-serial-rxjs/docs/OVERVIEW.ja.md)** | 公開面・`SerialSessionState` 早見、最小サンプル。 |\n| **[クイックスタート](packages/web-serial-rxjs/docs/QUICK_START.ja.md)** | 最短でポートを開いて購読するところまで。 |\n| **[高度な使用方法](packages/web-serial-rxjs/docs/ADVANCED_USAGE.ja.md)** | 行フレーミング、擬似リクエスト／レスポンス、リカバリ。 |\n| **[API リファレンス](packages/web-serial-rxjs/docs/API_REFERENCE.ja.md)** | オプション、`SerialSessionState`、`SerialError` の詳細。 |\n| **[v1 → v2 マイグレーション](packages/web-serial-rxjs/docs/MIGRATION_V2.ja.md)** | 削除された v1 API からの対応表。 |\n\n## サンプル\n\n以下の環境向けのサンプルを用意しています。\n\n- **[Angular](apps/example-angular/)** - Service を使用した Angular の例\n- **[React](apps/example-react/)** - カスタムフック（`useSerialSession`）を使用した React の例\n- **[Svelte](apps/example-svelte/)** - Svelte Store を使用した Svelte の例\n- **[Vanilla JavaScript](apps/example-vanilla-js/)** - バニラ JavaScript での基本的な使用方法\n- **[Vanilla TypeScript](apps/example-vanilla-ts/)** - RxJS を使用した TypeScript の例\n- **[Vue](apps/example-vue/)** - Composition API を使用した Vue 3 の例\n\n各サンプルは **connect・受信（ターミナル表示は `\\r` を保持するため `receive$` で連結）・send・disconnect** の最小動作確認用です。**`lines$`** は改行区切りログや解析向けであり、対話的シェル出力のミラーには **`receive$`** を使ってください。行フレーミングや応用パターンの詳細は [高度な使用方法](https://github.com/gurezo/web-serial-rxjs/blob/main/packages/web-serial-rxjs/docs/ADVANCED_USAGE.ja.md) に集約しています。\n\n各例には、セットアップと使用方法の説明を含む README が含まれています。\n\n## プロジェクトアイコンについて\n\nこのプロジェクトのアイコンには、[RxJS](https://rxjs.dev/) のロゴから着想を得たデザインに、\nWeb Serial を表すシリアルコネクタのモチーフを組み合わせたものを使用しています。\n\nこのアイコンは、本ライブラリが Web Serial API を RxJS ベースで扱うための\nライブラリであることを示す目的でのみ使用しています。\n\n本プロジェクトは **[ReactiveX](http://reactivex.io/) / [RxJS](https://rxjs.dev/) 公式とは関係のない独立したオープンソースプロジェクト** であり、\n公式な提携・承認・スポンサー関係はありません。\n\n## 開発とリリース戦略\n\nこのプロジェクトは**trunk-based開発**アプローチに従います：\n\n- **`main`ブランチ**: 常にリリース可能な状態\n- **短命ブランチ**: `feature/*`, `fix/*`, `docs/*` はプルリクエスト用\n- **リリース**: ブランチではなくGitタグ（例: `v1.0.0`）で管理\n- **バージョン保守**: 複数のメジャーバージョンを保守する必要がある場合のみ `release/v*` ブランチを追加\n\n詳細な貢献ガイドラインについては、[CONTRIBUTING.ja.md](CONTRIBUTING.ja.md) を参照してください。\n\n詳細なリリース手順については、[RELEASING.ja.md](RELEASING.ja.md) を参照してください。\n\n## 貢献\n\n貢献を歓迎します！詳細については、[貢献ガイド](CONTRIBUTING.ja.md)を参照してください：\n\n- 開発環境のセットアップ\n- コードスタイルガイドライン\n- コミットメッセージの規約\n- プルリクエストのプロセス\n- リリースプロセス\n\n英語版の貢献ガイドは [CONTRIBUTING.md](CONTRIBUTING.md) を参照してください。\n\nリリース手順については、[RELEASING.ja.md](RELEASING.ja.md)（または英語版は [RELEASING.md](RELEASING.md)）を参照してください。\n\n## ライセンス\n\nこのプロジェクトは MIT ライセンスの下で公開されています。詳細は [LICENSE](LICENSE) ファイルを参照してください。\n\n## リンク\n\n- **GitHub リポジトリ**: [https://github.com/gurezo/web-serial-rxjs](https://github.com/gurezo/web-serial-rxjs)\n- **イシュー**: [https://github.com/gurezo/web-serial-rxjs/issues](https://github.com/gurezo/web-serial-rxjs/issues)\n- **Web Serial API 仕様**: [https://wicg.github.io/serial/](https://wicg.github.io/serial/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgurezo%2Fweb-serial-rxjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgurezo%2Fweb-serial-rxjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgurezo%2Fweb-serial-rxjs/lists"}