# @keeganrelume/partner-embed 中文文档

规范地址：https://npmcn.com/package/%40keeganrelume/partner-embed/

版本：1\.0\.0-beta\.0
npm 元数据更新时间：2026-11-01T11:45:38.333Z
中文译文更新时间：2026-11-01T15:20:47.853Z
软件包许可：UNLICENSED

本文由上游 README 机器翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40keeganrelume/partner-embed
原文对照：https://npmcn.com/package/%40keeganrelume/partner-embed/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：86 kB，7 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2026-11-01T11:44:42.787Z
- 最新版本发布：2026-11-01T11:45:38.182Z
- 已发布版本数：2（近 12 个月 2 个）

## 中文简介

reume合作伙伴的前端SDK：将reume构建器与一个调用和几个事件处理程序放在您的页面上。

## 安装

```sh
npm install @keeganrelume/partner-embed
```

也可以使用：`pnpm add @keeganrelume/partner-embed`、`yarn add @keeganrelume/partner-embed`、`bun add @keeganrelume/partner-embed`

## README

# @keeganrelume / partner-embed

为remume合作伙伴提供的前端SDK。一个调用将重新构建器放在您的 页面;一些事件处理程序将其绑定到您的钱包。你永远不要碰那个框架 或者 `postMessage`.

> **临时包名。** 这篇文章发表于 `@keeganrelume/partner-embed` 直到 `@relume` 恢复NPM作用域，然后作为 `@relume/partner-embed`. API不会改变；只有导入路径才会。

