diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/README.md b/README.md index 4fe94bd..e569134 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ vue-baidu-analytics 使用说明 基于Vue开发的百度统计插件,可以在 `Vue-CLI脚手架项目` 或者 `引入了Vue相关CDN的普通页面` 上使用,使用本插件的项目需要引入 `Vue Router`。 -注意:本插件在 `1.0.0` 版本的部分参数和api现在有所弃用,请按照当前最新文档说明使用新版本,或者安装以前的 `1.0.0` 旧版本使用。 +> @v2.0版本更新:
最新版支持 Vue 3.x,同时兼容 Vue 2.x 使用,具体使用方法请看下方说明及demo。
对Vue 3.0感兴趣,但还在观望的同学,欢迎阅读我踩坑总结的:[Vue 3.0 学习教程](https://vue3.chengpeiquan.com/) (持续更新ing) ## 功能 @@ -17,11 +17,29 @@ vue-baidu-analytics 使用说明 * 支持手动提交事件分析上报 +* 自动识别Vue版本,自动适配Vue 2.0/3.0使用(插件2.0版本新增) + ## 预览 demo已开启debug模式,可开启控制台查看上报情况。 -点击预览:[vue-baidu-analytics demo](https://chengpeiquan.github.io/vue-baidu-analytics/demo/ "vue-baidu-analytics demo") +Vue 2.0 版本:[vue-baidu-analytics demo for Vue 2.x](https://chengpeiquan.github.io/vue-baidu-analytics/demo/vue2.html "vue-baidu-analytics demo for Vue 2.x") + +Vue 3.0 版本:[vue-baidu-analytics demo for Vue 3.x](https://chengpeiquan.github.io/vue-baidu-analytics/demo/vue3.html "vue-baidu-analytics demo for Vue 3.x") + +## 安装 + +方式一:通过npm安装 + +``` +npm install vue-baidu-analytics --save-dev +``` + +方式二:通过cdn安装 + +```html + +``` ## 参数 @@ -31,20 +49,6 @@ router|是|object|Vue Router,本插件基于路由使用 siteIdList|是|object Array|百度统计的站点id列表,item为站点id
只有一个站点需要上报就保留一个item即可 isDebug|否|boolean|是否开启debug模式,默认 `false`
开启后会在控制台打印上报信息,**上线前记得关闭** -## 安装 - -### 通过npm安装 - -``` -npm install vue-baidu-analytics --save-dev -``` - -### 通过cdn安装 - -```html - -``` - ## 使用 通过npm安装的项目,需要先在 `main.js` 里引入插件(通过cdn则无需该步骤)。 @@ -53,10 +57,14 @@ npm install vue-baidu-analytics --save-dev import baiduAnalytics from 'vue-baidu-analytics' ``` -安装插件后,在 `main.js` 引入以下代码,即可开启自动上报功能,首次访问页面会部署统计代码并提交第一次访问数据上报。 +安装插件后,在 `main.js` 引入以下代码(注意区分Vue2.0和Vue3.0的用法区别),即可开启自动上报功能,首次访问页面会部署统计代码并提交第一次访问数据上报。 后续在路由切换过程中,也会根据路由的切换提交相应的url信息到友盟统计。 +### 在 Vue 2.0 里使用 + +可参考demo:[main.js - Vue 2.0 demo](https://chengpeiquan.github.io/vue-baidu-analytics/demo/js/main-for-vue2.js) + ```js Vue.use(baiduAnalytics, { router: router, @@ -69,6 +77,33 @@ Vue.use(baiduAnalytics, { }); ``` +### 在 Vue 3.0 里使用 + +可参考demo:[main.js - Vue 3.0 demo](https://chengpeiquan.github.io/vue-baidu-analytics/demo/js/main-for-vue3.js) + +```js +/** + * 初始化Vue + */ +createApp(app) + // 启动路由 + .use(router) + + // 启动插件 + .use(baiduAnalytics, { + router: router, + siteIdList: [ + 'aaaaaaaaaaaaaaaaaaa', + 'bbbbbbbbbbbbbbbbbbb', + 'ccccccccccccccccccc' + ], + isDebug: true + }) + + // 挂载到节点上 + .mount('#app'); +``` + 可在开发环境打开debug模式了解相关的上报情况(上线前记得关闭debug)。 ## 方法 @@ -91,17 +126,20 @@ pageUrl|否|String|提交上报的url,必须是以 `/` 开头的相对路径手动上报PV -``` - -在method里使用 +在 Vue 2.0 里使用 ```js -// this是Vue实例 -this.$pushBAIDU.pv('/home'); +this.$pushBAIDU.pv(this.pageUrl); +``` + +在 Vue 3.0 里使用 + +(使用3.0的生命周期,需要遵循Vue3的规范,引入一个Vue自带的代理组件,并写在 `setup` 里执行) + +```js +const { proxy } = getCurrentInstance(); + +proxy.$pushBAIDU.pv(pageUrl.value); ``` ### 手动上报事件分析 @@ -121,15 +159,28 @@ value|否|number|该事件的分值,默认0 **使用示范** -在template里使用(比如:点击了一个id为123的首页banner) - -```html - -``` - -在method里使用(比如:点击了一个id为123的首页banner,并设置该事件的价值为1) +在 Vue 2.0 里使用 ```js -// this是Vue实例 -this.$pushBAIDU.event('首页banner', '点击', 'bannerId_123', 1); +this.$pushBAIDU.event( + this.category, + this.action, + this.label, + this.value +); +``` + +在 Vue 3.0 里使用 + +(使用3.0的生命周期,需要遵循Vue3的规范,引入一个Vue自带的代理组件,并写在 `setup` 里执行) + +```js +const { proxy } = getCurrentInstance(); + +proxy.$pushBAIDU.event( + category.value, + action.value, + label.value, + value.value +); ``` \ No newline at end of file diff --git a/demo/css/style.css b/demo/css/style.css new file mode 100644 index 0000000..27b96d1 --- /dev/null +++ b/demo/css/style.css @@ -0,0 +1,60 @@ +#app, +.section { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: center; +} +.section { + margin-bottom: 40px; +} +.title { + font-size: 40px; + color: #000; +} +.link { + color: #666; + text-decoration: none; +} +.link:hover { + color: #000; +} +.nav { + margin-bottom: 20px; +} +.nav .item { + color: #666; + margin: 0 10px 20px; +} +.nav .cur { + color: #000; + font-weight: bold; +} +.label { + display: flex; + justify-content: center; + align-items: center; + margin-bottom: 20px; +} +.text { + display: flex; + justify-content: flex-end; + align-items: center; + width: 60px; + font-size: 14px; + color: #333; + margin-right: 20px; +} +.input { + display: flex; + align-items: center; + width: 240px; + height: 40px; + font-size: 14px; + box-sizing: border-box; + padding: 0 10px; +} +.button { + padding: 5px 20px; + cursor: pointer; +} \ No newline at end of file diff --git a/demo/js/main-for-vue2.js b/demo/js/main-for-vue2.js new file mode 100644 index 0000000..62881a9 --- /dev/null +++ b/demo/js/main-for-vue2.js @@ -0,0 +1,56 @@ +/** + * 初始化路由 + * routes是来自 js/routes.js 里面的配置 + */ +const router = new VueRouter({ + routes, + linkActiveClass: 'cur', + linkExactActiveClass: 'cur' +}); + + +/** + * 引入统计插件 + */ +Vue.use(baiduAnalytics, { + router: router, + siteIdList: [ + 'aaaaaaaaaaaaaaaaaaa', + 'bbbbbbbbbbbbbbbbbbb', + 'ccccccccccccccccccc' + ], + isDebug: true +}); + + +/** + * 初始化Vue + */ +const app = new Vue({ + el: '#app', + router, + data () { + return { + pageUrl: '', + category: '', + action: '', + label: '', + value: '' + } + }, + mounted () { + }, + methods: { + pv () { + this.$pushBAIDU.pv(this.pageUrl); + }, + event () { + this.$pushBAIDU.event( + this.category, + this.action, + this.label, + this.value + ); + } + } +}); \ No newline at end of file diff --git a/demo/js/main-for-vue3.js b/demo/js/main-for-vue3.js new file mode 100644 index 0000000..013c5c2 --- /dev/null +++ b/demo/js/main-for-vue3.js @@ -0,0 +1,86 @@ +/** + * 导入需要用到的组件 + */ +const { createRouter, createWebHashHistory } = VueRouter; +const { createApp, getCurrentInstance, ref } = Vue; + + +/** + * 初始化路由 + * routes是来自 js/routes.js 里面的配置 + */ +const router = createRouter({ + history: createWebHashHistory(), + routes, + linkActiveClass: 'cur', + linkExactActiveClass: 'cur' +}); + + +/** + * 创建实例 + */ +const app = { + setup () { + // 插件要用到的一个代理组件 + const { proxy } = getCurrentInstance(); + + // 初始化要用到的数据 + const pageUrl = ref(''); + const category = ref(''); + const action = ref(''); + const label = ref(''); + const value = ref(''); + + // 提交pv的操作 + const pv = () => { + proxy.$pushBAIDU.pv(pageUrl.value); + } + + // 提交事件的操作 + const event = () => { + proxy.$pushBAIDU.event( + category.value, + action.value, + label.value, + value.value + ); + } + + // Vue 3.0 需要把模板要用到的东西 return 出去 + return { + // 数据 + pageUrl, + category, + action, + label, + value, + + // 方法 + pv, + event + } + } +}; + + +/** + * 初始化Vue + */ +createApp(app) + // 启动路由 + .use(router) + + // 启动插件 + .use(baiduAnalytics, { + router: router, + siteIdList: [ + 'aaaaaaaaaaaaaaaaaaa', + 'bbbbbbbbbbbbbbbbbbb', + 'ccccccccccccccccccc' + ], + isDebug: true + }) + + // 挂载到节点上 + .mount('#app'); \ No newline at end of file diff --git a/demo/js/main.js b/demo/js/main.js deleted file mode 100644 index 0049ca0..0000000 --- a/demo/js/main.js +++ /dev/null @@ -1,68 +0,0 @@ -// 定义路由信息 -const routes = [ - { - path: '/', - redirect: '/page1' - }, - { - path: '/page1', - component: { - template: '
当前是 Page1 的路由
' - } - }, - { - path: '/page2', - component: { - template: '
当前是 Page2 的路由
' - } - }, - { - path: '/page3', - component: { - template: '
当前是 Page3 的路由
' - } - } -]; - -// 初始化路由 -const router = new VueRouter({ - routes, - linkActiveClass: 'cur', - linkExactActiveClass: 'cur' -}); - -// 引入统计插件 -Vue.use(baiduAnalytics, { - router: router, - siteIdList: [ - 'aaaaaaaaaaaaaaaaaaa', - 'bbbbbbbbbbbbbbbbbbb', - 'ccccccccccccccccccc' - ], - isDebug: true -}); - -// 初始化Vue -const app = new Vue({ - el: '#app', - router, - data () { - return { - pageUrl: '', - category: '', - action: '', - label: '', - value: '' - } - }, - mounted () { - }, - methods: { - pv () { - this.$pushBAIDU.pv(this.pageUrl); - }, - event () { - this.$pushBAIDU.event(this.category, this.action, this.label, this.value); - } - } -}); \ No newline at end of file diff --git a/demo/js/routes.js b/demo/js/routes.js new file mode 100644 index 0000000..f39c2b5 --- /dev/null +++ b/demo/js/routes.js @@ -0,0 +1,27 @@ +/** + * 定义路由信息 + */ +const routes = [ + { + path: '/', + redirect: '/page1' + }, + { + path: '/page1', + component: { + template: '
当前是 Page1 的路由
' + } + }, + { + path: '/page2', + component: { + template: '
当前是 Page2 的路由
' + } + }, + { + path: '/page3', + component: { + template: '
当前是 Page3 的路由
' + } + } +]; \ No newline at end of file diff --git a/demo/index.html b/demo/vue2.html similarity index 61% rename from demo/index.html rename to demo/vue2.html index 0396566..b6ac963 100644 --- a/demo/index.html +++ b/demo/vue2.html @@ -3,64 +3,19 @@ - vue baidu analytics demo - - - + [Vue2] vue baidu analytics demo + + +
-

Hello App!

+ +
+

Hello Vue2 App!

+ [ 切换到vue3 ] +

切换路由自动上报测试

@@ -104,7 +59,8 @@
- + + \ No newline at end of file diff --git a/demo/vue3.html b/demo/vue3.html new file mode 100644 index 0000000..680c0a2 --- /dev/null +++ b/demo/vue3.html @@ -0,0 +1,66 @@ + + + + + + [Vue3] vue baidu analytics demo + + + + + + +
+ +
+

Hello Vue3 App!

+ [ 切换到vue2 ] +
+ +
+

切换路由自动上报测试

+ + +
+ +
+

提交pv测试

+ + +
+ +
+

提交event测试

+ + + + + +
+
+ + + + + + + \ No newline at end of file diff --git a/dist/main.d.ts b/dist/main.d.ts index fac8777..f279511 100644 --- a/dist/main.d.ts +++ b/dist/main.d.ts @@ -1 +1 @@ -export default function install(Vue: Vue, { router, siteIdList, isDebug }: Partial): boolean; +export default function install(Vue: Vue, { router, siteIdList, isDebug }: Partial): boolean; diff --git a/dist/modules/baidu.d.ts b/dist/modules/baidu.d.ts index 038b421..9d7fa43 100644 --- a/dist/modules/baidu.d.ts +++ b/dist/modules/baidu.d.ts @@ -1,10 +1,10 @@ -declare class BAIDU { - siteId: string; - isDebug: boolean; - constructor(siteId?: string, isDebug?: boolean); - init(): void; - setAccount(): void; - trackPageview(pageUrl: string): void; - trackEvent(category: string, action: string, label: string, value: number): boolean; -} -export default BAIDU; +declare class BAIDU { + siteId: string; + isDebug: boolean; + constructor(siteId?: string, isDebug?: boolean); + init(): void; + setAccount(): void; + trackPageview(pageUrl: string): void; + trackEvent(category: string, action: string, label: string, value: number): boolean; +} +export default BAIDU; diff --git a/dist/modules/getVueVersion.d.ts b/dist/modules/getVueVersion.d.ts new file mode 100644 index 0000000..3773740 --- /dev/null +++ b/dist/modules/getVueVersion.d.ts @@ -0,0 +1,2 @@ +declare const getVueVersion: (Vue: Vue) => number; +export default getVueVersion; diff --git a/dist/modules/pushBAIDU.d.ts b/dist/modules/pushBAIDU.d.ts index 8c37771..4291bc4 100644 --- a/dist/modules/pushBAIDU.d.ts +++ b/dist/modules/pushBAIDU.d.ts @@ -1,9 +1,9 @@ -declare class PushBAIDU { - siteIdList: string[]; - isDebug: boolean; - constructor(siteIdList: string[], isDebug: boolean); - init(): void; - pv(pageUrl: string): void; - event(category: string, action: string, label: string, value: number): void; -} -export default PushBAIDU; +declare class PushBAIDU { + siteIdList: string[]; + isDebug: boolean; + constructor(siteIdList: string[], isDebug: boolean); + init(): void; + pv(pageUrl: string): void; + event(category: string, action: string, label: string, value: number): void; +} +export default PushBAIDU; diff --git a/dist/vue-baidu-analytics.js b/dist/vue-baidu-analytics.js index 76fc28a..8952f3d 100644 --- a/dist/vue-baidu-analytics.js +++ b/dist/vue-baidu-analytics.js @@ -1,6 +1,6 @@ /** * name: vue-baidu-analytics - * version: v1.1.0 + * version: v2.0.0 * author: chengpeiquan */ (function (global, factory) { @@ -9,111 +9,129 @@ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.baiduAnalytics = factory()); }(this, (function () { 'use strict'; - var BAIDU = (function () { - function BAIDU(siteId, isDebug) { - if (siteId === void 0) { siteId = ''; } - if (isDebug === void 0) { isDebug = false; } - this.siteId = siteId; - this.isDebug = isDebug; - } - BAIDU.prototype.init = function () { - window._hmt = window._hmt ? window._hmt : []; - var SCRIPT = document.createElement('script'); - SCRIPT['async'] = true; - SCRIPT['src'] = "https://hm.baidu.com/hm.js?" + this.siteId; - document.querySelector('head').appendChild(SCRIPT); - if (this.isDebug) { - console.log("[vue-baidu-analytics] siteId load done.\nsiteId: " + this.siteId); - } - }; - BAIDU.prototype.setAccount = function () { - window._hmt.push(['_setAccount', this.siteId]); - }; - BAIDU.prototype.trackPageview = function (pageUrl) { - if (!pageUrl || typeof pageUrl !== 'string') { - pageUrl = '/'; - } - if (pageUrl.includes('http')) { - var PAGE_CUT = pageUrl.split('/'); - var HOST_NAME = PAGE_CUT[0] + "//" + PAGE_CUT[2]; - pageUrl = pageUrl.replace(HOST_NAME, ''); - } - this.setAccount(); - window._hmt.push(['_trackPageview', pageUrl]); - if (this.isDebug) { - console.log("[vue-baidu-analytics] track pv done.\nsiteId: " + this.siteId + "\npageUrl: " + pageUrl); - } - }; - BAIDU.prototype.trackEvent = function (category, action, label, value) { - if (typeof category !== 'string' || typeof action !== 'string' || !category || !action) { - throw new Error('[vue-baidu-analytics] Missing necessary category and operation information, and must be of type string.'); - } - if (!label || typeof label !== 'string') { - label = ''; - } - if (!Number(value)) { - value = 1; - } - this.setAccount(); - window._hmt.push(['_trackEvent', category, action, label, value]); - if (this.isDebug) { - console.log("[vue-baidu-analytics] track event done.\nsiteId: " + this.siteId + "\ncategory: " + category + "\naction: " + action + "\nlabel: " + label + "\nvalue: " + value); - } - }; - return BAIDU; + var BAIDU = (function () { + function BAIDU(siteId, isDebug) { + if (siteId === void 0) { siteId = ''; } + if (isDebug === void 0) { isDebug = false; } + this.siteId = siteId; + this.isDebug = isDebug; + } + BAIDU.prototype.init = function () { + window._hmt = window._hmt ? window._hmt : []; + var SCRIPT = document.createElement('script'); + SCRIPT['async'] = true; + SCRIPT['src'] = "https://hm.baidu.com/hm.js?" + this.siteId; + document.querySelector('head').appendChild(SCRIPT); + if (this.isDebug) { + console.log("[vue-baidu-analytics] siteId load done.\nsiteId: " + this.siteId); + } + }; + BAIDU.prototype.setAccount = function () { + window._hmt.push(['_setAccount', this.siteId]); + }; + BAIDU.prototype.trackPageview = function (pageUrl) { + if (!pageUrl || typeof pageUrl !== 'string') { + pageUrl = '/'; + } + if (pageUrl.includes('http')) { + var PAGE_CUT = pageUrl.split('/'); + var HOST_NAME = PAGE_CUT[0] + "//" + PAGE_CUT[2]; + pageUrl = pageUrl.replace(HOST_NAME, ''); + } + this.setAccount(); + window._hmt.push(['_trackPageview', pageUrl]); + if (this.isDebug) { + console.log("[vue-baidu-analytics] track pv done.\nsiteId: " + this.siteId + "\npageUrl: " + pageUrl); + } + }; + BAIDU.prototype.trackEvent = function (category, action, label, value) { + if (typeof category !== 'string' || typeof action !== 'string' || !category || !action) { + throw new Error('[vue-baidu-analytics] Missing necessary category and operation information, and must be of type string.'); + } + if (!label || typeof label !== 'string') { + label = ''; + } + if (!Number(value)) { + value = 1; + } + this.setAccount(); + window._hmt.push(['_trackEvent', category, action, label, value]); + if (this.isDebug) { + console.log("[vue-baidu-analytics] track event done.\nsiteId: " + this.siteId + "\ncategory: " + category + "\naction: " + action + "\nlabel: " + label + "\nvalue: " + value); + } + }; + return BAIDU; }()); - var PushBAIDU = (function () { - function PushBAIDU(siteIdList, isDebug) { - this.siteIdList = siteIdList; - this.isDebug = isDebug; - } - PushBAIDU.prototype.init = function () { - var _this = this; - this.siteIdList.forEach(function (siteId) { - var SITE = new BAIDU(siteId, _this.isDebug); - SITE.init(); - }); - }; - PushBAIDU.prototype.pv = function (pageUrl) { - var _this = this; - this.siteIdList.forEach(function (siteId) { - var SITE = new BAIDU(siteId, _this.isDebug); - SITE.trackPageview(pageUrl); - }); - }; - PushBAIDU.prototype.event = function (category, action, label, value) { - var _this = this; - this.siteIdList.forEach(function (siteId) { - var SITE = new BAIDU(siteId, _this.isDebug); - SITE.trackEvent(category, action, label, value); - }); - }; - return PushBAIDU; + var PushBAIDU = (function () { + function PushBAIDU(siteIdList, isDebug) { + this.siteIdList = siteIdList; + this.isDebug = isDebug; + } + PushBAIDU.prototype.init = function () { + var _this = this; + this.siteIdList.forEach(function (siteId) { + var SITE = new BAIDU(siteId, _this.isDebug); + SITE.init(); + }); + }; + PushBAIDU.prototype.pv = function (pageUrl) { + var _this = this; + this.siteIdList.forEach(function (siteId) { + var SITE = new BAIDU(siteId, _this.isDebug); + SITE.trackPageview(pageUrl); + }); + }; + PushBAIDU.prototype.event = function (category, action, label, value) { + var _this = this; + this.siteIdList.forEach(function (siteId) { + var SITE = new BAIDU(siteId, _this.isDebug); + SITE.trackEvent(category, action, label, value); + }); + }; + return PushBAIDU; }()); - function install(Vue, _a) { - var router = _a.router, siteIdList = _a.siteIdList, _b = _a.isDebug, isDebug = _b === void 0 ? false : _b; - if (typeof document === 'undefined' || typeof window === 'undefined') { - return false; - } - if (!router) { - throw new Error('[vue-baidu-analytics] Must pass a Vue-Router instance to vue-baidu-analytics.'); - } - if (!siteIdList) { - throw new Error('[vue-baidu-analytics] Missing tracking domain ID, add at least one of baidu analytics.'); - } - var pushBAIDU = new PushBAIDU(siteIdList, isDebug); - Vue.prototype.$pushBAIDU = pushBAIDU; - if (siteIdList) { - pushBAIDU.init(); - } - router.afterEach(function (to) { - var PAGE_PATH_DIR_COUNT = window.location.pathname.split('/').length; - var PAGE_PATH = window.location.pathname.split('/').slice(0, PAGE_PATH_DIR_COUNT - 1).join('/'); - var PAGE_URL = router.mode === 'hash' ? PAGE_PATH + "/#" + to.fullPath : "" + PAGE_PATH + to.fullPath; - pushBAIDU.pv(PAGE_URL); - }); + var getVueVersion = function (Vue) { + var version = 2; + var VUE_VERSION = String(Vue.version); + if (VUE_VERSION.slice(0, 2) === '2.') { + version = 2; + } + if (VUE_VERSION.slice(0, 2) === '3.') { + version = 3; + } + return version; + }; + + function install(Vue, _a) { + var router = _a.router, siteIdList = _a.siteIdList, _b = _a.isDebug, isDebug = _b === void 0 ? false : _b; + if (typeof document === 'undefined' || typeof window === 'undefined') { + return false; + } + if (!router) { + throw new Error('[vue-baidu-analytics] Must pass a Vue-Router instance to vue-baidu-analytics.'); + } + if (!siteIdList) { + throw new Error('[vue-baidu-analytics] Missing tracking domain ID, add at least one of baidu analytics.'); + } + var pushBAIDU = new PushBAIDU(siteIdList, isDebug); + var VUE_VERSION = getVueVersion(Vue) || 2; + if (VUE_VERSION === 2) { + Vue.prototype.$pushBAIDU = pushBAIDU; + } + if (VUE_VERSION === 3) { + Vue.config.globalProperties.$pushBAIDU = pushBAIDU; + } + if (siteIdList) { + pushBAIDU.init(); + } + router.afterEach(function (to) { + var PAGE_PATH_DIR_COUNT = window.location.pathname.split('/').length; + var PAGE_PATH = window.location.pathname.split('/').slice(0, PAGE_PATH_DIR_COUNT - 1).join('/'); + var PAGE_URL = router.mode === 'hash' ? PAGE_PATH + "/#" + to.fullPath : "" + PAGE_PATH + to.fullPath; + pushBAIDU.pv(PAGE_URL); + }); } return install; diff --git a/dist/vue-baidu-analytics.js.map b/dist/vue-baidu-analytics.js.map index 1fab1eb..e3222a5 100644 --- a/dist/vue-baidu-analytics.js.map +++ b/dist/vue-baidu-analytics.js.map @@ -1 +1 @@ -{"version":3,"file":"vue-baidu-analytics.js","sources":["../src/modules/baidu.ts","../src/modules/pushBAIDU.ts","../src/main.ts"],"sourcesContent":["/** \r\n * 定义基础配置\r\n * 官方文档 https://tongji.baidu.com/open/api/more?p=guide_overview\r\n */\r\nclass BAIDU {\r\n siteId: string;\r\n isDebug: boolean;\r\n\r\n constructor (siteId: string = '', isDebug: boolean = false) {\r\n this.siteId = siteId;\r\n this.isDebug = isDebug;\r\n }\r\n\r\n /** \r\n * 初始化\r\n */\r\n init () {\r\n window._hmt = window._hmt ? window._hmt : [];\r\n const SCRIPT = document.createElement('script');\r\n SCRIPT['async'] = true;\r\n SCRIPT['src'] = `https://hm.baidu.com/hm.js?${this.siteId}`;\r\n document.querySelector('head').appendChild(SCRIPT);\r\n\r\n if ( this.isDebug ) {\r\n console.log(`[vue-baidu-analytics] siteId load done.\\nsiteId: ${this.siteId}`);\r\n }\r\n }\r\n\r\n /** \r\n * 设置要响应的站点\r\n */\r\n setAccount () {\r\n window._hmt.push(['_setAccount', this.siteId]);\r\n }\r\n\r\n /** \r\n * 提交PV、UV\r\n */\r\n trackPageview (pageUrl: string) {\r\n // 如果页面链接没传或者无效链接,则默认为根域名\r\n if ( !pageUrl || typeof pageUrl !== 'string' ) {\r\n pageUrl = '/';\r\n }\r\n\r\n // 如果页面链接带上了域名,则需要过滤掉\r\n if ( pageUrl.includes('http') ) {\r\n const PAGE_CUT = pageUrl.split('/');\r\n const HOST_NAME = `${PAGE_CUT[0]}//${PAGE_CUT[2]}`;\r\n pageUrl = pageUrl.replace(HOST_NAME, '');\r\n }\r\n\r\n // 设置响应id并提交数据\r\n this.setAccount();\r\n window._hmt.push(['_trackPageview', pageUrl]);\r\n\r\n if ( this.isDebug ) {\r\n console.log(`[vue-baidu-analytics] track pv done.\\nsiteId: ${this.siteId}\\npageUrl: ${pageUrl}`);\r\n }\r\n }\r\n\r\n /** \r\n * 提交点击事件\r\n */\r\n trackEvent (category: string, action: string, label: string, value: number) {\r\n // 前两个是必填项\r\n if ( typeof category !== 'string' || typeof action !== 'string' || !category || !action ) {\r\n throw new Error('[vue-baidu-analytics] Missing necessary category and operation information, and must be of type string.');\r\n return false;\r\n }\r\n\r\n // 重置一些无效的默认值\r\n if ( !label || typeof label !== 'string' ) {\r\n label = '';\r\n }\r\n\r\n if ( !Number(value) ) {\r\n value = 1;\r\n }\r\n\r\n // 设置响应id并提交数据\r\n this.setAccount();\r\n window._hmt.push(['_trackEvent', category, action, label, value]);\r\n\r\n if ( this.isDebug ) {\r\n console.log(`[vue-baidu-analytics] track event done.\\nsiteId: ${this.siteId}\\ncategory: ${category}\\naction: ${action}\\nlabel: ${label}\\nvalue: ${value}`);\r\n }\r\n }\r\n}\r\n\r\nexport default BAIDU;","import BAIDU from '@m/baidu'\r\n\r\n/** \r\n * 定义推送操作\r\n */\r\nclass PushBAIDU {\r\n siteIdList: string[];\r\n isDebug: boolean;\r\n\r\n constructor (siteIdList: string[], isDebug: boolean) {\r\n this.siteIdList = siteIdList;\r\n this.isDebug = isDebug;\r\n }\r\n\r\n /** \r\n * 批量部署站点\r\n */\r\n init () {\r\n this.siteIdList.forEach( (siteId: string) => {\r\n const SITE = new BAIDU(siteId, this.isDebug);\r\n SITE.init();\r\n });\r\n }\r\n\r\n /** \r\n * 批量提交pv上报\r\n */\r\n pv (pageUrl: string) {\r\n this.siteIdList.forEach( (siteId: string) => {\r\n const SITE = new BAIDU(siteId, this.isDebug);\r\n SITE.trackPageview(pageUrl);\r\n });\r\n }\r\n\r\n /** \r\n * 批量提交事件上报\r\n */\r\n event (category: string, action: string, label: string, value: number) {\r\n this.siteIdList.forEach( (siteId: string) => {\r\n const SITE = new BAIDU(siteId, this.isDebug);\r\n SITE.trackEvent(category, action, label, value);\r\n });\r\n }\r\n\r\n}\r\n\r\nexport default PushBAIDU;","import PushBAIDU from '@m/pushBAIDU'\r\n\r\nexport default function install (Vue: Vue, { router, siteIdList, isDebug = false }: Partial) {\r\n\r\n /** \r\n * 一些环境和参数的检查\r\n */\r\n if ( typeof document === 'undefined' || typeof window === 'undefined' ) {\r\n return false;\r\n }\r\n\r\n if ( !router ) {\r\n throw new Error('[vue-baidu-analytics] Must pass a Vue-Router instance to vue-baidu-analytics.');\r\n }\r\n\r\n if ( !siteIdList ) {\r\n throw new Error('[vue-baidu-analytics] Missing tracking domain ID, add at least one of baidu analytics.');\r\n }\r\n\r\n /** \r\n * 挂载推送的方法\r\n */\r\n const pushBAIDU = new PushBAIDU(siteIdList, isDebug);\r\n Vue.prototype.$pushBAIDU = pushBAIDU;\r\n\r\n /** \r\n * 部署站点并初始化\r\n */\r\n if ( siteIdList ) {\r\n pushBAIDU.init();\r\n }\r\n\r\n /** \r\n * 路由切换时执行PV上报\r\n */\r\n router.afterEach( (to: To) => {\r\n const PAGE_PATH_DIR_COUNT = window.location.pathname.split('/').length;\r\n const PAGE_PATH = window.location.pathname.split('/').slice(0, PAGE_PATH_DIR_COUNT - 1).join('/');\r\n const PAGE_URL = router.mode === 'hash' ? `${PAGE_PATH}/#${to.fullPath}` : `${PAGE_PATH}${to.fullPath}`;\r\n\r\n pushBAIDU.pv(PAGE_URL);\r\n });\r\n}\r\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vue-baidu-analytics.js","sources":["../src/modules/baidu.ts","../src/modules/pushBAIDU.ts","../src/modules/getVueVersion.ts","../src/main.ts"],"sourcesContent":["/** \r\n * 定义基础配置\r\n * 官方文档 https://tongji.baidu.com/open/api/more?p=guide_overview\r\n */\r\nclass BAIDU {\r\n siteId: string;\r\n isDebug: boolean;\r\n\r\n constructor (siteId: string = '', isDebug: boolean = false) {\r\n this.siteId = siteId;\r\n this.isDebug = isDebug;\r\n }\r\n\r\n /** \r\n * 初始化\r\n */\r\n init () {\r\n window._hmt = window._hmt ? window._hmt : [];\r\n const SCRIPT = document.createElement('script');\r\n SCRIPT['async'] = true;\r\n SCRIPT['src'] = `https://hm.baidu.com/hm.js?${this.siteId}`;\r\n document.querySelector('head').appendChild(SCRIPT);\r\n\r\n if ( this.isDebug ) {\r\n console.log(`[vue-baidu-analytics] siteId load done.\\nsiteId: ${this.siteId}`);\r\n }\r\n }\r\n\r\n /** \r\n * 设置要响应的站点\r\n */\r\n setAccount () {\r\n window._hmt.push(['_setAccount', this.siteId]);\r\n }\r\n\r\n /** \r\n * 提交PV、UV\r\n */\r\n trackPageview (pageUrl: string) {\r\n // 如果页面链接没传或者无效链接,则默认为根域名\r\n if ( !pageUrl || typeof pageUrl !== 'string' ) {\r\n pageUrl = '/';\r\n }\r\n\r\n // 如果页面链接带上了域名,则需要过滤掉\r\n if ( pageUrl.includes('http') ) {\r\n const PAGE_CUT = pageUrl.split('/');\r\n const HOST_NAME = `${PAGE_CUT[0]}//${PAGE_CUT[2]}`;\r\n pageUrl = pageUrl.replace(HOST_NAME, '');\r\n }\r\n\r\n // 设置响应id并提交数据\r\n this.setAccount();\r\n window._hmt.push(['_trackPageview', pageUrl]);\r\n\r\n if ( this.isDebug ) {\r\n console.log(`[vue-baidu-analytics] track pv done.\\nsiteId: ${this.siteId}\\npageUrl: ${pageUrl}`);\r\n }\r\n }\r\n\r\n /** \r\n * 提交点击事件\r\n */\r\n trackEvent (category: string, action: string, label: string, value: number) {\r\n // 前两个是必填项\r\n if ( typeof category !== 'string' || typeof action !== 'string' || !category || !action ) {\r\n throw new Error('[vue-baidu-analytics] Missing necessary category and operation information, and must be of type string.');\r\n return false;\r\n }\r\n\r\n // 重置一些无效的默认值\r\n if ( !label || typeof label !== 'string' ) {\r\n label = '';\r\n }\r\n\r\n if ( !Number(value) ) {\r\n value = 1;\r\n }\r\n\r\n // 设置响应id并提交数据\r\n this.setAccount();\r\n window._hmt.push(['_trackEvent', category, action, label, value]);\r\n\r\n if ( this.isDebug ) {\r\n console.log(`[vue-baidu-analytics] track event done.\\nsiteId: ${this.siteId}\\ncategory: ${category}\\naction: ${action}\\nlabel: ${label}\\nvalue: ${value}`);\r\n }\r\n }\r\n}\r\n\r\nexport default BAIDU;","import BAIDU from '@m/baidu'\r\n\r\n/** \r\n * 定义推送操作\r\n */\r\nclass PushBAIDU {\r\n siteIdList: string[];\r\n isDebug: boolean;\r\n\r\n constructor (siteIdList: string[], isDebug: boolean) {\r\n this.siteIdList = siteIdList;\r\n this.isDebug = isDebug;\r\n }\r\n\r\n /** \r\n * 批量部署站点\r\n */\r\n init () {\r\n this.siteIdList.forEach( (siteId: string) => {\r\n const SITE = new BAIDU(siteId, this.isDebug);\r\n SITE.init();\r\n });\r\n }\r\n\r\n /** \r\n * 批量提交pv上报\r\n */\r\n pv (pageUrl: string) {\r\n this.siteIdList.forEach( (siteId: string) => {\r\n const SITE = new BAIDU(siteId, this.isDebug);\r\n SITE.trackPageview(pageUrl);\r\n });\r\n }\r\n\r\n /** \r\n * 批量提交事件上报\r\n */\r\n event (category: string, action: string, label: string, value: number) {\r\n this.siteIdList.forEach( (siteId: string) => {\r\n const SITE = new BAIDU(siteId, this.isDebug);\r\n SITE.trackEvent(category, action, label, value);\r\n });\r\n }\r\n\r\n}\r\n\r\nexport default PushBAIDU;","/** \r\n * 获取Vue的版本\r\n * @return 2=Vue2.x, 3=Vue3.x\r\n */\r\nconst getVueVersion = (Vue: Vue): number => {\r\n let version: number = 2;\r\n\r\n // 获取Vue的版本号\r\n const VUE_VERSION: string = String(Vue.version);\r\n\r\n // Vue 2.x\r\n if ( VUE_VERSION.slice(0, 2) === '2.' ) {\r\n version = 2; \r\n }\r\n \r\n // Vue 3.x\r\n if ( VUE_VERSION.slice(0, 2) === '3.' ) {\r\n version = 3; \r\n }\r\n \r\n return version;\r\n}\r\n\r\nexport default getVueVersion;","import PushBAIDU from '@m/pushBAIDU'\r\nimport getVueVersion from '@m/getVueVersion'\r\n\r\n/** \r\n * 定义插件\r\n */\r\nexport default function install (Vue: Vue, { router, siteIdList, isDebug = false }: Partial) {\r\n\r\n /** \r\n * 一些环境和参数的检查\r\n */\r\n if ( typeof document === 'undefined' || typeof window === 'undefined' ) {\r\n return false;\r\n }\r\n\r\n if ( !router ) {\r\n throw new Error('[vue-baidu-analytics] Must pass a Vue-Router instance to vue-baidu-analytics.');\r\n }\r\n\r\n if ( !siteIdList ) {\r\n throw new Error('[vue-baidu-analytics] Missing tracking domain ID, add at least one of baidu analytics.');\r\n }\r\n\r\n /** \r\n * 挂载推送的方法\r\n */\r\n const pushBAIDU: any = new PushBAIDU(siteIdList, isDebug);\r\n \r\n // 获取Vue版本(获取失败则默认为2)\r\n const VUE_VERSION: number = getVueVersion(Vue) || 2;\r\n\r\n // 2.x可以直接挂载到原型上\r\n if ( VUE_VERSION === 2 ) {\r\n Vue.prototype.$pushBAIDU = pushBAIDU;\r\n }\r\n\r\n // 3.x必须使用这个方式来挂载\r\n if ( VUE_VERSION === 3 ) {\r\n Vue.config.globalProperties.$pushBAIDU = pushBAIDU;\r\n }\r\n\r\n /** \r\n * 部署站点并初始化\r\n */\r\n if ( siteIdList ) {\r\n pushBAIDU.init();\r\n }\r\n\r\n /** \r\n * 路由切换时执行PV上报\r\n */\r\n router.afterEach( (to: To) => {\r\n const PAGE_PATH_DIR_COUNT = window.location.pathname.split('/').length;\r\n const PAGE_PATH = window.location.pathname.split('/').slice(0, PAGE_PATH_DIR_COUNT - 1).join('/');\r\n const PAGE_URL = router.mode === 'hash' ? `${PAGE_PATH}/#${to.fullPath}` : `${PAGE_PATH}${to.fullPath}`;\r\n\r\n pushBAIDU.pv(PAGE_URL);\r\n });\r\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/vue-baidu-analytics.min.js b/dist/vue-baidu-analytics.min.js index 8f5fea6..73133ef 100644 --- a/dist/vue-baidu-analytics.min.js +++ b/dist/vue-baidu-analytics.min.js @@ -1,7 +1,7 @@ /** * name: vue-baidu-analytics - * version: v1.1.0 + * version: v2.0.0 * author: chengpeiquan */ - !function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(t="undefined"!=typeof globalThis?globalThis:t||self).baiduAnalytics=i()}(this,(function(){"use strict";var t=function(){function t(t,i){void 0===t&&(t=""),void 0===i&&(i=!1),this.siteId=t,this.isDebug=i}return t.prototype.init=function(){window._hmt=window._hmt?window._hmt:[];var t=document.createElement("script");t.async=!0,t.src="https://hm.baidu.com/hm.js?"+this.siteId,document.querySelector("head").appendChild(t),this.isDebug&&console.log("[vue-baidu-analytics] siteId load done.\nsiteId: "+this.siteId)},t.prototype.setAccount=function(){window._hmt.push(["_setAccount",this.siteId])},t.prototype.trackPageview=function(t){if(t&&"string"==typeof t||(t="/"),t.includes("http")){var i=t.split("/"),e=i[0]+"//"+i[2];t=t.replace(e,"")}this.setAccount(),window._hmt.push(["_trackPageview",t]),this.isDebug&&console.log("[vue-baidu-analytics] track pv done.\nsiteId: "+this.siteId+"\npageUrl: "+t)},t.prototype.trackEvent=function(t,i,e,n){if("string"!=typeof t||"string"!=typeof i||!t||!i)throw new Error("[vue-baidu-analytics] Missing necessary category and operation information, and must be of type string.");e&&"string"==typeof e||(e=""),Number(n)||(n=1),this.setAccount(),window._hmt.push(["_trackEvent",t,i,e,n]),this.isDebug&&console.log("[vue-baidu-analytics] track event done.\nsiteId: "+this.siteId+"\ncategory: "+t+"\naction: "+i+"\nlabel: "+e+"\nvalue: "+n)},t}(),i=function(){function i(t,i){this.siteIdList=t,this.isDebug=i}return i.prototype.init=function(){var i=this;this.siteIdList.forEach((function(e){new t(e,i.isDebug).init()}))},i.prototype.pv=function(i){var e=this;this.siteIdList.forEach((function(n){new t(n,e.isDebug).trackPageview(i)}))},i.prototype.event=function(i,e,n,o){var s=this;this.siteIdList.forEach((function(a){new t(a,s.isDebug).trackEvent(i,e,n,o)}))},i}();return function(t,e){var n=e.router,o=e.siteIdList,s=e.isDebug,a=void 0!==s&&s;if("undefined"==typeof document||"undefined"==typeof window)return!1;if(!n)throw new Error("[vue-baidu-analytics] Must pass a Vue-Router instance to vue-baidu-analytics.");if(!o)throw new Error("[vue-baidu-analytics] Missing tracking domain ID, add at least one of baidu analytics.");var u=new i(o,a);t.prototype.$pushBAIDU=u,o&&u.init(),n.afterEach((function(t){var i=window.location.pathname.split("/").length,e=window.location.pathname.split("/").slice(0,i-1).join("/"),o="hash"===n.mode?e+"/#"+t.fullPath:""+e+t.fullPath;u.pv(o)}))}})); + !function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(t="undefined"!=typeof globalThis?globalThis:t||self).baiduAnalytics=i()}(this,(function(){"use strict";var t=function(){function t(t,i){void 0===t&&(t=""),void 0===i&&(i=!1),this.siteId=t,this.isDebug=i}return t.prototype.init=function(){window._hmt=window._hmt?window._hmt:[];var t=document.createElement("script");t.async=!0,t.src="https://hm.baidu.com/hm.js?"+this.siteId,document.querySelector("head").appendChild(t),this.isDebug&&console.log("[vue-baidu-analytics] siteId load done.\nsiteId: "+this.siteId)},t.prototype.setAccount=function(){window._hmt.push(["_setAccount",this.siteId])},t.prototype.trackPageview=function(t){if(t&&"string"==typeof t||(t="/"),t.includes("http")){var i=t.split("/"),e=i[0]+"//"+i[2];t=t.replace(e,"")}this.setAccount(),window._hmt.push(["_trackPageview",t]),this.isDebug&&console.log("[vue-baidu-analytics] track pv done.\nsiteId: "+this.siteId+"\npageUrl: "+t)},t.prototype.trackEvent=function(t,i,e,n){if("string"!=typeof t||"string"!=typeof i||!t||!i)throw new Error("[vue-baidu-analytics] Missing necessary category and operation information, and must be of type string.");e&&"string"==typeof e||(e=""),Number(n)||(n=1),this.setAccount(),window._hmt.push(["_trackEvent",t,i,e,n]),this.isDebug&&console.log("[vue-baidu-analytics] track event done.\nsiteId: "+this.siteId+"\ncategory: "+t+"\naction: "+i+"\nlabel: "+e+"\nvalue: "+n)},t}(),i=function(){function i(t,i){this.siteIdList=t,this.isDebug=i}return i.prototype.init=function(){var i=this;this.siteIdList.forEach((function(e){new t(e,i.isDebug).init()}))},i.prototype.pv=function(i){var e=this;this.siteIdList.forEach((function(n){new t(n,e.isDebug).trackPageview(i)}))},i.prototype.event=function(i,e,n,o){var s=this;this.siteIdList.forEach((function(a){new t(a,s.isDebug).trackEvent(i,e,n,o)}))},i}();return function(t,e){var n=e.router,o=e.siteIdList,s=e.isDebug,a=void 0!==s&&s;if("undefined"==typeof document||"undefined"==typeof window)return!1;if(!n)throw new Error("[vue-baidu-analytics] Must pass a Vue-Router instance to vue-baidu-analytics.");if(!o)throw new Error("[vue-baidu-analytics] Missing tracking domain ID, add at least one of baidu analytics.");var r=new i(o,a),u=function(t){var i=2,e=String(t.version);return"2."===e.slice(0,2)&&(i=2),"3."===e.slice(0,2)&&(i=3),i}(t)||2;2===u&&(t.prototype.$pushBAIDU=r),3===u&&(t.config.globalProperties.$pushBAIDU=r),o&&r.init(),n.afterEach((function(t){var i=window.location.pathname.split("/").length,e=window.location.pathname.split("/").slice(0,i-1).join("/"),o="hash"===n.mode?e+"/#"+t.fullPath:""+e+t.fullPath;r.pv(o)}))}})); //# sourceMappingURL=vue-baidu-analytics.min.js.map diff --git a/dist/vue-baidu-analytics.min.js.map b/dist/vue-baidu-analytics.min.js.map index 2054c52..8788bbb 100644 --- a/dist/vue-baidu-analytics.min.js.map +++ b/dist/vue-baidu-analytics.min.js.map @@ -1 +1 @@ -{"version":3,"file":"vue-baidu-analytics.min.js","sources":["../src/modules/baidu.ts","../src/modules/pushBAIDU.ts","../src/main.ts"],"sourcesContent":["/** \r\n * 定义基础配置\r\n * 官方文档 https://tongji.baidu.com/open/api/more?p=guide_overview\r\n */\r\nclass BAIDU {\r\n siteId: string;\r\n isDebug: boolean;\r\n\r\n constructor (siteId: string = '', isDebug: boolean = false) {\r\n this.siteId = siteId;\r\n this.isDebug = isDebug;\r\n }\r\n\r\n /** \r\n * 初始化\r\n */\r\n init () {\r\n window._hmt = window._hmt ? window._hmt : [];\r\n const SCRIPT = document.createElement('script');\r\n SCRIPT['async'] = true;\r\n SCRIPT['src'] = `https://hm.baidu.com/hm.js?${this.siteId}`;\r\n document.querySelector('head').appendChild(SCRIPT);\r\n\r\n if ( this.isDebug ) {\r\n console.log(`[vue-baidu-analytics] siteId load done.\\nsiteId: ${this.siteId}`);\r\n }\r\n }\r\n\r\n /** \r\n * 设置要响应的站点\r\n */\r\n setAccount () {\r\n window._hmt.push(['_setAccount', this.siteId]);\r\n }\r\n\r\n /** \r\n * 提交PV、UV\r\n */\r\n trackPageview (pageUrl: string) {\r\n // 如果页面链接没传或者无效链接,则默认为根域名\r\n if ( !pageUrl || typeof pageUrl !== 'string' ) {\r\n pageUrl = '/';\r\n }\r\n\r\n // 如果页面链接带上了域名,则需要过滤掉\r\n if ( pageUrl.includes('http') ) {\r\n const PAGE_CUT = pageUrl.split('/');\r\n const HOST_NAME = `${PAGE_CUT[0]}//${PAGE_CUT[2]}`;\r\n pageUrl = pageUrl.replace(HOST_NAME, '');\r\n }\r\n\r\n // 设置响应id并提交数据\r\n this.setAccount();\r\n window._hmt.push(['_trackPageview', pageUrl]);\r\n\r\n if ( this.isDebug ) {\r\n console.log(`[vue-baidu-analytics] track pv done.\\nsiteId: ${this.siteId}\\npageUrl: ${pageUrl}`);\r\n }\r\n }\r\n\r\n /** \r\n * 提交点击事件\r\n */\r\n trackEvent (category: string, action: string, label: string, value: number) {\r\n // 前两个是必填项\r\n if ( typeof category !== 'string' || typeof action !== 'string' || !category || !action ) {\r\n throw new Error('[vue-baidu-analytics] Missing necessary category and operation information, and must be of type string.');\r\n return false;\r\n }\r\n\r\n // 重置一些无效的默认值\r\n if ( !label || typeof label !== 'string' ) {\r\n label = '';\r\n }\r\n\r\n if ( !Number(value) ) {\r\n value = 1;\r\n }\r\n\r\n // 设置响应id并提交数据\r\n this.setAccount();\r\n window._hmt.push(['_trackEvent', category, action, label, value]);\r\n\r\n if ( this.isDebug ) {\r\n console.log(`[vue-baidu-analytics] track event done.\\nsiteId: ${this.siteId}\\ncategory: ${category}\\naction: ${action}\\nlabel: ${label}\\nvalue: ${value}`);\r\n }\r\n }\r\n}\r\n\r\nexport default BAIDU;","import BAIDU from '@m/baidu'\r\n\r\n/** \r\n * 定义推送操作\r\n */\r\nclass PushBAIDU {\r\n siteIdList: string[];\r\n isDebug: boolean;\r\n\r\n constructor (siteIdList: string[], isDebug: boolean) {\r\n this.siteIdList = siteIdList;\r\n this.isDebug = isDebug;\r\n }\r\n\r\n /** \r\n * 批量部署站点\r\n */\r\n init () {\r\n this.siteIdList.forEach( (siteId: string) => {\r\n const SITE = new BAIDU(siteId, this.isDebug);\r\n SITE.init();\r\n });\r\n }\r\n\r\n /** \r\n * 批量提交pv上报\r\n */\r\n pv (pageUrl: string) {\r\n this.siteIdList.forEach( (siteId: string) => {\r\n const SITE = new BAIDU(siteId, this.isDebug);\r\n SITE.trackPageview(pageUrl);\r\n });\r\n }\r\n\r\n /** \r\n * 批量提交事件上报\r\n */\r\n event (category: string, action: string, label: string, value: number) {\r\n this.siteIdList.forEach( (siteId: string) => {\r\n const SITE = new BAIDU(siteId, this.isDebug);\r\n SITE.trackEvent(category, action, label, value);\r\n });\r\n }\r\n\r\n}\r\n\r\nexport default PushBAIDU;","import PushBAIDU from '@m/pushBAIDU'\r\n\r\nexport default function install (Vue: Vue, { router, siteIdList, isDebug = false }: Partial) {\r\n\r\n /** \r\n * 一些环境和参数的检查\r\n */\r\n if ( typeof document === 'undefined' || typeof window === 'undefined' ) {\r\n return false;\r\n }\r\n\r\n if ( !router ) {\r\n throw new Error('[vue-baidu-analytics] Must pass a Vue-Router instance to vue-baidu-analytics.');\r\n }\r\n\r\n if ( !siteIdList ) {\r\n throw new Error('[vue-baidu-analytics] Missing tracking domain ID, add at least one of baidu analytics.');\r\n }\r\n\r\n /** \r\n * 挂载推送的方法\r\n */\r\n const pushBAIDU = new PushBAIDU(siteIdList, isDebug);\r\n Vue.prototype.$pushBAIDU = pushBAIDU;\r\n\r\n /** \r\n * 部署站点并初始化\r\n */\r\n if ( siteIdList ) {\r\n pushBAIDU.init();\r\n }\r\n\r\n /** \r\n * 路由切换时执行PV上报\r\n */\r\n router.afterEach( (to: To) => {\r\n const PAGE_PATH_DIR_COUNT = window.location.pathname.split('/').length;\r\n const PAGE_PATH = window.location.pathname.split('/').slice(0, PAGE_PATH_DIR_COUNT - 1).join('/');\r\n const PAGE_URL = router.mode === 'hash' ? `${PAGE_PATH}/#${to.fullPath}` : `${PAGE_PATH}${to.fullPath}`;\r\n\r\n pushBAIDU.pv(PAGE_URL);\r\n });\r\n}\r\n"],"names":["siteId","isDebug","this","BAIDU","window","_hmt","SCRIPT","document","createElement","querySelector","appendChild","console","log","push","pageUrl","includes","PAGE_CUT","split","HOST_NAME","replace","setAccount","category","action","label","value","Error","Number","siteIdList","PushBAIDU","forEach","_this","init","trackPageview","trackEvent","Vue","_a","router","_b","pushBAIDU","prototype","$pushBAIDU","afterEach","to","PAGE_PATH_DIR_COUNT","location","pathname","length","PAGE_PATH","slice","join","PAGE_URL","mode","fullPath","pv"],"mappings":";;;;;gPAIA,iBAIE,WAAaA,EAAqBC,gBAArBD,mBAAqBC,MAChCC,KAAKF,OAASA,EACdE,KAAKD,QAAUA,EA6EnB,OAvEEE,iBAAA,WACEC,OAAOC,KAAOD,OAAOC,KAAOD,OAAOC,KAAO,GAC1C,IAAMC,EAASC,SAASC,cAAc,UACtCF,EAAc,OAAI,EAClBA,EAAY,IAAI,8BAA8BJ,KAAKF,OACnDO,SAASE,cAAc,QAAQC,YAAYJ,GAEtCJ,KAAKD,SACRU,QAAQC,IAAI,uDAAuDV,KAAKF,SAO5EG,uBAAA,WACEC,OAAOC,KAAKQ,KAAK,CAAC,cAAeX,KAAKF,UAMxCG,0BAAA,SAAeW,GAOb,GALMA,GAA8B,iBAAZA,IACtBA,EAAU,KAIPA,EAAQC,SAAS,QAAU,CAC9B,IAAMC,EAAWF,EAAQG,MAAM,KACzBC,EAAeF,EAAS,QAAOA,EAAS,GAC9CF,EAAUA,EAAQK,QAAQD,EAAW,IAIvChB,KAAKkB,aACLhB,OAAOC,KAAKQ,KAAK,CAAC,iBAAkBC,IAE/BZ,KAAKD,SACRU,QAAQC,IAAI,oDAAoDV,KAAKF,uBAAsBc,IAO/FX,uBAAA,SAAYkB,EAAkBC,EAAgBC,EAAeC,GAE3D,GAAyB,iBAAbH,GAA4C,iBAAXC,IAAwBD,IAAaC,EAChF,MAAM,IAAIG,MAAM,2GAKZF,GAA0B,iBAAVA,IACpBA,EAAQ,IAGJG,OAAOF,KACXA,EAAQ,GAIVtB,KAAKkB,aACLhB,OAAOC,KAAKQ,KAAK,CAAC,cAAeQ,EAAUC,EAAQC,EAAOC,IAErDtB,KAAKD,SACRU,QAAQC,IAAI,sDAAsDV,KAAKF,sBAAqBqB,iBAAuBC,iBAAqBC,iBAAoBC,sBC3EhK,WAAaG,EAAsB1B,GACjCC,KAAKyB,WAAaA,EAClBzB,KAAKD,QAAUA,EAiCnB,OA3BE2B,iBAAA,WAAA,WACE1B,KAAKyB,WAAWE,SAAS,SAAC7B,GACX,IAAIG,EAAMH,EAAQ8B,EAAK7B,SAC/B8B,WAOTH,eAAA,SAAId,GAAJ,WACEZ,KAAKyB,WAAWE,SAAS,SAAC7B,GACX,IAAIG,EAAMH,EAAQ8B,EAAK7B,SAC/B+B,cAAclB,OAOvBc,kBAAA,SAAOP,EAAkBC,EAAgBC,EAAeC,GAAxD,WACEtB,KAAKyB,WAAWE,SAAS,SAAC7B,GACX,IAAIG,EAAMH,EAAQ8B,EAAK7B,SAC/BgC,WAAWZ,EAAUC,EAAQC,EAAOC,4BCtCdU,EAAUC,OAAEC,WAAQT,eAAYU,YAAApC,gBAK/D,GAAyB,oBAAbM,UAA8C,oBAAXH,OAC7C,OAAO,EAGT,IAAMgC,EACJ,MAAM,IAAIX,MAAM,iFAGlB,IAAME,EACJ,MAAM,IAAIF,MAAM,0FAMlB,IAAMa,EAAY,IAAIV,EAAUD,EAAY1B,GAC5CiC,EAAIK,UAAUC,WAAaF,EAKtBX,GACHW,EAAUP,OAMZK,EAAOK,WAAW,SAACC,GACjB,IAAMC,EAAsBvC,OAAOwC,SAASC,SAAS5B,MAAM,KAAK6B,OAC1DC,EAAY3C,OAAOwC,SAASC,SAAS5B,MAAM,KAAK+B,MAAM,EAAGL,EAAsB,GAAGM,KAAK,KACvFC,EAA2B,SAAhBd,EAAOe,KAAqBJ,OAAcL,EAAGU,SAAa,GAAGL,EAAYL,EAAGU,SAE7Fd,EAAUe,GAAGH"} \ No newline at end of file +{"version":3,"file":"vue-baidu-analytics.min.js","sources":["../src/modules/baidu.ts","../src/modules/pushBAIDU.ts","../src/main.ts","../src/modules/getVueVersion.ts"],"sourcesContent":["/** \r\n * 定义基础配置\r\n * 官方文档 https://tongji.baidu.com/open/api/more?p=guide_overview\r\n */\r\nclass BAIDU {\r\n siteId: string;\r\n isDebug: boolean;\r\n\r\n constructor (siteId: string = '', isDebug: boolean = false) {\r\n this.siteId = siteId;\r\n this.isDebug = isDebug;\r\n }\r\n\r\n /** \r\n * 初始化\r\n */\r\n init () {\r\n window._hmt = window._hmt ? window._hmt : [];\r\n const SCRIPT = document.createElement('script');\r\n SCRIPT['async'] = true;\r\n SCRIPT['src'] = `https://hm.baidu.com/hm.js?${this.siteId}`;\r\n document.querySelector('head').appendChild(SCRIPT);\r\n\r\n if ( this.isDebug ) {\r\n console.log(`[vue-baidu-analytics] siteId load done.\\nsiteId: ${this.siteId}`);\r\n }\r\n }\r\n\r\n /** \r\n * 设置要响应的站点\r\n */\r\n setAccount () {\r\n window._hmt.push(['_setAccount', this.siteId]);\r\n }\r\n\r\n /** \r\n * 提交PV、UV\r\n */\r\n trackPageview (pageUrl: string) {\r\n // 如果页面链接没传或者无效链接,则默认为根域名\r\n if ( !pageUrl || typeof pageUrl !== 'string' ) {\r\n pageUrl = '/';\r\n }\r\n\r\n // 如果页面链接带上了域名,则需要过滤掉\r\n if ( pageUrl.includes('http') ) {\r\n const PAGE_CUT = pageUrl.split('/');\r\n const HOST_NAME = `${PAGE_CUT[0]}//${PAGE_CUT[2]}`;\r\n pageUrl = pageUrl.replace(HOST_NAME, '');\r\n }\r\n\r\n // 设置响应id并提交数据\r\n this.setAccount();\r\n window._hmt.push(['_trackPageview', pageUrl]);\r\n\r\n if ( this.isDebug ) {\r\n console.log(`[vue-baidu-analytics] track pv done.\\nsiteId: ${this.siteId}\\npageUrl: ${pageUrl}`);\r\n }\r\n }\r\n\r\n /** \r\n * 提交点击事件\r\n */\r\n trackEvent (category: string, action: string, label: string, value: number) {\r\n // 前两个是必填项\r\n if ( typeof category !== 'string' || typeof action !== 'string' || !category || !action ) {\r\n throw new Error('[vue-baidu-analytics] Missing necessary category and operation information, and must be of type string.');\r\n return false;\r\n }\r\n\r\n // 重置一些无效的默认值\r\n if ( !label || typeof label !== 'string' ) {\r\n label = '';\r\n }\r\n\r\n if ( !Number(value) ) {\r\n value = 1;\r\n }\r\n\r\n // 设置响应id并提交数据\r\n this.setAccount();\r\n window._hmt.push(['_trackEvent', category, action, label, value]);\r\n\r\n if ( this.isDebug ) {\r\n console.log(`[vue-baidu-analytics] track event done.\\nsiteId: ${this.siteId}\\ncategory: ${category}\\naction: ${action}\\nlabel: ${label}\\nvalue: ${value}`);\r\n }\r\n }\r\n}\r\n\r\nexport default BAIDU;","import BAIDU from '@m/baidu'\r\n\r\n/** \r\n * 定义推送操作\r\n */\r\nclass PushBAIDU {\r\n siteIdList: string[];\r\n isDebug: boolean;\r\n\r\n constructor (siteIdList: string[], isDebug: boolean) {\r\n this.siteIdList = siteIdList;\r\n this.isDebug = isDebug;\r\n }\r\n\r\n /** \r\n * 批量部署站点\r\n */\r\n init () {\r\n this.siteIdList.forEach( (siteId: string) => {\r\n const SITE = new BAIDU(siteId, this.isDebug);\r\n SITE.init();\r\n });\r\n }\r\n\r\n /** \r\n * 批量提交pv上报\r\n */\r\n pv (pageUrl: string) {\r\n this.siteIdList.forEach( (siteId: string) => {\r\n const SITE = new BAIDU(siteId, this.isDebug);\r\n SITE.trackPageview(pageUrl);\r\n });\r\n }\r\n\r\n /** \r\n * 批量提交事件上报\r\n */\r\n event (category: string, action: string, label: string, value: number) {\r\n this.siteIdList.forEach( (siteId: string) => {\r\n const SITE = new BAIDU(siteId, this.isDebug);\r\n SITE.trackEvent(category, action, label, value);\r\n });\r\n }\r\n\r\n}\r\n\r\nexport default PushBAIDU;","import PushBAIDU from '@m/pushBAIDU'\r\nimport getVueVersion from '@m/getVueVersion'\r\n\r\n/** \r\n * 定义插件\r\n */\r\nexport default function install (Vue: Vue, { router, siteIdList, isDebug = false }: Partial) {\r\n\r\n /** \r\n * 一些环境和参数的检查\r\n */\r\n if ( typeof document === 'undefined' || typeof window === 'undefined' ) {\r\n return false;\r\n }\r\n\r\n if ( !router ) {\r\n throw new Error('[vue-baidu-analytics] Must pass a Vue-Router instance to vue-baidu-analytics.');\r\n }\r\n\r\n if ( !siteIdList ) {\r\n throw new Error('[vue-baidu-analytics] Missing tracking domain ID, add at least one of baidu analytics.');\r\n }\r\n\r\n /** \r\n * 挂载推送的方法\r\n */\r\n const pushBAIDU: any = new PushBAIDU(siteIdList, isDebug);\r\n \r\n // 获取Vue版本(获取失败则默认为2)\r\n const VUE_VERSION: number = getVueVersion(Vue) || 2;\r\n\r\n // 2.x可以直接挂载到原型上\r\n if ( VUE_VERSION === 2 ) {\r\n Vue.prototype.$pushBAIDU = pushBAIDU;\r\n }\r\n\r\n // 3.x必须使用这个方式来挂载\r\n if ( VUE_VERSION === 3 ) {\r\n Vue.config.globalProperties.$pushBAIDU = pushBAIDU;\r\n }\r\n\r\n /** \r\n * 部署站点并初始化\r\n */\r\n if ( siteIdList ) {\r\n pushBAIDU.init();\r\n }\r\n\r\n /** \r\n * 路由切换时执行PV上报\r\n */\r\n router.afterEach( (to: To) => {\r\n const PAGE_PATH_DIR_COUNT = window.location.pathname.split('/').length;\r\n const PAGE_PATH = window.location.pathname.split('/').slice(0, PAGE_PATH_DIR_COUNT - 1).join('/');\r\n const PAGE_URL = router.mode === 'hash' ? `${PAGE_PATH}/#${to.fullPath}` : `${PAGE_PATH}${to.fullPath}`;\r\n\r\n pushBAIDU.pv(PAGE_URL);\r\n });\r\n}","/** \r\n * 获取Vue的版本\r\n * @return 2=Vue2.x, 3=Vue3.x\r\n */\r\nconst getVueVersion = (Vue: Vue): number => {\r\n let version: number = 2;\r\n\r\n // 获取Vue的版本号\r\n const VUE_VERSION: string = String(Vue.version);\r\n\r\n // Vue 2.x\r\n if ( VUE_VERSION.slice(0, 2) === '2.' ) {\r\n version = 2; \r\n }\r\n \r\n // Vue 3.x\r\n if ( VUE_VERSION.slice(0, 2) === '3.' ) {\r\n version = 3; \r\n }\r\n \r\n return version;\r\n}\r\n\r\nexport default getVueVersion;"],"names":["siteId","isDebug","this","BAIDU","window","_hmt","SCRIPT","document","createElement","querySelector","appendChild","console","log","push","pageUrl","includes","PAGE_CUT","split","HOST_NAME","replace","setAccount","category","action","label","value","Error","Number","siteIdList","PushBAIDU","forEach","_this","init","trackPageview","trackEvent","Vue","_a","router","_b","pushBAIDU","VUE_VERSION","version","String","slice","getVueVersion","prototype","$pushBAIDU","config","globalProperties","afterEach","to","PAGE_PATH_DIR_COUNT","location","pathname","length","PAGE_PATH","join","PAGE_URL","mode","fullPath","pv"],"mappings":";;;;;gPAIA,iBAIE,WAAaA,EAAqBC,gBAArBD,mBAAqBC,MAChCC,KAAKF,OAASA,EACdE,KAAKD,QAAUA,EA6EnB,OAvEEE,iBAAA,WACEC,OAAOC,KAAOD,OAAOC,KAAOD,OAAOC,KAAO,GAC1C,IAAMC,EAASC,SAASC,cAAc,UACtCF,EAAc,OAAI,EAClBA,EAAY,IAAI,8BAA8BJ,KAAKF,OACnDO,SAASE,cAAc,QAAQC,YAAYJ,GAEtCJ,KAAKD,SACRU,QAAQC,IAAI,uDAAuDV,KAAKF,SAO5EG,uBAAA,WACEC,OAAOC,KAAKQ,KAAK,CAAC,cAAeX,KAAKF,UAMxCG,0BAAA,SAAeW,GAOb,GALMA,GAA8B,iBAAZA,IACtBA,EAAU,KAIPA,EAAQC,SAAS,QAAU,CAC9B,IAAMC,EAAWF,EAAQG,MAAM,KACzBC,EAAeF,EAAS,QAAOA,EAAS,GAC9CF,EAAUA,EAAQK,QAAQD,EAAW,IAIvChB,KAAKkB,aACLhB,OAAOC,KAAKQ,KAAK,CAAC,iBAAkBC,IAE/BZ,KAAKD,SACRU,QAAQC,IAAI,oDAAoDV,KAAKF,uBAAsBc,IAO/FX,uBAAA,SAAYkB,EAAkBC,EAAgBC,EAAeC,GAE3D,GAAyB,iBAAbH,GAA4C,iBAAXC,IAAwBD,IAAaC,EAChF,MAAM,IAAIG,MAAM,2GAKZF,GAA0B,iBAAVA,IACpBA,EAAQ,IAGJG,OAAOF,KACXA,EAAQ,GAIVtB,KAAKkB,aACLhB,OAAOC,KAAKQ,KAAK,CAAC,cAAeQ,EAAUC,EAAQC,EAAOC,IAErDtB,KAAKD,SACRU,QAAQC,IAAI,sDAAsDV,KAAKF,sBAAqBqB,iBAAuBC,iBAAqBC,iBAAoBC,sBC3EhK,WAAaG,EAAsB1B,GACjCC,KAAKyB,WAAaA,EAClBzB,KAAKD,QAAUA,EAiCnB,OA3BE2B,iBAAA,WAAA,WACE1B,KAAKyB,WAAWE,SAAS,SAAC7B,GACX,IAAIG,EAAMH,EAAQ8B,EAAK7B,SAC/B8B,WAOTH,eAAA,SAAId,GAAJ,WACEZ,KAAKyB,WAAWE,SAAS,SAAC7B,GACX,IAAIG,EAAMH,EAAQ8B,EAAK7B,SAC/B+B,cAAclB,OAOvBc,kBAAA,SAAOP,EAAkBC,EAAgBC,EAAeC,GAAxD,WACEtB,KAAKyB,WAAWE,SAAS,SAAC7B,GACX,IAAIG,EAAMH,EAAQ8B,EAAK7B,SAC/BgC,WAAWZ,EAAUC,EAAQC,EAAOC,4BClCdU,EAAUC,OAAEC,WAAQT,eAAYU,YAAApC,gBAK/D,GAAyB,oBAAbM,UAA8C,oBAAXH,OAC7C,OAAO,EAGT,IAAMgC,EACJ,MAAM,IAAIX,MAAM,iFAGlB,IAAME,EACJ,MAAM,IAAIF,MAAM,0FAMlB,IAAMa,EAAiB,IAAIV,EAAUD,EAAY1B,GAG3CsC,ECzBc,SAACL,GACrB,IAAIM,EAAkB,EAGhBD,EAAsBE,OAAOP,EAAIM,SAYvC,MATiC,OAA5BD,EAAYG,MAAM,EAAG,KACxBF,EAAU,GAIqB,OAA5BD,EAAYG,MAAM,EAAG,KACxBF,EAAU,GAGLA,EDSqBG,CAAcT,IAAQ,EAG7B,IAAhBK,IACHL,EAAIU,UAAUC,WAAaP,GAIR,IAAhBC,IACHL,EAAIY,OAAOC,iBAAiBF,WAAaP,GAMtCX,GACHW,EAAUP,OAMZK,EAAOY,WAAW,SAACC,GACjB,IAAMC,EAAsB9C,OAAO+C,SAASC,SAASnC,MAAM,KAAKoC,OAC1DC,EAAYlD,OAAO+C,SAASC,SAASnC,MAAM,KAAKyB,MAAM,EAAGQ,EAAsB,GAAGK,KAAK,KACvFC,EAA2B,SAAhBpB,EAAOqB,KAAqBH,OAAcL,EAAGS,SAAa,GAAGJ,EAAYL,EAAGS,SAE7FpB,EAAUqB,GAAGH"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..fed23c1 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2061 @@ +{ + "name": "vue-baidu-analytics", + "version": "2.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.7.tgz", + "integrity": "sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==", + "dev": true + }, + "@babel/core": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz", + "integrity": "sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.10", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.10", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.10", + "@babel/types": "^7.12.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz", + "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.11", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz", + "integrity": "sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==", + "dev": true, + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz", + "integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-function-name": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz", + "integrity": "sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.10", + "@babel/template": "^7.12.7", + "@babel/types": "^7.12.11" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz", + "integrity": "sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==", + "dev": true, + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz", + "integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==", + "dev": true, + "requires": { + "@babel/types": "^7.12.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz", + "integrity": "sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==", + "dev": true, + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-replace-supers": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz", + "integrity": "sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.12.7", + "@babel/helper-optimise-call-expression": "^7.12.10", + "@babel/traverse": "^7.12.10", + "@babel/types": "^7.12.11" + } + }, + "@babel/helper-simple-access": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz", + "integrity": "sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==", + "dev": true, + "requires": { + "@babel/types": "^7.12.11" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz", + "integrity": "sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helpers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", + "dev": true, + "requires": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz", + "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz", + "integrity": "sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz", + "integrity": "sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz", + "integrity": "sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz", + "integrity": "sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz", + "integrity": "sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz", + "integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz", + "integrity": "sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz", + "integrity": "sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-typescript": "^7.12.1" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/preset-env": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz", + "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.7", + "@babel/helper-compilation-targets": "^7.12.5", + "@babel/helper-module-imports": "^7.12.5", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.11", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.7", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.11", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.7", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.10", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.11", + "core-js-compat": "^3.8.0", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-typescript": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.12.7.tgz", + "integrity": "sha512-nOoIqIqBmHBSEgBXWR4Dv/XBehtIFcw9PqZw6rFYuKrzsZmOQm3PR5siLBnKZFEsDb03IegG8nSjU/iXXXYRmw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-transform-typescript": "^7.12.1" + } + }, + "@babel/runtime": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", + "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.12.7", + "@babel/types": "^7.12.7" + } + }, + "@babel/traverse": { + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.12.tgz", + "integrity": "sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.11", + "@babel/generator": "^7.12.11", + "@babel/helper-function-name": "^7.12.11", + "@babel/helper-split-export-declaration": "^7.12.11", + "@babel/parser": "^7.12.11", + "@babel/types": "^7.12.12", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz", + "integrity": "sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@rollup/plugin-babel": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.2.2.tgz", + "integrity": "sha512-MjmH7GvFT4TW8xFdIeFS3wqIX646y5tACdxkTO+khbHvS3ZcVJL6vkAHLw2wqPmkhwCfWHoNsp15VYNwW6JEJA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + } + }, + "@rollup/plugin-commonjs": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-15.1.0.tgz", + "integrity": "sha512-xCQqz4z/o0h2syQ7d9LskIMvBSH4PX5PjYdpSSvgS+pQik3WahkQVNWg3D8XJeYjZoVWnIUQYDghuEMRGrmQYQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "dependencies": { + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + } + } + }, + "@rollup/plugin-json": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8" + } + }, + "@rollup/plugin-node-resolve": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz", + "integrity": "sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.17.0" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "@types/babel__core": { + "version": "7.1.12", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.12.tgz", + "integrity": "sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", + "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", + "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.0.tgz", + "integrity": "sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/node": { + "version": "14.14.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.19.tgz", + "integrity": "sha512-4nhBPStMK04rruRVtVc6cDqhu7S9GZai0fpXgPXrFpcPX6Xul8xnrjSdGB4KPBVYG/R5+fXWdCM8qBoiULWGPQ==", + "dev": true + }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "babel-plugin-add-module-exports": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz", + "integrity": "sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg==", + "dev": true + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browserslist": { + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.0.tgz", + "integrity": "sha512-/j6k8R0p3nxOC6kx5JGAxsnhc9ixaWJfYc+TNTzxg6+ARaESAvQGV7h0uNOB4t+pLQJZWzcrMxXOxjgsCj3dqQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001165", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.621", + "escalade": "^3.1.1", + "node-releases": "^1.1.67" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true + }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001173", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001173.tgz", + "integrity": "sha512-R3aqmjrICdGCTAnSXtNyvWYMK3YtV5jwudbq0T7nN9k4kmE4CBuwPqyJ+KBzepSTh0huivV2gLbSMEzTTmfeYw==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "core-js-compat": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.2.tgz", + "integrity": "sha512-LO8uL9lOIyRRrQmZxHZFl1RV+ZbcsAkFWTktn5SmH40WgLtSNYN4m4W2v9ONT147PxBY/XrRhrWq8TlvObyUjQ==", + "dev": true, + "requires": { + "browserslist": "^4.16.0", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "electron-to-chromium": { + "version": "1.3.633", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.633.tgz", + "integrity": "sha512-bsVCsONiVX1abkWdH7KtpuDAhsQ3N3bjPYhROSAXE78roJKet0Y5wznA14JE9pzbwSZmSMAW6KiKYf1RvbTJkA==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", + "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node-releases": { + "version": "1.1.67", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.67.tgz", + "integrity": "sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "rollup": { + "version": "2.35.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.35.1.tgz", + "integrity": "sha512-q5KxEyWpprAIcainhVy6HfRttD9kutQpHbeqDTWnqAFNJotiojetK6uqmcydNMymBEtC4I8bCYR+J3mTMqeaUA==", + "dev": true, + "requires": { + "fsevents": "~2.1.2" + } + }, + "rollup-plugin-banner": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-banner/-/rollup-plugin-banner-0.2.1.tgz", + "integrity": "sha512-Bs1uIPCsGpKIkNOwmBsCqn+dJ/xaojWk9PNlvd+1MEScddr1yUQlO6McAXi72wJyNWYL+9u9EI2JAZMpLRH92w==", + "dev": true, + "requires": { + "lodash.template": "^4.4.0" + } + }, + "rollup-plugin-banner2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-banner2/-/rollup-plugin-banner2-1.0.2.tgz", + "integrity": "sha512-JL0G8JWdmpDBj36nbZDUZs05cuF3LIkkFk+7TNHAGCswv2tH7FMJcrBdbq9B54QymuZHBoh8rmt3vFsu9jbTZA==", + "dev": true, + "requires": { + "magic-string": "^0.25.7" + } + }, + "rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "rollup-plugin-typescript2": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.27.3.tgz", + "integrity": "sha512-gmYPIFmALj9D3Ga1ZbTZAKTXq1JKlTQBtj299DXhqYz9cL3g/AQfUvbb2UhH+Nf++cCq941W2Mv7UcrcgLzJJg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "find-cache-dir": "^3.3.1", + "fs-extra": "8.1.0", + "resolve": "1.17.0", + "tslib": "2.0.1" + }, + "dependencies": { + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==", + "dev": true + } + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "terser": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", + "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", + "dev": true + }, + "typescript": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz", + "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } +} diff --git a/package.json b/package.json index 5e8a0b7..9018788 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,9 @@ { "name": "vue-baidu-analytics", - "version": "1.1.0", + "version": "2.0.0", "description": "A data collection tool that supports reporting of single-page application data built by Vue-cli, based on baidu statistics.", "main": "dist/vue-baidu-analytics.min.js", + "types": "vue-baidu-analytics.d.ts", "scripts": { "build": "rollup -c rollup.config.ts" }, diff --git a/src/global.d.ts b/src/global.d.ts index 741168e..c411efd 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -14,6 +14,8 @@ declare global { interface Vue { prototype: any $pushBAIDU: PushBAIDU + version: number | string + config: any } interface To { diff --git a/src/main.ts b/src/main.ts index 2b7a2e9..98b1dc8 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,5 +1,9 @@ import PushBAIDU from '@m/pushBAIDU' +import getVueVersion from '@m/getVueVersion' +/** + * 定义插件 + */ export default function install (Vue: Vue, { router, siteIdList, isDebug = false }: Partial) { /** @@ -20,8 +24,20 @@ export default function install (Vue: Vue, { router, siteIdList, isDebug = false /** * 挂载推送的方法 */ - const pushBAIDU = new PushBAIDU(siteIdList, isDebug); - Vue.prototype.$pushBAIDU = pushBAIDU; + const pushBAIDU: any = new PushBAIDU(siteIdList, isDebug); + + // 获取Vue版本(获取失败则默认为2) + const VUE_VERSION: number = getVueVersion(Vue) || 2; + + // 2.x可以直接挂载到原型上 + if ( VUE_VERSION === 2 ) { + Vue.prototype.$pushBAIDU = pushBAIDU; + } + + // 3.x必须使用这个方式来挂载 + if ( VUE_VERSION === 3 ) { + Vue.config.globalProperties.$pushBAIDU = pushBAIDU; + } /** * 部署站点并初始化 @@ -40,4 +56,4 @@ export default function install (Vue: Vue, { router, siteIdList, isDebug = false pushBAIDU.pv(PAGE_URL); }); -} +} \ No newline at end of file diff --git a/src/modules/getVueVersion.ts b/src/modules/getVueVersion.ts new file mode 100644 index 0000000..6b843d3 --- /dev/null +++ b/src/modules/getVueVersion.ts @@ -0,0 +1,24 @@ +/** + * 获取Vue的版本 + * @return 2=Vue2.x, 3=Vue3.x + */ +const getVueVersion = (Vue: Vue): number => { + let version: number = 2; + + // 获取Vue的版本号 + const VUE_VERSION: string = String(Vue.version); + + // Vue 2.x + if ( VUE_VERSION.slice(0, 2) === '2.' ) { + version = 2; + } + + // Vue 3.x + if ( VUE_VERSION.slice(0, 2) === '3.' ) { + version = 3; + } + + return version; +} + +export default getVueVersion; \ No newline at end of file diff --git a/vue-baidu-analytics.d.ts b/vue-baidu-analytics.d.ts new file mode 100644 index 0000000..95c2cff --- /dev/null +++ b/vue-baidu-analytics.d.ts @@ -0,0 +1 @@ +declare module 'vue-baidu-analytics' \ No newline at end of file