npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@bytedance/mona-runtime

v0.3.48

Published

Merchant app's developing and building tools

Readme

mona-runtime

mona 运行时

组件

Link

跳转组件,支持插件/应用间页面跳转

例子

import { Link } from '@bytedance/mona-runtime';

const Index = () => {
  return (
    <div>
      <Link to="/pages/home/index">navigate to home </Link>
    </div>
  );
};

export default Index;

参数说明

| 参数 | 说明 | 是否必填 | 类型 | 默认值 | | ---- | ---------------- | -------- | ------ | ------ | | to | 要跳转的页面路由 | 是 | string | - |

通用 API

navigateTo

路由跳转,跳转到新的页面

例子

import { navigateTo } from '@bytedance/mona-runtime';

navigateTo('/pages/home/index');

redirectTo

路由重定向,跳转并替换当前页面路由

例子

import { redirectTo } from '@bytedance/mona-runtime';

redirectTo('/pages/home/index');

飞鸽 API

飞鸽 API 分为两类

  • onXXXX开头的监听类 API,该类 API 接受回调函数作为参数,当在飞鸽中相应事件发生时,飞鸽会调用传过来的回调函数。注意: 监听类的方法,只会记录最后一次监听的函数, 建议把监听的结果存入到全局变量。
  • onXXXX开头的普通的 API,可以直接触发飞鸽中相应的动作

    注意:飞鸽 API 需要在开放平台中拥有相应的插件 API 权限包

addToInputBoxSafely

使用场景

复制信息到输入框,支持文字。

对应权限包

| 权限名称 | 所属权限包 | 所属权限组 | 权限描述 | | ------------------- | ---------- | ---------- | ---------- | | AddToInputBoxSafely | 端操作权限 | 端操作权限 | 端复制能力 |

入参

| 名称 | 类型 | 是否必填 | 描述 | | ------- | ---------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | success | Function | ❌ | 1. 用户未被拉黑   - 正在接待中 ,✅ 可复制   - 用户不在接待中,下列条件同时满足, ✅ 可复制     _ 客服非离线     _ 7 天内有会话     * 当前用户没有正在与其他客服对话 | | fail | ( error: { code: number, message: string } ) => void | ❌ | 复制失败 | | data | string | ✅ | 消息内容,length > 0 |

login

使用场景

获取当前客服登录态 token,通过开放接口换取当前飞鸽登录用户信息

对应权限包

| 权限名称 | 所属权限包 | 所属权限组 | 权限描述 | | -------- | ---------- | ---------- | ------------ | | Login | 端操作权限 | 端操作权限 | 飞鸽登录能力 |

入参

| 名称 | 类型 | 是否必填 | 描述 | | ------- | ---------------------------------------------------- | -------- | ---------------- | | success | ( res: { token: string; shopId: number } ) => void | ❌ | 获取登录态 token | | fail | ( error: { code: number; message: string } ) => void | ❌ | 获取失败 |

错误码

| 错误码 | 错误描述 | 排查 | | ------ | -------------------- | ------------------------------ | | -100 | 未知错误 | 可能主应用内部原因。 | | -101 | 缺参数、入参类型错误 | 检查入参类型 | | -102 | 无权限 | 无权限,到开放平台申请权限包 | | -103 | 应用不提供此能力 | 本身无此能力/ 应用未实现此功能 |

示例代码

import { pigeon } from '@bytedance/mona-runtime';

pigeon.login({
  success: token => {
    // 传输token到自己服务端换以取自己的登录态
  },
  fail: error => {
    console.log(error);
  }, // {code: -100, message: '未知错误'}
});

getInitInfo

使用场景

应用初始化时获取信息。

对应权限

| 权限名称 | 所属权限包 | 所属权限组 | 权限描述 | 对应参数 | | ---------------------- | ------------ | ---------- | -------- | --------------------- | | UserID | 用户数据权限 | 端数据权限 | 用户 ID | user_id | | ShopID | 店铺数据权限 | 端数据权限 | 店铺 ID | shop_id | | CustomsServiceNo | 客服数据权限 | 端数据权限 | 客服编号 | customer_service_id | | CustomsServiceNickName | 客服数据权限 | 端数据权限 | 客服昵称 | customer_service_name |

入参

| 名称 | 类型 | 是否必填 | 描述 | | ------- | ---------------------------------------------------- | -------- | ------------------------------ | | success | (data: InitInfo) => void | ❌ | 会将有权限的数据,透传给插件。 | | fail | ( error: { code: number, message: string } ) => void | ❌ | 获取数据失败 |

出参

错误码

