Releases: khirotaka/restexec
Releases · khirotaka/restexec
v1.0.0
🎉 Initial Release
restexec は、Deno のサンドボックス化されたランタイムを使用して、HTTP 経由で TypeScript コードを安全に実行する REST API サービスです。
✨ 主な機能
コア API エンドポイント
POST /execute- TypeScript コードの実行と結果の取得POST /lint- deno lint によるコード品質チェックPUT /workspace- TypeScript コードファイルの保存GET /health- サーバーステータスの監視
セキュリティ機能
- 明示的な権限システム: Deno の許可フラグによる厳格なアクセス制御
- プロセス分離: 各実行は独立した子プロセスで実行
- パストラバーサル防止:
../などの攻撃パターンをブロック - 環境変数の分離: リクエストごとの一時的な環境変数
- 事前キャッシュ依存関係:
--cached-onlyフラグによる実行時ダウンロードの禁止 - 外部ライブラリ(プリキャッシュ済み)
以下のライブラリがすぐに利用可能です:
- es-toolkit v1.42.0 - モダンユーティリティライブラリ
- date-fns v4.1.0 - 日付操作
- zod v4.1.12 - スキーマバリデーション
- nanoid v5.1.6 - ユニーク ID 生成
- decimal.js v10.6.0 - 高精度小数演算
- papaparse v5.5.3 - CSV パーサー
その他の機能
- Markdown コードブロック抽出: LLM 生成レスポンスからのコード自動抽出
- カスタム環境変数: 実行時に最大50個の環境変数を渡すことが可能
- 設定可能なタイムアウト: 1ms〜300秒(デフォルト: 5秒)
- 包括的なエラーハンドリング: 詳細なエラータイプとメッセージ
🛠 技術スタック
- Runtime: Deno 2.5.6
- Framework: Oak v17.1.6
- Container: Alpine Linux + Docker
- Language: TypeScript (strict mode)
📦 デプロイメント
Docker
docker compose up -d
推奨リソース
- CPU: 500m (request) / 2 (limit)
- Memory: 512Mi (request) / 2Gi (limit)
📚 ドキュメント
まずは、Claude Codeにオンボーディングを依頼してください。
また、詳細なドキュメントが specs/ ディレクトリに含まれています:
- API.md - 実行 API 仕様
- Security.md - セキュリティモデル
- Configuration.md - 設定オプション
- Libraries.md - ライブラリ管理
🚀 クイックスタート
# コードを保存
curl -X PUT http://localhost:3000/workspace \
-H "Content-Type: application/json" \
-d '{"codeId": "hello", "code": "console.log(JSON.stringify({msg: \"Hello, World!\"}));"}'# 実行
curl -X POST http://localhost:3000/execute \
-H "Content-Type: application/json" \
-d '{"codeId": "hello"}'⚠️ 既知の制限事項
- デフォルトでネットワークアクセス・ファイル書き込みは無効
- すべての外部ライブラリはビルド時にキャッシュが必要
- 単一ファイル実行のみ対応(モジュールエクスポート非対応)
🎯 想定ユースケース
- API 自動化とワークフロー
- 分離環境でのデータ処理
- LLM によるコード生成・実行
Full Changelog: https://github.com/khirotaka/restexec/commits/v1.0.0