wooksjs について
wooksjs は、HTTP、CLI、WebSocket、ワークフローに対応する Node.js 向けの型付きコンポーザブルフレームワークです。AsyncLocalStorage でイベントコンテキストを伝播し、`req`/`res` の引数やミドルウェアチェーンなしでリクエストやイベントのデータにアクセスできます。
主な機能
- 01型付きコンポーザブル API
- 02AsyncLocalStorage によるイベントコンテキスト伝播
- 03HTTP、CLI、WebSocket、ワークフロー用アダプター
- 04単体利用できる WebSocket クライアント
- 05HTTP ボディ、静的ファイル、プロキシ用ユーティリティ
活用シーン
- 01Node.js の HTTP ルートやサービスの構築
- 02コマンドラインアプリの開発
- 03WebSocket サーバーやクライアントの実装
- 04HTTP 出口を含むワークフローの構成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ wooksjs/ wooksjs --skill wooksjsインストール後、Claude Code で/wooksjsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/event-cli.mdevent-core.mdevent-http.mdevent-wf.mdevent-ws.mdhttp-body.mdhttp-proxy.mdhttp-request.mdhttp-response.mdhttp-static.mdrouter.mdwf-advanced.mdwf-outlets.mdws-client.md詳細
wooksjs
Node.js 向けの型付きコンポーザブルフレームワークです。リクエスト/イベントデータのあらゆる要素にコンポーザブル関数を通じてアクセスします。req/res パラメーターやミドルウェアチェーンはありません。アダプター:HTTP、CLI、WebSocket、ワークフロー。単体で使える WebSocket クライアントもあります。
インストール
| パッケージ | インストール | ピア依存関係のメモ |
|---|---|---|
@wooksjs/event-http | npm i wooks @wooksjs/event-http | — |
@wooksjs/event-cli | npm i wooks @wooksjs/event-cli | — |
@wooksjs/event-ws | npm i wooks @wooksjs/event-ws ws | ws ^8.0.0 が必要 |
@wooksjs/event-wf | npm i wooks @wooksjs/event-wf | ピア依存関係として @wooksjs/event-http と @wooksjs/http-body が任意(HTTP アウトレット) |
@wooksjs/http-body | npm i @wooksjs/http-body | ピア依存関係として @wooksjs/event-core、@wooksjs/event-http が必要 |
@wooksjs/http-static | npm i @wooksjs/http-static | ピア依存関係として @wooksjs/event-http が必要 |
@wooksjs/http-proxy | npm i @wooksjs/http-proxy | ピア依存関係として @wooksjs/event-http が必要 |
@wooksjs/ws-client | npm i @wooksjs/ws-client | ws は任意 — Node のみ。ブラウザーではネイティブの WebSocket を使用します |
依存関係マップ
event-core <- wooks <- adapters: event-http, event-cli, event-ws, event-wf
event-http <- utilities: http-body, http-static, http-proxy
ws-client: standalone (no event-core dependency)
- ユーティリティはピア依存関係として特に
event-httpを必要とします(http-bodyはevent-coreも必要とします)。 event-wfでは、ピア依存関係として@wooksjs/event-httpと@wooksjs/http-bodyが任意です。HTTP アウトレットを使用する場合は、両方をインストールしてください。
アーキテクチャ
すべてのパブリック API は defineWook で作成されるコンポーザブルで、AsyncLocalStorage を介して伝播される型付きスロットコンテナー(key/cached/cachedBy/slot)である EventContext ごとにキャッシュされます。パラメーターを渡さずにどこからでもコンテキストを取得するには、current() を呼び出します。親コンテキストのチェーンを使うと、ネストしたイベント(HTTP → ワークフロー、HTTP → WS アップグレード)から親のスロットを読み取れます。詳細:event-core.md。
クイックスタート
import { createHttpApp, useRouteParams } from '@wooksjs/event-http'
const app = createHttpApp()
app.get('/hello/:name', () => `Hello, ${useRouteParams().get('name')}!`)
app.listen(3000)
多くのリファレンスファイルの末尾には「ルールと注意点」の表があります。コードを書く前に読んでください。
主要なインポート
// event-core — context engine, custom adapters
import { key, cached, cachedBy, slot, defineEventKind, defineWook,
EventContext, run, current, tryGetCurrent, createEventContext,
useRouteParams, useEventId, useLogger, routeParamsKey, eventTypeKey,
ContextInjector, getContextInjector, replaceContextInjector, resetContextInjector } from '@wooksjs/event-core'
// event-http — HTTP server + request/response composables
import { createHttpApp, useRequest, useResponse, useHeaders, useCookies,
useUrlParams, useAuthorization, useAccept, HttpError,
prepareTestHttpContext, DEFAULT_FORWARD_HEADERS } from '@wooksjs/event-http'
// http-body — parsed request bodies (JSON, form-data, urlencoded)
import { useBody } from '@wooksjs/http-body'
// http-static — file serving
import { serveFile } from '@wooksjs/http-static'
// http-proxy — reverse proxy
import { useProxy } from '@wooksjs/http-proxy'
// event-cli — command-line apps
import { createCliApp, useCliOptions, useCliOption,
useCliHelp, useAutoHelp, useCommandLookupHelp } from '@wooksjs/event-cli'
// event-ws — WebSocket server
import { createWsApp, useWsConnection, useWsMessage, useWsRooms, useWsServer,
currentConnection, prepareTestWsConnectionContext, prepareTestWsMessageContext } from '@wooksjs/event-ws'
// event-wf — workflows
import { createWfApp, useWfState, StepRetriableError } from '@wooksjs/event-wf'
// ws-client — standalone WS client (browser + Node)
import { createWsClient } from '@wooksjs/ws-client'
参考資料
タスクに合った参考ファイルを読んでください。すべてのファイルを読み込まず、必要なものだけを確認してください。
| ドメイン | ファイル | 読み込むタイミング |
|---|---|---|
| ルーティング | router.md | ルートパターン、パラメーター、ワイルドカード、正規表現、パスビルダー、設定 |
| コンテキストエンジン | event-core.md | スロット、コンポーザブル、EventContext、カスタムアダプターを扱う場合 |
| HTTP コア/ルーティング | event-http.md | HTTP アプリの作成、ルーティング、サーバーのライフサイクル、セキュリティヘッダー |
| HTTP リクエスト | http-request.md | ヘッダー、Cookie、クエリパラメーター、raw body、認証を読み取る場合 |
| HTTP レスポンス | http-response.md | ステータス、ヘッダー、Cookie、キャッシュ、エラー、ストリーミング、テスト |
| ボディ解析 | http-body.md | リクエストボディの解析(useBody):JSON、form-data、urlencoded 型 |
| 静的ファイル | http-static.md | ファイル/ディレクトリの配信(serveFile)、範囲、キャッシュヘッダー |
| HTTP プロキシ | http-proxy.md | リクエストのプロキシ/転送、ヘッダー/Cookie のフィルタリング、allowedHosts |
| CLI アプリ | event-cli.md | CLI ツールの構築、コマンドルーティング、オプション、ヘルプシステム |
| WebSocket サーバー | event-ws.md | WS サーバー、ルーム、ブロードキャスト、メッセージルーティング、ワイヤープロトコル |
| ワークフローのコア | event-wf.md | ステップ、フロー、スキーマ構文、一時停止/再開、useWfState |
| ワークフローのアウトレット | wf-outlets.md | HTTP/メール配信、状態戦略、トークン、トリガーハンドラー |
| ワークフローの高度な機能 | wf-advanced.md | 親コンテキスト、スパイ、エラー処理、テスト |
| WS クライアント | ws-client.md | ブラウザー/Node WS クライアント、RPC、サブスクリプション、再接続 |
横断的な参照先
- 親コンテキストチェーン(HTTP → ワークフロー、HTTP → WS):wf-advanced.md
- アダプター間で共有されるルーター(
createCliApp({}, http)など):router.md - パフォーマンス — ハンドラーごとにコンテキストを一度だけ解決する:event-http.md
- ステータスの自動推論(メソッド × ボディ → ステータス):event-http.md
- WS ワイヤープロトコル(3 種類のメッセージ形式):event-ws.md
- Express/Fastify/H3 との統合は別パッケージです —
@wooksjs/express-adapter、@wooksjs/fastify-adapter、@wooksjs/h3-adapter。ドキュメント:https://wooks.moost.org/webapp/integrations/
関連項目
- ドキュメントサイト:https://wooks.moost.org
- ソース:https://github.com/wooksjs/wooksjs