@basilica-digital/maypop-sdk

中文文档
1.5.0发布于 2026/10/29Apache-2.0TypeScriptES Module零依赖构建来源已验证近 30 天下载 5973

在Maypop上运行的应用程序的浏览器SDK.

中文使用文档
文档目录13 节
  1. 安装
  2. 反应
  3. 当地发展东道方
  4. 维特
  5. 建设
  6. 下一个.js
  7. 认证开发
  8. 当地身份和受众
  9. 模拟整合和东道方行动
  10. 主机脚本兼容性
  11. 后端文物
  12. 发展
  13. 释放

鸡尾酒

用于在Maypop上运行的应用程序的框架中立浏览器SDK. 它揭露了 与主机相同的对象和能力 /sdk/v1.js 脚本: 身份, KV, Drive, AI, 集成, 多人游戏, 通知, 以及其他 API 在其中 类型 Maypop 合同.

安装

pnpm add @basilica-digital/maypop-sdk

从浏览器代码导入 SDK, 在使用 Maypop 主机前等待 能力:

import { maypop } from "@basilica-digital/maypop-sdk";

await maypop.ready();
const todos = await maypop.kv.list({ prefix: "todo/" });

默认和命名导出与 window.maypop这样 框架代码和脚本可以互操作而无需适配器:

import maypop, { type Maypop } from "@basilica-digital/maypop-sdk";

function currentUser(sdk: Maypop = maypop) {
  return sdk.user;
}

当一个框架在服务器上制作时,模块是安全的导入 。 访问 sDK 仍然扔出,因为能力属于浏览器托管的应用程序 届会。 打电话 getMaypop() 当一个 SSR 框架需要时从只浏览器代码中 明确推迟访问.

反应

React App可以订阅Maypop状态而无需手动协调主机 握手或效果清理:

import {
  useMaypopKV,
  useMaypopMode,
  useMaypopSession,
} from "@basilica-digital/maypop-sdk/react";

export function Counter() {
  const session = useMaypopSession();
  const mode = useMaypopMode();
  const count = useMaypopKV("counter", 0);

  if (session.status === "connecting") return <p>Connecting…</p>;
  if (session.status === "error") return <p>{session.error.message}</p>;

  return (
    <button
      disabled={mode === "read-only" || count.isMutating}
      onClick={() => count.setValue(count.value + 1)}
    >
      {count.value}
    </button>
  );
}

钩子自动使用主机SDK. MaypopProvider 仅需 在测试或未来的本地沙盒主机中注入另一个客户端 :

import { MaypopProvider } from "@basilica-digital/maypop-sdk/react";

<MaypopProvider client={sandboxClient}>
  <App />
</MaypopProvider>

当地发展东道方

维特

将 Maypop 插件添加到现有的 Vite 配置中 :

import { maypop } from "@basilica-digital/maypop-sdk/vite";
import { defineConfig } from "vite";

export default defineConfig({
  plugins: [maypop()],
});

建设

将等效插件添加到 Rsbuilding 配置 :

import { defineConfig } from "@rsbuild/core";
import { maypop } from "@basilica-digital/maypop-sdk/rsbuild";

export default defineConfig({
  plugins: [maypop()],
});

下一个.js

包装下一个.js配置 。 包装器只将其沙盒代理添加到 next dev; 构建和生产服务器保留原始配置 :

import { withMaypop } from "@basilica-digital/maypop-sdk/next";

export default withMaypop({
  output: "export",
});

框架的正常开发命令然后作为 Maypop 主机服务其 URL 包括路由程序打开或 刷新深的 URL 。 该应用程序使用生产SDK握手,iframe 权限,和 API 形状。 共享 KV 状态持续到 .maypop/local/kv.json,而驱动元数据与字节持续在 .maypop/local/drive/。 。 。 .

Next.js 绑定器也添加了机器的活跃网络地址到 allowedDevOrigins从另一个设备打开开发服务器 局域网装入并水合其客户端脚本。 任何配置的条目是 保留了下来.

身份、成员、KV、Drive、模拟MCP集成、共享卡预览和a 本地可提供通知收发箱。 他们的能力范围是: 通过报告 maypop.user.scopes; 需要其它能力的API失败 与 maypop/unsupported 当他们到达当地的宿主. maypop.apps.open() 组设置导航仍然无法进行,因为它们需要 Maypop产品外壳而不是应用API.

maypop.notify() 被默认捕获,而不是交付。 打开 开发主机的Maypop徽章,或访问 /_maypop/notifications,改为 检查请求的和已解决的收件人、头衔、身体和深层链接. 接获的电话持续 .maypop/local/notifications.json。 。 。 .

认证开发