的浏览器端 [重新启动合作伙伴协议v1](https://npmcn.com/package/docs/partner-protocol/v1.md) (部分4 和11)。搭配 [`@keeganrelume/partner-node`](https://npmcn.com/package/%40keeganrelume/node) 在你的后台， 它挂载这个SDK调用的会话路由。

## 安装

```sh
npm install @keeganrelume/partner-embed
```

```ts
import { Relume } from '@keeganrelume/partner-embed';
```

或者使用script标记，它定义 `window.Relume`：

```html
<script src="https://cdn.jsdelivr.net/npm/@keeganrelume/partner-embed@1.0.0-beta.0"></script>
```

没有运行时依赖项。缩小了大约6 KB。

## 快速入门

```ts
const relume = Relume.init('#relume', 'pk_live_…');

relume.onTopUp(async ({ required, balance }) => {
  await openCheckout(required - (balance ?? 0)); // your checkout
  relume.refreshCredits(); // the builder re-reads the balance
});
relume.onCreditsChanged(({ balance }) => setHeaderBalance(balance));
relume.onExport(({ siteId, downloadUrl }) => toast('Your site is ready'));
relume.onClose(() => router.back());
relume.onError(({ code, message }) => report(code, message));
```

建造者填充 `#relume`，所以给它一个大小(例如 `height: calc(100vh - 64px)`）. 在640px以下，它覆盖了整个视口 相反;通过 `fullScreenOnMobile: false` 把它放在容器里。你的 Page需要一个 `<meta name="viewport" content="width=device-width">` 为手机 报告它们的实际宽度。

[`examples/index.html`](https://npmcn.com/package/%40keeganrelume/partner-embed/examples/index.html) 是一个完整的合作伙伴页面。

## 它为你做了什么

-   上创建iframe `https://embed.relume.ai/?pk=…` 然后给它大小。
-   调用会话路由(`GET /relume/session`，由 `@keeganrelume/partner-node`)，当建造者问：什么时候开门，之前 会话过期，并在401之后。构建器无需重新加载即可更新。
-   仅从嵌入源上的构建器自己的窗口接受消息，并且 只发往那个原点。来自其他脚本或框架的消息将被忽略。
-   与构建器同意协议版本，因此任何一方都可以更改其 信息不破坏对方。
-   根据可发布键的允许起源检查页面的起源。这个 浏览器拒绝任何其他来源的帧，而帧不能说为什么， SDK启动了 `onError({ code: 'origin_not_allowed' })` 然后移除它。

## `Relume.init(target, publishableKey, options?)`

`target` 是一个选择器或元素。抛出一个 `TypeError` 如果匹配 什么都没有，或者钥匙不是 `pk_test_…`/`pk_live_…` 关键。

| 选项 | 默认的 | 它是做什么的 |
| --- | --- | --- |
| `sessionUrl` | `/relume/session` 在你的页面上 | 会话路由。在另一个原点上，它是用凭据获取的，所以它的CORS必须完全允许您的页面的原点（永远不会） `*`）。 |
| `fullScreenOnMobile` | `true` | 覆盖640像素以下的视口。 |
| `embedUrl` | `https://embed.relume.ai` | 建造者的主人。remume为您提供分期(`https://embed-staging.relume.ai`）。 |
| `apiUrl` | 推断出从 `embedUrl` | reume的API，用于允许的起源检查。以Relume的主机而闻名；如果没有，则跳过检查，并应用构建器自己的检查。 |

## 事件

每一个 `on…` 方法添加侦听器并返回删除侦听器的函数。

| 事件 | 有效载荷 | 当 |
| --- | --- | --- |
| `onTopUp` | `{ required, balance }` | 一项指控被拒绝。 `required` 是行动的代价在你的信用。 |
| `onCreditsChanged` | `{ balance }` | 建造者表现出的平衡改变了。当你的钱包没接电话时，你不会被解雇。 |
| `onExport` | `{ siteId, exportId, downloadUrl }` | 导出准备好了。 |
| `onClose` | 无 | 用户关闭了构建器。 |
| `onError` | `{ code, message }` | 建筑工人无法开工，也无法继续施工。当没有人监听时登录到控制台。 |

错误代码: `session_failed`， `user_deactivated`， `user_suspended`， `partner_suspended`， `origin_not_allowed`， `test_cap_reached` 和 `charge_failed` （[协议第11节](https://npmcn.com/package/docs/partner-protocol/v1.md#embed-error-codes)）。 可能会增加新的代码；像对待一个不认识的人 `session_failed`.

抛出的处理程序将被记录下来，并且不会阻止其他处理程序。

## 方法

-   `open({ site })` 打开用户的一个站点(a `siteId` 来自合作伙伴 API或 `onExport`）. 构建器在该站点上重新加载。
-   `refreshCredits()` 让建筑商从你的钱包里重新读取余额 （`credits.get`)，然后开火 `onCreditsChanged` 如果它改变了。以后再叫它。 充值。
-   `destroy()` 删除iframe和每个侦听器，并停止任何挂起 会话请求。实例之后什么都不做；呼叫 `Relume.init` 再次向建造者展示。

## 发展中

```sh
npm ci
npm run typecheck
npm test            # unit tests (happy-dom) and the example's size
npm run test:dist   # builds, then loads the ESM and script-tag output
```

这个 `postMessage` 信息存在于 [`src/protocol.ts`](https://npmcn.com/package/%40keeganrelume/partner-embed/src/protocol.ts) 和 镜子 `frontend/base/embed/embed_protocol.ts` 在remume应用程序中，更改两者 在一起。

出版: `npm publish --tag latest` 从这个文件夹(它运行所有的 上面第一个)。

## 常见问题

### @keeganrelume/partner-embed 是什么？

reume合作伙伴的前端SDK：将reume构建器与一个调用和几个事件处理程序放在您的页面上。

### 如何安装 @keeganrelume/partner-embed？

在项目目录运行 npm install @keeganrelume/partner-embed，或使用 pnpm add / yarn add / bun add。

### @keeganrelume/partner-embed 支持 TypeScript 吗？

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

### @keeganrelume/partner-embed 支持 ESM 还是 CommonJS？

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

### @keeganrelume/partner-embed 可以商用吗？

@keeganrelume/partner-embed 使用 UNLICENSED 许可。作者声明为 UNLICENSED，即不授予公开使用许可（与公共领域的 Unlicense 不同）。使用前需获得作者授权。以上为概括，不构成法律意见，请以许可原文为准。

### @keeganrelume/partner-embed 还在维护吗？

最新版本 1\.0\.0-beta\.0 发布于 2026/11/01（2 天前）；至今共发布 2 个版本，其中过去 12 个月发布了 2 个；首次发布于 2026/11/01。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

