@domoinc/ryuu-proxy

中文文档
5.1.2发布于 2026/08/25MITTypeScriptES Module近 30 天下载 5944

一个为本地 domo 应用程序开发提供代理软件的中间软件

中文使用文档
文档目录17 节
  1. 目录
  2. 特征
  3. 所需资源
  4. 安装
  5. 使用量
  6. 配置
  7. 与 快递 编号 : 连接
  8. 与其他框架一起
  9. 处理错误
  10. HTTP 代理支持
  11. 获取代理ID( 高级)
  12. 相关软件包
  13. 捐款
  14. 工作流程
  15. 脚本
  16. 版本
  17. 许可证

@domoinc/ ryu- proxy

npm version install size npm downloads types license Known Vulnerabilities

本地的中间软件 Domo 应用程序 发展。 它截取到对 Domo 数据的呼叫/ API 端点和代理向您的 Domo 实例认证的请求, 这样您就可以根据本地 dev 服务器的真实数据进行开发 .

目录

特征

  • 多莫API流量: /data/v{d}, (中文(简体) ), /sql/v{d}, (中文(简体) ), /dql/v{d}, (中文(简体) ), /domo/.../v{d}, (中文(简体) ), /api/...
  • 滴入快件 / 通过连接中件 proxy.express()
  • 框架不可知性 proxy.stream(req) 用于 Koa, 节点 http,快递等.
  • 处理多段/窗体数据上传( 文件流通过 busboy(中文(简体) )
  • 使用 DQL 、 回写或 OAuth 特性的应用程序的 OAuth 访问/更新令牌
  • 从您现有的 Domo CLI 登录会话中读取 auth —— 没有额外的配置
  • 有类型脚本的船舶
  • 无害环境管理一揽子措施

所需资源

  • 节点.js 18岁以上
  • 活跃的多摩 CLI 会话( O) :domo login()——见 @ryuu
  • 一个项目 manifest.json 至少出版一次的(domo publish(中文(简体) )
  • 端点 : express ^4.17.0 || ^5.0.0 (仅在使用时需要) proxy.express()(中文(简体) )

安装

pnpm add -D @domoinc/ryuu-proxy
# or
npm install --save-dev @domoinc/ryuu-proxy
# or
yarn add -D @domoinc/ryuu-proxy

使用量

此库会从您的 Domo CLI 调用上次登录会话 。 如果该会话不再活动或不存在,代理将失效. 在启动您的 dev 服务器前登录 :

domo login

配置

import { Proxy } from '@domoinc/ryuu-proxy';
import manifest from './path/to/app/manifest.json' with { type: 'json' };

const proxy = new Proxy({ manifest });

这个 Proxy 构造器接受一个配置对象 .

需求

  • manifest - 解析您项目的内容 manifest.json。 。 。 . domo publish 一定至少运行过一次 所以名单有 id。 。 。 .

可选

  • manifest.proxyId ——对于使用DQL,回写,或OAuth的应用程序需要. 如果你不确定, 你可能不需要它。 见 获取代理ID。 。 。 .

与 快递 编号 : 连接

import express from 'express';

const app = express();
app.use(proxy.express());

与其他框架一起

关于其他框架, stream() 返回可读流,您可以返回到您的响应。 它接受标准节点 来信,而大多数框架延伸.

// koa
app.use(async (ctx, next) => {
  await proxy
    .stream(ctx.req)
    .then((data) => (ctx.body = ctx.req.pipe(data)))
    .catch(next);
});
// express
app.use((req, res, next) => {
  proxy
    .stream(req)
    .then((stream) => stream.pipe(res))
    .catch(() => next());
});
// node http
import http from 'node:http';

const server = http.createServer((req, res) => {
  if (req.url === '/') {
    loadHomePage(res);
  } else {
    proxy.stream(req).then((stream) => stream.pipe(res));
  }
});

处理错误

忽略错误导致代理失败, 请求返回 404。为了揭露错误,捕获 DomoException 并转发状态 :

// koa
app.use(async (ctx, next) => {
  await proxy
    .stream(ctx.req)
    .then((data) => (ctx.body = ctx.req.pipe(data)))
    .catch((err) => {
      if (err.name === 'DomoException') {
        ctx.status = err.status || err.statusCode || 500;
        ctx.body = err;
      } else {
        next();
      }
    });
});
// express / connect
app.use((req, res, next) => {
  proxy
    .stream(req)
    .then((stream) => stream.pipe(res))
    .catch((err) => {
      if (err.name === 'DomoException') {
        res.status(err.status || err.statusCode || 500).json(err);
      } else {
        next();
      }
    });
});
// node http
const server = http.createServer((req, res) => {
  if (req.url === '/') {
    loadHomePage();
  } else {
    proxy
      .stream(req)
      .then((stream) => stream.pipe(res))
      .catch((err) => {
        if (err.name === 'DomoException') {
          res.writeHead(err.status || err.statusCode || 500);
          res.end(JSON.stringify(err));
        }
      });
  }
});

DomoException 形状 :

外地说明
name永远 "DomoException"
status 编号 : statusCodeHTTP 状态代码
statusMessage错误描述

HTTP 代理支持

如果您坐在公司 HTTP 代理后, 请设置以下环境变量 . REACT_APP_- 前置变体也因Create React App项目而获得荣誉.

变量目的
PROXY_HOST 编号 : REACT_APP_PROXY_HOST代理主机名称
PROXY_PORT 编号 : REACT_APP_PROXY_PORT代理端口
PROXY_USERNAME 编号 : REACT_APP_PROXY_USERNAME基本认证用户名( 可选)
PROXY_PASSWORD 编号 : REACT_APP_PROXY_PASSWORD基本验证密码( 可选的)

获取代理ID( 高级)

使用 DQL 、 回写或 OAuth 特性的应用程序必须提供 proxyId 在代理配置中,这样代理可以正确路由请求。 A 类 proxyId 属于形式 XXXXXXXX-XXXX-4XXX-XXXX-XXXXXXXXXXXX为了找到它:

  1. 确保应用软件至少发布一次 domo publish。 。 。 .
  2. 从您的应用设计中发布新卡, 或者打开从中创建的现有卡 .
  3. 右键单击牌并选择 检查元素。 。 。 .
  4. 寻找 <iframe> 包含您的应用程序。 它的URL看起来像 //{HASH}.domoapps.prodX.domo.com?userId=...。 。 。 .
  5. 复制中间的散列 // 财务报告和审定财务报表 .domoapps - 这是你的 proxyId。 。 。 .

proxyId给卡片打领带 如果删除从你提取的ID的卡片,则需要从同一应用设计所创造的另一张卡片中取出一个新的.

  • ryuu ——多摩CLI(多摩CLI)domo login, (中文(简体) ), domo publish页:1
  • ryuu-client ——基础多摩API客户端

捐款

工作流程

  1. 创建分支( 例如) . DOMO-XXXXXX(中文(简体) )
  2. 作出和作出修改
  3. 测试——可选地发布用于集成测试的α/β
  4. 打开拉动请求
  5. 合并到 master,按住版本并发布到 npm

脚本

脚本说明
pnpm run build编译类型脚本到 dist/
pnpm test运行测试套件( Vest)
pnpm run test:watch以监视模式运行 vitest
pnpm run test:coverage进行覆盖测试
pnpm run format使用 Pretier 格式源
pnpm run release:production构建并发布到 npm
pnpm run release:beta构建和出版 beta 标签
pnpm run release:alpha构建和出版 alpha 标签

版本

这个项目使用 标准版本 由常规承诺确定版本起落.

许可证

麻省理工学院

版本与发布记录

@domoinc/ryuu-proxy 共发布 71 个版本,首次发布于 2017/07/28;过去 12 个月发布了 6 个版本。

版本发布日期距今
5.1.2latest2026/08/252 个月前
5.1.2-beta.0beta2026/08/252 个月前
5.1.12026/08/182 个月前
5.1.02026/08/133 个月前
5.1.0-beta.12026/04/216 个月前
5.0.22026/02/218 个月前

其他发布通道:alpha → 4.3.2-alpha.0,beta → 5.1.2-beta.0。

关于 @domoinc/ryuu-proxy 的常见问题

@domoinc/ryuu-proxy 是什么?

一个为本地 domo 应用程序开发提供代理软件的中间软件

如何安装 @domoinc/ryuu-proxy?

在项目目录运行 npm install @domoinc/ryuu-proxy,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:express(^4.17.0 || ^5.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@domoinc/ryuu-proxy 支持 TypeScript 吗?

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

@domoinc/ryuu-proxy 支持 ESM 还是 CommonJS?

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

@domoinc/ryuu-proxy 可以商用吗?

@domoinc/ryuu-proxy 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@domoinc/ryuu-proxy 的下载量有多少?

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

@domoinc/ryuu-proxy 还在维护吗?

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