open-index/open-npm huggingface dataset:
npm package: @qiov/beacon-main-core
Description: beacon Main Core 
Latest version: 0.1.4

# 灯塔上报核心

核心类 Core 更多的是提供一个用户设置, 数据管理系统.

Core 中实现了一个队列. 当用户有需要上报的数据时, 会直接入队列. 再由 Core 决定何时去上报.

## 为什么要实现一个队列而不是直接的发起请求?

为了解耦用户的数据采集和数据上报两个动作. 用户可能触发了数据的采集, 但是数据的上报可以合并上报. 对于不敏感的数据. 可以使用采点上报, 比如(平均时长等). 再者. 数据上所依赖于端的能力, 像: web 的 ajax, sendBeacon, websocket, hippy 的 fetch 等. 所以数据请求层可以转架到专有的场景去实现.

## eventHub. 事件总线.

Core 为在以下的阶段发送事件.

| 阶段               | 事件名    | 参数 |
| ------------------ | --------- | ---- |
| 初始化时           | init      |      |
| 新的上报作业添加时 | jobAppend |      |
npm package: @qiov/beacon-web-sdk
Description: beacon sdk for web application
Latest version: 4.0.6


# 1. SDK 初始化

引入 SDk 后，需初始化 SDK
```js
import BeaconAction from '@qiov/beacon-web-sdk/lib/tgp_h5_sdk.min.js';
window.BeaconAction = BeaconAction;
```

## 1.1 一般初始化调用

```javascript

let success = e => {
  console.log('onReportSuccess : ' + e);
};
let fail = e => {
  console.log('onReportFail : ' + e);
};

let beacon = new BeaconAction({
  appkey: '0M000A1RC72MXXRH', // 系统或项目id, 必填
  reportUrl: 'https://xxx', // 上报URL,必填
 // 其他初始化参数按需配置, 可不做传入
  versionCode: '2.11.1', //项目版本,选填
  channelID: 'channel', //渠道,选填
  openid: 'openid', // 用户id, 选填
  strictMode: true,//严苛模式开关, 打开严苛模式会主动抛出异常, 上线请务必关闭!!!
  delay: 1000, // 普通事件延迟上报时间(单位毫秒), 默认3000(3秒),选填
  sessionDuration: 60 * 1000,// session变更的时间间隔, 一个用户持续30分钟(默认值)没有任何上报则算另一次 session,每变更一次session上报一次启动事件(rqd_applaunched),使用毫秒(ms),最小值30秒,选填
  onReportSuccess: success, // 上报成功回调,选填
  onReportFail: fail, // 上报失败回调,选填
  oneidApi: 'http://yyy', // oneid生成地址，选填
});

```

## 1.2 多端 打通 H5

### 1.2.1 App 打通 H5

集成了神策 Web JS SDK 的 H5 页面，在嵌入到 App 后，H5 内的事件可以通过 App 进行发送，事件发送前会添加上 App 采集到的预置属性。该功能默认是关闭状态，如果需要开启，需要在 App 和 H5 端同时进行配置。这里给到的是H5端的配置，即初始化传参时增加jsBridge: true。APP端配置请参考APP SDK。

```javascript

let beacon = new BeaconAction({
  appkey: "0M000A1RC72MXXRH", // 系统或项目id, 必填
  reportUrl: 'https://xxx', // 上报URL,必填
  jsBridge: true, // 为ture, 用于标识开启 多端 打通 H5 的能力, 必填
  // 其他初始化参数可参考1.1一般初始化调用，按需配置
});

```

### 1.2.2 微信小程序 打通 H5

集成了神策 Web JS SDK 的 H5 页面，在嵌入到 微信小程序 后，H5 内的事件发送前会添加上 从 微信小程序 采集到的预置属性，目前支持用户标识、用户uid及是否为新用户。该功能默认是关闭状态，如果需要开启，需要在 微信小程序端 和 H5 端同时进行配置。这里给到的是H5端的配置，即初始化传参时增加jsBridge: true和weappAppkey。小程序端配置请参考小程序端 SDK。

```javascript

let beacon = new BeaconAction({
  appkey: "0M000A1RC72MXXRH", // 系统或项目id, 必填
  reportUrl: 'https://xxx', // 上报URL,必填
  jsBridge: true, // 为ture, 用于标识开启 多端 打通 H5 的能力， 必填
  weappAppkey: '0M0011RC72MXXRW', // 小程序端APPkey, jsBridge为true时必填
  // 其他初始化参数可参考1.1一般初始化调用，按需配置
});

```

# 2.API

### 2.1普通事件上报接口, 注意!!!! value 类型只能是string 或者 number 类型
``` 
beacon.onUserAction('eventCode', {
  'city': 'shenzhen'
});

```