创建 .maypop/local/dev.json 选择此机器为认证 能力。 吉特忽略了它与其余部分 .maypop/local/: 它选择一个 开发者账户并能够访问真实的应用数据或可计费的AI呼叫.

混合模式将 KV 和 Drive 保留在本地,同时转发一组明确的 通过账户认证的仅读或非数据能力 maypop auth数字 :

{
  "mode": "hybrid",
  "profile": "dev",
  "remoteCapabilities": ["ai", "members", "link", "mcp", "multiplayer"],
  "notifications": "inspect"
}

ai 包括聊天完成、流传、决定(类型分类、, 在TypeSafe的Jev模型上进行路由,取笑,并评分,图像,视频,音频, 转录,和 maypop.agent (开发主机为它的懒浏览器服务) 块. 这些呼叫使用所选账户的实际允许使用,并可以消费 学分. members 阅读真正的应用程序名册, link 启用服务器侧 URL 脱发, mcp 曝光该应用程序真正的连接 MCP 服务器和工具,以及 multiplayer 在装入Iroh JS/Wasm时使用真实的会合API 本地运行时间 。 KV和Drive继续留在当地,通知留在 探长 连接服务器 maypop mcp connect运行 maypop mcp link 在启动开发服务器之前在应用程序仓库中。 一个混合 配置无法结合真实 mcp 具备 .maypop/local/mcp.json 固定装置.

连接模式跳过本地 KV/ Drive 初始化并发送整个app API 表面到真实的应用程序 :

{
  "mode": "connected",
  "profile": "dev",
  "notifications": "inspect"
}

项目必须已经连接到 maypop init,并选择了 CLI 配置文件必须经过认证,并能够访问该应用程序。 奥米 profile 改为 使用通常的 CLI 选择规则,包括 MAYPOP_PROFILE 和简介 其 API URL 符合寄存器 。 节点开发主机读取 由 : maypop auth 薄荷薄荷, 应用范围会议本身。 保存的 CLI 证书和会话刷新符号 从未接触过应用程序代码,也从未在下列情况下被写入: .maypop/。 。 。 .

真正的通知交付需要连接模式和第二次明确 选入 :

{
  "mode": "connected",
  "notifications": "live"
}

使用 "notifications": "disabled" 完全取消通知许可. 默认是 "inspect" 在每一个开发模式中.

当地身份和受众

Sandbox 模式可以从匿名、读者、作家、编辑或管理员开始 收视者并出露出可塑观众. 这同样是公开的 身份、模式、范围、成员以及作为主机SDK的登录行为:

{
  "mode": "sandbox",
  "viewer": {
    "username": "Visitor",
    "role": "reader",
    "anonymous": true,
    "signInGrantsWrite": true,
    "signedInUsername": "Alice",
    "signedInRole": "writer"
  },
  "members": [
    { "username": "Bob", "role": "editor", "connected": false }
  ],
  "guestCount": 2
}

通话 maypop.signIn() 将本地会话升级 重新装入应用程序为已配置的登录查看器 。 本地API执行 只读 KV、 Drive 和通知范围, 因此直接请求不能绕过 浏览器 SDK 的权限检查 .

本地 KV 写入验证生产密钥和值限制 。 设定 "strictStorage": true 以额外强制执行承诺 .maypop/kv-policy.json 在当地拉和推的时候 预设和高级 政策使用的作用、关键模式和所有权的前提与 平台.

模拟整合和东道方行动

添加 .maypop/local/mcp.json 进行MCP发现、工具包装、呼叫和 代理工具, 不引用真正的外部整合 :

{
  "schemaVersion": 1,
  "servers": [
    {
      "id": "search",
      "name": "Fixture search",
      "url": "mock://search",
      "account": "[email protected]",
      "tools": [
        {
          "name": "lookup",
          "description": "Return a fixed search fixture.",
          "inputSchema": {
            "type": "object",
            "properties": { "query": { "type": "string" } }
          },
          "result": {
            "content": [{ "type": "text", "text": "Fixture result" }],
            "structuredContent": { "items": [] }
          }
        }
      ]
    }
  ]
}

maypop.link.to(path) 返回本地深链接,并 maypop.share() 打开一个 包含一个主机的卡片 。 带a的扣押通知 path 曝光一个 在本地应用程序中打开 动作在收发箱。 本地主机打开这些路 Maypop 这样做——应用程序在输入时加载路径 location.hash 财务报告和审定财务报表 maypop.launchPath ——如此一个应用程序,使这里的路线正确 路线正确 曾经出版。 没有任何人声称曾发表过本地链接,或者 已发出扣押通知.

本地无记名符號是随机的,每一次服务器运行,一个锁可以防止两次 从写入同一数据目录的开发服务器。 用别的 目录或查看器名称 :

maypop({
  dataDirectory: ".maypop/alice",
  username: "Alice",
});

本地主机是开发工具,而不是安全边界. 留着 将开发服务器绑入可信任的界面,除非项目本身是 安全地暴露出来.

这台机器属于什么 .maypop/local/:当地身份, dev.json、MCP固定装置、KV和Drive数据、捕获的通知和 锁上锁 开发服务器用它自己创建 .gitignore,所以它留下来 即使是Git的应用程序 .gitignore 没有提及它. .maypop/kv-policy.json 站在一边,承诺:平台阅读 并应用到每个已发布的版本。 在第一个 运行,服务器将旧版本直接写入 .maypop/ 输入 .maypop/local/它留下了一个旧的 .maypop/.lock 它在哪里,不再读 ; 与 git rm --cached .maypop/.lock。 。 。 .

锁只在写它的过程运行时保存. 它记录 process的 PID 和启动时间, 所以服务器留下的锁 ,或者它的沙盒重新启动并将其PID交给另一个进程 已经接管了 一个不关闭而退出的服务器仍然会去掉其锁.

绑定只会影响框架开发服务器. 生产建筑 仍然是普通的应用程序捆绑. maypop init 记录匹配的构建适配器 内 maypop.toml,以及 maypop publish 构建并上传其静态输出.

主机脚本兼容性

现有应用程序可以继续加载全局架构 :

<script src="https://api.dev.maypop.ai/sdk/v1.js"></script>

导入 @basilica-digital/maypop-sdk 相反,从软件包中安装相同的构件。 两者 窗体使用相同的主机握手和后端 API,两个都曝光 window.maypop。不要在一个应用程序中使用两种表格;运行时间为一元时间, 但一个就够了.

这个包是"Maypop"协议的来宾一面. 在Maypop外边, maypop.ready() 等待兼容的主机。 以上框架的整合 提供主机协议而不要求应用程序更改其SDK 进口.

后端文物

已出版的柏球还包含生成的主机脚本,懒惰能力 块、外壳文件、合同和Iroh WebAssembly运行时间 dist/。 。 。 . Maypop后端针入精确的软件包版本,并将这些文件嵌入其中 二进制,所以后端的构建从不依赖于SDK寄存器的移动分支.

源合同和运行时间可通过 @basilica-digital/maypop-sdk/source/v1 财务报告和审定财务报表 @basilica-digital/maypop-sdk/source/runtime 为了梅波自己的合同工具。 应用 代码应使用上述公共入口.

发展

所有维护的SDK代码都住在 src/ 作为类型脚本. pnpm build 汇编 npm 输入,主机为全球,懒散的能力块, shell 主机,注入脚本, 服务人员、申报和后端文物 dist/ 目录。 生成的 JavaScript 从来不是真理的来源, 不应该是 直接编辑.

伊洛赫跑步时间 iroh/;其生成的约束和WebAssembly是 所犯 iroh/prebuilt/ 因此普通软件包构建不需要 Rust/Wasm工具链。 更改后 iroh/src,安装 wasm32-unknown-unknown 目标, wasm-bindgen-cli 匹配被钉住的箱子 版本,和 二分法 wasm-opt,然后运行 :

just build-iroh

释放

版本跟随SemVer, 标记使用匹配 vX.Y.Z 形式。 在标记之前, 更新 package.json 和锁文件,然后运行:

pnpm install --frozen-lockfile
pnpm test
pnpm pack

正在推动匹配标记运行 npm 出版工作流程 。 第一次发布 必须由 npm 拥有者发布; 在此之后, 配置此寄存器为 软件包的可信出版商 .github/workflows/release.yml。 。 。 .

版本与发布记录

@basilica-digital/maypop-sdk 共发布 6 个版本,首次发布于 2026/09/21;过去 12 个月发布了 6 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.5.0latest2026/10/299 天前
1.4.02026/10/071 个月前
1.3.02026/09/301 个月前
1.2.02026/09/241 个月前
1.1.02026/09/221 个月前
1.0.02026/09/211 个月前

关于 @basilica-digital/maypop-sdk 的常见问题

@basilica-digital/maypop-sdk 是什么?

在Maypop上运行的应用程序的浏览器SDK.

如何安装 @basilica-digital/maypop-sdk?

在项目目录运行 npm install @basilica-digital/maypop-sdk,或使用 pnpm add / yarn add / bun add。

@basilica-digital/maypop-sdk 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@basilica-digital/maypop-sdk 支持 ESM 还是 CommonJS?

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

@basilica-digital/maypop-sdk 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@basilica-digital/maypop-sdk 可以商用吗?

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

@basilica-digital/maypop-sdk 的下载量有多少?

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

@basilica-digital/maypop-sdk 还在维护吗?

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