| 错误码 | 错误描述 | 排查 | | ------ | ---------------- | ---------------------------------------------------- | | -100 | 未知错误 | ① 非飞鸽容器环境② 飞鸽内部原因,请咨询官方人员 | | -103 | 应用不提供此能力 | 本身无此能力/ 应用未实现此功能 |

示例代码

import { pigeon } from '@bytedance/mona-runtime';

pigeon.getInitInfo({
  success: data => {
    //  {
    //    user_id: '',
    //    customer_service_id '': ,
    //    customer_service_name: '',
    //    shop_id: ''
    //  }
    console.log(data);
  },
  fail: error => {
    console.log(error);
  }, // {code: -100, message: '未知错误'}
});

onCurrentCustomerChange

使用场景

监听用户改变,当切换飞鸽左侧的用户时,会触发该 API 回调。 没申请 user_id 权限包时,将不会监听到对应变化。

对应权限

| 权限名称 | 所属权限包 | 所属权限组 | 权限描述 | 对应参数 | | -------- | ------------ | ---------- | -------- | -------- | | UserID | 用户数据权限 | 端数据权限 | 用户 ID | user_id |

出参

| | 类型 | 含义 | | -------- | ----------------------------- | ----------- | | UserInfo | {user_id: string} | 用户 openid |

示例代码

import { pigeon } from '@bytedance/mona-runtime';

pigeon.onCurrentCustomerChange(data => {
  console.log(data);
  // {
  //   user_id: 'xxxxxxx',
  // }
});

onShow

使用场景

监听插件展示,当插件在飞鸽中前台展示时,会触发该 API 回调

  • 自定义按钮跳转, 会携带部分参数。申请权限后,才会携带相应数据。

  • 从 tab 点击进入

参数对应权限包

| 位置 | 入口 | 权限名称 | 所属权限包 | 所属权限组 | 权限描述 | 对应参数 | | ------ | ------------ | :---------: | :------------: | :--------: | :-------: | :-----------: | | 位置 1 | 售后单入口 | AfterSaleID | 售后单数据权限 | 端数据权限 | 售后单 ID | after_sale_id | | 位置 2 | 商品单入口 | SkuOrderID | 订单数据权限 | 端数据权限 | sku 单 ID | sku_order_id | | 位置 3 | 店铺单入口 | OrderID | 订单数据权限 | 端数据权限 | 订单 ID | order_id | | 位置 4 | 商品列表入口 | ProductID | 商品数据权限 | 端数据权限 | 商品 ID | product_id |

出参

| key | 类型 | 含义 | | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | showFrom | 0 | 1 | 2 | 3 | 4 | 0:点击 tab 进入自定义按钮跳转1:店铺单进入 order_id2:商品单进入 sku_order_id3:售后单进入 after_sale_id4:商品列表进入 product_id | | query | interface InitInfo {order_id?: string;sku_order_id?: product_id;after_sale_id?: string;product_id?: string;} | 官方参数。申请权限后,自定义按钮跳转会携带位置对应参数。 | | extraData | Record<string,string> | 自定义按钮中配置的参数路径【飞鸽】-【客服管理】-【应用管理】- 【应用设置】-【非官方插件-设置】 |

示例代码

import { pigeon } from '@bytedance/mona-runtime';

pigeon.onShow(data => {
  console.log(data);
  // {
  //   showFrom: 0,
  //   query: {},
  //   extraData: {},
  // }
});

店铺装修 API

1.拉取ts声明

使用MaxSubAutoTypeWebpackPlugin插件,并在启动项目时便会自动拉取ts声明。

//webpack.config.js
const { MaxSubAutoTypeWebpackPlugin } = require("@bytedance/mona-plugin-events");

module.exports = {
  // ....
  plugins: [
    // ...
    new MaxSubAutoTypeWebpackPlugin(),
  ]
};
//运行webpack serve 获得代码提示

2.使用JsApi

import {max} from '@bytedance/mona-runtime';
//假设店铺端注册了getUserInfo以及getUserInfoSync两个方法
//调用同步getUserInfoSync方法
let user=max.getUserInfoSync({userName:'kenny'});
//调用异步getUserInfo方法
max.getUserInfo({userName:kenny}).then(res=>{console.log(res)}).catch(err=>console.error(err))

3.注册装修组件端api

通过on或once前缀的方法调用,便可进行api注册

import {max} from '@bytedance/mona-runtime';
//同步方法注册
max.onShowSync((data)=>{},{isSync:true});
//异步方法注册
max.onShow((data)=>{});

//使用once,调用一次后自动注销api
//同步方法注册
max.onceShowSync((data)=>{},{isSync:true});
//异步方法注册
max.onceShow((data)=>{});

使用off前缀方法可对api进行手动移除

import {max} from '@bytedance/mona-runtime';
let listener=max.onShow((data)=>{});
max.offShow(listener);