### 2.2 实时事件上报接口, 注意!!!! value 类型只能是string 或者 number 类型
``` 
beacon.onDirectUserAction('eventCode', {
  'city': 'shenzhen'
});

``` 

### 2.3 获取web id
``` 
beacon.getDeviceId()

``` 
### 2.4 设置公共参数, 注意 !!!! , 相比老接口(setAdditionalParams)新接口是追加,老接口为替换
``` 
beacon.addAdditionalParams({
  'additionalParams': 'params'
});

``` 
### 2.5 手动上报PV
``` 
beacon.reportPV();

``` 
### 2.6 设置用户id
``` 
beacon.setOpenId('openid');

```
npm package: @qiov/node-inc
Description: incubator common modules for node
Latest version: 0.23.0
Deprecated: false

# incubator common modules for node
[TOC]
incubator公共模块,提供incubator体系下用户管理、日志管理、授权登录等模块的能力

## refresh token机制
> 如果一直处于操作中，incubator支持维持登录态，在登录态即将过期时刷新有效期。

### 原理
如果在过期前一段时间用户有操作，在调用center接口时，
1、增加请求头——
```
'need-refresh-token': 1
```
2、请求返回时会添加响应头——
```
'incubator-refresh-token': 'a4268c96-8a11-407e-b9a5-b1a7ac047929'
```
3、将用户session中的原token更新为新的token即可

### node sdk实现方式：
需要配合`fbi-project-incubator`项目模板使用，在poxyCenterRoutes中定义的路由，按需添加`updateSession`方法即可。如：
```js
router.post('/api/auth/islogin', async (ctx) => {
  let res: any = ctx.session && !!ctx.session.token
  if (res) {
    res = await this.isLogin(ctx.session.token)
    this.updateSession(res, ctx)
    ctx.body = resReturn(res.data, res.code)
  } else {
    ctx.body = resReturn(res)
  }
})
```

