open-index/open-npm huggingface dataset:
npm package: @pagoda-tools/jweixin-sdk
Description: wechat js-sdk
Latest version: 1.6.3

# 微信 sdk

将微信的 sdk 发布为 npm 包，版本号与微信 sdk 版本同步。

## 安装

```shell
yarn add @pagoda-tools/jweixin
```

## 使用

```js
import wx from '@pagoda-tools/jweixin';
```
npm package: @pagoda-tools/qywx-node
Description: ## 安装
Latest version: 0.0.3

# @pagoda-tools/qywx-node

## 安装

```shell
yarn add @pagoda-tools/qywx-node
```

## 初始化

```ts
interface UserInfo {
  name: string;
  code: string;
}
export const qwMpSdk = new QwMpSdk<UserInfo>({
  // 配置企业应用相关信息
  appList: [
    {
      corpid: 'corpid',
      corpsecret: 'corpsecret',
    },
  ],
  // 数据加密时的 secret
  secret: 'secret',
  getUserInfo(authInfo) {
    // 此处能拿到企业微信授权成功之后的信息
    // { corpid: string; userid: number; sessionKey: string; }
    // 可以在这里自定义获取用户信息数据，返回的用户信息将会被存在 sesssion 或者 token 中
    return {
      code: 'code',
      name: 'name'
    }
  },
});
```

## 登录

```ts
// code 为客户端调用 wx.login 拿到的临时凭证
// 使用 jwt 鉴权
const data = await qwMpSdk.loginByJwt(code);
// 可将 token 返回客户端保存，请求时在请求头中携带 x-qwmp-token
console.log(data.token);
// 使用 session 鉴权
const data = await qwMpSdk.login(code);
// 可将 session 返回客户端保存，请求时在请求头中携带 x-qwmp-id: data.session.id, x-qwmp-skey: data.session.skey
console.log(data.session);
```

## 检验登录

可在中间件中检验登录状态，以下以 express 中间件为例

```ts
const middleware = (req, res, next) => {
  const { success, reason, tokenData } = await qwMpSdk.checkAuthByToken(
    req.headers,
  );

  if (!success) {
    res.json({
      code: -1,
      message: '登录失效，请重新登录'
    })
    return;
  }

  req.qwmpSession = tokenData!;

  next();
}
```

## 调用企微接口

skd做了以下处理：
- 默认自动在请求前获取accessToken，并在请求query参数中携带
- 调用企微接口返回accessToken过期时，会自动获取新的accessToken并重新发起一次请求

```ts
const data = await qwMpSdk.request({
  method: 'get',
  url: '/cgi-bin/user/get',
  params: {
    userid: 'xxxxxx',
  },
  // 需要从登录信息中拿到企业id
  corpid: req.qwmpSession.authInfo.corpid,
  // 如果当前接口不需要携带accessToken，可关闭
  // accessToken: false
});
```

## 配置项

```ts
interface QwMPSdkConfig<U> {
  /**
   * 小程序已绑定企业的企业id和应用secret
   *
   * @param corpid 企业 corpid
   *
   * 查看方式：登录企业微信管理后台-我的企业-企业信息-企业ID
   *
   * @param agentId 企业应用 id
   *
   * 查看方式：登录企业微信管理后台-应用管理-打开对应应用详情-查看AgentId
   *
   * @param corpsecret 企业应用 corpsecret
   *
   * 查看方式：登录企业微信管理后台-应用管理-打开对应应用详情-查看Secret
   */
  appList: AppInfo[];
  // 自定义处理 accessToken 过期时间，默认为企微返回的过期时间提前10分钟
  handleAccessTokenExpiresIn?(expiresIn: number): number;
  // 用来存储 accessToken 和 session 的 store，如果不配置，默认存储在内存中
  store?: {
    get(key: string): string;
    set(key: string, val: string, expiresIn: number): void;
    del(key: string): void;
  };
  // 自定义获取用户信息函数，如果不配置，则 session和token中不存储userInfo
  getUserInfo?(authData: AuthInfo): Promise<U>;
  // 自定义处理企业微信接口调用异常（errcode 不为 0时），默认为抛出 error
  onApiBusinessError?<T = QwMpBaseRes & Record<string, any>, D = any>(
    response: AxiosResponse<T, D>,
  ): void;
  /**
   * 用于 jsonwebtoken 的 secret
   */
  secret: Secret;
  /**
   * 登录态过期时间，默认 24 小时，单位：秒
   */
  maxAge?: number;
  /**
   * 是否开启调试日志，默认不开启
   */
  debugLog?: boolean;
}
```
npm package: @pagoda-tools/sentry
Description: ## 安装
Latest version: 1.0.2

# @pagoda-tools/sentry

## 安装

```bash
yarn add @pagoda-tools/sentry
```

## 基本用法

```js
// vue2
// import Vue from 'vue';
import { createApp } from 'vue';
import App from './App.vue';
import { router } from './router';
import { PagodaSentry } from '@pagoda-tools/sentry';

new PagodaSentry({
  app,
  router,
  // vue2
  // Vue,
  onEvent(e, data) {
    console.log(e, data);
  },
});
```