← 返回首頁
Chris Tate
Chris Tate
@ctatedev
1,135🔁 54
𝕏 (Twitter)🔥🔥
AI 中文摘要Claude 生成

核心定位:本地服務模擬器,用於測試和 CI 環境

「emulate」是一個服務模擬器,讓外部整合變得容易測試、穩定運行,並為 Agent、CI 或任何需要確定性的環境提供可預測的行為。它不是 mock,而是完整狀態保持的生產級保真度 API 模擬。

零配置啟動與多服務支持

  • 執行 npx emulate 即可無需設定檔啟動所有服務
  • 預設服務於 localhost 自動遞增埠號啟動:Vercel(4000)、GitHub(4001)、Google(4002)
  • 支援 CLI 選項自訂服務選擇、埠號或透過 YAML/JSON 載入種子設定
  • 提供程式設計 API 供 Node.js 應用直接使用,可在測試框架(Vitest、Jest)中作為 beforeAll/afterEach hooks 整合

Vercel API 完整實現

emulate 支援完整的 Vercel API,覆蓋使用者、團隊、專案、部署、網域、環境變數等端點,所有操作具有狀態持久性:

  • 使用者與團隊管理:認證使用者檢索、團隊建立、成員管理
  • 專案與部署:支援環境變數、Git 整合、版本 v6–v13 相容性、自動轉換部署至 READY 狀態
  • 域名驗證與環境變數加密
  • 遊標式分頁支援搜尋和篩選

GitHub API 與 OAuth 完整支持

涵蓋 REST API 的廣泛功能,包括:

  • 使用者、組織、repo 完整 CRUD
  • Issue、Pull Request、Comment、Review 狀態管理與轉換事件
  • 分支保護規則、標籤、里程碑、Git 資料結構(commit、tree、blob、tag)
  • 搜尋功能(支援完整查詢語法:user、org、language、topic、stars、forks 等)
  • Actions 工作流程、檢查執行、成品、秘密管理
  • Webhook 支援實時 HTTP 遞送至註冊 URL
  • GitHub App 支援 JWT 驗證與安裝存取 token

OAuth 應用嚴格驗證 client_id,若未配置則向後相容接受任意 client_id;GitHub App 支援完整的私密金鑰驗簽與事件 webhook 遞送,包括 installation 欄位與可選的 X-Hub-Signature-256 標頭。

Google OAuth 2.0 與 OpenID Connect

實現完整的 OAuth 流程,無需實際連線 Google:

  • 授權端點、token 交換、使用者資訊檢索
  • OpenID Connect 探索文件與 JSON Web Key Set (JWKS)
  • 支援可配置的 OAuth client 與重新導向 URI

靈活的設定與驗證機制

  • YAML 配置支援使用者、token、OAuth 應用、GitHub App(含私密金鑰與權限定義)、webhook URL
  • Token 驗證支援 Authorization: BearerAuthorization: token 標頭格式
  • Vercel 支援透過 teamIdslug 查詢參數進行團隊範疇限制;GitHub 公開 repo 無需驗證,私有 repo 與寫入操作需有效 token

架構與擴展性

核心基於 Hono HTTP 伺服器與內存 Store,提供通用 Collection<T> 實例支援 CRUD、索引、篩選與分頁。各服務外掛於共享應用註冊路由,所有狀態變更透過中央 Store 管理,確保跨服務的資料一致性與事件同步。程式庫結構清晰,CLI 由 commander 驅動,支援 Next.js 文件網站。