## 单测执行须知
[sdk接口规范文档](https://iov-doc.travel.qq.com/incubator/B端平台sdk文档.html#接口规范)可能会因为更新不及时，存在与当前版本的接口不一致的地方，这种不一致会造成子应用通过sdk调用center服务的时候出现异常。为了能快速找出文档与接口的不一致，可以通过执行单元测试来发现。具体执行步骤如下：
- `incubator-center`项目切换到已发布的最新版本，启动本地的center服务
- 打开`http://127.0.0.1:8081`，用平台管理员身份登录，抓包`api/auth/getUser`获取token和id
  ![](http://blog-1253233020.cosgz.myqcloud.com/20200724204021.png)
- 修改`tests/inc.config.ts`中部分参数，其中`iamToken`和`userId`来源于上一步
  ```js
  {
    // 本地环境
    appId: '46444645', 
    appSecret: 'd1b040e1-0dc1-4b8b-8812-297585daf101',
    incServer: 'http://127.0.0.1:8080',
    iamToken: 'a9b3545b-f799-4464-b921-fb3c08d6393e',
    userId: '144115205301725059', // 当前登录用户ID
    orgId: '100000000000000000000000', // center租户组织机构
  }
  ```
- 执行单元测试`npm run test`。测试用例都是按照最新文档编写，下图体现了`inc.org.getTreeById`接口文档与实际不一致的情况
  ![](http://blog-1253233020.cosgz.myqcloud.com/20200724204438.png)

- 根据上一步中未通过用例的提示，修改接口文档

## 参考
* [文档](https://git.code.tencent.com/incubator/docs/blob/master/incubator%20sdk%E6%96%87%E6%A1%A3.md)
* [CHANGELOG](./CHANGELOG.md)
npm package: @qiov/node-utils
Description: node utils module for incubator
Latest version: 0.20.0
Deprecated: false

# incubator utils for node
工具库相关

## 参考
* [文档](https://git.code.tencent.com/incubator/docs/blob/master/incubator%20sdk%E6%96%87%E6%A1%A3.md)
* [CHANGELOG](./CHANGELOG.md)
npm package: @qiov/node-utils-v1
Description: node utils module for incubator
Latest version: 0.21.0

# incubator utils for node
工具库相关

## 参考
* [文档](https://git.code.tencent.com/incubator/docs/blob/master/incubator%20sdk%E6%96%87%E6%A1%A3.md)
* [CHANGELOG](./CHANGELOG.md)
npm package: @qiov/tgp-mp-sdk
Description: Mini program sdk for TGP(Tencent Growth Platform).
Latest version: 4.0.8

# 1. SDK 初始化

引入 SDk 后，需初始化 SDK

在应用的入口app.js引入SDK，添加代码:
```javascript

import BeaconAction from '@qiov/tgp-mp-sdk/beacon_mp.min.js'

var success = e => {
  console.log('onReportSuccess : ' + e);
};
var fail = e => {
  console.log('onReportFail : ' + e);
};
var beacon = new BeaconAction({
  appkey: 'appkey', //小程序appKey，从灯塔官网获取,必填
  reportUrl: 'https://xxx', // 上报url, 必填
  versionCode: 'versionCode', //小程序版本号，选填
  channelID: 'channelID', //小程序渠道号，选填
  openid: 'openid', // 用户标示符号，选填
  unionid: 'unionid', // 用户唯一标示符号，选填
  isDebug :false ,//是否测试环境，选填
  strictMode: true,//严苛模式开关, 打开严苛模式会主动抛出异常, 上线请务必关闭!!选填
  delay: 2000, // 普通事件延迟上报时间(单位毫秒), 默认2000(2秒),选填
  onPullDownRefresh: true,//下拉刷新事件统计，默认开启，选填
  onReachBottom: true,//页面下拉触底统计，默认开启，选填
  onReportSuccess: success, // 上报成功回调，选填
  onReportFail: fail, // 上报失败回调，选填
  oneidApi: 'http://yyy', // oneid生成地址，选填
});

```


# 2.API

### 2.1设置appkey
``` 
beacon.setAppKey('setAppKey');

```

### 2.2普通事件上报接口,小程序环境问题,性能较低,注意!!!! value 类型只能是string 或者 number 类型
``` 
beacon.onUserAction('eventCode', {
  'city': 'shenzhen'
});

```

### 2.3 实时事件上报接口,注意!!!! value 类型只能是string 或者 number 类型
``` 
beacon.onDirectUserAction('eventCode', {
  'city': 'shenzhen'
});


``` 

### 2.4 获取小程序beacon id
``` 
beacon.getDeviceId();

``` 
### 2.5 设置公共参数, 注意 !!!! , 相比老接口(setAdditionalParams)新接口是追加,老接口为替换
``` 
beacon.addAdditionalParams({
  'additionalParams': 'params'
});
``` 
### 2.6 手动上报PV
``` 
beacon.reportPV();

``` 
### 2.7 设置用户id
``` 
beacon.setOpenId('openid');


``` 
### 2.8 设置唯一id
``` 
beacon.setUnionid('setUnionid');

``` 

### 2.9 设置渠道id
``` 
beacon.setChannelId('setChannelId');

``` 
### 2.10 设置用户信息
``` 
// 获取用户信息
wx.getSetting({
  success: res => {
    if (res.authSetting['scope.userInfo']) {
      // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
      wx.getUserInfo({
        success: res => {
          beacon.setUserInfo(res);//灯塔会获取用户昵称
        }
      })
    }
  }
})

``` 
### 2.11 设置位置信息
``` 
wx.getLocation({
  type: "wgs84",
  success: function (res) {
    beacon.setLocation(res);
  }
})

``` 

### 2.12 用于小程序 与 H5 打通时，返回 H5 事件上报需携带的小程序预置属性，注意 ！！！，这里以拼接字符串的方式给出
```
wx.getWeappInfo() // 返回'beacon_uin=${uin}&beacon_uid=${uid}&beacon_is_first=${isFirst}'

```
## 3 小程序 与 H5 打通

### 3.1 方案概述

小程序与 H5 的数据打通，是小程序将必要预置属性（这里支持用户标识、用户ID和是否为新用户） 通过 URL 方式传递给 H5 端，H5 端解析URL替换对应事件属性，达到统一用户标识和其他必要属性的目的。

### 3.2 方案实现

1、调用 wx.setWebViewUrl(URL), 拼接好包含 distinctID 的 URL，微信小程序 V1.14.12 及以上版本支持；
2、URL 参数是绑定的 web-view 的 src 属性值

```
// webview.js
Page({
  data: {
    webUrl: ''
   },
  onLoad: function (options) {
    const URL = 'https://example/demo.html' 必填项
    this.setData({
      webUrl: beacon.setWebViewUrl(URL)
    });
  }
});
// webview.wxml
<web-view src="{{ webUrl }}"></web-view>
```
npm package: @qiov/ui-inc
Description: 基于BCenter的UI组件库
Latest version: 0.5.0

# INC UI

基于BCenter的UI组件库

## npm 安装

```shell
npm install @incubator/ui-inc

npm install less less-loader -D
```

> 需要安装 `less` 和 `less-loader`

# 快速上手

将介绍如何使用 INC UI。

## 引入 INC

### 完整引入

在 main.js 中写入以下内容：

```js{2,5}
import Vue from 'vue';
import vue95 from 'vue95-ui';
import App from './App.vue';

Vue.use(vue95);

new Vue({
  el: '#app',
  render: h => h(App)
});
```

以上代码便完成了 INC 的引入。

### 按需引入

如果你只希望引入部分组件，比如 Button ，那么需要在 main.js 中写入以下内容：

```js{2,5}
import Vue from 'vue';
import { Button95 } from 'vue95-ui';
import App from './App.vue';

Vue.use(Button95);

new Vue({
  el: '#app',
  render: h => h(App)
});
```

### 完整组件列表和引入方式

```js
import Vue from 'vue';
import {
  Button95,
  Anchor95,
} from 'vue95-ui';

Vue.use(Anchor95);
Vue.use(Button95);
```
npm package: @qiov2/tgp-mp-sdk2
Description: Mini program sdk for TGP(Tencent Growth Platform).
Latest version: 4.0.9

# 1. SDK 初始化

引入 SDk 后，需初始化 SDK

在应用的入口app.js引入SDK，添加代码:
```javascript

import BeaconAction from '@qiov2/tgp-mp-sdk2/beacon_mp.min.js'

var success = e => {
  console.log('onReportSuccess : ' + e);
};
var fail = e => {
  console.log('onReportFail : ' + e);
};
var beacon = new BeaconAction({
  appkey: 'appkey', //小程序appKey，从灯塔官网获取,必填
  reportUrl: 'https://xxx', // 上报url, 必填
  versionCode: 'versionCode', //小程序版本号，选填
  channelID: 'channelID', //小程序渠道号，选填
  openid: 'openid', // 用户标示符号，选填
  unionid: 'unionid', // 用户唯一标示符号，选填
  isDebug :false ,//是否测试环境，选填
  strictMode: true,//严苛模式开关, 打开严苛模式会主动抛出异常, 上线请务必关闭!!选填
  delay: 2000, // 普通事件延迟上报时间(单位毫秒), 默认2000(2秒),选填
  onPullDownRefresh: true,//下拉刷新事件统计，默认开启，选填
  onReachBottom: true,//页面下拉触底统计，默认开启，选填
  onReportSuccess: success, // 上报成功回调，选填
  onReportFail: fail, // 上报失败回调，选填
  oneidApi: 'http://yyy', // oneid生成地址，选填
});

```


# 2.API

### 2.1设置appkey
``` 
beacon.setAppKey('setAppKey');

```

### 2.2普通事件上报接口,小程序环境问题,性能较低,注意!!!! value 类型只能是string 或者 number 类型
``` 
beacon.onUserAction('eventCode', {
  'city': 'shenzhen'
});

```

### 2.3 实时事件上报接口,注意!!!! value 类型只能是string 或者 number 类型
``` 
beacon.onDirectUserAction('eventCode', {
  'city': 'shenzhen'
});


``` 

### 2.4 获取小程序beacon id
``` 
beacon.getDeviceId();

``` 
### 2.5 设置公共参数, 注意 !!!! , 相比老接口(setAdditionalParams)新接口是追加,老接口为替换
``` 
beacon.addAdditionalParams({
  'additionalParams': 'params'
});
``` 
### 2.6 手动上报PV
``` 
beacon.reportPV();

``` 
### 2.7 设置用户id
``` 
beacon.setOpenId('openid');


``` 
### 2.8 设置唯一id
``` 
beacon.setUnionid('setUnionid');

``` 

### 2.9 设置渠道id
``` 
beacon.setChannelId('setChannelId');

``` 
### 2.10 设置用户信息
``` 
// 获取用户信息
wx.getSetting({
  success: res => {
    if (res.authSetting['scope.userInfo']) {
      // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
      wx.getUserInfo({
        success: res => {
          beacon.setUserInfo(res);//灯塔会获取用户昵称
        }
      })
    }
  }
})

``` 
### 2.11 设置位置信息
``` 
wx.getLocation({
  type: "wgs84",
  success: function (res) {
    beacon.setLocation(res);
  }
})

``` 

### 2.12 用于小程序 与 H5 打通时，返回 H5 事件上报需携带的小程序预置属性，注意 ！！！，这里以拼接字符串的方式给出
```
wx.getWeappInfo() // 返回'beacon_uin=${uin}&beacon_uid=${uid}&beacon_is_first=${isFirst}'

```
## 3 小程序 与 H5 打通

### 3.1 方案概述

小程序与 H5 的数据打通，是小程序将必要预置属性（这里支持用户标识、用户ID和是否为新用户） 通过 URL 方式传递给 H5 端，H5 端解析URL替换对应事件属性，达到统一用户标识和其他必要属性的目的。

### 3.2 方案实现

1、调用 wx.setWebViewUrl(URL), 拼接好包含 distinctID 的 URL，微信小程序 V1.14.12 及以上版本支持；
2、URL 参数是绑定的 web-view 的 src 属性值

```
// webview.js
Page({
  data: {
    webUrl: ''
   },
  onLoad: function (options) {
    const URL = 'https://example/demo.html' 必填项
    this.setData({
      webUrl: beacon.setWebViewUrl(URL)
    });
  }
});
// webview.wxml
<web-view src="{{ webUrl }}"></web-view>
```