@aufbau/lsp

中文文档
0.0.19发布于 2026/11/12Apache-2.0ES Module零依赖构建来源已验证近 30 天下载 2314

Aufbau language server for browsers and JavaScript runtimes.

原始使用文档
文档目录5 节
  1. Install
  2. Direct server
  3. Worker transport
  4. Files, imports, and includes
  5. Loading from a CDN

@aufbau/lsp

This package runs the Aufbau language server as WebAssembly.

Install

npm install @aufbau/lsp

Direct server

loadLspServer() loads lsp.wasm and runs the server synchronously in the calling JavaScript thread. The default loader supports browsers and Node:

import { loadLspServer } from "@aufbau/lsp";

const server = await loadLspServer();
const responses = server.process({
  jsonrpc: "2.0",
  id: 1,
  method: "initialize",
  params: { capabilities: {} },
});

Long-running proof searches block the calling thread. In a browser, use the worker transport when the page must remain responsive.

Worker transport

loadLspServerWorker() is browser-only. It creates a module Web Worker and expects the browser Worker event interface. It does not support Node's node:worker_threads API.

import { loadLspServerWorker } from "@aufbau/lsp";

const server = await loadLspServerWorker();
server.subscribe((message) => {
  console.log(message);
});

Node applications should use loadLspServer() unless they provide their own adapter around node:worker_threads.

Files, imports, and includes

The server tracks the documents the client opens (via textDocument/didOpen) and resolves import "other.mm0"; and include "other.auf"; against open documents, relative to the importing document's URI. So, for example, an import "prelude.mm0"; in file:///aufbau-editor/doc1.mm0 looks for file:///aufbau-editor/prelude.mm0. A proof file pairs with the theory file at the corresponding path.

Loading from a CDN

The package works as a plain <script type="importmap"> entry — no bundler and no build step:

<script type="importmap">
  {
    "imports": {
      "@aufbau/lsp": "https://esm.sh/@aufbau/lsp"
    }
  }
</script>
<script type="module">
  import { loadLspServerWorker } from "@aufbau/lsp";

  const server = await loadLspServerWorker();
</script>

Browsers refuse to construct a Worker from a cross-origin script, and CORS does not lift that. So when the package is served from another origin, loadLspServerWorker() boots the worker from a same-origin blob: URL whose only statement imports the real worker module. This is transparent to callers, but a page that sets a Content-Security-Policy has to allow it:

worker-src blob:; script-src 'self' https://esm.sh; connect-src 'self' https://esm.sh

(connect-src covers the worker's fetch of lsp.wasm.) Passing your own options.worker or options.workerUrl bypasses the blob path entirely.

版本与发布记录

@aufbau/lsp 共发布 94 个版本,首次发布于 2026/05/04;过去 12 个月发布了 94 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.0.19latest2026/11/121 天前
0.0.19-canary.20261111T223547Z.95.gffdc3b940a7ccanary2026/11/121 天前
0.0.18-canary.20261021T223447Z.93.gb7a968e8aade2026/10/2222 天前
0.0.18-canary.20261020T233803Z.92.geb0b7920d37f2026/10/2123 天前
0.0.18-canary.20261020T000751Z.91.g9b142f78bcb12026/10/2024 天前
0.0.18-canary.20261018T140150Z.90.g32e23a749bfe2026/10/1826 天前

关于 @aufbau/lsp 的常见问题

@aufbau/lsp 是什么?

Aufbau language server for browsers and JavaScript runtimes.

如何安装 @aufbau/lsp?

在项目目录运行 npm install @aufbau/lsp,或使用 pnpm add / yarn add / bun add。

@aufbau/lsp 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/aufbau__lsp 是否存在。

@aufbau/lsp 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@aufbau/lsp 可以商用吗?

@aufbau/lsp 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@aufbau/lsp 的下载量有多少?

根据 npm 官方下载统计,@aufbau/lsp 在 2026/10/07 – 2026/11/05 这 30 天内被下载 2,314 次,日均约 77 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aufbau/lsp 还在维护吗?

最新版本 0.0.19 发布于 2026/11/12(1 天前);至今共发布 94 个版本,其中过去 12 个月发布了 94 个;首次发布于 2026/05/04。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。