@aufbau/lsp
此软件包以 Web Assembly 的形式运行 Aufbau 语言服务器 .
安装
npm install @aufbau/lsp
直接服务器
loadLspServer() 负载 lsp.wasm 并同步运行服务器
调用 JavaScript 线索 。 默认加载器支持浏览器和节点:
import { loadLspServer } from "@aufbau/lsp";
const server = await loadLspServer();
const responses = server.process({
jsonrpc: "2.0",
id: 1,
method: "initialize",
params: { capabilities: {} },
});
长期运行的验证搜索屏蔽了呼叫线. 在浏览器中,请使用 在网页必须保持响应时,工人运输.
工人运输
loadLspServerWorker() 只有浏览器。 它创建一个模块Web Worker和
期望浏览器 Worker 事件界面。 它不支持节点
node:worker_threads API (英语).
import { loadLspServerWorker } from "@aufbau/lsp";
const server = await loadLspServerWorker();
server.subscribe((message) => {
console.log(message);
});
节点应用程序应当使用 loadLspServer() 除非他们自己提供
适配器围绕 node:worker_threads。 。 。 .
文件、导入和包括
服务器跟踪客户端打开的文档(通过 textDocument/didOpen(中文(简体) )
并决心 import "other.mm0"; 财务报告和审定财务报表 include "other.auf"; 反对
打开文档,相对于导入文档的 URI 。 所以,举例来说,一个
import "prelude.mm0"; 内 file:///aufbau-editor/doc1.mm0 寻找
file:///aufbau-editor/prelude.mm0。带有理论的证明文件配对
在相应的路径上.
从 CDN 装入
软件包是普通的 <script type="importmap"> 条目——无捆绑和
无构建步骤 :
<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>
浏览器拒绝从跨源脚本构建一个工作人, CORS 这样做
别拿起那个 所以当包裹从另一个来源送达时,
loadLspServerWorker() 靴子的工人来自同一来源 blob: 用户 URL
只有语句导入真正的工人模块。 这对打电话的人来说是透明的,
但规定内容-安全政策的一页必须允许:
worker-src blob:; script-src 'self' https://esm.sh; connect-src 'self' https://esm.sh
(单位:千美元)connect-src 盖工人的 fetch 联 合 国 lsp.wasm(.)通过自己的
options.worker 或者说 options.workerUrl 绕过通路.