astrid-runtime/sdk-js

JavaScript and TypeScript SDK for building Astrid capsules.

解決的問題

它提供了一種使用 JavaScript 和 TypeScript 而不是 Rust 來建構「膠囊」(隔離的可移植二進位檔案)的方法。這讓開發人員可以使用熟悉的類 Node.js API 和 TypeScript 裝飾器來建立模組化組件,這些組件可以在無需更改主機 ABI 的情況下由 Astrid 執行階段核心執行。

工作原理

該 SDK 使用建置流水線將 TypeScript 程式碼轉換為 WebAssembly (Wasm) 組件。該過程包括:

  1. Typechecking: tsc 將 TypeScript 編譯為 JavaScript。
  2. Bundling: esbuild 將程式碼和 SDK 打包成單個 ESM 模組。
  3. Componentization: ComponentizeJS 使用 StarlingMonkey 將套件轉換為 wasm32-wasip2 組件。
  4. Packaging: 基於 Rust 的工具將生成的 Wasm 檔案和 Capsule.toml 設定打包成 .capsule 封存檔。

適用對象

在建構 Astrid 膠囊時比起 Rust 更喜歡 JavaScript 和 TypeScript 開發體驗的開發人員,以及正在建構守護進程模式工作負載的開發人員(在這種情況下,JS 膠囊比 Rust 更大的二進位檔案大小是可接受的權衡)。

亮點

  • 熟悉的 API: 使用 node:fs/promisesnode:child_process 和 WHATWG fetch。
  • TypeScript 裝飾器: 使用 @capsule@tool@install 等裝飾器來定義膠囊行為和生命週期鉤子。
  • 語言無關: 生成與 Rust SDK 相同的 .capsule 封存檔格式和 WIT 契約,使得從核心的角度來看二進位檔案是可互換的。
  • 整合的建置工具鏈: 包含一個建置編排器,管理從原始碼到最終封存檔的整個流水線。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案