commit 0b3817b036dee3722f32679e6187174e2743f353
Author: xiaohei <1494046114@qq.com>
Date: Tue Nov 7 21:03:11 2023 +0800
first commit
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..7ce6e50
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,21 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+.DS_Store
+dist
+*.local
+
+# Editor directories and files
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
\ No newline at end of file
diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json
new file mode 100644
index 0000000..582561b
--- /dev/null
+++ b/.hbuilderx/launch.json
@@ -0,0 +1,16 @@
+{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+ // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+ "version": "0.0",
+ "configurations": [{
+ "app-plus" :
+ {
+ "launchtype" : "local"
+ },
+ "default" :
+ {
+ "launchtype" : "local"
+ },
+ "type" : "uniCloud"
+ }
+ ]
+}
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..f8a54cb
--- /dev/null
+++ b/index.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..a5892c3
--- /dev/null
+++ b/package.json
@@ -0,0 +1,75 @@
+{
+ "name": "uni-preset-vue",
+ "version": "0.0.0",
+ "scripts": {
+ "dev:app": "uni -p app",
+ "dev:app-android": "uni -p app-android",
+ "dev:app-ios": "uni -p app-ios",
+ "dev:custom": "uni -p",
+ "dev:h5": "uni",
+ "dev:h5:ssr": "uni --ssr",
+ "dev:mp-alipay": "uni -p mp-alipay",
+ "dev:mp-baidu": "uni -p mp-baidu",
+ "dev:mp-jd": "uni -p mp-jd",
+ "dev:mp-kuaishou": "uni -p mp-kuaishou",
+ "dev:mp-lark": "uni -p mp-lark",
+ "dev:mp-qq": "uni -p mp-qq",
+ "dev:mp-toutiao": "uni -p mp-toutiao",
+ "dev:mp-weixin": "uni -p mp-weixin",
+ "dev:quickapp-webview": "uni -p quickapp-webview",
+ "dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei",
+ "dev:quickapp-webview-union": "uni -p quickapp-webview-union",
+ "build:app": "uni build -p app",
+ "build:app-android": "uni build -p app-android",
+ "build:app-ios": "uni build -p app-ios",
+ "build:custom": "uni build -p",
+ "build:h5": "uni build",
+ "build:h5:ssr": "uni build --ssr",
+ "build:mp-alipay": "uni build -p mp-alipay",
+ "build:mp-baidu": "uni build -p mp-baidu",
+ "build:mp-jd": "uni build -p mp-jd",
+ "build:mp-kuaishou": "uni build -p mp-kuaishou",
+ "build:mp-lark": "uni build -p mp-lark",
+ "build:mp-qq": "uni build -p mp-qq",
+ "build:mp-toutiao": "uni build -p mp-toutiao",
+ "build:mp-weixin": "uni build -p mp-weixin",
+ "build:quickapp-webview": "uni build -p quickapp-webview",
+ "build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei",
+ "build:quickapp-webview-union": "uni build -p quickapp-webview-union",
+ "type-check": "vue-tsc --noEmit"
+ },
+ "dependencies": {
+ "@dcloudio/uni-app": "3.0.0-3081220230817001",
+ "@dcloudio/uni-app-plus": "3.0.0-3081220230817001",
+ "@dcloudio/uni-components": "3.0.0-3081220230817001",
+ "@dcloudio/uni-h5": "3.0.0-3081220230817001",
+ "@dcloudio/uni-mp-alipay": "3.0.0-3081220230817001",
+ "@dcloudio/uni-mp-baidu": "3.0.0-3081220230817001",
+ "@dcloudio/uni-mp-jd": "3.0.0-3081220230817001",
+ "@dcloudio/uni-mp-kuaishou": "3.0.0-3081220230817001",
+ "@dcloudio/uni-mp-lark": "3.0.0-3081220230817001",
+ "@dcloudio/uni-mp-qq": "3.0.0-3081220230817001",
+ "@dcloudio/uni-mp-toutiao": "3.0.0-3081220230817001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-3081220230817001",
+ "@dcloudio/uni-quickapp-webview": "3.0.0-3081220230817001",
+ "dayjs": "^1.10.4",
+ "less": "^4.2.0",
+ "less-loader": "^11.1.3",
+ "mp-html": "^2.4.1",
+ "vant": "^4.7.3",
+ "vue": "^3.2.45",
+ "vue-i18n": "^9.1.9"
+ },
+ "devDependencies": {
+ "@dcloudio/types": "^3.3.2",
+ "@dcloudio/uni-automator": "3.0.0-3081220230817001",
+ "@dcloudio/uni-cli-shared": "3.0.0-3081220230817001",
+ "@dcloudio/uni-stacktracey": "3.0.0-3081220230817001",
+ "@dcloudio/vite-plugin-uni": "3.0.0-3081220230817001",
+ "@vue/runtime-core": "^3.2.45",
+ "@vue/tsconfig": "^0.1.3",
+ "typescript": "^4.9.4",
+ "vite": "4.1.4",
+ "vue-tsc": "^1.0.24"
+ }
+}
diff --git a/shims-uni.d.ts b/shims-uni.d.ts
new file mode 100644
index 0000000..ed4adcf
--- /dev/null
+++ b/shims-uni.d.ts
@@ -0,0 +1,10 @@
+///
+import 'vue'
+
+declare module '@vue/runtime-core' {
+ type Hooks = App.AppInstance & Page.PageInstance;
+
+ interface ComponentCustomOptions extends Hooks {
+
+ }
+}
diff --git a/src/.gitignore b/src/.gitignore
new file mode 100644
index 0000000..a1cbbf1
--- /dev/null
+++ b/src/.gitignore
@@ -0,0 +1,17 @@
+.DS_Store
+node_modules/
+platforms/
+dist/
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+package-lock.json
+unpackage/
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..9c6dc79
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,42 @@
+
+
\ No newline at end of file
diff --git a/src/api/consult.js b/src/api/consult.js
new file mode 100644
index 0000000..c7a3130
--- /dev/null
+++ b/src/api/consult.js
@@ -0,0 +1,21 @@
+/**
+ * @name 新闻咨询API
+ * @description 请求示例
+ * @param {Object} data 请求参数
+ * @param {String} url 请求地址
+ * @param {String} method 请求类型 可以不设置,默认GET
+ */
+import request from '../utils/request';
+
+/**
+ * 获取工作公告列表
+ * @param {*} data
+ */
+const getNewAPI = function (data) {
+ return request({
+ url: '/admin-api/people/news/page',
+ method: 'get',
+ data: data
+ });
+};
+export { getNewAPI };
diff --git a/src/api/enterprise.js b/src/api/enterprise.js
new file mode 100644
index 0000000..12483b5
--- /dev/null
+++ b/src/api/enterprise.js
@@ -0,0 +1,103 @@
+/**
+ * @name 企业API
+ * @description 请求示例
+ * @param {Object} data 请求参数
+ * @param {String} url 请求地址
+ * @param {String} method 请求类型 可以不设置,默认GET
+ */
+import request from '../utils/request';
+
+/**
+ * 获得企业分页
+ * @param {*} data
+ */
+const getEnterpriseListApi = function (data) {
+ return request({
+ url: '/admin-api/people/enterprise/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 删除企业
+ * @param {*} data
+ */
+const DeleteEnterpriseIdApi = function (id) {
+ return request({
+ url: `/admin-api/people/enterprise/delete?id=${id}`,
+ method: 'delete'
+ });
+};
+
+/**
+ * 创建企业
+ * @param {*} data
+ */
+const createAffiliatedEnterprise = function (data) {
+ return request({
+ url: '/admin-api/people/enterprise/create',
+ method: 'post',
+ data: data
+ });
+};
+
+/**
+ * 创建诉求
+ * @param {*} data
+ */
+const createAppealApi = function (data) {
+ return request({
+ url: '/admin-api/people/appeal/create',
+ method: 'post',
+ data: data
+ });
+};
+
+/**
+ * 获得诉求分页
+ * @param {*} data
+ */
+const getAppealListApi = function (data) {
+ return request({
+ url: '/admin-api/people/appeal/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得诉求详情
+ * @param {*} data
+ */
+const getAppealIdApi = function (data) {
+ return request({
+ url: '/admin-api/people/appeal/get',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得优质回复
+ * @param {*} data
+ */
+const getPerfectReplyApi = function (data) {
+ return request({
+ url: '/admin-api/people/appeal/perfect/reply/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 更新企业
+ * @param {*} data
+ */
+const getEnterpriseApi = function (id) {
+ return request({
+ url: `/admin-api/people/enterprise/get?id=${id}`,
+ method: 'get'
+ });
+};
+export { getEnterpriseListApi, DeleteEnterpriseIdApi, createAffiliatedEnterprise, createAppealApi, getAppealListApi, getAppealIdApi, getPerfectReplyApi, getEnterpriseApi };
diff --git a/src/api/index.js b/src/api/index.js
new file mode 100644
index 0000000..26867d3
--- /dev/null
+++ b/src/api/index.js
@@ -0,0 +1,23 @@
+/**
+ * @name API管理
+ * @description 导出所有的API模块
+ **/
+import * as publicApi from './publicApi.js'; // 公共 API
+
+import * as consult from './consult'; // 咨询
+import * as enterprise from './enterprise'; // 企业
+import * as lifeApi from './lifeApi'; // 生活
+import * as peopleApi from './peopleApi'; // 民生
+import * as myApi from './myApi'; // 我的
+
+export default {
+ data() {
+ return {};
+ },
+ consult,
+ enterprise,
+ publicApi,
+ lifeApi,
+ peopleApi,
+ myApi
+};
diff --git a/src/api/lifeApi.js b/src/api/lifeApi.js
new file mode 100644
index 0000000..83c19ad
--- /dev/null
+++ b/src/api/lifeApi.js
@@ -0,0 +1,45 @@
+/**
+ * @name 生活API
+ * @description 请求示例
+ * @param {Object} data 请求参数
+ * @param {String} url 请求地址
+ * @param {String} method 请求类型 可以不设置,默认GET
+ */
+import request from '../utils/request';
+
+/**
+ * 生活对应栏目的分页查询
+ * @param {*} data
+ */
+const lifeListApi = function (data) {
+ return request({
+ url: '/admin-api/people/life/list',
+ method: 'post',
+ data: data
+ });
+};
+
+/**
+ * 获得商户分页
+ * @param {*} data
+ */
+const merchantPageApi = function (data) {
+ return request({
+ url: '/admin-api/people/merchant/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得商户详情
+ * @param {*} data
+ */
+const merchantGetApi = function (data) {
+ return request({
+ url: '/admin-api/people/merchant/get',
+ method: 'get',
+ data: data
+ });
+};
+export { lifeListApi, merchantPageApi, merchantGetApi };
diff --git a/src/api/myApi.js b/src/api/myApi.js
new file mode 100644
index 0000000..c57c6cd
--- /dev/null
+++ b/src/api/myApi.js
@@ -0,0 +1,171 @@
+/**
+ * @name 我的
+ * @description 请求示例
+ * @param {Object} data 请求参数
+ * @param {String} url 请求地址
+ * @param {String} method 请求类型 可以不设置,默认GET
+ */
+import request from '../utils/request';
+
+/**
+ * 获取工作公告列表
+ * @param {*} data
+ */
+const nameAuthApi = function (data) {
+ return request({
+ url: '/admin-api/system/auth/real/name/auth',
+ method: 'post',
+ data: data
+ });
+};
+/**
+ * 获取我的信息
+ * @param {*} data
+ */
+const getUserInfoApi = function (data) {
+ return request({
+ url: '/admin-api/system/user/profile/get/my/info',
+ method: 'post',
+ data: data
+ });
+};
+
+/**
+ * 获得用户积分规则分页
+ * @param {*} data
+ */
+const userIntegralRruleApi = function (data) {
+ return request(
+ {
+ url: '/admin-api/system/user-integral-rule/page',
+ method: 'get',
+ data: data
+ },
+ false
+ );
+};
+
+/**
+ * 获得用户积分明细分页
+ * @param {*} data
+ */
+const userIntegralDetailApi = function (data) {
+ return request({
+ url: '/admin-api/system/user-integral-detail/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得用户我的收藏分页
+ * @param {*} data
+ */
+const myInfoPageApi = function (data) {
+ return request({
+ url: '/admin-api/people/collection/myInfo/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 统计党员-群众点单数据
+ * @param {*} data
+ */
+const myMasserCountApi = function (data) {
+ return request({
+ url: '/admin-api/people/seek-help/count',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 党员认证
+ * @param {*} data
+ */
+const myMemberAuthApi = function (data) {
+ return request({
+ url: '/admin-api/system/auth/party/member/auth',
+ method: 'post',
+ data: data
+ });
+};
+
+/**
+ * 创建群众点单回复
+ * @param {*} data
+ */
+const replyCreateApi = function (data) {
+ return request({
+ url: '/admin-api/people/seek-help-reply/create',
+ method: 'post',
+ data: data
+ });
+};
+/**
+ * 获得群众点单回复
+ * @param {*} data
+ */
+const replyCreateGetApi = function (data) {
+ return request({
+ url: '/admin-api/people/seek-help-reply/get',
+ method: 'get',
+ data: data
+ });
+};
+/**
+ * 更新群众点单回复
+ * @param {*} data
+ */
+const replyCreatUpdateApi = function (data) {
+ return request({
+ url: '/admin-api/people/seek-help-reply/update',
+ method: 'PUT',
+ data: data
+ });
+};
+/**
+ * 查询优质回复
+ * @param {*} data
+ */
+const replyGoodPageApi = function (data) {
+ return request({
+ url: '/admin-api/people/seek-help-reply/good-page',
+ method: 'get',
+ data: data
+ });
+};
+
+// 发送验证码
+const sendSmSCodeApi = function (data) {
+ return request({
+ url: '/admin-api/system/auth/send-sms-code',
+ method: 'get',
+ data: data
+ });
+};
+
+const systemAuthSmsLogin = function (data) {
+ return request({
+ url: '/admin-api/system/auth/sms-login',
+ method: 'get',
+ data: data
+ });
+};
+export {
+ nameAuthApi,
+ getUserInfoApi,
+ userIntegralRruleApi,
+ userIntegralDetailApi,
+ myInfoPageApi,
+ myMasserCountApi,
+ myMemberAuthApi,
+ replyCreateApi,
+ replyCreateGetApi,
+ replyCreatUpdateApi,
+ replyGoodPageApi,
+ sendSmSCodeApi,
+ systemAuthSmsLogin
+};
diff --git a/src/api/peopleApi.js b/src/api/peopleApi.js
new file mode 100644
index 0000000..f83aa6a
--- /dev/null
+++ b/src/api/peopleApi.js
@@ -0,0 +1,526 @@
+/**
+ * @name 民生API
+ * @description 请求示例
+ * @param {Object} data 请求参数
+ * @param {String} url 请求地址
+ * @param {String} method 请求类型 可以不设置,默认GET
+ */
+import request from '../utils/request';
+
+/**
+ * 获得议事厅分页
+ * @param {*} data
+ */
+const assemblyHallPageApi = function (data) {
+ return request({
+ url: '/admin-api/people/assembly-hall/page',
+ method: 'get',
+ data: data
+ });
+};
+/**
+ * 获得人民调解员分页
+ * @param {*} data
+ */
+const mediatorPageApi = function (data) {
+ return request({
+ url: '/admin-api/people/mediator/page',
+ method: 'get',
+ data: data
+ });
+};
+/**
+ * 获得人民调解员详情
+ * @param {*} data
+ */
+const mediatorGetApi = function (data) {
+ return request({
+ url: '/admin-api/people/mediator/get',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得群众点单分页
+ * @param {*} data
+ */
+const seekHelpPageApi = function (data) {
+ return request({
+ url: '/admin-api/people/seek-help/page',
+ method: 'get',
+ data: data
+ });
+};
+/**
+ * 创建群众点单
+ * @param {*} data
+ */
+const seekHelpCreateApi = function (data) {
+ return request({
+ url: '/admin-api/people/seek-help/create',
+ method: 'post',
+ data: data
+ });
+};
+
+/**
+ * 获得群众点单详情
+ * @param {*} data
+ */
+const seekHelpGetApi = function (data) {
+ return request({
+ url: '/admin-api/people/seek-help/get',
+ method: 'get',
+ data: data
+ });
+};
+const massesDetailUpdate = function (data) {
+ // 点单状态变化如:接单
+ return request({
+ url: '/admin-api/people/seek-help/update',
+ method: 'put',
+ data: data
+ });
+};
+const seekHelpApi = function (data) {
+ // 点单 进行帮助
+ return request({
+ url: `/admin-api/people/seek-help/help/${data.id}`,
+ method: 'put',
+ data: data
+ });
+};
+/**
+ * 获得法律法规分页
+ * @param {*} data
+ */
+const lawsRegulationPageApi = function (data) {
+ return request({
+ url: '/admin-api/people/laws-regulation/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得法律法规详情
+ * @param {*} data
+ */
+const lawsRegulationGetApi = function (data) {
+ return request({
+ url: '/admin-api/people/laws-regulation/get',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得调解案件分页分页
+ * @param {*} data
+ */
+const casesListApi = function (data) {
+ return request({
+ url: '/admin-api/people/cases/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得调解案件
+ * @param {*} data
+ */
+const getCasesIdApi = function (data) {
+ return request({
+ url: '/admin-api/people/cases/get',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 创建调解案件
+ * @param {*} data
+ */
+const createCasesApi = function (data) {
+ return request({
+ url: '/admin-api/people/cases/create',
+ method: 'post',
+ data: data
+ });
+};
+
+/**
+ * 获得党建引领详情
+ * @param {*} data
+ */
+const newsGetApi = function (data) {
+ return request({
+ url: '/admin-api/people/news/get',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得医院分页
+ * @param {*} data
+ */
+const hospitalPageApi = function (data) {
+ return request({
+ url: '/admin-api/people/hospital/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得医院详情
+ * @param {*} data
+ */
+const hospitalGetApi = function (data) {
+ return request({
+ url: '/admin-api/people/hospital/get',
+ method: 'get',
+ data: data
+ });
+};
+/**
+ * 获得医生分页
+ * @param {*} data
+ */
+const doctorPageApi = function (data) {
+ return request({
+ url: '/admin-api/people/doctor/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得议事厅分页
+ * @param {*} data
+ */
+const assemblyIdApi = function (data) {
+ return request({
+ url: '/admin-api/people/assemblymen/create',
+ method: 'post',
+ data: data
+ });
+};
+
+/**
+ * 获得议事厅分页
+ * @param {*} data
+ */
+const assemblyhallIdApi = function (data) {
+ return request({
+ url: '/admin-api/people/assembly-hall/get',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得评论分页
+ * @param {*} data
+ */
+const commentPageApi = function (data) {
+ return request({
+ url: '/admin-api/people/comment/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 创建评论
+ * @param {*} data
+ */
+const commentCreateApi = function (data) {
+ return request({
+ url: '/admin-api/people/comment/create',
+ method: 'post',
+ data: data
+ });
+};
+
+/**
+ * 获得议事厅详情
+ * @param {*} data
+ */
+const assemblyHallGetApi = function (data) {
+ return request({
+ url: '/admin-api/people/assembly-hall/get',
+ method: 'get',
+ data: data
+ });
+};
+/**
+ * 星级党支部
+ * @param {*} data
+ */
+const partyBranchApi = function (data) {
+ return request({
+ url: '/admin-api/people/party-branch/page',
+ method: 'get',
+ data: data
+ });
+};
+/**
+ * 获得党建引领 - 获得新闻资讯及活动分页
+ * @param {*} data
+ * @param {*} data.categoryId // 取字典新闻类型的键值
+ */
+const newsPageApi = function (data) {
+ return request({
+ url: '/admin-api/people/news/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 星级党支部详情
+ * @param {*} data
+ */
+const partyBranchGetApi = function (data) {
+ return request({
+ url: '/admin-api/people/party-branch/get',
+ method: 'get',
+ data: data
+ });
+};
+/**
+ * 获得优秀党员分页 - 五星党员
+ * @param {*} data
+ */
+const excellentPartMemberPageApi = function (data) {
+ return request({
+ url: '/admin-api/people/excellent-party-member/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获取部门列表
+ * @param {*} data
+ */
+const deptListApi = function (data) {
+ return request({
+ url: '/admin-api/system/dept/list',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得优秀党员详情
+ * @param {*} data
+ */
+const excellentPartMemberGetApi = function (data) {
+ return request({
+ url: '/admin-api/people/excellent-party-member/get',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得办事处分页 - 最美乡村
+ * @param {*} data
+ */
+const agencyPageApi = function (data) {
+ return request({
+ url: '/admin-api/people/agency/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得村务公开分页
+ * @param {*} data
+ */
+const villageAffairsPageApi = function (data) {
+ return request({
+ url: '/admin-api/people/village-affairs/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得办事处分页
+ * @param {*} data
+ */
+const agencyContentPageApi = function (data) {
+ return request({
+ url: '/admin-api/people/agency-content/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得群众点单评论
+ * @param {*} data
+ */
+const CrateAppraiseApi = function (data) {
+ return request({
+ url: '/admin-api/people/seek-help/appraise',
+ method: 'put',
+ data: data
+ });
+};
+
+/**
+ * 获得办事处内容详情
+ * @param {*} data
+ */
+const agencyContentGetApi = function (data) {
+ return request({
+ url: '/admin-api/people/agency-content/get',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得办事处分页详情
+ * @param {*} data
+ */
+const agencyGetApi = function (data) {
+ return request({
+ url: '/admin-api/people/agency/get',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得办事处内容 + 根据部门id
+ * @param {*} data
+ */
+const agencyContentGetOrgIdApi = function (data) {
+ return request({
+ url: '/admin-api/people/agency-content/getOrgId',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得办事处内容 + 根据部门id
+ * @param {*} data
+ */
+const villageAffairsGetApi = function (data) {
+ return request({
+ url: '/admin-api/people/village-affairs/get',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得党活动事件分页
+ * @param {*} data
+ */
+const partyEventPageApi = function (data) {
+ return request({
+ url: '/admin-api/people/party-event/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得党活动事件分页详情
+ * @param {*} data
+ */
+const partyEventGetApi = function (data) {
+ return request({
+ url: '/admin-api/people/party-event/get',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 创建患者 - 申请签约家庭医生
+ * @param {*} data
+ */
+const patientCreateApi = function (data) {
+ return request({
+ url: '/admin-api/people/patient/create',
+ method: 'post',
+ data: data
+ });
+};
+/**
+ * 获取网格列表
+ * @param {*} data
+ */
+const getGridListApi = function (data) {
+ return request({
+ url: '/admin-api/people/grid/page',
+ method: 'get',
+ data: data
+ });
+};
+/**
+ * 获取网格成员列表
+ * @param {*} data
+ */
+const getGridMemberListApi = function (data) {
+ return request({
+ url: '/admin-api/people/grid-member/page',
+ method: 'get',
+ data: data
+ });
+};
+export {
+ assemblyHallPageApi,
+ mediatorPageApi,
+ mediatorGetApi,
+ seekHelpPageApi,
+ seekHelpCreateApi,
+ seekHelpGetApi,
+ lawsRegulationPageApi,
+ lawsRegulationGetApi,
+ massesDetailUpdate,
+ seekHelpApi,
+ casesListApi,
+ getCasesIdApi,
+ createCasesApi,
+ newsGetApi,
+ hospitalPageApi,
+ hospitalGetApi,
+ doctorPageApi,
+ commentPageApi,
+ commentCreateApi,
+ assemblyHallGetApi,
+ newsPageApi,
+ assemblyIdApi,
+ assemblyhallIdApi,
+ partyBranchApi,
+ partyBranchGetApi,
+ excellentPartMemberPageApi,
+ deptListApi,
+ excellentPartMemberGetApi,
+ agencyPageApi,
+ villageAffairsPageApi,
+ agencyContentPageApi,
+ CrateAppraiseApi,
+ agencyContentGetApi,
+ agencyGetApi,
+ agencyContentGetOrgIdApi,
+ villageAffairsGetApi,
+ partyEventPageApi,
+ partyEventGetApi,
+ patientCreateApi,
+ getGridListApi,
+ getGridMemberListApi
+};
diff --git a/src/api/publicApi.js b/src/api/publicApi.js
new file mode 100644
index 0000000..06522a8
--- /dev/null
+++ b/src/api/publicApi.js
@@ -0,0 +1,209 @@
+/**
+ * @name 公共接口API
+ * @description 请求示例
+ * @param {Object} data 请求参数
+ * @param {String} url 请求地址
+ * @param {String} method 请求类型 可以不设置,默认GET
+ */
+import request from '../utils/request';
+
+/**
+ * 获得banner图分页
+ * @param {*} data
+ */
+const getBannerApi = function (data) {
+ return request({
+ url: '/admin-api/people/banner/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得字典类型的分页列表
+ * @param {*} data
+ */
+const getDictDataApi = function (data) {
+ return request({
+ url: '/admin-api/system/dict-data/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 上传文件
+ * @param {*} data
+ */
+const uploadApi = function (data) {
+ return request({
+ url: '/admin-api/infra/file/upload',
+ method: 'post',
+ data: data
+ });
+};
+
+/**
+ * 分类树--查询下级分类
+ * @param {*} data
+ * @param {*} data.bannerType // 字典TabBar模块 1民生、2生活...
+ * @param {*} data.parentId // 根据上级列表id查询下级列表
+ */
+const recursionApi = function (data) {
+ return request(
+ {
+ url: '/admin-api/people/category/recursion',
+ method: 'get',
+ data: data
+ },
+ false
+ );
+};
+
+/**
+ * 创建点赞
+ * @param {*} data
+ */
+const praiseCreateApi = function (data) {
+ return request({
+ url: '/admin-api/people/praise/create',
+ method: 'post',
+ data: data
+ });
+};
+
+/**
+ * 取消点赞
+ * @param {*} data
+ */
+const praiseCancelApi = function (data) {
+ return request({
+ url: '/admin-api/people/praise/cancel',
+ method: 'post',
+ data: data
+ });
+};
+
+/**
+ * 创建分享
+ * @param {*} data
+ */
+const shareCreateApi = function (data) {
+ return request({
+ url: '/admin-api/people/share/create',
+ method: 'post',
+ data: data
+ });
+};
+
+/**
+ * 创建用户收藏
+ * @param {*} data
+ */
+const collectionCreateApi = function (data) {
+ return request({
+ url: '/admin-api/people/collection/create',
+ method: 'post',
+ data: data
+ });
+};
+/**
+ * 取消用户收藏
+ * @param {*} data
+ */
+const collectionCancelApi = function (data) {
+ return request({
+ url: '/admin-api/people/collection/cancel',
+ method: 'post',
+ data: data
+ });
+};
+
+/**
+ * 获得案件处理过程分页
+ * @param {*} data
+ */
+const casesProcessPageApi = function (data) {
+ return request({
+ url: '/admin-api/people/cases-process/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获取部门树
+ * @param {*} data
+ */
+const deptTreeApi = function (data) {
+ return request({
+ url: '/admin-api/system/dept/tree',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得服务记录详情
+ * @param {*} data
+ */
+const serveRecordGetApi = function (data) {
+ return request({
+ url: '/admin-api/people/serve-record/get',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得服务记录分页
+ * @param {*} data
+ */
+const serveRecordPageApi = function (data) {
+ return request({
+ url: '/admin-api/people/serve-record/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得线上问诊分页
+ * @param {*} data
+ */
+const inquiriesOnlinePageApi = function (data) {
+ return request({
+ url: '/admin-api/people/inquiries-online/page',
+ method: 'get',
+ data: data
+ });
+};
+
+/**
+ * 获得线上问诊详情
+ * @param {*} data
+ */
+const inquiriesOnlineGetApi = function (data) {
+ return request({
+ url: '/admin-api/people/inquiries-online/get',
+ method: 'get',
+ data: data
+ });
+};
+export {
+ getBannerApi,
+ getDictDataApi,
+ uploadApi,
+ recursionApi,
+ praiseCreateApi,
+ praiseCancelApi,
+ shareCreateApi,
+ collectionCreateApi,
+ collectionCancelApi,
+ casesProcessPageApi,
+ deptTreeApi,
+ serveRecordGetApi,
+ serveRecordPageApi,
+ inquiriesOnlineGetApi,
+ inquiriesOnlinePageApi
+};
diff --git a/src/components/custom-nav-bar/custom-nav-bar.vue b/src/components/custom-nav-bar/custom-nav-bar.vue
new file mode 100644
index 0000000..8caea4b
--- /dev/null
+++ b/src/components/custom-nav-bar/custom-nav-bar.vue
@@ -0,0 +1,160 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ leftText }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/config/constant.js b/src/config/constant.js
new file mode 100644
index 0000000..b09a5c8
--- /dev/null
+++ b/src/config/constant.js
@@ -0,0 +1,50 @@
+/**
+ * @name 常量
+ * @description 多环境配置
+ * @param {Boolean} debug 是否开启debug模式
+ * @param {Object} env 当前的项目环境配置
+ * @param {Object} systemInfo 当前的系统信息
+ * @param {Boolean} isIPhone 判断机型是否是iPhone
+ * @param {Boolean} isIPhoneX 判断机型是否是iPhoneX系列
+ * @param {Boolean} menu 小程序顶部胶囊按钮的信息
+ * @param {Object} locationInfo 用户的当前位置信息
+ */
+import env from './env';
+
+import amap from "@/lib/wx-map-sdk/amap-wx.130.js";
+function getLocationInfo() {
+ const info = {};
+ uni.getLocation(function(res) {
+ console.log('纬度:' + res.latitude);
+ console.log('经度:' + res.longitude);
+ });
+ const myAmapFun = new amap.AMapWX({
+ key: env.aMapKey
+ });
+ myAmapFun.getRegeo({
+ success: function (res) {
+ if (!res.length) {
+ return;
+ }
+ Object.assign(info, res[0]);
+ },
+ fail: function (info) {
+ uni.showModal({
+ title: info.errMsg
+ });
+ }
+ });
+ return info;
+}
+export default {
+ data() {
+ return {};
+ },
+ debug: true,
+ env,
+ systemInfo: uni.getSystemInfoSync(),
+ menu: uni.getSystemInfoSync(),
+ isIPhone: uni.getSystemInfoSync().model.indexOf('iPhone') >= 0,
+ isIPhoneX: uni.getSystemInfoSync().model.lastIndexOf('X') >= 0,
+ locationInfo: getLocationInfo()
+};
\ No newline at end of file
diff --git a/src/config/env.js b/src/config/env.js
new file mode 100644
index 0000000..bebb3d3
--- /dev/null
+++ b/src/config/env.js
@@ -0,0 +1,35 @@
+/**
+ * @name 小程序环境
+ * @description 多环境配置
+ */
+const envName = 'development';
+const envs = [{
+ envName: 'production',
+ appID: 'wx736395182f05a1b7',
+ appName: '介休网格通',
+ version: '1.0.0',
+ baseUrl: 'https://jxwgtjm.xuqidata.com:8088',
+ fileUrl: 'https://jiexiu.xuqidata.com:8083/jiexiujumin',
+ loginPath: '/admin-api/system/auth/wechat/app/login',
+ aMapKey: '29103dae675e5788eb011fb77ade8e3f',
+ pubkey: 'Si9veMEER0LGTcLL6xwRWxUB7UCF7jjb00548e0ddc1501de0f'
+ },
+ {
+ envName: 'development',
+ appID: 'wxcee598c3eb71e48d',
+ appName: '智慧旭奇',
+ version: '1.0.0',
+ baseUrl: 'http://47.92.245.35:5002',
+ // 接口前缀
+ fileUrl: 'http://47.92.245.35:5009/xq-ssg',
+ // 图片服务器
+ loginPath: '/admin-api/system/auth/wechat/app/login',
+ // 登陆接口
+ aMapKey: '6e488a3ed079adbb01de2ecb88ca5905',
+ // 高德地图key
+ pubkey: 'O9eM4Cv5bpi30mgUw9GEkf19KVE8KE8D00a46a6e50bb9465b2' // 吾来对话机器人平台key
+ }
+];
+
+const isFind = envs.find((item) => item.envName === envName);
+export default isFind;
\ No newline at end of file
diff --git a/src/config/index.js b/src/config/index.js
new file mode 100644
index 0000000..bd0149b
--- /dev/null
+++ b/src/config/index.js
@@ -0,0 +1,13 @@
+/**
+ * @name Config
+ * @description 项目配置
+ */
+import env from './env';
+import constant from './constant';
+export default {
+ data() {
+ return {};
+ },
+ env,
+ ...constant
+};
diff --git a/src/env.d.ts b/src/env.d.ts
new file mode 100644
index 0000000..d27eb5a
--- /dev/null
+++ b/src/env.d.ts
@@ -0,0 +1,8 @@
+///
+
+declare module '*.vue' {
+ import { DefineComponent } from 'vue'
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
+ const component: DefineComponent<{}, {}, any>
+ export default component
+}
diff --git a/src/images/default-avatar.png b/src/images/default-avatar.png
new file mode 100644
index 0000000..201174c
Binary files /dev/null and b/src/images/default-avatar.png differ
diff --git a/src/images/enterprise/icon-1.png b/src/images/enterprise/icon-1.png
new file mode 100644
index 0000000..2f0d307
Binary files /dev/null and b/src/images/enterprise/icon-1.png differ
diff --git a/src/images/enterprise/icon.png b/src/images/enterprise/icon.png
new file mode 100644
index 0000000..2f6b6da
Binary files /dev/null and b/src/images/enterprise/icon.png differ
diff --git a/src/images/ic-arrow-black.png b/src/images/ic-arrow-black.png
new file mode 100644
index 0000000..e96c93a
Binary files /dev/null and b/src/images/ic-arrow-black.png differ
diff --git a/src/images/ic-arrow-white.png b/src/images/ic-arrow-white.png
new file mode 100644
index 0000000..9bcd3f4
Binary files /dev/null and b/src/images/ic-arrow-white.png differ
diff --git a/src/images/ic-collection.png b/src/images/ic-collection.png
new file mode 100644
index 0000000..4568d3d
Binary files /dev/null and b/src/images/ic-collection.png differ
diff --git a/src/images/ic-collection1.png b/src/images/ic-collection1.png
new file mode 100644
index 0000000..b7a8f71
Binary files /dev/null and b/src/images/ic-collection1.png differ
diff --git a/src/images/ic-give.png b/src/images/ic-give.png
new file mode 100644
index 0000000..6ff93f9
Binary files /dev/null and b/src/images/ic-give.png differ
diff --git a/src/images/ic-give1.png b/src/images/ic-give1.png
new file mode 100644
index 0000000..e30e9c4
Binary files /dev/null and b/src/images/ic-give1.png differ
diff --git a/src/images/ic-give2.png b/src/images/ic-give2.png
new file mode 100644
index 0000000..174c0f0
Binary files /dev/null and b/src/images/ic-give2.png differ
diff --git a/src/images/ic-radio.png b/src/images/ic-radio.png
new file mode 100644
index 0000000..17eeffa
Binary files /dev/null and b/src/images/ic-radio.png differ
diff --git a/src/images/ic-radio1.png b/src/images/ic-radio1.png
new file mode 100644
index 0000000..3c9b61d
Binary files /dev/null and b/src/images/ic-radio1.png differ
diff --git a/src/images/ic-share.png b/src/images/ic-share.png
new file mode 100644
index 0000000..e394fd0
Binary files /dev/null and b/src/images/ic-share.png differ
diff --git a/src/images/ic-success.png b/src/images/ic-success.png
new file mode 100644
index 0000000..48b36f4
Binary files /dev/null and b/src/images/ic-success.png differ
diff --git a/src/images/ic-you.png b/src/images/ic-you.png
new file mode 100644
index 0000000..7fb72a4
Binary files /dev/null and b/src/images/ic-you.png differ
diff --git a/src/images/icon-people.png b/src/images/icon-people.png
new file mode 100644
index 0000000..3e5fcf3
Binary files /dev/null and b/src/images/icon-people.png differ
diff --git a/src/images/icon1.png b/src/images/icon1.png
new file mode 100644
index 0000000..0a6fe4c
Binary files /dev/null and b/src/images/icon1.png differ
diff --git a/src/images/icon2.png b/src/images/icon2.png
new file mode 100644
index 0000000..d7c3246
Binary files /dev/null and b/src/images/icon2.png differ
diff --git a/src/images/icon3.png b/src/images/icon3.png
new file mode 100644
index 0000000..7bb450b
Binary files /dev/null and b/src/images/icon3.png differ
diff --git a/src/images/icon4.png b/src/images/icon4.png
new file mode 100644
index 0000000..6783b0a
Binary files /dev/null and b/src/images/icon4.png differ
diff --git a/src/images/icon5.png b/src/images/icon5.png
new file mode 100644
index 0000000..10f0922
Binary files /dev/null and b/src/images/icon5.png differ
diff --git a/src/images/icon9.png b/src/images/icon9.png
new file mode 100644
index 0000000..7bd1e17
Binary files /dev/null and b/src/images/icon9.png differ
diff --git a/src/images/rate-icon.png b/src/images/rate-icon.png
new file mode 100644
index 0000000..da2ba8c
Binary files /dev/null and b/src/images/rate-icon.png differ
diff --git a/src/images/search.png b/src/images/search.png
new file mode 100644
index 0000000..5060ced
Binary files /dev/null and b/src/images/search.png differ
diff --git a/src/images/share-icon.png b/src/images/share-icon.png
new file mode 100644
index 0000000..4596df0
Binary files /dev/null and b/src/images/share-icon.png differ
diff --git a/src/images/tabbar/ic-consult.png b/src/images/tabbar/ic-consult.png
new file mode 100644
index 0000000..269b20f
Binary files /dev/null and b/src/images/tabbar/ic-consult.png differ
diff --git a/src/images/tabbar/ic-enterprise.png b/src/images/tabbar/ic-enterprise.png
new file mode 100644
index 0000000..eda2d72
Binary files /dev/null and b/src/images/tabbar/ic-enterprise.png differ
diff --git a/src/images/tabbar/ic-life.png b/src/images/tabbar/ic-life.png
new file mode 100644
index 0000000..0e1a1c0
Binary files /dev/null and b/src/images/tabbar/ic-life.png differ
diff --git a/src/images/tabbar/ic-my.png b/src/images/tabbar/ic-my.png
new file mode 100644
index 0000000..620f218
Binary files /dev/null and b/src/images/tabbar/ic-my.png differ
diff --git a/src/images/tabbar/ic-people.png b/src/images/tabbar/ic-people.png
new file mode 100644
index 0000000..00bc221
Binary files /dev/null and b/src/images/tabbar/ic-people.png differ
diff --git a/src/images/void-icon2.png b/src/images/void-icon2.png
new file mode 100644
index 0000000..fe41069
Binary files /dev/null and b/src/images/void-icon2.png differ
diff --git a/src/lib/wux-weapp/animation-group/index.vue b/src/lib/wux-weapp/animation-group/index.vue
new file mode 100644
index 0000000..6fb2d2e
--- /dev/null
+++ b/src/lib/wux-weapp/animation-group/index.vue
@@ -0,0 +1,573 @@
+
+
+
+
+
+
+
+
diff --git a/src/lib/wux-weapp/backdrop/index.vue b/src/lib/wux-weapp/backdrop/index.vue
new file mode 100644
index 0000000..d1cac21
--- /dev/null
+++ b/src/lib/wux-weapp/backdrop/index.vue
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
diff --git a/src/lib/wux-weapp/cascader/index.vue b/src/lib/wux-weapp/cascader/index.vue
new file mode 100644
index 0000000..999b45e
--- /dev/null
+++ b/src/lib/wux-weapp/cascader/index.vue
@@ -0,0 +1,489 @@
+
+
+
+
+
+ {{ title }}
+
+
+
+ {{ item[fieldNames['label']] }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item[fieldNames['label']] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/wux-weapp/helpers/arrayTreeFilter.js b/src/lib/wux-weapp/helpers/arrayTreeFilter.js
new file mode 100644
index 0000000..9210c34
--- /dev/null
+++ b/src/lib/wux-weapp/helpers/arrayTreeFilter.js
@@ -0,0 +1,25 @@
+'use strict';
+function arrayTreeFilter(e, r, t) {
+ (t = t || {}).childrenKeyName = t.childrenKeyName || 'children';
+ var a = e || [];
+ var l = [];
+ var i = 0;
+ do {
+ var d = a.filter(function (e) {
+ return r(e, i);
+ })[0];
+ if (!d) {
+ break;
+ }
+ l.push(d);
+ a = d[t.childrenKeyName] || [];
+ i += 1;
+ } while (0 < a.length);
+ return l;
+}
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+var _default = arrayTreeFilter;
+exports.default = _default;
diff --git a/src/lib/wux-weapp/helpers/baseComponent.js b/src/lib/wux-weapp/helpers/baseComponent.js
new file mode 100644
index 0000000..69736f7
--- /dev/null
+++ b/src/lib/wux-weapp/helpers/baseComponent.js
@@ -0,0 +1,141 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+var _computedBehavior = _interopRequireDefault(require('./computedBehavior'));
+var _relationsBehavior = _interopRequireDefault(require('./relationsBehavior'));
+var _safeAreaBehavior = _interopRequireDefault(require('./safeAreaBehavior'));
+var _safeSetDataBehavior = _interopRequireDefault(require('./safeSetDataBehavior'));
+var _funcBehavior = _interopRequireDefault(require('./funcBehavior'));
+var _compareVersion = _interopRequireDefault(require('./compareVersion'));
+function _interopRequireDefault(e) {
+ return e && e.__esModule
+ ? e
+ : {
+ default: e
+ };
+}
+function ownKeys(r, e) {
+ var t = Object.keys(r);
+ if (Object.getOwnPropertySymbols) {
+ var o = Object.getOwnPropertySymbols(r);
+ if (e) {
+ o = o.filter(function (e) {
+ return Object.getOwnPropertyDescriptor(r, e).enumerable;
+ });
+ }
+ t.push.apply(t, o);
+ }
+ return t;
+}
+function _objectSpread(r) {
+ for (var e = 1; e < arguments.length; e++) {
+ if (null != arguments[e]) {
+ var t = arguments[e];
+ } else {
+ }
+ e % 2
+ ? ownKeys(t, true).forEach(function (e) {
+ _defineProperty(r, e, t[e]);
+ })
+ : Object.getOwnPropertyDescriptors
+ ? Object.defineProperties(r, Object.getOwnPropertyDescriptors(t))
+ : ownKeys(t).forEach(function (e) {
+ Object.defineProperty(r, e, Object.getOwnPropertyDescriptor(t, e));
+ });
+ }
+ return r;
+}
+function _defineProperty(e, r, t) {
+ r in e
+ ? Object.defineProperty(e, r, {
+ value: t,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ })
+ : (e[r] = t);
+ return e;
+}
+function _toConsumableArray(e) {
+ return _arrayWithoutHoles(e) || _iterableToArray(e) || _nonIterableSpread();
+}
+function _nonIterableSpread() {
+ throw new TypeError('Invalid attempt to spread non-iterable instance');
+}
+function _iterableToArray(e) {
+ if (Symbol.iterator in Object(e) || '[object Arguments]' === Object.prototype.toString.call(e)) {
+ return Array.from(e);
+ }
+}
+function _arrayWithoutHoles(e) {
+ if (Array.isArray(e)) {
+ for (r = 0, t = new Array(e.length), void 0; r < e.length; r++) {
+ var r;
+ var t;
+ t[r] = e[r];
+ }
+ return t;
+ }
+}
+var _wx$getSystemInfoSync = uni.getSystemInfoSync();
+var platform = _wx$getSystemInfoSync.platform;
+var SDKVersion = _wx$getSystemInfoSync.SDKVersion;
+var libVersion = '2.6.6';
+if ('devtools' === platform && (0, _compareVersion.default)(SDKVersion, libVersion) < 0 && wx && uni.showModal) {
+ uni.showModal({
+ title: '提示',
+ content: '当前基础库版本('.concat(SDKVersion, ')过低,无法使用 Wux Weapp 组件库,请更新基础库版本 >=').concat(libVersion, ' 后重试。')
+ });
+}
+var baseComponent = function (e) {
+ if (0 < arguments.length && void 0 !== e) {
+ var t = e;
+ } else {
+ }
+ t.externalClasses = ['wux-class', 'wux-hover-class'].concat(_toConsumableArray((t.externalClasses = t.externalClasses || [])));
+ t.behaviors = [_relationsBehavior.default, _safeSetDataBehavior.default].concat(_toConsumableArray((t.behaviors = t.behaviors || [])), [_computedBehavior.default]);
+ if (t.useSafeArea) {
+ t.behaviors = [].concat(_toConsumableArray(t.behaviors), [_safeAreaBehavior.default]);
+ delete t.useSafeArea;
+ }
+ if (t.useFunc) {
+ t.behaviors = [].concat(_toConsumableArray(t.behaviors), [_funcBehavior.default]);
+ delete t.useFunc;
+ }
+ if (t.useField) {
+ t.behaviors = [].concat(_toConsumableArray(t.behaviors), ['wx://form-field']);
+ delete t.useField;
+ }
+ if (t.useExport) {
+ t.behaviors = [].concat(_toConsumableArray(t.behaviors), ['wx://component-export']);
+ t.methods = _objectSpread(
+ {
+ export: function () {
+ return this;
+ }
+ },
+ t.methods
+ );
+ delete t.useExport;
+ }
+ t.options = _objectSpread(
+ {
+ multipleSlots: true,
+ addGlobalClass: true
+ },
+ t.options
+ );
+ if (t.properties) {
+ Object.keys(t.properties).forEach(function (e) {
+ var r = t.properties[e];
+ if (Array.isArray(r.type)) {
+ r.optionalTypes = r.type;
+ }
+ });
+ }
+ return Component(t);
+};
+var _default = baseComponent;
+exports.default = _default;
diff --git a/src/lib/wux-weapp/helpers/checkIPhoneX.js b/src/lib/wux-weapp/helpers/checkIPhoneX.js
new file mode 100644
index 0000000..3cf2b29
--- /dev/null
+++ b/src/lib/wux-weapp/helpers/checkIPhoneX.js
@@ -0,0 +1,42 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.checkIPhoneX = exports.getSystemInfo = exports.safeAreaInset = void 0;
+var systemInfo = null;
+var safeAreaInset = {
+ top: 88,
+ left: 0,
+ right: 0,
+ bottom: 34
+};
+exports.safeAreaInset = safeAreaInset;
+var getSystemInfo = function (e) {
+ if (!systemInfo || e) {
+ try {
+ systemInfo = uni.getSystemInfoSync();
+ } catch (e) {
+ console.log('CatchClause', e);
+ console.log('CatchClause', e);
+ }
+ try {
+ safeAreaInset.top = systemInfo.statusBarHeight + systemInfo.safeArea.top;
+ safeAreaInset.bottom = systemInfo.screenHeight - systemInfo.safeArea.bottom;
+ } catch (e) {
+ console.log('CatchClause', e);
+ console.log('CatchClause', e);
+ }
+ }
+ return systemInfo;
+};
+exports.getSystemInfo = getSystemInfo;
+var isIPhoneX = function (e) {
+ var t = e.model;
+ var s = e.windowHeight;
+ var o = e.windowWidth;
+ return /iphone (x|12|13)/.test(t.toLowerCase()) || (812 <= s && 2 < s / o);
+};
+var checkIPhoneX = function (e) {
+ return isIPhoneX(getSystemInfo(e));
+};
+(exports.checkIPhoneX = checkIPhoneX)();
diff --git a/src/lib/wux-weapp/helpers/classNames.js b/src/lib/wux-weapp/helpers/classNames.js
new file mode 100644
index 0000000..9e75a17
--- /dev/null
+++ b/src/lib/wux-weapp/helpers/classNames.js
@@ -0,0 +1,42 @@
+'use strict';
+function _typeof(e) {
+ return (_typeof =
+ 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator
+ ? function (e) {
+ return typeof e;
+ }
+ : function (e) {
+ return e && 'function' == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? 'symbol' : typeof e;
+ })(e);
+}
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+var hasOwn = {}.hasOwnProperty;
+function classNames() {
+ for (e = [], t = 0, void 0; t < arguments.length; t++) {
+ var e;
+ var t;
+ var o = arguments[t];
+ if (o) {
+ var r = _typeof(o);
+ if ('string' === r || 'number' === r) e.push(o);
+ else if (Array.isArray(o) && o.length) {
+ var n = classNames.apply(null, o);
+ if (n) {
+ e.push(n);
+ }
+ } else if ('object' === r) {
+ for (var s in o) {
+ if (hasOwn.call(o, s) && o[s]) {
+ e.push(s);
+ }
+ }
+ }
+ }
+ }
+ return e.join(' ');
+}
+var _default = classNames;
+exports.default = _default;
diff --git a/src/lib/wux-weapp/helpers/colors.js b/src/lib/wux-weapp/helpers/colors.js
new file mode 100644
index 0000000..e7d1d49
--- /dev/null
+++ b/src/lib/wux-weapp/helpers/colors.js
@@ -0,0 +1,21 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.isPresetColor = exports.colors = void 0;
+var colors = {
+ light: '#ddd',
+ stable: '#b2b2b2',
+ positive: '#387ef5',
+ calm: '#11c1f3',
+ balanced: '#33cd5f',
+ energized: '#ffc900',
+ assertive: '#ef473a',
+ royal: '#886aea',
+ dark: '#444'
+};
+exports.colors = colors;
+var isPresetColor = function (e) {
+ return !!e && (colors[e] ? colors[e] : e);
+};
+exports.isPresetColor = isPresetColor;
diff --git a/src/lib/wux-weapp/helpers/compareVersion.js b/src/lib/wux-weapp/helpers/compareVersion.js
new file mode 100644
index 0000000..a5710e3
--- /dev/null
+++ b/src/lib/wux-weapp/helpers/compareVersion.js
@@ -0,0 +1,29 @@
+'use strict';
+function compareVersion(e, r) {
+ for (t = e.split('.'), a = r.split('.'), n = Math.max(t.length, a.length), void 0; t.length < n; ) {
+ var t;
+ var a;
+ var n;
+ t.push('0');
+ }
+ for (; a.length < n; ) {
+ a.push('0');
+ }
+ for (var o = 0; o < n; o++) {
+ var s = parseInt(t[o]);
+ var u = parseInt(a[o]);
+ if (u < s) {
+ return 1;
+ }
+ if (s < u) {
+ return -1;
+ }
+ }
+ return 0;
+}
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+var _default = compareVersion;
+exports.default = _default;
diff --git a/src/lib/wux-weapp/helpers/computedBehavior.js b/src/lib/wux-weapp/helpers/computedBehavior.js
new file mode 100644
index 0000000..85bb0ef
--- /dev/null
+++ b/src/lib/wux-weapp/helpers/computedBehavior.js
@@ -0,0 +1,178 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+var _isEmpty = _interopRequireDefault(require('./isEmpty'));
+var _shallowEqual = _interopRequireDefault(require('./shallowEqual'));
+function _interopRequireDefault(e) {
+ return e && e.__esModule
+ ? e
+ : {
+ default: e
+ };
+}
+function _toConsumableArray(e) {
+ return _arrayWithoutHoles(e) || _iterableToArray(e) || _nonIterableSpread();
+}
+function _nonIterableSpread() {
+ throw new TypeError('Invalid attempt to spread non-iterable instance');
+}
+function _iterableToArray(e) {
+ if (Symbol.iterator in Object(e) || '[object Arguments]' === Object.prototype.toString.call(e)) {
+ return Array.from(e);
+ }
+}
+function _arrayWithoutHoles(e) {
+ if (Array.isArray(e)) {
+ for (r = 0, t = new Array(e.length), void 0; r < e.length; r++) {
+ var r;
+ var t;
+ t[r] = e[r];
+ }
+ return t;
+ }
+}
+function ownKeys(r, e) {
+ var t = Object.keys(r);
+ if (Object.getOwnPropertySymbols) {
+ var n = Object.getOwnPropertySymbols(r);
+ if (e) {
+ n = n.filter(function (e) {
+ return Object.getOwnPropertyDescriptor(r, e).enumerable;
+ });
+ }
+ t.push.apply(t, n);
+ }
+ return t;
+}
+function _objectSpread(r) {
+ for (var e = 1; e < arguments.length; e++) {
+ if (null != arguments[e]) {
+ var t = arguments[e];
+ } else {
+ var t = {};
+ }
+ e % 2
+ ? ownKeys(t, true).forEach(function (e) {
+ _defineProperty(r, e, t[e]);
+ })
+ : Object.getOwnPropertyDescriptors
+ ? Object.defineProperties(r, Object.getOwnPropertyDescriptors(t))
+ : ownKeys(t).forEach(function (e) {
+ Object.defineProperty(r, e, Object.getOwnPropertyDescriptor(t, e));
+ });
+ }
+ return r;
+}
+function _defineProperty(e, r, t) {
+ r in e
+ ? Object.defineProperty(e, r, {
+ value: t,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ })
+ : (e[r] = t);
+ return e;
+}
+function _slicedToArray(e, r) {
+ return _arrayWithHoles(e) || _iterableToArrayLimit(e, r) || _nonIterableRest();
+}
+function _nonIterableRest() {
+ throw new TypeError('Invalid attempt to destructure non-iterable instance');
+}
+function _iterableToArrayLimit(e, r) {
+ var t = [];
+ var n = true;
+ var o = false;
+ var i = void 0;
+ try {
+ for (u = e[Symbol.iterator](), void 0; !(n = (a = u.next()).done) && (t.push(a.value), !r || t.length !== r); n = true) {
+ var a;
+ var u;
+ }
+ } catch (e) {
+ console.log('CatchClause', e);
+ console.log('CatchClause', e);
+ o = true;
+ i = e;
+ } finally {
+ try {
+ n || null == u.return || u.return();
+ } finally {
+ if (o) {
+ throw i;
+ }
+ }
+ }
+ return t;
+}
+function _arrayWithHoles(e) {
+ if (Array.isArray(e)) {
+ return e;
+ }
+}
+var ALL_DATA_KEY = '**';
+var trim = function (e) {
+ return (0 < arguments.length && void 0 !== e ? e : '').replace(/\s/g, '');
+};
+var _default = {
+ lifetimes: {
+ attached: function () {
+ this.initComputed();
+ }
+ },
+ definitionFilter: function (e) {
+ var r = e.computed;
+ if (void 0 === r) {
+ var n = {};
+ } else {
+ var n = r;
+ }
+ var a = Object.keys(n).reduce(function (e, i) {
+ var r = _slicedToArray(Array.isArray(n[i]) ? n[i] : [ALL_DATA_KEY, n[i]], 2);
+ var t = r[0];
+ var a = r[1];
+ return _objectSpread(
+ {},
+ e,
+ _defineProperty({}, t, function () {
+ if ('function' == typeof a) {
+ for (e = arguments.length, r = new Array(e), t = 0, void 0; t < e; t++) {
+ var e;
+ var r;
+ var t;
+ r[t] = arguments[t];
+ }
+ var n = a.apply(this, r);
+ var o = this[i];
+ (0, _isEmpty.default)(n) || (0, _shallowEqual.default)(n, o) || this.setData(_defineProperty({}, i, n));
+ }
+ })
+ );
+ }, {});
+ Object.assign((e.observers = e.observers || {}), a);
+ Object.assign((e.methods = e.methods || {}), {
+ initComputed: function (e, r) {
+ var t = 0 < arguments.length && void 0 !== e ? e : {};
+ var n = 1 < arguments.length && void 0 !== r && r;
+ if (!this.runInitComputed || n) {
+ this.runInitComputed = false;
+ var that = this;
+ var i = _objectSpread({}, this, {}, t);
+ Object.keys(a).forEach(function (e) {
+ var r = trim(e)
+ .split(',')
+ .reduce(function (e, r) {
+ return [].concat(_toConsumableArray(e), [i[r]]);
+ }, []);
+ a[e].apply(that, r);
+ });
+ this.runInitComputed = true;
+ }
+ }
+ });
+ }
+};
+exports.default = _default;
diff --git a/src/lib/wux-weapp/helpers/createFieldsStore.js b/src/lib/wux-weapp/helpers/createFieldsStore.js
new file mode 100644
index 0000000..1b8d5e5
--- /dev/null
+++ b/src/lib/wux-weapp/helpers/createFieldsStore.js
@@ -0,0 +1,170 @@
+'use strict';
+function ownKeys(t, e) {
+ var r = Object.keys(t);
+ if (Object.getOwnPropertySymbols) {
+ var n = Object.getOwnPropertySymbols(t);
+ if (e) {
+ n = n.filter(function (e) {
+ return Object.getOwnPropertyDescriptor(t, e).enumerable;
+ });
+ }
+ r.push.apply(r, n);
+ }
+ return r;
+}
+function _objectSpread(t) {
+ for (var e = 1; e < arguments.length; e++) {
+ if (null != arguments[e]) {
+ var r = arguments[e];
+ } else {
+ var r = {};
+ }
+ if (e % 2) {
+ ownKeys(r, true).forEach(function (e) {
+ _defineProperty(t, e, r[e]);
+ });
+ } else {
+ Object.getOwnPropertyDescriptors
+ ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(r))
+ : ownKeys(r).forEach(function (e) {
+ Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(r, e));
+ });
+ }
+ }
+ return t;
+}
+function _defineProperty(e, t, r) {
+ t in e
+ ? Object.defineProperty(e, t, {
+ value: r,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ })
+ : (e[t] = r);
+ return e;
+}
+function _classCallCheck(e, t) {
+ if (!(e instanceof t)) {
+ throw new TypeError('Cannot call a class as a function');
+ }
+}
+function _defineProperties(e, t) {
+ for (var r = 0; r < t.length; r++) {
+ var n = t[r];
+ n.enumerable = n.enumerable || false;
+ n.configurable = true;
+ if ('value' in n) {
+ n.writable = true;
+ }
+ Object.defineProperty(e, n.key, n);
+ }
+}
+function _createClass(e, t, r) {
+ if (t) {
+ _defineProperties(e.prototype, t);
+ }
+ if (r) {
+ _defineProperties(e, r);
+ }
+ return e;
+}
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = createFieldsStore;
+var FieldsStore = (function () {
+ function t() {
+ if (0 < arguments.length && void 0 !== arguments[0]) {
+ var e = arguments[0];
+ } else {
+ var e = {};
+ }
+ _classCallCheck(this, t);
+ this.fields = e;
+ }
+ _createClass(t, [
+ {
+ key: 'setFields',
+ value: function (e) {
+ Object.assign(this.fields, e);
+ }
+ },
+ {
+ key: 'updateFields',
+ value: function (e) {
+ this.fields = e;
+ }
+ },
+ {
+ key: 'clearField',
+ value: function (e) {
+ delete this.fields[e];
+ }
+ },
+ {
+ key: 'getValueFromFields',
+ value: function (e, t) {
+ var r = t[e];
+ return r && 'value' in r ? r.value : r.initialValue;
+ }
+ },
+ {
+ key: 'getAllFieldsName',
+ value: function () {
+ var e = this.fields;
+ return e ? Object.keys(e) : [];
+ }
+ },
+ {
+ key: 'getField',
+ value: function (e) {
+ return _objectSpread({}, this.fields[e], {
+ name: e
+ });
+ }
+ },
+ {
+ key: 'getFieldValuePropValue',
+ value: function (e) {
+ var t = e.name;
+ var r = e.valuePropName;
+ var n = this.getField(t);
+ return _defineProperty({}, r, 'value' in n ? n.value : n.initialValue);
+ }
+ },
+ {
+ key: 'getFieldValue',
+ value: function (e) {
+ return this.getValueFromFields(e, this.fields);
+ }
+ },
+ {
+ key: 'getFieldsValue',
+ value: function (e) {
+ var that = this;
+ return (e || this.getAllFieldsName()).reduce(function (e, t) {
+ e[t] = that.getFieldValue(t);
+ return e;
+ }, {});
+ }
+ },
+ {
+ key: 'resetFields',
+ value: function (e) {
+ var n = this.fields;
+ return (e || this.getAllFieldsName()).reduce(function (e, t) {
+ var r = n[t];
+ if (r) {
+ e[t] = r.initialValue;
+ }
+ return e;
+ }, {});
+ }
+ }
+ ]);
+ return t;
+})();
+function createFieldsStore(e) {
+ return new FieldsStore(e);
+}
diff --git a/src/lib/wux-weapp/helpers/debounce.js b/src/lib/wux-weapp/helpers/debounce.js
new file mode 100644
index 0000000..eec906c
--- /dev/null
+++ b/src/lib/wux-weapp/helpers/debounce.js
@@ -0,0 +1,41 @@
+'use strict';
+function debounce(t, o, i) {
+ var n;
+ var u;
+ var r;
+ var a;
+ var c;
+ function d() {
+ var e = +new Date() - a;
+ if (e < o && 0 <= e) {
+ n = setTimeout(d, o - e);
+ } else {
+ n = void 0;
+ i || ((c = t.apply(r, u)), n || (u = r = void 0));
+ }
+ }
+ function e() {
+ r = this;
+ u = arguments;
+ a = +new Date();
+ var e = i && !n;
+ n = n || setTimeout(d, o);
+ if (e) {
+ c = t.apply(r, u);
+ u = r = void 0;
+ }
+ return c;
+ }
+ e.cancel = function () {
+ if (void 0 !== n) {
+ clearTimeout(n);
+ n = void 0;
+ }
+ u = r = void 0;
+ };
+ return e;
+}
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = debounce;
diff --git a/src/lib/wux-weapp/helpers/eventsMixin.js b/src/lib/wux-weapp/helpers/eventsMixin.js
new file mode 100644
index 0000000..80382e8
--- /dev/null
+++ b/src/lib/wux-weapp/helpers/eventsMixin.js
@@ -0,0 +1,56 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = eventsMixin;
+var defaultEvents = {
+ onChange: function () {}
+};
+function eventsMixin() {
+ return {
+ data() {
+ return {
+ inputEvents: defaultEvents
+ };
+ },
+ lifetimes: {
+ created: function () {
+ this._oriTriggerEvent = this.triggerEvent;
+ this.triggerEvent = this._triggerEvent;
+ }
+ },
+ props: {
+ events: {
+ type: Object,
+ value: defaultEvents
+ }
+ },
+ definitionFilter: function (t) {
+ Object.assign((t.data = t.data || {}), {
+ inputEvents: Object.assign({}, defaultEvents, t.inputEvents)
+ });
+ Object.assign((t.methods = t.methods || {}), {
+ _triggerEvent: function (t, e, n, i) {
+ var s = !(2 < arguments.length && void 0 !== n) || n;
+ if (3 < arguments.length) {
+ var a = i;
+ } else {
+ var a = void 0;
+ }
+ var r = this.inputEvents['on'.concat(t[0].toUpperCase()).concat(t.slice(1))];
+ if (s && 'function' == typeof r) {
+ r.call(this, e);
+ }
+ this._oriTriggerEvent(t, e, a);
+ }
+ });
+ Object.assign((t.observers = t.observers || {}), {
+ events: function (t) {
+ this.setData({
+ inputEvents: Object.assign({}, defaultEvents, this.inputEvents, t)
+ });
+ }
+ });
+ }
+ };
+}
diff --git a/src/lib/wux-weapp/helpers/funcBehavior.js b/src/lib/wux-weapp/helpers/funcBehavior.js
new file mode 100644
index 0000000..8bef2f7
--- /dev/null
+++ b/src/lib/wux-weapp/helpers/funcBehavior.js
@@ -0,0 +1,92 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+var mergeOptionsToData = function (t) {
+ if (0 < arguments.length && void 0 !== t) {
+ var e = t;
+ } else {
+ var e = {};
+ }
+ var n = Object.assign({}, e);
+ for (var r in n) {
+ if (n.hasOwnProperty(r) && 'function' == typeof n[r]) {
+ delete n[r];
+ }
+ }
+ return n;
+};
+var bind = function (r, i) {
+ return function () {
+ for (t = arguments.length, e = new Array(t), n = 0, void 0; n < t; n++) {
+ var t;
+ var e;
+ var n;
+ e[n] = arguments[n];
+ }
+ return e.length ? r.apply(i, e) : r.call(i);
+ };
+};
+var assign = function () {
+ for (t = arguments.length, e = new Array(t), n = 0, void 0; n < t; n++) {
+ var t;
+ var e;
+ var n;
+ e[n] = arguments[n];
+ }
+ return Object.assign.apply(Object, [{}].concat(e));
+};
+var _default = {
+ definitionFilter: function (t) {
+ t.data = mergeOptionsToData(t.data);
+ t.data.in = false;
+ t.data.visible = false;
+ },
+ methods: {
+ $mergeOptionsToData: mergeOptionsToData,
+ $mergeOptionsAndBindMethods: function (t, e) {
+ if (0 < arguments.length && void 0 !== t) {
+ var n = t;
+ } else {
+ var n = {};
+ }
+ var r = 1 < arguments.length && void 0 !== e ? e : this.fns;
+ var i = Object.assign({}, n);
+ for (var a in i) {
+ if (i.hasOwnProperty(a) && 'function' == typeof i[a]) {
+ r[a] = bind(i[a], this);
+ delete i[a];
+ }
+ }
+ return i;
+ },
+ $setData: function () {
+ for (e = this, t = arguments.length, n = new Array(t), r = 0, void 0; r < t; r++) {
+ var e;
+ var t;
+ var n;
+ var r;
+ n[r] = arguments[r];
+ }
+ var i = assign.apply(void 0, [{}].concat(n));
+ return new Promise(function (t) {
+ e.setData(i, t);
+ });
+ },
+ $requestAnimationFrame: function (t, e) {
+ var n = 0 < arguments.length && void 0 !== t ? t : function () {};
+ var r = 1 < arguments.length && void 0 !== e ? e : 16.666666666666668;
+ return new Promise(function (t) {
+ return setTimeout(t, r);
+ }).then(n);
+ }
+ },
+ created: function () {
+ this.fns = {};
+ },
+ destroyed: function () {
+ this.fns = {};
+ }
+};
+exports.default = _default;
diff --git a/src/lib/wux-weapp/helpers/gestures.js b/src/lib/wux-weapp/helpers/gestures.js
new file mode 100644
index 0000000..0ce5e7c
--- /dev/null
+++ b/src/lib/wux-weapp/helpers/gestures.js
@@ -0,0 +1,49 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.getSwipeDirection = exports.getPointsDistance = exports.isNearbyPoints = exports.isEqualPoints = exports.getPointsNumber = exports.getTouchPoints = void 0;
+var getTouchPoints = function (t, e) {
+ if (1 < arguments.length && void 0 !== e) {
+ var s = e;
+ } else {
+ var s = 0;
+ }
+ var o = t.touches;
+ var n = t.changedTouches;
+ var i = o && 0 < o.length;
+ var r = n && 0 < n.length;
+ if (!i && r) {
+ var a = n[s];
+ } else {
+ var a = i ? o[s] : t;
+ }
+ return {
+ x: a.pageX,
+ y: a.pageY
+ };
+};
+exports.getTouchPoints = getTouchPoints;
+var getPointsNumber = function (t) {
+ return (t.touches && t.touches.length) || (t.changedTouches && t.changedTouches.length);
+};
+exports.getPointsNumber = getPointsNumber;
+var isEqualPoints = function (t, e) {
+ return t.x === e.x && t.y === e.y;
+};
+exports.isEqualPoints = isEqualPoints;
+var isNearbyPoints = function (t, e, s) {
+ var o = 2 < arguments.length && void 0 !== s ? s : 25;
+ return (Math.abs(t.x - e.x) < o) & (Math.abs(t.y - e.y) < o);
+};
+exports.isNearbyPoints = isNearbyPoints;
+var getPointsDistance = function (t, e) {
+ var s = Math.abs(t.x - e.x);
+ var o = Math.abs(t.y - e.y);
+ return Math.sqrt(s * s + o * o);
+};
+exports.getPointsDistance = getPointsDistance;
+var getSwipeDirection = function (t, e, s, o) {
+ return Math.abs(t - e) >= Math.abs(s - o) ? (0 < t - e ? 'Left' : 'Right') : 0 < s - o ? 'Up' : 'Down';
+};
+exports.getSwipeDirection = getSwipeDirection;
diff --git a/src/lib/wux-weapp/helpers/isEmpty.js b/src/lib/wux-weapp/helpers/isEmpty.js
new file mode 100644
index 0000000..feb2fec
--- /dev/null
+++ b/src/lib/wux-weapp/helpers/isEmpty.js
@@ -0,0 +1,31 @@
+'use strict';
+function _typeof(t) {
+ return (_typeof =
+ 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator
+ ? function (t) {
+ return typeof t;
+ }
+ : function (t) {
+ return t && 'function' == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? 'symbol' : typeof t;
+ })(t);
+}
+function isEmpty(t) {
+ if (Array.isArray(t)) {
+ return 0 === t.length;
+ }
+ if ('object' !== _typeof(t)) {
+ return !t;
+ }
+ if (t) {
+ for (var e in t) {
+ return false;
+ }
+ }
+ return true;
+}
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+var _default = isEmpty;
+exports.default = _default;
diff --git a/src/lib/wux-weapp/helpers/mergeOptionsToData.js b/src/lib/wux-weapp/helpers/mergeOptionsToData.js
new file mode 100644
index 0000000..79fa118
--- /dev/null
+++ b/src/lib/wux-weapp/helpers/mergeOptionsToData.js
@@ -0,0 +1,21 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+var mergeOptionsToData = function (e) {
+ if (0 < arguments.length && void 0 !== e) {
+ var t = e;
+ } else {
+ var t = {};
+ }
+ var o = Object.assign({}, t);
+ for (var r in o) {
+ if (o.hasOwnProperty(r) && 'function' == typeof o[r]) {
+ delete o[r];
+ }
+ }
+ return o;
+};
+var _default = mergeOptionsToData;
+exports.default = _default;
diff --git a/src/lib/wux-weapp/helpers/popupMixin.js b/src/lib/wux-weapp/helpers/popupMixin.js
new file mode 100644
index 0000000..841c21d
--- /dev/null
+++ b/src/lib/wux-weapp/helpers/popupMixin.js
@@ -0,0 +1,338 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = popupMixin;
+var _classNames3 = _interopRequireDefault(require('./classNames'));
+var _eventsMixin = _interopRequireDefault(require('./eventsMixin'));
+function _interopRequireDefault(e) {
+ return e && e.__esModule
+ ? e
+ : {
+ default: e
+ };
+}
+function ownKeys(t, e) {
+ var i = Object.keys(t);
+ if (Object.getOwnPropertySymbols) {
+ var n = Object.getOwnPropertySymbols(t);
+ if (e) {
+ n = n.filter(function (e) {
+ return Object.getOwnPropertyDescriptor(t, e).enumerable;
+ });
+ }
+ i.push.apply(i, n);
+ }
+ return i;
+}
+function _objectSpread(t) {
+ for (var e = 1; e < arguments.length; e++) {
+ if (null != arguments[e]) {
+ var i = arguments[e];
+ } else {
+ var i = {};
+ }
+ e % 2
+ ? ownKeys(i, true).forEach(function (e) {
+ _defineProperty(t, e, i[e]);
+ })
+ : Object.getOwnPropertyDescriptors
+ ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(i))
+ : ownKeys(i).forEach(function (e) {
+ Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(i, e));
+ });
+ }
+ return t;
+}
+function _defineProperty(e, t, i) {
+ t in e
+ ? Object.defineProperty(e, t, {
+ value: i,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ })
+ : (e[t] = i);
+ return e;
+}
+var DEFAULT_TRIGGER = 'onClick';
+var CELL_NAME = '../cell/index';
+var FIELD_NAME = '../field/index';
+var defaultToolbar = {
+ title: '请选择',
+ cancelText: '取消',
+ confirmText: '确定'
+};
+var defaultEvents = {
+ onChange: function () {},
+ onConfirm: function () {},
+ onCancel: function () {},
+ onVisibleChange: function () {},
+ onValueChange: function () {}
+};
+var defaultPlatformProps = {
+ labelPropName: 'label',
+ format: function (e, t) {
+ return Array.isArray(e.displayValue) ? e.displayValue.join(',') : e.displayValue;
+ }
+};
+var defaultFieldNames = {
+ label: 'label',
+ value: 'value',
+ children: 'children'
+};
+function popupMixin() {
+ if (0 < arguments.length && void 0 !== arguments[0]) {
+ var i = arguments[0];
+ } else {
+ var i = '#wux-picker';
+ }
+ var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : defaultPlatformProps;
+ return {
+ data() {
+ return {
+ mounted: false,
+ popupVisible: false,
+ inputValue: []
+ };
+ },
+ mixins: [
+ (0, _eventsMixin.default)({
+ defaultEvents: defaultEvents
+ })
+ ],
+ props: {
+ toolbar: {
+ type: Object,
+ value: defaultToolbar
+ },
+ trigger: {
+ type: String,
+ value: DEFAULT_TRIGGER
+ },
+ defaultVisible: {
+ type: Boolean,
+ value: false
+ },
+ visible: {
+ type: Boolean,
+ value: false
+ },
+ controlled: {
+ type: Boolean,
+ value: false
+ },
+ disabled: {
+ type: Boolean,
+ value: false
+ }
+ },
+ methods: {
+ setVisibleState: function (t, e) {
+ var that = this;
+ var n = 1 < arguments.length && void 0 !== e ? e : function () {};
+ if (this.popupVisible !== t) {
+ var a = {
+ mounted: true,
+ inputValue: this.value,
+ popupVisible: t
+ };
+ this.setData(
+ t
+ ? a
+ : {
+ popupVisible: t
+ },
+ function () {
+ if (t && that.hasFieldDecorator) {
+ var e = that.getFieldElem();
+ if (e) {
+ e.changeValue(e.data.value);
+ }
+ }
+ n();
+ }
+ );
+ }
+ },
+ fireVisibleChange: function (e) {
+ if (this.popupVisible !== e) {
+ this.controlled || this.setVisibleState(e);
+ this.setScrollValue(void 0);
+ this.$emit('visibleChange', {
+ detail: {
+ visible: e
+ }
+ });
+ }
+ },
+ open: function () {
+ this.fireVisibleChange(true);
+ },
+ close: function (e) {
+ if ('function' == typeof e) {
+ var t = this.getPickerValue(this.scrollValue || this.inputValue);
+ e.call(this, this.formatPickerValue(t));
+ }
+ this.fireVisibleChange(false);
+ },
+ onClosed: function () {
+ this.picker = null;
+ this.setData({
+ mounted: false,
+ inputValue: null
+ });
+ },
+ onConfirm: function () {
+ var that = this;
+ this.close(function (e) {
+ that.$emit('change', {
+ detail: e
+ });
+ that.$emit('confirm', {
+ detail: e
+ });
+ });
+ },
+ onCancel: function () {
+ var that = this;
+ this.close(function (e) {
+ return that.$emit('cancel', {
+ detail: e
+ });
+ });
+ },
+ onValueChange: function (e) {
+ if (this.mounted) {
+ var t = e.detail.value;
+ this.cascade ? this.setCasecadeScrollValue(t) : this.setScrollValue(t);
+ this.updated(t, true);
+ this.$emit('valueChange', {
+ detail: this.formatPickerValue(e.detail)
+ });
+ }
+ },
+ getPickerValue: function (e) {
+ var t = 0 < arguments.length && void 0 !== e ? e : this.inputValue;
+ this.picker = this.picker || this.zpSelectComponent(i);
+ return this.picker && this.picker.getValue(t);
+ },
+ formatPickerValue: function (e) {
+ return _objectSpread({}, e, _defineProperty({}, t.labelPropName, t.format(e, this)));
+ },
+ getFieldElem: function () {
+ return (this.field = this.field || this.getRelationNodes(FIELD_NAME)[0]);
+ },
+ setChildProps: function () {
+ var that = this;
+ if (!this.disabled) {
+ var e = this.getRelationNodes(CELL_NAME);
+ var t = this.trigger;
+ var a = void 0 === t ? DEFAULT_TRIGGER : t;
+ if (0 < e.length) {
+ e.forEach(function (e) {
+ var t = e.data.inputEvents;
+ var i = e.data.oriInputEvents || _objectSpread({}, t);
+ t[a] = function () {
+ if (i && i[a]) {
+ i[a].apply(i, arguments);
+ }
+ that.onTriggerClick();
+ };
+ e.setData({
+ oriInputEvents: i,
+ inputEvents: t
+ });
+ });
+ }
+ }
+ },
+ onTriggerClick: function () {
+ this.fireVisibleChange(!this.popupVisible);
+ },
+ noop: function () {},
+ updated: function (e, t) {
+ (this.hasFieldDecorator && !t) ||
+ (this.inputValue !== e &&
+ this.setData({
+ inputValue: e
+ }));
+ },
+ setScrollValue: function (e) {
+ this.scrollValue = e;
+ },
+ setCasecadeScrollValue: function (e) {
+ if (e && this.scrollValue) {
+ var t = this.scrollValue.length;
+ if (t === e.length && this.scrollValue[t - 1] === e[t - 1]) {
+ return;
+ }
+ }
+ this.setScrollValue(e);
+ }
+ },
+ lifetimes: {
+ ready: function () {
+ var e = this;
+ var t = e.defaultVisible;
+ var i = e.visible;
+ var n = e.controlled;
+ var a = (e.value, n ? i : t);
+ if ('defaultFieldNames' in this) {
+ this.setData({
+ fieldNames: Object.assign({}, defaultFieldNames, this.defaultFieldNames)
+ });
+ }
+ this.mounted = true;
+ this.scrollValue = void 0;
+ this.setVisibleState(a);
+ this.setChildProps();
+ },
+ detached: function () {
+ this.mounted = false;
+ }
+ },
+ definitionFilter: function (e) {
+ var t;
+ Object.assign(
+ (e.relations = e.relations || {}),
+ (_defineProperty((t = {}), CELL_NAME, {
+ type: 'child',
+ observer: function () {
+ this.setChildProps();
+ }
+ }),
+ _defineProperty(t, FIELD_NAME, {
+ type: 'ancestor'
+ }),
+ t)
+ );
+ Object.assign((e.computed = e.computed || {}), {
+ classes: [
+ 'prefixCls',
+ function (e) {
+ return {
+ wrap: (0, _classNames3.default)(e),
+ toolbar: ''.concat(e, '__toolbar'),
+ inner: ''.concat(e, '__inner'),
+ cancel: (0, _classNames3.default)(''.concat(e, '__button'), _defineProperty({}, ''.concat(e, '__button--cancel'), true)),
+ confirm: (0, _classNames3.default)(''.concat(e, '__button'), _defineProperty({}, ''.concat(e, '__button--confirm'), true)),
+ hover: ''.concat(e, '__button--hover'),
+ title: ''.concat(e, '__title')
+ };
+ }
+ ]
+ });
+ Object.assign((e.observers = e.observers || {}), {
+ visible: function (e) {
+ if (this.controlled) {
+ this.setVisibleState(e);
+ }
+ },
+ value: function (e) {
+ this.updated(e);
+ }
+ });
+ }
+ };
+}
diff --git a/src/lib/wux-weapp/helpers/relationsBehavior.js b/src/lib/wux-weapp/helpers/relationsBehavior.js
new file mode 100644
index 0000000..693861a
--- /dev/null
+++ b/src/lib/wux-weapp/helpers/relationsBehavior.js
@@ -0,0 +1,93 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+var _isEmpty = _interopRequireDefault(require('./isEmpty'));
+var _debounce2 = _interopRequireDefault(require('./debounce'));
+function _interopRequireDefault(e) {
+ return e && e.__esModule
+ ? e
+ : {
+ default: e
+ };
+}
+function _defineProperty(e, t, n) {
+ t in e
+ ? Object.defineProperty(e, t, {
+ value: n,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ })
+ : (e[t] = n);
+ return e;
+}
+function bindFunc(e, t, n) {
+ var i = e[t];
+ e[t] = function (e) {
+ if (n) {
+ n.call(this, e, _defineProperty({}, t, true));
+ }
+ if (i) {
+ i.call(this, e);
+ }
+ };
+}
+var methods = ['linked', 'linkChanged', 'unlinked'];
+var extProps = ['observer'];
+var _default = {
+ lifetimes: {
+ created: function () {
+ this._debounce = null;
+ },
+ detached: function () {
+ if (this._debounce && this._debounce.cancel) {
+ this._debounce.cancel();
+ }
+ }
+ },
+ definitionFilter: function (e) {
+ var n = e.relations;
+ if (!(0, _isEmpty.default)(n)) {
+ var t = function (e) {
+ var t = n[e];
+ methods.forEach(function (e) {
+ return bindFunc(t, e, t.observer);
+ });
+ extProps.forEach(function (e) {
+ return delete t[e];
+ });
+ };
+ for (var i in n) {
+ t(i);
+ }
+ }
+ Object.assign((e.methods = e.methods || {}), {
+ getRelationsName: function (e) {
+ if (0 < arguments.length && void 0 !== e) {
+ var t = e;
+ } else {
+ var t = ['parent', 'child', 'ancestor', 'descendant'];
+ }
+ return Object.keys(n || {})
+ .map(function (e) {
+ return n[e] && t.includes(n[e].type) ? e : null;
+ })
+ .filter(function (e) {
+ return !!e;
+ });
+ },
+ debounce: function (e, t, n) {
+ if (1 < arguments.length && void 0 !== t) {
+ var i = t;
+ } else {
+ var i = 0;
+ }
+ var r = 2 < arguments.length && void 0 !== n && n;
+ return (this._debounce = this._debounce || (0, _debounce2.default)(e.bind(this), i, r)).call(this);
+ }
+ });
+ }
+};
+exports.default = _default;
diff --git a/src/lib/wux-weapp/helpers/safeAreaBehavior.js b/src/lib/wux-weapp/helpers/safeAreaBehavior.js
new file mode 100644
index 0000000..380fa74
--- /dev/null
+++ b/src/lib/wux-weapp/helpers/safeAreaBehavior.js
@@ -0,0 +1,71 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+var _checkIPhoneX = require('./checkIPhoneX');
+function _defineProperty(e, t, o) {
+ if (t in e) {
+ Object.defineProperty(e, t, {
+ value: o,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ e[t] = o;
+ }
+ return e;
+}
+function _typeof(e) {
+ return (_typeof =
+ 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator
+ ? function (e) {
+ return typeof e;
+ }
+ : function (e) {
+ return e && 'function' == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? 'symbol' : typeof e;
+ })(e);
+}
+var defaultSafeArea = {
+ top: false,
+ bottom: false
+};
+var setSafeArea = function (e) {
+ return 'boolean' == typeof e
+ ? Object.assign({}, defaultSafeArea, {
+ top: e,
+ bottom: e
+ })
+ : null !== e && 'object' === _typeof(e)
+ ? Object.assign({}, defaultSafeArea)
+ : 'string' == typeof e
+ ? Object.assign({}, defaultSafeArea, _defineProperty({}, e, true))
+ : defaultSafeArea;
+};
+var _default = {
+ props: {
+ safeArea: {
+ type: [Boolean, String, Object],
+ optionalTypes: [Boolean, String, Object],
+ value: false
+ }
+ },
+ watch: {
+ safeArea: function (e) {
+ this.setData({
+ safeAreaConfig: setSafeArea(e)
+ });
+ }
+ },
+ definitionFilter: function (e) {
+ var t = ((0, _checkIPhoneX.getSystemInfo)() || {}).statusBarHeight;
+ var o = (0, _checkIPhoneX.checkIPhoneX)();
+ Object.assign((e.data = e.data || {}), {
+ safeAreaConfig: defaultSafeArea,
+ statusBarHeight: t,
+ isIPhoneX: o
+ });
+ }
+};
+exports.default = _default;
diff --git a/src/lib/wux-weapp/helpers/safeSetDataBehavior.js b/src/lib/wux-weapp/helpers/safeSetDataBehavior.js
new file mode 100644
index 0000000..899a0d5
--- /dev/null
+++ b/src/lib/wux-weapp/helpers/safeSetDataBehavior.js
@@ -0,0 +1,48 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+var _default = {
+ lifetimes: {
+ created: function () {
+ this.nextCallback = null;
+ },
+ detached: function () {
+ this.cancelNextCallback();
+ }
+ },
+ methods: {
+ safeSetData: function (t, a) {
+ var that = this;
+ this.pendingData = Object.assign({}, this, t);
+ a = this.setNextCallback(a);
+ this.setData(t, function () {
+ that.pendingData = null;
+ a();
+ });
+ },
+ setNextCallback: function (a) {
+ var that = this;
+ var l = true;
+ this.nextCallback = function (t) {
+ if (l) {
+ l = false;
+ that.nextCallback = null;
+ a.call(that, t);
+ }
+ };
+ this.nextCallback.cancel = function () {
+ l = false;
+ };
+ return this.nextCallback;
+ },
+ cancelNextCallback: function () {
+ if (null !== this.nextCallback) {
+ this.nextCallback.cancel();
+ this.nextCallback = null;
+ }
+ }
+ }
+};
+exports.default = _default;
diff --git a/src/lib/wux-weapp/helpers/shallowEqual.js b/src/lib/wux-weapp/helpers/shallowEqual.js
new file mode 100644
index 0000000..324ba72
--- /dev/null
+++ b/src/lib/wux-weapp/helpers/shallowEqual.js
@@ -0,0 +1,40 @@
+'use strict';
+function _typeof(t) {
+ return (_typeof =
+ 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator
+ ? function (t) {
+ return typeof t;
+ }
+ : function (t) {
+ return t && 'function' == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? 'symbol' : typeof t;
+ })(t);
+}
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+var hasOwnProperty = Object.prototype.hasOwnProperty;
+function is(t, e) {
+ return t === e ? 0 !== t || 0 !== e || 1 / t == 1 / e : t != t && e != e;
+}
+function shallowEqual(t, e) {
+ if (is(t, e)) {
+ return true;
+ }
+ if ('object' !== _typeof(t) || null === t || 'object' !== _typeof(e) || null === e) {
+ return false;
+ }
+ var o = Object.keys(t);
+ var r = Object.keys(e);
+ if (o.length !== r.length) {
+ return false;
+ }
+ for (var n = 0; n < o.length; n++) {
+ if (!hasOwnProperty.call(e, o[n]) || !is(t[o[n]], e[o[n]])) {
+ return false;
+ }
+ }
+ return true;
+}
+var _default = shallowEqual;
+exports.default = _default;
diff --git a/src/lib/wux-weapp/helpers/styleToCssString.js b/src/lib/wux-weapp/helpers/styleToCssString.js
new file mode 100644
index 0000000..cd02f96
--- /dev/null
+++ b/src/lib/wux-weapp/helpers/styleToCssString.js
@@ -0,0 +1,83 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+var isUnitlessNumber = {
+ boxFlex: !(exports.default = void 0),
+ boxFlexGroup: true,
+ columnCount: true,
+ flex: true,
+ flexGrow: true,
+ flexPositive: true,
+ flexShrink: true,
+ flexNegative: true,
+ fontWeight: true,
+ lineClamp: true,
+ lineHeight: true,
+ opacity: true,
+ order: true,
+ orphans: true,
+ widows: true,
+ zIndex: true,
+ zoom: true,
+ fillOpacity: true,
+ strokeDashoffset: true,
+ strokeOpacity: true,
+ strokeWidth: true
+};
+function prefixKey(e, t) {
+ return e + t.charAt(0).toUpperCase() + t.substring(1);
+}
+var prefixes = ['Webkit', 'ms', 'Moz', 'O'];
+Object.keys(isUnitlessNumber).forEach(function (t) {
+ prefixes.forEach(function (e) {
+ isUnitlessNumber[prefixKey(e, t)] = isUnitlessNumber[t];
+ });
+});
+var msPattern = /^ms-/;
+var _uppercasePattern = /([A-Z])/g;
+function hyphenate(e) {
+ return e.replace(_uppercasePattern, '-$1').toLowerCase();
+}
+function hyphenateStyleName(e) {
+ return hyphenate(e).replace(msPattern, '-ms-');
+}
+var isArray = Array.isArray;
+var keys = Object.keys;
+var unquotedContentValueRegex = /^(normal|none|(\b(url\([^)]*\)|chapter_counter|attr\([^)]*\)|(no-)?(open|close)-quote|inherit)((\b\s*)|$|\s+))+)$/;
+function buildRule(e, t) {
+ if (isUnitlessNumber[e] || 'number' != typeof t) {
+ 'content' !== e || unquotedContentValueRegex.test(t) || (t = "'" + t.replace(/'/g, "\\'") + "'");
+ } else {
+ t += 'px';
+ }
+ return hyphenateStyleName(e) + ': ' + t + '; ';
+}
+function styleToCssString(e) {
+ var t = '';
+ if ('string' == typeof e) {
+ return ';' === (e = e.trim()).slice(-1) ? ''.concat(e, ' ') : ''.concat(e, '; ');
+ }
+ if (!e || 0 === keys(e).length) {
+ return t;
+ }
+ for (r = keys(e), n = 0, s = r.length, void 0; n < s; n++) {
+ var r;
+ var n;
+ var s;
+ var o = r[n];
+ var i = e[o];
+ if (isArray(i)) {
+ for (a = 0, u = i.length, void 0; a < u; a++) {
+ var a;
+ var u;
+ t += buildRule(o, i[a]);
+ }
+ } else {
+ t += buildRule(o, i);
+ }
+ }
+ return t;
+}
+var _default = styleToCssString;
+exports.default = _default;
diff --git a/src/lib/wux-weapp/index.js b/src/lib/wux-weapp/index.js
new file mode 100644
index 0000000..3015d1a
--- /dev/null
+++ b/src/lib/wux-weapp/index.js
@@ -0,0 +1,19 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.$wuxBackdrop = exports.version = exports.getCtx = void 0;
+var getCtx = function (e, t) {
+ var r = (1 < arguments.length && void 0 !== t ? t : getCurrentPages()[getCurrentPages().length - 1].zpSelectComponent)(e);
+ if (!r) {
+ throw new Error('无法找到对应的组件,请按文档说明使用组件');
+ }
+ return r;
+};
+exports.getCtx = getCtx;
+var version = '3.8.9';
+exports.version = version;
+var $wuxBackdrop = function (e, t) {
+ return getCtx(0 < arguments.length && void 0 !== e ? e : '#wux-backdrop', 1 < arguments.length ? t : void 0);
+};
+exports.$wuxBackdrop = $wuxBackdrop;
diff --git a/src/lib/wux-weapp/popup/index.vue b/src/lib/wux-weapp/popup/index.vue
new file mode 100644
index 0000000..5af2513
--- /dev/null
+++ b/src/lib/wux-weapp/popup/index.vue
@@ -0,0 +1,359 @@
+
+
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+ {{ content }}
+
+
+
+ {{ extra }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/wux-weapp/styles/index.css b/src/lib/wux-weapp/styles/index.css
new file mode 100644
index 0000000..f90ac0d
--- /dev/null
+++ b/src/lib/wux-weapp/styles/index.css
@@ -0,0 +1,583 @@
+.wux-text--left {
+ text-align: left !important;
+}
+.wux-text--right {
+ text-align: right !important;
+}
+.wux-text--center {
+ text-align: center !important;
+}
+.wux-text--justify {
+ text-align: justify !important;
+}
+.wux-text--nowrap {
+ text-align: nowrap !important;
+}
+.wux-text--lowercase {
+ text-transform: lowercase !important;
+}
+.wux-text--uppercase {
+ text-transform: uppercase !important;
+}
+.wux-text--capitalize {
+ text-transform: capitalize !important;
+}
+.wux-light {
+ color: #fff !important;
+}
+.wux-light--bg {
+ background-color: #fff !important;
+}
+.wux-light--border {
+ border-color: #fff !important;
+}
+.wux-stable {
+ color: #f8f8f8 !important;
+}
+.wux-stable--bg {
+ background-color: #f8f8f8 !important;
+}
+.wux-stable--border {
+ border-color: #f8f8f8 !important;
+}
+.wux-positive {
+ color: #387ef5 !important;
+}
+.wux-positive--bg {
+ background-color: #387ef5 !important;
+}
+.wux-positive--border {
+ border-color: #387ef5 !important;
+}
+.wux-calm {
+ color: #11c1f3 !important;
+}
+.wux-calm--bg {
+ background-color: #11c1f3 !important;
+}
+.wux-calm--border {
+ border-color: #11c1f3 !important;
+}
+.wux-balanced {
+ color: #33cd5f !important;
+}
+.wux-balanced--bg {
+ background-color: #33cd5f !important;
+}
+.wux-balanced--border {
+ border-color: #33cd5f !important;
+}
+.wux-energized {
+ color: #ffc900 !important;
+}
+.wux-energized--bg {
+ background-color: #ffc900 !important;
+}
+.wux-energized--border {
+ border-color: #ffc900 !important;
+}
+.wux-assertive {
+ color: #ef473a !important;
+}
+.wux-assertive--bg {
+ background-color: #ef473a !important;
+}
+.wux-assertive--border {
+ border-color: #ef473a !important;
+}
+.wux-royal {
+ color: #886aea !important;
+}
+.wux-royal--bg {
+ background-color: #886aea !important;
+}
+.wux-royal--border {
+ border-color: #886aea !important;
+}
+.wux-dark {
+ color: #444 !important;
+}
+.wux-dark--bg {
+ background-color: #444 !important;
+}
+.wux-dark--border {
+ border-color: #444 !important;
+}
+.wux-m--30,
+.wux-margin--30 {
+ margin: 60rpx !important;
+}
+.wux-margin-top--30,
+.wux-mt--30 {
+ margin-top: 60rpx !important;
+}
+.wux-margin-right--30,
+.wux-mr--30 {
+ margin-right: 60rpx !important;
+}
+.wux-margin-bottom--30,
+.wux-mb--30 {
+ margin-bottom: 60rpx !important;
+}
+.wux-margin-left--30,
+.wux-ml--30 {
+ margin-left: 60rpx !important;
+}
+.wux-margin-vertical--30,
+.wux-mv--30 {
+ margin: 60rpx 0 !important;
+}
+.wux-margin-horizontal--30,
+.wux-mh--30 {
+ margin: 0 60rpx !important;
+}
+.wux-p--30,
+.wux-padding--30 {
+ padding: 60rpx !important;
+}
+.wux-padding-top--30,
+.wux-pt--30 {
+ padding-top: 60rpx !important;
+}
+.wux-padding-right--30,
+.wux-pr--30 {
+ padding-right: 60rpx !important;
+}
+.wux-padding-bottom--30,
+.wux-pb--30 {
+ padding-bottom: 60rpx !important;
+}
+.wux-padding-left--30,
+.wux-pl--30 {
+ padding-left: 60rpx !important;
+}
+.wux-padding-vertical--30,
+.wux-pv--30 {
+ padding: 60rpx 0 !important;
+}
+.wux-padding-horizontal--30,
+.wux-ph--30 {
+ padding: 0 60rpx !important;
+}
+.wux-m--25,
+.wux-margin--25 {
+ margin: 50rpx !important;
+}
+.wux-margin-top--25,
+.wux-mt--25 {
+ margin-top: 50rpx !important;
+}
+.wux-margin-right--25,
+.wux-mr--25 {
+ margin-right: 50rpx !important;
+}
+.wux-margin-bottom--25,
+.wux-mb--25 {
+ margin-bottom: 50rpx !important;
+}
+.wux-margin-left--25,
+.wux-ml--25 {
+ margin-left: 50rpx !important;
+}
+.wux-margin-vertical--25,
+.wux-mv--25 {
+ margin: 50rpx 0 !important;
+}
+.wux-margin-horizontal--25,
+.wux-mh--25 {
+ margin: 0 50rpx !important;
+}
+.wux-p--25,
+.wux-padding--25 {
+ padding: 50rpx !important;
+}
+.wux-padding-top--25,
+.wux-pt--25 {
+ padding-top: 50rpx !important;
+}
+.wux-padding-right--25,
+.wux-pr--25 {
+ padding-right: 50rpx !important;
+}
+.wux-padding-bottom--25,
+.wux-pb--25 {
+ padding-bottom: 50rpx !important;
+}
+.wux-padding-left--25,
+.wux-pl--25 {
+ padding-left: 50rpx !important;
+}
+.wux-padding-vertical--25,
+.wux-pv--25 {
+ padding: 50rpx 0 !important;
+}
+.wux-padding-horizontal--25,
+.wux-ph--25 {
+ padding: 0 50rpx !important;
+}
+.wux-m--20,
+.wux-margin--20 {
+ margin: 40rpx !important;
+}
+.wux-margin-top--20,
+.wux-mt--20 {
+ margin-top: 40rpx !important;
+}
+.wux-margin-right--20,
+.wux-mr--20 {
+ margin-right: 40rpx !important;
+}
+.wux-margin-bottom--20,
+.wux-mb--20 {
+ margin-bottom: 40rpx !important;
+}
+.wux-margin-left--20,
+.wux-ml--20 {
+ margin-left: 40rpx !important;
+}
+.wux-margin-vertical--20,
+.wux-mv--20 {
+ margin: 40rpx 0 !important;
+}
+.wux-margin-horizontal--20,
+.wux-mh--20 {
+ margin: 0 40rpx !important;
+}
+.wux-p--20,
+.wux-padding--20 {
+ padding: 40rpx !important;
+}
+.wux-padding-top--20,
+.wux-pt--20 {
+ padding-top: 40rpx !important;
+}
+.wux-padding-right--20,
+.wux-pr--20 {
+ padding-right: 40rpx !important;
+}
+.wux-padding-bottom--20,
+.wux-pb--20 {
+ padding-bottom: 40rpx !important;
+}
+.wux-padding-left--20,
+.wux-pl--20 {
+ padding-left: 40rpx !important;
+}
+.wux-padding-vertical--20,
+.wux-pv--20 {
+ padding: 40rpx 0 !important;
+}
+.wux-padding-horizontal--20,
+.wux-ph--20 {
+ padding: 0 40rpx !important;
+}
+.wux-m--15,
+.wux-margin--15 {
+ margin: 30rpx !important;
+}
+.wux-margin-top--15,
+.wux-mt--15 {
+ margin-top: 30rpx !important;
+}
+.wux-margin-right--15,
+.wux-mr--15 {
+ margin-right: 30rpx !important;
+}
+.wux-margin-bottom--15,
+.wux-mb--15 {
+ margin-bottom: 30rpx !important;
+}
+.wux-margin-left--15,
+.wux-ml--15 {
+ margin-left: 30rpx !important;
+}
+.wux-margin-vertical--15,
+.wux-mv--15 {
+ margin: 30rpx 0 !important;
+}
+.wux-margin-horizontal--15,
+.wux-mh--15 {
+ margin: 0 30rpx !important;
+}
+.wux-p--15,
+.wux-padding--15 {
+ padding: 30rpx !important;
+}
+.wux-padding-top--15,
+.wux-pt--15 {
+ padding-top: 30rpx !important;
+}
+.wux-padding-right--15,
+.wux-pr--15 {
+ padding-right: 30rpx !important;
+}
+.wux-padding-bottom--15,
+.wux-pb--15 {
+ padding-bottom: 30rpx !important;
+}
+.wux-padding-left--15,
+.wux-pl--15 {
+ padding-left: 30rpx !important;
+}
+.wux-padding-vertical--15,
+.wux-pv--15 {
+ padding: 30rpx 0 !important;
+}
+.wux-padding-horizontal--15,
+.wux-ph--15 {
+ padding: 0 30rpx !important;
+}
+.wux-m--10,
+.wux-margin--10 {
+ margin: 20rpx !important;
+}
+.wux-margin-top--10,
+.wux-mt--10 {
+ margin-top: 20rpx !important;
+}
+.wux-margin-right--10,
+.wux-mr--10 {
+ margin-right: 20rpx !important;
+}
+.wux-margin-bottom--10,
+.wux-mb--10 {
+ margin-bottom: 20rpx !important;
+}
+.wux-margin-left--10,
+.wux-ml--10 {
+ margin-left: 20rpx !important;
+}
+.wux-margin-vertical--10,
+.wux-mv--10 {
+ margin: 20rpx 0 !important;
+}
+.wux-margin-horizontal--10,
+.wux-mh--10 {
+ margin: 0 20rpx !important;
+}
+.wux-p--10,
+.wux-padding--10 {
+ padding: 20rpx !important;
+}
+.wux-padding-top--10,
+.wux-pt--10 {
+ padding-top: 20rpx !important;
+}
+.wux-padding-right--10,
+.wux-pr--10 {
+ padding-right: 20rpx !important;
+}
+.wux-padding-bottom--10,
+.wux-pb--10 {
+ padding-bottom: 20rpx !important;
+}
+.wux-padding-left--10,
+.wux-pl--10 {
+ padding-left: 20rpx !important;
+}
+.wux-padding-vertical--10,
+.wux-pv--10 {
+ padding: 20rpx 0 !important;
+}
+.wux-padding-horizontal--10,
+.wux-ph--10 {
+ padding: 0 20rpx !important;
+}
+.wux-m--5,
+.wux-margin--5 {
+ margin: 10rpx !important;
+}
+.wux-margin-top--5,
+.wux-mt--5 {
+ margin-top: 10rpx !important;
+}
+.wux-margin-right--5,
+.wux-mr--5 {
+ margin-right: 10rpx !important;
+}
+.wux-margin-bottom--5,
+.wux-mb--5 {
+ margin-bottom: 10rpx !important;
+}
+.wux-margin-left--5,
+.wux-ml--5 {
+ margin-left: 10rpx !important;
+}
+.wux-margin-vertical--5,
+.wux-mv--5 {
+ margin: 10rpx 0 !important;
+}
+.wux-margin-horizontal--5,
+.wux-mh--5 {
+ margin: 0 10rpx !important;
+}
+.wux-p--5,
+.wux-padding--5 {
+ padding: 10rpx !important;
+}
+.wux-padding-top--5,
+.wux-pt--5 {
+ padding-top: 10rpx !important;
+}
+.wux-padding-right--5,
+.wux-pr--5 {
+ padding-right: 10rpx !important;
+}
+.wux-padding-bottom--5,
+.wux-pb--5 {
+ padding-bottom: 10rpx !important;
+}
+.wux-padding-left--5,
+.wux-pl--5 {
+ padding-left: 10rpx !important;
+}
+.wux-padding-vertical--5,
+.wux-pv--5 {
+ padding: 10rpx 0 !important;
+}
+.wux-padding-horizontal--5,
+.wux-ph--5 {
+ padding: 0 10rpx !important;
+}
+.wux-m--0,
+.wux-margin--0 {
+ margin: 0rpx !important;
+}
+.wux-margin-top--0,
+.wux-mt--0 {
+ margin-top: 0rpx !important;
+}
+.wux-margin-right--0,
+.wux-mr--0 {
+ margin-right: 0rpx !important;
+}
+.wux-margin-bottom--0,
+.wux-mb--0 {
+ margin-bottom: 0rpx !important;
+}
+.wux-margin-left--0,
+.wux-ml--0 {
+ margin-left: 0rpx !important;
+}
+.wux-margin-vertical--0,
+.wux-mv--0 {
+ margin: 0rpx 0 !important;
+}
+.wux-margin-horizontal--0,
+.wux-mh--0 {
+ margin: 0 0rpx !important;
+}
+.wux-p--0,
+.wux-padding--0 {
+ padding: 0rpx !important;
+}
+.wux-padding-top--0,
+.wux-pt--0 {
+ padding-top: 0rpx !important;
+}
+.wux-padding-right--0,
+.wux-pr--0 {
+ padding-right: 0rpx !important;
+}
+.wux-padding-bottom--0,
+.wux-pb--0 {
+ padding-bottom: 0rpx !important;
+}
+.wux-padding-left--0,
+.wux-pl--0 {
+ padding-left: 0rpx !important;
+}
+.wux-padding-vertical--0,
+.wux-pv--0 {
+ padding: 0rpx 0 !important;
+}
+.wux-padding-horizontal--0,
+.wux-ph--0 {
+ padding: 0 0rpx !important;
+}
+.wux-clearfix::after,
+.wux-clearfix::before {
+ display: table;
+ content: ' ';
+}
+.wux-clearfix::after {
+ clear: both;
+}
+.wux-pull-right {
+ float: right !important;
+}
+.wux-pull-left {
+ float: left !important;
+}
+.wux-ellipsis {
+ width: auto;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ word-wrap: normal;
+}
+.wux-ellipsis--l2 {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ -webkit-line-clamp: 2;
+ -webkit-box-orient: vertical;
+}
+.wux-ellipsis--l3 {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ -webkit-line-clamp: 3;
+ -webkit-box-orient: vertical;
+}
+.wux-hairline,
+.wux-hairline--bottom,
+.wux-hairline--horizontal,
+.wux-hairline--left,
+.wux-hairline--right,
+.wux-hairline--surrounded,
+.wux-hairline--top,
+.wux-hairline--vertical {
+ position: relative;
+}
+.wux-hairline--bottom::after,
+.wux-hairline--horizontal::after,
+.wux-hairline--left::after,
+.wux-hairline--right::after,
+.wux-hairline--surrounded::after,
+.wux-hairline--top::after,
+.wux-hairline--vertical::after,
+.wux-hairline::after {
+ content: ' ';
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 200%;
+ height: 200%;
+ transform: scale(0.5);
+ transform-origin: 0 0;
+ pointer-events: none;
+ box-sizing: border-box;
+ border: 0 solid #d9d9d9;
+}
+.wux-hairline--top::after {
+ border-top-width: 1px;
+}
+.wux-hairline--right::after {
+ border-right-width: 1px;
+}
+.wux-hairline--bottom::after {
+ border-bottom-width: 1px;
+}
+.wux-hairline--left::after {
+ border-left-width: 1px;
+}
+.wux-hairline--horizontal::after {
+ border-width: 1px 0;
+}
+.wux-hairline--vertical::after {
+ border-width: 0 1px;
+}
+.wux-hairline--surrounded::after {
+ border-width: 1px;
+}
diff --git a/src/lib/wux-weapp/说明.md b/src/lib/wux-weapp/说明.md
new file mode 100644
index 0000000..f8ca0f9
--- /dev/null
+++ b/src/lib/wux-weapp/说明.md
@@ -0,0 +1 @@
+# PS:注意,cascader 存在源码级别更改,按业务要求改造过
diff --git a/src/lib/wx-ai-im/WulAiSDK-1.1.3.js b/src/lib/wx-ai-im/WulAiSDK-1.1.3.js
new file mode 100644
index 0000000..bd5ac8e
--- /dev/null
+++ b/src/lib/wx-ai-im/WulAiSDK-1.1.3.js
@@ -0,0 +1,8799 @@
+'use strict';
+/**
+ * version: 1.1.0
+ * feat(客户: 来也):
+ * 增加多 cmp 嗅探逻辑
+ */
+module.exports = function (wx) {
+ var Modules = {
+ DeleteMsgInput: function () {
+ var a = {};
+ this.setType = function (b) {
+ a.type = b;
+ };
+ this.setConversationId = function (b) {
+ a.conversationId = b;
+ };
+ this.setMsgs = function (b) {
+ a.msgs = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ DeleteMsg: function () {
+ var a = {};
+ this.setMsgId = function (b) {
+ a.msgId = b;
+ };
+ this.setMsgDataTime = function (b) {
+ a.msgDataTime = b;
+ };
+ this.setDirect = function (b) {
+ a.direct = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ DeleteMsgOutput: function () {
+ var a = {};
+ this.setNothing = function (b) {
+ a.nothing = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ SearchMpInput: function () {
+ var a = {};
+ this.setType = function (b) {
+ a.type = b;
+ };
+ this.setId = function (b) {
+ a.id = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ SearchMpOutput: function () {
+ var a = {};
+ this.setNothing = function (b) {
+ a.nothing = b;
+ };
+ this.setInfo = function (b) {
+ a.info = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ MpInfo: function () {
+ var a = {};
+ this.setMpid = function (b) {
+ a.mpid = b;
+ };
+ this.setName = function (b) {
+ a.name = b;
+ };
+ this.setType = function (b) {
+ a.type = b;
+ };
+ this.setTime = function (b) {
+ a.time = b;
+ };
+ this.setPortraitUri = function (b) {
+ a.portraitUrl = b;
+ };
+ this.setExtra = function (b) {
+ a.extra = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ PullMpInput: function () {
+ var a = {};
+ this.setMpid = function (b) {
+ a.mpid = b;
+ };
+ this.setTime = function (b) {
+ a.time = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ PullMpOutput: function () {
+ var a = {};
+ this.setStatus = function (b) {
+ a.status = b;
+ };
+ this.setInfo = function (b) {
+ a.info = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ MPFollowInput: function () {
+ var a = {};
+ this.setId = function (b) {
+ a.id = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ MPFollowOutput: function () {
+ var a = {};
+ this.setNothing = function (b) {
+ a.nothing = b;
+ };
+ this.setInfo = function (b) {
+ a.info = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ NotifyMsg: function () {
+ var a = {};
+ this.setType = function (b) {
+ a.type = b;
+ };
+ this.setTime = function (b) {
+ a.time = b;
+ };
+ this.setChrmId = function (b) {
+ a.chrmId = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ SyncRequestMsg: function () {
+ var a = {};
+ this.setSyncTime = function (b) {
+ a.syncTime = b || 0;
+ };
+ this.setIspolling = function (b) {
+ a.ispolling = !!b;
+ };
+ this.setIsweb = function (b) {
+ a.isweb = !!b;
+ };
+ this.setIsPullSend = function (b) {
+ a.isPullSend = !!b;
+ };
+ this.setSendBoxSyncTime = function (b) {
+ a.sendBoxSyncTime = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ UpStreamMessage: function () {
+ var a = {};
+ this.setSessionId = function (b) {
+ a.sessionId = b;
+ };
+ this.setClassname = function (b) {
+ a.classname = b;
+ };
+ this.setContent = function (b) {
+ if (b) a.content = b;
+ };
+ this.setPushText = function (b) {
+ a.pushText = b;
+ };
+ this.setUserId = function (b) {
+ a.userId = b;
+ };
+ this.setAppData = function (b) {
+ a.appData = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ DownStreamMessages: function () {
+ var a = {};
+ this.setList = function (b) {
+ a.list = b;
+ };
+ this.setSyncTime = function (b) {
+ a.syncTime = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ DownStreamMessage: function () {
+ var a = {};
+ this.setFromUserId = function (b) {
+ a.fromUserId = b;
+ };
+ this.setType = function (b) {
+ a.type = b;
+ };
+ this.setGroupId = function (b) {
+ a.groupId = b;
+ };
+ this.setClassname = function (b) {
+ a.classname = b;
+ };
+ this.setContent = function (b) {
+ if (b) a.content = b;
+ };
+ this.setDataTime = function (b) {
+ a.dataTime = b;
+ };
+ this.setStatus = function (b) {
+ a.status = b;
+ };
+ this.setMsgId = function (b) {
+ a.msgId = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ CreateDiscussionInput: function () {
+ var a = {};
+ this.setName = function (b) {
+ a.name = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ CreateDiscussionOutput: function () {
+ var a = {};
+ this.setId = function (b) {
+ a.id = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ ChannelInvitationInput: function () {
+ var a = {};
+ this.setUsers = function (b) {
+ a.users = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ LeaveChannelInput: function () {
+ var a = {};
+ this.setNothing = function (b) {
+ a.nothing = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ QueryChatroomInfoInput: function () {
+ var a = {};
+ this.setCount = function (b) {
+ a.count = b;
+ };
+ this.setOrder = function (b) {
+ a.order = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ QueryChatroomInfoOutput: function () {
+ var a = {};
+ this.setUserTotalNums = function (b) {
+ a.userTotalNums = b;
+ };
+ this.setUserInfos = function (b) {
+ a.userInfos = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ ChannelEvictionInput: function () {
+ var a = {};
+ this.setUser = function (b) {
+ a.user = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ RenameChannelInput: function () {
+ var a = {};
+ this.setName = function (b) {
+ a.name = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ ChannelInfoInput: function () {
+ var a = {};
+ this.setNothing = function (b) {
+ a.nothing = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ ChannelInfoOutput: function () {
+ var a = {};
+ this.setType = function (b) {
+ a.type = b;
+ };
+ this.setChannelId = function (b) {
+ a.channelId = b;
+ };
+ this.setChannelName = function (b) {
+ a.channelName = b;
+ };
+ this.setAdminUserId = function (b) {
+ a.adminUserId = b;
+ };
+ this.setFirstTenUserIds = function (b) {
+ a.firstTenUserIds = b;
+ };
+ this.setOpenStatus = function (b) {
+ a.openStatus = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ ChannelInfosInput: function () {
+ var a = {};
+ this.setPage = function (b) {
+ a.page = b;
+ };
+ this.setNumber = function (b) {
+ a.number = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ ChannelInfosOutput: function () {
+ var a = {};
+ this.setChannels = function (b) {
+ a.channels = b;
+ };
+ this.setTotal = function (b) {
+ a.total = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ MemberInfo: function () {
+ var a = {};
+ this.setUserId = function (b) {
+ a.userId = b;
+ };
+ this.setUserName = function (b) {
+ a.userName = b;
+ };
+ this.setUserPortrait = function (b) {
+ a.userPortrait = b;
+ };
+ this.setExtension = function (b) {
+ a.extension = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ GroupMembersInput: function () {
+ var a = {};
+ this.setPage = function (b) {
+ a.page = b;
+ };
+ this.setNumber = function (b) {
+ a.number = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ GroupMembersOutput: function () {
+ var a = {};
+ this.setMembers = function (b) {
+ a.members = b;
+ };
+ this.setTotal = function (b) {
+ a.total = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ GetUserInfoInput: function () {
+ var a = {};
+ this.setNothing = function (b) {
+ a.nothing = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ GetUserInfoOutput: function () {
+ var a = {};
+ this.setUserId = function (b) {
+ a.userId = b;
+ };
+ this.setUserName = function (b) {
+ a.userName = b;
+ };
+ this.setUserPortrait = function (b) {
+ a.userPortrait = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ GetSessionIdInput: function () {
+ var a = {};
+ this.setNothing = function (b) {
+ a.nothing = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ GetSessionIdOutput: function () {
+ var a = {};
+ this.setSessionId = function (b) {
+ a.sessionId = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ GetQNupTokenInput: function () {
+ var a = {};
+ this.setType = function (b) {
+ a.type = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ GetQNupTokenOutput: function () {
+ var a = {};
+ this.setDeadline = function (b) {
+ a.deadline = b;
+ };
+ this.setToken = function (b) {
+ a.token = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ GetQNdownloadUrlInput: function () {
+ var a = {};
+ this.setType = function (b) {
+ a.type = b;
+ };
+ this.setKey = function (b) {
+ a.key = b;
+ };
+ this.setFileName = function (b) {
+ a.fileName = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ GetQNdownloadUrlOutput: function () {
+ var a = {};
+ this.setDownloadUrl = function (b) {
+ a.downloadUrl = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ Add2BlackListInput: function () {
+ var a = {};
+ this.setUserId = function (b) {
+ a.userId = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ RemoveFromBlackListInput: function () {
+ var a = {};
+ this.setUserId = function (b) {
+ a.userId = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ QueryBlackListInput: function () {
+ var a = {};
+ this.setNothing = function (b) {
+ a.nothing = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ QueryBlackListOutput: function () {
+ var a = {};
+ this.setUserIds = function (b) {
+ a.userIds = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ BlackListStatusInput: function () {
+ var a = {};
+ this.setUserId = function (b) {
+ a.userId = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ BlockPushInput: function () {
+ var a = {};
+ this.setBlockeeId = function (b) {
+ a.blockeeId = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ ModifyPermissionInput: function () {
+ var a = {};
+ this.setOpenStatus = function (b) {
+ a.openStatus = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ GroupInput: function () {
+ var a = {};
+ this.setGroupInfo = function (b) {
+ for (var i = 0, arr = []; i < b.length; i++) {
+ arr.push({
+ id: b[i].getContent().id,
+ name: b[i].getContent().name
+ });
+ }
+ a.groupInfo = arr;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ GroupOutput: function () {
+ var a = {};
+ this.setNothing = function (b) {
+ a.nothing = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ GroupInfo: function () {
+ var a = {};
+ this.setId = function (b) {
+ a.id = b;
+ };
+ this.setName = function (b) {
+ a.name = b;
+ };
+ this.getContent = function () {
+ return a;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ GroupHashInput: function () {
+ var a = {};
+ this.setUserId = function (b) {
+ a.userId = b;
+ };
+ this.setGroupHashCode = function (b) {
+ a.groupHashCode = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ GroupHashOutput: function () {
+ var a = {};
+ this.setResult = function (b) {
+ a.result = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ ChrmInput: function () {
+ var a = {};
+ this.setNothing = function (b) {
+ a.nothing = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ ChrmOutput: function () {
+ var a = {};
+ this.setNothing = function (b) {
+ a.nothing = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ ChrmPullMsg: function () {
+ var a = {};
+ this.setSyncTime = function (b) {
+ a.syncTime = b;
+ };
+ this.setCount = function (b) {
+ a.count = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ RelationsInput: function () {
+ var a = {};
+ this.setType = function (b) {
+ a.type = b;
+ };
+ this.setMsg = function (b) {
+ a.msg = b;
+ };
+ this.setCount = function (b) {
+ a.count = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ RelationsOutput: function () {
+ var a = {};
+ this.setInfo = function (b) {
+ a.info = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ RelationInfo: function () {
+ var a = {};
+ this.setType = function (b) {
+ a.type = b;
+ };
+ this.setUserId = function (b) {
+ a.userId = b;
+ };
+ this.setMsg = function (b) {
+ a.msg = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ HistoryMessageInput: function () {
+ var a = {};
+ this.setTargetId = function (b) {
+ a.targetId = b;
+ };
+ this.setDataTime = function (b) {
+ a.dataTime = b;
+ };
+ this.setSize = function (b) {
+ a.size = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ HistoryMessagesOuput: function () {
+ var a = {};
+ this.setList = function (b) {
+ a.list = b;
+ };
+ this.setSyncTime = function (b) {
+ a.syncTime = b;
+ };
+ this.setHasMsg = function (b) {
+ a.hasMsg = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ HistoryMsgInput: function () {
+ var a = {};
+ this.setTargetId = function (b) {
+ a.targetId = b;
+ };
+ this.setTime = function (b) {
+ a.time = b;
+ };
+ this.setCount = function (b) {
+ a.count = b;
+ };
+ this.setOrder = function (b) {
+ a.order = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ },
+ HistoryMsgOuput: function () {
+ var a = {};
+ this.setList = function (b) {
+ a.list = b;
+ };
+ this.setSyncTime = function (b) {
+ a.syncTime = b;
+ };
+ this.setHasMsg = function (b) {
+ a.hasMsg = b;
+ };
+ this.toArrayBuffer = function () {
+ return a;
+ };
+ }
+ };
+ for (var f in Modules) {
+ Modules[f].decode = function (b) {
+ var back = {},
+ val = JSON.parse(b) || eval("(" + b + ")");
+ for (var i in val) {
+ back[i] = val[i];
+ back["get" + i.charAt(0).toUpperCase() + i.slice(1)] = function () {
+ return val[i];
+ };
+ }
+ return back;
+ };
+ }
+
+ /*
+ * JavaScript MD5
+ * https://github.com/blueimp/JavaScript-MD5
+ *
+ * Copyright 2011, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ *
+ * Based on
+ * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
+ * Digest Algorithm, as defined in RFC 1321.
+ * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for more info.
+ */
+
+ /*jslint bitwise: true */
+ /*global unescape, define, module */
+
+ var RongIMLib = {};
+ var tools = {
+ Timer: function () {
+ function Timer(config) {
+ this.timeout = 0;
+ this.timers = [];
+ this.timeout = config.timeout;
+ }
+ Timer.prototype.resume = function (callback) {
+ var timer = setTimeout(callback, this.timeout);
+ this.timers.push(timer);
+ };
+ Timer.prototype.pause = function () {
+ for (var i = 0, max = this.timers.length; i < max; i++) {
+ var timer = this.timers[i];
+ clearTimeout(timer);
+ }
+ };
+ return Timer;
+ }(),
+ convertToken: function (token) {
+ var systemInfo = wx.getSystemInfoSync();
+ var platform = systemInfo.platform;
+ // if (platform == 'android') {
+ // token = token.replace(/\+/g, '%2B');
+ // }
+ return token;
+ },
+ isFunction: function (func) {
+ return Object.prototype.toString.call(func) == '[object Function]';
+ },
+ isArray: function (func) {
+ return Object.prototype.toString.call(func) == '[object Array]';
+ },
+ request: function (option, callbacks) {
+ var url = option.url;
+ var method = option.method || "get";
+ method = method.toUpperCase();
+ var data = option.data || {};
+ var header = option.header || {};
+ return wx.request({
+ url: url,
+ method: method,
+ data: data,
+ header: header,
+ success: callbacks.success,
+ fail: callbacks.fail
+ });
+ },
+ socket: function (option, callbacks) {
+ var url = option.url;
+ var method = option.method || "get";
+ method = method.toUpperCase(); //必须大写
+ var data = option.data || {};
+ var header = option.header || {};
+ wx.connectSocket({
+ url: url,
+ data: data,
+ method: method,
+ header: header
+ });
+ wx.onSocketOpen(function (res) {
+ callbacks.open(wx, res);
+ });
+ wx.onSocketError(callbacks.error);
+ wx.onSocketMessage(callbacks.message);
+ wx.onSocketClose(callbacks.close);
+ return wx;
+ },
+ tplEngine: function (temp, data, regexp) {
+ if (!(Object.prototype.toString.call(data) === "[object Array]")) {
+ data = [data];
+ }
+ var ret = [];
+ for (var i = 0, j = data.length; i < j; i++) {
+ ret.push(replaceAction(data[i]));
+ }
+ return ret.join("");
+ function replaceAction(object) {
+ return temp.replace(regexp || /{([^}]+)}/g, function (match, name) {
+ if (match.charAt(0) == '\\') {
+ return match.slice(1);
+ }
+ return object[name] != undefined ? object[name] : '{' + name + '}';
+ });
+ }
+ },
+ Watcher: function () {
+ this.watcherList = [];
+ this.checkIndexOutBound = function (index, bound) {
+ var isOutBound = index > -1 && index < bound;
+ return isOutBound;
+ };
+ this.add = function (watcher, force) {
+ if (force) {
+ this.watcherList.length = 0;
+ }
+ if (tools.isFunction(watcher)) {
+ this.watcherList.push(watcher);
+ }
+ };
+ this.get = function (index) {
+ if (this.checkIndexOutBound(index, this.watcherList.length)) {
+ return this.watcherList[index];
+ }
+ };
+ this.count = function () {
+ return this.watcherList.length;
+ };
+ this.removeAt = function (index) {
+ var isOutBound = this.checkIndexOutBound(index, this.watcherList.length);
+ if (isOutBound) {
+ this.watcherList.splice(index, 1);
+ }
+ };
+ this.remove = function (watcher) {
+ if (!watcher) {
+ this.watcherList.length = 0;
+ return;
+ }
+ var watchers = watcher;
+ if (tools.isFunction(watcher)) {
+ watchers = [watcher];
+ }
+ if (tools.isArray(watchers)) {
+ for (var i = 0, len = watchers.length; i < len; i++) {
+ for (var j = 0; j < this.watcherList.length; j++) {
+ if (watchers[i] === this.watcherList[j]) {
+ this.removeAt(i);
+ break;
+ }
+ }
+ }
+ }
+ };
+ this.notify = function (content) {
+ for (var i = 0, len = this.watcherList.length; i < len; i++) {
+ this.watcherList[i](content);
+ }
+ };
+ this.indexOf = function (watcher, index) {
+ var i = index || 0,
+ len = this.watcherList.length;
+ while (i < len) {
+ var _watcher = this.watcherList[i];
+ if (_watcher === watcher) {
+ return i;
+ }
+ i++;
+ }
+ return -1;
+ };
+ }
+ };
+ (function (RongIMLib) {
+ /*
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
+ * to work around bugs in some JS interpreters.
+ */
+ function safe_add(x, y) {
+ var lsw = (x & 0xFFFF) + (y & 0xFFFF),
+ msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+ return msw << 16 | lsw & 0xFFFF;
+ }
+
+ /*
+ * Bitwise rotate a 32-bit number to the left.
+ */
+ function bit_rol(num, cnt) {
+ return num << cnt | num >>> 32 - cnt;
+ }
+
+ /*
+ * These functions implement the four basic operations the algorithm uses.
+ */
+ function md5_cmn(q, a, b, x, s, t) {
+ return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);
+ }
+ function md5_ff(a, b, c, d, x, s, t) {
+ return md5_cmn(b & c | ~b & d, a, b, x, s, t);
+ }
+ function md5_gg(a, b, c, d, x, s, t) {
+ return md5_cmn(b & d | c & ~d, a, b, x, s, t);
+ }
+ function md5_hh(a, b, c, d, x, s, t) {
+ return md5_cmn(b ^ c ^ d, a, b, x, s, t);
+ }
+ function md5_ii(a, b, c, d, x, s, t) {
+ return md5_cmn(c ^ (b | ~d), a, b, x, s, t);
+ }
+
+ /*
+ * Calculate the MD5 of an array of little-endian words, and a bit length.
+ */
+ function binl_md5(x, len) {
+ /* append padding */
+ x[len >> 5] |= 0x80 << len % 32;
+ x[(len + 64 >>> 9 << 4) + 14] = len;
+ var i,
+ olda,
+ oldb,
+ oldc,
+ oldd,
+ a = 1732584193,
+ b = -271733879,
+ c = -1732584194,
+ d = 271733878;
+ for (i = 0; i < x.length; i += 16) {
+ olda = a;
+ oldb = b;
+ oldc = c;
+ oldd = d;
+ a = md5_ff(a, b, c, d, x[i], 7, -680876936);
+ d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
+ c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
+ b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
+ a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
+ d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
+ c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
+ b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
+ a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
+ d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
+ c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);
+ b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
+ a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
+ d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
+ c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
+ b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
+ a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
+ d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
+ c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
+ b = md5_gg(b, c, d, a, x[i], 20, -373897302);
+ a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
+ d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
+ c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
+ b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
+ a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
+ d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
+ c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
+ b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
+ a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
+ d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
+ c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
+ b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
+ a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);
+ d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
+ c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
+ b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
+ a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
+ d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
+ c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
+ b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
+ a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
+ d = md5_hh(d, a, b, c, x[i], 11, -358537222);
+ c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
+ b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
+ a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
+ d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
+ c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
+ b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);
+ a = md5_ii(a, b, c, d, x[i], 6, -198630844);
+ d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
+ c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
+ b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
+ a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
+ d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
+ c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
+ b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
+ a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
+ d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
+ c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
+ b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
+ a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
+ d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
+ c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
+ b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);
+ a = safe_add(a, olda);
+ b = safe_add(b, oldb);
+ c = safe_add(c, oldc);
+ d = safe_add(d, oldd);
+ }
+ return [a, b, c, d];
+ }
+
+ /*
+ * Convert an array of little-endian words to a string
+ */
+ function binl2rstr(input) {
+ var i,
+ output = '';
+ for (i = 0; i < input.length * 32; i += 8) {
+ output += String.fromCharCode(input[i >> 5] >>> i % 32 & 0xFF);
+ }
+ return output;
+ }
+
+ /*
+ * Convert a raw string to an array of little-endian words
+ * Characters >255 have their high-byte silently ignored.
+ */
+ function rstr2binl(input) {
+ var i,
+ output = [];
+ output[(input.length >> 2) - 1] = undefined;
+ for (i = 0; i < output.length; i += 1) {
+ output[i] = 0;
+ }
+ for (i = 0; i < input.length * 8; i += 8) {
+ output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << i % 32;
+ }
+ return output;
+ }
+
+ /*
+ * Calculate the MD5 of a raw string
+ */
+ function rstr_md5(s) {
+ return binl2rstr(binl_md5(rstr2binl(s), s.length * 8));
+ }
+
+ /*
+ * Calculate the HMAC-MD5, of a key and some data (raw strings)
+ */
+ function rstr_hmac_md5(key, data) {
+ var i,
+ bkey = rstr2binl(key),
+ ipad = [],
+ opad = [],
+ hash;
+ ipad[15] = opad[15] = undefined;
+ if (bkey.length > 16) {
+ bkey = binl_md5(bkey, key.length * 8);
+ }
+ for (i = 0; i < 16; i += 1) {
+ ipad[i] = bkey[i] ^ 0x36363636;
+ opad[i] = bkey[i] ^ 0x5C5C5C5C;
+ }
+ hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
+ return binl2rstr(binl_md5(opad.concat(hash), 512 + 128));
+ }
+
+ /*
+ * Convert a raw string to a hex string
+ */
+ function rstr2hex(input) {
+ var hex_tab = '0123456789abcdef',
+ output = '',
+ x,
+ i;
+ for (i = 0; i < input.length; i += 1) {
+ x = input.charCodeAt(i);
+ output += hex_tab.charAt(x >>> 4 & 0x0F) + hex_tab.charAt(x & 0x0F);
+ }
+ return output;
+ }
+
+ /*
+ * Encode a string as utf-8
+ */
+ function str2rstr_utf8(input) {
+ return unescape(encodeURIComponent(input));
+ }
+
+ /*
+ * Take string arguments and return either raw or hex encoded strings
+ */
+ function raw_md5(s) {
+ return rstr_md5(str2rstr_utf8(s));
+ }
+ function hex_md5(s) {
+ return rstr2hex(raw_md5(s));
+ }
+ function raw_hmac_md5(k, d) {
+ return rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d));
+ }
+ function hex_hmac_md5(k, d) {
+ return rstr2hex(raw_hmac_md5(k, d));
+ }
+ function md5(string, key, raw) {
+ if (!key) {
+ if (!raw) {
+ return hex_md5(string);
+ }
+ return raw_md5(string);
+ }
+ if (!raw) {
+ return hex_hmac_md5(key, string);
+ }
+ return raw_hmac_md5(key, string);
+ }
+ RongIMLib.md5 = md5;
+ // if (typeof define === 'function' && define.amd) {
+ // define('md5',function () {
+ // return md5;
+ // });
+ // } else if (typeof module === 'object' && module.exports) {
+ // module.exports = md5;
+ // } else {
+ // $.md5 = md5;
+ // }
+ })(RongIMLib);
+ var __extends = this && this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() {
+ this.constructor = d;
+ }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ // var RongIMLib;
+ (function (RongIMLib) {
+ (function (MentionedType) {
+ MentionedType[MentionedType["ALL"] = 1] = "ALL";
+ MentionedType[MentionedType["PART"] = 2] = "PART";
+ })(RongIMLib.MentionedType || (RongIMLib.MentionedType = {}));
+ var MentionedType = RongIMLib.MentionedType;
+ (function (MethodType) {
+ MethodType[MethodType["CUSTOMER_SERVICE"] = 1] = "CUSTOMER_SERVICE";
+ MethodType[MethodType["RECALL"] = 2] = "RECALL";
+ })(RongIMLib.MethodType || (RongIMLib.MethodType = {}));
+ var MethodType = RongIMLib.MethodType;
+ (function (BlacklistStatus) {
+ /**
+ * 在黑名单中。
+ */
+ BlacklistStatus[BlacklistStatus["IN_BLACK_LIST"] = 0] = "IN_BLACK_LIST";
+ /**
+ * 不在黑名单中。
+ */
+ BlacklistStatus[BlacklistStatus["NOT_IN_BLACK_LIST"] = 1] = "NOT_IN_BLACK_LIST";
+ })(RongIMLib.BlacklistStatus || (RongIMLib.BlacklistStatus = {}));
+ var BlacklistStatus = RongIMLib.BlacklistStatus;
+ (function (ConnectionChannel) {
+ ConnectionChannel[ConnectionChannel["XHR_POLLING"] = 0] = "XHR_POLLING";
+ ConnectionChannel[ConnectionChannel["WEBSOCKET"] = 1] = "WEBSOCKET";
+ //外部调用
+ ConnectionChannel[ConnectionChannel["HTTP"] = 0] = "HTTP";
+ //外部调用
+ ConnectionChannel[ConnectionChannel["HTTPS"] = 1] = "HTTPS";
+ })(RongIMLib.ConnectionChannel || (RongIMLib.ConnectionChannel = {}));
+ var ConnectionChannel = RongIMLib.ConnectionChannel;
+ (function (CustomerType) {
+ CustomerType[CustomerType["ONLY_ROBOT"] = 1] = "ONLY_ROBOT";
+ CustomerType[CustomerType["ONLY_HUMAN"] = 2] = "ONLY_HUMAN";
+ CustomerType[CustomerType["ROBOT_FIRST"] = 3] = "ROBOT_FIRST";
+ CustomerType[CustomerType["HUMAN_FIRST"] = 4] = "HUMAN_FIRST";
+ })(RongIMLib.CustomerType || (RongIMLib.CustomerType = {}));
+ var CustomerType = RongIMLib.CustomerType;
+ (function (GetChatRoomType) {
+ GetChatRoomType[GetChatRoomType["NONE"] = 0] = "NONE";
+ GetChatRoomType[GetChatRoomType["SQQUENCE"] = 1] = "SQQUENCE";
+ GetChatRoomType[GetChatRoomType["REVERSE"] = 2] = "REVERSE";
+ })(RongIMLib.GetChatRoomType || (RongIMLib.GetChatRoomType = {}));
+ var GetChatRoomType = RongIMLib.GetChatRoomType;
+ (function (ConnectionStatus) {
+ /**
+ * 连接成功。
+ */
+ ConnectionStatus[ConnectionStatus["CONNECTED"] = 0] = "CONNECTED";
+ /**
+ * 连接中。
+ */
+ ConnectionStatus[ConnectionStatus["CONNECTING"] = 1] = "CONNECTING";
+ /**
+ * 断开连接。
+ */
+ ConnectionStatus[ConnectionStatus["DISCONNECTED"] = 2] = "DISCONNECTED";
+ /**
+ * 用户账户在其他设备登录,本机会被踢掉线。
+ */
+ ConnectionStatus[ConnectionStatus["KICKED_OFFLINE_BY_OTHER_CLIENT"] = 6] = "KICKED_OFFLINE_BY_OTHER_CLIENT";
+ /**
+ * 网络不可用。
+ */
+ ConnectionStatus[ConnectionStatus["NETWORK_UNAVAILABLE"] = 3] = "NETWORK_UNAVAILABLE";
+ /**
+ * 域名错误
+ */
+ ConnectionStatus[ConnectionStatus["DOMAIN_INCORRECT"] = 12] = "DOMAIN_INCORRECT";
+ /**
+ * 连接关闭。
+ */
+ ConnectionStatus[ConnectionStatus["CONNECTION_CLOSED"] = 4] = "CONNECTION_CLOSED";
+ })(RongIMLib.ConnectionStatus || (RongIMLib.ConnectionStatus = {}));
+ var ConnectionStatus = RongIMLib.ConnectionStatus;
+ (function (ConversationNotificationStatus) {
+ /**
+ * 免打扰状态,关闭对应会话的通知提醒。
+ */
+ ConversationNotificationStatus[ConversationNotificationStatus["DO_NOT_DISTURB"] = 0] = "DO_NOT_DISTURB";
+ /**
+ * 提醒。
+ */
+ ConversationNotificationStatus[ConversationNotificationStatus["NOTIFY"] = 1] = "NOTIFY";
+ })(RongIMLib.ConversationNotificationStatus || (RongIMLib.ConversationNotificationStatus = {}));
+ var ConversationNotificationStatus = RongIMLib.ConversationNotificationStatus;
+ (function (ConversationType) {
+ ConversationType[ConversationType["NONE"] = 0] = "NONE";
+ ConversationType[ConversationType["PRIVATE"] = 1] = "PRIVATE";
+ ConversationType[ConversationType["DISCUSSION"] = 2] = "DISCUSSION";
+ ConversationType[ConversationType["GROUP"] = 3] = "GROUP";
+ ConversationType[ConversationType["CHATROOM"] = 4] = "CHATROOM";
+ ConversationType[ConversationType["CUSTOMER_SERVICE"] = 5] = "CUSTOMER_SERVICE";
+ ConversationType[ConversationType["SYSTEM"] = 6] = "SYSTEM";
+ //默认关注 MC
+ ConversationType[ConversationType["APP_PUBLIC_SERVICE"] = 7] = "APP_PUBLIC_SERVICE";
+ //手工关注 MP
+ ConversationType[ConversationType["PUBLIC_SERVICE"] = 8] = "PUBLIC_SERVICE";
+ })(RongIMLib.ConversationType || (RongIMLib.ConversationType = {}));
+ var ConversationType = RongIMLib.ConversationType;
+ (function (DiscussionInviteStatus) {
+ /**
+ * 开放邀请。
+ */
+ DiscussionInviteStatus[DiscussionInviteStatus["OPENED"] = 0] = "OPENED";
+ /**
+ * 关闭邀请。
+ */
+ DiscussionInviteStatus[DiscussionInviteStatus["CLOSED"] = 1] = "CLOSED";
+ })(RongIMLib.DiscussionInviteStatus || (RongIMLib.DiscussionInviteStatus = {}));
+ var DiscussionInviteStatus = RongIMLib.DiscussionInviteStatus;
+ (function (ErrorCode) {
+ ErrorCode[ErrorCode["MINI_PROGAM_SERVICE_NOT_OPEN"] = 20000] = "MINI_PROGAM_SERVICE_NOT_OPEN";
+ /**
+ * 发送频率过快
+ */
+ ErrorCode[ErrorCode["SEND_FREQUENCY_TOO_FAST"] = 20604] = "SEND_FREQUENCY_TOO_FAST";
+ ErrorCode[ErrorCode["RC_MSG_UNAUTHORIZED"] = 20406] = "RC_MSG_UNAUTHORIZED";
+ /**
+ * 群组 Id 无效
+ */
+ ErrorCode[ErrorCode["RC_DISCUSSION_GROUP_ID_INVALID"] = 20407] = "RC_DISCUSSION_GROUP_ID_INVALID";
+ /**
+ * 群组被禁言
+ */
+ ErrorCode[ErrorCode["FORBIDDEN_IN_GROUP"] = 22408] = "FORBIDDEN_IN_GROUP";
+ /**
+ * 不在讨论组。
+ */
+ ErrorCode[ErrorCode["NOT_IN_DISCUSSION"] = 21406] = "NOT_IN_DISCUSSION";
+ /**
+ * 不在群组。
+ */
+ ErrorCode[ErrorCode["NOT_IN_GROUP"] = 22406] = "NOT_IN_GROUP";
+ /**
+ * 不在聊天室。
+ */
+ ErrorCode[ErrorCode["NOT_IN_CHATROOM"] = 23406] = "NOT_IN_CHATROOM";
+ /**
+ *聊天室被禁言
+ */
+ ErrorCode[ErrorCode["FORBIDDEN_IN_CHATROOM"] = 23408] = "FORBIDDEN_IN_CHATROOM";
+ /**
+ * 聊天室中成员被踢出
+ */
+ ErrorCode[ErrorCode["RC_CHATROOM_USER_KICKED"] = 23409] = "RC_CHATROOM_USER_KICKED";
+ /**
+ * 聊天室不存在
+ */
+ ErrorCode[ErrorCode["RC_CHATROOM_NOT_EXIST"] = 23410] = "RC_CHATROOM_NOT_EXIST";
+ /**
+ * 聊天室成员已满
+ */
+ ErrorCode[ErrorCode["RC_CHATROOM_IS_FULL"] = 23411] = "RC_CHATROOM_IS_FULL";
+ /**
+ * 获取聊天室信息参数无效
+ */
+ ErrorCode[ErrorCode["RC_CHATROOM_PATAMETER_INVALID"] = 23412] = "RC_CHATROOM_PATAMETER_INVALID";
+ /**
+ * 聊天室异常
+ */
+ ErrorCode[ErrorCode["CHATROOM_GET_HISTORYMSG_ERROR"] = 23413] = "CHATROOM_GET_HISTORYMSG_ERROR";
+ /**
+ * 没有打开聊天室消息存储
+ */
+ ErrorCode[ErrorCode["CHATROOM_NOT_OPEN_HISTORYMSG_STORE"] = 23414] = "CHATROOM_NOT_OPEN_HISTORYMSG_STORE";
+ ErrorCode[ErrorCode["TIMEOUT"] = -1] = "TIMEOUT";
+ /**
+ * 未知原因失败。
+ */
+ ErrorCode[ErrorCode["UNKNOWN"] = -2] = "UNKNOWN";
+ /**
+ * 加入讨论失败
+ */
+ ErrorCode[ErrorCode["JOIN_IN_DISCUSSION"] = 21407] = "JOIN_IN_DISCUSSION";
+ /**
+ * 创建讨论组失败
+ */
+ ErrorCode[ErrorCode["CREATE_DISCUSSION"] = 21408] = "CREATE_DISCUSSION";
+ /**
+ * 设置讨论组邀请状态失败
+ */
+ ErrorCode[ErrorCode["INVITE_DICUSSION"] = 21409] = "INVITE_DICUSSION";
+ /**
+ *获取用户失败
+ */
+ ErrorCode[ErrorCode["GET_USERINFO_ERROR"] = 23407] = "GET_USERINFO_ERROR";
+ /**
+ * 在黑名单中。
+ */
+ ErrorCode[ErrorCode["REJECTED_BY_BLACKLIST"] = 405] = "REJECTED_BY_BLACKLIST";
+ /**
+ * 通信过程中,当前 Socket 不存在。
+ */
+ ErrorCode[ErrorCode["RC_NET_CHANNEL_INVALID"] = 30001] = "RC_NET_CHANNEL_INVALID";
+ /**
+ * Socket 连接不可用。
+ */
+ ErrorCode[ErrorCode["RC_NET_UNAVAILABLE"] = 30002] = "RC_NET_UNAVAILABLE";
+ /**
+ * 通信超时。
+ */
+ ErrorCode[ErrorCode["RC_MSG_RESP_TIMEOUT"] = 30003] = "RC_MSG_RESP_TIMEOUT";
+ /**
+ * 导航操作时,Http 请求失败。
+ */
+ ErrorCode[ErrorCode["RC_HTTP_SEND_FAIL"] = 30004] = "RC_HTTP_SEND_FAIL";
+ /**
+ * HTTP 请求失败。
+ */
+ ErrorCode[ErrorCode["RC_HTTP_REQ_TIMEOUT"] = 30005] = "RC_HTTP_REQ_TIMEOUT";
+ /**
+ * HTTP 接收失败。
+ */
+ ErrorCode[ErrorCode["RC_HTTP_RECV_FAIL"] = 30006] = "RC_HTTP_RECV_FAIL";
+ /**
+ * 导航操作的 HTTP 请求,返回不是200。
+ */
+ ErrorCode[ErrorCode["RC_NAVI_RESOURCE_ERROR"] = 30007] = "RC_NAVI_RESOURCE_ERROR";
+ /**
+ * 导航数据解析后,其中不存在有效数据。
+ */
+ ErrorCode[ErrorCode["RC_NODE_NOT_FOUND"] = 30008] = "RC_NODE_NOT_FOUND";
+ /**
+ * 导航数据解析后,其中不存在有效 IP 地址。
+ */
+ ErrorCode[ErrorCode["RC_DOMAIN_NOT_RESOLVE"] = 30009] = "RC_DOMAIN_NOT_RESOLVE";
+ /**
+ * 创建 Socket 失败。
+ */
+ ErrorCode[ErrorCode["RC_SOCKET_NOT_CREATED"] = 30010] = "RC_SOCKET_NOT_CREATED";
+ /**
+ * Socket 被断开。
+ */
+ ErrorCode[ErrorCode["RC_SOCKET_DISCONNECTED"] = 30011] = "RC_SOCKET_DISCONNECTED";
+ /**
+ * PING 操作失败。
+ */
+ ErrorCode[ErrorCode["RC_PING_SEND_FAIL"] = 30012] = "RC_PING_SEND_FAIL";
+ /**
+ * PING 超时。
+ */
+ ErrorCode[ErrorCode["RC_PONG_RECV_FAIL"] = 30013] = "RC_PONG_RECV_FAIL";
+ /**
+ * 消息发送失败。
+ */
+ ErrorCode[ErrorCode["RC_MSG_SEND_FAIL"] = 30014] = "RC_MSG_SEND_FAIL";
+ /**
+ * 做 connect 连接时,收到的 ACK 超时。
+ */
+ ErrorCode[ErrorCode["RC_CONN_ACK_TIMEOUT"] = 31000] = "RC_CONN_ACK_TIMEOUT";
+ /**
+ * 参数错误。
+ */
+ ErrorCode[ErrorCode["RC_CONN_PROTO_VERSION_ERROR"] = 31001] = "RC_CONN_PROTO_VERSION_ERROR";
+ /**
+ * 参数错误,App Id 错误。
+ */
+ ErrorCode[ErrorCode["RC_CONN_ID_REJECT"] = 31002] = "RC_CONN_ID_REJECT";
+ /**
+ * 服务器不可用。
+ */
+ ErrorCode[ErrorCode["RC_CONN_SERVER_UNAVAILABLE"] = 31003] = "RC_CONN_SERVER_UNAVAILABLE";
+ /**
+ * Token 错误。
+ */
+ ErrorCode[ErrorCode["RC_CONN_USER_OR_PASSWD_ERROR"] = 31004] = "RC_CONN_USER_OR_PASSWD_ERROR";
+ /**
+ * App Id 与 Token 不匹配。
+ */
+ ErrorCode[ErrorCode["RC_CONN_NOT_AUTHRORIZED"] = 31005] = "RC_CONN_NOT_AUTHRORIZED";
+ /**
+ * 重定向,地址错误。
+ */
+ ErrorCode[ErrorCode["RC_CONN_REDIRECTED"] = 31006] = "RC_CONN_REDIRECTED";
+ /**
+ * NAME 与后台注册信息不一致。
+ */
+ ErrorCode[ErrorCode["RC_CONN_PACKAGE_NAME_INVALID"] = 31007] = "RC_CONN_PACKAGE_NAME_INVALID";
+ /**
+ * APP 被屏蔽、删除或不存在。
+ */
+ ErrorCode[ErrorCode["RC_CONN_APP_BLOCKED_OR_DELETED"] = 31008] = "RC_CONN_APP_BLOCKED_OR_DELETED";
+ /**
+ * 用户被屏蔽。
+ */
+ ErrorCode[ErrorCode["RC_CONN_USER_BLOCKED"] = 31009] = "RC_CONN_USER_BLOCKED";
+ /**
+ * Disconnect,由服务器返回,比如用户互踢。
+ */
+ ErrorCode[ErrorCode["RC_DISCONN_KICK"] = 31010] = "RC_DISCONN_KICK";
+ /**
+ * Disconnect,由服务器返回,比如用户互踢。
+ */
+ ErrorCode[ErrorCode["RC_DISCONN_EXCEPTION"] = 31011] = "RC_DISCONN_EXCEPTION";
+ /**
+ * 协议层内部错误。query,上传下载过程中数据错误。
+ */
+ ErrorCode[ErrorCode["RC_QUERY_ACK_NO_DATA"] = 32001] = "RC_QUERY_ACK_NO_DATA";
+ /**
+ * 协议层内部错误。
+ */
+ ErrorCode[ErrorCode["RC_MSG_DATA_INCOMPLETE"] = 32002] = "RC_MSG_DATA_INCOMPLETE";
+ /**
+ * 未调用 init 初始化函数。
+ */
+ ErrorCode[ErrorCode["BIZ_ERROR_CLIENT_NOT_INIT"] = 33001] = "BIZ_ERROR_CLIENT_NOT_INIT";
+ /**
+ * 数据库初始化失败。
+ */
+ ErrorCode[ErrorCode["BIZ_ERROR_DATABASE_ERROR"] = 33002] = "BIZ_ERROR_DATABASE_ERROR";
+ /**
+ * 传入参数无效。
+ */
+ ErrorCode[ErrorCode["BIZ_ERROR_INVALID_PARAMETER"] = 33003] = "BIZ_ERROR_INVALID_PARAMETER";
+ /**
+ * 通道无效。
+ */
+ ErrorCode[ErrorCode["BIZ_ERROR_NO_CHANNEL"] = 33004] = "BIZ_ERROR_NO_CHANNEL";
+ /**
+ * 重新连接成功。
+ */
+ ErrorCode[ErrorCode["BIZ_ERROR_RECONNECT_SUCCESS"] = 33005] = "BIZ_ERROR_RECONNECT_SUCCESS";
+ /**
+ * 连接中,再调用 connect 被拒绝。
+ */
+ ErrorCode[ErrorCode["BIZ_ERROR_CONNECTING"] = 33006] = "BIZ_ERROR_CONNECTING";
+ /**
+ * 消息漫游服务未开通
+ */
+ ErrorCode[ErrorCode["MSG_ROAMING_SERVICE_UNAVAILABLE"] = 33007] = "MSG_ROAMING_SERVICE_UNAVAILABLE";
+ ErrorCode[ErrorCode["MSG_INSERT_ERROR"] = 33008] = "MSG_INSERT_ERROR";
+ ErrorCode[ErrorCode["MSG_DEL_ERROR"] = 33009] = "MSG_DEL_ERROR";
+ /**
+ * 删除会话失败
+ */
+ ErrorCode[ErrorCode["CONVER_REMOVE_ERROR"] = 34001] = "CONVER_REMOVE_ERROR";
+ /**
+ *拉取历史消息
+ */
+ ErrorCode[ErrorCode["CONVER_GETLIST_ERROR"] = 34002] = "CONVER_GETLIST_ERROR";
+ /**
+ * 会话指定异常
+ */
+ ErrorCode[ErrorCode["CONVER_SETOP_ERROR"] = 34003] = "CONVER_SETOP_ERROR";
+ /**
+ * 获取会话未读消息总数失败
+ */
+ ErrorCode[ErrorCode["CONVER_TOTAL_UNREAD_ERROR"] = 34004] = "CONVER_TOTAL_UNREAD_ERROR";
+ /**
+ * 获取指定会话类型未读消息数异常
+ */
+ ErrorCode[ErrorCode["CONVER_TYPE_UNREAD_ERROR"] = 34005] = "CONVER_TYPE_UNREAD_ERROR";
+ /**
+ * 获取指定用户ID&会话类型未读消息数异常
+ */
+ ErrorCode[ErrorCode["CONVER_ID_TYPE_UNREAD_ERROR"] = 34006] = "CONVER_ID_TYPE_UNREAD_ERROR";
+ ErrorCode[ErrorCode["CONVER_CLEAR_ERROR"] = 34007] = "CONVER_CLEAR_ERROR";
+ ErrorCode[ErrorCode["CONVER_GET_ERROR"] = 34008] = "CONVER_GET_ERROR";
+ //群组异常信息
+ /**
+ *
+ */
+ ErrorCode[ErrorCode["GROUP_SYNC_ERROR"] = 35001] = "GROUP_SYNC_ERROR";
+ /**
+ * 匹配群信息系异常
+ */
+ ErrorCode[ErrorCode["GROUP_MATCH_ERROR"] = 35002] = "GROUP_MATCH_ERROR";
+ //聊天室异常
+ /**
+ * 加入聊天室Id为空
+ */
+ ErrorCode[ErrorCode["CHATROOM_ID_ISNULL"] = 36001] = "CHATROOM_ID_ISNULL";
+ /**
+ * 加入聊天室失败
+ */
+ ErrorCode[ErrorCode["CHARTOOM_JOIN_ERROR"] = 36002] = "CHARTOOM_JOIN_ERROR";
+ /**
+ * 拉取聊天室历史消息失败
+ */
+ ErrorCode[ErrorCode["CHATROOM_HISMESSAGE_ERROR"] = 36003] = "CHATROOM_HISMESSAGE_ERROR";
+ //黑名单异常
+ /**
+ * 加入黑名单异常
+ */
+ ErrorCode[ErrorCode["BLACK_ADD_ERROR"] = 37001] = "BLACK_ADD_ERROR";
+ /**
+ * 获得指定人员再黑名单中的状态异常
+ */
+ ErrorCode[ErrorCode["BLACK_GETSTATUS_ERROR"] = 37002] = "BLACK_GETSTATUS_ERROR";
+ /**
+ * 移除黑名单异常
+ */
+ ErrorCode[ErrorCode["BLACK_REMOVE_ERROR"] = 37003] = "BLACK_REMOVE_ERROR";
+ /**
+ * 获取草稿失败
+ */
+ ErrorCode[ErrorCode["DRAF_GET_ERROR"] = 38001] = "DRAF_GET_ERROR";
+ /**
+ * 保存草稿失败
+ */
+ ErrorCode[ErrorCode["DRAF_SAVE_ERROR"] = 38002] = "DRAF_SAVE_ERROR";
+ /**
+ * 删除草稿失败
+ */
+ ErrorCode[ErrorCode["DRAF_REMOVE_ERROR"] = 38003] = "DRAF_REMOVE_ERROR";
+ /**
+ * 关注公众号失败
+ */
+ ErrorCode[ErrorCode["SUBSCRIBE_ERROR"] = 39001] = "SUBSCRIBE_ERROR";
+ /**
+ * 关注公众号失败
+ */
+ ErrorCode[ErrorCode["QNTKN_FILETYPE_ERROR"] = 41001] = "QNTKN_FILETYPE_ERROR";
+ /**
+ * 获取七牛token失败
+ */
+ ErrorCode[ErrorCode["QNTKN_GET_ERROR"] = 41002] = "QNTKN_GET_ERROR";
+ /**
+ * cookie被禁用
+ */
+ ErrorCode[ErrorCode["COOKIE_ENABLE"] = 51001] = "COOKIE_ENABLE";
+ ErrorCode[ErrorCode["GET_MESSAGE_BY_ID_ERROR"] = 61001] = "GET_MESSAGE_BY_ID_ERROR";
+ // 没有注册DeviveId 也就是用户没有登陆
+ ErrorCode[ErrorCode["HAVNODEVICEID"] = 24001] = "HAVNODEVICEID";
+ // 已经存在
+ ErrorCode[ErrorCode["DEVICEIDISHAVE"] = 24002] = "DEVICEIDISHAVE";
+ // 成功
+ ErrorCode[ErrorCode["SUCCESS"] = 0] = "SUCCESS";
+ // 没有对应的用户或token
+ ErrorCode[ErrorCode["FEILD"] = 24009] = "FEILD";
+ // voip为空
+ ErrorCode[ErrorCode["VOIPISNULL"] = 24013] = "VOIPISNULL";
+ // 不支持的Voip引擎
+ ErrorCode[ErrorCode["NOENGINETYPE"] = 24010] = "NOENGINETYPE";
+ // channleName 是空
+ ErrorCode[ErrorCode["NULLCHANNELNAME"] = 24011] = "NULLCHANNELNAME";
+ // 生成Voipkey失败
+ ErrorCode[ErrorCode["VOIPDYANMICERROR"] = 24012] = "VOIPDYANMICERROR";
+ // 没有配置voip
+ ErrorCode[ErrorCode["NOVOIP"] = 24014] = "NOVOIP";
+ // 服务器内部错误
+ ErrorCode[ErrorCode["INTERNALERRROR"] = 24015] = "INTERNALERRROR";
+ //VOIP close
+ ErrorCode[ErrorCode["VOIPCLOSE"] = 24016] = "VOIPCLOSE";
+ ErrorCode[ErrorCode["CLOSE_BEFORE_OPEN"] = 51001] = "CLOSE_BEFORE_OPEN";
+ ErrorCode[ErrorCode["ALREADY_IN_USE"] = 51002] = "ALREADY_IN_USE";
+ ErrorCode[ErrorCode["INVALID_CHANNEL_NAME"] = 51003] = "INVALID_CHANNEL_NAME";
+ ErrorCode[ErrorCode["VIDEO_CONTAINER_IS_NULL"] = 51004] = "VIDEO_CONTAINER_IS_NULL";
+ /**
+ * 删除消息数组长度为 0 .
+ */
+ ErrorCode[ErrorCode["DELETE_MESSAGE_ID_IS_NULL"] = 61001] = "DELETE_MESSAGE_ID_IS_NULL";
+ /*!
+ 己方取消已发出的通话请求
+ */
+ ErrorCode[ErrorCode["CANCEL"] = 1] = "CANCEL";
+ /*!
+ 己方拒绝收到的通话请求
+ */
+ ErrorCode[ErrorCode["REJECT"] = 2] = "REJECT";
+ /*!
+ 己方挂断
+ */
+ ErrorCode[ErrorCode["HANGUP"] = 3] = "HANGUP";
+ /*!
+ 己方忙碌
+ */
+ ErrorCode[ErrorCode["BUSYLINE"] = 4] = "BUSYLINE";
+ /*!
+ 己方未接听
+ */
+ ErrorCode[ErrorCode["NO_RESPONSE"] = 5] = "NO_RESPONSE";
+ /*!
+ 己方不支持当前引擎
+ */
+ ErrorCode[ErrorCode["ENGINE_UN_SUPPORTED"] = 6] = "ENGINE_UN_SUPPORTED";
+ /*!
+ 己方网络出错
+ */
+ ErrorCode[ErrorCode["NETWORK_ERROR"] = 7] = "NETWORK_ERROR";
+ /*!
+ 对方取消已发出的通话请求
+ */
+ ErrorCode[ErrorCode["REMOTE_CANCEL"] = 11] = "REMOTE_CANCEL";
+ /*!
+ 对方拒绝收到的通话请求
+ */
+ ErrorCode[ErrorCode["REMOTE_REJECT"] = 12] = "REMOTE_REJECT";
+ /*!
+ 通话过程对方挂断
+ */
+ ErrorCode[ErrorCode["REMOTE_HANGUP"] = 13] = "REMOTE_HANGUP";
+ /*!
+ 对方忙碌
+ */
+ ErrorCode[ErrorCode["REMOTE_BUSYLINE"] = 14] = "REMOTE_BUSYLINE";
+ /*!
+ 对方未接听
+ */
+ ErrorCode[ErrorCode["REMOTE_NO_RESPONSE"] = 15] = "REMOTE_NO_RESPONSE";
+ /*!
+ 对方网络错误
+ */
+ ErrorCode[ErrorCode["REMOTE_ENGINE_UN_SUPPORTED"] = 16] = "REMOTE_ENGINE_UN_SUPPORTED";
+ /*!
+ 对方网络错误
+ */
+ ErrorCode[ErrorCode["REMOTE_NETWORK_ERROR"] = 17] = "REMOTE_NETWORK_ERROR";
+ /*!
+ VoIP 不可用
+ */
+ ErrorCode[ErrorCode["VOIP_NOT_AVALIABLE"] = 18] = "VOIP_NOT_AVALIABLE";
+ })(RongIMLib.ErrorCode || (RongIMLib.ErrorCode = {}));
+ var ErrorCode = RongIMLib.ErrorCode;
+ (function (VoIPMediaType) {
+ VoIPMediaType[VoIPMediaType["MEDIA_AUDIO"] = 1] = "MEDIA_AUDIO";
+ VoIPMediaType[VoIPMediaType["MEDIA_VEDIO"] = 2] = "MEDIA_VEDIO";
+ })(RongIMLib.VoIPMediaType || (RongIMLib.VoIPMediaType = {}));
+ var VoIPMediaType = RongIMLib.VoIPMediaType;
+ (function (MediaType) {
+ /**
+ * 图片。
+ */
+ MediaType[MediaType["IMAGE"] = 1] = "IMAGE";
+ /**
+ * 声音。
+ */
+ MediaType[MediaType["AUDIO"] = 2] = "AUDIO";
+ /**
+ * 视频。
+ */
+ MediaType[MediaType["VIDEO"] = 3] = "VIDEO";
+ /**
+ * 通用文件。
+ */
+ MediaType[MediaType["FILE"] = 100] = "FILE";
+ })(RongIMLib.MediaType || (RongIMLib.MediaType = {}));
+ var MediaType = RongIMLib.MediaType;
+ (function (MessageDirection) {
+ /**
+ * 发送消息。
+ */
+ MessageDirection[MessageDirection["SEND"] = 1] = "SEND";
+ /**
+ * 接收消息。
+ */
+ MessageDirection[MessageDirection["RECEIVE"] = 2] = "RECEIVE";
+ })(RongIMLib.MessageDirection || (RongIMLib.MessageDirection = {}));
+ var MessageDirection = RongIMLib.MessageDirection;
+ (function (FileType) {
+ FileType[FileType["IMAGE"] = 1] = "IMAGE";
+ FileType[FileType["AUDIO"] = 2] = "AUDIO";
+ FileType[FileType["VIDEO"] = 3] = "VIDEO";
+ FileType[FileType["FILE"] = 4] = "FILE";
+ })(RongIMLib.FileType || (RongIMLib.FileType = {}));
+ var FileType = RongIMLib.FileType;
+ (function (RealTimeLocationErrorCode) {
+ /**
+ * 未初始化 RealTimeLocation 实例
+ */
+ RealTimeLocationErrorCode[RealTimeLocationErrorCode["RC_REAL_TIME_LOCATION_NOT_INIT"] = -1] = "RC_REAL_TIME_LOCATION_NOT_INIT";
+ /**
+ * 执行成功。
+ */
+ RealTimeLocationErrorCode[RealTimeLocationErrorCode["RC_REAL_TIME_LOCATION_SUCCESS"] = 0] = "RC_REAL_TIME_LOCATION_SUCCESS";
+ /**
+ * 获取 RealTimeLocation 实例时返回
+ * GPS 未打开。
+ */
+ RealTimeLocationErrorCode[RealTimeLocationErrorCode["RC_REAL_TIME_LOCATION_GPS_DISABLED"] = 1] = "RC_REAL_TIME_LOCATION_GPS_DISABLED";
+ /**
+ * 获取 RealTimeLocation 实例时返回
+ * 当前会话不支持位置共享。
+ */
+ RealTimeLocationErrorCode[RealTimeLocationErrorCode["RC_REAL_TIME_LOCATION_CONVERSATION_NOT_SUPPORT"] = 2] = "RC_REAL_TIME_LOCATION_CONVERSATION_NOT_SUPPORT";
+ /**
+ * 获取 RealTimeLocation 实例时返回
+ * 对方已发起位置共享。
+ */
+ RealTimeLocationErrorCode[RealTimeLocationErrorCode["RC_REAL_TIME_LOCATION_IS_ON_GOING"] = 3] = "RC_REAL_TIME_LOCATION_IS_ON_GOING";
+ /**
+ * Join 时返回
+ * 当前位置共享已超过最大支持人数。
+ */
+ RealTimeLocationErrorCode[RealTimeLocationErrorCode["RC_REAL_TIME_LOCATION_EXCEED_MAX_PARTICIPANT"] = 4] = "RC_REAL_TIME_LOCATION_EXCEED_MAX_PARTICIPANT";
+ /**
+ * Join 时返回
+ * 加入位置共享失败。
+ */
+ RealTimeLocationErrorCode[RealTimeLocationErrorCode["RC_REAL_TIME_LOCATION_JOIN_FAILURE"] = 5] = "RC_REAL_TIME_LOCATION_JOIN_FAILURE";
+ /**
+ * Start 时返回
+ * 发起位置共享失败。
+ */
+ RealTimeLocationErrorCode[RealTimeLocationErrorCode["RC_REAL_TIME_LOCATION_START_FAILURE"] = 6] = "RC_REAL_TIME_LOCATION_START_FAILURE";
+ /**
+ * 网络不可用。
+ */
+ RealTimeLocationErrorCode[RealTimeLocationErrorCode["RC_REAL_TIME_LOCATION_NETWORK_UNAVAILABLE"] = 7] = "RC_REAL_TIME_LOCATION_NETWORK_UNAVAILABLE";
+ })(RongIMLib.RealTimeLocationErrorCode || (RongIMLib.RealTimeLocationErrorCode = {}));
+ var RealTimeLocationErrorCode = RongIMLib.RealTimeLocationErrorCode;
+ (function (RealTimeLocationStatus) {
+ /**
+ * 空闲状态 (默认状态)
+ * 对方或者自己都未发起位置共享业务,或者位置共享业务已结束。
+ */
+ RealTimeLocationStatus[RealTimeLocationStatus["RC_REAL_TIME_LOCATION_STATUS_IDLE"] = 0] = "RC_REAL_TIME_LOCATION_STATUS_IDLE";
+ /**
+ * 呼入状态 (待加入)
+ * 1. 对方发起了位置共享业务,此状态下,自己只能选择加入。
+ * 2. 自己从已连接的位置共享中退出。
+ */
+ RealTimeLocationStatus[RealTimeLocationStatus["RC_REAL_TIME_LOCATION_STATUS_INCOMING"] = 1] = "RC_REAL_TIME_LOCATION_STATUS_INCOMING";
+ /**
+ * 呼出状态 =(自己创建)
+ * 1. 自己发起位置共享业务,对方只能选择加入。
+ * 2. 对方从已连接的位置共享业务中退出。
+ */
+ RealTimeLocationStatus[RealTimeLocationStatus["RC_REAL_TIME_LOCATION_STATUS_OUTGOING"] = 2] = "RC_REAL_TIME_LOCATION_STATUS_OUTGOING";
+ /**
+ * 连接状态 (自己加入)
+ * 对方加入了自己发起的位置共享,或者自己加入了对方发起的位置共享。
+ */
+ RealTimeLocationStatus[RealTimeLocationStatus["RC_REAL_TIME_LOCATION_STATUS_CONNECTED"] = 3] = "RC_REAL_TIME_LOCATION_STATUS_CONNECTED";
+ })(RongIMLib.RealTimeLocationStatus || (RongIMLib.RealTimeLocationStatus = {}));
+ var RealTimeLocationStatus = RongIMLib.RealTimeLocationStatus;
+ (function (ReceivedStatus) {
+ ReceivedStatus[ReceivedStatus["READ"] = 1] = "READ";
+ ReceivedStatus[ReceivedStatus["LISTENED"] = 2] = "LISTENED";
+ ReceivedStatus[ReceivedStatus["DOWNLOADED"] = 4] = "DOWNLOADED";
+ ReceivedStatus[ReceivedStatus["RETRIEVED"] = 8] = "RETRIEVED";
+ ReceivedStatus[ReceivedStatus["UNREAD"] = 0] = "UNREAD";
+ })(RongIMLib.ReceivedStatus || (RongIMLib.ReceivedStatus = {}));
+ var ReceivedStatus = RongIMLib.ReceivedStatus;
+ (function (SearchType) {
+ /**
+ * 精确。
+ */
+ SearchType[SearchType["EXACT"] = 0] = "EXACT";
+ /**
+ * 模糊。
+ */
+ SearchType[SearchType["FUZZY"] = 1] = "FUZZY";
+ })(RongIMLib.SearchType || (RongIMLib.SearchType = {}));
+ var SearchType = RongIMLib.SearchType;
+ (function (SentStatus) {
+ /**
+ * 发送中。
+ */
+ SentStatus[SentStatus["SENDING"] = 10] = "SENDING";
+ /**
+ * 发送失败。
+ */
+ SentStatus[SentStatus["FAILED"] = 20] = "FAILED";
+ /**
+ * 已发送。
+ */
+ SentStatus[SentStatus["SENT"] = 30] = "SENT";
+ /**
+ * 对方已接收。
+ */
+ SentStatus[SentStatus["RECEIVED"] = 40] = "RECEIVED";
+ /**
+ * 对方已读。
+ */
+ SentStatus[SentStatus["READ"] = 50] = "READ";
+ /**
+ * 对方已销毁。
+ */
+ SentStatus[SentStatus["DESTROYED"] = 60] = "DESTROYED";
+ })(RongIMLib.SentStatus || (RongIMLib.SentStatus = {}));
+ var SentStatus = RongIMLib.SentStatus;
+ (function (ConnectionState) {
+ ConnectionState[ConnectionState["ACCEPTED"] = 0] = "ACCEPTED";
+ ConnectionState[ConnectionState["UNACCEPTABLE_PROTOCOL_VERSION"] = 1] = "UNACCEPTABLE_PROTOCOL_VERSION";
+ ConnectionState[ConnectionState["IDENTIFIER_REJECTED"] = 2] = "IDENTIFIER_REJECTED";
+ ConnectionState[ConnectionState["SERVER_UNAVAILABLE"] = 3] = "SERVER_UNAVAILABLE";
+ /**
+ * token无效
+ */
+ ConnectionState[ConnectionState["TOKEN_INCORRECT"] = 4] = "TOKEN_INCORRECT";
+ ConnectionState[ConnectionState["NOT_AUTHORIZED"] = 5] = "NOT_AUTHORIZED";
+ ConnectionState[ConnectionState["REDIRECT"] = 6] = "REDIRECT";
+ ConnectionState[ConnectionState["PACKAGE_ERROR"] = 7] = "PACKAGE_ERROR";
+ ConnectionState[ConnectionState["APP_BLOCK_OR_DELETE"] = 8] = "APP_BLOCK_OR_DELETE";
+ ConnectionState[ConnectionState["BLOCK"] = 9] = "BLOCK";
+ ConnectionState[ConnectionState["TOKEN_EXPIRE"] = 10] = "TOKEN_EXPIRE";
+ ConnectionState[ConnectionState["DEVICE_ERROR"] = 11] = "DEVICE_ERROR";
+ })(RongIMLib.ConnectionState || (RongIMLib.ConnectionState = {}));
+ var ConnectionState = RongIMLib.ConnectionState;
+ })(RongIMLib || (RongIMLib = {}));
+
+ // var RongIMLib;
+ (function (RongIMLib) {
+ var RongIMClient = function () {
+ function RongIMClient() {}
+ RongIMClient.getInstance = function () {
+ if (!RongIMClient._instance) {
+ throw new Error("RongIMClient is not initialized. Call .init() method first.");
+ }
+ return RongIMClient._instance;
+ };
+ /**
+ * 初始化 SDK,在整个应用全局只需要调用一次。
+ * @param appKey 开发者后台申请的 AppKey,用来标识应用。
+ * @param dataAccessProvider 必须是DataAccessProvider的实例
+ */
+ RongIMClient.init = function (appKey, dataAccessProvider, options) {
+ if (RongIMClient._instance) {
+ return RongIMClient._memoryStore.sdkInfo;
+ }
+ RongIMClient._instance = new RongIMClient();
+ options = options || {};
+ var protocol = options.protocol || "https://",
+ wsScheme = options.wsScheme || 'wss://';
+ var isPolling = true;
+ RongIMClient._storageProvider = RongIMLib.LocalStorageProvider;
+ RongIMClient._Cahche = {
+ conversationList: [],
+ callbacks: []
+ };
+ var cmpList = ['cometproxy-cn.ronghub.com', 'mini-cn.ronghub.com'];
+ var opts = RongIMLib.ObjectTools.buildOptions(options, {
+ navi: protocol + 'nav.cn.ronghub.com',
+ api: protocol + 'api.cn.ronghub.com',
+ isPolling: true,
+ wsScheme: wsScheme,
+ cookieValidity: 1,
+ protocol: protocol,
+ openMp: true,
+ cmp: cmpList[0],
+ cmpList: cmpList,
+ maxConversationCount: 300
+ }, protocol);
+ var pather = new RongIMLib.FeaturePatcher();
+ pather.patchAll();
+ var tempStore = {
+ token: "",
+ callback: null,
+ hasModules: true,
+ global: window,
+ lastReadTime: new RongIMLib.LimitableMap(),
+ conversationList: [],
+ appKey: appKey,
+ publicServiceMap: new RongIMLib.PublicServiceMap(),
+ providerType: 1,
+ deltaTime: 0,
+ filterMessages: [],
+ isSyncRemoteConverList: false,
+ isUseWebSQLProvider: false,
+ otherDevice: false,
+ custStore: {},
+ converStore: {
+ latestMessage: {}
+ },
+ connectAckTime: 0,
+ voipStategy: 0,
+ isFirstPingMsg: true,
+ depend: opts,
+ listenerList: RongIMClient._memoryStore.listenerList
+ };
+ RongIMClient._memoryStore = tempStore;
+ if (dataAccessProvider && Object.prototype.toString.call(dataAccessProvider) == "[object Object]") {
+ // RongIMClient._memoryStore.isUseWebSQLProvider = true; 处理不同存储方案
+ RongIMClient._dataAccessProvider = dataAccessProvider;
+ } else {
+ RongIMClient._dataAccessProvider = new RongIMLib.ServerDataProvider();
+ }
+ RongIMClient._dataAccessProvider.init(appKey);
+ RongIMClient.MessageParams = {
+ TextMessage: {
+ objectName: "RC:TxtMsg",
+ msgTag: new RongIMLib.MessageTag(true, true)
+ },
+ ImageMessage: {
+ objectName: "RC:ImgMsg",
+ msgTag: new RongIMLib.MessageTag(true, true)
+ },
+ DiscussionNotificationMessage: {
+ objectName: "RC:DizNtf",
+ msgTag: new RongIMLib.MessageTag(true, true)
+ },
+ VoiceMessage: {
+ objectName: "RC:VcMsg",
+ msgTag: new RongIMLib.MessageTag(true, true)
+ },
+ RichContentMessage: {
+ objectName: "RC:ImgTextMsg",
+ msgTag: new RongIMLib.MessageTag(true, true)
+ },
+ FileMessage: {
+ objectName: "RC:FileMsg",
+ msgTag: new RongIMLib.MessageTag(true, true)
+ },
+ HandshakeMessage: {
+ objectName: "",
+ msgTag: new RongIMLib.MessageTag(true, true)
+ },
+ UnknownMessage: {
+ objectName: "",
+ msgTag: new RongIMLib.MessageTag(true, true)
+ },
+ LocationMessage: {
+ objectName: "RC:LBSMsg",
+ msgTag: new RongIMLib.MessageTag(true, true)
+ },
+ InformationNotificationMessage: {
+ objectName: "RC:InfoNtf",
+ msgTag: new RongIMLib.MessageTag(true, true)
+ },
+ ContactNotificationMessage: {
+ objectName: "RC:ContactNtf",
+ msgTag: new RongIMLib.MessageTag(true, true)
+ },
+ ProfileNotificationMessage: {
+ objectName: "RC:ProfileNtf",
+ msgTag: new RongIMLib.MessageTag(true, true)
+ },
+ CommandNotificationMessage: {
+ objectName: "RC:CmdNtf",
+ msgTag: new RongIMLib.MessageTag(true, true)
+ },
+ PublicServiceRichContentMessage: {
+ objectName: "RC:PSImgTxtMsg",
+ msgTag: new RongIMLib.MessageTag(true, true)
+ },
+ PublicServiceMultiRichContentMessage: {
+ objectName: "RC:PSMultiImgTxtMsg",
+ msgTag: new RongIMLib.MessageTag(true, true)
+ },
+ JrmfReadPacketMessage: {
+ objectName: "RCJrmf:RpMsg",
+ msgTag: new RongIMLib.MessageTag(true, true)
+ },
+ JrmfReadPacketOpenedMessage: {
+ objectName: "RCJrmf:RpOpendMsg",
+ msgTag: new RongIMLib.MessageTag(true, true)
+ },
+ GroupNotificationMessage: {
+ objectName: "RC:GrpNtf",
+ msgTag: new RongIMLib.MessageTag(true, true)
+ },
+ CommandMessage: {
+ objectName: "RC:CmdMsg",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ },
+ TypingStatusMessage: {
+ objectName: "RC:TypSts",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ },
+ PublicServiceCommandMessage: {
+ objectName: "RC:PSCmd",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ },
+ RecallCommandMessage: {
+ objectName: "RC:RcCmd",
+ msgTag: new RongIMLib.MessageTag(false, true)
+ },
+ SyncReadStatusMessage: {
+ objectName: "RC:SRSMsg",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ },
+ ReadReceiptRequestMessage: {
+ objectName: "RC:RRReqMsg",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ },
+ ReadReceiptResponseMessage: {
+ objectName: "RC:RRRspMsg",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ },
+ ChangeModeResponseMessage: {
+ objectName: "RC:CsChaR",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ },
+ ChangeModeMessage: {
+ objectName: "RC:CSCha",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ },
+ EvaluateMessage: {
+ objectName: "RC:CsEva",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ },
+ CustomerContact: {
+ objectName: "RC:CsContact",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ },
+ HandShakeMessage: {
+ objectName: "RC:CsHs",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ },
+ HandShakeResponseMessage: {
+ objectName: "RC:CsHsR",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ },
+ SuspendMessage: {
+ objectName: "RC:CsSp",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ },
+ TerminateMessage: {
+ objectName: "RC:CsEnd",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ },
+ CustomerStatusUpdateMessage: {
+ objectName: "RC:CsUpdate",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ },
+ ReadReceiptMessage: {
+ objectName: "RC:ReadNtf",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ }
+ // RCEUpdateStatusMessage: { objectName: "RCE:UpdateStatus", msgTag: new RongIMLib.MessageTag(false, false) }
+ };
+ // if ('RongCallLib' in RongIMLib) {
+ RongIMClient.MessageParams["AcceptMessage"] = {
+ objectName: "RC:VCAccept",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ };
+ RongIMClient.MessageParams["RingingMessage"] = {
+ objectName: "RC:VCRinging",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ };
+ RongIMClient.MessageParams["SummaryMessage"] = {
+ objectName: "RC:VCSummary",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ };
+ RongIMClient.MessageParams["HungupMessage"] = {
+ objectName: "RC:VCHangup",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ };
+ RongIMClient.MessageParams["InviteMessage"] = {
+ objectName: "RC:VCInvite",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ };
+ RongIMClient.MessageParams["MediaModifyMessage"] = {
+ objectName: "RC:VCModifyMedia",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ };
+ RongIMClient.MessageParams["MemberModifyMessage"] = {
+ objectName: "RC:VCModifyMem",
+ msgTag: new RongIMLib.MessageTag(false, false)
+ };
+ // }
+ RongIMClient.MessageType = {
+ TextMessage: "TextMessage",
+ ImageMessage: "ImageMessage",
+ DiscussionNotificationMessage: "DiscussionNotificationMessage",
+ VoiceMessage: "VoiceMessage",
+ RichContentMessage: "RichContentMessage",
+ HandshakeMessage: "HandshakeMessage",
+ UnknownMessage: "UnknownMessage",
+ LocationMessage: "LocationMessage",
+ InformationNotificationMessage: "InformationNotificationMessage",
+ ContactNotificationMessage: "ContactNotificationMessage",
+ ProfileNotificationMessage: "ProfileNotificationMessage",
+ CommandNotificationMessage: "CommandNotificationMessage",
+ CommandMessage: "CommandMessage",
+ TypingStatusMessage: "TypingStatusMessage",
+ ChangeModeResponseMessage: "ChangeModeResponseMessage",
+ ChangeModeMessage: "ChangeModeMessage",
+ EvaluateMessage: "EvaluateMessage",
+ HandShakeMessage: "HandShakeMessage",
+ HandShakeResponseMessage: "HandShakeResponseMessage",
+ SuspendMessage: "SuspendMessage",
+ TerminateMessage: "TerminateMessage",
+ CustomerContact: "CustomerContact",
+ CustomerStatusUpdateMessage: "CustomerStatusUpdateMessage",
+ SyncReadStatusMessage: "SyncReadStatusMessage",
+ ReadReceiptRequestMessage: "ReadReceiptRequestMessage",
+ ReadReceiptResponseMessage: "ReadReceiptResponseMessage",
+ FileMessage: 'FileMessage',
+ AcceptMessage: "AcceptMessage",
+ RingingMessage: "RingingMessage",
+ SummaryMessage: "SummaryMessage",
+ HungupMessage: "HungupMessage",
+ InviteMessage: "InviteMessage",
+ MediaModifyMessage: "MediaModifyMessage",
+ MemberModifyMessage: "MemberModifyMessage",
+ JrmfReadPacketMessage: "JrmfReadPacketMessage",
+ JrmfReadPacketOpenedMessage: "JrmfReadPacketOpenedMessage"
+ // RCEUpdateStatusMessage: "RCEUpdateStatusMessage"
+ };
+
+ RongIMClient.Conversation = RongIMClient._dataAccessProvider.Conversation;
+ };
+ /**
+ * 连接服务器,在整个应用全局只需要调用一次,断线后 SDK 会自动重连。
+ *
+ * @param token 从服务端获取的用户身份令牌(Token)。
+ * @param callback 连接回调,返回连接的成功或者失败状态。
+ */
+ RongIMClient.connect = function (token, callback, userId) {
+ var key = "navi";
+ var storage = RongIMClient._storageProvider;
+ key = storage.getItemKey(key);
+ var server = storage.getItem(key) || "";
+ var isIP = function (str) {
+ var pattern = /^\d{1,3}(\.\d{1,3}){3}(:\d*)?$/;
+ return pattern.test(str);
+ };
+ var domain = server.split(",")[0];
+ if (isIP(domain)) {
+ storage.removeItem("rongSDK");
+ }
+ RongIMLib.CheckParam.getInstance().check(["string", "object", "string|null|object|global|undefined"], "connect", true, arguments);
+ RongIMClient._dataAccessProvider.connect(token, callback, userId);
+ };
+ RongIMClient.ready = function (callback) {
+ var isAlive = function () {
+ var isConnecting = false,
+ isConnected = false;
+ if (RongIMLib.Bridge._client && RongIMLib.Bridge._client.channel) {
+ isConnecting = RongIMLib.Bridge._client.channel.connectionStatus == RongIMLib.ConnectionStatus.CONNECTING;
+ isConnected = RongIMLib.Bridge._client.channel.connectionStatus == RongIMLib.ConnectionStatus.CONNECTED;
+ }
+ if (isConnected || isConnecting) {
+ return true;
+ }
+ return false;
+ };
+ if (isAlive()) {
+ return callback(RongIMLib.Bridge._client);
+ }
+ var connectCallback = RongIMLib.RongIMClient._memoryStore.callback || {
+ onTokenIncorrect: function () {
+ console.error('内部重连, Token Error');
+ },
+ onError: function (code) {
+ console.error('内部重连失败,错误码: %d', code);
+ }
+ };
+ // 连接不可用,进行重连
+ RongIMClient.reconnect({
+ onSuccess: function () {
+ RongIMLib.Bridge._client.channel.connectionStatus = RongIMLib.ConnectionStatus.CONNECTED;
+ callback(RongIMLib.Bridge._client);
+ },
+ onTokenIncorrect: connectCallback.onTokenIncorrect,
+ onError: connectCallback.onError
+ });
+ };
+
+ /**
+ var config = {
+ appkey: appkey,
+ token: token,
+ dataAccessProvider:dataAccessProvider,
+ opts: opts
+ };
+ callback(_instance, userId);
+ */
+ RongIMClient.initApp = function (config, callback) {
+ RongIMClient.init(config.appkey, config.dataAccessProvider, config.opts);
+ RongIMClient.connect(config.token, {
+ onSuccess: function (userId) {
+ callback(RongIMClient._instance, userId);
+ },
+ onTokenIncorrect: function () {
+ throw new Error('token expired');
+ },
+ onError: function (errorCode) {}
+ });
+ };
+ RongIMClient.reconnect = function (callback) {
+ RongIMClient._dataAccessProvider.reconnect(callback);
+ };
+ /**
+ * 注册消息类型,用于注册用户自定义的消息。
+ * 内建的消息类型已经注册过,不需要再次注册。
+ * 自定义消息声明需放在执行顺序最高的位置(在RongIMClient.init(appkey)之后即可)
+ * @param objectName 消息内置名称
+ */
+ RongIMClient.registerMessageType = function (messageType, objectName, messageTag, messageContent) {
+ RongIMClient._dataAccessProvider.registerMessageType(messageType, objectName, messageTag, messageContent);
+ RongIMClient.RegisterMessage[messageType].messageName = messageType;
+ RongIMClient.MessageType[messageType] = messageType;
+ RongIMClient.MessageParams[messageType] = {
+ objectName: objectName,
+ msgTag: messageTag
+ };
+ };
+ /**
+ * 设置连接状态变化的监听器。
+ *
+ * @param listener 连接状态变化的监听器。
+ */
+ RongIMClient.setConnectionStatusListener = function (listener) {
+ if (RongIMClient._dataAccessProvider) {
+ RongIMClient._dataAccessProvider.setConnectionStatusListener(listener);
+ } else {
+ RongIMClient._memoryStore.listenerList.push(listener);
+ }
+ };
+ /**
+ * 设置接收消息的监听器。
+ *
+ * @param listener 接收消息的监听器。
+ */
+ RongIMClient.setOnReceiveMessageListener = function (listener) {
+ if (RongIMClient._dataAccessProvider) {
+ RongIMClient._dataAccessProvider.setOnReceiveMessageListener(listener);
+ } else {
+ RongIMClient._memoryStore.listenerList.push(listener);
+ }
+ };
+ /**
+ * 清理所有连接相关的变量
+ */
+ RongIMClient.prototype.logout = function () {
+ this.clearCache();
+ RongIMClient._dataAccessProvider.logout();
+ };
+ /**
+ * 断开连接。
+ */
+ RongIMClient.prototype.disconnect = function () {
+ RongIMClient._dataAccessProvider.disconnect();
+ };
+ RongIMClient.prototype.startCustomService = function (custId, callback, groupId) {
+ if (!custId || !callback) return;
+ var msg;
+ if (typeof groupId == 'undefined') {
+ msg = new RongIMLib.HandShakeMessage();
+ } else {
+ msg = new RongIMLib.HandShakeMessage({
+ groupid: groupId
+ });
+ }
+ var me = this;
+ RongIMLib.RongIMClient._memoryStore.custStore["isInit"] = true;
+ RongIMClient.getInstance().sendMessage(RongIMLib.ConversationType.CUSTOMER_SERVICE, custId, msg, {
+ onSuccess: function (data) {
+ if (data.isBlack) {
+ callback.onError();
+ me.stopCustomeService(custId, {
+ onSuccess: function () {},
+ onError: function () {}
+ });
+ } else {
+ callback.onSuccess();
+ }
+ },
+ onError: function () {
+ callback.onError();
+ },
+ onBefore: function () {}
+ });
+ };
+ RongIMClient.prototype.stopCustomeService = function (custId, callback) {
+ if (!custId || !callback) return;
+ var session = RongIMClient._memoryStore.custStore[custId];
+ if (!session) return;
+ var msg = new RongIMLib.SuspendMessage({
+ sid: session.sid,
+ uid: session.uid,
+ pid: session.pid
+ });
+ this.sendCustMessage(custId, msg, {
+ onSuccess: function () {
+ // delete RongIMClient._memoryStore.custStore[custId];
+ setTimeout(function () {
+ callback.onSuccess();
+ });
+ },
+ onError: function () {
+ setTimeout(function () {
+ callback.onError();
+ });
+ }
+ });
+ };
+ RongIMClient.prototype.switchToHumanMode = function (custId, callback) {
+ if (!custId || !callback) return;
+ var session = RongIMClient._memoryStore.custStore[custId];
+ if (!session) return;
+ var msg = new RongIMLib.ChangeModeMessage({
+ sid: session.sid,
+ uid: session.uid,
+ pid: session.pid
+ });
+ this.sendCustMessage(custId, msg, callback);
+ };
+ RongIMClient.prototype.evaluateRebotCustomService = function (custId, isRobotResolved, sugest, callback) {
+ if (!custId || !callback) return;
+ var session = RongIMClient._memoryStore.custStore[custId];
+ if (!session) return;
+ var msg = new RongIMLib.EvaluateMessage({
+ sid: session.sid,
+ uid: session.uid,
+ pid: session.pid,
+ isRobotResolved: isRobotResolved,
+ sugest: sugest,
+ type: 0
+ });
+ this.sendCustMessage(custId, msg, callback);
+ };
+ RongIMClient.prototype.evaluateHumanCustomService = function (custId, humanValue, sugest, callback) {
+ if (!custId || !callback) return;
+ var session = RongIMClient._memoryStore.custStore[custId];
+ if (!session) return;
+ var msg = new RongIMLib.EvaluateMessage({
+ sid: session.sid,
+ uid: session.uid,
+ pid: session.pid,
+ humanValue: humanValue,
+ sugest: sugest,
+ type: 1
+ });
+ this.sendCustMessage(custId, msg, callback);
+ };
+ RongIMClient.prototype.sendCustMessage = function (custId, msg, callback) {
+ RongIMClient.getInstance().sendMessage(RongIMLib.ConversationType.CUSTOMER_SERVICE, custId, msg, {
+ onSuccess: function (data) {
+ callback.onSuccess();
+ },
+ onError: function () {
+ callback.onError();
+ },
+ onBefore: function () {}
+ });
+ };
+ /**
+ * 获取当前连接的状态。
+ */
+ RongIMClient.prototype.getCurrentConnectionStatus = function () {
+ return RongIMLib.Bridge._client.channel.connectionStatus;
+ };
+ /**
+ * 获取当前使用的连接通道。
+ */
+ RongIMClient.prototype.getConnectionChannel = function () {
+ if (RongIMLib.Transportations._TransportType == RongIMLib.Socket.XHR_POLLING) {
+ return RongIMLib.ConnectionChannel.XHR_POLLING;
+ } else if (RongIMLib.Transportations._TransportType == RongIMLib.Socket.WEBSOCKET) {
+ return RongIMLib.ConnectionChannel.WEBSOCKET;
+ }
+ };
+ /**
+ * 获取当前使用的本地储存提供者。 TODO
+ */
+ RongIMClient.prototype.getStorageProvider = function () {
+ if (RongIMClient._memoryStore.providerType == 1) {
+ return "ServerDataProvider";
+ } else {
+ return "OtherDataProvider";
+ }
+ };
+ /**
+ * 过滤聊天室消息(拉取最近聊天消息)
+ * @param {string[]} msgFilterNames
+ */
+ RongIMClient.prototype.setFilterMessages = function (msgFilterNames) {
+ if (Object.prototype.toString.call(msgFilterNames) == "[object Array]") {
+ RongIMClient._memoryStore.filterMessages = msgFilterNames;
+ }
+ };
+ RongIMClient.prototype.getAgoraDynamicKey = function (engineType, channelName, callback) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "object"], "getAgoraDynamicKey", false, arguments);
+ var modules = new Modules.VoipDynamicInput();
+ modules.setEngineType(engineType);
+ modules.setChannelName(channelName);
+ RongIMClient.bridge.queryMsg(32, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), RongIMLib.Bridge._client.userId, callback, "VoipDynamicOutput");
+ };
+ /**
+ * 获取当前连接用户的 UserId。
+ */
+ RongIMClient.prototype.getCurrentUserId = function () {
+ return RongIMLib.Bridge._client.userId;
+ };
+ /**
+ * [getCurrentUserInfo 获取当前用户信息]
+ * @param {ResultCallback} callback [回调函数]
+ */
+ // getCurrentUserInfo(callback: ResultCallback) {
+ // CheckParam.getInstance().check(["object"], "getCurrentUserInfo");
+ // this.getUserInfo(Bridge._client.userId, callback);
+ // }
+ /**
+ * 获得用户信息
+ * @param {string} userId [用户Id]
+ * @param {ResultCallback} callback [回调函数]
+ */
+ // getUserInfo(userId: string, callback: ResultCallback) {
+ // CheckParam.getInstance().check(["string", "object"], "getUserInfo");
+ // var user = new Modules.GetUserInfoInput();
+ // user.setNothing(1);
+ // RongIMClient.bridge.queryMsg(5, MessageUtil.ArrayForm(user.toArrayBuffer()), userId, {
+ // onSuccess: function(info: any) {
+ // var userInfo = new UserInfo(info.userId, info.name, info.portraitUri);
+ // callback.onSuccess(userInfo);
+ // },
+ // onError: function(err: any) {
+ // callback.onError(err);
+ // }
+ // }, "GetUserInfoOutput");
+ // }
+ /**
+ * 获取服务器时间与本地时间的差值,单位为毫秒。
+ * 计算公式:差值 = 本地时间毫秒数 - 服务器时间毫秒数
+ * @param callback 获取的回调,返回差值。
+ */
+ RongIMClient.prototype.getDeltaTime = function () {
+ return RongIMClient._dataAccessProvider.getDelaTime();
+ };
+ // #region Message
+ RongIMClient.prototype.getMessage = function (messageId, callback) {
+ RongIMClient._dataAccessProvider.getMessage(messageId, callback);
+ };
+ RongIMClient.prototype.deleteLocalMessages = function (conversationType, targetId, messageIds, callback) {
+ RongIMClient._dataAccessProvider.removeLocalMessage(conversationType, targetId, messageIds, callback);
+ };
+ RongIMClient.prototype.updateMessage = function (message, callback) {
+ RongIMClient._dataAccessProvider.updateMessage(message, callback);
+ };
+ RongIMClient.prototype.clearMessages = function (conversationType, targetId, callback) {
+ RongIMClient._dataAccessProvider.clearMessages(conversationType, targetId, {
+ onSuccess: function (bool) {
+ setTimeout(function () {
+ callback.onSuccess(bool);
+ });
+ },
+ onError: function (errorCode) {
+ setTimeout(function () {
+ callback.onError(errorCode);
+ });
+ }
+ });
+ };
+ /**TODO 清楚本地存储的未读消息,目前清空内存中的未读消息
+ * [clearMessagesUnreadStatus 清空指定会话未读消息]
+ * @param {ConversationType} conversationType [会话类型]
+ * @param {string} targetId [用户id]
+ * @param {ResultCallback} callback [返回值,参数回调]
+ */
+ RongIMClient.prototype.clearMessagesUnreadStatus = function (conversationType, targetId, callback) {
+ RongIMClient._dataAccessProvider.updateMessages(conversationType, targetId, "readStatus", null, {
+ onSuccess: function (bool) {
+ setTimeout(function () {
+ callback.onSuccess(bool);
+ });
+ },
+ onError: function (errorCode) {
+ setTimeout(function () {
+ callback.onError(errorCode);
+ });
+ }
+ });
+ };
+ RongIMClient.prototype.deleteRemoteMessages = function (conversationType, targetId, delMsgs, callback) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "array", "object"], "deleteRemoteMessages", false, arguments);
+ if (delMsgs.length == 0) {
+ callback.onError(RongIMLib.ErrorCode.DELETE_MESSAGE_ID_IS_NULL);
+ return;
+ } else if (delMsgs.length > 100) {
+ delMsgs.length = 100;
+ }
+ // 后续增加,去掉注释即可
+ callback.onSuccess(true);
+ // var modules = new Modules.DeleteMsgInput();
+ // modules.setType(conversationType);
+ // modules.setConversationId(targetId);
+ // modules.setMsgs(delMsgs);
+ // RongIMClient.bridge.queryMsg(33, MessageUtil.ArrayForm(modules.toArrayBuffer()), Bridge._client.userId, {
+ // onSuccess: function(info: any) {
+ // callback.onSuccess(true);
+ // },
+ // onError: function(err: any) {
+ // callback.onError(err);
+ // }
+ // }, "DeleteMsgOutput");
+ };
+ /**
+ * [deleteMessages 删除消息记录。]
+ * @param {ConversationType} conversationType [description]
+ * @param {string} targetId [description]
+ * @param {number[]} messageIds [description]
+ * @param {ResultCallback} callback [description]
+ */
+ RongIMClient.prototype.deleteMessages = function (conversationType, targetId, delMsgs, callback) {
+ RongIMClient._dataAccessProvider.removeMessage(conversationType, targetId, delMsgs, {
+ onSuccess: function (bool) {
+ setTimeout(function () {
+ callback.onSuccess(bool);
+ });
+ },
+ onError: function (errorCode) {
+ setTimeout(function () {
+ callback.onError(errorCode);
+ });
+ }
+ });
+ };
+ RongIMClient.prototype.sendLocalMessage = function (message, callback) {
+ RongIMLib.CheckParam.getInstance().check(["object", "object"], "sendLocalMessage", false, arguments);
+ RongIMClient._dataAccessProvider.updateMessage(message);
+ this.sendMessage(message.conversationType, message.targetId, message.content, callback);
+ };
+ /**
+ * [sendMessage 发送消息。]
+ * @param {ConversationType} conversationType [会话类型]
+ * @param {string} targetId [目标Id]
+ * @param {MessageContent} messageContent [消息类型]
+ * @param {SendMessageCallback} sendCallback []
+ * @param {ResultCallback} resultCallback [返回值,函数回调]
+ * @param {string} pushContent []
+ * @param {string} pushData []
+ */
+ RongIMClient.prototype.sendMessage = function (conversationType, targetId, messageContent, sendCallback, mentiondMsg, pushText, appData, methodType) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "object", "object", "undefined|object|null|global|boolean", "undefined|object|null|global|string", "undefined|object|null|global|string", "undefined|object|null|global|number"], "sendMessage", false, arguments);
+ RongIMClient._dataAccessProvider.sendMessage(conversationType, targetId, messageContent, sendCallback, mentiondMsg, pushText, appData, methodType);
+ };
+ RongIMClient.prototype.sendReceiptResponse = function (conversationType, targetId, sendCallback) {
+ RongIMClient._dataAccessProvider.sendReceiptResponse(conversationType, targetId, sendCallback);
+ };
+ RongIMClient.prototype.sendTypingStatusMessage = function (conversationType, targetId, messageName, sendCallback) {
+ RongIMClient._dataAccessProvider.sendTypingStatusMessage(conversationType, targetId, messageName, sendCallback);
+ };
+ /**
+ * [sendStatusMessage description]
+ * @param {MessageContent} messageContent [description]
+ * @param {SendMessageCallback} sendCallback [description]
+ * @param {ResultCallback} resultCallback [description]
+ */
+ RongIMClient.prototype.sendStatusMessage = function (messageContent, sendCallback, resultCallback) {
+ throw new Error("Not implemented yet");
+ };
+ /**
+ * [sendTextMessage 发送TextMessage快捷方式]
+ * @param {string} content [消息内容]
+ * @param {ResultCallback} resultCallback [返回值,参数回调]
+ */
+ RongIMClient.prototype.sendTextMessage = function (conversationType, targetId, content, sendMessageCallback) {
+ RongIMClient._dataAccessProvider.sendTextMessage(conversationType, targetId, content, sendMessageCallback);
+ };
+ RongIMClient.prototype.sendRecallMessage = function (content, sendMessageCallback) {
+ RongIMClient._dataAccessProvider.sendRecallMessage(content, sendMessageCallback);
+ };
+ /**
+ * [insertMessage 向本地插入一条消息,不发送到服务器。]
+ * @param {ConversationType} conversationType [description]
+ * @param {string} targetId [description]
+ * @param {string} senderUserId [description]
+ * @param {MessageContent} content [description]
+ * @param {ResultCallback} callback [description]
+ */
+ RongIMClient.prototype.insertMessage = function (conversationType, targetId, senderUserId, content, callback) {
+ RongIMClient._dataAccessProvider.addMessage(conversationType, targetId, content, callback);
+ };
+ /**
+ * [getHistoryMessages 拉取历史消息记录。]
+ * @param {ConversationType} conversationType [会话类型]
+ * @param {string} targetId [用户Id]
+ * @param {number|null} pullMessageTime [拉取历史消息起始位置(格式为毫秒数),可以为null]
+ * @param {number} count [历史消息数量]
+ * @param {ResultCallback} callback [回调函数]
+ * @param {string} objectName [objectName]
+ */
+ RongIMClient.prototype.getHistoryMessages = function (conversationType, targetId, timestamp, count, callback, objectname, direction) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "number|null|global|object", "number", "object", "undefined|object|null|global|string", "boolean|null|global|object"], "getHistoryMessages", false, arguments);
+ if (count > 20) {
+ throw new Error("HistroyMessage count must be less than or equal to 20!");
+ }
+ if (conversationType.valueOf() < 0) {
+ throw new Error("ConversationType must be greater than -1");
+ }
+ RongIMClient._dataAccessProvider.getHistoryMessages(conversationType, targetId, timestamp, count, callback, objectname, direction);
+ };
+ RongIMClient.prototype.setMessageContent = function (messageId, content, objectName) {
+ RongIMClient._dataAccessProvider.setMessageContent(messageId, content, objectName);
+ };
+ ;
+ /**
+ * [getRemoteHistoryMessages 拉取某个时间戳之前的消息]
+ * @param {ConversationType} conversationType [description]
+ * @param {string} targetId [description]
+ * @param {Date} dateTime [description]
+ * @param {number} count [description]
+ * @param {ResultCallback} callback [description]
+ */
+ RongIMClient.prototype.getRemoteHistoryMessages = function (conversationType, targetId, timestamp, count, callback) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "number|null|global|object", "number", "object"], "getRemoteHistoryMessages", false, arguments);
+ if (count > 20) {
+ callback.onError(RongIMLib.ErrorCode.RC_CONN_PROTO_VERSION_ERROR);
+ return;
+ }
+ if (conversationType.valueOf() < 0) {
+ callback.onError(RongIMLib.ErrorCode.RC_CONN_PROTO_VERSION_ERROR);
+ return;
+ }
+ RongIMClient._dataAccessProvider.getRemoteHistoryMessages(conversationType, targetId, timestamp, count, callback);
+ };
+ /**
+ * [hasRemoteUnreadMessages 是否有未接收的消息,jsonp方法]
+ * @param {string} appkey [appkey]
+ * @param {string} token [token]
+ * @param {ConnectCallback} callback [返回值,参数回调]
+ */
+ RongIMClient.prototype.hasRemoteUnreadMessages = function (token, callback) {
+ RongIMClient._dataAccessProvider.hasRemoteUnreadMessages(token, callback);
+ };
+ RongIMClient.prototype.getTotalUnreadCount = function (callback, conversationTypes) {
+ RongIMClient._dataAccessProvider.getTotalUnreadCount({
+ onSuccess: function (count) {
+ setTimeout(function () {
+ callback.onSuccess(count);
+ });
+ },
+ onError: function (errorCode) {
+ setTimeout(function () {
+ callback.onError(errorCode);
+ });
+ }
+ }, conversationTypes);
+ };
+ /**
+ * [getConversationUnreadCount 指定多种会话类型获取未读消息数]
+ * @param {ResultCallback} callback [返回值,参数回调。]
+ * @param {ConversationType[]} ...conversationTypes [会话类型。]
+ */
+ RongIMClient.prototype.getConversationUnreadCount = function (conversationTypes, callback) {
+ RongIMClient._dataAccessProvider.getConversationUnreadCount(conversationTypes, {
+ onSuccess: function (count) {
+ setTimeout(function () {
+ callback.onSuccess(count);
+ });
+ },
+ onError: function (errorCode) {
+ setTimeout(function () {
+ callback.onError(errorCode);
+ });
+ }
+ });
+ };
+ /**
+ * [getUnreadCount 指定用户、会话类型的未读消息总数。]
+ * @param {ConversationType} conversationType [会话类型]
+ * @param {string} targetId [用户Id]
+ */
+ RongIMClient.prototype.getUnreadCount = function (conversationType, targetId, callback) {
+ RongIMClient._dataAccessProvider.getUnreadCount(conversationType, targetId, {
+ onSuccess: function (count) {
+ setTimeout(function () {
+ callback.onSuccess(count);
+ });
+ },
+ onError: function (errorCode) {
+ setTimeout(function () {
+ callback.onError(errorCode);
+ });
+ }
+ });
+ };
+ RongIMClient.prototype.clearUnreadCountByTimestamp = function (conversationType, targetId, timestamp, callback) {
+ RongIMClient._dataAccessProvider.clearUnreadCountByTimestamp(conversationType, targetId, timestamp, callback);
+ };
+ /**
+ * 清楚会话未读消息数
+ * @param {ConversationType} conversationType 会话类型
+ * @param {string} targetId 目标Id
+ * @param {ResultCallback} callback 返回值,函数回调
+ */
+ RongIMClient.prototype.clearUnreadCount = function (conversationType, targetId, callback) {
+ RongIMClient._dataAccessProvider.clearUnreadCount(conversationType, targetId, {
+ onSuccess: function (bool) {
+ setTimeout(function () {
+ callback.onSuccess(bool);
+ });
+ },
+ onError: function (errorCode) {
+ setTimeout(function () {
+ callback.onError(errorCode);
+ });
+ }
+ });
+ };
+ RongIMClient.prototype.clearTotalUnreadCount = function (callback) {
+ RongIMClient._dataAccessProvider.clearTotalUnreadCount({
+ onSuccess: function (bool) {
+ setTimeout(function () {
+ callback.onSuccess(bool);
+ });
+ },
+ onError: function (errorCode) {
+ setTimeout(function () {
+ callback.onError(errorCode);
+ });
+ }
+ });
+ };
+ RongIMClient.prototype.clearLocalStorage = function (callback) {
+ RongIMClient._storageProvider.clearItem();
+ callback();
+ };
+ RongIMClient.prototype.setMessageExtra = function (messageId, value, callback) {
+ RongIMClient._dataAccessProvider.setMessageExtra(messageId, value, {
+ onSuccess: function (bool) {
+ setTimeout(function () {
+ callback.onSuccess(bool);
+ });
+ },
+ onError: function (errorCode) {
+ setTimeout(function () {
+ callback.onError(errorCode);
+ });
+ }
+ });
+ };
+ RongIMClient.prototype.setMessageReceivedStatus = function (messageUId, receivedStatus, callback) {
+ RongIMClient._dataAccessProvider.setMessageReceivedStatus(messageUId, receivedStatus, {
+ onSuccess: function (bool) {
+ setTimeout(function () {
+ callback.onSuccess(bool);
+ });
+ },
+ onError: function (errorCode) {
+ setTimeout(function () {
+ callback.onError(errorCode);
+ });
+ }
+ });
+ };
+ RongIMClient.prototype.setMessageStatus = function (conersationType, targetId, timestamp, status, callback) {
+ RongIMClient._dataAccessProvider.setMessageStatus(conersationType, targetId, timestamp, status, callback);
+ };
+ RongIMClient.prototype.setMessageSentStatus = function (messageId, sentStatus, callback) {
+ RongIMClient._dataAccessProvider.setMessageSentStatus(messageId, sentStatus, {
+ onSuccess: function (bool) {
+ setTimeout(function () {
+ callback.onSuccess(bool);
+ });
+ },
+ onError: function (errorCode) {
+ setTimeout(function () {
+ callback.onError(errorCode);
+ });
+ }
+ });
+ };
+ // #endregion Message
+ // #region TextMessage Draft
+ /**
+ * clearTextMessageDraft 清除指定会话和消息类型的草稿。
+ * @param {ConversationType} conversationType 会话类型
+ * @param {string} targetId 目标Id
+ */
+ RongIMClient.prototype.clearTextMessageDraft = function (conversationType, targetId) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "object"], "clearTextMessageDraft", false, arguments);
+ var key = "darf_" + conversationType + "_" + targetId;
+ delete RongIMClient._memoryStore[key];
+ return true;
+ };
+ /**
+ * [getTextMessageDraft 获取指定消息和会话的草稿。]
+ * @param {ConversationType} conversationType [会话类型]
+ * @param {string} targetId [目标Id]
+ */
+ RongIMClient.prototype.getTextMessageDraft = function (conversationType, targetId) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "object"], "getTextMessageDraft", false, arguments);
+ if (targetId == "" || conversationType < 0) {
+ throw new Error("params error : " + RongIMLib.ErrorCode.DRAF_GET_ERROR);
+ }
+ var key = "darf_" + conversationType + "_" + targetId;
+ return RongIMClient._memoryStore[key];
+ };
+ /**
+ * [saveTextMessageDraft description]
+ * @param {ConversationType} conversationType [会话类型]
+ * @param {string} targetId [目标Id]
+ * @param {string} value [草稿值]
+ */
+ RongIMClient.prototype.saveTextMessageDraft = function (conversationType, targetId, value) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "string", "object"], "saveTextMessageDraft", false, arguments);
+ var key = "darf_" + conversationType + "_" + targetId;
+ RongIMClient._memoryStore[key] = value;
+ return true;
+ };
+ // #endregion TextMessage Draft
+ // #region Conversation
+ RongIMClient.prototype.searchConversationByContent = function (keyword, callback, conversationTypes) {
+ RongIMClient._dataAccessProvider.searchConversationByContent(keyword, callback, conversationTypes);
+ };
+ RongIMClient.prototype.searchMessageByContent = function (conversationType, targetId, keyword, timestamp, count, total, callback) {
+ RongIMClient._dataAccessProvider.searchMessageByContent(conversationType, targetId, keyword, timestamp, count, total, callback);
+ };
+ RongIMClient.prototype.clearCache = function () {
+ RongIMClient._dataAccessProvider.clearCache();
+ };
+ RongIMClient.prototype.clearConversations = function (callback) {
+ var conversationTypes = [];
+ for (var _i = 1; _i < arguments.length; _i++) {
+ conversationTypes[_i - 1] = arguments[_i];
+ }
+ if (conversationTypes.length == 0) {
+ conversationTypes = [RongIMLib.ConversationType.CHATROOM, RongIMLib.ConversationType.CUSTOMER_SERVICE, RongIMLib.ConversationType.DISCUSSION, RongIMLib.ConversationType.GROUP, RongIMLib.ConversationType.PRIVATE, RongIMLib.ConversationType.SYSTEM, RongIMLib.ConversationType.PUBLIC_SERVICE, RongIMLib.ConversationType.APP_PUBLIC_SERVICE];
+ }
+ RongIMClient._dataAccessProvider.clearConversations(conversationTypes, {
+ onSuccess: function (bool) {
+ setTimeout(function () {
+ callback.onSuccess(bool);
+ });
+ },
+ onError: function (errorCode) {
+ setTimeout(function () {
+ callback.onError(errorCode);
+ });
+ }
+ });
+ };
+ /**
+ * [getConversation 获取指定会话,此方法需在getConversationList之后执行]
+ * @param {ConversationType} conversationType [会话类型]
+ * @param {string} targetId [目标Id]
+ * @param {ResultCallback} callback [返回值,函数回调]
+ */
+ RongIMClient.prototype.getConversation = function (conversationType, targetId, callback) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "object"], "getConversation", false, arguments);
+ RongIMClient._dataAccessProvider.getConversation(conversationType, targetId, {
+ onSuccess: function (conver) {
+ setTimeout(function () {
+ callback.onSuccess(conver);
+ });
+ },
+ onError: function (error) {
+ setTimeout(function () {
+ callback.onError(error);
+ });
+ }
+ });
+ };
+ /**
+ * [pottingConversation 组装会话列表]
+ * @param {any} tempConver [临时会话]
+ * conver_conversationType_targetId_no.
+ * msg_conversationType_targetId_no.
+ */
+ RongIMClient.prototype.pottingConversation = function (tempConver) {
+ var self = this,
+ isUseReplace = false;
+ RongIMClient._dataAccessProvider.getConversation(tempConver.type, tempConver.userId, {
+ onSuccess: function (conver) {
+ if (!conver) {
+ conver = new RongIMLib.Conversation();
+ } else {
+ isUseReplace = true;
+ }
+ conver.conversationType = tempConver.type;
+ conver.targetId = tempConver.userId;
+ conver.latestMessage = RongIMLib.MessageUtil.messageParser(tempConver.msg);
+ conver.latestMessageId = conver.latestMessage.messageId;
+ conver.objectName = conver.latestMessage.objectName;
+ conver.receivedStatus = conver.latestMessage.receivedStatus;
+ conver.receivedTime = conver.latestMessage.receiveTime;
+ conver.sentStatus = conver.latestMessage.sentStatus;
+ conver.sentTime = conver.latestMessage.sentTime;
+ var mentioneds = RongIMClient._storageProvider.getItem("mentioneds_" + RongIMLib.Bridge._client.userId + '_' + conver.conversationType + '_' + conver.targetId);
+ if (mentioneds) {
+ var info = JSON.parse(mentioneds);
+ conver.mentionedMsg = info[tempConver.type + "_" + tempConver.userId];
+ }
+ if (!isUseReplace) {
+ if (RongIMLib.MessageUtil.supportLargeStorage()) {
+ var count = RongIMClient._storageProvider.getItem("cu" + RongIMLib.Bridge._client.userId + tempConver.type + tempConver.userId);
+ conver.unreadMessageCount = Number(count);
+ } else {
+ conver.unreadMessageCount = 0;
+ }
+ }
+ // if (conver.conversationType == ConversationType.PRIVATE) {
+ // self.getUserInfo(tempConver.userId, >{
+ // onSuccess: function(info: UserInfo) {
+ // conver.conversationTitle = info.name;
+ // conver.senderUserName = info.name;
+ // conver.senderUserId = info.userId;
+ // conver.senderPortraitUri = info.portraitUri;
+ // },
+ // onError: function(error: ErrorCode) { }
+ // });
+ // } else
+ if (conver.conversationType == RongIMLib.ConversationType.DISCUSSION) {
+ self.getDiscussion(tempConver.userId, {
+ onSuccess: function (info) {
+ conver.conversationTitle = info.name;
+ },
+ onError: function (error) {}
+ });
+ }
+ RongIMClient._dataAccessProvider.addConversation(conver, {
+ onSuccess: function (data) {}
+ });
+ },
+ onError: function (error) {}
+ });
+ };
+ RongIMClient.prototype.sortConversationList = function (conversationList) {
+ var convers = [];
+ for (var i = 0, len = conversationList.length; i < len; i++) {
+ if (!conversationList[i]) {
+ continue;
+ }
+ if (conversationList[i].isTop) {
+ convers.push(conversationList[i]);
+ conversationList.splice(i, 1);
+ continue;
+ }
+ for (var j = 0; j < len - i - 1; j++) {
+ if (conversationList[j].sentTime < conversationList[j + 1].sentTime) {
+ var swap = conversationList[j];
+ conversationList[j] = conversationList[j + 1];
+ conversationList[j + 1] = swap;
+ }
+ }
+ }
+ return RongIMClient._memoryStore.conversationList = convers.concat(conversationList);
+ };
+ RongIMClient.prototype.getConversationList = function (callback, conversationTypes, count, isGetHiddenConvers) {
+ RongIMLib.CheckParam.getInstance().check(["object", "null|array|object|global", "number|undefined|null|object|global", "boolean|undefined|null|object|global"], "getConversationList", false, arguments);
+ var me = this;
+ RongIMClient._dataAccessProvider.getConversationList({
+ onSuccess: function (data) {
+ if (conversationTypes || RongIMClient._dataAccessProvider) {
+ setTimeout(function () {
+ callback.onSuccess(data);
+ });
+ } else {
+ setTimeout(function () {
+ callback.onSuccess(RongIMClient._memoryStore.conversationList);
+ });
+ }
+ },
+ onError: function (error) {
+ if (error === RongIMLib.ErrorCode.TIMEOUT) {
+ callback.onError(error);
+ } else {
+ callback.onSuccess([]);
+ }
+ }
+ }, conversationTypes, count, isGetHiddenConvers);
+ };
+ RongIMClient.prototype.getRemoteConversationList = function (callback, conversationTypes, count, isGetHiddenConvers) {
+ RongIMLib.CheckParam.getInstance().check(["object", "null|array|object|global", "number|undefined|null|object|global", "boolean|undefined|null|object|global"], "getRemoteConversationList", false, arguments);
+ RongIMClient._dataAccessProvider.getRemoteConversationList(callback, conversationTypes, count, isGetHiddenConvers);
+ };
+ RongIMClient.prototype.updateConversation = function (conversation) {
+ return RongIMClient._dataAccessProvider.updateConversation(conversation);
+ };
+ /**
+ * [createConversation 创建会话。]
+ * @param {number} conversationType [会话类型]
+ * @param {string} targetId [目标Id]
+ * @param {string} converTitle [会话标题]
+ * @param {boolean} islocal [是否同步到服务器,ture:同步,false:不同步]
+ */
+ RongIMClient.prototype.createConversation = function (conversationType, targetId, converTitle) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "string"], "createConversation", false, arguments);
+ var conver = new RongIMLib.Conversation();
+ conver.targetId = targetId;
+ conver.conversationType = conversationType;
+ conver.conversationTitle = converTitle;
+ conver.latestMessage = {};
+ conver.unreadMessageCount = 0;
+ return conver;
+ };
+ //TODO 删除本地和服务器、删除本地和服务器分开
+ RongIMClient.prototype.removeConversation = function (conversationType, targetId, callback) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "object"], "removeConversation", false, arguments);
+ RongIMClient._dataAccessProvider.removeConversation(conversationType, targetId, callback);
+ };
+ RongIMClient.prototype.setConversationHidden = function (conversationType, targetId, isHidden) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "boolean"], "setConversationHidden", false, arguments);
+ RongIMClient._dataAccessProvider.setConversationHidden(conversationType, targetId, isHidden);
+ };
+ RongIMClient.prototype.setConversationToTop = function (conversationType, targetId, isTop, callback) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "boolean", "object"], "setConversationToTop", false, arguments);
+ RongIMClient._dataAccessProvider.setConversationToTop(conversationType, targetId, isTop, {
+ onSuccess: function (bool) {
+ setTimeout(function () {
+ callback.onSuccess(bool);
+ });
+ },
+ onError: function (errorCode) {
+ setTimeout(function () {
+ callback.onError(errorCode);
+ });
+ }
+ });
+ };
+ // #endregion Conversation
+ // #region Notifications
+ /**
+ * [getConversationNotificationStatus 获取指定用户和会话类型免提醒。]
+ * @param {ConversationType} conversationType [会话类型]
+ * @param {string} targetId [目标Id]
+ * @param {ResultCallback} callback [返回值,函数回调]
+ */
+ RongIMClient.prototype.getConversationNotificationStatus = function (conversationType, targetId, callback) {
+ throw new Error("Not implemented yet");
+ };
+ /**
+ * [setConversationNotificationStatus 设置指定用户和会话类型免提醒。]
+ * @param {ConversationType} conversationType [会话类型]
+ * @param {string} targetId [目标Id]
+ * @param {ResultCallback} callback [返回值,函数回调]
+ */
+ RongIMClient.prototype.setConversationNotificationStatus = function (conversationType, targetId, notificationStatus, callback) {
+ throw new Error("Not implemented yet");
+ };
+ /**
+ * [getNotificationQuietHours 获取免提醒消息时间。]
+ * @param {GetNotificationQuietHoursCallback} callback [返回值,函数回调]
+ */
+ RongIMClient.prototype.getNotificationQuietHours = function (callback) {
+ throw new Error("Not implemented yet");
+ };
+ /**
+ * [removeNotificationQuietHours 移除免提醒消息时间。]
+ * @param {GetNotificationQuietHoursCallback} callback [返回值,函数回调]
+ */
+ RongIMClient.prototype.removeNotificationQuietHours = function (callback) {
+ throw new Error("Not implemented yet");
+ };
+ /**
+ * [setNotificationQuietHours 设置免提醒消息时间。]
+ * @param {GetNotificationQuietHoursCallback} callback [返回值,函数回调]
+ */
+ RongIMClient.prototype.setNotificationQuietHours = function (startTime, spanMinutes, callback) {
+ throw new Error("Not implemented yet");
+ };
+ // #endregion Notifications
+ // #region Discussion
+ /**
+ * [addMemberToDiscussion 加入讨论组]
+ * @param {string} discussionId [讨论组Id]
+ * @param {string[]} userIdList [讨论中成员]
+ * @param {OperationCallback} callback [返回值,函数回调]
+ */
+ RongIMClient.prototype.addMemberToDiscussion = function (discussionId, userIdList, callback) {
+ RongIMLib.CheckParam.getInstance().check(["string", "array", "object"], "addMemberToDiscussion", false, arguments);
+ RongIMClient._dataAccessProvider.addMemberToDiscussion(discussionId, userIdList, callback);
+ };
+ /**
+ * [createDiscussion 创建讨论组]
+ * @param {string} name [讨论组名称]
+ * @param {string[]} userIdList [讨论组成员]
+ * @param {CreateDiscussionCallback} callback [返回值,函数回调]
+ */
+ RongIMClient.prototype.createDiscussion = function (name, userIdList, callback) {
+ RongIMLib.CheckParam.getInstance().check(["string", "array", "object"], "createDiscussion", false, arguments);
+ RongIMClient._dataAccessProvider.createDiscussion(name, userIdList, callback);
+ };
+ /**
+ * [getDiscussion 获取讨论组信息]
+ * @param {string} discussionId [讨论组Id]
+ * @param {ResultCallback} callback [返回值,函数回调]
+ */
+ RongIMClient.prototype.getDiscussion = function (discussionId, callback) {
+ RongIMLib.CheckParam.getInstance().check(["string", "object"], "getDiscussion", false, arguments);
+ RongIMClient._dataAccessProvider.getDiscussion(discussionId, callback);
+ };
+ /**
+ * [quitDiscussion 退出讨论组]
+ * @param {string} discussionId [讨论组Id]
+ * @param {OperationCallback} callback [返回值,函数回调]
+ */
+ RongIMClient.prototype.quitDiscussion = function (discussionId, callback) {
+ RongIMLib.CheckParam.getInstance().check(["string", "object"], "quitDiscussion", false, arguments);
+ RongIMClient._dataAccessProvider.quitDiscussion(discussionId, callback);
+ };
+ /**
+ * [removeMemberFromDiscussion 将指定成员移除讨论租]
+ * @param {string} discussionId [讨论组Id]
+ * @param {string} userId [被移除的用户Id]
+ * @param {OperationCallback} callback [返回值,参数回调]
+ */
+ RongIMClient.prototype.removeMemberFromDiscussion = function (discussionId, userId, callback) {
+ RongIMLib.CheckParam.getInstance().check(["string", "string", "object"], "removeMemberFromDiscussion", false, arguments);
+ RongIMClient._dataAccessProvider.removeMemberFromDiscussion(discussionId, userId, callback);
+ };
+ /**
+ * [setDiscussionInviteStatus 设置讨论组邀请状态]
+ * @param {string} discussionId [讨论组Id]
+ * @param {DiscussionInviteStatus} status [邀请状态]
+ * @param {OperationCallback} callback [返回值,函数回调]
+ */
+ RongIMClient.prototype.setDiscussionInviteStatus = function (discussionId, status, callback) {
+ RongIMLib.CheckParam.getInstance().check(["string", "number", "object"], "setDiscussionInviteStatus", false, arguments);
+ RongIMClient._dataAccessProvider.setDiscussionInviteStatus(discussionId, status, callback);
+ };
+ /**
+ * [setDiscussionName 设置讨论组名称]
+ * @param {string} discussionId [讨论组Id]
+ * @param {string} name [讨论组名称]
+ * @param {OperationCallback} callback [返回值,函数回调]
+ */
+ RongIMClient.prototype.setDiscussionName = function (discussionId, name, callback) {
+ RongIMLib.CheckParam.getInstance().check(["string", "string", "object"], "setDiscussionName", false, arguments);
+ RongIMClient._dataAccessProvider.setDiscussionName(discussionId, name, callback);
+ };
+ // #endregion Discussion
+ // #region Group
+ /**
+ * [加入群组]
+ * @param {string} groupId [群组Id]
+ * @param {string} groupName [群组名称]
+ * @param {OperationCallback} callback [返回值,函数回调]
+ */
+ RongIMClient.prototype.joinGroup = function (groupId, groupName, callback) {
+ RongIMLib.CheckParam.getInstance().check(["string", "string", "object"], "joinGroup", false, arguments);
+ RongIMClient._dataAccessProvider.joinGroup(groupId, groupName, callback);
+ };
+ /**
+ * [退出群组]
+ * @param {string} groupId [群组Id]
+ * @param {OperationCallback} callback [返回值,函数回调]
+ */
+ RongIMClient.prototype.quitGroup = function (groupId, callback) {
+ RongIMLib.CheckParam.getInstance().check(["string", "object"], "quitGroup", false, arguments);
+ RongIMClient._dataAccessProvider.quitGroup(groupId, callback);
+ };
+ /**
+ * [同步群组信息]
+ * @param {Array} groups [群组列表]
+ * @param {OperationCallback} callback [返回值,函数回调]
+ */
+ RongIMClient.prototype.syncGroup = function (groups, callback) {
+ RongIMLib.CheckParam.getInstance().check(["array", "object"], "syncGroup", false, arguments);
+ RongIMClient._dataAccessProvider.syncGroup(groups, callback);
+ };
+ // #endregion Group
+ // #region ChatRoom
+ /**
+ * [加入聊天室。]
+ * @param {string} chatroomId [聊天室Id]
+ * @param {number} messageCount [拉取消息数量,-1为不拉去消息]
+ * @param {OperationCallback} callback [返回值,函数回调]
+ */
+ RongIMClient.prototype.joinChatRoom = function (chatroomId, messageCount, callback) {
+ RongIMLib.CheckParam.getInstance().check(["string", "number", "object"], "joinChatRoom", false, arguments);
+ if (chatroomId == "") {
+ setTimeout(function () {
+ callback.onError(RongIMLib.ErrorCode.CHATROOM_ID_ISNULL);
+ });
+ return;
+ }
+ RongIMClient._dataAccessProvider.joinChatRoom(chatroomId, messageCount, callback);
+ };
+ RongIMClient.prototype.setChatroomHisMessageTimestamp = function (chatRoomId, timestamp) {
+ RongIMLib.CheckParam.getInstance().check(["string", "number"], "setChatroomHisMessageTimestamp", false, arguments);
+ RongIMClient._dataAccessProvider.setChatroomHisMessageTimestamp(chatRoomId, timestamp);
+ };
+ RongIMClient.prototype.getChatRoomHistoryMessages = function (chatRoomId, count, order, callback) {
+ RongIMLib.CheckParam.getInstance().check(["string", "number", "number", "object"], "getChatRoomHistoryMessages", false, arguments);
+ RongIMClient._dataAccessProvider.getChatRoomHistoryMessages(chatRoomId, count, order, callback);
+ };
+ RongIMClient.prototype.getChatRoomInfo = function (chatRoomId, count, order, callback) {
+ RongIMLib.CheckParam.getInstance().check(["string", "number", "number", "object"], "getChatRoomInfo", false, arguments);
+ RongIMClient._dataAccessProvider.getChatRoomInfo(chatRoomId, count, order, callback);
+ };
+ /**
+ * [退出聊天室]
+ * @param {string} chatroomId [聊天室Id]
+ * @param {OperationCallback} callback [返回值,函数回调]
+ */
+ RongIMClient.prototype.quitChatRoom = function (chatroomId, callback) {
+ RongIMLib.CheckParam.getInstance().check(["string", "object"], "quitChatRoom", false, arguments);
+ RongIMClient._dataAccessProvider.quitChatRoom(chatroomId, callback);
+ };
+ // #endregion ChatRoom
+ // #region Public Service
+ RongIMClient.prototype.getRemotePublicServiceList = function (callback, pullMessageTime) {
+ if (RongIMClient._memoryStore.depend.openMp) {
+ var modules = new Modules.PullMpInput(),
+ self = this;
+ if (!pullMessageTime) {
+ modules.setTime(0);
+ } else {
+ modules.setTime(pullMessageTime);
+ }
+ modules.setMpid("");
+ RongIMClient.bridge.queryMsg(28, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), RongIMLib.Bridge._client.userId, {
+ onSuccess: function (data) {
+ //TODO 找出最大时间
+ // self.lastReadTime.set(conversationType + targetId, MessageUtil.int64ToTimestamp(data.syncTime));
+ RongIMClient._memoryStore.publicServiceMap.publicServiceList.length = 0;
+ RongIMClient._memoryStore.publicServiceMap.publicServiceList = data;
+ callback.onSuccess(data);
+ },
+ onError: function () {}
+ }, "PullMpOutput");
+ }
+ };
+ /**
+ * [getPublicServiceList ]获取本地的公共账号列表
+ * @param {ResultCallback} callback [返回值,参数回调]
+ */
+ RongIMClient.prototype.getPublicServiceList = function (callback) {
+ if (RongIMClient._memoryStore.depend.openMp) {
+ RongIMLib.CheckParam.getInstance().check(["object"], "getPublicServiceList", false, arguments);
+ this.getRemotePublicServiceList(callback);
+ }
+ };
+ /**
+ * [getPublicServiceProfile ] 获取某公共服务信息。
+ * @param {PublicServiceType} publicServiceType [公众服务类型。]
+ * @param {string} publicServiceId [公共服务 Id。]
+ * @param {ResultCallback} callback [公共账号信息回调。]
+ */
+ RongIMClient.prototype.getPublicServiceProfile = function (publicServiceType, publicServiceId, callback) {
+ if (RongIMClient._memoryStore.depend.openMp) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "object"], "getPublicServiceProfile", false, arguments);
+ var profile = RongIMClient._memoryStore.publicServiceMap.get(publicServiceType, publicServiceId);
+ callback.onSuccess(profile);
+ }
+ };
+ /**
+ * [pottingPublicSearchType ] 公众好查询类型
+ * @param {number} bussinessType [ 0-all 1-mp 2-mc]
+ * @param {number} searchType [0-exact 1-fuzzy]
+ */
+ RongIMClient.prototype.pottingPublicSearchType = function (bussinessType, searchType) {
+ if (RongIMClient._memoryStore.depend.openMp) {
+ var bits = 0;
+ if (bussinessType == 0) {
+ bits |= 3;
+ if (searchType == 0) {
+ bits |= 12;
+ } else {
+ bits |= 48;
+ }
+ } else if (bussinessType == 1) {
+ bits |= 1;
+ if (searchType == 0) {
+ bits |= 8;
+ } else {
+ bits |= 32;
+ }
+ } else {
+ bits |= 2;
+ if (bussinessType == 0) {
+ bits |= 4;
+ } else {
+ bits |= 16;
+ }
+ }
+ return bits;
+ }
+ };
+ /**
+ * [searchPublicService ]按公众服务类型搜索公众服务。
+ * @param {SearchType} searchType [搜索类型枚举。]
+ * @param {string} keywords [搜索关键字。]
+ * @param {ResultCallback} callback [搜索结果回调。]
+ */
+ RongIMClient.prototype.searchPublicService = function (searchType, keywords, callback) {
+ if (RongIMClient._memoryStore.depend.openMp) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "object"], "searchPublicService", false, arguments);
+ var modules = new Modules.SearchMpInput();
+ modules.setType(this.pottingPublicSearchType(0, searchType));
+ modules.setId(keywords);
+ RongIMClient.bridge.queryMsg(29, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), RongIMLib.Bridge._client.userId, callback, "SearchMpOutput");
+ }
+ };
+ /**
+ * [searchPublicServiceByType ]按公众服务类型搜索公众服务。
+ * @param {PublicServiceType} publicServiceType [公众服务类型。]
+ * @param {SearchType} searchType [搜索类型枚举。]
+ * @param {string} keywords [搜索关键字。]
+ * @param {ResultCallback} callback [搜索结果回调。]
+ */
+ RongIMClient.prototype.searchPublicServiceByType = function (publicServiceType, searchType, keywords, callback) {
+ if (RongIMClient._memoryStore.depend.openMp) {
+ RongIMLib.CheckParam.getInstance().check(["number", "number", "string", "object"], "searchPublicServiceByType", false, arguments);
+ var type = publicServiceType == RongIMLib.ConversationType.APP_PUBLIC_SERVICE ? 2 : 1;
+ var modules = new Modules.SearchMpInput();
+ modules.setType(this.pottingPublicSearchType(type, searchType));
+ modules.setId(keywords);
+ RongIMClient.bridge.queryMsg(29, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), RongIMLib.Bridge._client.userId, callback, "SearchMpOutput");
+ }
+ };
+ /**
+ * [subscribePublicService ] 订阅公众号。
+ * @param {PublicServiceType} publicServiceType [公众服务类型。]
+ * @param {string} publicServiceId [公共服务 Id。]
+ * @param {OperationCallback} callback [订阅公众号回调。]
+ */
+ RongIMClient.prototype.subscribePublicService = function (publicServiceType, publicServiceId, callback) {
+ if (RongIMClient._memoryStore.depend.openMp) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "object"], "subscribePublicService", false, arguments);
+ var modules = new Modules.MPFollowInput(),
+ me = this,
+ follow = publicServiceType == RongIMLib.ConversationType.APP_PUBLIC_SERVICE ? "mcFollow" : "mpFollow";
+ modules.setId(publicServiceId);
+ RongIMClient.bridge.queryMsg(follow, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), RongIMLib.Bridge._client.userId, {
+ onSuccess: function () {
+ me.getRemotePublicServiceList({
+ onSuccess: function () {},
+ onError: function () {}
+ });
+ callback.onSuccess();
+ },
+ onError: function (code) {
+ callback.onError(code);
+ }
+ }, "MPFollowOutput");
+ }
+ };
+ /**
+ * [unsubscribePublicService ] 取消订阅公众号。
+ * @param {PublicServiceType} publicServiceType [公众服务类型。]
+ * @param {string} publicServiceId [公共服务 Id。]
+ * @param {OperationCallback} callback [取消订阅公众号回调。]
+ */
+ RongIMClient.prototype.unsubscribePublicService = function (publicServiceType, publicServiceId, callback) {
+ if (RongIMClient._memoryStore.depend.openMp) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "object"], "unsubscribePublicService", false, arguments);
+ var modules = new Modules.MPFollowInput(),
+ me = this,
+ follow = publicServiceType == RongIMLib.ConversationType.APP_PUBLIC_SERVICE ? "mcUnFollow" : "mpUnFollow";
+ modules.setId(publicServiceId);
+ RongIMClient.bridge.queryMsg(follow, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), RongIMLib.Bridge._client.userId, {
+ onSuccess: function () {
+ RongIMClient._memoryStore.publicServiceMap.remove(publicServiceType, publicServiceId);
+ callback.onSuccess();
+ },
+ onError: function (code) {
+ callback.onError(code);
+ }
+ }, "MPFollowOutput");
+ }
+ };
+ // #endregion Public Service
+ // #region Blacklist
+ /**
+ * [加入黑名单]
+ * @param {string} userId [将被加入黑名单的用户Id]
+ * @param {OperationCallback} callback [返回值,函数回调]
+ */
+ RongIMClient.prototype.addToBlacklist = function (userId, callback) {
+ RongIMLib.CheckParam.getInstance().check(["string", "object"], "addToBlacklist", false, arguments);
+ RongIMClient._dataAccessProvider.addToBlacklist(userId, callback);
+ };
+ /**
+ * [获取黑名单列表]
+ * @param {GetBlacklistCallback} callback [返回值,函数回调]
+ */
+ RongIMClient.prototype.getBlacklist = function (callback) {
+ RongIMLib.CheckParam.getInstance().check(["object"], "getBlacklist", false, arguments);
+ RongIMClient._dataAccessProvider.getBlacklist(callback);
+ };
+ /**
+ * [得到指定人员再黑名单中的状态]
+ * @param {string} userId [description]
+ * @param {ResultCallback} callback [返回值,函数回调]
+ */
+ //TODO 如果人员不在黑名单中,获取状态会出现异常
+ RongIMClient.prototype.getBlacklistStatus = function (userId, callback) {
+ RongIMLib.CheckParam.getInstance().check(["string", "object"], "getBlacklistStatus", false, arguments);
+ RongIMClient._dataAccessProvider.getBlacklistStatus(userId, callback);
+ };
+ /**
+ * [将指定用户移除黑名单]
+ * @param {string} userId [将被移除的用户Id]
+ * @param {OperationCallback} callback [返回值,函数回调]
+ */
+ RongIMClient.prototype.removeFromBlacklist = function (userId, callback) {
+ RongIMLib.CheckParam.getInstance().check(["string", "object"], "removeFromBlacklist", false, arguments);
+ RongIMClient._dataAccessProvider.removeFromBlacklist(userId, callback);
+ };
+ RongIMClient.prototype.getFileToken = function (fileType, callback) {
+ RongIMLib.CheckParam.getInstance().check(["number", "object"], "getQnTkn", false, arguments);
+ RongIMClient._dataAccessProvider.getFileToken(fileType, callback);
+ };
+ RongIMClient.prototype.getFileUrl = function (fileType, fileName, oriName, callback) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "string|global|object|null", "object"], "getQnTkn", false, arguments);
+ RongIMClient._dataAccessProvider.getFileUrl(fileType, fileName, oriName, callback);
+ };
+ ;
+ // #endregion Blacklist
+ // #region Real-time Location Service
+ RongIMClient.prototype.addRealTimeLocationListener = function (conversationType, targetId, listener) {
+ throw new Error("Not implemented yet");
+ };
+ RongIMClient.prototype.getRealTimeLocation = function (conversationType, targetId) {
+ throw new Error("Not implemented yet");
+ };
+ RongIMClient.prototype.getRealTimeLocationCurrentState = function (conversationType, targetId) {
+ throw new Error("Not implemented yet");
+ };
+ RongIMClient.prototype.getRealTimeLocationParticipants = function (conversationType, targetId) {
+ throw new Error("Not implemented yet");
+ };
+ RongIMClient.prototype.joinRealTimeLocation = function (conversationType, targetId) {
+ throw new Error("Not implemented yet");
+ };
+ RongIMClient.prototype.quitRealTimeLocation = function (conversationType, targetId) {
+ throw new Error("Not implemented yet");
+ };
+ RongIMClient.prototype.startRealTimeLocation = function (conversationType, targetId) {
+ throw new Error("Not implemented yet");
+ };
+ RongIMClient.prototype.updateRealTimeLocationStatus = function (conversationType, targetId, latitude, longitude) {
+ throw new Error("Not implemented yet");
+ };
+ // #endregion Real-time Location Service
+ // # startVoIP
+ RongIMClient.prototype.startCall = function (converType, targetId, userIds, mediaType, extra, callback) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "array", "number", "string", "object"], "startCall", false, arguments);
+ if (RongIMClient._memoryStore.voipStategy) {
+ RongIMClient._voipProvider.startCall(converType, targetId, userIds, mediaType, extra, callback);
+ } else {
+ callback.onError(RongIMLib.ErrorCode.VOIP_NOT_AVALIABLE);
+ }
+ };
+ RongIMClient.prototype.joinCall = function (mediaType, callback) {
+ RongIMLib.CheckParam.getInstance().check(['number', 'object'], "joinCall", false, arguments);
+ if (RongIMClient._memoryStore.voipStategy) {
+ RongIMClient._voipProvider.joinCall(mediaType, callback);
+ } else {
+ callback.onError(RongIMLib.ErrorCode.VOIP_NOT_AVALIABLE);
+ }
+ };
+ RongIMClient.prototype.hungupCall = function (converType, targetId, reason) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "number"], "hungupCall", false, arguments);
+ if (RongIMClient._memoryStore.voipStategy) {
+ RongIMClient._voipProvider.hungupCall(converType, targetId, reason);
+ }
+ };
+ RongIMClient.prototype.changeMediaType = function (converType, targetId, mediaType, callback) {
+ RongIMLib.CheckParam.getInstance().check(["number", "string", "number", "object"], "changeMediaType", false, arguments);
+ if (RongIMClient._memoryStore.voipStategy) {
+ RongIMClient._voipProvider.changeMediaType(converType, targetId, mediaType, callback);
+ } else {
+ callback.onError(RongIMLib.ErrorCode.VOIP_NOT_AVALIABLE);
+ }
+ };
+ // # endVoIP
+ RongIMClient.prototype.getUnreadMentionedMessages = function (conversationType, targetId) {
+ return RongIMClient._dataAccessProvider.getUnreadMentionedMessages(conversationType, targetId);
+ };
+ RongIMClient.prototype.clearListeners = function () {
+ RongIMClient._dataAccessProvider.clearListeners();
+ };
+ // UserStatus start
+ RongIMClient.prototype.getUserStatus = function (userId, callback) {
+ RongIMClient._dataAccessProvider.getUserStatus(userId, callback);
+ };
+ RongIMClient.prototype.setUserStatus = function (status, callback) {
+ RongIMClient._dataAccessProvider.setUserStatus(status, callback);
+ };
+ RongIMClient.prototype.subscribeUserStatus = function (userIds, callback) {
+ RongIMClient._dataAccessProvider.subscribeUserStatus(userIds, callback);
+ };
+ RongIMClient.prototype.setOnReceiveStatusListener = function (callback) {
+ RongIMClient._dataAccessProvider.setOnReceiveStatusListener(callback);
+ };
+ RongIMClient.MessageType = {};
+ RongIMClient.RegisterMessage = {};
+ RongIMClient._memoryStore = {
+ listenerList: []
+ };
+ RongIMClient.isNotPullMsg = false;
+ return RongIMClient;
+ }();
+ RongIMLib.RongIMClient = RongIMClient;
+
+ // //兼容AMD CMD
+ // if ("function" === typeof require && "object" === typeof module && module && module.id && "object" === typeof exports && exports) {
+ // module.exports = RongIMLib;
+ // }
+ // else if ("function" === typeof define && define.amd) {
+ // var browser = navigator.appName, b_version = navigator.appVersion, version = b_version.split(";"), isPolling = false;
+ // if (version.length > 1) {
+ // var trim_Version = parseInt(version[1].replace(/[ ]/g, "").replace(/MSIE/g, ""));
+ // if (trim_Version < 10) {
+ // isPolling = true;
+ // }
+ // }
+ // if (isPolling) {
+ // define("RongIMLib", ['md5'], function () {
+ // return RongIMLib;
+ // });
+ // }
+ // else {
+ // // var lurl: string = RongIMClient._memoryStore.depend.long;
+ // // var burl: string = RongIMClient._memoryStore.depend.byteBuffer;
+ // // var purl: string = RongIMClient._memoryStore.depend.protobuf;
+ // define("RongIMLib", ['md5'], function () {
+ // return RongIMLib;
+ // });
+ // }
+ // }
+ // else {
+ // window.RongIMClient = RongIMClient;
+ // }
+ })(RongIMLib);
+ //用于连接通道
+
+ // var RongIMLib;
+ (function (RongIMLib) {
+ (function (Qos) {
+ Qos[Qos["AT_MOST_ONCE"] = 0] = "AT_MOST_ONCE";
+ Qos[Qos["AT_LEAST_ONCE"] = 1] = "AT_LEAST_ONCE";
+ Qos[Qos["EXACTLY_ONCE"] = 2] = "EXACTLY_ONCE";
+ Qos[Qos["DEFAULT"] = 3] = "DEFAULT";
+ })(RongIMLib.Qos || (RongIMLib.Qos = {}));
+ var Qos = RongIMLib.Qos;
+ (function (Type) {
+ Type[Type["CONNECT"] = 1] = "CONNECT";
+ Type[Type["CONNACK"] = 2] = "CONNACK";
+ Type[Type["PUBLISH"] = 3] = "PUBLISH";
+ Type[Type["PUBACK"] = 4] = "PUBACK";
+ Type[Type["QUERY"] = 5] = "QUERY";
+ Type[Type["QUERYACK"] = 6] = "QUERYACK";
+ Type[Type["QUERYCON"] = 7] = "QUERYCON";
+ Type[Type["SUBSCRIBE"] = 8] = "SUBSCRIBE";
+ Type[Type["SUBACK"] = 9] = "SUBACK";
+ Type[Type["UNSUBSCRIBE"] = 10] = "UNSUBSCRIBE";
+ Type[Type["UNSUBACK"] = 11] = "UNSUBACK";
+ Type[Type["PINGREQ"] = 12] = "PINGREQ";
+ Type[Type["PINGRESP"] = 13] = "PINGRESP";
+ Type[Type["DISCONNECT"] = 14] = "DISCONNECT";
+ })(RongIMLib.Type || (RongIMLib.Type = {}));
+ var Type = RongIMLib.Type;
+ var _topic = ["invtDiz", "crDiz", "qnUrl", "userInf", "dizInf", "userInf", "joinGrp", "quitDiz", "exitGrp", "evctDiz", ["", "ppMsgP", "pdMsgP", "pgMsgP", "chatMsg", "pcMsgP", "", "pmcMsgN", "pmpMsgN"], "pdOpen", "rename", "uGcmpr", "qnTkn", "destroyChrm", "createChrm", "exitChrm", "queryChrm", "joinChrm", "pGrps", "addBlack", "rmBlack", "getBlack", "blackStat", "addRelation", "qryRelation", "delRelation", "pullMp", "schMp", "qnTkn", "qnUrl", "qryVoipK", "delMsg", "qryCHMsg"];
+ var Channel = function () {
+ function Channel(address, cb, self) {
+ var that = this;
+ that.connectionStatus = -1;
+ that.delOnChangedCount = 0;
+ var depend = RongIMLib.RongIMClient._memoryStore.depend;
+ var servers = depend.cmpList;
+ that.socket = Socket.getInstance().createServer();
+ var startConnect = function (cmp) {
+ RongIMLib.RongIMClient._memoryStore.depend.cmp = cmp;
+ that.url = cmp + "/websocket?appId=" + self.appId + "&token=" + encodeURIComponent(self.token) + "&sdkVer=" + self.sdkVer + "&apiVer=" + self.apiVer;
+ that.self = self;
+ that.socket.connect(that.url, cb);
+ };
+ var detectByGet = function () {
+ var totalTimer = new tools.Timer({
+ timeout: 1 * 1000 * 15
+ });
+ var timers = [];
+ var xhrs = [];
+ var isFinished = false;
+ var clearHandler = function () {
+ for (var i = 0; i < timers.length; i++) {
+ var timer = timers[i];
+ clearTimeout(timer);
+ }
+ for (var i = 0; i < xhrs.length; i++) {
+ var xhr = xhrs[i];
+ xhr.abort();
+ }
+ timers.length = 0;
+ xhrs.length = 0;
+ };
+ var request = function (config, callback) {
+ var url = config.url;
+ var time = config.time;
+ if (isFinished) {
+ return;
+ }
+ var timer = setTimeout(function () {
+ var onSuccess = function () {
+ if (isFinished) {
+ return;
+ }
+ clearHandler();
+ isFinished = true;
+ totalTimer.pause();
+ callback(url);
+ };
+ var xhr = tools.request({
+ url: url
+ }, {
+ success: onSuccess,
+ fail: function (code) {
+ console.log(code);
+ }
+ });
+ xhrs.push(xhr);
+ }, time);
+ timers.push(timer);
+ };
+ var snifferCallback = function (url) {
+ var reg = /(http|https):\/\/([^\/]+)/i;
+ var host = url.match(reg)[2];
+ startConnect(host);
+ };
+ var snifferTpl = '{protocol}{server}/ping?r={random}';
+ for (var i = 0; i < servers.length; i++) {
+ var server = servers[i];
+ if (server) {
+ server = tools.tplEngine(snifferTpl, {
+ protocol: depend.protocol,
+ server: server,
+ random: +new Date()
+ });
+ request({
+ url: server,
+ time: i * 1000
+ }, snifferCallback);
+ }
+ }
+ totalTimer.resume(function () {
+ clearHandler();
+ that.socket.fire("StatusChanged", ConnectionStatus.NETWORK_UNAVAILABLE);
+ });
+ };
+ detectByGet();
+
+ //this.url = address.host + "/websocket?appId=" + self.appId + "&token=" + encodeURIComponent(self.token) + "&sdkVer=" + self.sdkVer + "&apiVer=" + self.apiVer;
+
+ //注册状态改变观察者
+ if (typeof Channel._ConnectionStatusListener == "object" && "onChanged" in Channel._ConnectionStatusListener) {
+ var me = this;
+ me.socket.on("StatusChanged", function (code) {
+ if (me.connectionStatus === RongIMLib.ConnectionStatus.DISCONNECTED && code === RongIMLib.ConnectionStatus.NETWORK_UNAVAILABLE) {
+ me.connectionStatus = code;
+ return;
+ }
+ me.connectionStatus = code;
+ if (code === RongIMLib.ConnectionStatus.NETWORK_UNAVAILABLE) {
+ var temp = RongIMLib.RongIMClient._storageProvider.getItemKey("navi");
+ var naviServer = RongIMLib.RongIMClient._storageProvider.getItem(temp);
+ var naviPort = naviServer.split(",")[0].split(":")[1];
+ naviPort && naviPort.length < 4 || RongIMLib.RongIMClient._storageProvider.setItem("rongSDK", "");
+ // TODO 判断拆分 naviServer 后的数组长度。
+ if (!RongIMLib.RongIMClient._memoryStore.depend.isPolling && naviPort && naviPort.length < 4) {
+ Bridge._client.handler.connectCallback.pauseTimer();
+ var temp = RongIMLib.RongIMClient._storageProvider.getItemKey("navi");
+ var server = RongIMLib.RongIMClient._storageProvider.getItem("RongBackupServer");
+ if (server) {
+ var arrs = server.split(",");
+ if (arrs.length < 2) {
+ throw new Error("navi server is empty,postion:StatusChanged");
+ }
+ RongIMLib.RongIMClient._storageProvider.setItem(temp, RongIMLib.RongIMClient._storageProvider.getItem("RongBackupServer"));
+ var url = RongIMLib.Bridge._client.channel.socket.currentURL;
+ Bridge._client.channel.socket.currentURL = arrs[0] + url.substring(url.indexOf("/"), url.length);
+ if (Bridge._client.channel && Bridge._client.channel.connectionStatus != RongIMLib.ConnectionStatus.CONNECTED && Bridge._client.channel.connectionStatus != RongIMLib.ConnectionStatus.CONNECTING) {
+ RongIMLib.RongIMClient.connect(RongIMLib.RongIMClient._memoryStore.token, RongIMLib.RongIMClient._memoryStore.callback);
+ }
+ }
+ }
+ }
+ if (code === RongIMLib.ConnectionStatus.DISCONNECTED && !RongIMLib.RongIMClient._memoryStore.otherDevice) {
+ Channel._ConnectionStatusListener.onChanged(RongIMLib.ConnectionStatus.DISCONNECTED);
+ self.clearHeartbeat();
+ return;
+ } else if (code === RongIMLib.ConnectionStatus.DISCONNECTED && RongIMLib.RongIMClient._memoryStore.otherDevice) {
+ return;
+ }
+ Channel._ConnectionStatusListener.onChanged(code);
+ if (RongIMLib.RongIMClient._memoryStore.otherDevice) {
+ if (me.delOnChangedCount > 5) {
+ delete Channel._ConnectionStatusListener["onChanged"];
+ }
+ me.delOnChangedCount++;
+ }
+ });
+ } else {
+ throw new Error("setConnectStatusListener:Parameter format is incorrect");
+ }
+ //注册message观察者
+ this.socket.on("message", self.handler.handleMessage);
+ //注册断开连接观察者
+ this.socket.on("disconnect", function (status) {
+ self.channel.socket.fire("StatusChanged", status ? status : 2);
+ });
+ }
+ Channel.prototype.writeAndFlush = function (val) {
+ this.socket.send(val);
+ };
+ Channel.prototype.reconnect = function (callback) {
+ RongIMLib.MessageIdHandler.clearMessageId();
+ this.socket = this.socket.reconnect();
+ if (callback) {
+ this.self.reconnectObj = callback;
+ }
+ };
+ Channel.prototype.disconnect = function (status) {
+ this.socket.disconnect(status);
+ };
+ return Channel;
+ }();
+ RongIMLib.Channel = Channel;
+ var Socket = function () {
+ function Socket() {
+ this.socket = null;
+ this._events = {};
+ }
+ Socket.getInstance = function () {
+ return new Socket();
+ };
+ Socket.prototype.connect = function (url, cb) {
+ if (this.socket) {
+ if (url) {
+ RongIMLib.RongIMClient._storageProvider.setItem("rongSDK", this.checkTransport());
+ this.on("connect", cb || new Function());
+ }
+ if (url) {
+ this.currentURL = url;
+ }
+ this.socket.createTransport(url);
+ }
+ return this;
+ };
+ Socket.prototype.createServer = function () {
+ var transport = this.getTransport(this.checkTransport());
+ if (transport === null) {
+ throw new Error("the channel was not supported");
+ }
+ return transport;
+ };
+ Socket.prototype.getTransport = function (transportType) {
+ var isPolling = RongIMLib.RongIMClient._memoryStore.depend.isPolling;
+ if (isPolling) {
+ this.socket = new RongIMLib.PollingTransportation(this);
+ } else {
+ this.socket = new RongIMLib.SocketTransportation(this);
+ }
+ return this;
+ };
+ Socket.prototype.send = function (data) {
+ if (this.socket) {
+ var isPolling = RongIMLib.RongIMClient._memoryStore.depend.isPolling;
+ if (!isPolling) {
+ this.socket.send(data);
+ } else {
+ this.socket.send(this._encode(data));
+ }
+ }
+ };
+ Socket.prototype.onMessage = function (data) {
+ this.fire("message", data);
+ };
+ Socket.prototype.disconnect = function (status) {
+ if (RongIMLib.ConnectionStatus.KICKED_OFFLINE_BY_OTHER_CLIENT === status) {
+ RongIMLib.RongIMClient._memoryStore.otherDevice = true;
+ }
+ this.socket.disconnect(status);
+ this.fire("disconnect", status);
+ return this;
+ };
+ Socket.prototype.reconnect = function () {
+ if (this.currentURL && RongIMLib.RongIMClient._storageProvider.getItem("rongSDK")) {
+ return this.connect(this.currentURL, null);
+ } else {
+ throw new Error("reconnect:no have URL");
+ }
+ };
+ /**
+ * [checkTransport 返回通道类型]
+ */
+ Socket.prototype.checkTransport = function () {
+ if (RongIMLib.RongIMClient._memoryStore.depend.isPolling) {
+ RongIMLib.Transportations._TransportType = Socket.XHR_POLLING;
+ }
+ return RongIMLib.Transportations._TransportType;
+ };
+ Socket.prototype.fire = function (x, args) {
+ if (x in this._events) {
+ for (var i = 0, ii = this._events[x].length; i < ii; i++) {
+ this._events[x][i](args);
+ }
+ }
+ return this;
+ };
+ Socket.prototype.on = function (x, func) {
+ if (!(typeof func == "function" && x)) {
+ return this;
+ }
+ if (x in this._events) {
+ RongIMLib.MessageUtil.indexOf(this._events, func) == -1 && this._events[x].push(func);
+ } else {
+ this._events[x] = [func];
+ }
+ return this;
+ };
+ Socket.prototype.removeEvent = function (x, fn) {
+ if (x in this._events) {
+ for (var a = 0, l = this._events[x].length; a < l; a++) {
+ if (this._events[x][a] == fn) {
+ this._events[x].splice(a, 1);
+ }
+ }
+ }
+ return this;
+ };
+ Socket.prototype._encode = function (x) {
+ var str = "?messageid=" + x.getMessageId() + "&header=" + x.getHeaderFlag() + "&sessionid=" + RongIMLib.RongIMClient._storageProvider.getItem("sId" + RongIMLib.Navigation.Endpoint.userId);
+ if (!/(PubAckMessage|QueryConMessage)/.test(x._name)) {
+ str += "&topic=" + x.getTopic() + "&targetid=" + (x.getTargetId() || "");
+ }
+ return {
+ url: str,
+ data: "getData" in x ? x.getData() : ""
+ };
+ };
+ //消息通道常量,所有和通道相关判断均用 XHR_POLLING WEBSOCKET两属性
+ Socket.WEBSOCKET = "websocket";
+ return Socket;
+ }();
+ RongIMLib.Socket = Socket;
+ //连接端消息累
+ var Client = function () {
+ function Client(token, appId) {
+ this.timeoutMillis = 100000;
+ this.timeout_ = 0;
+ this.sdkVer = "2.3.1";
+ this.apiVer = Math.floor(Math.random() * 1e6);
+ this.channel = null;
+ this.handler = null;
+ this.userId = "";
+ this.reconnectObj = {};
+ this.heartbeat = 0;
+ this.pullMsgHearbeat = 0;
+ this.chatroomId = "";
+ this.SyncTimeQueue = [];
+ this.cacheMessageIds = [];
+ this.token = token;
+ this.appId = appId;
+ this.SyncTimeQueue.state = "complete";
+ }
+ Client.prototype.resumeTimer = function () {
+ if (!this.timeout_) {
+ this.timeout_ = setTimeout(function () {
+ if (!this.timeout_) {
+ return;
+ }
+ try {
+ this.channel.disconnect();
+ } catch (e) {
+ throw new Error(e);
+ }
+ clearTimeout(this.timeout_);
+ this.timeout_ = 0;
+ this.channel.reconnect();
+ this.channel.socket.fire("StatusChanged", 5);
+ }, this.timeoutMillis);
+ }
+ };
+ Client.prototype.pauseTimer = function () {
+ if (this.timeout_) {
+ clearTimeout(this.timeout_);
+ this.timeout_ = 0;
+ }
+ };
+ Client.prototype.connect = function (_callback) {
+ if (RongIMLib.Transportations._TransportType == Socket.WEBSOCKET) {
+ // if (!window.WebSocket) {
+ // _callback.onError(RongIMLib.ConnectionState.UNACCEPTABLE_PROTOCOL_VERSION);
+ // return;
+ // }
+ }
+ //实例消息处理类
+ this.handler = new MessageHandler(this);
+ //设置连接回调
+ this.handler.setConnectCallback(_callback);
+ //实例通道类型
+ var me = this;
+ this.channel = new Channel(RongIMLib.Navigation.Endpoint, function () {
+ RongIMLib.Transportations._TransportType == Socket.WEBSOCKET && me.keepLive();
+ }, this);
+ //触发状态改变观察者
+ this.channel.socket.fire("StatusChanged", 1);
+ };
+ Client.prototype.checkSocket = function (callback) {
+ var me = this;
+ me.channel.writeAndFlush(new RongIMLib.PingReqMessage());
+ var checkTimeout = setInterval(function () {
+ if (!RongIMLib.RongIMClient._memoryStore.isFirstPingMsg) {
+ callback.onSuccess();
+ clearInterval(checkTimeout);
+ } else {
+ if (count > 15) {
+ clearInterval(checkTimeout);
+ callback.onError();
+ }
+ }
+ count++;
+ }, 200),
+ count = 0;
+ };
+ Client.prototype.keepLive = function () {
+ if (this.heartbeat > 0) {
+ clearInterval(this.heartbeat);
+ }
+ var me = this;
+ me.heartbeat = setInterval(function () {
+ me.resumeTimer();
+ me.channel.writeAndFlush(new RongIMLib.PingReqMessage());
+ }, 30000);
+ if (me.pullMsgHearbeat > 0) {
+ clearInterval(me.pullMsgHearbeat);
+ }
+ me.pullMsgHearbeat = setInterval(function () {
+ me.syncTime(true, undefined, undefined, false);
+ }, 180000);
+ };
+ Client.prototype.clearHeartbeat = function () {
+ clearInterval(this.heartbeat);
+ this.heartbeat = 0;
+ this.pauseTimer();
+ clearInterval(this.pullMsgHearbeat);
+ this.pullMsgHearbeat = 0;
+ };
+ Client.prototype.publishMessage = function (_topic, _data, _targetId, _callback, _msg) {
+ RongIMLib.RongIMClient.ready(function (_client) {
+ var msgId = RongIMLib.MessageIdHandler.messageIdPlus(_client.channel.reconnect);
+ if (!msgId) {
+ return;
+ }
+ var msg = new RongIMLib.PublishMessage(_topic, _data, _targetId);
+ msg.setMessageId(msgId);
+ if (_callback) {
+ msg.setQos(Qos.AT_LEAST_ONCE);
+ _client.handler.putCallback(new RongIMLib.PublishCallback(_callback.onSuccess, _callback.onError), msg.getMessageId(), _msg);
+ } else {
+ msg.setQos(Qos.AT_MOST_ONCE);
+ }
+ _client.channel.writeAndFlush(msg);
+ });
+ };
+ Client.prototype.queryMessage = function (_topic, _data, _targetId, _qos, _callback, pbtype) {
+ RongIMLib.RongIMClient.ready(function (_client) {
+ if (_topic == "userInf") {
+ if (Client.userInfoMapping[_targetId]) {
+ _callback.onSuccess(Client.userInfoMapping[_targetId]);
+ return;
+ }
+ }
+ var msgId = RongIMLib.MessageIdHandler.messageIdPlus(_client.channel.reconnect);
+ if (!msgId) {
+ return;
+ }
+ var msg = new RongIMLib.QueryMessage(_topic, _data, _targetId);
+ msg.setMessageId(msgId);
+ msg.setQos(_qos);
+ _client.handler.putCallback(new RongIMLib.QueryCallback(_callback.onSuccess, _callback.onError), msg.getMessageId(), pbtype);
+ _client.channel.writeAndFlush(msg);
+ });
+ };
+ Client.prototype.invoke = function (isPullMsg, chrmId, offlineMsg) {
+ var time,
+ modules,
+ str,
+ me = this,
+ target,
+ temp = this.SyncTimeQueue.shift();
+ if (temp == undefined) {
+ return;
+ }
+ this.SyncTimeQueue.state = "pending";
+ var storageSyncTime = RongIMLib.MessageUtil.getSyncTime();
+ if (temp.type != 2) {
+ //普通消息
+ time = storageSyncTime.received;
+ modules = new Modules.SyncRequestMsg();
+ modules.setIspolling(false);
+ str = "pullMsg";
+ target = this.userId;
+ var sendBoxTime = storageSyncTime.send;
+ modules.setSendBoxSyncTime(sendBoxTime);
+ } else {
+ //聊天室消息
+ target = temp.chrmId || me.chatroomId;
+ time = RongIMLib.RongIMClient._memoryStore.lastReadTime.get(target + Bridge._client.userId + "CST") || 0;
+ modules = new Modules.ChrmPullMsg();
+ modules.setCount(0);
+ str = "chrmPull";
+ if (!target) {
+ throw new Error("syncTime:Received messages of chatroom but was not init");
+ }
+ }
+ //判断服务器给的时间是否消息本地存储的时间,小于的话不执行拉取操作,进行一下步队列操作
+ if (temp.pulltime <= time) {
+ this.SyncTimeQueue.state = "complete";
+ this.invoke(isPullMsg, target);
+ return;
+ }
+ if (isPullMsg && 'setIsPullSend' in modules) {
+ modules.setIsPullSend(true);
+ }
+ modules.setSyncTime(time);
+ //发送queryMessage请求
+
+ var isInCache = function (messageUId) {
+ var result = false;
+ for (var i = 0, len = me.cacheMessageIds.length; i < len; i++) {
+ var uId = me.cacheMessageIds[i];
+ if (uId == messageUId) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ };
+ this.queryMessage(str, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), target, Qos.AT_LEAST_ONCE, {
+ onSuccess: function (collection) {
+ var sync = RongIMLib.MessageUtil.int64ToTimestamp(collection.syncTime),
+ symbol = target;
+ //把返回时间戳存入本地,普通消息key为userid,聊天室消息key为userid+'CST';value都为服务器返回的时间戳
+ if (str == "chrmPull") {
+ symbol += Bridge._client.userId + "CST";
+ RongIMLib.RongIMClient._memoryStore.lastReadTime.set(symbol, sync);
+ }
+
+ //把拉取到的消息逐条传给消息监听器
+ var list = collection.list;
+ var len = list.length;
+ for (var i = 0, count = len; i < len; i++) {
+ if (!isInCache(list[i].msgId)) {
+ Bridge._client.handler.onReceived(list[i], undefined, offlineMsg, --count);
+ var arrLen = me.cacheMessageIds.unshift(list[i].msgId);
+ if (arrLen > 200) {
+ me.cacheMessageIds.length = 180;
+ }
+ }
+ }
+ if (len <= 200 && str == 'pullMsg') {
+ var RongIMClient = RongIMLib.RongIMClient;
+ var Conversation = RongIMClient._dataAccessProvider.Conversation;
+ var conversationList = RongIMClient._memoryStore.conversationList;
+ Conversation._notify(conversationList);
+ }
+
+ //防止因离线消息造成会话列表不为空而无法从服务器拉取会话列表。
+ offlineMsg && (RongIMLib.RongIMClient._memoryStore.isSyncRemoteConverList = true);
+ me.SyncTimeQueue.state = "complete";
+ me.invoke(isPullMsg, target);
+ },
+ onError: function (error) {
+ me.SyncTimeQueue.state = "complete";
+ me.invoke(isPullMsg, target);
+ }
+ }, "DownStreamMessages");
+ };
+ Client.prototype.syncTime = function (_type, pullTime, chrmId, offlineMsg) {
+ this.SyncTimeQueue.push({
+ type: _type,
+ chrmId: chrmId,
+ pulltime: pullTime
+ });
+ //如果队列中只有一个成员并且状态已经完成就执行invoke方法
+ if (this.SyncTimeQueue.length == 1 && this.SyncTimeQueue.state == "complete") {
+ this.invoke(!_type, chrmId, offlineMsg);
+ }
+ };
+ Client.prototype.__init = function (f) {
+ this.channel = new Channel(RongIMLib.Navigation.Endpoint, f, this);
+ };
+ Client.userInfoMapping = {};
+ return Client;
+ }();
+ RongIMLib.Client = Client;
+ //连接类,实现imclient与connect_client的连接
+ var Bridge = function () {
+ function Bridge() {}
+ Bridge.getInstance = function () {
+ return new Bridge();
+ };
+ //连接服务器
+ Bridge.prototype.connect = function (appKey, token, callback) {
+ // if (!window["Modules"]) {
+ RongIMLib.RongIMClient._memoryStore.hasModules = false;
+ // return;
+ // }
+ Bridge._client = new RongIMLib.Navigation().connect(appKey, token, callback);
+ return Bridge._client;
+ };
+ Bridge.prototype.setListener = function (_changer) {
+ if (typeof _changer == "object") {
+ if (typeof _changer.onChanged == "function") {
+ Channel._ConnectionStatusListener = _changer;
+ } else if (typeof _changer.onReceived == "function") {
+ Channel._ReceiveMessageListener = _changer;
+ }
+ }
+ };
+ Bridge.prototype.reconnect = function (callabck) {
+ Bridge._client.channel.reconnect(callabck);
+ };
+ Bridge.prototype.disconnect = function () {
+ Bridge._client.clearHeartbeat();
+ Bridge._client.channel.disconnect(2);
+ };
+ //执行queryMessage请求
+ Bridge.prototype.queryMsg = function (topic, content, targetId, callback, pbname) {
+ if (typeof topic != "string") {
+ topic = _topic[topic];
+ }
+ Bridge._client.queryMessage(topic, content, targetId, Qos.AT_MOST_ONCE, callback, pbname);
+ };
+ //发送消息 执行publishMessage 请求
+ Bridge.prototype.pubMsg = function (topic, content, targetId, callback, msg, methodType) {
+ if (typeof methodType == 'number') {
+ if (methodType == RongIMLib.MethodType.CUSTOMER_SERVICE) {
+ Bridge._client.publishMessage("pcuMsgP", content, targetId, callback, msg);
+ } else if (methodType == RongIMLib.MethodType.RECALL) {
+ Bridge._client.publishMessage("recallMsg", content, targetId, callback, msg);
+ }
+ } else {
+ Bridge._client.publishMessage(_topic[10][topic], content, targetId, callback, msg);
+ }
+ };
+ return Bridge;
+ }();
+ RongIMLib.Bridge = Bridge;
+ var MessageHandler = function () {
+ function MessageHandler(client) {
+ this.map = {};
+ this.connectCallback = null;
+ if (!Channel._ReceiveMessageListener) {
+ throw new Error("please set onReceiveMessageListener");
+ }
+ this._onReceived = Channel._ReceiveMessageListener.onReceived;
+ this._client = client;
+ this.syncMsgMap = new Object();
+ }
+ //把对象推入回调对象队列中,并启动定时器
+ MessageHandler.prototype.putCallback = function (callbackObj, _publishMessageId, _msg) {
+ var item = {
+ Callback: callbackObj,
+ Message: _msg
+ };
+ item.Callback.resumeTimer();
+ this.map[_publishMessageId] = item;
+ };
+ //设置连接回调对象,启动定时器
+ MessageHandler.prototype.setConnectCallback = function (_connectCallback) {
+ if (_connectCallback) {
+ this.connectCallback = new RongIMLib.ConnectAck(_connectCallback.onSuccess, _connectCallback.onError, this._client);
+ this.connectCallback.resumeTimer();
+ }
+ };
+ MessageHandler.prototype.onReceived = function (msg, pubAckItem, offlineMsg, leftCount) {
+ //实体对象
+ var entity,
+ //解析完成的消息对象
+ message,
+ //会话对象
+ con;
+ if (msg._name != "PublishMessage") {
+ entity = msg;
+ //RongIMLib.RongIMClient._storageProvider.setItem(this._client.userId, RongIMLib.MessageUtil.int64ToTimestamp(entity.dataTime));
+ } else {
+ if (msg.getTopic() == "s_ntf") {
+ entity = Modules.NotifyMsg.decode(msg.getData());
+ this._client.syncTime(entity.type, RongIMLib.MessageUtil.int64ToTimestamp(entity.time), entity.chrmId);
+ return;
+ } else if (msg.getTopic() == "s_msg") {
+ entity = Modules.DownStreamMessage.decode(msg.getData());
+ var timestamp = RongIMLib.MessageUtil.int64ToTimestamp(entity.dataTime);
+ // Martin:edit RongIMLib.RongIMClient._storageProvider.setItem(this._client.userId, timestamp); 移动至 下方 messageParser
+ // RongIMLib.RongIMClient._memoryStore.lastReadTime.get(this._client.userId, timestamp);
+ } else {
+ if (Bridge._client.sdkVer && Bridge._client.sdkVer == "1.0.0") {
+ return;
+ }
+ entity = Modules.UpStreamMessage.decode(msg.getData());
+ var tmpTopic = msg.getTopic();
+ var tmpType = tmpTopic.substr(0, 2);
+ if (tmpType == "pp") {
+ entity.type = 1;
+ } else if (tmpType == "pd") {
+ entity.type = 2;
+ } else if (tmpType == "pg") {
+ entity.type = 3;
+ } else if (tmpType == "ch") {
+ entity.type = 4;
+ } else if (tmpType == "pc") {
+ entity.type = 5;
+ }
+ //复用字段,targetId 以此为准
+ entity.groupId = msg.getTargetId();
+ entity.fromUserId = this._client.userId;
+ entity.dataTime = Date.parse(new Date().toString());
+ }
+ if (!entity) {
+ return;
+ }
+ }
+ //解析实体对象为消息对象。
+ message = RongIMLib.MessageUtil.messageParser(entity, this._onReceived, offlineMsg);
+ if (pubAckItem) {
+ message.messageUId = pubAckItem.getMessageUId();
+ message.sentTime = pubAckItem.getTimestamp();
+ }
+ if (message === null) {
+ return;
+ }
+ var msgTag = RongIMLib.RongIMClient.MessageParams[message.messageType].msgTag.getMessageTag();
+ if (msgTag == 3 || msgTag == 1) {
+ RongIMLib.MessageUtil.updateSyncTime(message);
+ }
+ // 设置会话时间戳并且判断是否传递 message 发送消息未处理会话时间戳
+ // key:'converST_' + 当前用户 + conversationType + targetId
+ // RongIMClient._storageProvider.setItem('converST_' + Bridge._client.userId + message.conversationType + message.targetId, message.sentTime);
+ if (msgTag == 3 || msgTag == 1) {
+ RongIMLib.RongIMClient._dataAccessProvider.getConversation(message.conversationType, message.targetId, {
+ onSuccess: function (con) {
+ if (!con) {
+ con = RongIMLib.RongIMClient.getInstance().createConversation(message.conversationType, message.targetId, "");
+ }
+ if (message.messageDirection == RongIMLib.MessageDirection.RECEIVE && (entity.status & 64) == 64) {
+ var mentioneds = RongIMLib.RongIMClient._storageProvider.getItem("mentioneds_" + Bridge._client.userId + '_' + message.conversationType + '_' + message.targetId);
+ var key = message.conversationType + '_' + message.targetId,
+ info = {};
+ if (message.content && message.content.mentionedInfo) {
+ info[key] = {
+ uid: message.messageUId,
+ time: message.sentTime,
+ mentionedInfo: message.content.mentionedInfo
+ };
+ RongIMLib.RongIMClient._storageProvider.setItem("mentioneds_" + Bridge._client.userId + '_' + message.conversationType + '_' + message.targetId, JSON.stringify(info));
+ mentioneds = JSON.stringify(info);
+ }
+ if (mentioneds) {
+ var info = JSON.parse(mentioneds);
+ con.mentionedMsg = info[key];
+ }
+ }
+ if (con.conversationType != 0 && message.senderUserId != Bridge._client.userId && message.receivedStatus != RongIMLib.ReceivedStatus.RETRIEVED && message.messageType != RongIMLib.RongIMClient.MessageType["ReadReceiptRequestMessage"] && message.messageType != RongIMLib.RongIMClient.MessageType["ReadReceiptResponseMessage"]) {
+ con.unreadMessageCount = con.unreadMessageCount + 1;
+ if (RongIMLib.MessageUtil.supportLargeStorage()) {
+ var count = RongIMLib.RongIMClient._storageProvider.getItem("cu" + Bridge._client.userId + con.conversationType + con.targetId); // 与本地存储会话合并
+ RongIMLib.RongIMClient._storageProvider.setItem("cu" + Bridge._client.userId + con.conversationType + message.targetId, Number(count) + 1);
+ }
+ }
+ con.receivedTime = new Date().getTime();
+ con.receivedStatus = message.receivedStatus;
+ con.senderUserId = message.sendUserId;
+ con.notificationStatus = RongIMLib.ConversationNotificationStatus.DO_NOT_DISTURB;
+ con.latestMessageId = message.messageId;
+ con.latestMessage = message;
+ con.sentTime = message.sentTime;
+ RongIMLib.RongIMClient._dataAccessProvider.addConversation(con, {
+ onSuccess: function (data) {
+ if (!offlineMsg) {
+ var RongIMClient = RongIMLib.RongIMClient;
+ var Conversation = RongIMClient._dataAccessProvider.Conversation;
+ var conversationList = RongIMClient._memoryStore.conversationList;
+ Conversation._notify(conversationList);
+ }
+ },
+ onError: function () {}
+ });
+ },
+ onError: function (error) {}
+ });
+ }
+ var d = new Date(),
+ m = d.getMonth() + 1,
+ date = d.getFullYear() + '/' + (m.toString().length == 1 ? '0' + m : m) + '/' + d.getDate();
+ var dealtime = new Date(date).getTime() - message.sentTime < 0;
+ if (RongIMLib.MessageUtil.supportLargeStorage() && message.messageType === RongIMLib.RongIMClient.MessageType["ReadReceiptRequestMessage"] && dealtime && message.messageDirection == RongIMLib.MessageDirection.SEND) {
+ var sentkey = Bridge._client.userId + message.content.messageUId + "SENT";
+ RongIMLib.RongIMClient._storageProvider.setItem(sentkey, JSON.stringify({
+ count: 0,
+ dealtime: message.sentTime,
+ userIds: {}
+ }));
+ } else if (RongIMLib.MessageUtil.supportLargeStorage() && message.messageType === RongIMLib.RongIMClient.MessageType["ReadReceiptRequestMessage"] && dealtime) {
+ var reckey = Bridge._client.userId + message.conversationType + message.targetId + 'RECEIVED',
+ recData = JSON.parse(RongIMLib.RongIMClient._storageProvider.getItem(reckey));
+ if (recData) {
+ if (message.senderUserId in recData) {
+ if (recData[message.senderUserId].uIds && recData[message.senderUserId].uIds && recData[message.senderUserId].uIds.indexOf(message.content.messageUId) == -1) {
+ // 如果是前一天的 MessaageUId 把数组清空。
+ new Date(date).getTime() - recData[message.senderUserId].dealtime < 0 || (recData[message.senderUserId].uIds.length = 0);
+ recData[message.senderUserId].uIds.push(message.content.messageUId);
+ recData[message.senderUserId].dealtime = message.sentTime;
+ recData[message.senderUserId].isResponse = false;
+ RongIMLib.RongIMClient._storageProvider.setItem(reckey, JSON.stringify(recData));
+ } else {
+ return;
+ }
+ } else {
+ var objSon = {
+ uIds: [message.content.messageUId],
+ dealtime: message.sentTime,
+ isResponse: false
+ };
+ recData[message.senderUserId] = objSon;
+ RongIMLib.RongIMClient._storageProvider.setItem(reckey, JSON.stringify(recData));
+ }
+ } else {
+ var obj = {};
+ obj[message.senderUserId] = {
+ uIds: [message.content.messageUId],
+ dealtime: message.sentTime,
+ isResponse: false
+ };
+ RongIMLib.RongIMClient._storageProvider.setItem(reckey, JSON.stringify(obj));
+ }
+ }
+ if (RongIMLib.MessageUtil.supportLargeStorage() && message.messageType === RongIMLib.RongIMClient.MessageType["ReadReceiptResponseMessage"] && dealtime) {
+ var receiptResponseMsg = message.content,
+ uIds = receiptResponseMsg.receiptMessageDic[Bridge._client.userId],
+ sentkey = "",
+ sentObj;
+ message.receiptResponse || (message.receiptResponse = {});
+ if (uIds) {
+ var cbuIds = [];
+ for (var i = 0, len = uIds.length; i < len; i++) {
+ sentkey = Bridge._client.userId + uIds[i] + "SENT";
+ sentObj = JSON.parse(RongIMLib.RongIMClient._storageProvider.getItem(sentkey));
+ if (sentObj && !(message.senderUserId in sentObj.userIds)) {
+ if (new Date(date).getTime() - sentObj.dealtime > 0) {
+ RongIMLib.RongIMClient._storageProvider.removeItem(sentkey);
+ } else {
+ cbuIds.push(uIds[i]);
+ sentObj.count += 1;
+ sentObj.userIds[message.senderUserId] = message.sentTime;
+ message.receiptResponse[uIds[i]] = sentObj.count;
+ RongIMLib.RongIMClient._storageProvider.setItem(sentkey, JSON.stringify(sentObj));
+ }
+ }
+ }
+ receiptResponseMsg.receiptMessageDic[Bridge._client.userId] = cbuIds;
+ message.content = receiptResponseMsg;
+ }
+ }
+ var that = this;
+ if (RongIMLib.RongIMClient._voipProvider && ['AcceptMessage', 'RingingMessage', 'HungupMessage', 'InviteMessage', 'MediaModifyMessage', 'MemberModifyMessage'].indexOf(message.messageType) > -1) {
+ RongIMLib.RongIMClient._voipProvider.onReceived(message);
+ } else {
+ var lcount = leftCount || 0;
+ RongIMLib.RongIMClient._dataAccessProvider.addMessage(message.conversationType, message.targetId, message, {
+ onSuccess: function (ret) {
+ that._onReceived(ret, lcount);
+ },
+ onError: function (error) {
+ that._onReceived(message, lcount);
+ }
+ });
+ }
+ };
+ MessageHandler.prototype.handleMessage = function (msg) {
+ if (!msg) {
+ return;
+ }
+ switch (msg._name) {
+ case "ConnAckMessage":
+ Bridge._client.handler.connectCallback.process(msg.getStatus(), msg.getUserId(), msg.getTimestamp());
+ break;
+ case "PublishMessage":
+ if (!msg.getSyncMsg() && msg.getQos() != 0) {
+ Bridge._client.channel.writeAndFlush(new RongIMLib.PubAckMessage(msg.getMessageId()));
+ }
+ // TODO && ->
+ if (msg.getSyncMsg() && !RongIMLib.RongIMClient._memoryStore.depend.isPolling) {
+ Bridge._client.handler.syncMsgMap[msg.getMessageId()] = msg;
+ } else {
+ //如果是PublishMessage就把该对象给onReceived方法执行处理
+ Bridge._client.handler.onReceived(msg);
+ }
+ break;
+ case "QueryAckMessage":
+ if (msg.getQos() != 0) {
+ Bridge._client.channel.writeAndFlush(new RongIMLib.QueryConMessage(msg.getMessageId()));
+ }
+ var temp = Bridge._client.handler.map[msg.getMessageId()];
+ if (temp) {
+ //执行回调操作
+ temp.Callback.process(msg.getStatus(), msg.getData(), msg.getDate(), temp.Message);
+ delete Bridge._client.handler.map[msg.getMessageId()];
+ }
+ break;
+ case "PubAckMessage":
+ var item = Bridge._client.handler.map[msg.getMessageId()];
+ if (item) {
+ item.Callback.process(msg.getStatus() || 0, msg.getMessageUId(), msg.getTimestamp(), item.Message, msg.getMessageId());
+ delete Bridge._client.handler.map[msg.getMessageId()];
+ } else {
+ Bridge._client.handler.onReceived(Bridge._client.handler.syncMsgMap[msg.messageId], msg);
+ delete Bridge._client.handler.syncMsgMap[msg.getMessageId()];
+ }
+ break;
+ case "PingRespMessage":
+ if (RongIMLib.RongIMClient._memoryStore.isFirstPingMsg) {
+ RongIMLib.RongIMClient._memoryStore.isFirstPingMsg = false;
+ } else {
+ Bridge._client.pauseTimer();
+ }
+ break;
+ case "DisconnectMessage":
+ Bridge._client.channel.disconnect(msg.getStatus());
+ break;
+ default:
+ }
+ };
+ return MessageHandler;
+ }();
+ RongIMLib.MessageHandler = MessageHandler;
+ })(RongIMLib || (RongIMLib = {}));
+ ///
+
+ // var RongIMLib;
+ (function (RongIMLib) {
+ var MessageCallback = function () {
+ function MessageCallback(error) {
+ this.timeout = null;
+ this.onError = null;
+ if (error && typeof error == "number") {
+ this.timeoutMillis = error;
+ } else {
+ this.timeoutMillis = 30000;
+ this.onError = error;
+ }
+ }
+ MessageCallback.prototype.resumeTimer = function () {
+ var me = this;
+ if (this.timeoutMillis > 0 && !this.timeout) {
+ this.timeout = setTimeout(function () {
+ me.readTimeOut(true);
+ }, this.timeoutMillis);
+ }
+ };
+ MessageCallback.prototype.pauseTimer = function () {
+ if (this.timeout) {
+ clearTimeout(this.timeout);
+ this.timeout = null;
+ }
+ };
+ MessageCallback.prototype.readTimeOut = function (isTimeout) {
+ if (isTimeout && this.onError) {
+ this.onError(RongIMLib.ErrorCode.TIMEOUT);
+ } else {
+ this.pauseTimer();
+ }
+ };
+ return MessageCallback;
+ }();
+ RongIMLib.MessageCallback = MessageCallback;
+ var CallbackMapping = function () {
+ function CallbackMapping() {
+ this.publicServiceList = [];
+ }
+ CallbackMapping.getInstance = function () {
+ return new CallbackMapping();
+ };
+ CallbackMapping.prototype.pottingProfile = function (item) {
+ var temp;
+ this.profile = new RongIMLib.PublicServiceProfile();
+ temp = JSON.parse(item.extra);
+ this.profile.isGlobal = temp.isGlobal;
+ this.profile.introduction = temp.introduction;
+ this.profile.menu = temp.menu;
+ this.profile.hasFollowed = temp.follow;
+ this.profile.publicServiceId = item.mpid;
+ this.profile.name = item.name;
+ this.profile.portraitUri = item.portraitUrl;
+ this.profile.conversationType = item.type == "mc" ? RongIMLib.ConversationType.APP_PUBLIC_SERVICE : RongIMLib.ConversationType.PUBLIC_SERVICE;
+ this.publicServiceList.push(this.profile);
+ };
+ CallbackMapping.prototype.mapping = function (entity, tag) {
+ switch (tag) {
+ case "GetUserInfoOutput":
+ var userInfo = new RongIMLib.UserInfo(entity.userId, entity.userName, entity.userPortrait);
+ return userInfo;
+ case "GetQNupTokenOutput":
+ return {
+ deadline: RongIMLib.MessageUtil.int64ToTimestamp(entity.deadline),
+ token: entity.token
+ };
+ case "GetQNdownloadUrlOutput":
+ return {
+ downloadUrl: entity.downloadUrl
+ };
+ case "CreateDiscussionOutput":
+ return entity.id;
+ case "ChannelInfoOutput":
+ var disInfo = new RongIMLib.Discussion();
+ disInfo.creatorId = entity.adminUserId;
+ disInfo.id = entity.channelId;
+ disInfo.memberIdList = entity.firstTenUserIds;
+ disInfo.name = entity.channelName;
+ disInfo.isOpen = entity.openStatus;
+ return disInfo;
+ case "GroupHashOutput":
+ return entity.result;
+ case "QueryBlackListOutput":
+ return entity.userIds;
+ case "SearchMpOutput":
+ case "PullMpOutput":
+ if (entity.info) {
+ var self = this;
+ Array.forEach(entity.info, function (item) {
+ setTimeout(self.pottingProfile(item), 100);
+ });
+ }
+ return this.publicServiceList;
+ default:
+ return entity;
+ }
+ };
+ return CallbackMapping;
+ }();
+ RongIMLib.CallbackMapping = CallbackMapping;
+ var PublishCallback = function (_super) {
+ __extends(PublishCallback, _super);
+ function PublishCallback(_cb, _timeout) {
+ _super.call(this, _timeout);
+ this._cb = _cb;
+ this._timeout = _timeout;
+ }
+ PublishCallback.prototype.process = function (_status, messageUId, timestamp, _msg, messageId) {
+ this.readTimeOut();
+ if (_status == 0) {
+ if (_msg) {
+ _msg.setSentStatus = _status;
+ }
+ // Martin:edit RongIMLib.RongIMClient._storageProvider.setItem(RongIMLib.Bridge._client.userId, timestamp);
+ RongIMLib.MessageUtil.updateSyncTime({
+ messageDirection: RongIMLib.MessageDirection.SEND,
+ sentTime: timestamp
+ });
+ RongIMLib.RongIMClient._memoryStore.lastReadTime.get(RongIMLib.Bridge._client.userId, timestamp);
+ this._cb({
+ messageUId: messageUId,
+ timestamp: timestamp,
+ messageId: messageId
+ });
+ } else {
+ this._timeout(_status);
+ }
+ };
+ PublishCallback.prototype.readTimeOut = function (x) {
+ MessageCallback.prototype.readTimeOut.call(this, x);
+ };
+ return PublishCallback;
+ }(MessageCallback);
+ RongIMLib.PublishCallback = PublishCallback;
+ var QueryCallback = function (_super) {
+ __extends(QueryCallback, _super);
+ function QueryCallback(_cb, _timeout) {
+ _super.call(this, _timeout);
+ this._cb = _cb;
+ this._timeout = _timeout;
+ }
+ QueryCallback.prototype.process = function (status, data, serverTime, pbtype) {
+ this.readTimeOut();
+ if (pbtype && data && status == 0) {
+ try {
+ data = CallbackMapping.getInstance().mapping(Modules[pbtype].decode(data), pbtype);
+ } catch (e) {
+ this._timeout(RongIMLib.ErrorCode.UNKNOWN);
+ return;
+ }
+ if ("GetUserInfoOutput" == pbtype) {
+ //pb类型为GetUserInfoOutput的话就把data放入userinfo缓存队列
+ RongIMLib.Client.userInfoMapping[data.userId] = data;
+ }
+ this._cb(data);
+ } else {
+ status > 0 ? this._timeout(status) : this._cb(status);
+ }
+ };
+ QueryCallback.prototype.readTimeOut = function (x) {
+ MessageCallback.prototype.readTimeOut.call(this, x);
+ };
+ return QueryCallback;
+ }(MessageCallback);
+ RongIMLib.QueryCallback = QueryCallback;
+ var ConnectAck = function (_super) {
+ __extends(ConnectAck, _super);
+ function ConnectAck(_cb, _timeout, client) {
+ _super.call(this, _timeout);
+ this._client = client;
+ this._cb = _cb;
+ this._timeout = _timeout;
+ }
+ ConnectAck.prototype.process = function (status, userId, timestamp) {
+ this.readTimeOut();
+ var self = this;
+ if (status == 0) {
+ self._client.userId = userId;
+ if (this._client.reconnectObj.onSuccess) {
+ this._client.reconnectObj.onSuccess(userId);
+ delete this._client.reconnectObj.onSuccess;
+ } else {
+ self._cb(userId);
+ var RongIMClient = RongIMLib.RongIMClient;
+ var depend = RongIMClient._memoryStore.depend;
+ var maxConversationCount = depend.maxConversationCount;
+ RongIMClient._dataAccessProvider.getRemoteConversationList({
+ onSuccess: function (conversationList) {
+ var Conversation = RongIMClient._dataAccessProvider.Conversation;
+ Conversation._notify(conversationList);
+ },
+ onError: function (code) {
+ console.log('内部获取列表失败: %d', code);
+ }
+ }, null, maxConversationCount);
+ }
+ if (!RongIMLib.RongIMClient.isNotPullMsg) {
+ self._client.syncTime(undefined, undefined, undefined, true);
+ }
+ RongIMLib.Bridge._client.channel.socket.fire("StatusChanged", 0);
+ RongIMLib.RongIMClient._memoryStore.connectAckTime = timestamp;
+ if (!(new Date().getTime() - timestamp)) {
+ RongIMLib.RongIMClient._memoryStore.deltaTime = 0;
+ } else {
+ RongIMLib.RongIMClient._memoryStore.deltaTime = new Date().getTime() - timestamp;
+ }
+ } else if (status == 6) {
+ //重定向 连错 CMP
+ var x = {};
+ var me = this;
+ new RongIMLib.Navigation().getServerEndpoint(this._client.token, this._client.appId, function () {
+ me._client.clearHeartbeat();
+ new RongIMLib.Client(me._client.token, me._client.appId).__init.call(x, function () {
+ RongIMLib.Transportations._TransportType == "websocket" && me._client.keepLive();
+ });
+ me._client.channel.socket.fire("StatusChanged", 2);
+ }, me._timeout, false);
+ } else {
+ RongIMLib.Bridge._client.channel.socket.socket._status = status;
+ if (this._client.reconnectObj.onError) {
+ this._client.reconnectObj.onError(status);
+ delete this._client.reconnectObj.onError;
+ } else {
+ this._timeout(status);
+ }
+ }
+ };
+ ConnectAck.prototype.readTimeOut = function (x) {
+ MessageCallback.prototype.readTimeOut.call(this, x);
+ };
+ return ConnectAck;
+ }(MessageCallback);
+ RongIMLib.ConnectAck = ConnectAck;
+ })(RongIMLib || (RongIMLib = {}));
+
+ // var RongIMLib;
+ (function (RongIMLib) {
+ var md5 = RongIMLib.md5;
+ var Navigation = function () {
+ function Navigation() {}
+ Navigation.prototype.connect = function (appId, token, callback) {
+ var oldAppId = RongIMLib.RongIMClient._storageProvider.getItem("appId");
+ //如果appid和本地存储的不一样,清空所有本地存储数据
+ if (oldAppId && oldAppId != appId) {
+ RongIMLib.RongIMClient._storageProvider.clearItem();
+ RongIMLib.RongIMClient._storageProvider.setItem("appId", appId);
+ }
+ if (!oldAppId) {
+ RongIMLib.RongIMClient._storageProvider.setItem("appId", appId);
+ }
+ var connectToken = tools.convertToken(token);
+ var client = new RongIMLib.Client(connectToken, appId);
+ var me = this;
+ this.getServerEndpoint(token, appId, function () {
+ client.connect(callback);
+ }, callback.onError, true);
+ return client;
+ };
+ Navigation.prototype.getServerEndpoint = function (_token, _appId, _onsuccess, _onerror, unignore) {
+ _onsuccess();
+ };
+ Navigation.Endpoint = new Object();
+ return Navigation;
+ }();
+ RongIMLib.Navigation = Navigation;
+ })(RongIMLib || (RongIMLib = {}));
+ // TODO: 统一变量、方法等命名规范
+
+ // var RongIMLib;
+ (function (RongIMLib) {
+ /**
+ * 消息基类
+ */
+ var BaseMessage = function () {
+ function BaseMessage(arg) {
+ this._name = "BaseMessage";
+ this.lengthSize = 0;
+ if (arg instanceof RongIMLib.Header) {
+ this._header = arg;
+ } else {
+ this._header = new RongIMLib.Header(arg, false, RongIMLib.Qos.AT_MOST_ONCE, false);
+ }
+ }
+ BaseMessage.prototype.read = function (In, length) {
+ this.readMessage(In, length);
+ };
+ BaseMessage.prototype.write = function (Out) {
+ var binaryHelper = new RongIMLib.BinaryHelper();
+ var out = binaryHelper.convertStream(Out);
+ this._headerCode = this.getHeaderFlag();
+ out.write(this._headerCode);
+ this.writeMessage(out);
+ return out;
+ };
+ BaseMessage.prototype.getHeaderFlag = function () {
+ return this._header.encode();
+ };
+ BaseMessage.prototype.getLengthSize = function () {
+ return this.lengthSize;
+ };
+ BaseMessage.prototype.toBytes = function () {
+ return this.write([]).getBytesArray();
+ };
+ BaseMessage.prototype.isRetained = function () {
+ return this._header.retain;
+ };
+ BaseMessage.prototype.setRetained = function (retain) {
+ this._header.retain = retain;
+ };
+ BaseMessage.prototype.setQos = function (qos) {
+ this._header.qos = Object.prototype.toString.call(qos) == "[object Object]" ? qos : RongIMLib.Qos[qos];
+ };
+ BaseMessage.prototype.setDup = function (dup) {
+ this._header.dup = dup;
+ };
+ BaseMessage.prototype.isDup = function () {
+ return this._header.dup;
+ };
+ BaseMessage.prototype.getType = function () {
+ return this._header.type;
+ };
+ BaseMessage.prototype.getQos = function () {
+ return this._header.qos;
+ };
+ BaseMessage.prototype.messageLength = function () {
+ return 0;
+ };
+ BaseMessage.prototype.writeMessage = function (out) {};
+ BaseMessage.prototype.readMessage = function (In, length) {};
+ BaseMessage.prototype.init = function (args) {
+ var valName,
+ nana,
+ me = this;
+ for (nana in args) {
+ if (!args.hasOwnProperty(nana)) {
+ continue;
+ }
+ valName = nana.replace(/^\w/, function (x) {
+ var tt = x.charCodeAt(0);
+ return "set" + (tt >= 0x61 ? String.fromCharCode(tt & ~32) : x);
+ });
+ if (valName in me) {
+ if (nana == "status") {
+ me[valName](disconnectStatus[args[nana]] ? disconnectStatus[args[nana]] : args[nana]);
+ } else {
+ me[valName](args[nana]);
+ }
+ }
+ }
+ };
+ return BaseMessage;
+ }();
+ RongIMLib.BaseMessage = BaseMessage;
+ /**
+ *连接消息类型
+ */
+ var ConnectMessage = function (_super) {
+ __extends(ConnectMessage, _super);
+ function ConnectMessage(header) {
+ _super.call(this, arguments.length == 0 || arguments.length == 3 ? RongIMLib.Type.CONNECT : arguments[0]);
+ this._name = "ConnectMessage";
+ this.CONNECT_HEADER_SIZE = 12;
+ this.protocolId = "RCloud";
+ this.binaryHelper = new RongIMLib.BinaryHelper();
+ this.protocolVersion = 3;
+ switch (arguments.length) {
+ case 0:
+ case 1:
+ case 3:
+ if (!arguments[0] || arguments[0].length > 64) {
+ throw new Error("ConnectMessage:Client Id cannot be null and must be at most 64 characters long: " + arguments[0]);
+ }
+ this.clientId = arguments[0];
+ this.cleanSession = arguments[1];
+ this.keepAlive = arguments[2];
+ break;
+ }
+ }
+ ConnectMessage.prototype.messageLength = function () {
+ var payloadSize = this.binaryHelper.toMQttString(this.clientId).length;
+ payloadSize += this.binaryHelper.toMQttString(this.willTopic).length;
+ payloadSize += this.binaryHelper.toMQttString(this.will).length;
+ payloadSize += this.binaryHelper.toMQttString(this.appId).length;
+ payloadSize += this.binaryHelper.toMQttString(this.token).length;
+ return payloadSize + this.CONNECT_HEADER_SIZE;
+ };
+ ConnectMessage.prototype.readMessage = function (stream) {
+ this.protocolId = stream.readUTF();
+ this.protocolVersion = stream.readByte();
+ var cFlags = stream.readByte();
+ this.hasAppId = (cFlags & 128) > 0;
+ this.hasToken = (cFlags & 64) > 0;
+ this.retainWill = (cFlags & 32) > 0;
+ this.willQos = cFlags >> 3 & 3;
+ this.hasWill = (cFlags & 4) > 0;
+ this.cleanSession = (cFlags & 32) > 0;
+ this.keepAlive = stream.read() * 256 + stream.read();
+ this.clientId = stream.readUTF();
+ if (this.hasWill) {
+ this.willTopic = stream.readUTF();
+ this.will = stream.readUTF();
+ }
+ if (this.hasAppId) {
+ try {
+ this.appId = stream.readUTF();
+ } catch (ex) {
+ throw new Error(ex);
+ }
+ }
+ if (this.hasToken) {
+ try {
+ this.token = stream.readUTF();
+ } catch (ex) {
+ throw new Error(ex);
+ }
+ }
+ return stream;
+ };
+ ConnectMessage.prototype.writeMessage = function (out) {
+ var stream = this.binaryHelper.convertStream(out);
+ stream.writeUTF(this.protocolId);
+ stream.write(this.protocolVersion);
+ var flags = this.cleanSession ? 2 : 0;
+ flags |= this.hasWill ? 4 : 0;
+ flags |= this.willQos ? this.willQos >> 3 : 0;
+ flags |= this.retainWill ? 32 : 0;
+ flags |= this.hasToken ? 64 : 0;
+ flags |= this.hasAppId ? 128 : 0;
+ stream.write(flags);
+ stream.writeChar(this.keepAlive);
+ stream.writeUTF(this.clientId);
+ if (this.hasWill) {
+ stream.writeUTF(this.willTopic);
+ stream.writeUTF(this.will);
+ }
+ if (this.hasAppId) {
+ stream.writeUTF(this.appId);
+ }
+ if (this.hasToken) {
+ stream.writeUTF(this.token);
+ }
+ return stream;
+ };
+ return ConnectMessage;
+ }(BaseMessage);
+ RongIMLib.ConnectMessage = ConnectMessage;
+ /**
+ *连接应答类型
+ */
+ var ConnAckMessage = function (_super) {
+ __extends(ConnAckMessage, _super);
+ function ConnAckMessage(header) {
+ _super.call(this, arguments.length == 0 ? RongIMLib.Type.CONNACK : arguments.length == 1 ? arguments[0] instanceof RongIMLib.Header ? arguments[0] : RongIMLib.Type.CONNACK : null);
+ this._name = "ConnAckMessage";
+ this.MESSAGE_LENGTH = 2;
+ this.binaryHelper = new RongIMLib.BinaryHelper();
+ var me = this;
+ switch (arguments.length) {
+ case 0:
+ case 1:
+ if (!(arguments[0] instanceof RongIMLib.Header)) {
+ if (arguments[0] in RongIMLib.ConnectionState) {
+ if (arguments[0] == null) {
+ throw new Error("ConnAckMessage:The status of ConnAskMessage can't be null");
+ }
+ me.setStatus(arguments[0]);
+ }
+ }
+ break;
+ }
+ }
+ ;
+ ConnAckMessage.prototype.messageLength = function () {
+ var length = this.MESSAGE_LENGTH;
+ if (this.userId) {
+ length += this.binaryHelper.toMQttString(this.userId).length;
+ }
+ return length;
+ };
+ ;
+ ConnAckMessage.prototype.readMessage = function (_in, msglength) {
+ _in.read();
+ var result = +_in.read();
+ if (result >= 0 && result <= 12) {
+ this.setStatus(result);
+ } else {
+ throw new Error("Unsupported CONNACK code:" + result);
+ }
+ if (msglength > this.MESSAGE_LENGTH) {
+ this.setUserId(_in.readUTF());
+ var sessionId = _in.readUTF();
+ var timestamp = _in.readLong();
+ this.setTimestamp(timestamp);
+ }
+ };
+ ;
+ ConnAckMessage.prototype.writeMessage = function (out) {
+ var stream = this.binaryHelper.convertStream(out);
+ stream.write(128);
+ switch (+status) {
+ case 0:
+ case 1:
+ case 2:
+ case 5:
+ case 6:
+ stream.write(+status);
+ break;
+ case 3:
+ case 4:
+ stream.write(3);
+ break;
+ default:
+ throw new Error("Unsupported CONNACK code:" + status);
+ }
+ if (this.userId) {
+ stream.writeUTF(this.userId);
+ }
+ return stream;
+ };
+ ;
+ ConnAckMessage.prototype.setStatus = function (x) {
+ this.status = x;
+ };
+ ;
+ ConnAckMessage.prototype.setUserId = function (_userId) {
+ this.userId = _userId;
+ };
+ ;
+ ConnAckMessage.prototype.getStatus = function () {
+ return this.status;
+ };
+ ;
+ ConnAckMessage.prototype.getUserId = function () {
+ return this.userId;
+ };
+ ;
+ ConnAckMessage.prototype.setTimestamp = function (x) {
+ this.timestrap = x;
+ };
+ ;
+ ConnAckMessage.prototype.getTimestamp = function () {
+ return this.timestrap;
+ };
+ return ConnAckMessage;
+ }(BaseMessage);
+ RongIMLib.ConnAckMessage = ConnAckMessage;
+ /**
+ *断开消息类型
+ */
+ var DisconnectMessage = function (_super) {
+ __extends(DisconnectMessage, _super);
+ function DisconnectMessage(header) {
+ _super.call(this, header instanceof RongIMLib.Header ? header : RongIMLib.Type.DISCONNECT);
+ this._name = "DisconnectMessage";
+ this.MESSAGE_LENGTH = 2;
+ this.binaryHelper = new RongIMLib.BinaryHelper();
+ if (!(header instanceof RongIMLib.Header)) {
+ if (header in RongIMLib.ConnectionStatus) {
+ this.status = header;
+ }
+ }
+ }
+ DisconnectMessage.prototype.messageLength = function () {
+ return this.MESSAGE_LENGTH;
+ };
+ DisconnectMessage.prototype.readMessage = function (_in) {
+ _in.read();
+ var result = +_in.read();
+ if (result >= 0 && result <= 5) {
+ this.setStatus(disconnectStatus[result] ? disconnectStatus[result] : result);
+ } else {
+ throw new Error("Unsupported CONNACK code:" + result);
+ }
+ };
+ DisconnectMessage.prototype.writeMessage = function (Out) {
+ var out = this.binaryHelper.convertStream(Out);
+ out.write(0);
+ if (+status >= 1 && +status <= 3) {
+ out.write(+status - 1);
+ } else {
+ throw new Error("Unsupported CONNACK code:" + status);
+ }
+ };
+ DisconnectMessage.prototype.setStatus = function (x) {
+ this.status = x;
+ };
+ ;
+ DisconnectMessage.prototype.getStatus = function () {
+ return this.status;
+ };
+ ;
+ return DisconnectMessage;
+ }(BaseMessage);
+ RongIMLib.DisconnectMessage = DisconnectMessage;
+ /**
+ *请求消息信令
+ */
+ var PingReqMessage = function (_super) {
+ __extends(PingReqMessage, _super);
+ function PingReqMessage(header) {
+ _super.call(this, header && header instanceof RongIMLib.Header ? header : RongIMLib.Type.PINGREQ);
+ this._name = "PingReqMessage";
+ }
+ return PingReqMessage;
+ }(BaseMessage);
+ RongIMLib.PingReqMessage = PingReqMessage;
+ /**
+ *响应消息信令
+ */
+ var PingRespMessage = function (_super) {
+ __extends(PingRespMessage, _super);
+ function PingRespMessage(header) {
+ _super.call(this, header && header instanceof RongIMLib.Header ? header : RongIMLib.Type.PINGRESP);
+ this._name = "PingRespMessage";
+ }
+ return PingRespMessage;
+ }(BaseMessage);
+ RongIMLib.PingRespMessage = PingRespMessage;
+ /**
+ *封装MesssageId
+ */
+ var RetryableMessage = function (_super) {
+ __extends(RetryableMessage, _super);
+ function RetryableMessage(argu) {
+ _super.call(this, argu);
+ this._name = "RetryableMessage";
+ this.binaryHelper = new RongIMLib.BinaryHelper();
+ }
+ RetryableMessage.prototype.messageLength = function () {
+ return 2;
+ };
+ RetryableMessage.prototype.writeMessage = function (Out) {
+ var out = this.binaryHelper.convertStream(Out),
+ Id = this.getMessageId(),
+ lsb = Id & 255,
+ msb = (Id & 65280) >> 8;
+ out.write(msb);
+ out.write(lsb);
+ return out;
+ };
+ RetryableMessage.prototype.readMessage = function (_in, msgLength) {
+ var msgId = _in.read() * 256 + _in.read();
+ this.setMessageId(parseInt(msgId, 10));
+ };
+ RetryableMessage.prototype.setMessageId = function (_messageId) {
+ this.messageId = _messageId;
+ };
+ RetryableMessage.prototype.getMessageId = function () {
+ return this.messageId;
+ };
+ return RetryableMessage;
+ }(BaseMessage);
+ RongIMLib.RetryableMessage = RetryableMessage;
+ /**
+ *发送消息应答(双向)
+ *qos为1必须给出应答(所有消息类型一样)
+ */
+ var PubAckMessage = function (_super) {
+ __extends(PubAckMessage, _super);
+ function PubAckMessage(header) {
+ _super.call(this, header instanceof RongIMLib.Header ? header : RongIMLib.Type.PUBACK);
+ this.msgLen = 2;
+ this.date = 0;
+ this.millisecond = 0;
+ this.timestamp = 0;
+ this.binaryHelper = new RongIMLib.BinaryHelper();
+ this._name = "PubAckMessage";
+ if (!(header instanceof RongIMLib.Header)) {
+ _super.prototype.setMessageId.call(this, header);
+ }
+ }
+ PubAckMessage.prototype.messageLength = function () {
+ return this.msgLen;
+ };
+ PubAckMessage.prototype.writeMessage = function (Out) {
+ var out = this.binaryHelper.convertStream(Out);
+ RetryableMessage.prototype.writeMessage.call(this, out);
+ };
+ PubAckMessage.prototype.readMessage = function (_in, msgLength) {
+ RetryableMessage.prototype.readMessage.call(this, _in);
+ this.date = _in.readInt();
+ this.status = _in.read() * 256 + _in.read();
+ this.millisecond = _in.read() * 256 + _in.read();
+ this.timestamp = this.date * 1000 + this.millisecond;
+ this.messageUId = _in.readUTF();
+ };
+ PubAckMessage.prototype.setStatus = function (x) {
+ this.status = x;
+ };
+ PubAckMessage.prototype.setTimestamp = function (timestamp) {
+ this.timestamp = timestamp;
+ };
+ PubAckMessage.prototype.setMessageUId = function (messageUId) {
+ this.messageUId = messageUId;
+ };
+ PubAckMessage.prototype.getStatus = function () {
+ return this.status;
+ };
+ PubAckMessage.prototype.getDate = function () {
+ return this.date;
+ };
+ PubAckMessage.prototype.getTimestamp = function () {
+ return this.timestamp;
+ };
+ PubAckMessage.prototype.getMessageUId = function () {
+ return this.messageUId;
+ };
+ return PubAckMessage;
+ }(RetryableMessage);
+ RongIMLib.PubAckMessage = PubAckMessage;
+ /**
+ *发布消息
+ */
+ var PublishMessage = function (_super) {
+ __extends(PublishMessage, _super);
+ function PublishMessage(header, two, three) {
+ _super.call(this, arguments.length == 1 && header instanceof RongIMLib.Header ? header : arguments.length == 3 ? RongIMLib.Type.PUBLISH : 0);
+ this._name = "PublishMessage";
+ this.binaryHelper = new RongIMLib.BinaryHelper();
+ this.syncMsg = false;
+ if (arguments.length == 3) {
+ this.topic = header;
+ this.targetId = three;
+ this.data = typeof two == "string" ? this.binaryHelper.toMQttString(two) : two;
+ }
+ }
+ PublishMessage.prototype.messageLength = function () {
+ var length = 10;
+ length += this.binaryHelper.toMQttString(this.topic).length;
+ length += this.binaryHelper.toMQttString(this.targetId).length;
+ length += this.data.length;
+ return length;
+ };
+ PublishMessage.prototype.writeMessage = function (Out) {
+ var out = this.binaryHelper.convertStream(Out);
+ out.writeUTF(this.topic);
+ out.writeUTF(this.targetId);
+ RetryableMessage.prototype.writeMessage.apply(this, arguments);
+ out.write(this.data);
+ };
+ ;
+ PublishMessage.prototype.readMessage = function (_in, msgLength) {
+ var pos = 6;
+ this.date = _in.readInt();
+ this.topic = _in.readUTF();
+ pos += this.binaryHelper.toMQttString(this.topic).length;
+ this.targetId = _in.readUTF();
+ pos += this.binaryHelper.toMQttString(this.targetId).length;
+ RetryableMessage.prototype.readMessage.apply(this, arguments);
+ this.data = new Array(msgLength - pos);
+ this.data = _in.read(this.data);
+ };
+ ;
+ PublishMessage.prototype.setTopic = function (x) {
+ this.topic = x;
+ };
+ PublishMessage.prototype.setData = function (x) {
+ this.data = x;
+ };
+ PublishMessage.prototype.setTargetId = function (x) {
+ this.targetId = x;
+ };
+ PublishMessage.prototype.setDate = function (x) {
+ this.date = x;
+ };
+ PublishMessage.prototype.setSyncMsg = function (x) {
+ this.syncMsg = x;
+ };
+ //是否是其他端同步过来的消息
+ PublishMessage.prototype.getSyncMsg = function () {
+ return this.syncMsg;
+ };
+ PublishMessage.prototype.getTopic = function () {
+ return this.topic;
+ };
+ PublishMessage.prototype.getData = function () {
+ return this.data;
+ };
+ PublishMessage.prototype.getTargetId = function () {
+ return this.targetId;
+ };
+ PublishMessage.prototype.getDate = function () {
+ return this.date;
+ };
+ return PublishMessage;
+ }(RetryableMessage);
+ RongIMLib.PublishMessage = PublishMessage;
+ /**
+ *请求查询
+ */
+ var QueryMessage = function (_super) {
+ __extends(QueryMessage, _super);
+ function QueryMessage(header, two, three) {
+ _super.call(this, header instanceof RongIMLib.Header ? header : arguments.length == 3 ? RongIMLib.Type.QUERY : null);
+ this.binaryHelper = new RongIMLib.BinaryHelper();
+ this._name = "QueryMessage";
+ if (arguments.length == 3) {
+ this.data = typeof two == "string" ? this.binaryHelper.toMQttString(two) : two;
+ this.topic = header;
+ this.targetId = three;
+ }
+ }
+ QueryMessage.prototype.messageLength = function () {
+ var length = 0;
+ length += this.binaryHelper.toMQttString(this.topic).length;
+ length += this.binaryHelper.toMQttString(this.targetId).length;
+ length += 2;
+ length += this.data.length;
+ return length;
+ };
+ QueryMessage.prototype.writeMessage = function (Out) {
+ var out = this.binaryHelper.convertStream(Out);
+ out.writeUTF(this.topic);
+ out.writeUTF(this.targetId);
+ RetryableMessage.prototype.writeMessage.call(this, out);
+ out.write(this.data);
+ };
+ QueryMessage.prototype.readMessage = function (_in, msgLength) {
+ var pos = 0;
+ this.topic = _in.readUTF();
+ this.targetId = _in.readUTF();
+ pos += this.binaryHelper.toMQttString(this.topic).length;
+ pos += this.binaryHelper.toMQttString(this.targetId).length;
+ this.readMessage.apply(this, arguments);
+ pos += 2;
+ this.data = new Array(msgLength - pos);
+ _in.read(this.data);
+ };
+ QueryMessage.prototype.setTopic = function (x) {
+ this.topic = x;
+ };
+ QueryMessage.prototype.setData = function (x) {
+ this.data = x;
+ };
+ QueryMessage.prototype.setTargetId = function (x) {
+ this.targetId = x;
+ };
+ QueryMessage.prototype.getTopic = function () {
+ return this.topic;
+ };
+ QueryMessage.prototype.getData = function () {
+ return this.data;
+ };
+ QueryMessage.prototype.getTargetId = function () {
+ return this.targetId;
+ };
+ return QueryMessage;
+ }(RetryableMessage);
+ RongIMLib.QueryMessage = QueryMessage;
+ /**
+ *请求查询确认
+ */
+ var QueryConMessage = function (_super) {
+ __extends(QueryConMessage, _super);
+ function QueryConMessage(messageId) {
+ _super.call(this, messageId instanceof RongIMLib.Header ? messageId : RongIMLib.Type.QUERYCON);
+ this._name = "QueryConMessage";
+ if (!(messageId instanceof RongIMLib.Header)) {
+ _super.prototype.setMessageId.call(this, messageId);
+ }
+ }
+ return QueryConMessage;
+ }(RetryableMessage);
+ RongIMLib.QueryConMessage = QueryConMessage;
+ /**
+ *请求查询应答
+ */
+ var QueryAckMessage = function (_super) {
+ __extends(QueryAckMessage, _super);
+ function QueryAckMessage(header) {
+ _super.call(this, header);
+ this._name = "QueryAckMessage";
+ this.binaryHelper = new RongIMLib.BinaryHelper();
+ }
+ QueryAckMessage.prototype.readMessage = function (In, msgLength) {
+ RetryableMessage.prototype.readMessage.call(this, In);
+ this.date = In.readInt();
+ this.setStatus(In.read() * 256 + In.read());
+ if (msgLength > 0) {
+ this.data = new Array(msgLength - 8);
+ this.data = In.read(this.data);
+ }
+ };
+ QueryAckMessage.prototype.getData = function () {
+ return this.data;
+ };
+ QueryAckMessage.prototype.getStatus = function () {
+ return this.status;
+ };
+ QueryAckMessage.prototype.getDate = function () {
+ return this.date;
+ };
+ QueryAckMessage.prototype.setDate = function (x) {
+ this.date = x;
+ };
+ QueryAckMessage.prototype.setStatus = function (x) {
+ this.status = x;
+ };
+ QueryAckMessage.prototype.setData = function (x) {
+ this.data = x;
+ };
+ return QueryAckMessage;
+ }(RetryableMessage);
+ RongIMLib.QueryAckMessage = QueryAckMessage;
+ })(RongIMLib || (RongIMLib = {}));
+ ///
+
+ // var RongIMLib;
+ (function (RongIMLib) {
+ /**
+ * 把消息对象写入流中
+ * 发送消息时用到
+ */
+ var MessageOutputStream = function () {
+ function MessageOutputStream(_out) {
+ var binaryHelper = new RongIMLib.BinaryHelper();
+ this.out = binaryHelper.convertStream(_out);
+ }
+ MessageOutputStream.prototype.writeMessage = function (msg) {
+ if (msg instanceof RongIMLib.BaseMessage) {
+ msg.write(this.out);
+ }
+ };
+ return MessageOutputStream;
+ }();
+ RongIMLib.MessageOutputStream = MessageOutputStream;
+ /**
+ * 流转换为消息对象
+ * 服务器返回消息时用到
+ */
+ var MessageInputStream = function () {
+ function MessageInputStream(In, isPolling) {
+ if (!isPolling) {
+ var _in = new RongIMLib.BinaryHelper().convertStream(In);
+ this.flags = _in.readByte();
+ this._in = _in;
+ } else {
+ this.flags = In["headerCode"];
+ }
+ this.header = new RongIMLib.Header(this.flags);
+ this.isPolling = isPolling;
+ this.In = In;
+ }
+ MessageInputStream.prototype.readMessage = function () {
+ switch (this.header.getType()) {
+ case 1:
+ this.msg = new RongIMLib.ConnectMessage(this.header);
+ break;
+ case 2:
+ this.msg = new RongIMLib.ConnAckMessage(this.header);
+ break;
+ case 3:
+ this.msg = new RongIMLib.PublishMessage(this.header);
+ this.msg.setSyncMsg(this.header.getSyncMsg());
+ break;
+ case 4:
+ this.msg = new RongIMLib.PubAckMessage(this.header);
+ break;
+ case 5:
+ this.msg = new RongIMLib.QueryMessage(this.header);
+ break;
+ case 6:
+ this.msg = new RongIMLib.QueryAckMessage(this.header);
+ break;
+ case 7:
+ this.msg = new RongIMLib.QueryConMessage(this.header);
+ break;
+ case 9:
+ case 11:
+ case 13:
+ this.msg = new RongIMLib.PingRespMessage(this.header);
+ break;
+ case 8:
+ case 10:
+ case 12:
+ this.msg = new RongIMLib.PingReqMessage(this.header);
+ break;
+ case 14:
+ this.msg = new RongIMLib.DisconnectMessage(this.header);
+ break;
+ default:
+ throw new Error("No support for deserializing " + this.header.getType() + " messages");
+ }
+ if (this.isPolling) {
+ this.msg.init(this.In);
+ } else {
+ this.msg.read(this._in, this.In.length - 1);
+ }
+ return this.msg;
+ };
+ return MessageInputStream;
+ }();
+ RongIMLib.MessageInputStream = MessageInputStream;
+ var Header = function () {
+ function Header(_type, _retain, _qos, _dup) {
+ this.retain = false;
+ this.qos = RongIMLib.Qos.AT_LEAST_ONCE;
+ this.dup = false;
+ this.syncMsg = false;
+ if (_type && +_type == _type && arguments.length == 1) {
+ this.retain = (_type & 1) > 0;
+ this.qos = (_type & 6) >> 1;
+ this.dup = (_type & 8) > 0;
+ this.type = _type >> 4 & 15;
+ this.syncMsg = (_type & 8) == 8;
+ } else {
+ this.type = _type;
+ this.retain = _retain;
+ this.qos = _qos;
+ this.dup = _dup;
+ }
+ }
+ Header.prototype.getSyncMsg = function () {
+ return this.syncMsg;
+ };
+ Header.prototype.getType = function () {
+ return this.type;
+ };
+ Header.prototype.encode = function () {
+ var me = this;
+ switch (this.qos) {
+ case RongIMLib.Qos[0]:
+ me.qos = RongIMLib.Qos.AT_MOST_ONCE;
+ break;
+ case RongIMLib.Qos[1]:
+ me.qos = RongIMLib.Qos.AT_LEAST_ONCE;
+ break;
+ case RongIMLib.Qos[2]:
+ me.qos = RongIMLib.Qos.EXACTLY_ONCE;
+ break;
+ case RongIMLib.Qos[3]:
+ me.qos = RongIMLib.Qos.DEFAULT;
+ break;
+ }
+ var _byte = this.type << 4;
+ _byte |= this.retain ? 1 : 0;
+ _byte |= this.qos << 1;
+ _byte |= this.dup ? 8 : 0;
+ return _byte;
+ };
+ Header.prototype.toString = function () {
+ return "Header [type=" + this.type + ",retain=" + this.retain + ",qos=" + this.qos + ",dup=" + this.dup + "]";
+ };
+ return Header;
+ }();
+ RongIMLib.Header = Header;
+ /**
+ * 二进制帮助对象
+ */
+ var BinaryHelper = function () {
+ function BinaryHelper() {}
+ BinaryHelper.prototype.writeUTF = function (str, isGetBytes) {
+ var back = [],
+ byteSize = 0;
+ for (var i = 0, len = str.length; i < len; i++) {
+ var code = str.charCodeAt(i);
+ if (code >= 0 && code <= 127) {
+ byteSize += 1;
+ back.push(code);
+ } else if (code >= 128 && code <= 2047) {
+ byteSize += 2;
+ back.push(192 | 31 & code >> 6);
+ back.push(128 | 63 & code);
+ } else if (code >= 2048 && code <= 65535) {
+ byteSize += 3;
+ back.push(224 | 15 & code >> 12);
+ back.push(128 | 63 & code >> 6);
+ back.push(128 | 63 & code);
+ }
+ }
+ for (var i = 0, len = back.length; i < len; i++) {
+ if (back[i] > 255) {
+ back[i] &= 255;
+ }
+ }
+ if (isGetBytes) {
+ return back;
+ }
+ if (byteSize <= 255) {
+ return [0, byteSize].concat(back);
+ } else {
+ return [byteSize >> 8, byteSize & 255].concat(back);
+ }
+ };
+ BinaryHelper.prototype.readUTF = function (arr) {
+ if (Object.prototype.toString.call(arr) == "[object String]") {
+ return arr;
+ }
+ var UTF = "",
+ _arr = arr;
+ for (var i = 0, len = _arr.length; i < len; i++) {
+ if (_arr[i] < 0) {
+ _arr[i] += 256;
+ }
+ ;
+ var one = _arr[i].toString(2),
+ v = one.match(/^1+?(?=0)/);
+ if (v && one.length == 8) {
+ var bytesLength = v[0].length,
+ // store = _arr[i].toString(2).slice(7 - bytesLength);
+ store = '';
+ for (var st = 0; st < bytesLength; st++) {
+ store += _arr[st + i].toString(2).slice(2);
+ }
+ UTF += String.fromCharCode(parseInt(store, 2));
+ i += bytesLength - 1;
+ } else {
+ UTF += String.fromCharCode(_arr[i]);
+ }
+ }
+ return UTF;
+ };
+ /**
+ * [convertStream 将参数x转化为RongIMStream对象]
+ * @param {any} x [参数]
+ */
+ BinaryHelper.prototype.convertStream = function (x) {
+ if (x instanceof RongIMStream) {
+ return x;
+ } else {
+ return new RongIMStream(x);
+ }
+ };
+ BinaryHelper.prototype.toMQttString = function (str) {
+ return this.writeUTF(str);
+ };
+ return BinaryHelper;
+ }();
+ RongIMLib.BinaryHelper = BinaryHelper;
+ var RongIMStream = function () {
+ function RongIMStream(arr) {
+ //当前流执行的起始位置
+ this.position = 0;
+ //当前流写入的多少字节
+ this.writen = 0;
+ this.poolLen = 0;
+ this.binaryHelper = new BinaryHelper();
+ this.pool = arr;
+ this.poolLen = arr.length;
+ }
+ RongIMStream.prototype.check = function () {
+ return this.position >= this.pool.length;
+ };
+ RongIMStream.prototype.readInt = function () {
+ if (this.check()) {
+ return -1;
+ }
+ var end = "";
+ for (var i = 0; i < 4; i++) {
+ var t = this.pool[this.position++].toString(16);
+ if (t.length == 1) {
+ t = "0" + t;
+ }
+ end += t.toString(16);
+ }
+ return parseInt(end, 16);
+ };
+ RongIMStream.prototype.readLong = function () {
+ if (this.check()) {
+ return -1;
+ }
+ var end = "";
+ for (var i = 0; i < 8; i++) {
+ var t = this.pool[this.position++].toString(16);
+ if (t.length == 1) {
+ t = "0" + t;
+ }
+ end += t;
+ }
+ return parseInt(end, 16);
+ };
+ RongIMStream.prototype.readTimestamp = function () {
+ if (this.check()) {
+ return -1;
+ }
+ var end = "";
+ for (var i = 0; i < 8; i++) {
+ end += this.pool[this.position++].toString(16);
+ }
+ end = end.substring(2, 8);
+ return parseInt(end, 16);
+ };
+ RongIMStream.prototype.readUTF = function () {
+ if (this.check()) {
+ return -1;
+ }
+ var big = this.readByte() << 8 | this.readByte();
+ return this.binaryHelper.readUTF(this.pool.subarray(this.position, this.position += big));
+ };
+ RongIMStream.prototype.readByte = function () {
+ if (this.check()) {
+ return -1;
+ }
+ var val = this.pool[this.position++];
+ if (val > 255) {
+ val &= 255;
+ }
+ return val;
+ };
+ RongIMStream.prototype.read = function (bytesArray) {
+ if (bytesArray) {
+ return this.pool.subarray(this.position, this.poolLen);
+ } else {
+ return this.readByte();
+ }
+ };
+ RongIMStream.prototype.write = function (_byte) {
+ var b = _byte;
+ if (Object.prototype.toString.call(b).toLowerCase() == "[object array]") {
+ [].push.apply(this.pool, b);
+ } else {
+ if (+b == b) {
+ if (b > 255) {
+ b &= 255;
+ }
+ this.pool.push(b);
+ this.writen++;
+ }
+ }
+ return b;
+ };
+ RongIMStream.prototype.writeChar = function (v) {
+ if (+v != v) {
+ throw new Error("writeChar:arguments type is error");
+ }
+ this.write(v >> 8 & 255);
+ this.write(v & 255);
+ this.writen += 2;
+ };
+ RongIMStream.prototype.writeUTF = function (str) {
+ var val = this.binaryHelper.writeUTF(str);
+ [].push.apply(this.pool, val);
+ this.writen += val.length;
+ };
+ RongIMStream.prototype.toComplements = function () {
+ var _tPool = this.pool;
+ for (var i = 0; i < this.poolLen; i++) {
+ if (_tPool[i] > 128) {
+ _tPool[i] -= 256;
+ }
+ }
+ return _tPool;
+ };
+ RongIMStream.prototype.getBytesArray = function (isCom) {
+ if (isCom) {
+ return this.toComplements();
+ }
+ return this.pool;
+ };
+ return RongIMStream;
+ }();
+ RongIMLib.RongIMStream = RongIMStream;
+ })(RongIMLib || (RongIMLib = {}));
+
+ // var RongIMLib;
+ (function (RongIMLib) {
+ var PollingTransportation = function () {
+ function PollingTransportation(socket) {
+ this.empty = new Function();
+ this.connected = false;
+ this.pid = +new Date() + Math.random() + "";
+ this.queue = [];
+ this.socket = socket;
+ return this;
+ }
+ PollingTransportation.prototype.createTransport = function (url, method) {
+ if (!url) {
+ throw new Error("Url is empty,Please check it!");
+ }
+ ;
+ this.url = url;
+ var sid = RongIMLib.RongIMClient._storageProvider.getItem("sId" + RongIMLib.Navigation.Endpoint.userId),
+ me = this;
+ if (sid) {
+ setTimeout(function () {
+ me.onSuccess("{\"status\":0,\"userId\":\"" + RongIMLib.Navigation.Endpoint.userId + "\",\"headerCode\":32,\"messageId\":0,\"sessionid\":\"" + sid + "\"}");
+ me.connected = true;
+ }, 500);
+ return this;
+ }
+ this.getRequest(url, true);
+ return this;
+ };
+ PollingTransportation.prototype.getRequest = function (url, isconnect, options) {
+ options = options || {};
+ var callback = options.callback || function () {};
+ var me = this;
+ var pid = encodeURIComponent(me.pid);
+ var protocol = RongIMLib.RongIMClient._memoryStore.depend.protocol;
+ var tpl = '{protocol}{url}&pid={pid}';
+ var url = tools.tplEngine(tpl, {
+ protocol: protocol,
+ url: url,
+ pid: pid
+ });
+ me.xhr = tools.request({
+ url: url,
+ data: {
+ t: Math.random()
+ }
+ }, {
+ success: function (res) {
+ var isError = res.statusCode == 400;
+ if (isError) {
+ me.onError();
+ return;
+ }
+ var data = res.data;
+ if (data.status == 3) {
+ return me.onError(RongIMLib.ErrorCode.MINI_PROGAM_SERVICE_NOT_OPEN);
+ }
+ me.onSuccess(JSON.stringify(data), isconnect);
+ callback();
+ },
+ fail: function () {
+ me.onError();
+ }
+ });
+ };
+ /**
+ * [send 发送消息,Method:POST]
+ * queue 为消息队列,待通道可用发送所有等待消息
+ * @param {string} data [需要传入comet格式数据,此处只负责通讯通道,数据转换在外层处理]
+ */
+ PollingTransportation.prototype.send = function (data) {
+ var me = this;
+ var path = data.url;
+ var host = RongIMLib.RongIMClient._memoryStore.depend.cmp;
+ var protocol = RongIMLib.RongIMClient._memoryStore.depend.protocol;
+ var pid = encodeURIComponent(me.pid);
+ var tpl = '{protocol}{host}/websocket{path}&pid={pid}';
+ var url = tools.tplEngine(tpl, {
+ protocol: protocol,
+ host: host,
+ path: path,
+ pid: pid
+ });
+ var body = JSON.stringify(data.data);
+ var self = this;
+ me.sendxhr = tools.request({
+ url: url,
+ method: 'POST',
+ data: body
+ }, {
+ success: function (res) {
+ var _data = res.data;
+ if (!_data) {
+ return;
+ }
+ var isBadReq = res.statusCode == 400;
+ if (isBadReq) {
+ self.onClose();
+ self.socket.fire('StatusChanged', RongIMLib.ConnectionStatus.NETWORK_UNAVAILABLE);
+ return;
+ }
+ _data = JSON.stringify(_data);
+ me.onData(_data);
+ },
+ fail: function (e) {
+ console.log('inner sendmessage error', e);
+ }
+ });
+ };
+ PollingTransportation.prototype.onData = function (data, header) {
+ var self = this,
+ val = JSON.parse(data);
+ if (val.userId) {
+ RongIMLib.Navigation.Endpoint.userId = val.userId;
+ }
+ if (header) {
+ RongIMLib.RongIMClient._storageProvider.setItem("sId" + RongIMLib.Navigation.Endpoint.userId, header);
+ }
+ if (!RongIMLib.MessageUtil.isArray(val)) {
+ val = [val];
+ }
+ Array.forEach(val, function (m) {
+ self.socket.fire("message", new RongIMLib.MessageInputStream(m, true).readMessage());
+ });
+ return "";
+ };
+ PollingTransportation.prototype.onClose = function () {
+ if (this.xhr) {
+ this.xhr.abort();
+ this.xhr = null;
+ }
+ if (this.sendxhr) {
+ this.sendxhr.abort();
+ this.sendxhr = null;
+ }
+ };
+ PollingTransportation.prototype.disconnect = function () {
+ RongIMLib.RongIMClient._storageProvider.removeItem("sId" + RongIMLib.Navigation.Endpoint.userId);
+ RongIMLib.RongIMClient._storageProvider.removeItem(RongIMLib.Navigation.Endpoint.userId + "msgId");
+ this.onClose();
+ };
+ PollingTransportation.prototype.reconnect = function () {
+ this.disconnect();
+ this.createTransport(this.url);
+ };
+ PollingTransportation.prototype.onSuccess = function (responseText, isconnect) {
+ var txt = responseText.match(/"sessionid":"\S+?(?=")/);
+ this.onData(responseText, txt ? txt[0].slice(13) : 0);
+ if (/"headerCode":-32,/.test(responseText)) {
+ RongIMLib.RongIMClient._storageProvider.removeItem("sId" + RongIMLib.Navigation.Endpoint.userId);
+ RongIMLib.RongIMClient._storageProvider.removeItem(RongIMLib.Navigation.Endpoint.userId + "msgId");
+ return;
+ }
+ var host = RongIMLib.RongIMClient._memoryStore.depend.cmp;
+ var ret = JSON.parse(responseText);
+ // token 无效,不再进行轮询
+ if (ret.status == 4) {
+ RongIMLib.RongIMClient._storageProvider.removeItem("sId" + RongIMLib.Navigation.Endpoint.userId);
+ RongIMLib.RongIMClient._storageProvider.removeItem(RongIMLib.Navigation.Endpoint.userId + "msgId");
+ return;
+ }
+ this.getRequest(host + "/pullmsg.js?sessionid=" + RongIMLib.RongIMClient._storageProvider.getItem("sId" + RongIMLib.Navigation.Endpoint.userId) + "×trap=" + encodeURIComponent(new Date().getTime() + Math.random() + ""));
+ this.connected = true;
+ isconnect && this.socket.fire("connect");
+ };
+ PollingTransportation.prototype.onError = function (code) {
+ RongIMLib.RongIMClient._storageProvider.removeItem("sId" + RongIMLib.Navigation.Endpoint.userId);
+ RongIMLib.RongIMClient._storageProvider.removeItem(RongIMLib.Navigation.Endpoint.userId + "msgId");
+ this.onClose();
+ this.connected = false;
+ code = code || RongIMLib.ConnectionStatus.NETWORK_UNAVAILABLE;
+ this.socket.fire("disconnect", code);
+ };
+ return PollingTransportation;
+ }();
+ RongIMLib.PollingTransportation = PollingTransportation;
+ })(RongIMLib || (RongIMLib = {}));
+
+ //objectname映射
+ var typeMapping = {
+ "RC:TxtMsg": "TextMessage",
+ "RC:ImgMsg": "ImageMessage",
+ "RC:VcMsg": "VoiceMessage",
+ "RC:ImgTextMsg": "RichContentMessage",
+ "RC:FileMsg": "FileMessage",
+ "RC:LBSMsg": "LocationMessage",
+ "RC:InfoNtf": "InformationNotificationMessage",
+ "RC:ContactNtf": "ContactNotificationMessage",
+ "RC:ProfileNtf": "ProfileNotificationMessage",
+ "RC:CmdNtf": "CommandNotificationMessage",
+ "RC:DizNtf": "DiscussionNotificationMessage",
+ "RC:CmdMsg": "CommandMessage",
+ "RC:TypSts": "TypingStatusMessage",
+ "RC:CsChaR": "ChangeModeResponseMessage",
+ "RC:CsHsR": "HandShakeResponseMessage",
+ "RC:CsEnd": "TerminateMessage",
+ "RC:CsSp": "SuspendMessage",
+ "RC:CsUpdate": "CustomerStatusUpdateMessage",
+ "RC:ReadNtf": "ReadReceiptMessage",
+ "RC:VCAccept": "AcceptMessage",
+ "RC:VCRinging": "RingingMessage",
+ "RC:VCSummary": "SummaryMessage",
+ "RC:VCHangup": "HungupMessage",
+ "RC:VCInvite": "InviteMessage",
+ "RC:VCModifyMedia": "MediaModifyMessage",
+ "RC:VCModifyMem": "MemberModifyMessage",
+ "RC:CsContact": "CustomerContact",
+ "RC:PSImgTxtMsg": "PublicServiceRichContentMessage",
+ "RC:PSMultiImgTxtMsg": "PublicServiceMultiRichContentMessage",
+ "RC:GrpNtf": "GroupNotificationMessage",
+ "RC:PSCmd": "PublicServiceCommandMessage",
+ "RC:RcCmd": "RecallCommandMessage",
+ "RC:SRSMsg": "SyncReadStatusMessage",
+ "RC:RRReqMsg": "ReadReceiptRequestMessage",
+ "RC:RRRspMsg": "ReadReceiptResponseMessage",
+ "RCJrmf:RpMsg": "JrmfReadPacketMessage",
+ "RCJrmf:RpOpendMsg": "JrmfReadPacketOpenedMessage"
+ // "RCE:UpdateStatus": "RCEUpdateStatusMessage"
+ },
+ //自定义消息类型
+ registerMessageTypeMapping = {},
+ HistoryMsgType = {
+ 4: "qryCMsg",
+ 2: "qryDMsg",
+ 3: "qryGMsg",
+ 1: "qryPMsg",
+ 6: "qrySMsg",
+ 7: "qryPMsg",
+ 8: "qryPMsg",
+ 5: "qryCMsg"
+ },
+ disconnectStatus = {
+ 1: 6
+ };
+
+ // var RongIMLib;
+ (function (RongIMLib) {
+ /**
+ * 通道标识类
+ */
+ var Transportations = function () {
+ function Transportations() {}
+ Transportations._TransportType = RongIMLib.Socket.WEBSOCKET;
+ return Transportations;
+ }();
+ RongIMLib.Transportations = Transportations;
+ var MessageUtil = function () {
+ function MessageUtil() {}
+ MessageUtil.supportLargeStorage = function () {
+ return true;
+ };
+ /**
+ *4680000 为localstorage最小容量5200000字节的90%,超过90%将删除之前过早的存储
+ */
+ MessageUtil.checkStorageSize = function () {
+ return JSON.stringify(localStorage).length < 4680000;
+ };
+ MessageUtil.getFirstKey = function (obj) {
+ var str = "";
+ for (var key in obj) {
+ str = key;
+ break;
+ }
+ return str;
+ };
+ MessageUtil.isEmpty = function (obj) {
+ var empty = true;
+ for (var key in obj) {
+ empty = false;
+ break;
+ }
+ return empty;
+ };
+ MessageUtil.ArrayForm = function (typearray) {
+ if (Object.prototype.toString.call(typearray) == "[object ArrayBuffer]") {
+ var arr = new Int8Array(typearray);
+ return [].slice.call(arr);
+ }
+ return typearray;
+ };
+ MessageUtil.ArrayFormInput = function (typearray) {
+ if (Object.prototype.toString.call(typearray) == "[object ArrayBuffer]") {
+ var arr = new Uint8Array(typearray);
+ return arr;
+ }
+ return typearray;
+ };
+ MessageUtil.indexOf = function (arr, item, from) {
+ for (var l = arr.length, i = from < 0 ? Math.max(0, +from) : from || 0; i < l; i++) {
+ if (arr[i] == item) {
+ return i;
+ }
+ }
+ return -1;
+ };
+ MessageUtil.isArray = function (obj) {
+ return Object.prototype.toString.call(obj) == "[object Array]";
+ };
+ //遍历,只能遍历数组
+ MessageUtil.forEach = function (arr, func) {
+ if ([].forEach) {
+ return function (arr, func) {
+ [].forEach.call(arr, func);
+ };
+ } else {
+ return function (arr, func) {
+ for (var i = 0; i < arr.length; i++) {
+ func.call(arr, arr[i], i, arr);
+ }
+ };
+ }
+ };
+ MessageUtil.remove = function (array, func) {
+ for (var i = 0, len = array.length; i < len; i++) {
+ if (func(array[i])) {
+ return array.splice(i, 1)[0];
+ }
+ }
+ return null;
+ };
+ MessageUtil.int64ToTimestamp = function (obj, isDate) {
+ if (obj.low === undefined) {
+ return obj;
+ }
+ var low = obj.low;
+ if (low < 0) {
+ low += 0xffffffff + 1;
+ }
+ low = low.toString(16);
+ var timestamp = parseInt(obj.high.toString(16) + "00000000".replace(new RegExp("0{" + low.length + "}$"), low), 16);
+ if (isDate) {
+ return new Date(timestamp);
+ }
+ return timestamp;
+ };
+ var getSyncTimeKey = function (message) {
+ var _client = RongIMLib.Bridge._client || {};
+ var userId = _client.userId;
+ var direction = message.messageDirection == 1 ? 'send' : 'received';
+ var tpl = '{userId}_{direction}box';
+ return tools.tplEngine(tpl, {
+ userId: userId,
+ direction: direction
+ });
+ };
+ MessageUtil.updateSyncTime = function (message) {
+ var key = getSyncTimeKey(message);
+ var sentTime = message.sentTime;
+ var storage = RongIMLib.RongIMClient._storageProvider;
+ storage.setItem(key, sentTime);
+ };
+ MessageUtil.getSyncTime = function () {
+ var sendKey = getSyncTimeKey({
+ messageDirection: RongIMLib.MessageDirection.SEND
+ });
+ var receivedKey = getSyncTimeKey({
+ messageDirection: RongIMLib.MessageDirection.RECEIVED
+ });
+ var storage = RongIMLib.RongIMClient._storageProvider;
+ return {
+ send: storage.getItem(sendKey) || 0,
+ received: storage.getItem(receivedKey) || 0
+ };
+ };
+ //消息转换方法
+ MessageUtil.messageParser = function (entity, onReceived, offlineMsg) {
+ var message = new RongIMLib.Message(),
+ content = entity.content,
+ de,
+ objectName = entity.classname,
+ val,
+ isUseDef = false;
+ try {
+ if (RongIMLib.RongIMClient._memoryStore.depend.isPolling) {
+ val = new RongIMLib.BinaryHelper().readUTF(content.offset ? MessageUtil.ArrayForm(content.buffer).slice(content.offset, content.limit) : content);
+ de = JSON.parse(val);
+ } else {
+ val = new RongIMLib.BinaryHelper().readUTF(content.offset ? MessageUtil.ArrayFormInput(content.buffer).subarray(content.offset, content.limit) : content);
+ de = JSON.parse(val);
+ }
+ } catch (ex) {
+ de = val;
+ isUseDef = true;
+ }
+ //映射为具体消息对象
+ if (objectName in typeMapping) {
+ message.content = new RongIMLib[typeMapping[objectName]](de);
+ message.messageType = typeMapping[objectName];
+ } else if (objectName in registerMessageTypeMapping) {
+ var content = new RongIMLib.RongIMClient.RegisterMessage[registerMessageTypeMapping[objectName]](de);
+ if (isUseDef) {
+ message.content = content.decode(de);
+ } else {
+ message.content = content;
+ }
+ message.messageType = registerMessageTypeMapping[objectName];
+ } else {
+ message.content = new RongIMLib.UnknownMessage({
+ content: de,
+ objectName: objectName
+ });
+ message.messageType = "UnknownMessage";
+ }
+ //根据实体对象设置message对象]
+ var dateTime = MessageUtil.int64ToTimestamp(entity.dataTime);
+ if (dateTime > 0) {
+ message.sentTime = dateTime;
+ } else {
+ message.sentTime = +new Date();
+ }
+ message.senderUserId = entity.fromUserId;
+ message.conversationType = entity.type;
+ if (entity.fromUserId == RongIMLib.Bridge._client.userId) {
+ message.targetId = entity.groupId;
+ } else {
+ message.targetId = /^[234]$/.test(entity.type || entity.getType()) ? entity.groupId : message.senderUserId;
+ }
+ if (entity.direction == 1) {
+ message.messageDirection = RongIMLib.MessageDirection.SEND;
+ message.senderUserId = RongIMLib.Bridge._client.userId;
+ } else {
+ if (message.senderUserId == RongIMLib.Bridge._client.userId) {
+ message.messageDirection = RongIMLib.MessageDirection.SEND;
+ } else {
+ message.messageDirection = RongIMLib.MessageDirection.RECEIVE;
+ }
+ }
+ message.receivedStatus = RongIMLib.ReceivedStatus.READ;
+ if ((entity.status & 2) == 2) {
+ message.receivedStatus = RongIMLib.ReceivedStatus.RETRIEVED;
+ }
+ message.messageUId = entity.msgId;
+ message.receivedTime = new Date().getTime();
+ message.messageId = message.conversationType + "_" + ~~(Math.random() * 0xffffff);
+ message.objectName = objectName;
+ message.offLineMessage = offlineMsg ? true : false;
+ if (!offlineMsg) {
+ if (RongIMLib.RongIMClient._memoryStore.connectAckTime > message.sentTime) {
+ message.offLineMessage = true;
+ }
+ }
+ return message;
+ };
+ //适配SSL
+ // static schemeArrs: Array = [["http", "ws"], ["https", "wss"]];
+ MessageUtil.sign = {
+ converNum: 1,
+ msgNum: 1,
+ isMsgStart: true,
+ isConvStart: true
+ };
+ return MessageUtil;
+ }();
+ RongIMLib.MessageUtil = MessageUtil;
+ /**
+ * 工具类
+ */
+ var MessageIdHandler = function () {
+ function MessageIdHandler() {}
+ MessageIdHandler.init = function () {
+ this.messageId = 0;
+ };
+ MessageIdHandler.messageIdPlus = function (method) {
+ if (this.messageId >= 65535) {
+ method();
+ return false;
+ }
+ this.messageId += 1;
+ return this.messageId;
+ };
+ MessageIdHandler.clearMessageId = function () {
+ this.messageId = 0;
+ };
+ MessageIdHandler.getMessageId = function () {
+ return this.messageId;
+ };
+ MessageIdHandler.messageId = 0;
+ return MessageIdHandler;
+ }();
+ RongIMLib.MessageIdHandler = MessageIdHandler;
+ })(RongIMLib || (RongIMLib = {}));
+
+ // var RongIMLib;
+ (function (RongIMLib) {
+ var MessageContent = function () {
+ function MessageContent(data) {
+ throw new Error("This method is abstract, you must implement this method in inherited class.");
+ }
+ MessageContent.obtain = function () {
+ throw new Error("This method is abstract, you must implement this method in inherited class.");
+ };
+ return MessageContent;
+ }();
+ RongIMLib.MessageContent = MessageContent;
+ var NotificationMessage = function (_super) {
+ __extends(NotificationMessage, _super);
+ function NotificationMessage() {
+ _super.apply(this, arguments);
+ }
+ return NotificationMessage;
+ }(MessageContent);
+ RongIMLib.NotificationMessage = NotificationMessage;
+ var StatusMessage = function (_super) {
+ __extends(StatusMessage, _super);
+ function StatusMessage() {
+ _super.apply(this, arguments);
+ }
+ return StatusMessage;
+ }(MessageContent);
+ RongIMLib.StatusMessage = StatusMessage;
+ var ModelUtil = function () {
+ function ModelUtil() {}
+ ModelUtil.modelClone = function (object) {
+ var obj = {};
+ for (var item in object) {
+ if (item != "messageName" && "encode" != item) {
+ obj[item] = object[item];
+ }
+ }
+ return obj;
+ };
+ ModelUtil.modleCreate = function (fields, msgType) {
+ if (fields.length < 1) {
+ throw new Error("Array is empty -> registerMessageType.modleCreate");
+ }
+ var Object = function (message) {
+ var me = this;
+ for (var index in fields) {
+ me[fields[index]] = message[fields[index]];
+ }
+ Object.prototype.messageName = msgType;
+ Object.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ };
+ return Object;
+ };
+ return ModelUtil;
+ }();
+ RongIMLib.ModelUtil = ModelUtil;
+ })(RongIMLib || (RongIMLib = {}));
+
+ // var RongIMLib;
+ (function (RongIMLib) {
+ var CustomerStatusMessage = function () {
+ function CustomerStatusMessage(message) {
+ this.messageName = "CustomerStatusMessage";
+ this.status = message.status;
+ }
+ CustomerStatusMessage.obtain = function () {
+ return null;
+ };
+ CustomerStatusMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return CustomerStatusMessage;
+ }();
+ RongIMLib.CustomerStatusMessage = CustomerStatusMessage;
+ /**
+ * 客服转换响应消息的类型名
+ */
+ var ChangeModeResponseMessage = function () {
+ function ChangeModeResponseMessage(message) {
+ this.messageName = "ChangeModeResponseMessage";
+ this.code = message.code;
+ this.data = message.data;
+ this.msg = message.msg;
+ }
+ ChangeModeResponseMessage.obtain = function () {
+ return null;
+ };
+ ChangeModeResponseMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return ChangeModeResponseMessage;
+ }();
+ RongIMLib.ChangeModeResponseMessage = ChangeModeResponseMessage;
+ /**
+ * 客服转换消息的类型名
+ * 此消息不计入未读消息数
+ */
+ var ChangeModeMessage = function () {
+ function ChangeModeMessage(message) {
+ this.messageName = "ChangeModeMessage";
+ this.uid = message.uid;
+ this.sid = message.sid;
+ this.pid = message.pid;
+ }
+ ChangeModeMessage.obtain = function () {
+ return null;
+ };
+ ChangeModeMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return ChangeModeMessage;
+ }();
+ RongIMLib.ChangeModeMessage = ChangeModeMessage;
+ var CustomerStatusUpdateMessage = function () {
+ function CustomerStatusUpdateMessage(message) {
+ this.messageName = "CustomerStatusUpdateMessage";
+ this.serviceStatus = message.serviceStatus;
+ this.sid = message.sid;
+ }
+ CustomerStatusUpdateMessage.obtain = function () {
+ return null;
+ };
+ CustomerStatusUpdateMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return CustomerStatusUpdateMessage;
+ }();
+ RongIMLib.CustomerStatusUpdateMessage = CustomerStatusUpdateMessage;
+ var HandShakeMessage = function () {
+ function HandShakeMessage(message) {
+ this.messageName = "HandShakeMessage";
+ message && (this.groupid = message.groupid);
+ }
+ HandShakeMessage.obtain = function () {
+ return null;
+ };
+ HandShakeMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return HandShakeMessage;
+ }();
+ RongIMLib.HandShakeMessage = HandShakeMessage;
+ var CustomerContact = function () {
+ function CustomerContact(message) {
+ this.messageName = "CustomerContact";
+ this.page = message.page;
+ this.nickName = message.nickName;
+ this.routingInfo = message.routingInfo;
+ this.info = message.info;
+ this.requestInfo = message.requestInfo;
+ }
+ CustomerContact.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return CustomerContact;
+ }();
+ RongIMLib.CustomerContact = CustomerContact;
+ var EvaluateMessage = function () {
+ function EvaluateMessage(message) {
+ this.messageName = "EvaluateMessage";
+ this.uid = message.uid;
+ this.sid = message.sid;
+ this.pid = message.pid;
+ this.source = message.source;
+ this.suggest = message.suggest;
+ this.isresolve = message.isresolve;
+ this.type = message.type;
+ }
+ EvaluateMessage.obtain = function () {
+ return null;
+ };
+ EvaluateMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return EvaluateMessage;
+ }();
+ RongIMLib.EvaluateMessage = EvaluateMessage;
+ /**
+ * 客服握手响应消息的类型名
+ */
+ var HandShakeResponseMessage = function () {
+ function HandShakeResponseMessage(message) {
+ this.messageName = "HandShakeResponseMessage";
+ this.msg = message.msg;
+ this.status = message.status;
+ this.data = message.data;
+ }
+ HandShakeResponseMessage.obtain = function () {
+ return null;
+ };
+ HandShakeResponseMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return HandShakeResponseMessage;
+ }();
+ RongIMLib.HandShakeResponseMessage = HandShakeResponseMessage;
+ var SuspendMessage = function () {
+ function SuspendMessage(message) {
+ this.messageName = "SuspendMessage";
+ this.uid = message.uid;
+ this.sid = message.sid;
+ this.pid = message.pid;
+ }
+ SuspendMessage.obtain = function () {
+ return null;
+ };
+ SuspendMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return SuspendMessage;
+ }();
+ RongIMLib.SuspendMessage = SuspendMessage;
+ var TerminateMessage = function () {
+ function TerminateMessage(message) {
+ this.messageName = "TerminateMessage";
+ this.code = message.code;
+ this.msg = message.msg;
+ this.sid = message.sid;
+ }
+ TerminateMessage.obtain = function () {
+ return null;
+ };
+ TerminateMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return TerminateMessage;
+ }();
+ RongIMLib.TerminateMessage = TerminateMessage;
+ })(RongIMLib || (RongIMLib = {}));
+
+ // var RongIMLib;
+ (function (RongIMLib) {
+ var IsTypingStatusMessage = function () {
+ function IsTypingStatusMessage(data) {
+ this.messageName = "IsTypingStatusMessage";
+ var msg = data;
+ }
+ IsTypingStatusMessage.prototype.encode = function () {
+ return undefined;
+ };
+ IsTypingStatusMessage.prototype.getMessage = function () {
+ return null;
+ };
+ return IsTypingStatusMessage;
+ }();
+ RongIMLib.IsTypingStatusMessage = IsTypingStatusMessage;
+ })(RongIMLib || (RongIMLib = {}));
+
+ // var RongIMLib;
+ (function (RongIMLib) {
+ var InformationNotificationMessage = function () {
+ function InformationNotificationMessage(message) {
+ this.messageName = "InformationNotificationMessage";
+ if (arguments.length == 0) {
+ throw new Error("Can not instantiate with empty parameters, use obtain method instead -> InformationNotificationMessage.");
+ }
+ this.message = message.message;
+ this.extra = message.extra;
+ if (message.user) {
+ this.user = message.user;
+ }
+ }
+ InformationNotificationMessage.obtain = function (message) {
+ return new InformationNotificationMessage({
+ message: message,
+ extra: ""
+ });
+ };
+ InformationNotificationMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return InformationNotificationMessage;
+ }();
+ RongIMLib.InformationNotificationMessage = InformationNotificationMessage;
+ var CommandMessage = function () {
+ function CommandMessage(message) {
+ this.messageName = "CommandMessage";
+ if (arguments.length == 0) {
+ throw new Error("Can not instantiate with empty parameters, use obtain method instead -> CommandMessage.");
+ }
+ try {
+ if (Object.prototype.toString.call(message.data) == "[object String]") {
+ this.data = JSON.parse(message.data);
+ } else {
+ this.data = message.data;
+ }
+ } catch (e) {
+ this.data = message.data;
+ }
+ this.name = message.name;
+ this.extra = message.extra;
+ }
+ CommandMessage.obtain = function (data) {
+ return new CommandMessage({
+ data: data,
+ extra: ""
+ });
+ };
+ CommandMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return CommandMessage;
+ }();
+ RongIMLib.CommandMessage = CommandMessage;
+ var ContactNotificationMessage = function () {
+ function ContactNotificationMessage(message) {
+ this.messageName = "ContactNotificationMessage";
+ if (arguments.length == 0) {
+ throw new Error("Can not instantiate with empty parameters, use obtain method instead -> ContactNotificationMessage.");
+ }
+ this.operation = message.operation;
+ this.targetUserId = message.targetUserId;
+ this.message = message.message;
+ this.extra = message.extra;
+ this.sourceUserId = message.sourceUserId;
+ if (message.user) {
+ this.user = message.user;
+ }
+ }
+ ContactNotificationMessage.obtain = function (operation, sourceUserId, targetUserId, message) {
+ return new InformationNotificationMessage({
+ operation: operation,
+ sourceUserId: sourceUserId,
+ targetUserId: targetUserId,
+ message: message
+ });
+ };
+ ContactNotificationMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ ContactNotificationMessage.CONTACT_OPERATION_ACCEPT_RESPONSE = "ContactOperationAcceptResponse";
+ ContactNotificationMessage.CONTACT_OPERATION_REJECT_RESPONSE = "ContactOperationRejectResponse";
+ ContactNotificationMessage.CONTACT_OPERATION_REQUEST = "ContactOperationRequest";
+ return ContactNotificationMessage;
+ }();
+ RongIMLib.ContactNotificationMessage = ContactNotificationMessage;
+ var ProfileNotificationMessage = function () {
+ function ProfileNotificationMessage(message) {
+ this.messageName = "ProfileNotificationMessage";
+ if (arguments.length == 0) {
+ throw new Error("Can not instantiate with empty parameters, use obtain method instead -> ProfileNotificationMessage.");
+ }
+ this.operation = message.operation;
+ try {
+ if (Object.prototype.toString.call(message.data) == "[object String]") {
+ this.data = JSON.parse(message.data);
+ } else {
+ this.data = message.data;
+ }
+ } catch (e) {
+ this.data = message.data;
+ }
+ this.extra = message.extra;
+ if (message.user) {
+ this.user = message.user;
+ }
+ }
+ ProfileNotificationMessage.obtain = function (operation, data) {
+ return new ProfileNotificationMessage({
+ operation: operation,
+ data: data
+ });
+ };
+ ProfileNotificationMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return ProfileNotificationMessage;
+ }();
+ RongIMLib.ProfileNotificationMessage = ProfileNotificationMessage;
+ var CommandNotificationMessage = function () {
+ function CommandNotificationMessage(message) {
+ this.messageName = "CommandNotificationMessage";
+ if (arguments.length == 0) {
+ throw new Error("Can not instantiate with empty parameters, use obtain method instead -> ProfileNotificationMessage.");
+ }
+ try {
+ if (Object.prototype.toString.call(message.data) == "[object String]") {
+ this.data = JSON.parse(message.data);
+ } else {
+ this.data = message.data;
+ }
+ } catch (e) {
+ this.data = message.data;
+ }
+ this.name = message.name;
+ this.extra = message.extra;
+ if (message.user) {
+ this.user = message.user;
+ }
+ }
+ CommandNotificationMessage.obtain = function (name, data) {
+ return new CommandNotificationMessage({
+ name: name,
+ data: data,
+ extra: ""
+ });
+ };
+ CommandNotificationMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return CommandNotificationMessage;
+ }();
+ RongIMLib.CommandNotificationMessage = CommandNotificationMessage;
+ var DiscussionNotificationMessage = function () {
+ function DiscussionNotificationMessage(message) {
+ this.messageName = "DiscussionNotificationMessage";
+ if (arguments.length == 0) {
+ throw new Error("Can not instantiate with empty parameters, use obtain method instead -> DiscussionNotificationMessage.");
+ }
+ this.extra = message.extra;
+ this.extension = message.extension;
+ this.type = message.type;
+ this.isHasReceived = message.isHasReceived;
+ this.operation = message.operation;
+ this.user = message.user;
+ if (message.user) {
+ this.user = message.user;
+ }
+ }
+ DiscussionNotificationMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return DiscussionNotificationMessage;
+ }();
+ RongIMLib.DiscussionNotificationMessage = DiscussionNotificationMessage;
+ var GroupNotificationMessage = function () {
+ function GroupNotificationMessage(msg) {
+ this.messageName = "GroupNotificationMessage";
+ if (arguments.length == 0) {
+ throw new Error("Can not instantiate with empty parameters, use obtain method instead -> GroupNotificationMessage.");
+ }
+ msg.operatorUserId && (this.operatorUserId = msg.operatorUserId);
+ msg.operation && (this.operation = msg.operation);
+ msg.data && (this.data = msg.data);
+ msg.message && (this.message = msg.message);
+ }
+ GroupNotificationMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return GroupNotificationMessage;
+ }();
+ RongIMLib.GroupNotificationMessage = GroupNotificationMessage;
+ })(RongIMLib || (RongIMLib = {}));
+
+ // var RongIMLib;
+ (function (RongIMLib) {
+ var TextMessage = function () {
+ function TextMessage(message) {
+ this.messageName = "TextMessage";
+ if (arguments.length == 0) {
+ throw new Error("Can not instantiate with empty parameters, use obtain method instead -> TextMessage.");
+ }
+ this.content = message.content;
+ this.extra = message.extra;
+ if (message.user) {
+ this.user = message.user;
+ }
+ if (message.mentionedInfo) {
+ this.mentionedInfo = message.mentionedInfo;
+ }
+ }
+ TextMessage.obtain = function (text) {
+ return new TextMessage({
+ extra: "",
+ content: text
+ });
+ };
+ TextMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return TextMessage;
+ }();
+ RongIMLib.TextMessage = TextMessage;
+ var TypingStatusMessage = function () {
+ function TypingStatusMessage(message) {
+ this.messageName = "TypingStatusMessage";
+ if (arguments.length == 0) {
+ throw new Error("Can not instantiate with empty parameters, use obtain method instead -> TypingStatusMessage.");
+ }
+ this.typingContentType = message.typingContentType;
+ this.data = message.data;
+ }
+ TypingStatusMessage.obtain = function (typingContentType, data) {
+ return new TypingStatusMessage({
+ typingContentType: typingContentType,
+ data: data
+ });
+ };
+ TypingStatusMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return TypingStatusMessage;
+ }();
+ RongIMLib.TypingStatusMessage = TypingStatusMessage;
+ var ReadReceiptMessage = function () {
+ function ReadReceiptMessage(message) {
+ this.messageName = "ReadReceiptMessage";
+ if (arguments.length == 0) {
+ throw new Error("Can not instantiate with empty parameters, use obtain method instead -> ReadReceiptMessage.");
+ }
+ this.lastMessageSendTime = message.lastMessageSendTime;
+ this.messageUId = message.messageUId;
+ this.type = message.type;
+ }
+ ReadReceiptMessage.obtain = function (messageUId, lastMessageSendTime, type) {
+ return new ReadReceiptMessage({
+ messageUId: messageUId,
+ lastMessageSendTime: lastMessageSendTime,
+ type: type
+ });
+ };
+ ReadReceiptMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return ReadReceiptMessage;
+ }();
+ RongIMLib.ReadReceiptMessage = ReadReceiptMessage;
+ var VoiceMessage = function () {
+ function VoiceMessage(message) {
+ this.messageName = "VoiceMessage";
+ if (arguments.length == 0) {
+ throw new Error("Can not instantiate with empty parameters, use obtain method instead -> VoiceMessage.");
+ }
+ this.content = message.content;
+ this.duration = message.duration;
+ this.extra = message.extra;
+ if (message.user) {
+ this.user = message.user;
+ }
+ if (message.mentionedInfo) {
+ this.mentionedInfo = message.mentionedInfo;
+ }
+ }
+ VoiceMessage.obtain = function (base64Content, duration) {
+ return new VoiceMessage({
+ content: base64Content,
+ duration: duration,
+ extra: ""
+ });
+ };
+ VoiceMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return VoiceMessage;
+ }();
+ RongIMLib.VoiceMessage = VoiceMessage;
+ var RecallCommandMessage = function () {
+ function RecallCommandMessage(message) {
+ this.messageName = "RecallCommandMessage";
+ this.messageUId = message.messageUId;
+ this.conversationType = message.conversationType;
+ this.targetId = message.targetId;
+ this.sentTime = message.sentTime;
+ message.extra && (this.extra = message.extra);
+ message.user && (this.user = message.user);
+ }
+ RecallCommandMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return RecallCommandMessage;
+ }();
+ RongIMLib.RecallCommandMessage = RecallCommandMessage;
+ var ImageMessage = function () {
+ function ImageMessage(message) {
+ this.messageName = "ImageMessage";
+ if (arguments.length == 0) {
+ throw new Error("Can not instantiate with empty parameters, use obtain method instead -> ImageMessage.");
+ }
+ this.content = message.content;
+ this.imageUri = message.imageUri;
+ message.extra && (this.extra = message.extra);
+ message.user && (this.user = message.user);
+ if (message.mentionedInfo) {
+ this.mentionedInfo = message.mentionedInfo;
+ }
+ }
+ ImageMessage.obtain = function (content, imageUri) {
+ return new ImageMessage({
+ content: content,
+ imageUri: imageUri,
+ extra: ""
+ });
+ };
+ ImageMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return ImageMessage;
+ }();
+ RongIMLib.ImageMessage = ImageMessage;
+ var LocationMessage = function () {
+ function LocationMessage(message) {
+ this.messageName = "LocationMessage";
+ if (arguments.length == 0) {
+ throw new Error("Can not instantiate with empty parameters, use obtain method instead -> LocationMessage.");
+ }
+ this.latitude = message.latitude;
+ this.longitude = message.longitude;
+ this.poi = message.poi;
+ this.content = message.content;
+ this.extra = message.extra;
+ if (message.user) {
+ this.user = message.user;
+ }
+ if (message.mentionedInfo) {
+ this.mentionedInfo = message.mentionedInfo;
+ }
+ }
+ LocationMessage.obtain = function (latitude, longitude, poi, content) {
+ return new LocationMessage({
+ latitude: latitude,
+ longitude: longitude,
+ poi: poi,
+ content: content,
+ extra: ""
+ });
+ };
+ LocationMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return LocationMessage;
+ }();
+ RongIMLib.LocationMessage = LocationMessage;
+ var RichContentMessage = function () {
+ function RichContentMessage(message) {
+ this.messageName = "RichContentMessage";
+ if (arguments.length == 0) {
+ throw new Error("Can not instantiate with empty parameters, use obtain method instead -> RichContentMessage.");
+ }
+ this.title = message.title;
+ this.content = message.content;
+ this.imageUri = message.imageUri;
+ this.extra = message.extra;
+ this.url = message.url;
+ if (message.user) {
+ this.user = message.user;
+ }
+ }
+ RichContentMessage.obtain = function (title, content, imageUri, url) {
+ return new RichContentMessage({
+ title: title,
+ content: content,
+ imageUri: imageUri,
+ url: url,
+ extra: ""
+ });
+ };
+ RichContentMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return RichContentMessage;
+ }();
+ RongIMLib.RichContentMessage = RichContentMessage;
+ var JrmfReadPacketMessage = function () {
+ function JrmfReadPacketMessage(message) {
+ this.messageName = 'JrmfReadPacketMessage';
+ message && (this.message = message);
+ }
+ JrmfReadPacketMessage.prototype.encode = function () {
+ return "";
+ };
+ return JrmfReadPacketMessage;
+ }();
+ RongIMLib.JrmfReadPacketMessage = JrmfReadPacketMessage;
+ var JrmfReadPacketOpenedMessage = function () {
+ function JrmfReadPacketOpenedMessage(message) {
+ this.messageName = 'JrmfReadPacketOpenedMessage';
+ message && (this.message = message);
+ }
+ JrmfReadPacketOpenedMessage.prototype.encode = function () {
+ return "";
+ };
+ return JrmfReadPacketOpenedMessage;
+ }();
+ RongIMLib.JrmfReadPacketOpenedMessage = JrmfReadPacketOpenedMessage;
+ var UnknownMessage = function () {
+ function UnknownMessage(message) {
+ this.messageName = "UnknownMessage";
+ if (arguments.length == 0) {
+ throw new Error("Can not instantiate with empty parameters, use obtain method instead -> UnknownMessage.");
+ }
+ this.message = message;
+ }
+ UnknownMessage.prototype.encode = function () {
+ return "";
+ };
+ return UnknownMessage;
+ }();
+ RongIMLib.UnknownMessage = UnknownMessage;
+ var PublicServiceCommandMessage = function () {
+ function PublicServiceCommandMessage(message) {
+ this.messageName = "PublicServiceCommandMessage";
+ if (arguments.length == 0) {
+ throw new Error("Can not instantiate with empty parameters, use obtain method instead -> PublicServiceCommandMessage.");
+ }
+ this.content = message.content;
+ this.extra = message.extra;
+ this.menuItem = message.menuItem;
+ if (message.user) {
+ this.user = message.user;
+ }
+ if (message.mentionedInfo) {
+ this.mentionedInfo = message.mentionedInfo;
+ }
+ }
+ PublicServiceCommandMessage.obtain = function (item) {
+ return new PublicServiceCommandMessage({
+ content: "",
+ command: "",
+ menuItem: item,
+ extra: ""
+ });
+ };
+ PublicServiceCommandMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return PublicServiceCommandMessage;
+ }();
+ RongIMLib.PublicServiceCommandMessage = PublicServiceCommandMessage;
+ var PublicServiceMultiRichContentMessage = function () {
+ function PublicServiceMultiRichContentMessage(messages) {
+ this.messageName = "PublicServiceMultiRichContentMessage";
+ this.richContentMessages = messages;
+ }
+ PublicServiceMultiRichContentMessage.prototype.encode = function () {
+ return null;
+ };
+ return PublicServiceMultiRichContentMessage;
+ }();
+ RongIMLib.PublicServiceMultiRichContentMessage = PublicServiceMultiRichContentMessage;
+ var SyncReadStatusMessage = function () {
+ function SyncReadStatusMessage(message) {
+ this.messageName = "SyncReadStatusMessage";
+ message.lastMessageSendTime && (this.lastMessageSendTime = message.lastMessageSendTime);
+ }
+ SyncReadStatusMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return SyncReadStatusMessage;
+ }();
+ RongIMLib.SyncReadStatusMessage = SyncReadStatusMessage;
+ var ReadReceiptRequestMessage = function () {
+ function ReadReceiptRequestMessage(message) {
+ this.messageName = "ReadReceiptRequestMessage";
+ message.messageUId && (this.messageUId = message.messageUId);
+ }
+ ReadReceiptRequestMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return ReadReceiptRequestMessage;
+ }();
+ RongIMLib.ReadReceiptRequestMessage = ReadReceiptRequestMessage;
+ var ReadReceiptResponseMessage = function () {
+ function ReadReceiptResponseMessage(message) {
+ this.messageName = "ReadReceiptResponseMessage";
+ message.receiptMessageDic && (this.receiptMessageDic = message.receiptMessageDic);
+ }
+ ReadReceiptResponseMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return ReadReceiptResponseMessage;
+ }();
+ RongIMLib.ReadReceiptResponseMessage = ReadReceiptResponseMessage;
+ var PublicServiceRichContentMessage = function () {
+ function PublicServiceRichContentMessage(message) {
+ this.messageName = "PublicServiceRichContentMessage";
+ this.richContentMessage = message;
+ }
+ PublicServiceRichContentMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return PublicServiceRichContentMessage;
+ }();
+ RongIMLib.PublicServiceRichContentMessage = PublicServiceRichContentMessage;
+ var FileMessage = function () {
+ function FileMessage(message) {
+ this.messageName = "FileMessage";
+ message.name && (this.name = message.name);
+ message.size && (this.size = message.size);
+ message.type && (this.type = message.type);
+ message.fileUrl && (this.fileUrl = message.fileUrl);
+ message.extra && (this.extra = message.extra);
+ message.user && (this.user = message.user);
+ }
+ FileMessage.obtain = function (msg) {
+ return new FileMessage({
+ name: msg.name,
+ size: msg.size,
+ type: msg.type,
+ fileUrl: msg.fileUrl
+ });
+ };
+ FileMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return FileMessage;
+ }();
+ RongIMLib.FileMessage = FileMessage;
+ var AcceptMessage = function () {
+ function AcceptMessage(message) {
+ this.messageName = "AcceptMessage";
+ this.callId = message.callId;
+ this.mediaType = message.mediaType;
+ }
+ AcceptMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return AcceptMessage;
+ }();
+ RongIMLib.AcceptMessage = AcceptMessage;
+ var RingingMessage = function () {
+ function RingingMessage(message) {
+ this.messageName = "RingingMessage";
+ this.callId = message.callId;
+ }
+ RingingMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return RingingMessage;
+ }();
+ RongIMLib.RingingMessage = RingingMessage;
+ var SummaryMessage = function () {
+ function SummaryMessage(message) {
+ this.messageName = "SummaryMessage";
+ this.caller = message.caller;
+ this.inviter = message.inviter;
+ this.mediaType = message.mediaType;
+ this.memberIdList = message.memberIdList;
+ this.startTime = message.startTime;
+ this.connectedTime = message.connectedTime;
+ this.duration = message.duration;
+ this.status = message.status;
+ }
+ SummaryMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return SummaryMessage;
+ }();
+ RongIMLib.SummaryMessage = SummaryMessage;
+ var HungupMessage = function () {
+ function HungupMessage(message) {
+ this.messageName = "HungupMessage";
+ this.callId = message.callId;
+ this.reason = message.reason;
+ }
+ HungupMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return HungupMessage;
+ }();
+ RongIMLib.HungupMessage = HungupMessage;
+ var InviteMessage = function () {
+ function InviteMessage(message) {
+ this.messageName = "InviteMessage";
+ this.callId = message.callId;
+ this.engineType = message.engineType;
+ this.channelInfo = message.channelInfo;
+ this.mediaType = message.mediaType;
+ this.extra = message.extra;
+ this.inviteUserIds = message.inviteUserIds;
+ }
+ InviteMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return InviteMessage;
+ }();
+ RongIMLib.InviteMessage = InviteMessage;
+ var MediaModifyMessage = function () {
+ function MediaModifyMessage(message) {
+ this.messageName = "MediaModifyMessage";
+ this.callId = message.callId;
+ this.mediaType = message.mediaType;
+ }
+ MediaModifyMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return MediaModifyMessage;
+ }();
+ RongIMLib.MediaModifyMessage = MediaModifyMessage;
+ var MemberModifyMessage = function () {
+ function MemberModifyMessage(message) {
+ this.messageName = "MemberModifyMessage";
+ this.modifyMemType = message.modifyMemType;
+ this.callId = message.callId;
+ this.caller = message.caller;
+ this.engineType = message.engineType;
+ this.channelInfo = message.channelInfo;
+ this.mediaType = message.mediaType;
+ this.extra = message.extra;
+ this.inviteUserIds = message.inviteUserIds;
+ this.existedMemberStatusList = message.existedMemberStatusList;
+ }
+ MemberModifyMessage.prototype.encode = function () {
+ return JSON.stringify(RongIMLib.ModelUtil.modelClone(this));
+ };
+ return MemberModifyMessage;
+ }();
+ RongIMLib.MemberModifyMessage = MemberModifyMessage;
+ })(RongIMLib || (RongIMLib = {}));
+
+ // var RongIMLib;
+ (function (RongIMLib) {
+ var ChannelInfo = function () {
+ function ChannelInfo(Id, Key) {
+ this.Id = Id;
+ this.Key = Key;
+ }
+ return ChannelInfo;
+ }();
+ RongIMLib.ChannelInfo = ChannelInfo;
+ var UserStatus = function () {
+ function UserStatus(platform, online, status) {
+ this.platform = platform;
+ this.online = online;
+ this.status = status;
+ }
+ return UserStatus;
+ }();
+ RongIMLib.UserStatus = UserStatus;
+ var MentionedInfo = function () {
+ function MentionedInfo(type, userIdList, mentionedContent) {}
+ return MentionedInfo;
+ }();
+ RongIMLib.MentionedInfo = MentionedInfo;
+ var DeleteMessage = function () {
+ function DeleteMessage(msgId, msgDataTime, direct) {
+ this.msgId = msgId;
+ this.msgDataTime = msgDataTime;
+ this.direct = direct;
+ }
+ return DeleteMessage;
+ }();
+ RongIMLib.DeleteMessage = DeleteMessage;
+ var CustomServiceConfig = function () {
+ function CustomServiceConfig(isBlack, companyName, companyUrl) {}
+ return CustomServiceConfig;
+ }();
+ RongIMLib.CustomServiceConfig = CustomServiceConfig;
+ var CustomServiceSession = function () {
+ function CustomServiceSession(uid, cid, pid, isQuited, type, adminHelloWord, adminOfflineWord) {}
+ return CustomServiceSession;
+ }();
+ RongIMLib.CustomServiceSession = CustomServiceSession;
+ var Conversation = function () {
+ function Conversation(conversationTitle, conversationType, draft, isTop, latestMessage, latestMessageId, notificationStatus, objectName, receivedStatus, receivedTime, senderUserId, senderUserName, sentStatus, sentTime, targetId, unreadMessageCount, senderPortraitUri, isHidden, mentionedMsg, hasUnreadMention) {
+ this.conversationTitle = conversationTitle;
+ this.conversationType = conversationType;
+ this.draft = draft;
+ this.isTop = isTop;
+ this.latestMessage = latestMessage;
+ this.latestMessageId = latestMessageId;
+ this.notificationStatus = notificationStatus;
+ this.objectName = objectName;
+ this.receivedStatus = receivedStatus;
+ this.receivedTime = receivedTime;
+ this.senderUserId = senderUserId;
+ this.senderUserName = senderUserName;
+ this.sentStatus = sentStatus;
+ this.sentTime = sentTime;
+ this.targetId = targetId;
+ this.unreadMessageCount = unreadMessageCount;
+ this.senderPortraitUri = senderPortraitUri;
+ this.isHidden = isHidden;
+ this.mentionedMsg = mentionedMsg;
+ this.hasUnreadMention = hasUnreadMention;
+ }
+ Conversation.prototype.setTop = function () {
+ RongIMLib.RongIMClient._dataAccessProvider.addConversation(this, {
+ onSuccess: function (data) {}
+ });
+ };
+ return Conversation;
+ }();
+ RongIMLib.Conversation = Conversation;
+ var Discussion = function () {
+ function Discussion(creatorId, id, memberIdList, name, isOpen) {
+ this.creatorId = creatorId;
+ this.id = id;
+ this.memberIdList = memberIdList;
+ this.name = name;
+ this.isOpen = isOpen;
+ }
+ return Discussion;
+ }();
+ RongIMLib.Discussion = Discussion;
+ var Group = function () {
+ function Group(id, name, portraitUri) {
+ this.id = id;
+ this.name = name;
+ this.portraitUri = portraitUri;
+ }
+ return Group;
+ }();
+ RongIMLib.Group = Group;
+ var Message = function () {
+ function Message(content, conversationType, extra, objectName, messageDirection, messageId, receivedStatus, receivedTime, senderUserId, sentStatus, sentTime, targetId, messageType, messageUId, isLocalMessage, offLineMessage, receiptResponse) {
+ this.content = content;
+ this.conversationType = conversationType;
+ this.extra = extra;
+ this.objectName = objectName;
+ this.messageDirection = messageDirection;
+ this.messageId = messageId;
+ this.receivedStatus = receivedStatus;
+ this.receivedTime = receivedTime;
+ this.senderUserId = senderUserId;
+ this.sentStatus = sentStatus;
+ this.sentTime = sentTime;
+ this.targetId = targetId;
+ this.messageType = messageType;
+ this.messageUId = messageUId;
+ this.isLocalMessage = isLocalMessage;
+ this.offLineMessage = offLineMessage;
+ this.receiptResponse = receiptResponse;
+ }
+ return Message;
+ }();
+ RongIMLib.Message = Message;
+ var MessageTag = function () {
+ function MessageTag(isCounted, isPersited) {
+ this.isCounted = isCounted;
+ this.isPersited = isPersited;
+ }
+ MessageTag.prototype.getMessageTag = function () {
+ if (this.isCounted && this.isPersited) {
+ return 3;
+ } else if (this.isCounted) {
+ return 2;
+ } else if (this.isPersited) {
+ return 1;
+ } else if (!this.isCounted && !this.isPersited) {
+ return 0;
+ }
+ };
+ return MessageTag;
+ }();
+ RongIMLib.MessageTag = MessageTag;
+ var PublicServiceMenuItem = function () {
+ function PublicServiceMenuItem(id, name, type, sunMenuItems, url) {
+ this.id = id;
+ this.name = name;
+ this.type = type;
+ this.sunMenuItems = sunMenuItems;
+ this.url = url;
+ }
+ return PublicServiceMenuItem;
+ }();
+ RongIMLib.PublicServiceMenuItem = PublicServiceMenuItem;
+ // TODO: TBD
+ var PublicServiceProfile = function () {
+ function PublicServiceProfile(conversationType, introduction, menu, name, portraitUri, publicServiceId, hasFollowed, isGlobal) {
+ this.conversationType = conversationType;
+ this.introduction = introduction;
+ this.menu = menu;
+ this.name = name;
+ this.portraitUri = portraitUri;
+ this.publicServiceId = publicServiceId;
+ this.hasFollowed = hasFollowed;
+ this.isGlobal = isGlobal;
+ }
+ return PublicServiceProfile;
+ }();
+ RongIMLib.PublicServiceProfile = PublicServiceProfile;
+ var UserInfo = function () {
+ function UserInfo(id, name, portraitUri) {
+ this.id = id;
+ this.name = name;
+ this.portraitUri = portraitUri;
+ }
+ return UserInfo;
+ }();
+ RongIMLib.UserInfo = UserInfo;
+ })(RongIMLib || (RongIMLib = {}));
+
+ // var RongIMLib;
+ (function (RongIMLib) {
+ var ServerDataProvider = function () {
+ function ServerDataProvider() {}
+ var RongIMClient = RongIMLib.RongIMClient;
+ var watcher = new tools.Watcher();
+ var Conversation = {
+ watch: function (_watcher) {
+ watcher.add(_watcher);
+ var conversationList = RongIMClient._memoryStore.conversationList;
+ watcher.notify(conversationList);
+ },
+ unwatch: function (_watcher) {
+ watcher.remove(_watcher);
+ },
+ _notify: function (conversationList) {
+ watcher.notify(conversationList);
+ }
+ };
+ ServerDataProvider.prototype.Conversation = Conversation;
+ ServerDataProvider.prototype.init = function (appKey) {
+ new RongIMLib.FeatureDectector();
+ };
+ ServerDataProvider.prototype.connect = function (token, callback) {
+ RongIMLib.RongIMClient.bridge = RongIMLib.Bridge.getInstance();
+ RongIMLib.RongIMClient._memoryStore.token = token;
+ RongIMLib.RongIMClient._memoryStore.callback = callback;
+ var isConnecting = false,
+ isConnected = false;
+ if (RongIMLib.Bridge._client && RongIMLib.Bridge._client.channel) {
+ isConnecting = RongIMLib.Bridge._client.channel.connectionStatus == RongIMLib.ConnectionStatus.CONNECTING;
+ isConnected = RongIMLib.Bridge._client.channel.connectionStatus == RongIMLib.ConnectionStatus.CONNECTED;
+ }
+ if (isConnected || isConnecting) {
+ return;
+ }
+ //循环设置监听事件,追加之后清空存放事件数据
+ for (var i = 0, len = RongIMLib.RongIMClient._memoryStore.listenerList.length; i < len; i++) {
+ RongIMLib.RongIMClient.bridge["setListener"](RongIMLib.RongIMClient._memoryStore.listenerList[i]);
+ }
+ RongIMLib.RongIMClient._memoryStore.listenerList.length = 0;
+ RongIMLib.RongIMClient.bridge.connect(RongIMLib.RongIMClient._memoryStore.appKey, token, {
+ onSuccess: function (data) {
+ setTimeout(function () {
+ callback.onSuccess(data);
+ });
+ },
+ onError: function (e) {
+ if (e == RongIMLib.ConnectionState.TOKEN_INCORRECT || !e) {
+ setTimeout(function () {
+ RongIMLib.Bridge._client.channel.connectionStatus = RongIMLib.ConnectionStatus.DISCONNECTED;
+ callback.onTokenIncorrect();
+ });
+ } else {
+ setTimeout(function () {
+ callback.onError(e);
+ });
+ }
+ }
+ });
+ };
+ ServerDataProvider.prototype.reconnect = function (callback) {
+ RongIMLib.MessageIdHandler.clearMessageId();
+ var token = RongIMLib.RongIMClient._memoryStore.token;
+ RongIMLib.RongIMClient.connect(token, callback);
+ };
+ ServerDataProvider.prototype.logout = function () {
+ RongIMLib.RongIMClient.bridge.disconnect();
+ RongIMLib.RongIMClient.bridge = null;
+ };
+ ServerDataProvider.prototype.disconnect = function () {
+ if (RongIMLib.RongIMClient.bridge) {
+ RongIMLib.RongIMClient.bridge.disconnect();
+ }
+ };
+ ServerDataProvider.prototype.sendReceiptResponse = function (conversationType, targetId, sendCallback) {
+ var rspkey = RongIMLib.Bridge._client.userId + conversationType + targetId + 'RECEIVED',
+ me = this;
+ if (RongIMLib.MessageUtil.supportLargeStorage()) {
+ var valObj = JSON.parse(RongIMLib.RongIMClient._storageProvider.getItem(rspkey));
+ if (valObj) {
+ var vals = [];
+ for (var key in valObj) {
+ var tmp = {};
+ tmp[key] = valObj[key].uIds;
+ valObj[key].isResponse || vals.push(tmp);
+ }
+ if (vals.length == 0) {
+ sendCallback.onSuccess();
+ return;
+ }
+ var interval = setInterval(function () {
+ if (vals.length == 1) {
+ clearInterval(interval);
+ }
+ var obj = vals.splice(0, 1)[0];
+ var rspMsg = new RongIMLib.ReadReceiptResponseMessage({
+ receiptMessageDic: obj
+ });
+ me.sendMessage(conversationType, targetId, rspMsg, {
+ onSuccess: function (msg) {
+ var senderUserId = RongIMLib.MessageUtil.getFirstKey(obj);
+ valObj[senderUserId].isResponse = true;
+ RongIMLib.RongIMClient._storageProvider.setItem(rspkey, JSON.stringify(valObj));
+ sendCallback.onSuccess(msg);
+ },
+ onError: function (error, msg) {
+ sendCallback.onError(error, msg);
+ }
+ });
+ }, 200);
+ } else {
+ sendCallback.onSuccess();
+ }
+ } else {
+ sendCallback.onSuccess();
+ }
+ };
+ ServerDataProvider.prototype.sendTypingStatusMessage = function (conversationType, targetId, messageName, sendCallback) {
+ var me = this;
+ if (messageName in RongIMLib.RongIMClient.MessageParams) {
+ me.sendMessage(conversationType, targetId, RongIMLib.TypingStatusMessage.obtain(RongIMLib.RongIMClient.MessageParams[messageName].objectName, ""), {
+ onSuccess: function () {
+ setTimeout(function () {
+ sendCallback.onSuccess();
+ });
+ },
+ onError: function (errorCode) {
+ setTimeout(function () {
+ sendCallback.onError(errorCode, null);
+ });
+ },
+ onBefore: function () {}
+ });
+ }
+ };
+ ServerDataProvider.prototype.sendRecallMessage = function (content, sendMessageCallback) {
+ var msg = new RongIMLib.RecallCommandMessage({
+ conversationType: content.conversationType,
+ targetId: content.targetId,
+ sentTime: content.sentTime,
+ messageUId: content.messageUId,
+ extra: content.extra,
+ user: content.user
+ });
+ this.sendMessage(content.conversationType, content.senderUserId, msg, sendMessageCallback, false, null, null, 2);
+ };
+ ServerDataProvider.prototype.sendTextMessage = function (conversationType, targetId, content, sendMessageCallback) {
+ var msgContent = RongIMLib.TextMessage.obtain(content);
+ this.sendMessage(conversationType, targetId, msgContent, sendMessageCallback);
+ };
+ ServerDataProvider.prototype.getRemoteHistoryMessages = function (conversationType, targetId, timestamp, count, callback) {
+ if (count <= 1) {
+ throw new Error("the count must be greater than 1.");
+ }
+ var modules = new Modules.HistoryMessageInput(),
+ self = this;
+ modules.setTargetId(targetId);
+ if (timestamp === 0 || timestamp > 0) {
+ modules.setDataTime(timestamp);
+ } else {
+ modules.setDataTime(RongIMLib.RongIMClient._memoryStore.lastReadTime.get(conversationType + targetId));
+ }
+ modules.setSize(count);
+ RongIMLib.RongIMClient.bridge.queryMsg(HistoryMsgType[conversationType], RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), targetId, {
+ onSuccess: function (data) {
+ var hasMore = data.hasMsg;
+ RongIMLib.RongIMClient._memoryStore.lastReadTime.set(conversationType + targetId, RongIMLib.MessageUtil.int64ToTimestamp(data.syncTime));
+ var list = data.list.reverse(),
+ tempMsg = null,
+ tempDir;
+ if (RongIMLib.MessageUtil.supportLargeStorage()) {
+ for (var i = 0, len = list.length; i < len; i++) {
+ tempMsg = RongIMLib.MessageUtil.messageParser(list[i]);
+ var key = RongIMLib.Bridge._client.userId + tempMsg.messageUId + "SENT";
+ var data = RongIMLib.RongIMClient._storageProvider.getItem(key);
+ if (tempDir) {
+ tempDir = JSON.parse(data);
+ tempMsg.receiptResponse || (tempMsg.receiptResponse = {});
+ tempMsg.receiptResponse[tempMsg.messageUId] = tempDir.count;
+ }
+ if (!tempMsg.targetId) {
+ tempMsg.targetId = targetId;
+ }
+ list[i] = tempMsg;
+ }
+ } else {
+ for (var i = 0, len = list.length; i < len; i++) {
+ list[i] = RongIMLib.MessageUtil.messageParser(list[i]);
+ }
+ }
+ setTimeout(function () {
+ callback.onSuccess(list, hasMore);
+ });
+ },
+ onError: function (error) {
+ setTimeout(function () {
+ if (error === RongIMLib.ErrorCode.TIMEOUT) {
+ callback.onError(error);
+ } else {
+ callback.onSuccess([], false);
+ }
+ });
+ }
+ }, "HistoryMessagesOuput");
+ };
+ ServerDataProvider.prototype.hasRemoteUnreadMessages = function (token, callback) {
+ // window.RCCallback = function (x) {
+
+ // xss.parentNode.removeChild(xss);
+ // };
+
+ var url = RongIMLib.RongIMClient._memoryStore.depend.api + "/message/exist.js?appKey=" + encodeURIComponent(RongIMLib.RongIMClient._memoryStore.appKey) + "&token=" + encodeURIComponent(token) + "&callBack=RCCallback&_=" + Date.now();
+ tools.request({
+ url: url,
+ //仅为示例,并非真实的接口地址
+ // method : method, //get
+ data: {
+ t: Math.random()
+ }
+ }, {
+ success: function () {
+ setTimeout(function () {
+ callback.onSuccess(!!+x.status);
+ });
+ },
+ fail: function () {
+ setTimeout(function () {
+ callback.onError(RongIMLib.ErrorCode.UNKNOWN);
+ });
+ }
+ });
+ };
+ ServerDataProvider.prototype.getRemoteConversationList = function (callback, conversationTypes, count) {
+ var modules = new Modules.RelationsInput(),
+ self = this;
+ modules.setType(1);
+ if (typeof count == 'undefined') {
+ modules.setCount(0);
+ } else {
+ modules.setCount(count);
+ }
+ RongIMLib.RongIMClient.bridge.queryMsg(26, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), RongIMLib.Bridge._client.userId, {
+ onSuccess: function (list) {
+ if (list.info) {
+ list.info = list.info.reverse();
+ for (var i = 0, len = list.info.length; i < len; i++) {
+ RongIMLib.RongIMClient.getInstance().pottingConversation(list.info[i]);
+ }
+ }
+ if (conversationTypes) {
+ var convers = [];
+ Array.forEach(conversationTypes, function (converType) {
+ Array.forEach(RongIMLib.RongIMClient._memoryStore.conversationList, function (item) {
+ if (item.conversationType == converType) {
+ convers.push(item);
+ }
+ });
+ });
+ callback.onSuccess(RongIMLib.RongIMClient._memoryStore.conversationList);
+ } else {
+ callback.onSuccess(RongIMLib.RongIMClient._memoryStore.conversationList);
+ }
+ },
+ onError: function (error) {
+ if (error === RongIMLib.ErrorCode.TIMEOUT) {
+ callback.onError(error);
+ } else {
+ callback.onSuccess([]);
+ }
+ }
+ }, "RelationsOutput");
+ };
+ ServerDataProvider.prototype.addMemberToDiscussion = function (discussionId, userIdList, callback) {
+ var modules = new Modules.ChannelInvitationInput();
+ modules.setUsers(userIdList);
+ RongIMLib.RongIMClient.bridge.queryMsg(0, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), discussionId, {
+ onSuccess: function () {
+ setTimeout(function () {
+ callback.onSuccess();
+ });
+ },
+ onError: function () {
+ setTimeout(function () {
+ callback.onError(RongIMLib.ErrorCode.JOIN_IN_DISCUSSION);
+ });
+ }
+ });
+ };
+ ServerDataProvider.prototype.createDiscussion = function (name, userIdList, callback) {
+ var modules = new Modules.CreateDiscussionInput(),
+ self = this;
+ modules.setName(name);
+ RongIMLib.RongIMClient.bridge.queryMsg(1, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), RongIMLib.Bridge._client.userId, {
+ onSuccess: function (discussId) {
+ if (userIdList.length > 0) {
+ self.addMemberToDiscussion(discussId, userIdList, {
+ onSuccess: function () {},
+ onError: function (error) {
+ setTimeout(function () {
+ callback.onError(error);
+ });
+ }
+ });
+ }
+ setTimeout(function () {
+ callback.onSuccess(discussId);
+ });
+ },
+ onError: function () {
+ setTimeout(function () {
+ callback.onError(RongIMLib.ErrorCode.CREATE_DISCUSSION);
+ });
+ }
+ }, "CreateDiscussionOutput");
+ };
+ ServerDataProvider.prototype.getDiscussion = function (discussionId, callback) {
+ var modules = new Modules.ChannelInfoInput();
+ modules.setNothing(1);
+ RongIMLib.RongIMClient.bridge.queryMsg(4, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), discussionId, {
+ onSuccess: function (data) {
+ setTimeout(function () {
+ callback.onSuccess(data);
+ });
+ },
+ onError: function (errorCode) {
+ setTimeout(function () {
+ callback.onError(errorCode);
+ });
+ }
+ }, "ChannelInfoOutput");
+ };
+ ServerDataProvider.prototype.quitDiscussion = function (discussionId, callback) {
+ var modules = new Modules.LeaveChannelInput();
+ modules.setNothing(1);
+ RongIMLib.RongIMClient.bridge.queryMsg(7, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), discussionId, callback);
+ };
+ ServerDataProvider.prototype.removeMemberFromDiscussion = function (discussionId, userId, callback) {
+ var modules = new Modules.ChannelEvictionInput();
+ modules.setUser(userId);
+ RongIMLib.RongIMClient.bridge.queryMsg(9, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), discussionId, callback);
+ };
+ ServerDataProvider.prototype.setDiscussionInviteStatus = function (discussionId, status, callback) {
+ var modules = new Modules.ModifyPermissionInput();
+ modules.setOpenStatus(status.valueOf());
+ RongIMLib.RongIMClient.bridge.queryMsg(11, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), discussionId, {
+ onSuccess: function (x) {
+ setTimeout(function () {
+ callback.onSuccess();
+ });
+ },
+ onError: function () {
+ setTimeout(function () {
+ callback.onError(RongIMLib.ErrorCode.INVITE_DICUSSION);
+ });
+ }
+ });
+ };
+ ServerDataProvider.prototype.setDiscussionName = function (discussionId, name, callback) {
+ var modules = new Modules.RenameChannelInput();
+ modules.setName(name);
+ RongIMLib.RongIMClient.bridge.queryMsg(12, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), discussionId, {
+ onSuccess: function () {
+ setTimeout(function () {
+ callback.onSuccess();
+ });
+ },
+ onError: function (errcode) {
+ callback.onError(errcode);
+ }
+ });
+ };
+ ServerDataProvider.prototype.joinGroup = function (groupId, groupName, callback) {
+ var modules = new Modules.GroupInfo();
+ modules.setId(groupId);
+ modules.setName(groupName);
+ var _mod = new Modules.GroupInput();
+ _mod.setGroupInfo([modules]);
+ RongIMLib.RongIMClient.bridge.queryMsg(6, RongIMLib.MessageUtil.ArrayForm(_mod.toArrayBuffer()), groupId, {
+ onSuccess: function () {
+ setTimeout(function () {
+ callback.onSuccess();
+ });
+ },
+ onError: function (errcode) {
+ callback.onError(errcode);
+ }
+ }, "GroupOutput");
+ };
+ ServerDataProvider.prototype.quitGroup = function (groupId, callback) {
+ var modules = new Modules.LeaveChannelInput();
+ modules.setNothing(1);
+ RongIMLib.RongIMClient.bridge.queryMsg(8, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), groupId, {
+ onSuccess: function () {
+ setTimeout(function () {
+ callback.onSuccess();
+ });
+ },
+ onError: function (errcode) {
+ callback.onError(errcode);
+ }
+ });
+ };
+ ServerDataProvider.prototype.syncGroup = function (groups, callback) {
+ //去重操作
+ for (var i = 0, part = [], info = [], len = groups.length; i < len; i++) {
+ if (part.length === 0 || !(groups[i].id in part)) {
+ part.push(groups[i].id);
+ var groupinfo = new Modules.GroupInfo();
+ groupinfo.setId(groups[i].id);
+ groupinfo.setName(groups[i].name);
+ info.push(groupinfo);
+ }
+ }
+ var modules = new Modules.GroupHashInput();
+ modules.setUserId(RongIMLib.Bridge._client.userId);
+ modules.setGroupHashCode(md5(part.sort().join("")));
+ RongIMLib.RongIMClient.bridge.queryMsg(13, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), RongIMLib.Bridge._client.userId, {
+ onSuccess: function (result) {
+ //1为群信息不匹配需要发送给服务器进行同步,0不需要同步
+ if (result === 1) {
+ var val = new Modules.GroupInput();
+ val.setGroupInfo(info);
+ RongIMLib.RongIMClient.bridge.queryMsg(20, RongIMLib.MessageUtil.ArrayForm(val.toArrayBuffer()), RongIMLib.Bridge._client.userId, {
+ onSuccess: function () {
+ setTimeout(function () {
+ callback.onSuccess();
+ });
+ },
+ onError: function () {
+ setTimeout(function () {
+ callback.onError(RongIMLib.ErrorCode.GROUP_MATCH_ERROR);
+ });
+ }
+ }, "GroupOutput");
+ } else {
+ setTimeout(function () {
+ callback.onSuccess();
+ });
+ }
+ },
+ onError: function () {
+ setTimeout(function () {
+ callback.onError(RongIMLib.ErrorCode.GROUP_SYNC_ERROR);
+ });
+ }
+ }, "GroupHashOutput");
+ };
+ ServerDataProvider.prototype.joinChatRoom = function (chatroomId, messageCount, callback) {
+ var e = new Modules.ChrmInput();
+ e.setNothing(1);
+ RongIMLib.Bridge._client.chatroomId = chatroomId;
+ RongIMLib.RongIMClient.bridge.queryMsg(19, RongIMLib.MessageUtil.ArrayForm(e.toArrayBuffer()), chatroomId, {
+ onSuccess: function () {
+ callback.onSuccess();
+ var modules = new Modules.ChrmPullMsg();
+ messageCount == 0 && (messageCount = -1);
+ modules.setCount(messageCount);
+ modules.setSyncTime(0);
+ RongIMLib.Bridge._client.queryMessage("chrmPull", RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), chatroomId, 1, {
+ onSuccess: function (collection) {
+ var sync = RongIMLib.MessageUtil.int64ToTimestamp(collection.syncTime);
+ RongIMLib.RongIMClient._memoryStore.lastReadTime.set(chatroomId + RongIMLib.Bridge._client.userId + "CST", sync);
+ var list = collection.list;
+ if (RongIMLib.RongIMClient._memoryStore.filterMessages.length > 0) {
+ for (var i = 0, mlen = list.length; i < mlen; i++) {
+ for (var j = 0, flen = RongIMLib.RongIMClient._memoryStore.filterMessages.length; j < flen; j++) {
+ if (RongIMLib.RongIMClient.MessageParams[RongIMLib.RongIMClient._memoryStore.filterMessages[j]].objectName != list[i].classname) {
+ RongIMLib.Bridge._client.handler.onReceived(list[i]);
+ }
+ }
+ }
+ } else {
+ for (var i = 0, len = list.length; i < len; i++) {
+ RongIMLib.Bridge._client.handler.onReceived(list[i]);
+ }
+ }
+ },
+ onError: function (x) {
+ setTimeout(function () {
+ callback.onError(RongIMLib.ErrorCode.CHATROOM_HISMESSAGE_ERROR);
+ });
+ }
+ }, "DownStreamMessages");
+ },
+ onError: function () {
+ setTimeout(function () {
+ callback.onError(RongIMLib.ErrorCode.CHARTOOM_JOIN_ERROR);
+ });
+ }
+ }, "ChrmOutput");
+ };
+ ServerDataProvider.prototype.getChatRoomInfo = function (chatRoomId, count, order, callback) {
+ var modules = new Modules.QueryChatroomInfoInput();
+ modules.setCount(count);
+ modules.setOrder(order);
+ RongIMLib.RongIMClient.bridge.queryMsg("queryChrmI", RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), chatRoomId, {
+ onSuccess: function (list) {
+ var userInfos = list.userInfos;
+ userInfos.forEach(function (item) {
+ item.time = RongIMLib.MessageUtil.int64ToTimestamp(item.time);
+ });
+ setTimeout(function () {
+ callback.onSuccess(list);
+ });
+ },
+ onError: function (errcode) {
+ callback.onError(errcode);
+ }
+ }, "QueryChatroomInfoOutput");
+ };
+ ServerDataProvider.prototype.quitChatRoom = function (chatroomId, callback) {
+ var e = new Modules.ChrmInput();
+ e.setNothing(1);
+ RongIMLib.RongIMClient.bridge.queryMsg(17, RongIMLib.MessageUtil.ArrayForm(e.toArrayBuffer()), chatroomId, {
+ onSuccess: function () {
+ setTimeout(function () {
+ callback.onSuccess();
+ });
+ },
+ onError: function (errcode) {
+ callback.onError(errcode);
+ }
+ }, "ChrmOutput");
+ };
+ ServerDataProvider.prototype.setChatroomHisMessageTimestamp = function (chatRoomId, timestamp) {
+ RongIMLib.RongIMClient._memoryStore.lastReadTime.set('chrhis_' + chatRoomId, timestamp);
+ };
+ ServerDataProvider.prototype.getChatRoomHistoryMessages = function (chatRoomId, count, order, callback) {
+ var modules = new Modules.HistoryMsgInput();
+ modules.setTargetId(chatRoomId);
+ var timestamp = RongIMLib.RongIMClient._memoryStore.lastReadTime.get('chrhis_' + chatRoomId) || 0;
+ modules.setTime(timestamp);
+ modules.setCount(count);
+ modules.setOrder(order);
+ RongIMLib.RongIMClient.bridge.queryMsg(34, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), RongIMLib.Bridge._client.userId, {
+ onSuccess: function (data) {
+ RongIMLib.RongIMClient._memoryStore.lastReadTime.set('chrhis_' + chatRoomId, RongIMLib.MessageUtil.int64ToTimestamp(data.syncTime));
+ var list = data.list.reverse();
+ for (var i = 0, len = list.length; i < len; i++) {
+ list[i] = RongIMLib.MessageUtil.messageParser(list[i]);
+ }
+ setTimeout(function () {
+ callback.onSuccess(list, !!data.hasMsg);
+ });
+ },
+ onError: function (error) {
+ setTimeout(function () {
+ if (error === RongIMLib.ErrorCode.TIMEOUT) {
+ callback.onError(error);
+ } else {
+ callback.onSuccess([], false);
+ }
+ });
+ }
+ }, "HistoryMsgOuput");
+ };
+ ServerDataProvider.prototype.setMessageStatus = function (conversationType, targetId, timestamp, status, callback) {
+ callback.onSuccess(true);
+ };
+ ServerDataProvider.prototype.addToBlacklist = function (userId, callback) {
+ var modules = new Modules.Add2BlackListInput();
+ modules.setUserId(userId);
+ RongIMLib.RongIMClient.bridge.queryMsg(21, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), userId, {
+ onSuccess: function () {
+ callback.onSuccess();
+ },
+ onError: function () {
+ callback.onError(RongIMLib.ErrorCode.BLACK_ADD_ERROR);
+ }
+ });
+ };
+ ServerDataProvider.prototype.getBlacklist = function (callback) {
+ var modules = new Modules.QueryBlackListInput();
+ modules.setNothing(1);
+ RongIMLib.RongIMClient.bridge.queryMsg(23, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), RongIMLib.Bridge._client.userId, callback, "QueryBlackListOutput");
+ };
+ ServerDataProvider.prototype.getBlacklistStatus = function (userId, callback) {
+ var modules = new Modules.BlackListStatusInput();
+ modules.setUserId(userId);
+ RongIMLib.RongIMClient.bridge.queryMsg(24, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), userId, {
+ onSuccess: function (status) {
+ setTimeout(function () {
+ callback.onSuccess(RongIMLib.BlacklistStatus[status]);
+ });
+ },
+ onError: function () {
+ setTimeout(function () {
+ callback.onError(RongIMLib.ErrorCode.BLACK_GETSTATUS_ERROR);
+ });
+ }
+ });
+ };
+ ServerDataProvider.prototype.removeFromBlacklist = function (userId, callback) {
+ var modules = new Modules.RemoveFromBlackListInput();
+ modules.setUserId(userId);
+ RongIMLib.RongIMClient.bridge.queryMsg(22, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), userId, {
+ onSuccess: function () {
+ callback.onSuccess();
+ },
+ onError: function () {
+ callback.onError(RongIMLib.ErrorCode.BLACK_REMOVE_ERROR);
+ }
+ });
+ };
+ ServerDataProvider.prototype.getFileToken = function (fileType, callback) {
+ if (!/(1|2|3|4)/.test(fileType.toString())) {
+ callback.onError(RongIMLib.ErrorCode.QNTKN_FILETYPE_ERROR);
+ return;
+ }
+ var modules = new Modules.GetQNupTokenInput();
+ modules.setType(fileType);
+ RongIMLib.RongIMClient.bridge.queryMsg(30, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), RongIMLib.Bridge._client.userId, {
+ onSuccess: function (data) {
+ setTimeout(function () {
+ callback.onSuccess(data);
+ });
+ },
+ onError: function (errcode) {
+ callback.onError(errcode);
+ }
+ }, "GetQNupTokenOutput");
+ };
+ ServerDataProvider.prototype.getFileUrl = function (fileType, fileName, oriName, callback) {
+ if (!/(1|2|3|4)/.test(fileType.toString())) {
+ setTimeout(function () {
+ callback.onError(RongIMLib.ErrorCode.QNTKN_FILETYPE_ERROR);
+ });
+ return;
+ }
+ var modules = new Modules.GetQNdownloadUrlInput();
+ modules.setType(fileType);
+ modules.setKey(fileName);
+ if (oriName) {
+ modules.setFileName(oriName);
+ }
+ RongIMLib.RongIMClient.bridge.queryMsg(31, RongIMLib.MessageUtil.ArrayForm(modules.toArrayBuffer()), RongIMLib.Bridge._client.userId, {
+ onSuccess: function (data) {
+ setTimeout(function () {
+ callback.onSuccess(data);
+ });
+ },
+ onError: function (errcode) {
+ callback.onError(errcode);
+ }
+ }, "GetQNdownloadUrlOutput");
+ };
+ // methodType 1 : 多客服(客服后台使用); 2 : 消息撤回
+ ServerDataProvider.prototype.sendMessage = function (conversationType, targetId, messageContent, sendCallback, mentiondMsg, pushText, appData, methodType) {
+ if (!RongIMLib.Bridge._client.channel) {
+ sendCallback.onError(RongIMLib.ErrorCode.RC_NET_UNAVAILABLE, null);
+ return;
+ }
+ var modules = new Modules.UpStreamMessage();
+ if (mentiondMsg && (conversationType == RongIMLib.ConversationType.DISCUSSION || conversationType == RongIMLib.ConversationType.GROUP)) {
+ modules.setSessionId(7);
+ } else {
+ modules.setSessionId(RongIMLib.RongIMClient.MessageParams[messageContent.messageName].msgTag.getMessageTag());
+ }
+ pushText && modules.setPushText(pushText);
+ appData && modules.setAppData(appData);
+ if ((conversationType == RongIMLib.ConversationType.DISCUSSION || conversationType == RongIMLib.ConversationType.GROUP) && messageContent.messageName == RongIMLib.RongIMClient.MessageType["ReadReceiptResponseMessage"]) {
+ var rspMsg = messageContent;
+ if (rspMsg.receiptMessageDic) {
+ var ids = [];
+ for (var key in rspMsg.receiptMessageDic) {
+ ids.push(key);
+ }
+ modules.setUserId(ids);
+ }
+ }
+ if ((conversationType == RongIMLib.ConversationType.DISCUSSION || conversationType == RongIMLib.ConversationType.GROUP) && messageContent.messageName == RongIMLib.RongIMClient.MessageType["SyncReadStatusMessage"]) {
+ modules.setUserId(RongIMLib.Bridge._client.userId);
+ }
+ modules.setClassname(RongIMLib.RongIMClient.MessageParams[messageContent.messageName].objectName);
+ modules.setContent(messageContent.encode());
+ var content = modules.toArrayBuffer();
+ if (Object.prototype.toString.call(content) == "[object ArrayBuffer]") {
+ content = [].slice.call(new Int8Array(content));
+ }
+ var me = this,
+ msg = new RongIMLib.Message();
+ var c = this.getConversation(conversationType, targetId);
+ if (RongIMLib.RongIMClient.MessageParams[messageContent.messageName].msgTag.getMessageTag() == 3) {
+ if (!c) {
+ c = RongIMLib.RongIMClient.getInstance().createConversation(conversationType, targetId, "");
+ }
+ c.sentTime = new Date().getTime();
+ c.sentStatus = RongIMLib.SentStatus.SENDING;
+ c.senderUserName = "";
+ c.senderUserId = RongIMLib.Bridge._client.userId;
+ c.notificationStatus = RongIMLib.ConversationNotificationStatus.DO_NOT_DISTURB;
+ c.latestMessage = msg;
+ c.unreadMessageCount = 0;
+ RongIMLib.RongIMClient._dataAccessProvider.addConversation(c, {
+ onSuccess: function (data) {}
+ });
+ }
+ RongIMLib.RongIMClient._memoryStore.converStore = c;
+ msg.content = messageContent;
+ msg.conversationType = conversationType;
+ msg.senderUserId = RongIMLib.Bridge._client.userId;
+ msg.objectName = RongIMLib.RongIMClient.MessageParams[messageContent.messageName].objectName;
+ msg.targetId = targetId;
+ msg.sentTime = new Date().getTime();
+ msg.messageDirection = RongIMLib.MessageDirection.SEND;
+ msg.sentStatus = RongIMLib.SentStatus.SENT;
+ msg.messageType = messageContent.messageName;
+ RongIMLib.RongIMClient.bridge.pubMsg(conversationType.valueOf(), content, targetId, {
+ onSuccess: function (data) {
+ if ((conversationType == RongIMLib.ConversationType.DISCUSSION || conversationType == RongIMLib.ConversationType.GROUP) && messageContent.messageName == RongIMLib.RongIMClient.MessageType["ReadReceiptRequestMessage"]) {
+ var reqMsg = msg.content;
+ var sentkey = RongIMLib.Bridge._client.userId + reqMsg.messageUId + "SENT";
+ RongIMLib.RongIMClient._storageProvider.setItem(sentkey, JSON.stringify({
+ count: 0,
+ dealtime: data.timestamp,
+ userIds: {}
+ }));
+ }
+ if (RongIMLib.RongIMClient.MessageParams[msg.messageType].msgTag.getMessageTag() == 3) {
+ RongIMLib.RongIMClient._memoryStore.converStore.latestMessage = msg;
+ var RongIMClient = RongIMLib.RongIMClient;
+ var Conversation = RongIMClient._dataAccessProvider.Conversation;
+ Conversation._notify(RongIMClient._memoryStore.conversationList);
+ RongIMLib.RongIMClient._dataAccessProvider.addMessage(conversationType, targetId, msg, {
+ onSuccess: function (ret) {
+ msg = ret;
+ msg.messageUId = data.messageUId;
+ msg.sentTime = data.timestamp;
+ msg.sentStatus = RongIMLib.SentStatus.SENT;
+ msg.messageId = data.messageId;
+ RongIMLib.RongIMClient._dataAccessProvider.updateMessage(msg);
+ },
+ onError: function () {}
+ });
+ }
+ setTimeout(function () {
+ msg.sentTime = data.timestamp;
+ msg.messageUId = data.messageUId;
+ sendCallback.onSuccess(msg);
+ });
+ },
+ onError: function (errorCode) {
+ msg.sentStatus = RongIMLib.SentStatus.FAILED;
+ if (RongIMLib.RongIMClient.MessageParams[msg.messageType].msgTag.getMessageTag() == 3) {
+ RongIMLib.RongIMClient._memoryStore.converStore.latestMessage = msg;
+ }
+ RongIMLib.RongIMClient._dataAccessProvider.addMessage(conversationType, targetId, msg, {
+ onSuccess: function (ret) {
+ msg.messageId = ret.messageId;
+ RongIMLib.RongIMClient._dataAccessProvider.updateMessage(msg);
+ },
+ onError: function () {}
+ });
+ setTimeout(function () {
+ sendCallback.onError(errorCode, msg);
+ });
+ }
+ }, null, methodType);
+ sendCallback.onBefore && sendCallback.onBefore(RongIMLib.MessageIdHandler.messageId);
+ msg.messageId = RongIMLib.MessageIdHandler.messageId + "";
+ };
+ ServerDataProvider.prototype.setConnectionStatusListener = function (listener) {
+ if (RongIMLib.RongIMClient.bridge) {
+ RongIMLib.RongIMClient.bridge.setListener(listener);
+ } else {
+ RongIMLib.RongIMClient._memoryStore.listenerList.push(listener);
+ }
+ };
+ ServerDataProvider.prototype.setOnReceiveMessageListener = function (listener) {
+ if (RongIMLib.RongIMClient.bridge) {
+ RongIMLib.RongIMClient.bridge.setListener(listener);
+ } else {
+ RongIMLib.RongIMClient._memoryStore.listenerList.push(listener);
+ }
+ };
+ ServerDataProvider.prototype.registerMessageType = function (messageType, objectName, messageTag, messageContent) {
+ if (!messageType) {
+ throw new Error("messageType can't be empty,postion -> registerMessageType");
+ }
+ if (!objectName) {
+ throw new Error("objectName can't be empty,postion -> registerMessageType");
+ }
+ if (Object.prototype.toString.call(messageContent) == "[object Array]") {
+ var regMsg = RongIMLib.ModelUtil.modleCreate(messageContent, messageType);
+ RongIMLib.RongIMClient.RegisterMessage[messageType] = regMsg;
+ } else if (Object.prototype.toString.call(messageContent) == "[object Function]" || Object.prototype.toString.call(messageContent) == "[object Object]") {
+ if (!messageContent.encode) {
+ throw new Error("encode method has not realized or messageName is undefined-> registerMessageType");
+ }
+ if (!messageContent.decode) {
+ throw new Error("decode method has not realized -> registerMessageType");
+ }
+ } else {
+ throw new Error("The index of 3 parameter was wrong type must be object or function or array-> registerMessageType");
+ }
+ registerMessageTypeMapping[objectName] = messageType;
+ };
+ ServerDataProvider.prototype.addConversation = function (conversation, callback) {
+ var isAdd = true;
+ for (var i = 0, len = RongIMLib.RongIMClient._memoryStore.conversationList.length; i < len; i++) {
+ if (RongIMLib.RongIMClient._memoryStore.conversationList[i].conversationType === conversation.conversationType && RongIMLib.RongIMClient._memoryStore.conversationList[i].targetId === conversation.targetId) {
+ RongIMLib.RongIMClient._memoryStore.conversationList.unshift(RongIMLib.RongIMClient._memoryStore.conversationList.splice(i, 1)[0]);
+ isAdd = false;
+ break;
+ }
+ }
+ if (isAdd) {
+ RongIMLib.RongIMClient._memoryStore.conversationList.unshift(conversation);
+ }
+ callback.onSuccess(true);
+ };
+ ServerDataProvider.prototype.updateConversation = function (conversation) {
+ var conver;
+ for (var i = 0, len = RongIMLib.RongIMClient._memoryStore.conversationList.length; i < len; i++) {
+ if (conversation.conversationType === RongIMLib.RongIMClient._memoryStore.conversationList[i].conversationType && conversation.targetId === RongIMLib.RongIMClient._memoryStore.conversationList[i].targetId) {
+ conversation.conversationTitle && (RongIMLib.RongIMClient._memoryStore.conversationList[i].conversationTitle = conversation.conversationTitle);
+ conversation.senderUserName && (RongIMLib.RongIMClient._memoryStore.conversationList[i].senderUserName = conversation.senderUserName);
+ conversation.senderPortraitUri && (RongIMLib.RongIMClient._memoryStore.conversationList[i].senderPortraitUri = conversation.senderPortraitUri);
+ conversation.latestMessage && (RongIMLib.RongIMClient._memoryStore.conversationList[i].latestMessage = conversation.latestMessage);
+ break;
+ }
+ }
+ return conver;
+ };
+ ServerDataProvider.prototype.removeConversation = function (conversationType, targetId, callback) {
+ var mod = new Modules.RelationsInput();
+ mod.setType(conversationType);
+ RongIMLib.RongIMClient.bridge.queryMsg(27, RongIMLib.MessageUtil.ArrayForm(mod.toArrayBuffer()), targetId, {
+ onSuccess: function () {
+ var conversations = RongIMLib.RongIMClient._memoryStore.conversationList;
+ var len = conversations.length;
+ for (var i = 0; i < len; i++) {
+ if (conversations[i].conversationType == conversationType && targetId == conversations[i].targetId) {
+ conversations.splice(i, 1);
+ break;
+ }
+ }
+ callback.onSuccess(true);
+ },
+ onError: function () {
+ setTimeout(function () {
+ callback.onError(RongIMLib.ErrorCode.CONVER_REMOVE_ERROR);
+ });
+ }
+ });
+ };
+ ServerDataProvider.prototype.getMessage = function (messageId, callback) {
+ callback.onSuccess(new RongIMLib.Message());
+ };
+ ServerDataProvider.prototype.addMessage = function (conversationType, targetId, message, callback) {
+ if (callback) {
+ callback.onSuccess(message);
+ }
+ };
+ ServerDataProvider.prototype.removeMessage = function (conversationType, targetId, messageIds, callback) {
+ RongIMLib.RongIMClient.getInstance().deleteRemoteMessages(conversationType, targetId, messageIds, callback);
+ };
+ ServerDataProvider.prototype.removeLocalMessage = function (conversationType, targetId, timestamps, callback) {
+ callback.onSuccess(true);
+ };
+ ServerDataProvider.prototype.updateMessage = function (message, callback) {
+ if (callback) {
+ callback.onSuccess(message);
+ }
+ };
+ ServerDataProvider.prototype.clearMessages = function (conversationType, targetId, callback) {
+ callback.onSuccess(true);
+ };
+ ServerDataProvider.prototype.updateMessages = function (conversationType, targetId, key, value, callback) {
+ var me = this;
+ if (key == "readStatus") {
+ if (RongIMLib.RongIMClient._memoryStore.conversationList.length > 0) {
+ me.getConversationList({
+ onSuccess: function (list) {
+ Array.forEach(list, function (conver) {
+ if (conver.conversationType == conversationType && conver.targetId == targetId) {
+ conver.unreadMessageCount = 0;
+ }
+ });
+ },
+ onError: function (errorCode) {
+ callback.onError(errorCode);
+ }
+ }, null);
+ }
+ }
+ callback.onSuccess(true);
+ };
+ ServerDataProvider.prototype.getConversation = function (conversationType, targetId, callback) {
+ var conver = null;
+ for (var i = 0, len = RongIMLib.RongIMClient._memoryStore.conversationList.length; i < len; i++) {
+ if (RongIMLib.RongIMClient._memoryStore.conversationList[i].conversationType == conversationType && RongIMLib.RongIMClient._memoryStore.conversationList[i].targetId == targetId) {
+ conver = RongIMLib.RongIMClient._memoryStore.conversationList[i];
+ if (RongIMLib.MessageUtil.supportLargeStorage()) {
+ var count = RongIMLib.RongIMClient._storageProvider.getItem("cu" + RongIMLib.Bridge._client.userId + conversationType + targetId);
+ if (conver.unreadMessageCount == 0) {
+ conver.unreadMessageCount = Number(count);
+ }
+ }
+ }
+ }
+ callback && callback.onSuccess(conver);
+ return conver;
+ };
+ ServerDataProvider.prototype.getConversationList = function (callback, conversationTypes, count, isHidden) {
+ var _Cache = RongIMLib.RongIMClient._Cahche;
+ var memoryStore = RongIMLib.RongIMClient._memoryStore;
+ var conversationList = memoryStore.conversationList;
+ // 通过过会话列表后,从内存中获取
+ if (_Cache.isSyncConversations) {
+ return callback.onSuccess(conversationList);
+ }
+ RongIMLib.RongIMClient.getInstance().getRemoteConversationList({
+ onSuccess: function (list) {
+ if (RongIMLib.MessageUtil.supportLargeStorage()) {
+ memoryStore.conversationList = list;
+ _Cache.isSyncConversations = true;
+ Array.forEach(memoryStore.conversationList, function (item) {
+ var count = RongIMLib.RongIMClient._storageProvider.getItem("cu" + RongIMLib.Bridge._client.userId + item.conversationType + item.targetId);
+ if (item.unreadMessageCount == 0) {
+ item.unreadMessageCount = Number(count);
+ }
+ });
+ }
+ RongIMLib.RongIMClient._memoryStore.isSyncRemoteConverList = false;
+ callback.onSuccess(list);
+ },
+ onError: function (errorcode) {
+ callback.onSuccess([]);
+ }
+ }, conversationTypes, count, isHidden);
+ _Cache.isRunning = true;
+ };
+ ServerDataProvider.prototype.clearCache = function () {
+ var memoryStore = RongIMLib.RongIMClient._memoryStore || {};
+ memoryStore.conversationList = [];
+ memoryStore.isSyncRemoteConverList = true;
+ };
+ ServerDataProvider.prototype.clearConversations = function (conversationTypes, callback) {
+ Array.forEach(conversationTypes, function (conversationType) {
+ Array.forEach(RongIMLib.RongIMClient._memoryStore.conversationList, function (conver) {
+ if (conversationType == conver.conversationType) {
+ RongIMLib.RongIMClient.getInstance().removeConversation(conver.conversationType, conver.targetId, {
+ onSuccess: function () {},
+ onError: function () {}
+ });
+ }
+ });
+ });
+ callback.onSuccess(true);
+ };
+ ServerDataProvider.prototype.setMessageContent = function (messageId, content, objectname) {};
+ ;
+ ServerDataProvider.prototype.getHistoryMessages = function (conversationType, targetId, timestamp, count, callback) {
+ RongIMLib.RongIMClient.getInstance().getRemoteHistoryMessages(conversationType, targetId, timestamp, count, callback);
+ };
+ ServerDataProvider.prototype.getTotalUnreadCount = function (callback, conversationTypes) {
+ var count = 0;
+ if (conversationTypes) {
+ for (var i = 0, len = conversationTypes.length; i < len; i++) {
+ Array.forEach(RongIMLib.RongIMClient._memoryStore.conversationList, function (conver) {
+ if (conver.conversationType == conversationTypes[i]) {
+ count += conver.unreadMessageCount;
+ }
+ });
+ }
+ } else {
+ Array.forEach(RongIMLib.RongIMClient._memoryStore.conversationList, function (conver) {
+ count += conver.unreadMessageCount;
+ });
+ }
+ callback.onSuccess(count);
+ };
+ ServerDataProvider.prototype.getConversationUnreadCount = function (conversationTypes, callback) {
+ var count = 0;
+ Array.forEach(conversationTypes, function (converType) {
+ Array.forEach(RongIMLib.RongIMClient._memoryStore.conversationList, function (conver) {
+ if (conver.conversationType == converType) {
+ count += conver.unreadMessageCount;
+ }
+ });
+ });
+ callback.onSuccess(count);
+ };
+ ServerDataProvider.prototype.getUnreadCount = function (conversationType, targetId, callback) {
+ this.getConversation(conversationType, targetId, {
+ onSuccess: function (conver) {
+ callback.onSuccess(conver ? conver.unreadMessageCount : 0);
+ },
+ onError: function (error) {
+ callback.onError(error);
+ }
+ });
+ };
+ ServerDataProvider.prototype.clearUnreadCountByTimestamp = function (conversationType, targetId, timestamp, callback) {
+ callback.onSuccess(true);
+ };
+ ServerDataProvider.prototype.cleanMentioneds = function (conver) {
+ if (conver) {
+ conver.mentionedMsg = null;
+ var targetId = conver.targetId;
+ var conversationType = conver.conversationType;
+ var mentioneds = RongIMLib.RongIMClient._storageProvider.getItem("mentioneds_" + RongIMLib.Bridge._client.userId + '_' + conversationType + '_' + targetId);
+ if (mentioneds) {
+ var info = JSON.parse(mentioneds);
+ delete info[conversationType + "_" + targetId];
+ if (!RongIMLib.MessageUtil.isEmpty(info)) {
+ RongIMLib.RongIMClient._storageProvider.setItem("mentioneds_" + RongIMLib.Bridge._client.userId + '_' + conversationType + '_' + targetId, JSON.stringify(info));
+ } else {
+ RongIMLib.RongIMClient._storageProvider.removeItem("mentioneds_" + RongIMLib.Bridge._client.userId + '_' + conversationType + '_' + targetId);
+ }
+ }
+ }
+ };
+ ServerDataProvider.prototype.clearUnreadCount = function (conversationType, targetId, callback) {
+ this.getConversation(conversationType, targetId, {
+ onSuccess: function (conver) {
+ if (conver) {
+ var isNotifyConversation = conver.unreadMessageCount;
+ if (RongIMLib.MessageUtil.supportLargeStorage()) {
+ RongIMLib.RongIMClient._storageProvider.removeItem("cu" + RongIMLib.Bridge._client.userId + conversationType + targetId);
+ }
+ conver.unreadMessageCount = 0;
+ conver.mentionedMsg = null;
+ var mentioneds = RongIMLib.RongIMClient._storageProvider.getItem("mentioneds_" + RongIMLib.Bridge._client.userId + '_' + conversationType + '_' + targetId);
+ if (mentioneds) {
+ isNotifyConversation = true;
+ var info = JSON.parse(mentioneds);
+ delete info[conversationType + "_" + targetId];
+ if (!RongIMLib.MessageUtil.isEmpty(info)) {
+ RongIMLib.RongIMClient._storageProvider.setItem("mentioneds_" + RongIMLib.Bridge._client.userId + '_' + conversationType + '_' + targetId, JSON.stringify(info));
+ } else {
+ RongIMLib.RongIMClient._storageProvider.removeItem("mentioneds_" + RongIMLib.Bridge._client.userId + '_' + conversationType + '_' + targetId);
+ }
+ }
+ }
+ callback.onSuccess(true);
+ isNotifyConversation && Conversation._notify(RongIMClient._memoryStore.conversationList);
+ },
+ onError: function (error) {
+ callback.onError(error);
+ }
+ });
+ };
+ ServerDataProvider.prototype.clearTotalUnreadCount = function (callback) {
+ var list = RongIMLib.RongIMClient._memoryStore.conversationList;
+ var me = this;
+ var isNotifyConversation = false;
+ if (list) {
+ // 清除 mentioneds、清除 list 中的 unreadMessageCount
+ for (var i = 0; i < list.length; i++) {
+ var conver = list[i];
+ if (conver) {
+ isNotifyConversation = conver.unreadMessageCount ? true : isNotifyConversation;
+ conver.unreadMessageCount = 0;
+ me.cleanMentioneds(conver);
+ }
+ }
+ }
+ var unreadKeys = RongIMLib.RongIMClient._storageProvider.getItemKeyList("cu" + RongIMLib.Bridge._client.userId);
+ isNotifyConversation = unreadKeys.length ? true : isNotifyConversation;
+ for (var i = 0; i < unreadKeys.length; i++) {
+ var key = unreadKeys[i];
+ RongIMLib.RongIMClient._storageProvider.removeItem(key);
+ }
+ setTimeout(() => {
+ callback.onSuccess(true);
+ isNotifyConversation && Conversation._notify(RongIMClient._memoryStore.conversationList);
+ });
+ };
+ ServerDataProvider.prototype.setConversationToTop = function (conversationType, targetId, isTop, callback) {
+ var me = this;
+ this.getConversation(conversationType, targetId, {
+ onSuccess: function (conver) {
+ conver.isTop = isTop;
+ me.addConversation(conver, callback);
+ callback.onSuccess(true);
+ },
+ onError: function (error) {
+ callback.onError(error);
+ }
+ });
+ };
+ ServerDataProvider.prototype.clearListeners = function () {};
+ ServerDataProvider.prototype.setServerInfo = function (info) {};
+ ServerDataProvider.prototype.getUnreadMentionedMessages = function (conversationType, targetId) {
+ return null;
+ };
+ ServerDataProvider.prototype.setConversationHidden = function (conversationType, targetId, isHidden) {};
+ ServerDataProvider.prototype.setMessageExtra = function (messageId, value, callback) {
+ callback.onSuccess(true);
+ };
+ ServerDataProvider.prototype.setMessageReceivedStatus = function (messageId, receivedStatus, callback) {
+ callback.onSuccess(true);
+ };
+ ServerDataProvider.prototype.setMessageSentStatus = function (messageId, sentStatus, callback) {
+ callback.onSuccess(true);
+ };
+ ServerDataProvider.prototype.getAllConversations = function (callback) {
+ callback.onSuccess([]);
+ };
+ ServerDataProvider.prototype.getConversationByContent = function (keywords, callback) {
+ callback.onSuccess([]);
+ };
+ ServerDataProvider.prototype.getMessagesFromConversation = function (conversationType, targetId, keywords, callback) {
+ callback.onSuccess([]);
+ };
+ ServerDataProvider.prototype.searchConversationByContent = function (keyword, callback, conversationTypes) {
+ callback.onSuccess([]);
+ };
+ ServerDataProvider.prototype.searchMessageByContent = function (conversationType, targetId, keyword, timestamp, count, total, callback) {
+ callback.onSuccess([]);
+ };
+ ServerDataProvider.prototype.getDelaTime = function () {
+ return RongIMLib.RongIMClient._memoryStore.deltaTime;
+ };
+ ServerDataProvider.prototype.getUserStatus = function (userId, callback) {
+ callback.onSuccess(new RongIMLib.UserStatus());
+ };
+ ServerDataProvider.prototype.setUserStatus = function (userId, callback) {
+ callback.onSuccess(true);
+ };
+ ServerDataProvider.prototype.subscribeUserStatus = function (userIds, callback) {
+ callback.onSuccess(true);
+ };
+ ServerDataProvider.prototype.setOnReceiveStatusListener = function (callback) {
+ callback();
+ };
+ return ServerDataProvider;
+ }();
+ RongIMLib.ServerDataProvider = ServerDataProvider;
+ })(RongIMLib || (RongIMLib = {}));
+
+ // var RongIMLib;
+ (function (RongIMLib) {
+ // static _instance: LocalStorageProvider = new LocalStorageProvider();
+ var prefix = 'rong_';
+ function LocalStorageProvider() {
+ var d = new Date(),
+ m = d.getMonth() + 1,
+ date = d.getFullYear() + '/' + (m.toString().length == 1 ? '0' + m : m) + '/' + d.getDate(),
+ nowDate = new Date(date).getTime();
+ for (var key in localStorage) {
+ if (key.lastIndexOf('RECEIVED') > -1) {
+ var recObj = JSON.parse(localStorage.getItem(key));
+ for (var key_1 in recObj) {
+ nowDate - recObj[key_1].dealtime > 0 && delete recObj[key_1];
+ }
+ if (RongIMLib.ObjectTools.isEmpty(recObj)) {
+ localStorage.removeItem(key);
+ } else {
+ localStorage.setItem(key, JSON.stringify(recObj));
+ }
+ }
+ if (key.lastIndexOf('SENT') > -1) {
+ var sentObj = JSON.parse(localStorage.getItem(key));
+ nowDate - sentObj.dealtime > 0 && localStorage.removeItem(key);
+ }
+ }
+ }
+ RongIMLib.LocalStorageProvider = {
+ setItem: function (composedKey, object) {
+ if (composedKey) {
+ composedKey.indexOf(prefix) == -1 && (composedKey = prefix + composedKey);
+ wx.setStorageSync(composedKey, object);
+ }
+ },
+ getItem: function (composedKey) {
+ if (composedKey) {
+ composedKey.indexOf(prefix) == -1 && (composedKey = prefix + composedKey);
+ return wx.getStorageSync(composedKey);
+ }
+ return "";
+ },
+ getItemKey: function (composedStr) {
+ if (composedStr.indexOf('rong_') == -1) {
+ composedStr = 'rong_' + composedStr;
+ }
+ var item = "";
+ var res = wx.getStorageInfoSync();
+ var keys = res.keys;
+ keys.forEach(function (key) {
+ if (key.indexOf(composedStr) == 0) {
+ item = key;
+ }
+ });
+ return item;
+ },
+ getItemKeyList: function (composedStr) {
+ var prefix = 'rong_';
+ if (composedStr.indexOf(prefix) == -1) {
+ composedStr = prefix + composedStr;
+ }
+ var itemList = [];
+ var res = wx.getStorageInfoSync();
+ var keys = res.keys;
+ keys.forEach(function (key) {
+ if (key.indexOf(composedStr) == 0) {
+ key = key.substring(prefix.length);
+ itemList.push(key);
+ }
+ });
+ return itemList;
+ },
+ removeItem: function (composedKey) {
+ if (composedKey) {
+ composedKey.indexOf(prefix) == -1 && (composedKey = prefix + composedKey);
+ wx.removeStorageSync(composedKey);
+ }
+ },
+ clearItem: function () {
+ var res = wx.getStorageInfoSync();
+ var keys = res.keys;
+ keys.forEach(function (key) {
+ if (key.indexOf(prefix) == 0) {
+ wx.removeStorageSync(key);
+ }
+ });
+ },
+ //单位:字节
+ onOutOfQuota: function () {
+ return JSON.stringify(localStorage).length;
+ }
+ };
+ })(RongIMLib || (RongIMLib = {}));
+
+ // var RongIMLib;
+ (function (RongIMLib) {
+ RongIMLib.FeatureDectector = function () {
+ // load protobuf
+
+ // RongIMLib.Transportations._TransportType = RongIMLib.Socket.WEBSOCKET;
+ // if ("WebSocket" in window && "ArrayBuffer" in window && WebSocket.prototype.CLOSED === 3 && !RongIMLib.RongIMClient._memoryStore.depend.isPolling) {
+ // var str = RongIMLib.RongIMClient._memoryStore.depend.protobuf;
+ // this.script.src = str;
+ // this.head.appendChild(this.script);
+ // }
+ // else {
+ // RongIMLib.Transportations._TransportType = "xhr-polling";
+ // window["Modules"] = Polling;
+ // }
+ };
+ })(RongIMLib || (RongIMLib = {}));
+
+ // var RongIMLib;
+ (function (RongIMLib) {
+ var FeaturePatcher = function () {
+ function FeaturePatcher() {}
+ FeaturePatcher.prototype.patchAll = function () {
+ this.patchJSON();
+ this.patchForEach();
+ };
+ FeaturePatcher.prototype.patchForEach = function () {
+ if (!Array.forEach) {
+ Array.forEach = function (arr, func) {
+ for (var i = 0; i < arr.length; i++) {
+ func.call(arr, arr[i], i, arr);
+ }
+ };
+ }
+ };
+ FeaturePatcher.prototype.patchJSON = function () {};
+ return FeaturePatcher;
+ }();
+ RongIMLib.FeaturePatcher = FeaturePatcher;
+ })(RongIMLib || (RongIMLib = {}));
+
+ // var RongIMLib;
+ (function (RongIMLib) {
+ var ObjectTools = function () {
+ function ObjectTools() {}
+ ObjectTools.isEmpty = function (obj) {
+ var empty = true;
+ for (var key in obj) {
+ empty = false;
+ break;
+ }
+ return empty;
+ };
+ ObjectTools.buildOptions = function (one, opts, protocol) {
+ if (typeof one == 'object') {
+ for (var key in opts) {
+ if (key == 'navi' || key == 'api') {
+ one[key] && (opts[key] = protocol + one[key]);
+ } else {
+ one[key] && (opts[key] = one[key]);
+ }
+ }
+ }
+ return opts;
+ };
+ return ObjectTools;
+ }();
+ RongIMLib.ObjectTools = ObjectTools;
+ var PublicServiceMap = function () {
+ function PublicServiceMap() {
+ this.publicServiceList = [];
+ }
+ PublicServiceMap.prototype.get = function (publicServiceType, publicServiceId) {
+ for (var i = 0, len = this.publicServiceList.length; i < len; i++) {
+ if (this.publicServiceList[i].conversationType == publicServiceType && publicServiceId == this.publicServiceList[i].publicServiceId) {
+ return this.publicServiceList[i];
+ }
+ }
+ };
+ PublicServiceMap.prototype.add = function (publicServiceProfile) {
+ var isAdd = true,
+ me = this;
+ for (var i = 0, len = this.publicServiceList.length; i < len; i++) {
+ if (me.publicServiceList[i].conversationType == publicServiceProfile.conversationType && publicServiceProfile.publicServiceId == me.publicServiceList[i].publicServiceId) {
+ this.publicServiceList.unshift(this.publicServiceList.splice(i, 1)[0]);
+ isAdd = false;
+ break;
+ }
+ }
+ if (isAdd) {
+ this.publicServiceList.unshift(publicServiceProfile);
+ }
+ };
+ PublicServiceMap.prototype.replace = function (publicServiceProfile) {
+ var me = this;
+ for (var i = 0, len = this.publicServiceList.length; i < len; i++) {
+ if (me.publicServiceList[i].conversationType == publicServiceProfile.conversationType && publicServiceProfile.publicServiceId == me.publicServiceList[i].publicServiceId) {
+ me.publicServiceList.splice(i, 1, publicServiceProfile);
+ break;
+ }
+ }
+ };
+ PublicServiceMap.prototype.remove = function (conversationType, publicServiceId) {
+ var me = this;
+ for (var i = 0, len = this.publicServiceList.length; i < len; i++) {
+ if (me.publicServiceList[i].conversationType == conversationType && publicServiceId == me.publicServiceList[i].publicServiceId) {
+ this.publicServiceList.splice(i, 1);
+ break;
+ }
+ }
+ };
+ return PublicServiceMap;
+ }();
+ RongIMLib.PublicServiceMap = PublicServiceMap;
+ /**
+ * 会话工具类。
+ */
+ var ConversationMap = function () {
+ function ConversationMap() {
+ this.conversationList = [];
+ }
+ ConversationMap.prototype.get = function (conversavtionType, targetId) {
+ for (var i = 0, len = this.conversationList.length; i < len; i++) {
+ if (this.conversationList[i].conversationType == conversavtionType && this.conversationList[i].targetId == targetId) {
+ return this.conversationList[i];
+ }
+ }
+ return null;
+ };
+ ConversationMap.prototype.add = function (conversation) {
+ var isAdd = true;
+ for (var i = 0, len = this.conversationList.length; i < len; i++) {
+ if (this.conversationList[i].conversationType === conversation.conversationType && this.conversationList[i].targetId === conversation.targetId) {
+ this.conversationList.unshift(this.conversationList.splice(i, 1)[0]);
+ isAdd = false;
+ break;
+ }
+ }
+ if (isAdd) {
+ this.conversationList.unshift(conversation);
+ }
+ };
+ /**
+ * [replace 替换会话]
+ * 会话数组存在的情况下调用add方法会是当前会话被替换且返回到第一个位置,导致用户本地一些设置失效,所以提供replace方法
+ */
+ ConversationMap.prototype.replace = function (conversation) {
+ for (var i = 0, len = this.conversationList.length; i < len; i++) {
+ if (this.conversationList[i].conversationType === conversation.conversationType && this.conversationList[i].targetId === conversation.targetId) {
+ this.conversationList.splice(i, 1, conversation);
+ break;
+ }
+ }
+ };
+ ConversationMap.prototype.remove = function (conversation) {
+ for (var i = 0, len = this.conversationList.length; i < len; i++) {
+ if (this.conversationList[i].conversationType === conversation.conversationType && this.conversationList[i].targetId === conversation.targetId) {
+ this.conversationList.splice(i, 1);
+ break;
+ }
+ }
+ };
+ return ConversationMap;
+ }();
+ RongIMLib.ConversationMap = ConversationMap;
+ var CheckParam = function () {
+ function CheckParam() {}
+ CheckParam.getInstance = function () {
+ if (!CheckParam._instance) {
+ CheckParam._instance = new CheckParam();
+ }
+ return CheckParam._instance;
+ };
+ CheckParam.prototype.check = function (f, position, d, c) {
+ if (RongIMLib.RongIMClient._dataAccessProvider || d) {
+ for (var g = 0, e = c.length; g < e; g++) {
+ if (!new RegExp(this.getType(c[g])).test(f[g])) {
+ throw new Error("The index of " + g + " parameter was wrong type " + this.getType(c[g]) + " [" + f[g] + "] -> position:" + position);
+ }
+ }
+ } else {
+ throw new Error("The parameter is incorrect or was not yet instantiated RongIMClient -> position:" + position);
+ }
+ };
+ CheckParam.prototype.getType = function (str) {
+ var temp = Object.prototype.toString.call(str).toLowerCase();
+ return temp.slice(8, temp.length - 1);
+ };
+ return CheckParam;
+ }();
+ RongIMLib.CheckParam = CheckParam;
+ var LimitableMap = function () {
+ function LimitableMap(limit) {
+ this.map = {};
+ this.keys = [];
+ this.limit = limit || 10;
+ }
+ LimitableMap.prototype.set = function (key, value) {
+ this.map[key] = value;
+ };
+ LimitableMap.prototype.get = function (key) {
+ return this.map[key] || 0;
+ };
+ LimitableMap.prototype.remove = function (key) {
+ delete this.map[key];
+ };
+ return LimitableMap;
+ }();
+ RongIMLib.LimitableMap = LimitableMap;
+ var RongAjax = function () {
+ function RongAjax(options) {
+ var me = this;
+ me.xmlhttp = null;
+ me.options = options;
+ var hasCORS = typeof XMLHttpRequest !== "undefined" && "withCredentials" in new XMLHttpRequest();
+ if ("undefined" != typeof XMLHttpRequest && hasCORS) {
+ me.xmlhttp = new XMLHttpRequest();
+ } else if ("undefined" != typeof XDomainRequest) {
+ me.xmlhttp = new XDomainRequest();
+ } else {
+ me.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
+ }
+ }
+ RongAjax.prototype.send = function (callback) {
+ var me = this;
+ me.options.url || (me.options.url = "http://upload.qiniu.com/putb64/-1");
+ me.xmlhttp.onreadystatechange = function () {
+ if (me.xmlhttp.readyState == 4) {
+ if (me.options.type) {
+ callback();
+ } else {
+ callback(JSON.parse(me.xmlhttp.responseText.replace(/'/g, '"')));
+ }
+ }
+ };
+ me.xmlhttp.open("POST", me.options.url, true);
+ me.xmlhttp.withCredentials = false;
+ if ("setRequestHeader" in me.xmlhttp) {
+ if (me.options.type) {
+ me.xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
+ } else {
+ me.xmlhttp.setRequestHeader("Content-type", "application/octet-stream");
+ me.xmlhttp.setRequestHeader('Authorization', "UpToken " + me.options.token);
+ }
+ }
+ me.xmlhttp.send(me.options.type ? "appKey=" + me.options.appKey + "&deviceId=" + me.options.deviceId + "×tamp=" + me.options.timestamp + "&deviceInfo=" + me.options.deviceInfo + "&privateInfo=" + JSON.stringify(me.options.privateInfo) : me.options.base64);
+ };
+ return RongAjax;
+ }();
+ RongIMLib.RongAjax = RongAjax;
+ })(RongIMLib || (RongIMLib = {}));
+ return RongIMLib;
+}(wx);
\ No newline at end of file
diff --git a/src/lib/wx-map-sdk/amap-wx.130.js b/src/lib/wx-map-sdk/amap-wx.130.js
new file mode 100644
index 0000000..bc1f371
--- /dev/null
+++ b/src/lib/wx-map-sdk/amap-wx.130.js
@@ -0,0 +1,849 @@
+function AMapWX(a) {
+ this.key = a.key;
+ this.requestConfig = {
+ key: a.key,
+ s: 'rsx',
+ platform: 'WXJS',
+ appname: a.key,
+ sdkversion: '1.2.0',
+ logversion: '2.0'
+ };
+ this.MeRequestConfig = {
+ key: a.key,
+ serviceName: 'https://restapi.amap.com/rest/me'
+ };
+}
+AMapWX.prototype.getWxLocation = function (a, b) {
+ uni.getLocation({
+ type: 'gcj02',
+ success: function (c) {
+ c = c.longitude + ',' + c.latitude;
+ uni.setStorage({
+ key: 'userLocation',
+ data: c
+ });
+ b(c);
+ },
+ fail: function (c) {
+ uni.getStorage({
+ key: 'userLocation',
+ success: function (d) {
+ if (d.data) {
+ b(d.data);
+ }
+ }
+ });
+ a.fail({
+ errCode: '0',
+ errMsg: c.errMsg || ''
+ });
+ }
+ });
+};
+AMapWX.prototype.getMEKeywordsSearch = function (a) {
+ if (!a.options) {
+ return a.fail({
+ errCode: '0',
+ errMsg: '\u7F3A\u5C11\u5FC5\u8981\u53C2\u6570'
+ });
+ }
+ var b = a.options;
+ var c = this.MeRequestConfig;
+ var d = {
+ key: c.key,
+ s: 'rsx',
+ platform: 'WXJS',
+ appname: a.key,
+ sdkversion: '1.2.0',
+ logversion: '2.0'
+ };
+ if (b.layerId) {
+ d.layerId = b.layerId;
+ }
+ if (b.keywords) {
+ d.keywords = b.keywords;
+ }
+ if (b.city) {
+ d.city = b.city;
+ }
+ if (b.filter) {
+ d.filter = b.filter;
+ }
+ if (b.sortrule) {
+ d.sortrule = b.sortrule;
+ }
+ if (b.pageNum) {
+ d.pageNum = b.pageNum;
+ }
+ if (b.pageSize) {
+ d.pageSize = b.pageSize;
+ }
+ if (b.sig) {
+ d.sig = b.sig;
+ }
+ uni.request({
+ url: c.serviceName + '/cpoint/datasearch/local',
+ data: d,
+ method: 'GET',
+ header: {
+ 'content-type': 'application/json'
+ },
+ success: function (e) {
+ if ((e = e.data) && e.status && '1' === e.status && 0 === e.code) {
+ a.success(e.data);
+ } else {
+ a.fail({
+ errCode: '0',
+ errMsg: e
+ });
+ }
+ },
+ fail: function (e) {
+ a.fail({
+ errCode: '0',
+ errMsg: e.errMsg || ''
+ });
+ }
+ });
+};
+AMapWX.prototype.getMEIdSearch = function (a) {
+ if (!a.options) {
+ return a.fail({
+ errCode: '0',
+ errMsg: '\u7F3A\u5C11\u5FC5\u8981\u53C2\u6570'
+ });
+ }
+ var b = a.options;
+ var c = this.MeRequestConfig;
+ var d = {
+ key: c.key,
+ s: 'rsx',
+ platform: 'WXJS',
+ appname: a.key,
+ sdkversion: '1.2.0',
+ logversion: '2.0'
+ };
+ if (b.layerId) {
+ d.layerId = b.layerId;
+ }
+ if (b.id) {
+ d.id = b.id;
+ }
+ if (b.sig) {
+ d.sig = b.sig;
+ }
+ uni.request({
+ url: c.serviceName + '/cpoint/datasearch/id',
+ data: d,
+ method: 'GET',
+ header: {
+ 'content-type': 'application/json'
+ },
+ success: function (e) {
+ if ((e = e.data) && e.status && '1' === e.status && 0 === e.code) {
+ a.success(e.data);
+ } else {
+ a.fail({
+ errCode: '0',
+ errMsg: e
+ });
+ }
+ },
+ fail: function (e) {
+ a.fail({
+ errCode: '0',
+ errMsg: e.errMsg || ''
+ });
+ }
+ });
+};
+AMapWX.prototype.getMEPolygonSearch = function (a) {
+ if (!a.options) {
+ return a.fail({
+ errCode: '0',
+ errMsg: '\u7F3A\u5C11\u5FC5\u8981\u53C2\u6570'
+ });
+ }
+ var b = a.options;
+ var c = this.MeRequestConfig;
+ var d = {
+ key: c.key,
+ s: 'rsx',
+ platform: 'WXJS',
+ appname: a.key,
+ sdkversion: '1.2.0',
+ logversion: '2.0'
+ };
+ if (b.layerId) {
+ d.layerId = b.layerId;
+ }
+ if (b.keywords) {
+ d.keywords = b.keywords;
+ }
+ if (b.polygon) {
+ d.polygon = b.polygon;
+ }
+ if (b.filter) {
+ d.filter = b.filter;
+ }
+ if (b.sortrule) {
+ d.sortrule = b.sortrule;
+ }
+ if (b.pageNum) {
+ d.pageNum = b.pageNum;
+ }
+ if (b.pageSize) {
+ d.pageSize = b.pageSize;
+ }
+ if (b.sig) {
+ d.sig = b.sig;
+ }
+ uni.request({
+ url: c.serviceName + '/cpoint/datasearch/polygon',
+ data: d,
+ method: 'GET',
+ header: {
+ 'content-type': 'application/json'
+ },
+ success: function (e) {
+ (e = e.data) && e.status && '1' === e.status && 0 === e.code
+ ? a.success(e.data)
+ : a.fail({
+ errCode: '0',
+ errMsg: e
+ });
+ },
+ fail: function (e) {
+ a.fail({
+ errCode: '0',
+ errMsg: e.errMsg || ''
+ });
+ }
+ });
+};
+AMapWX.prototype.getMEaroundSearch = function (a) {
+ if (!a.options) {
+ return a.fail({
+ errCode: '0',
+ errMsg: '\u7F3A\u5C11\u5FC5\u8981\u53C2\u6570'
+ });
+ }
+ var b = a.options;
+ var c = this.MeRequestConfig;
+ var d = {
+ key: c.key,
+ s: 'rsx',
+ platform: 'WXJS',
+ appname: a.key,
+ sdkversion: '1.2.0',
+ logversion: '2.0'
+ };
+ if (b.layerId) {
+ d.layerId = b.layerId;
+ }
+ if (b.keywords) {
+ d.keywords = b.keywords;
+ }
+ if (b.center) {
+ d.center = b.center;
+ }
+ if (b.radius) {
+ d.radius = b.radius;
+ }
+ if (b.filter) {
+ d.filter = b.filter;
+ }
+ if (b.sortrule) {
+ d.sortrule = b.sortrule;
+ }
+ if (b.pageNum) {
+ d.pageNum = b.pageNum;
+ }
+ if (b.pageSize) {
+ d.pageSize = b.pageSize;
+ }
+ if (b.sig) {
+ d.sig = b.sig;
+ }
+ uni.request({
+ url: c.serviceName + '/cpoint/datasearch/around',
+ data: d,
+ method: 'GET',
+ header: {
+ 'content-type': 'application/json'
+ },
+ success: function (e) {
+ (e = e.data) && e.status && '1' === e.status && 0 === e.code
+ ? a.success(e.data)
+ : a.fail({
+ errCode: '0',
+ errMsg: e
+ });
+ },
+ fail: function (e) {
+ a.fail({
+ errCode: '0',
+ errMsg: e.errMsg || ''
+ });
+ }
+ });
+};
+AMapWX.prototype.getGeo = function (a) {
+ var b = this.requestConfig;
+ var c = a.options;
+ b = {
+ key: this.key,
+ extensions: 'all',
+ s: b.s,
+ platform: b.platform,
+ appname: this.key,
+ sdkversion: b.sdkversion,
+ logversion: b.logversion
+ };
+ if (c.address) {
+ b.address = c.address;
+ }
+ if (c.city) {
+ b.city = c.city;
+ }
+ if (c.batch) {
+ b.batch = c.batch;
+ }
+ if (c.sig) {
+ b.sig = c.sig;
+ }
+ uni.request({
+ url: 'https://restapi.amap.com/v3/geocode/geo',
+ data: b,
+ method: 'GET',
+ header: {
+ 'content-type': 'application/json'
+ },
+ success: function (d) {
+ (d = d.data) && d.status && '1' === d.status
+ ? a.success(d)
+ : a.fail({
+ errCode: '0',
+ errMsg: d
+ });
+ },
+ fail: function (d) {
+ a.fail({
+ errCode: '0',
+ errMsg: d.errMsg || ''
+ });
+ }
+ });
+};
+AMapWX.prototype.getRegeo = function (a) {
+ function b(d) {
+ var e = that.requestConfig;
+ uni.request({
+ url: 'https://restapi.amap.com/v3/geocode/regeo',
+ data: {
+ key: that.key,
+ location: d,
+ extensions: 'all',
+ s: e.s,
+ platform: e.platform,
+ appname: that.key,
+ sdkversion: e.sdkversion,
+ logversion: e.logversion
+ },
+ method: 'GET',
+ header: {
+ 'content-type': 'application/json'
+ },
+ success: function (g) {
+ if (g.data.status && '1' == g.data.status) {
+ g = g.data.regeocode;
+ var h = g.addressComponent;
+ var f = [];
+ var k = g.roads[0].name + '\u9644\u8FD1';
+ var m = d.split(',')[0];
+ var n = d.split(',')[1];
+ if (g.pois && g.pois[0]) {
+ k = g.pois[0].name + '\u9644\u8FD1';
+ var l = g.pois[0].location;
+ if (l) {
+ m = parseFloat(l.split(',')[0]);
+ n = parseFloat(l.split(',')[1]);
+ }
+ }
+ if (h.provice) {
+ f.push(h.provice);
+ }
+ if (h.city) {
+ f.push(h.city);
+ }
+ if (h.district) {
+ f.push(h.district);
+ }
+ h.streetNumber && h.streetNumber.street && h.streetNumber.number ? (f.push(h.streetNumber.street), f.push(h.streetNumber.number)) : f.push(g.roads[0].name);
+ f = f.join('');
+ a.success([
+ {
+ iconPath: a.iconPath,
+ width: a.iconWidth,
+ height: a.iconHeight,
+ name: f,
+ desc: k,
+ longitude: m,
+ latitude: n,
+ id: 0,
+ regeocodeData: g
+ }
+ ]);
+ } else {
+ a.fail({
+ errCode: g.data.infocode,
+ errMsg: g.data.info
+ });
+ }
+ },
+ fail: function (g) {
+ a.fail({
+ errCode: '0',
+ errMsg: g.errMsg || ''
+ });
+ }
+ });
+ }
+ var that = this;
+ a.location
+ ? b(a.location)
+ : that.getWxLocation(a, function (d) {
+ b(d);
+ });
+};
+AMapWX.prototype.getWeather = function (a) {
+ function b(g) {
+ var h = 'base';
+ if (a.type && 'forecast' == a.type) {
+ h = 'all';
+ }
+ uni.request({
+ url: 'https://restapi.amap.com/v3/weather/weatherInfo',
+ data: {
+ key: that.key,
+ city: g,
+ extensions: h,
+ s: e.s,
+ platform: e.platform,
+ appname: that.key,
+ sdkversion: e.sdkversion,
+ logversion: e.logversion
+ },
+ method: 'GET',
+ header: {
+ 'content-type': 'application/json'
+ },
+ success: function (f) {
+ if (f.data.status && '1' == f.data.status) {
+ if (f.data.lives) {
+ if ((f = f.data.lives) && 0 < f.length) {
+ f = f[0];
+ var k = {
+ city: {
+ text: '\u57CE\u5E02',
+ data: f.city
+ },
+ weather: {
+ text: '\u5929\u6C14',
+ data: f.weather
+ },
+ temperature: {
+ text: '\u6E29\u5EA6',
+ data: f.temperature
+ },
+ winddirection: {
+ text: '\u98CE\u5411',
+ data: f.winddirection + '\u98CE'
+ },
+ windpower: {
+ text: '\u98CE\u529B',
+ data: f.windpower + '\u7EA7'
+ },
+ humidity: {
+ text: '\u6E7F\u5EA6',
+ data: f.humidity + '%'
+ }
+ };
+ k.liveData = f;
+ a.success(k);
+ }
+ } else {
+ if (f.data.forecasts && f.data.forecasts[0]) {
+ a.success({
+ forecast: f.data.forecasts[0]
+ });
+ }
+ }
+ } else {
+ a.fail({
+ errCode: f.data.infocode,
+ errMsg: f.data.info
+ });
+ }
+ },
+ fail: function (f) {
+ a.fail({
+ errCode: '0',
+ errMsg: f.errMsg || ''
+ });
+ }
+ });
+ }
+ function c(g) {
+ uni.request({
+ url: 'https://restapi.amap.com/v3/geocode/regeo',
+ data: {
+ key: that.key,
+ location: g,
+ extensions: 'all',
+ s: e.s,
+ platform: e.platform,
+ appname: that.key,
+ sdkversion: e.sdkversion,
+ logversion: e.logversion
+ },
+ method: 'GET',
+ header: {
+ 'content-type': 'application/json'
+ },
+ success: function (h) {
+ if (h.data.status && '1' == h.data.status) {
+ h = h.data.regeocode;
+ if (h.addressComponent) {
+ var f = h.addressComponent.adcode;
+ } else {
+ if (h.aois && 0 < h.aois.length) {
+ f = h.aois[0].adcode;
+ }
+ }
+ b(f);
+ } else {
+ a.fail({
+ errCode: h.data.infocode,
+ errMsg: h.data.info
+ });
+ }
+ },
+ fail: function (h) {
+ a.fail({
+ errCode: '0',
+ errMsg: h.errMsg || ''
+ });
+ }
+ });
+ }
+ var that = this;
+ var e = that.requestConfig;
+ a.city
+ ? b(a.city)
+ : that.getWxLocation(a, function (g) {
+ c(g);
+ });
+};
+AMapWX.prototype.getPoiAround = function (a) {
+ function b(e) {
+ e = {
+ key: that.key,
+ location: e,
+ s: d.s,
+ platform: d.platform,
+ appname: that.key,
+ sdkversion: d.sdkversion,
+ logversion: d.logversion
+ };
+ if (a.querytypes) {
+ e.types = a.querytypes;
+ }
+ if (a.querykeywords) {
+ e.keywords = a.querykeywords;
+ }
+ uni.request({
+ url: 'https://restapi.amap.com/v3/place/around',
+ data: e,
+ method: 'GET',
+ header: {
+ 'content-type': 'application/json'
+ },
+ success: function (g) {
+ if (g.data.status && '1' == g.data.status) {
+ if ((g = g.data) && g.pois) {
+ for (h = [], f = 0, void 0; f < g.pois.length; f++) {
+ var h;
+ var f;
+ if (0 == f) {
+ var k = a.iconPathSelected;
+ } else {
+ var k = a.iconPath;
+ }
+ h.push({
+ latitude: parseFloat(g.pois[f].location.split(',')[1]),
+ longitude: parseFloat(g.pois[f].location.split(',')[0]),
+ iconPath: k,
+ width: 22,
+ height: 32,
+ id: f,
+ name: g.pois[f].name,
+ address: g.pois[f].address
+ });
+ }
+ a.success({
+ markers: h,
+ poisData: g.pois
+ });
+ }
+ } else {
+ a.fail({
+ errCode: g.data.infocode,
+ errMsg: g.data.info
+ });
+ }
+ },
+ fail: function (g) {
+ a.fail({
+ errCode: '0',
+ errMsg: g.errMsg || ''
+ });
+ }
+ });
+ }
+ var that = this;
+ var d = that.requestConfig;
+ a.location
+ ? b(a.location)
+ : that.getWxLocation(a, function (e) {
+ b(e);
+ });
+};
+AMapWX.prototype.getStaticmap = function (a) {
+ function b(e) {
+ c.push('location=' + e);
+ if (a.zoom) {
+ c.push('zoom=' + a.zoom);
+ }
+ if (a.size) {
+ c.push('size=' + a.size);
+ }
+ if (a.scale) {
+ c.push('scale=' + a.scale);
+ }
+ if (a.markers) {
+ c.push('markers=' + a.markers);
+ }
+ if (a.labels) {
+ c.push('labels=' + a.labels);
+ }
+ if (a.paths) {
+ c.push('paths=' + a.paths);
+ }
+ if (a.traffic) {
+ c.push('traffic=' + a.traffic);
+ }
+ e = 'https://restapi.amap.com/v3/staticmap?' + c.join('&');
+ a.success({
+ url: e
+ });
+ }
+ var c = [];
+ c.push('key=' + this.key);
+ var d = this.requestConfig;
+ c.push('s=' + d.s);
+ c.push('platform=' + d.platform);
+ c.push('appname=' + d.appname);
+ c.push('sdkversion=' + d.sdkversion);
+ c.push('logversion=' + d.logversion);
+ a.location
+ ? b(a.location)
+ : this.getWxLocation(a, function (e) {
+ b(e);
+ });
+};
+AMapWX.prototype.getInputtips = function (a) {
+ var b = Object.assign({}, this.requestConfig);
+ if (a.location) {
+ b.location = a.location;
+ }
+ if (a.keywords) {
+ b.keywords = a.keywords;
+ }
+ if (a.type) {
+ b.type = a.type;
+ }
+ if (a.city) {
+ b.city = a.city;
+ }
+ if (a.citylimit) {
+ b.citylimit = a.citylimit;
+ }
+ uni.request({
+ url: 'https://restapi.amap.com/v3/assistant/inputtips',
+ data: b,
+ method: 'GET',
+ header: {
+ 'content-type': 'application/json'
+ },
+ success: function (c) {
+ if (c && c.data && c.data.tips) {
+ a.success({
+ tips: c.data.tips
+ });
+ }
+ },
+ fail: function (c) {
+ a.fail({
+ errCode: '0',
+ errMsg: c.errMsg || ''
+ });
+ }
+ });
+};
+AMapWX.prototype.getDrivingRoute = function (a) {
+ var b = Object.assign({}, this.requestConfig);
+ if (a.origin) {
+ b.origin = a.origin;
+ }
+ if (a.destination) {
+ b.destination = a.destination;
+ }
+ if (a.strategy) {
+ b.strategy = a.strategy;
+ }
+ if (a.waypoints) {
+ b.waypoints = a.waypoints;
+ }
+ if (a.avoidpolygons) {
+ b.avoidpolygons = a.avoidpolygons;
+ }
+ if (a.avoidroad) {
+ b.avoidroad = a.avoidroad;
+ }
+ uni.request({
+ url: 'https://restapi.amap.com/v3/direction/driving',
+ data: b,
+ method: 'GET',
+ header: {
+ 'content-type': 'application/json'
+ },
+ success: function (c) {
+ if (c && c.data && c.data.route) {
+ a.success({
+ paths: c.data.route.paths,
+ taxi_cost: c.data.route.taxi_cost || ''
+ });
+ }
+ },
+ fail: function (c) {
+ a.fail({
+ errCode: '0',
+ errMsg: c.errMsg || ''
+ });
+ }
+ });
+};
+AMapWX.prototype.getWalkingRoute = function (a) {
+ var b = Object.assign({}, this.requestConfig);
+ if (a.origin) {
+ b.origin = a.origin;
+ }
+ if (a.destination) {
+ b.destination = a.destination;
+ }
+ uni.request({
+ url: 'https://restapi.amap.com/v3/direction/walking',
+ data: b,
+ method: 'GET',
+ header: {
+ 'content-type': 'application/json'
+ },
+ success: function (c) {
+ if (c && c.data && c.data.route) {
+ a.success({
+ paths: c.data.route.paths
+ });
+ }
+ },
+ fail: function (c) {
+ a.fail({
+ errCode: '0',
+ errMsg: c.errMsg || ''
+ });
+ }
+ });
+};
+AMapWX.prototype.getTransitRoute = function (a) {
+ var b = Object.assign({}, this.requestConfig);
+ if (a.origin) {
+ b.origin = a.origin;
+ }
+ if (a.destination) {
+ b.destination = a.destination;
+ }
+ if (a.strategy) {
+ b.strategy = a.strategy;
+ }
+ if (a.city) {
+ b.city = a.city;
+ }
+ if (a.cityd) {
+ b.cityd = a.cityd;
+ }
+ uni.request({
+ url: 'https://restapi.amap.com/v3/direction/transit/integrated',
+ data: b,
+ method: 'GET',
+ header: {
+ 'content-type': 'application/json'
+ },
+ success: function (c) {
+ if (c && c.data && c.data.route) {
+ c = c.data.route;
+ a.success({
+ distance: c.distance || '',
+ taxi_cost: c.taxi_cost || '',
+ transits: c.transits
+ });
+ }
+ },
+ fail: function (c) {
+ a.fail({
+ errCode: '0',
+ errMsg: c.errMsg || ''
+ });
+ }
+ });
+};
+AMapWX.prototype.getRidingRoute = function (a) {
+ var b = Object.assign({}, this.requestConfig);
+ if (a.origin) {
+ b.origin = a.origin;
+ }
+ if (a.destination) {
+ b.destination = a.destination;
+ }
+ uni.request({
+ url: 'https://restapi.amap.com/v3/direction/riding',
+ data: b,
+ method: 'GET',
+ header: {
+ 'content-type': 'application/json'
+ },
+ success: function (c) {
+ if (c && c.data && c.data.route) {
+ a.success({
+ paths: c.data.route.paths
+ });
+ }
+ },
+ fail: function (c) {
+ a.fail({
+ errCode: '0',
+ errMsg: c.errMsg || ''
+ });
+ }
+ });
+};
+export default { AMapWX };
diff --git a/src/lib/wx-promise-pro/README.md b/src/lib/wx-promise-pro/README.md
new file mode 100644
index 0000000..6192265
--- /dev/null
+++ b/src/lib/wx-promise-pro/README.md
@@ -0,0 +1,85 @@
+# wx-promise-pro
+
+
+
+[](#contributors-)
+
+
+
+✨ 强大、优雅的微信小程序异步库 🚀
+
+[](https://www.npmjs.com/package/wx-promise-pro) [](https://www.npmjs.com/package/wx-promise-pro) [](https://opencollective.com/wx-promise-pro)
+
+[](https://nodei.co/npm/wx-promise-pro/)
+
+## 优势
+
+- 方便集成:一处引用,处处使用
+- 把微信小程序所有异步 API promise 化并挂在到`wx.pro` 对象下
+- 支持 ES2018 `finally` 特性
+- 支持 TypeScript 开发
+
+## 安装
+
+> 你也可以直接把 `dist` 目录下的 `wx-promise-pro.js` 拷贝到项目里使用
+
+```bash
+$ npm i wx-promise-pro -S
+# or
+$ yarn add wx-promise-pro
+```
+
+## 初始化
+
+```js
+import { promisifyAll, promisify } from 'wx-promise-pro';
+// promisify all wx‘s api
+promisifyAll();
+// promisify single api
+promisify(wx.getSystemInfo)().then(console.log);
+```
+
+## 示例代码
+
+```js
+wx.pro.showLoading({
+ title: '加载中',
+ mask: true,
+});
+wx.pro
+ .request({
+ url: 'https://cnodejs.org/api/v1/topics',
+ data: {},
+ method: 'GET',
+ header: { 'content-type': 'application/json' },
+ })
+ .then((res) => {
+ console.log(res);
+ })
+ .catch((err) => {
+ console.log(err);
+ })
+ .finally(() => {
+ wx.pro.hideLoading();
+ });
+```
+
+## 贡献者 ✨
+
+感谢如下贡献者的贡献 ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/wx-promise-pro/index.js b/src/lib/wx-promise-pro/index.js
new file mode 100644
index 0000000..476837e
--- /dev/null
+++ b/src/lib/wx-promise-pro/index.js
@@ -0,0 +1,39 @@
+import { asyncMethods } from './methods';
+
+// polyfill for finally
+if (!Promise.prototype.finally) {
+ Promise.prototype.finally = function (callback) {
+ const P = this.constructor;
+ return this.then(
+ (value) => P.resolve(callback()).then(() => value),
+ (reason) =>
+ P.resolve(callback()).then(() => {
+ throw reason;
+ })
+ );
+ };
+}
+
+// core method
+export const promisify = (api) => {
+ return (args = {}) => {
+ return new Promise((resolve, reject) => {
+ api({
+ fail: reject,
+ success: resolve,
+ ...args
+ });
+ });
+ };
+};
+export const promisifyAll = () => {
+ uni.pro = {};
+ Object.keys(wx).forEach((key) => {
+ if (asyncMethods.indexOf(key) >= 0) {
+ uni.pro[key] = promisify(uni[key]);
+ } else if (key !== 'createSignal') {
+ uni.pro[key] = uni[key];
+ }
+ });
+};
+export default promisifyAll;
diff --git a/src/lib/wx-promise-pro/methods.js b/src/lib/wx-promise-pro/methods.js
new file mode 100644
index 0000000..8fba2ce
--- /dev/null
+++ b/src/lib/wx-promise-pro/methods.js
@@ -0,0 +1,2 @@
+// 指定微信api支持Promise风格
+export const asyncMethods = ['downloadFile', 'request', 'uploadFile', 'connectSocket'];
diff --git a/src/main.ts b/src/main.ts
new file mode 100644
index 0000000..eedbdf7
--- /dev/null
+++ b/src/main.ts
@@ -0,0 +1,93 @@
+import App from './App';
+
+// 全局mixins,用于实现setData等功能,请勿删除!';
+// import zpMixins from '@/uni_modules/zp-mixins/index.js';
+
+// 2. 引入组件样式
+import 'vant/lib/index.css';
+import {
+ Button,
+ Tab,
+ Tabs,
+ Empty,
+ Loading,
+ Icon,
+ CellGroup,
+ Cell,
+ NavBar,
+ Popup,
+ Picker,
+ Rate,
+ SwipeCell,
+ Search,
+ Uploader,
+ NoticeBar,
+ Checkbox,
+ Cascader,
+ Grid,
+ GridItem,
+ Dialog,
+ Field,
+ TimePicker,
+ DatePicker,
+ Form
+} from 'vant';
+
+import share from '@/utils/share.js'
+import tootls from './utils/util.map.js'
+
+// #ifndef VUE3
+import Vue from 'vue';
+
+// Vue.prototype.$tootls = tootls
+
+
+// 导入并挂载全局的分享方法
+
+Vue.config.productionTip = false;
+App.mpType = 'app';
+const app = new Vue({
+ ...App
+});
+app.$mount();
+
+// #endif
+
+// #ifdef VUE3
+import {
+ createSSRApp
+} from 'vue';
+export function createApp() {
+ const app = createSSRApp(App);
+ app.config.globalProperties.$tootls = tootls;
+ app.use(Button);
+ app.use(Tab);
+ app.use(Tabs);
+ app.use(Empty);
+ app.use(Loading);
+ app.use(Icon);
+ app.use(CellGroup);
+ app.use(Cell);
+ app.use(NavBar);
+ app.use(Popup);
+ app.use(Picker);
+ app.use(Rate);
+ app.use(SwipeCell);
+ app.use(Search);
+ app.use(Uploader);
+ app.use(NoticeBar);
+ app.use(Checkbox);
+ app.use(Cascader);
+ app.use(Grid);
+ app.use(GridItem);
+ app.use(Dialog);
+ app.use(Field);
+ app.use(TimePicker);
+ app.use(DatePicker);
+ app.use(Form);
+ // app.mixin(zpMixins);
+ return {
+ app
+ };
+}
+// #endif
\ No newline at end of file
diff --git a/src/manifest.json b/src/manifest.json
new file mode 100644
index 0000000..d3593eb
--- /dev/null
+++ b/src/manifest.json
@@ -0,0 +1,83 @@
+{
+ "name" : "",
+ "appid" : "",
+ "description" : "",
+ "versionName" : "1.0.0",
+ "versionCode" : "100",
+ "transformPx" : false,
+ /* 5+App特有相关 */
+ "app-plus" : {
+ "usingComponents" : true,
+ "nvueStyleCompiler" : "uni-app",
+ "compilerVersion" : 3,
+ "splashscreen" : {
+ "alwaysShowBeforeRender" : true,
+ "waiting" : true,
+ "autoclose" : true,
+ "delay" : 0
+ },
+ /* 模块配置 */
+ "modules" : {},
+ /* 应用发布信息 */
+ "distribute" : {
+ /* android打包配置 */
+ "android" : {
+ "permissions" : [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ]
+ },
+ /* ios打包配置 */
+ "ios" : {},
+ /* SDK配置 */
+ "sdkConfigs" : {}
+ }
+ },
+ /* 快应用特有相关 */
+ "quickapp" : {},
+ /* 小程序特有相关 */
+ "mp-weixin" : {
+ "appid" : "",
+ "setting" : {
+ "urlCheck" : false
+ },
+ "usingComponents" : true
+ },
+ "mp-alipay" : {
+ "usingComponents" : true
+ },
+ "mp-baidu" : {
+ "usingComponents" : true
+ },
+ "mp-toutiao" : {
+ "usingComponents" : true
+ },
+ "uniStatistics" : {
+ "enable" : false
+ },
+ "vueVersion" : "3",
+ "h5" : {
+ "sdkConfigs" : {
+ "maps" : {
+ "amap" : {
+ "key" : "29103dae675e5788eb011fb77ade8e3f",
+ "securityJsCode" : "",
+ "serviceHost" : ""
+ }
+ }
+ }
+ }
+}
diff --git a/src/miniprogram_npm/dayjs/index.js b/src/miniprogram_npm/dayjs/index.js
new file mode 100644
index 0000000..4dad4de
--- /dev/null
+++ b/src/miniprogram_npm/dayjs/index.js
@@ -0,0 +1,518 @@
+module.exports = (function () {
+ var __MODS__ = {};
+ var __DEFINE__ = function (modId, func, req) {
+ var m = {
+ exports: {},
+ _tempexports: {}
+ };
+ __MODS__[modId] = {
+ status: 0,
+ func: func,
+ req: req,
+ m: m
+ };
+ };
+ var __REQUIRE__ = function (modId, source) {
+ if (!__MODS__[modId]) {
+ return require(source);
+ }
+ if (!__MODS__[modId].status) {
+ var m = __MODS__[modId].m;
+ m._exports = m._tempexports;
+ var desp = Object.getOwnPropertyDescriptor(m, 'exports');
+ if (desp && desp.configurable) {
+ Object.defineProperty(m, 'exports', {
+ set: function (val) {
+ if (typeof val === 'object' && val !== m._exports) {
+ m._exports.__proto__ = val.__proto__;
+ Object.keys(val).forEach(function (k) {
+ m._exports[k] = val[k];
+ });
+ }
+ m._tempexports = val;
+ },
+ get: function () {
+ return m._tempexports;
+ }
+ });
+ }
+ __MODS__[modId].status = 1;
+ __MODS__[modId].func(__MODS__[modId].req, m, m.exports);
+ }
+ return __MODS__[modId].m.exports;
+ };
+ __DEFINE__(
+ 1683361815807,
+ function (require, module, exports) {
+ !(function (t, e) {
+ if ('object' == typeof exports && 'undefined' != typeof module) {
+ module.exports = e();
+ } else {
+ if ('function' == typeof define && define.amd) {
+ define(e);
+ } else {
+ (t = 'undefined' != typeof globalThis ? globalThis : t || self).dayjs = e();
+ }
+ }
+ })(this, function () {
+ var t = 1000;
+ var e = 60000;
+ var n = 3600000;
+ var r = 'millisecond';
+ var i = 'second';
+ var s = 'minute';
+ var u = 'hour';
+ var a = 'day';
+ var o = 'week';
+ var f = 'month';
+ var h = 'quarter';
+ var c = 'year';
+ var d = 'date';
+ var l = 'Invalid Date';
+ var $ = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/;
+ var y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g;
+ var M = {
+ name: 'en',
+ weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ ordinal: function (t) {
+ var e = ['th', 'st', 'nd', 'rd'];
+ var n = t % 100;
+ return '[' + t + (e[(n - 20) % 10] || e[n] || e[0]) + ']';
+ }
+ };
+ var m = function (t, e, n) {
+ var r = String(t);
+ return !r || r.length >= e ? t : '' + Array(e + 1 - r.length).join(n) + t;
+ };
+ var v = {
+ s: m,
+ z: function (t) {
+ var e = -t.utcOffset();
+ var n = Math.abs(e);
+ var r = Math.floor(n / 60);
+ var i = n % 60;
+ return (e <= 0 ? '+' : '-') + m(r, 2, '0') + ':' + m(i, 2, '0');
+ },
+ m: function t(e, n) {
+ if (e.date() < n.date()) {
+ return -t(n, e);
+ }
+ var r = 12 * (n.year() - e.year()) + (n.month() - e.month());
+ var i = e.clone().add(r, f);
+ var s = n - i < 0;
+ var u = e.clone().add(r + (s ? -1 : 1), f);
+ return +(-(r + (n - i) / (s ? i - u : u - i)) || 0);
+ },
+ a: function (t) {
+ return t < 0 ? Math.ceil(t) || 0 : Math.floor(t);
+ },
+ p: function (t) {
+ return (
+ {
+ M: f,
+ y: c,
+ w: o,
+ d: a,
+ D: d,
+ h: u,
+ m: s,
+ s: i,
+ ms: r,
+ Q: h
+ }[t] ||
+ String(t || '')
+ .toLowerCase()
+ .replace(/s$/, '')
+ );
+ },
+ u: function (t) {
+ return void 0 === t;
+ }
+ };
+ var g = 'en';
+ var D = {};
+ D[g] = M;
+ var p = function (t) {
+ return t instanceof _;
+ };
+ var S = function t(e, n, r) {
+ var i;
+ if (!e) {
+ return g;
+ }
+ if ('string' == typeof e) {
+ var s = e.toLowerCase();
+ if (D[s]) {
+ i = s;
+ }
+ if (n) {
+ D[s] = n;
+ i = s;
+ }
+ var u = e.split('-');
+ if (!i && u.length > 1) {
+ return t(u[0]);
+ }
+ } else {
+ var a = e.name;
+ D[a] = e;
+ i = a;
+ }
+ if (!r && i) {
+ g = i;
+ }
+ return i || (!r && g);
+ };
+ var w = function (t, e) {
+ if (p(t)) {
+ return t.clone();
+ }
+ if ('object' == typeof e) {
+ var n = e;
+ } else {
+ var n = {};
+ }
+ n.date = t;
+ n.args = arguments;
+ return new _(n);
+ };
+ var O = v;
+ O.l = S;
+ O.i = p;
+ O.w = function (t, e) {
+ return w(t, {
+ locale: e.$L,
+ utc: e.$u,
+ x: e.$x,
+ $offset: e.$offset
+ });
+ };
+ var _ = (function () {
+ function M(t) {
+ this.$L = S(t.locale, null, true);
+ this.parse(t);
+ }
+ var m = M.prototype;
+ m.parse = function (t) {
+ this.$d = (function (t) {
+ var e = t.date;
+ var n = t.utc;
+ if (null === e) {
+ return new Date(NaN);
+ }
+ if (O.u(e)) {
+ return new Date();
+ }
+ if (e instanceof Date) {
+ return new Date(e);
+ }
+ if ('string' == typeof e && !/Z$/i.test(e)) {
+ var r = e.match($);
+ if (r) {
+ var i = r[2] - 1 || 0;
+ var s = (r[7] || '0').substring(0, 3);
+ return n
+ ? new Date(Date.UTC(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s))
+ : new Date(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s);
+ }
+ }
+ return new Date(e);
+ })(t);
+ this.$x = t.x || {};
+ this.init();
+ };
+ m.init = function () {
+ var t = this.$d;
+ this.$y = t.getFullYear();
+ this.$M = t.getMonth();
+ this.$D = t.getDate();
+ this.$W = t.getDay();
+ this.$H = t.getHours();
+ this.$m = t.getMinutes();
+ this.$s = t.getSeconds();
+ this.$ms = t.getMilliseconds();
+ };
+ m.$utils = function () {
+ return O;
+ };
+ m.isValid = function () {
+ return !(this.$d.toString() === l);
+ };
+ m.isSame = function (t, e) {
+ var n = w(t);
+ return this.startOf(e) <= n && n <= this.endOf(e);
+ };
+ m.isAfter = function (t, e) {
+ return w(t) < this.startOf(e);
+ };
+ m.isBefore = function (t, e) {
+ return this.endOf(e) < w(t);
+ };
+ m.$g = function (t, e, n) {
+ return O.u(t) ? this[e] : this.set(n, t);
+ };
+ m.unix = function () {
+ return Math.floor(this.valueOf() / 1000);
+ };
+ m.valueOf = function () {
+ return this.$d.getTime();
+ };
+ m.startOf = function (t, e) {
+ var that = this;
+ var r = !!O.u(e) || e;
+ var h = O.p(t);
+ var l = function (t, e) {
+ var i = O.w(that.$u ? Date.UTC(that.$y, e, t) : new Date(that.$y, e, t), that);
+ return r ? i : i.endOf(a);
+ };
+ var $ = function (t, e) {
+ return O.w(that.toDate()[t].apply(that.toDate('s'), (r ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e)), that);
+ };
+ var y = this.$W;
+ var M = this.$M;
+ var m = this.$D;
+ var v = 'set' + (this.$u ? 'UTC' : '');
+ switch (h) {
+ case c:
+ return r ? l(1, 0) : l(31, 11);
+ case f:
+ return r ? l(1, M) : l(0, M + 1);
+ case o:
+ var g = this.$locale().weekStart || 0;
+ var D = (y < g ? y + 7 : y) - g;
+ return l(r ? m - D : m + (6 - D), M);
+ case a:
+ case d:
+ return $(v + 'Hours', 0);
+ case u:
+ return $(v + 'Minutes', 1);
+ case s:
+ return $(v + 'Seconds', 2);
+ case i:
+ return $(v + 'Milliseconds', 3);
+ default:
+ return this.clone();
+ }
+ };
+ m.endOf = function (t) {
+ return this.startOf(t, false);
+ };
+ m.$set = function (t, e) {
+ var n;
+ var o = O.p(t);
+ var h = 'set' + (this.$u ? 'UTC' : '');
+ var l = ((n = {}),
+ (n[a] = h + 'Date'),
+ (n[d] = h + 'Date'),
+ (n[f] = h + 'Month'),
+ (n[c] = h + 'FullYear'),
+ (n[u] = h + 'Hours'),
+ (n[s] = h + 'Minutes'),
+ (n[i] = h + 'Seconds'),
+ (n[r] = h + 'Milliseconds'),
+ n)[o];
+ if (o === a) {
+ var $ = this.$D + (e - this.$W);
+ } else {
+ var $ = e;
+ }
+ if (o === f || o === c) {
+ var y = this.clone().set(d, 1);
+ y.$d[l]($);
+ y.init();
+ this.$d = y.set(d, Math.min(this.$D, y.daysInMonth())).$d;
+ } else {
+ if (l) {
+ this.$d[l]($);
+ }
+ }
+ this.init();
+ return this;
+ };
+ m.set = function (t, e) {
+ return this.clone().$set(t, e);
+ };
+ m.get = function (t) {
+ return this[O.p(t)]();
+ };
+ m.add = function (r, h) {
+ var d;
+ var that = this;
+ r = Number(r);
+ var $ = O.p(h);
+ var y = function (t) {
+ var e = w(that);
+ return O.w(e.date(e.date() + Math.round(t * r)), that);
+ };
+ if ($ === f) {
+ return this.set(f, this.$M + r);
+ }
+ if ($ === c) {
+ return this.set(c, this.$y + r);
+ }
+ if ($ === a) {
+ return y(1);
+ }
+ if ($ === o) {
+ return y(7);
+ }
+ var M = ((d = {}), (d[s] = e), (d[u] = n), (d[i] = t), d)[$] || 1;
+ var m = this.$d.getTime() + r * M;
+ return O.w(m, this);
+ };
+ m.subtract = function (t, e) {
+ return this.add(-1 * t, e);
+ };
+ m.format = function (t) {
+ var that = this;
+ var n = this.$locale();
+ if (!this.isValid()) {
+ return n.invalidDate || l;
+ }
+ var r = t || 'YYYY-MM-DDTHH:mm:ssZ';
+ var i = O.z(this);
+ var s = this.$H;
+ var u = this.$m;
+ var a = this.$M;
+ var o = n.weekdays;
+ var f = n.months;
+ var h = function (t, n, i, s) {
+ return (t && (t[n] || t(that, r))) || i[n].slice(0, s);
+ };
+ var c = function (t) {
+ return O.s(s % 12 || 12, t, '0');
+ };
+ var d =
+ n.meridiem ||
+ function (t, e, n) {
+ var r = t < 12 ? 'AM' : 'PM';
+ return n ? r.toLowerCase() : r;
+ };
+ var $ = {
+ YY: String(this.$y).slice(-2),
+ YYYY: this.$y,
+ M: a + 1,
+ MM: O.s(a + 1, 2, '0'),
+ MMM: h(n.monthsShort, a, f, 3),
+ MMMM: h(f, a),
+ D: this.$D,
+ DD: O.s(this.$D, 2, '0'),
+ d: String(this.$W),
+ dd: h(n.weekdaysMin, this.$W, o, 2),
+ ddd: h(n.weekdaysShort, this.$W, o, 3),
+ dddd: o[this.$W],
+ H: String(s),
+ HH: O.s(s, 2, '0'),
+ h: c(1),
+ hh: c(2),
+ a: d(s, u, true),
+ A: d(s, u, false),
+ m: String(u),
+ mm: O.s(u, 2, '0'),
+ s: String(this.$s),
+ ss: O.s(this.$s, 2, '0'),
+ SSS: O.s(this.$ms, 3, '0'),
+ Z: i
+ };
+ return r.replace(y, function (t, e) {
+ return e || $[t] || i.replace(':', '');
+ });
+ };
+ m.utcOffset = function () {
+ return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);
+ };
+ m.diff = function (r, d, l) {
+ var $;
+ var y = O.p(d);
+ var M = w(r);
+ var m = (M.utcOffset() - this.utcOffset()) * e;
+ var v = this - M;
+ var g = O.m(this, M);
+ g =
+ (($ = {}),
+ ($[c] = g / 12),
+ ($[f] = g),
+ ($[h] = g / 3),
+ ($[o] = (v - m) / 604800000),
+ ($[a] = (v - m) / 86400000),
+ ($[u] = v / n),
+ ($[s] = v / e),
+ ($[i] = v / t),
+ $)[y] || v;
+ return l ? g : O.a(g);
+ };
+ m.daysInMonth = function () {
+ return this.endOf(f).$D;
+ };
+ m.$locale = function () {
+ return D[this.$L];
+ };
+ m.locale = function (t, e) {
+ if (!t) {
+ return this.$L;
+ }
+ var n = this.clone();
+ var r = S(t, e, true);
+ if (r) {
+ n.$L = r;
+ }
+ return n;
+ };
+ m.clone = function () {
+ return O.w(this.$d, this);
+ };
+ m.toDate = function () {
+ return new Date(this.valueOf());
+ };
+ m.toJSON = function () {
+ return this.isValid() ? this.toISOString() : null;
+ };
+ m.toISOString = function () {
+ return this.$d.toISOString();
+ };
+ m.toString = function () {
+ return this.$d.toUTCString();
+ };
+ return M;
+ })();
+ var T = _.prototype;
+ w.prototype = T;
+ [
+ ['$ms', r],
+ ['$s', i],
+ ['$m', s],
+ ['$H', u],
+ ['$W', a],
+ ['$M', f],
+ ['$y', c],
+ ['$D', d]
+ ].forEach(function (t) {
+ T[t[1]] = function (e) {
+ return this.$g(e, t[0], t[1]);
+ };
+ });
+ w.extend = function (t, e) {
+ t.$i || (t(e, _, w), (t.$i = true));
+ return w;
+ };
+ w.locale = S;
+ w.isDayjs = p;
+ w.unix = function (t) {
+ return w(1000 * t);
+ };
+ w.en = D[g];
+ w.Ls = D;
+ w.p = {};
+ return w;
+ });
+ },
+ function (modId) {
+ var map = {};
+ return __REQUIRE__(map[modId], modId);
+ }
+ );
+ return __REQUIRE__(1683361815807);
+})();
+//miniprogram-npm-outsideDeps=[]
+//# sourceMappingURL=index.js.map
diff --git a/src/miniprogram_npm/dayjs/index.js.map b/src/miniprogram_npm/dayjs/index.js.map
new file mode 100644
index 0000000..66ff3ab
--- /dev/null
+++ b/src/miniprogram_npm/dayjs/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["dayjs.min.js"],"names":[],"mappings":";;;;;;;AAAA","file":"index.js","sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=v;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)
+
+
+
+
+
+
+
+
diff --git a/src/miniprogram_npm/mp-html/node/node-el.vue b/src/miniprogram_npm/mp-html/node/node-el.vue
new file mode 100644
index 0000000..27bae75
--- /dev/null
+++ b/src/miniprogram_npm/mp-html/node/node-el.vue
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+ {{ n.text }}
+ \n
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/miniprogram_npm/mp-html/node/node.vue b/src/miniprogram_npm/mp-html/node/node.vue
new file mode 100644
index 0000000..2b687d0
--- /dev/null
+++ b/src/miniprogram_npm/mp-html/node/node.vue
@@ -0,0 +1,479 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/miniprogram_npm/mp-html/parser.js b/src/miniprogram_npm/mp-html/parser.js
new file mode 100644
index 0000000..f219735
--- /dev/null
+++ b/src/miniprogram_npm/mp-html/parser.js
@@ -0,0 +1,410 @@
+"use strict";
+function t(t) {
+ for (var i = Object.create(null), e = t.split(","), s = e.length; s--;) i[e[s]] = !0;
+ return i;
+}
+function i(t, i) {
+ for (var e = t.indexOf("&"); -1 !== e;) {
+ var s = t.indexOf(";", e + 3),
+ a = void 0;
+ if (-1 === s) break;
+ "#" === t[e + 1] ? (a = parseInt(("x" === t[e + 2] ? "0" : "") + t.substring(e + 2, s)), isNaN(a) || (t = t.substr(0, e) + String.fromCharCode(a) + t.substr(s + 1))) : (a = t.substring(e + 1, s), (n.entities[a] || "amp" === a && i) && (t = t.substr(0, e) + (n.entities[a] || "&") + t.substr(s + 1))), e = t.indexOf("&", e + 1);
+ }
+ return t;
+}
+function e(t) {
+ for (var i = t.length - 1, e = i; e >= -1; e--) (-1 === e || t[e].c || !t[e].name || "div" !== t[e].name && "p" !== t[e].name && "h" !== t[e].name[0] || (t[e].attrs.style || "").includes("inline")) && (i - e >= 5 && t.splice(e + 1, i - e, {
+ name: "div",
+ attrs: {},
+ children: t.slice(e + 1, i + 1)
+ }), i = e - 1);
+}
+function s(t) {
+ this.options = t.data || {}, this.tagStyle = Object.assign({}, n.tagStyle, this.options.tagStyle), this.imgList = t.imgList || [], this.imgList._unloadimgs = 0, this.plugins = t.plugins || [], this.attrs = Object.create(null), this.stack = [], this.nodes = [], this.pre = (this.options.containerStyle || "").includes("white-space") && this.options.containerStyle.includes("pre") ? 2 : 0;
+}
+function a(t) {
+ this.handler = t;
+}
+var n = {
+ trustTags: t("a,abbr,ad,audio,b,blockquote,br,code,col,colgroup,dd,del,dl,dt,div,em,fieldset,h1,h2,h3,h4,h5,h6,hr,i,img,ins,label,legend,li,ol,p,q,ruby,rt,source,span,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,title,ul,video"),
+ blockTags: t("address,article,aside,body,caption,center,cite,footer,header,html,nav,pre,section"),
+ ignoreTags: t("area,base,canvas,embed,frame,head,iframe,input,link,map,meta,param,rp,script,source,style,textarea,title,track,wbr"),
+ voidTags: t("area,base,br,col,circle,ellipse,embed,frame,hr,img,input,line,link,meta,param,path,polygon,rect,source,track,use,wbr"),
+ entities: {
+ lt: "<",
+ gt: ">",
+ quot: '"',
+ apos: "'",
+ ensp: " ",
+ emsp: " ",
+ nbsp: " ",
+ semi: ";",
+ ndash: "–",
+ mdash: "—",
+ middot: "·",
+ lsquo: "‘",
+ rsquo: "’",
+ ldquo: "“",
+ rdquo: "”",
+ bull: "•",
+ hellip: "…",
+ larr: "←",
+ uarr: "↑",
+ rarr: "→",
+ darr: "↓"
+ },
+ tagStyle: {
+ address: "font-style:italic",
+ big: "display:inline;font-size:1.2em",
+ caption: "display:table-caption;text-align:center",
+ center: "text-align:center",
+ cite: "font-style:italic",
+ dd: "margin-left:40px",
+ mark: "background-color:yellow",
+ pre: "font-family:monospace;white-space:pre",
+ s: "text-decoration:line-through",
+ small: "display:inline;font-size:0.8em",
+ strike: "text-decoration:line-through",
+ u: "text-decoration:underline"
+ },
+ svgDict: {
+ animatetransform: "animateTransform",
+ lineargradient: "linearGradient",
+ viewbox: "viewBox",
+ attributename: "attributeName",
+ repeatcount: "repeatCount",
+ repeatdur: "repeatDur"
+ }
+ },
+ r = {},
+ o = uni.getSystemInfoSync(),
+ h = o.windowWidth,
+ l = o.system,
+ c = t(" ,\r,\n,\t,\f"),
+ d = 0;
+s.prototype.parse = function (t) {
+ for (var i = this.plugins.length; i--;) this.plugins[i].onUpdate && (t = this.plugins[i].onUpdate(t, n) || t);
+ for (new a(this).parse(t); this.stack.length;) this.popNode();
+ return this.nodes.length > 50 && e(this.nodes), this.nodes;
+}, s.prototype.expose = function () {
+ for (var t = this.stack.length; t--;) {
+ var i = this.stack[t];
+ if (i.c || "a" === i.name || "video" === i.name || "audio" === i.name) return;
+ i.c = 1;
+ }
+}, s.prototype.hook = function (t) {
+ for (var i = this.plugins.length; i--;) if (this.plugins[i].onParse && !1 === this.plugins[i].onParse(t, this)) return !1;
+ return !0;
+}, s.prototype.getUrl = function (t) {
+ var i = this.options.domain;
+ return "/" === t[0] ? "/" === t[1] ? t = (i ? i.split("://")[0] : "http") + ":" + t : i && (t = i + t) : !i || t.includes("data:") || t.includes("://") || (t = i + "/" + t), t;
+}, s.prototype.parseStyle = function (t) {
+ var i = t.attrs,
+ e = (this.tagStyle[t.name] || "").split(";").concat((i.style || "").split(";")),
+ s = {},
+ a = "";
+ i.id && !this.xml && (this.options.useAnchor ? this.expose() : "img" !== t.name && "a" !== t.name && "video" !== t.name && "audio" !== t.name && (i.id = void 0)), i.width && (s.width = parseFloat(i.width) + (i.width.includes("%") ? "%" : "px"), i.width = void 0), i.height && (s.height = parseFloat(i.height) + (i.height.includes("%") ? "%" : "px"), i.height = void 0);
+ for (var n = 0, r = e.length; n < r; n++) {
+ var o = e[n].split(":");
+ if (!(o.length < 2)) {
+ var l = o.shift().trim().toLowerCase(),
+ d = o.join(":").trim();
+ if ("-" === d[0] && d.lastIndexOf("-") > 0 || d.includes("safe")) a += ";".concat(l, ":").concat(d);else if (!s[l] || d.includes("import") || !s[l].includes("import")) {
+ if (d.includes("url")) {
+ var p = d.indexOf("(") + 1;
+ if (p) {
+ for (; '"' === d[p] || "'" === d[p] || c[d[p]];) p++;
+ d = d.substr(0, p) + this.getUrl(d.substr(p));
+ }
+ } else d.includes("rpx") && (d = d.replace(/[0-9.]+\s*rpx/g, function (t) {
+ return parseFloat(t) * h / 750 + "px";
+ }));
+ s[l] = d;
+ }
+ }
+ }
+ return t.attrs.style = a, s;
+}, s.prototype.onTagName = function (t) {
+ this.tagName = this.xml ? t : t.toLowerCase(), "svg" === this.tagName && (this.xml = (this.xml || 0) + 1);
+}, s.prototype.onAttrName = function (t) {
+ t = this.xml ? t : t.toLowerCase(), "data-" === t.substr(0, 5) ? "data-src" !== t || this.attrs.src ? "img" === this.tagName || "a" === this.tagName ? this.attrName = t : this.attrName = void 0 : this.attrName = "src" : (this.attrName = t, this.attrs[t] = "T");
+}, s.prototype.onAttrVal = function (t) {
+ var e = this.attrName || "";
+ "style" === e || "href" === e ? this.attrs[e] = i(t, !0) : e.includes("src") ? this.attrs[e] = this.getUrl(i(t, !0)) : e && (this.attrs[e] = t);
+}, s.prototype.onOpenTag = function (t) {
+ var i = Object.create(null);
+ i.name = this.tagName, i.attrs = this.attrs, this.attrs = Object.create(null);
+ var e = i.attrs,
+ s = this.stack[this.stack.length - 1],
+ a = s ? s.children : this.nodes,
+ o = this.xml ? t : n.voidTags[i.name];
+ if (r[i.name] && (e.class = r[i.name] + (e.class ? " " + e.class : "")), "embed" === i.name) {
+ var l = e.src || "";
+ l.includes(".mp4") || l.includes(".3gp") || l.includes(".m3u8") || (e.type || "").includes("video") ? i.name = "video" : (l.includes(".mp3") || l.includes(".wav") || l.includes(".aac") || l.includes(".m4a") || (e.type || "").includes("audio")) && (i.name = "audio"), e.autostart && (e.autoplay = "T"), e.controls = "T";
+ }
+ if ("video" !== i.name && "audio" !== i.name || ("video" !== i.name || e.id || (e.id = "v" + d++), e.controls || e.autoplay || (e.controls = "T"), i.src = [], e.src && (i.src.push(e.src), e.src = void 0), this.expose()), o) {
+ if (!this.hook(i) || n.ignoreTags[i.name]) return void ("base" !== i.name || this.options.domain ? "source" === i.name && s && ("video" === s.name || "audio" === s.name) && e.src && s.src.push(e.src) : this.options.domain = e.href);
+ var c = this.parseStyle(i);
+ if ("img" === i.name) {
+ if (e.src && (e.src.includes("webp") && (i.webp = "T"), e.src.includes("data:") && !e["original-src"] && (e.ignore = "T"), !e.ignore || i.webp || e.src.includes("cloud://"))) {
+ for (var p = this.stack.length; p--;) {
+ var u = this.stack[p];
+ "table" !== u.name || i.webp || e.src.includes("cloud://") || (!c.display || c.display.includes("inline") ? i.t = "inline-block" : i.t = c.display, c.display = void 0);
+ var g = u.attrs.style || "";
+ if (!g.includes("flex:") || g.includes("flex:0") || g.includes("flex: 0") || c.width && !(parseInt(c.width) > 100)) {
+ if (g.includes("flex") && "100%" === c.width) for (var f = p + 1; f < this.stack.length; f++) {
+ var m = this.stack[f].attrs.style || "";
+ if (!m.includes(";width") && !m.includes(" width") && 0 !== m.indexOf("width")) {
+ c.width = "";
+ break;
+ }
+ } else g.includes("inline-block") && (c.width && "%" === c.width[c.width.length - 1] ? (u.attrs.style += ";max-width:" + c.width, c.width = "") : u.attrs.style += ";max-width:100%");
+ } else {
+ c.width = "100% !important", c.height = "";
+ for (var v = p + 1; v < this.stack.length; v++) this.stack[v].attrs.style = (this.stack[v].attrs.style || "").replace("inline-", "");
+ }
+ "a" === u.name ? i.a = u.attrs : u.c = 1;
+ }
+ i.i = this.imgList.length;
+ var y = e["original-src"] || e.src;
+ if (this.imgList.includes(y)) {
+ var x = y.indexOf("://");
+ if (-1 !== x) {
+ x += 3;
+ for (var b = y.substr(0, x); x < y.length && "/" !== y[x]; x++) b += Math.random() > .5 ? y[x].toUpperCase() : y[x];
+ b += y.substr(x), y = b;
+ }
+ }
+ this.imgList.push(y), i.t || (this.imgList._unloadimgs += 1);
+ }
+ "inline" === c.display && (c.display = ""), e.ignore && (c["max-width"] = c["max-width"] || "100%", e.style += ";-webkit-touch-callout:none"), parseInt(c.width) > h && (c.height = void 0), isNaN(parseInt(c.width)) || (i.w = "T"), !isNaN(parseInt(c.height)) && (!c.height.includes("%") || s && (s.attrs.style || "").includes("height")) && (i.h = "T");
+ } else if ("svg" === i.name) return a.push(i), this.stack.push(i), void this.popNode();
+ for (var w in c) c[w] && (e.style += ";".concat(w, ":").concat(c[w].replace(" !important", "")));
+ e.style = e.style.substr(1) || void 0;
+ } else ("pre" === i.name || (e.style || "").includes("white-space") && e.style.includes("pre")) && 2 !== this.pre && (this.pre = i.pre = 1), i.children = [], this.stack.push(i);
+ a.push(i);
+}, s.prototype.onCloseTag = function (t) {
+ t = this.xml ? t : t.toLowerCase();
+ var i;
+ for (i = this.stack.length; i-- && this.stack[i].name !== t;);
+ if (-1 !== i) for (; this.stack.length > i;) this.popNode();else if ("p" === t || "br" === t) {
+ var e = this.stack.length ? this.stack[this.stack.length - 1].children : this.nodes;
+ e.push({
+ name: t,
+ attrs: {
+ class: r[t],
+ style: this.tagStyle[t]
+ }
+ });
+ }
+}, s.prototype.popNode = function () {
+ var t = this.stack.pop(),
+ i = t.attrs,
+ s = t.children,
+ a = this.stack[this.stack.length - 1],
+ r = a ? a.children : this.nodes;
+ if (!this.hook(t) || n.ignoreTags[t.name]) return "title" === t.name && s.length && "text" === s[0].type && this.options.setTitle && uni.setNavigationBarTitle({
+ title: s[0].text
+ }), void r.pop();
+ if (t.pre && 2 !== this.pre) {
+ this.pre = t.pre = void 0;
+ for (var o = this.stack.length; o--;) this.stack[o].pre && (this.pre = 1);
+ }
+ if ("svg" === t.name) {
+ if (this.xml > 1) return void this.xml--;
+ var l = "",
+ c = i.style;
+ return i.style = "", i.xmlns = "http://www.w3.org/2000/svg", function t(i) {
+ if ("text" === i.type) return void (l += i.text);
+ var e = n.svgDict[i.name] || i.name;
+ l += "<" + e;
+ for (var s in i.attrs) {
+ var a = i.attrs[s];
+ a && (l += " ".concat(n.svgDict[s] || s, '="').concat(a, '"'));
+ }
+ if (i.children) {
+ l += ">";
+ for (var r = 0; r < i.children.length; r++) t(i.children[r]);
+ l += "" + e + ">";
+ } else l += "/>";
+ }(t), t.name = "img", t.attrs = {
+ src: "data:image/svg+xml;utf8," + l.replace(/#/g, "%23"),
+ style: c,
+ ignore: "T"
+ }, t.children = void 0, void (this.xml = !1);
+ }
+ var d = {};
+ if (i.align && ("table" === t.name ? "center" === i.align ? d["margin-inline-start"] = d["margin-inline-end"] = "auto" : d.float = i.align : d["text-align"] = i.align, i.align = void 0), i.dir && (d.direction = i.dir, i.dir = void 0), "font" === t.name && (i.color && (d.color = i.color, i.color = void 0), i.face && (d["font-family"] = i.face, i.face = void 0), i.size)) {
+ var p = parseInt(i.size);
+ isNaN(p) || (p < 1 ? p = 1 : p > 7 && (p = 7), d["font-size"] = ["x-small", "small", "medium", "large", "x-large", "xx-large", "xxx-large"][p - 1]), i.size = void 0;
+ }
+ if ((i.class || "").includes("align-center") && (d["text-align"] = "center"), Object.assign(d, this.parseStyle(t)), "table" !== t.name && parseInt(d.width) > h && (d["max-width"] = "100%", d["box-sizing"] = "border-box"), n.blockTags[t.name]) t.name = "div";else if (n.trustTags[t.name] || this.xml) {
+ if ("a" === t.name || "ad" === t.name) this.expose();else if ("video" === t.name || "audio" === t.name) (d.height || "").includes("auto") && (d.height = void 0), t.children = void 0;else if ("ul" !== t.name && "ol" !== t.name || !t.c) {
+ if ("table" === t.name) {
+ var u = parseFloat(i.cellpadding),
+ g = parseFloat(i.cellspacing),
+ f = parseFloat(i.border),
+ m = d["border-color"],
+ v = d["border-style"];
+ if (t.c && (isNaN(u) && (u = 2), isNaN(g) && (g = 2)), f && (i.style += ";border:".concat(f, "px ").concat(v || "solid", " ").concat(m || "gray")), t.flag && t.c) {
+ t.flag = void 0, d.display = "grid", g ? (d["grid-gap"] = g + "px", d.padding = g + "px") : f && (i.style += ";border-left:0;border-top:0");
+ var y = [],
+ x = [],
+ b = [],
+ w = {};
+ !function t(i) {
+ for (var e = 0; e < i.length; e++) "tr" === i[e].name ? x.push(i[e]) : t(i[e].children || []);
+ }(s);
+ for (var k = 1; k <= x.length; k++) {
+ for (var N = 1, T = 0; T < x[k - 1].children.length; T++) {
+ var O = x[k - 1].children[T];
+ if ("td" === O.name || "th" === O.name) {
+ for (; w[k + "." + N];) N++;
+ O.c = 1;
+ var C = O.attrs.style || "",
+ S = C.indexOf("width") ? C.indexOf(";width") : 0;
+ if (-1 !== S) {
+ var I = C.indexOf(";", S + 6);
+ -1 === I && (I = C.length), O.attrs.colspan || (y[N] = C.substring(S ? S + 7 : 6, I)), C = C.substr(0, S) + C.substr(I);
+ }
+ if (C += ";display:flex", -1 !== (S = C.indexOf("vertical-align"))) {
+ var j = C.substr(S + 15, 10);
+ j.includes("middle") ? C += ";align-items:center" : j.includes("bottom") && (C += ";align-items:flex-end");
+ } else C += ";align-items:center";
+ if (-1 !== (S = C.indexOf("text-align"))) {
+ var A = C.substr(S + 11, 10);
+ A.includes("center") ? C += ";justify-content: center" : A.includes("right") && (C += ";justify-content: right");
+ }
+ if (C = (f ? ";border:".concat(f, "px ").concat(v || "solid", " ").concat(m || "gray") + (g ? "" : ";border-right:0;border-bottom:0") : "") + (u ? ";padding:".concat(u, "px") : "") + ";" + C, O.attrs.colspan && (C += ";grid-column-start:".concat(N, ";grid-column-end:").concat(N + parseInt(O.attrs.colspan)), O.attrs.rowspan || (C += ";grid-row-start:".concat(k, ";grid-row-end:").concat(k + 1)), N += parseInt(O.attrs.colspan) - 1), O.attrs.rowspan) {
+ C += ";grid-row-start:".concat(k, ";grid-row-end:").concat(k + parseInt(O.attrs.rowspan)), O.attrs.colspan || (C += ";grid-column-start:".concat(N, ";grid-column-end:").concat(N + 1));
+ for (var L = 1; L < O.attrs.rowspan; L++) for (var z = 0; z < (O.attrs.colspan || 1); z++) w[k + L + "." + (N - z)] = 1;
+ }
+ C && (O.attrs.style = C), b.push(O), N++;
+ }
+ }
+ if (1 === k) {
+ for (var q = "", U = 1; U < N; U++) q += (y[U] ? y[U] : "auto") + " ";
+ d["grid-template-columns"] = q;
+ }
+ }
+ t.children = b;
+ } else t.c && (d.display = "table"), isNaN(g) || (d["border-spacing"] = g + "px"), (f || u || t.c) && function i(e) {
+ for (var s = 0; s < e.length; s++) {
+ var a = e[s];
+ t.c && (a.c = 1), "th" === a.name || "td" === a.name ? (f && (a.attrs.style = "border:".concat(f, "px ").concat(v || "solid", " ").concat(m || "gray", ";").concat(a.attrs.style || "")), u && (a.attrs.style = "padding:".concat(u, "px;").concat(a.attrs.style || ""))) : a.children && i(a.children);
+ }
+ }(s);
+ if (this.options.scrollTable && !(i.style || "").includes("inline")) {
+ var F = Object.assign({}, t);
+ t.name = "div", t.attrs = {
+ style: "overflow-x:auto;padding:1px"
+ }, t.children = [F], i = F.attrs;
+ }
+ } else if ("td" !== t.name && "th" !== t.name || !i.colspan && !i.rowspan) {
+ if ("ruby" === t.name) {
+ t.name = "span";
+ for (var V = 0; V < s.length - 1; V++) "text" === s[V].type && "rt" === s[V + 1].name && (s[V] = {
+ name: "span",
+ attrs: {
+ style: "display:inline-block;text-align:center"
+ },
+ children: [{
+ name: "div",
+ attrs: {
+ style: "font-size:50%;" + (s[V + 1].attrs.style || "")
+ },
+ children: s[V + 1].children
+ }, s[V]]
+ }, s.splice(V + 1, 1));
+ }
+ } else for (var D = this.stack.length; D--;) if ("table" === this.stack[D].name) {
+ this.stack[D].flag = 1;
+ break;
+ }
+ } else {
+ var B = {
+ a: "lower-alpha",
+ A: "upper-alpha",
+ i: "lower-roman",
+ I: "upper-roman"
+ };
+ B[i.type] && (i.style += ";list-style-type:" + B[i.type], i.type = void 0), t.c = 1;
+ for (var P = s.length; P--;) "li" === s[P].name && (s[P].c = 1);
+ }
+ } else t.name = "span";
+ if ((d.display || "").includes("flex") && !t.c) for (var Z = s.length; Z--;) {
+ var _ = s[Z];
+ _.f && (_.attrs.style = (_.attrs.style || "") + _.f, _.f = void 0);
+ }
+ var G = a && ((a.attrs.style || "").includes("flex") || (a.attrs.style || "").includes("grid")) && !t.c && !(d.display || "").includes("inline");
+ G && (t.f = ";max-width:100%"), s.length >= 50 && t.c && !(d.display || "").includes("flex") && e(s);
+ for (var M in d) if (d[M]) {
+ var W = ";".concat(M, ":").concat(d[M].replace(" !important", ""));
+ G && (M.includes("flex") && "flex-direction" !== M || "align-self" === M || M.includes("grid") || "-" === d[M][0] || M.includes("width") && W.includes("%")) ? (t.f += W, "width" === M && (i.style += ";width:100%")) : i.style += W;
+ }
+ i.style = i.style.substr(1) || void 0;
+}, s.prototype.onText = function (t) {
+ if (!this.pre) {
+ for (var e, s = "", a = 0, n = t.length; a < n; a++) c[t[a]] ? (" " !== s[s.length - 1] && (s += " "), "\n" !== t[a] || e || (e = !0)) : s += t[a];
+ if (" " === s && e) return;
+ t = s;
+ }
+ var r = Object.create(null);
+ if (r.type = "text", r.text = i(t), this.hook(r)) {
+ "force" === this.options.selectable && l.includes("iOS") && !uni.canIUse("rich-text.user-select") && this.expose();
+ (this.stack.length ? this.stack[this.stack.length - 1].children : this.nodes).push(r);
+ }
+}, a.prototype.parse = function (t) {
+ this.content = t || "", this.i = 0, this.start = 0, this.state = this.text;
+ for (var i = this.content.length; -1 !== this.i && this.i < i;) this.state();
+}, a.prototype.checkClose = function (t) {
+ var i = "/" === this.content[this.i];
+ return !!(">" === this.content[this.i] || i && ">" === this.content[this.i + 1]) && (t && this.handler[t](this.content.substring(this.start, this.i)), this.i += i ? 2 : 1, this.start = this.i, this.handler.onOpenTag(i), "script" === this.handler.tagName ? (this.i = this.content.indexOf("", this.i), -1 !== this.i && (this.i += 2, this.start = this.i), this.state = this.endTag) : this.state = this.text, !0);
+}, a.prototype.text = function () {
+ if (this.i = this.content.indexOf("<", this.i), -1 === this.i) return void (this.start < this.content.length && this.handler.onText(this.content.substring(this.start, this.content.length)));
+ var t = this.content[this.i + 1];
+ if (t >= "a" && t <= "z" || t >= "A" && t <= "Z") this.start !== this.i && this.handler.onText(this.content.substring(this.start, this.i)), this.start = ++this.i, this.state = this.tagName;else if ("/" === t || "!" === t || "?" === t) {
+ this.start !== this.i && this.handler.onText(this.content.substring(this.start, this.i));
+ var i = this.content[this.i + 2];
+ if ("/" === t && (i >= "a" && i <= "z" || i >= "A" && i <= "Z")) return this.i += 2, this.start = this.i, void (this.state = this.endTag);
+ var e = "--\x3e";
+ "!" === t && "-" === this.content[this.i + 2] && "-" === this.content[this.i + 3] || (e = ">"), this.i = this.content.indexOf(e, this.i), -1 !== this.i && (this.i += e.length, this.start = this.i);
+ } else this.i++;
+}, a.prototype.tagName = function () {
+ if (c[this.content[this.i]]) {
+ for (this.handler.onTagName(this.content.substring(this.start, this.i)); c[this.content[++this.i]];);
+ this.i < this.content.length && !this.checkClose() && (this.start = this.i, this.state = this.attrName);
+ } else this.checkClose("onTagName") || this.i++;
+}, a.prototype.attrName = function () {
+ var t = this.content[this.i];
+ if (c[t] || "=" === t) {
+ this.handler.onAttrName(this.content.substring(this.start, this.i));
+ for (var i = "=" === t, e = this.content.length; ++this.i < e;) if (t = this.content[this.i], !c[t]) {
+ if (this.checkClose()) return;
+ if (i) return this.start = this.i, void (this.state = this.attrVal);
+ if ("=" !== this.content[this.i]) return this.start = this.i, void (this.state = this.attrName);
+ i = !0;
+ }
+ } else this.checkClose("onAttrName") || this.i++;
+}, a.prototype.attrVal = function () {
+ var t = this.content[this.i],
+ i = this.content.length;
+ if ('"' === t || "'" === t) {
+ if (this.start = ++this.i, this.i = this.content.indexOf(t, this.i), -1 === this.i) return;
+ this.handler.onAttrVal(this.content.substring(this.start, this.i));
+ } else for (; this.i < i; this.i++) {
+ if (c[this.content[this.i]]) {
+ this.handler.onAttrVal(this.content.substring(this.start, this.i));
+ break;
+ }
+ if (this.checkClose("onAttrVal")) return;
+ }
+ for (; c[this.content[++this.i]];);
+ this.i < i && !this.checkClose() && (this.start = this.i, this.state = this.attrName);
+}, a.prototype.endTag = function () {
+ var t = this.content[this.i];
+ if (c[t] || ">" === t || "/" === t) {
+ if (this.handler.onCloseTag(this.content.substring(this.start, this.i)), ">" !== t && (this.i = this.content.indexOf(">", this.i), -1 === this.i)) return;
+ this.start = ++this.i, this.state = this.text;
+ } else this.i++;
+}, module.exports = s;
\ No newline at end of file
diff --git a/src/packages/enterprise/pages/create-enterprise/create-enterprise.vue b/src/packages/enterprise/pages/create-enterprise/create-enterprise.vue
new file mode 100644
index 0000000..15dc371
--- /dev/null
+++ b/src/packages/enterprise/pages/create-enterprise/create-enterprise.vue
@@ -0,0 +1,181 @@
+
+
+
+
+
+
+
+
+ 企业名称
+ *
+
+
+
+
+
+ 法人姓名
+ *
+
+
+
+
+
+ 企业社会统一信用代码
+ *
+
+
+
+
+
+
+
+ 立即关联
+ 立即关联
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/enterprise/pages/details/details.vue b/src/packages/enterprise/pages/details/details.vue
new file mode 100644
index 0000000..dabdd25
--- /dev/null
+++ b/src/packages/enterprise/pages/details/details.vue
@@ -0,0 +1,340 @@
+
+
+
+
+
+
+
+
+
+ {{ List.enterpriseName }}
+
+
+
+ {{ type.label }}
+
+
+ {{ toods.getDateTime(List.createTime, 2) }}
+
+
+ {{ state.label }}
+
+
+
+
+
+ {{ List.appealTitle }}
+
+
+
+
+
+
+
+ {{ List.appealCurrentLocation }}
+
+
+
+
+
+ 处理过程
+
+
+
+
+
+
+ {{ List.nickName || '' }}
+
+
+
+
+ {{ toods.getDateTime(List.replyTime, 2) }}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/enterprise/pages/discount/discount-details.vue b/src/packages/enterprise/pages/discount/discount-details.vue
new file mode 100644
index 0000000..775f324
--- /dev/null
+++ b/src/packages/enterprise/pages/discount/discount-details.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+ {{ recursionObj.remark }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/enterprise/pages/discount/discount-list.vue b/src/packages/enterprise/pages/discount/discount-list.vue
new file mode 100644
index 0000000..aea2ffa
--- /dev/null
+++ b/src/packages/enterprise/pages/discount/discount-list.vue
@@ -0,0 +1,199 @@
+
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+ {{ toods.getDateTime(item.createTime) }}
+ {{ item.publisher }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/enterprise/pages/discount/discount.vue b/src/packages/enterprise/pages/discount/discount.vue
new file mode 100644
index 0000000..07d609a
--- /dev/null
+++ b/src/packages/enterprise/pages/discount/discount.vue
@@ -0,0 +1,228 @@
+
+
+
+
+
+
+
+
+
+
+ {{ itemName.name }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ itemName.name }}
+
+ {{ itemName.remark }}
+
+
+
+
+
+
+
+ {{ itemName.name }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/enterprise/pages/issue-appeal/issue-appeal.vue b/src/packages/enterprise/pages/issue-appeal/issue-appeal.vue
new file mode 100644
index 0000000..d660acc
--- /dev/null
+++ b/src/packages/enterprise/pages/issue-appeal/issue-appeal.vue
@@ -0,0 +1,444 @@
+
+
+
+
+
+
+
+
+
+
+ 关联企业
+ *
+
+
+ {{ appealDetails.enterpriseName }}
+
+ 您未关联企业,去关联
+
+
+
+
+
+
+
+ 诉求类型
+ *
+
+
+
+
+ {{ appealTypeList[appealTypeIndex].label }}
+ 请选择诉求类型
+
+
+
+
+
+
+
+
+ 诉求标题
+ *
+
+
+
+
+
+
+
+
+ 诉求内容
+ *
+
+
+
+
+
+
+
+ 附件不超过9个,每个大小不超过1M
+
+
+
+
+
+
+ 姓名
+ *
+
+
+
+
+
+
+
+ 当前位置
+
+
+
+
+
+
+ 同意对外展示我的诉求
+
+
+
+ {{ agreeList[appealShowFlagIndex].label }}
+ 请选择诉求类型
+
+
+
+
+
+
+ 提交信息
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/enterprise/pages/my-appeal/my-appeal.vue b/src/packages/enterprise/pages/my-appeal/my-appeal.vue
new file mode 100644
index 0000000..80471dd
--- /dev/null
+++ b/src/packages/enterprise/pages/my-appeal/my-appeal.vue
@@ -0,0 +1,345 @@
+
+
+
+
+
+
+
+
+
+
+ {{ item.enterpriseName }}
+
+
+
+
+ {{ type.label }}
+
+
+ {{ toods.getDateTime(item.createTime, 2) }}
+
+
+ {{ state.label }}
+
+
+
+
+
+ {{ item.appealTitle }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.nickName }}
+
+ {{ toods.getDateTime(item.replyTime, 2) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/enterprise/pages/relation-enterprise/relation-enterprise.vue b/src/packages/enterprise/pages/relation-enterprise/relation-enterprise.vue
new file mode 100644
index 0000000..91f56a3
--- /dev/null
+++ b/src/packages/enterprise/pages/relation-enterprise/relation-enterprise.vue
@@ -0,0 +1,211 @@
+
+
+
+
+
+
+
+
+
+
+ {{ item.enterpriseName }}
+
+ 法人姓名:
+ {{ item.legalName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 您还未关联任何企业
+ 新增关联企业
+
+
+
+
+ 新增关联企业
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/life/pages/life-list/life-list.vue b/src/packages/life/pages/life-list/life-list.vue
new file mode 100644
index 0000000..9c73756
--- /dev/null
+++ b/src/packages/life/pages/life-list/life-list.vue
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/life/pages/scenic-list/scenic-list.vue b/src/packages/life/pages/scenic-list/scenic-list.vue
new file mode 100644
index 0000000..bd71e1a
--- /dev/null
+++ b/src/packages/life/pages/scenic-list/scenic-list.vue
@@ -0,0 +1,303 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.merchantName }}
+
+
+
+
+
+
+ 距离
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/my/pages/account/account.vue b/src/packages/my/pages/account/account.vue
new file mode 100644
index 0000000..1daff46
--- /dev/null
+++ b/src/packages/my/pages/account/account.vue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/my/pages/appeal/appeal.vue b/src/packages/my/pages/appeal/appeal.vue
new file mode 100644
index 0000000..f227bff
--- /dev/null
+++ b/src/packages/my/pages/appeal/appeal.vue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/my/pages/certification/certification.vue b/src/packages/my/pages/certification/certification.vue
new file mode 100644
index 0000000..eee815d
--- /dev/null
+++ b/src/packages/my/pages/certification/certification.vue
@@ -0,0 +1,317 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 勾选同意“
+ 介休用户协议
+ ”
+
+
+
+
+ 提交信息
+ 提交信息
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/my/pages/collection/collection.vue b/src/packages/my/pages/collection/collection.vue
new file mode 100644
index 0000000..1d6a5a9
--- /dev/null
+++ b/src/packages/my/pages/collection/collection.vue
@@ -0,0 +1,191 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.merchantName }}
+ {{ item.merchantIntroduce }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/my/pages/create-server-record/create-server-record.vue b/src/packages/my/pages/create-server-record/create-server-record.vue
new file mode 100644
index 0000000..d863e6a
--- /dev/null
+++ b/src/packages/my/pages/create-server-record/create-server-record.vue
@@ -0,0 +1,468 @@
+
+
+
+
+
+
+ 服务对象
+ 张文远
+
+
+
+ 服务形式
+ *
+
+
+
+ {{ modality.value.label || '请选择' }}
+
+
+
+
+
+
+ 服务内容
+ *
+
+
+
+
+
+
+ 上传照片
+
+
+
+
+
+
+ 附件不超过9个
+
+
+
+
+
+ 服务时间
+ *
+
+
+
+ {{ toods.getDateTime(picker, 0) }}
+ 请选择
+
+
+
+
+
+
+
+
+ 提交后将无法修改,确认提交吗?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/my/pages/integral/integral.vue b/src/packages/my/pages/integral/integral.vue
new file mode 100644
index 0000000..9f0d641
--- /dev/null
+++ b/src/packages/my/pages/integral/integral.vue
@@ -0,0 +1,251 @@
+
+
+
+
+
+
+
+
+
+
+ {{ userInfoCount.integral || 0 }}
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+ {{ item.integralTypeName || item.integralName }}
+
+
+
+
+
+ {{ item.score > 0 ? '+' + item.score : item.score }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/my/pages/mediate/mediate.vue b/src/packages/my/pages/mediate/mediate.vue
new file mode 100644
index 0000000..b1192e2
--- /dev/null
+++ b/src/packages/my/pages/mediate/mediate.vue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/my/pages/message-center/message-center.vue b/src/packages/my/pages/message-center/message-center.vue
new file mode 100644
index 0000000..a4ce4e1
--- /dev/null
+++ b/src/packages/my/pages/message-center/message-center.vue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/my/pages/my-masses/my-masses-appraise.vue b/src/packages/my/pages/my-masses/my-masses-appraise.vue
new file mode 100644
index 0000000..ea5a466
--- /dev/null
+++ b/src/packages/my/pages/my-masses/my-masses-appraise.vue
@@ -0,0 +1,295 @@
+
+
+
+
+
+
+
+ 内容
+
+
+
+
+
+
+
+
+
+ 附件不超过9个
+
+
+
+ 提交
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/my/pages/my-masses/my-masses-details.vue b/src/packages/my/pages/my-masses/my-masses-details.vue
new file mode 100644
index 0000000..2e9184e
--- /dev/null
+++ b/src/packages/my/pages/my-masses/my-masses-details.vue
@@ -0,0 +1,739 @@
+
+
+
+
+
+
+ {{ messsDetail.title }}
+
+ {{ t.label }}
+
+
+
+
+
+
+
+ {{ messsDetail.name }}
+ {{ messsDetail.orgName }}
+
+
+
+ {{
+ messsDetail.status === 1
+ ? '待认领'
+ : messsDetail.status === 2
+ ? '待接单'
+ : messsDetail.status === 3
+ ? '待评价'
+ : messsDetail.status === 4
+ ? '已完结'
+ : messsDetail.status === 5
+ ? '已接单'
+ : '暂无'
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ messsDetail.address }}
+
+ {{ toods.getDateTime(messsDetail.createTime) }}
+
+
+
+
+
+
+
+ 回复消息
+
+
+
+
+
+ {{ replyInfo.replyUserName }}
+ {{ toods.getDateTime(replyInfo.createTime) }}
+
+
+ {{ replyInfo.replyContent }}
+
+
+
+
+
+
+
+
+ 点单评价
+
+
+ 满意度:
+
+
+
+ {{ messsDetail.appraiseContent }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 确认接单吗?
+ 确认后将无法撤回
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/my/pages/my-masses/my-masses-reply.vue b/src/packages/my/pages/my-masses/my-masses-reply.vue
new file mode 100644
index 0000000..251df1c
--- /dev/null
+++ b/src/packages/my/pages/my-masses/my-masses-reply.vue
@@ -0,0 +1,514 @@
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+ {{ t.label }}
+
+
+ {{
+ item.status === 1
+ ? '待认领'
+ : item.status === 2
+ ? '待接单'
+ : item.status === 3
+ ? '待评价'
+ : item.status === 4
+ ? '已完结'
+ : item.status === 5
+ ? '已接单'
+ : '暂无'
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.reply.replyUserName }}
+
+ {{ toods.getDateTime(item.reply.createTime, 0) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 点单
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/my/pages/my-masses/my-masses.vue b/src/packages/my/pages/my-masses/my-masses.vue
new file mode 100644
index 0000000..4f88ab5
--- /dev/null
+++ b/src/packages/my/pages/my-masses/my-masses.vue
@@ -0,0 +1,444 @@
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+ {{ t.label }}
+
+
+ {{
+ item.status === 1
+ ? '待认领'
+ : item.status === 2
+ ? '待接单'
+ : item.status === 3
+ ? '待评价'
+ : item.status === 4
+ ? '已完结'
+ : item.status === 5
+ ? '已接单'
+ : '暂无'
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.address }}
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/my/pages/my-patient-details/my-patient-details.vue b/src/packages/my/pages/my-patient-details/my-patient-details.vue
new file mode 100644
index 0000000..edb2095
--- /dev/null
+++ b/src/packages/my/pages/my-patient-details/my-patient-details.vue
@@ -0,0 +1,458 @@
+
+
+
+
+
+
+
+ {{ item.title }}
+
+ {{ item.count }}
+
+
+
+
+
+ 健康档案编码
+ 112312323345543211
+
+
+ 姓名
+ 张文远
+
+
+ 身份证号码
+ 112312323345543211
+
+
+ 联系电话
+ 18615543271
+
+
+ 所属街道/乡镇
+ 北京朝阳区来广营北京朝阳区来广营北京朝阳区来广营北京朝阳区来广营
+
+
+ 现住详址
+ 朝来科技园8号院2号楼209室
+
+
+ 家属联系电话
+ 1871163729
+
+
+ 人群类别
+
+ 普通居民
+ 高血压
+ 普通居民
+ 高血压
+ 普通居民普通居民普通居民普通居民
+ 高血压
+
+
+
+ 家庭成员药物过敏史
+ 青霉素
+
+
+ 既往史
+ 无
+
+
+ 家族史
+ 无
+
+
+ 照片
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 姓名:
+ 张无忌
+
+
+
+ 问诊类型:
+ 日常记录
+
+
+
+ 问诊时间:
+ 2022-12-12 20:09:23
+
+
+
+ {{ t.label }}
+
+
+
+
+
+
+
+
+ 服务形式:
+ 张无忌
+
+
+
+ 服务医生:
+ 日常记录、日常记录、日常记录、日常记录
+
+
+
+ 服务评价:
+
+ {{ t.label }}
+
+
+
+
+ {{ t.label }}
+
+
+
+
+ 服务时间:
+ 2022-12-12 20:09:23
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/my/pages/my-patient/my-patient.vue b/src/packages/my/pages/my-patient/my-patient.vue
new file mode 100644
index 0000000..c65a8f9
--- /dev/null
+++ b/src/packages/my/pages/my-patient/my-patient.vue
@@ -0,0 +1,191 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 张文远
+ 健康档案编码1111
+
+
+
+
+ 男
+ 30岁
+ 18611643621
+
+
+
+ 普通居民
+ 高血压
+ 普通居民
+ 高血压
+ 普通居民普通居民普通居民普通居民
+ 高血压
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/my/pages/party-member-auth/party-member-auth.vue b/src/packages/my/pages/party-member-auth/party-member-auth.vue
new file mode 100644
index 0000000..b661446
--- /dev/null
+++ b/src/packages/my/pages/party-member-auth/party-member-auth.vue
@@ -0,0 +1,231 @@
+
+
+
+
+
+
+
+ 所在党支部
+
+
+
+
+
+ 现居社区/村
+
+ {{ currentTile }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/my/pages/patient/patient.vue b/src/packages/my/pages/patient/patient.vue
new file mode 100644
index 0000000..1d1e1c3
--- /dev/null
+++ b/src/packages/my/pages/patient/patient.vue
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+ {{ item.count }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/my/pages/random-clap/random-clap.vue b/src/packages/my/pages/random-clap/random-clap.vue
new file mode 100644
index 0000000..26929b5
--- /dev/null
+++ b/src/packages/my/pages/random-clap/random-clap.vue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+ 2022年度一次性创业补贴
+ 2021-03-04
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/my/pages/role/role.vue b/src/packages/my/pages/role/role.vue
new file mode 100644
index 0000000..b540966
--- /dev/null
+++ b/src/packages/my/pages/role/role.vue
@@ -0,0 +1,194 @@
+
+
+
+
+ 请选择您的身份
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 社区
+ 居民
+ 工作人员
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/my/pages/setup/setup.vue b/src/packages/my/pages/setup/setup.vue
new file mode 100644
index 0000000..bfb490b
--- /dev/null
+++ b/src/packages/my/pages/setup/setup.vue
@@ -0,0 +1,216 @@
+
+
+
+
+
+
+
+ 头像
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 名称
+
+
+
+ {{ userInfo.nickName }}
+
+
+
+
+
+
+
+
+ 手机号
+
+
+
+ {{ userInfo.mobile }}
+
+
+
+
+
+
+
+
+ 版本信息
+
+
+
+
+
+
+
+
+
+ 帮助中心
+
+
+
+
+
+
+
+
+
+ 退出账号
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/ai-im/ai-im.vue b/src/packages/people/pages/ai-im/ai-im.vue
new file mode 100644
index 0000000..c6ec125
--- /dev/null
+++ b/src/packages/people/pages/ai-im/ai-im.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/apply-doctor/apply-doctor.vue b/src/packages/people/pages/apply-doctor/apply-doctor.vue
new file mode 100644
index 0000000..d0233cc
--- /dev/null
+++ b/src/packages/people/pages/apply-doctor/apply-doctor.vue
@@ -0,0 +1,527 @@
+
+
+
+
+
+
+
+ 姓名
+
+
+
+ 身份证号码
+
+
+
+ 联系电话
+
+
+
+
+ 家庭医生进网格专项服务正在逐步建设中,如暂未覆盖您居住的社区/村,请您耐心等待,感谢您的理解和支持。
+ 所在村/社区
+
+
+
+
+
+
+
+ 现住详址
+
+
+
+
+ 家属联系电话
+
+
+
+
+
+ 人群类别
+ (可多选)
+
+
+
+ {{ e.label }}
+
+
+
+
+
+
+ 既往史
+ 请填写真实情况,没有填“无”
+
+
+
+
+
+
+ 家族史
+ 请填写真实情况,没有填“无”
+
+
+
+
+
+
+ 上传照片
+
+
+
+
+
+
+ 为了让家庭医生更好的了解您的情况,您可以上传您的病历或其他信息
+
+
+
+
+
+ 本人承诺以上提交的信息真实无误并接受
+ 《家庭医生团队签约服务协议书》
+ 全部条款
+
+
+
+
+ 提交申请
+ 提交申请
+
+
+
+
+
+
+
+
+
+ 申请提交后将无法修改
+ 确认提交吗?
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/area-detail/area-detail.vue b/src/packages/people/pages/area-detail/area-detail.vue
new file mode 100644
index 0000000..cbb699c
--- /dev/null
+++ b/src/packages/people/pages/area-detail/area-detail.vue
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/area/area.vue b/src/packages/people/pages/area/area.vue
new file mode 100644
index 0000000..92fad44
--- /dev/null
+++ b/src/packages/people/pages/area/area.vue
@@ -0,0 +1,518 @@
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+ 村务公开详情
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+ {{ item.title }}
+ {{ item.createTime }}
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/assembly-detail/assembly-detail.vue b/src/packages/people/pages/assembly-detail/assembly-detail.vue
new file mode 100644
index 0000000..084144e
--- /dev/null
+++ b/src/packages/people/pages/assembly-detail/assembly-detail.vue
@@ -0,0 +1,388 @@
+
+
+
+
+
+
+ 主题:{{ assemblyHallGetObj.title }}
+ 时间:{{ hooks.getDateTime(assemblyHallGetObj.createTime) }}
+
+
+ {{ assemblyHallGetObj.status === 1 ? '未开始' : assemblyHallGetObj.status === 2 ? '议事中' : assemblyHallGetObj.status === 3 ? '议事结束' : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ assemblyHallGetObj.address }}
+
+
+
+
+
+
+
+ 议事总结
+
+
+ 实际参与人数:{{ assemblyHallGetObj.joinCount }}
+ 总结时间:{{ assemblyHallGetObj.timeContinued }}分钟
+
+
+
+
+ 议事公示
+
+
+ {{ assemblyHallGetObj.result || '' }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/assembly/assembly.vue b/src/packages/people/pages/assembly/assembly.vue
new file mode 100644
index 0000000..48f1496
--- /dev/null
+++ b/src/packages/people/pages/assembly/assembly.vue
@@ -0,0 +1,466 @@
+
+
+
+
+
+ 搜索
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+ {{ toods.getDateTime(item.createTime) }}
+
+
+
+ {{ item.status === 1 ? '未开始' : item.status === 2 ? '议事中' : item.status === 3 ? '议事结束' : '' }}
+
+
+
+
+
+
+
+
+
+
+ 发布人:{{ item.nickName }}
+
+
+
+ 申请加入
+
+ 审批中
+ 已加入
+ 加入失败
+
+
+ 申请加入
+
+ 审批中
+ 已加入
+ 加入失败
+
+
+
+ 申请加入
+ 审批中
+ 已加入
+ 加入失败
+
+
+
+
+
+
+
+
+
+
+
+ 申请加入成功
+
+
+
+ 申请加入失败
+ {{ typeName }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/doctor-archives/doctor-archives.vue b/src/packages/people/pages/doctor-archives/doctor-archives.vue
new file mode 100644
index 0000000..28b3626
--- /dev/null
+++ b/src/packages/people/pages/doctor-archives/doctor-archives.vue
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+ 头像
+ 112312323345543211
+
+
+ 人群类别
+
+ 普通居民
+
+
+
+ 照片
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/packages/people/pages/doctor-my/doctor-my.vue b/src/packages/people/pages/doctor-my/doctor-my.vue
new file mode 100644
index 0000000..f2c44f6
--- /dev/null
+++ b/src/packages/people/pages/doctor-my/doctor-my.vue
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+ 请对此服务做出评价
+
+ 管理指导机构:宋古乡卫生院
+ 联系电话:0
+
+
+
+
+
+
+
+
+
+
+ 测试
+
+
+ 管理指导机构:宋古乡卫生院
+ 联系电话:0
+
+
+
+
+
+
+
+ 您尚未签约家庭医生团队
+
+
+ 未申请
+
+ 申请签约家庭医生
+
+
+
+
+
+
diff --git a/src/packages/people/pages/doctor/doctor.vue b/src/packages/people/pages/doctor/doctor.vue
new file mode 100644
index 0000000..3deea10
--- /dev/null
+++ b/src/packages/people/pages/doctor/doctor.vue
@@ -0,0 +1,297 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ '测试2' }}
+
+ {{ '我是测试描述' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ 'item.title' }}
+
+ {{ toods.getDateTime(item.createTime) }}
+
+
+
+
+
+
+
+
+
+
+ 问诊
+
+
+
+
+
+
diff --git a/src/packages/people/pages/guide-detail/guide-detail.vue b/src/packages/people/pages/guide-detail/guide-detail.vue
new file mode 100644
index 0000000..a5b45f8
--- /dev/null
+++ b/src/packages/people/pages/guide-detail/guide-detail.vue
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ mediatorGetObj.name }}
+
+
+
+
+ {{ mediatorGetObj.position }}
+
+
+
+
+
+
+ 先进事迹介绍
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/guide/guide.vue b/src/packages/people/pages/guide/guide.vue
new file mode 100644
index 0000000..d900445
--- /dev/null
+++ b/src/packages/people/pages/guide/guide.vue
@@ -0,0 +1,385 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+ {{ item.agencyName }}
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+ {{ item.agencyName }}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/inquiries-create/inquiries-create.vue b/src/packages/people/pages/inquiries-create/inquiries-create.vue
new file mode 100644
index 0000000..db4a53a
--- /dev/null
+++ b/src/packages/people/pages/inquiries-create/inquiries-create.vue
@@ -0,0 +1,281 @@
+
+
+
+
+
+
+
+ 姓名
+
+
+
+
+ 问诊类型
+
+
+
+ {{ array[index] }}
+
+
+
+
+
+
+
+ 问诊描述
+
+
+
+
+
+
+ 为了让家庭医生更好的了解您的情况,您可以上传您的病历或其他信息。
+
+
+
+ 提交
+
+
+
+
+
+
+
diff --git a/src/packages/people/pages/law-list/law-list.vue b/src/packages/people/pages/law-list/law-list.vue
new file mode 100644
index 0000000..2265fc7
--- /dev/null
+++ b/src/packages/people/pages/law-list/law-list.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/masses-appraise/masses-appraise.vue b/src/packages/people/pages/masses-appraise/masses-appraise.vue
new file mode 100644
index 0000000..cda94b2
--- /dev/null
+++ b/src/packages/people/pages/masses-appraise/masses-appraise.vue
@@ -0,0 +1,254 @@
+
+
+
+
+
+ 满意度:
+
+
+
+
+
+
+
+ 描述
+
+
+
+
+
+
+
+
+
+
+ 提交评价
+
+
+ 提交评价
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/masses-create/masses-create.vue b/src/packages/people/pages/masses-create/masses-create.vue
new file mode 100644
index 0000000..30eee33
--- /dev/null
+++ b/src/packages/people/pages/masses-create/masses-create.vue
@@ -0,0 +1,578 @@
+
+
+
+
+
+
+
+
+
+
+
+ 点单类型
+ *
+
+
+
+ {{ columns[form.type].label }}
+
+
+
+
+
+
+
+
+
+ 所在村/社区
+ *
+
+
+ {{ currentTile }}
+
+
+
+
+
+
+
+ 标题
+ *
+
+
+
+
+
+
+ 描述
+ *
+
+
+
+
+
+
+
+ 附件不超过9个,每个大小不超过1M
+
+
+
+ 姓名
+
+
+
+
+ 电话
+
+
+
+
+ 地址
+
+
+
+
+
+
+
+ 同意对外展示我的诉求
+
+
+ {{ agreeList[form.showFlag].label }}
+
+
+
+
+
+
+
+
+
+
+ 本人承诺以上信息真实有效
+
+
+
+
+
+ 发布信息
+ 发布信息
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/masses-detail/masses-detail.vue b/src/packages/people/pages/masses-detail/masses-detail.vue
new file mode 100644
index 0000000..c9e0f43
--- /dev/null
+++ b/src/packages/people/pages/masses-detail/masses-detail.vue
@@ -0,0 +1,581 @@
+
+
+
+
+
+
+
+
+ {{ messsDetail.helpUserNick || '' }} 已接单
+
+ 给 TA 打电话
+
+
+
+
+ {{ messsDetail.title }}
+
+ {{ t.label }}
+
+
+
+
+
+
+
+ {{ messsDetail.name }}
+ {{ messsDetail.orgName }}
+
+
+
+ {{
+ messsDetail.status === 1
+ ? '待认领'
+ : messsDetail.status === 2
+ ? '待接单'
+ : messsDetail.status === 3
+ ? '待评价'
+ : messsDetail.status === 4
+ ? '已完结'
+ : messsDetail.status === 5
+ ? '已接单'
+ : '暂无'
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ messsDetail.address }}
+
+ {{ toods.getDateTime(messsDetail.createTime) }}
+
+
+
+
+
+ 点单评价
+
+
+ 满意度:
+
+
+
+ {{ messsDetail.appraiseContent || '暂无评价' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/masses/masses.vue b/src/packages/people/pages/masses/masses.vue
new file mode 100644
index 0000000..735ce1e
--- /dev/null
+++ b/src/packages/people/pages/masses/masses.vue
@@ -0,0 +1,418 @@
+
+
+
+
+
+ 搜索
+
+
+
+
+
+
+ {{ item.title }}
+
+
+ {{ item.type === 1 ? '帮助' : '求助' }}
+
+
+ {{
+ item.status === 1
+ ? '待认领'
+ : item.status === 2
+ ? '待接单'
+ : item.status === 3
+ ? '待评价'
+ : item.status === 4
+ ? '已完结'
+ : item.status === 5
+ ? '已接单'
+ : '暂无'
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.address }}
+
+
+
+
+
+
+
+
+
+ 发布
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/mediate-create/mediate-create.vue b/src/packages/people/pages/mediate-create/mediate-create.vue
new file mode 100644
index 0000000..1b6e9b7
--- /dev/null
+++ b/src/packages/people/pages/mediate-create/mediate-create.vue
@@ -0,0 +1,541 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+ *
+
+
+
+
+
+ {{ item.typeList[caseType].label }}
+ 请选择调解类型
+
+
+
+
+
+
+
+
+
+
+
+ 标题
+ *
+
+
+
+
+
+
+ 姓名
+ *
+
+
+
+
+
+
+
+ 所在村/社区
+ *
+
+
+ {{ currentTile }}
+
+
+
+
+
+
+
+ 描述
+ *
+
+
+
+
+
+
+
+ 附件不超过9个,每个大小不超过1M
+
+
+
+ 当前位置
+
+
+
+
+
+
+
+
+
+ 本人承诺以上信息真实有效
+
+
+
+
+
+ 发布信息
+ 发布信息
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/mediate-detail/mediate-detail.vue b/src/packages/people/pages/mediate-detail/mediate-detail.vue
new file mode 100644
index 0000000..5f55571
--- /dev/null
+++ b/src/packages/people/pages/mediate-detail/mediate-detail.vue
@@ -0,0 +1,345 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ mediatorGetObj.name }}
+
+
+
+
+
+ 调查案件数:{{ mediatorGetObj.caseCount }}
+
+
+
+
+
+
+ 认证单位
+
+
+ {{ mediatorGetObj.companyName }}
+
+
+
+
+
+ 擅长领域
+
+
+ {{ mediatorGetObj.expertiseAreas }}
+
+
+
+
+
+ 是否收费
+
+
+ {{ mediatorGetObj.chargeFlag ? '是' : '否' }}
+
+
+
+
+
+ 个人简介
+
+
+ {{ mediatorGetObj.resume }}
+
+
+
+
+
+ 联系方式
+
+
+ {{ mediatorGetObj.mobile }}
+
+
+
+
+
+
+
+
+
+ 找TA调解
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/mediate-my-details/mediate-my-details.vue b/src/packages/people/pages/mediate-my-details/mediate-my-details.vue
new file mode 100644
index 0000000..a120ed8
--- /dev/null
+++ b/src/packages/people/pages/mediate-my-details/mediate-my-details.vue
@@ -0,0 +1,432 @@
+
+
+
+
+
+
+
+ {{ List.title }}
+
+
+
+ {{ type.label }}
+
+
+ {{ toods.getDateTime(List.createTime) }}
+
+
+ {{ state.label }}
+
+
+
+
+ {{ List.descInfo }}
+ {{ List.appealContent }}
+
+
+
+ {{ List.address }}
+
+
+
+
+
+ 处理过程
+
+
+
+
+
+ {{ item.mediatorName }}
+
+
+
+
+
+
+ {{ toods.getDateTime(item.createTime) }}
+
+ 调解员:
+ {{ item.mediatorName }}/{{ item.mediatorMobile }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/mediate-my-list/mediate-my-list.vue b/src/packages/people/pages/mediate-my-list/mediate-my-list.vue
new file mode 100644
index 0000000..022adfc
--- /dev/null
+++ b/src/packages/people/pages/mediate-my-list/mediate-my-list.vue
@@ -0,0 +1,326 @@
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+ {{ type.label }}
+
+
+ {{ toods.getDateTime(item.createTime, 2) }}
+
+
+ {{ state.label }}
+
+
+
+
+
+ {{ item.descInfo }}
+
+
+
+
+
+ {{ item.address }}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/mediate-select/mediate-select.vue b/src/packages/people/pages/mediate-select/mediate-select.vue
new file mode 100644
index 0000000..b73813b
--- /dev/null
+++ b/src/packages/people/pages/mediate-select/mediate-select.vue
@@ -0,0 +1,323 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ options.name }}
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+ {{ item.resume }}
+
+ 调查案件数:{{ item.caseCount }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/mediate/mediate.vue b/src/packages/people/pages/mediate/mediate.vue
new file mode 100644
index 0000000..32ed624
--- /dev/null
+++ b/src/packages/people/pages/mediate/mediate.vue
@@ -0,0 +1,322 @@
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+ {{ itemName.name }}
+
+ {{ itemName.remark }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ itemName.name }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/party-branch/party-branch.vue b/src/packages/people/pages/party-branch/party-branch.vue
new file mode 100644
index 0000000..ea7acf0
--- /dev/null
+++ b/src/packages/people/pages/party-branch/party-branch.vue
@@ -0,0 +1,322 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/second/second-community.vue b/src/packages/people/pages/second/second-community.vue
new file mode 100644
index 0000000..314d892
--- /dev/null
+++ b/src/packages/people/pages/second/second-community.vue
@@ -0,0 +1,240 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/people/pages/second/second.vue b/src/packages/people/pages/second/second.vue
new file mode 100644
index 0000000..847d70d
--- /dev/null
+++ b/src/packages/people/pages/second/second.vue
@@ -0,0 +1,653 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ itemName.name }}
+
+ {{ itemName.remark }}
+
+
+
+
+
+
+
+
+
+ 首席专家团队介绍
+ 医疗惠民进网格 家医看病更方便
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+ {{ item.publisher }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name || item.title }}
+
+ {{ item.createTime }}
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+ {{ toods.getDateTime(item.createTime) }}
+ {{ item.publisher }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/public/pages/chief-expert/chief-expert.vue b/src/packages/public/pages/chief-expert/chief-expert.vue
new file mode 100644
index 0000000..7540b86
--- /dev/null
+++ b/src/packages/public/pages/chief-expert/chief-expert.vue
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/public/pages/details/details-no-ops.vue b/src/packages/public/pages/details/details-no-ops.vue
new file mode 100644
index 0000000..c03d079
--- /dev/null
+++ b/src/packages/public/pages/details/details-no-ops.vue
@@ -0,0 +1,185 @@
+
+
+
+
+
+ {{ InfoObj.title }}
+
+ {{ InfoObj.createTime }}
+ {{ InfoObj.publisher }}
+
+
+
+
+
+
+
+
+ {{ isSignUp ? '已报名' : '报名' }}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/public/pages/details/details.vue b/src/packages/public/pages/details/details.vue
new file mode 100644
index 0000000..83f4d88
--- /dev/null
+++ b/src/packages/public/pages/details/details.vue
@@ -0,0 +1,679 @@
+
+
+
+
+
+
+
+
+
+
+ {{ InfoObj.title }}
+
+ {{ InfoObj.createTime }}
+ {{ InfoObj.publisher }}
+
+
+
+
+
+
+
+
+ {{ InfoObj.merchantName }}
+ {{ InfoObj.merchantPosition }}
+
+
+
+ 导航
+
+
+
+
+
+
+
+
+
+
+
+ {{ optins.name === '家庭医生进网格详情' ? '家庭医生团队' : '优秀党员' }}
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+ {{ item.introduce }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ InfoObj.shareCount }}
+
+
+
+
+ {{ InfoObj.collectionCount }}
+
+
+
+ {{ InfoObj.praiseCount }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/public/pages/inquiry/inquiry-detail.vue b/src/packages/public/pages/inquiry/inquiry-detail.vue
new file mode 100644
index 0000000..d3e28bf
--- /dev/null
+++ b/src/packages/public/pages/inquiry/inquiry-detail.vue
@@ -0,0 +1,542 @@
+
+
+
+
+
+
+
+
+
+ {{ inquiriesObj.patientName }}
+
+
+ {{ e.label }}
+
+
+
+ {{ inquiriesObj.inquiriesDesc }}
+
+
+
+
+
+ {{ e.label }}
+
+ {{ toods.getDateTime(inquiriesObj.createTime) }}
+
+
+
+
+
+ 家医回复
+
+
+
+
+
+ 描述
+
+
+
+
+ 快捷标签
+
+ {{ item }}
+
+
+
+
+
+
+
+
+ 附件不超过9个
+
+
+
+
+
+
+
+
+
+
+ {{ inquiriesObj.doctorName }}
+
+ {{ inquiriesObj.replyContent }}
+
+
+
+
+ {{ toods.getDateTime(inquiriesObj.replyTime) }}
+
+
+
+
+
+
+
+ 信息回复后将无法修改,确认提交吗?
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/public/pages/inquiry/inquiry-list.vue b/src/packages/public/pages/inquiry/inquiry-list.vue
new file mode 100644
index 0000000..a8091b2
--- /dev/null
+++ b/src/packages/public/pages/inquiry/inquiry-list.vue
@@ -0,0 +1,262 @@
+
+
+
+
+
+
+
+
+ {{ e.label }}
+
+
+
+ 服务对象:
+ {{ item.patientName }}
+
+
+ 问诊类型:
+
+ {{ e.label }}
+
+
+
+ 问诊时间:
+ {{ toods.getDateTime(item.createTime) }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/public/pages/service-record/service-record-detail.vue b/src/packages/public/pages/service-record/service-record-detail.vue
new file mode 100644
index 0000000..969f6bb
--- /dev/null
+++ b/src/packages/public/pages/service-record/service-record-detail.vue
@@ -0,0 +1,282 @@
+
+
+
+
+
+
+ 服务形式
+ {{ serveRecordObj.serveWay }}
+
+
+ 服务内容
+ {{ serveRecordObj.serveContent }}
+
+
+ 服务对象
+ {{ serveRecordObj.patientName }}
+
+
+ 服务医生
+ {{ serveRecordObj.doctorName }}
+
+
+ 时间
+ {{ serveRecordObj.createTime }}
+
+
+ 评价
+ {{ serveRecordObj.evaluationGrade }}
+
+
+
+
+ 请对此服务做出评价
+
+ 差
+ 一般
+ 满意
+
+
+
+
+
+ 您对本次服务的评价为
+ “ {{ evaluateText }} ”
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/public/pages/service-record/service-record.vue b/src/packages/public/pages/service-record/service-record.vue
new file mode 100644
index 0000000..4b9c16a
--- /dev/null
+++ b/src/packages/public/pages/service-record/service-record.vue
@@ -0,0 +1,275 @@
+
+
+
+
+
+ 您尚未签约家庭医生团队
+
+
+
+ 未申请
+
+ 申请签约家庭医生
+
+
+
+
+
+
+ {{ item.evaluationStatus === 0 ? '待评价' : '已评价' }}
+
+ 服务对象:
+ {{ item.doctorName }}
+
+
+ 服务形式:
+ {{ item.serveWay }}
+
+
+ 服务医生:
+ {{ item.doctorName }}
+
+
+ 服务评价:
+ {{ item.evaluationGrade || '暂无' }}
+
+
+
+
+ 服务时间:
+ {{ item.createTime }}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/public/pages/web-view/web-view.vue b/src/packages/public/pages/web-view/web-view.vue
new file mode 100644
index 0000000..d1f191e
--- /dev/null
+++ b/src/packages/public/pages/web-view/web-view.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages.json b/src/pages.json
new file mode 100644
index 0000000..a76cdbf
--- /dev/null
+++ b/src/pages.json
@@ -0,0 +1,451 @@
+{
+ "pages": [{
+ "path": "pages/guide/index",
+ "style": {
+ "navigationBarTitleText": "引导页",
+ "navigationStyle": "custom",
+ "disableScroll": true
+ }
+ }, {
+ "path": "pages/people/people",
+ "style": {}
+ },
+ {
+ "path": "pages/life/life",
+ "style": {}
+ }, {
+ "path": "pages/enterprise/enterprise",
+ "style": {}
+ },
+ {
+ "path": "pages/consult/consult",
+ "style": {}
+ },
+ {
+ "path": "pages/my/my",
+ "style": {}
+ },
+ {
+ "path": "pages/authorize/authorize",
+ "style": {
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "pages/phone/index",
+ "style": {}
+ },
+ {
+ "path": "pages/agreement/user-agreement",
+ "style": {}
+ }
+ ],
+ "subPackages": [{
+ "root": "packages/enterprise",
+ "pages": [{
+ "path": "pages/my-appeal/my-appeal",
+ "name": "enterprise",
+ "style": {}
+ },
+ {
+ "path": "pages/details/details",
+ "name": "enterprise",
+ "style": {}
+ },
+ {
+ "path": "pages/issue-appeal/issue-appeal",
+ "name": "enterprise",
+ "style": {}
+ },
+ {
+ "path": "pages/relation-enterprise/relation-enterprise",
+ "name": "enterprise",
+ "style": {}
+ },
+ {
+ "path": "pages/create-enterprise/create-enterprise",
+ "name": "enterprise",
+ "style": {}
+ },
+ {
+ "path": "pages/discount/discount",
+ "name": "enterprise",
+ "style": {}
+ },
+ {
+ "path": "pages/discount/discount-details",
+ "name": "enterprise",
+ "style": {}
+ },
+ {
+ "path": "pages/discount/discount-list",
+ "name": "enterprise",
+ "style": {}
+ }
+ ]
+ },
+ {
+ "root": "packages/life",
+ "pages": [{
+ "path": "pages/life-list/life-list",
+ "name": "life",
+ "style": {}
+ },
+ {
+ "path": "pages/scenic-list/scenic-list",
+ "name": "life",
+ "style": {}
+ }
+ ]
+ },
+ {
+ "root": "packages/people/",
+ "pages": [{
+ "path": "pages/second/second",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/second/second-community",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/masses/masses",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/masses-create/masses-create",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/masses-detail/masses-detail",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/masses-appraise/masses-appraise",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/mediate/mediate",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/mediate-select/mediate-select",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/mediate-create/mediate-create",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/mediate-detail/mediate-detail",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/mediate-my-list/mediate-my-list",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/mediate-my-details/mediate-my-details",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/law-list/law-list",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/assembly/assembly",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/assembly-detail/assembly-detail",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/party-branch/party-branch",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/guide/guide",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/guide-detail/guide-detail",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/area/area",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/area-detail/area-detail",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/doctor/doctor",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/doctor-archives/doctor-archives",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/apply-doctor/apply-doctor",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/doctor-my/doctor-my",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/inquiries-create/inquiries-create",
+ "name": "people",
+ "style": {}
+ },
+ {
+ "path": "pages/ai-im/ai-im",
+ "name": "people",
+ "style": {}
+ }
+ ]
+ },
+ {
+ "root": "packages/public/",
+ "pages": [{
+ "path": "pages/details/details",
+ "name": "public",
+ "style": {}
+ },
+ {
+ "path": "pages/details/details-no-ops",
+ "name": "public",
+ "style": {}
+ },
+ {
+ "path": "pages/service-record/service-record",
+ "name": "public",
+ "style": {}
+ },
+ {
+ "path": "pages/service-record/service-record-detail",
+ "name": "public",
+ "style": {}
+ },
+ {
+ "path": "pages/inquiry/inquiry-list",
+ "name": "public",
+ "style": {}
+ },
+ {
+ "path": "pages/inquiry/inquiry-detail",
+ "name": "public",
+ "style": {}
+ },
+ {
+ "path": "pages/web-view/web-view",
+ "name": "public",
+ "style": {}
+ },
+ {
+ "path": "pages/chief-expert/chief-expert",
+ "name": "public",
+ "style": {}
+ }
+ ]
+ },
+ {
+ "root": "packages/my/",
+ "pages": [{
+ "path": "pages/message-center/message-center",
+ "name": "my",
+ "style": {}
+ },
+ {
+ "path": "pages/integral/integral",
+ "name": "my",
+ "style": {}
+ },
+ {
+ "path": "pages/appeal/appeal",
+ "name": "my",
+ "style": {}
+ },
+ {
+ "path": "pages/random-clap/random-clap",
+ "name": "my",
+ "style": {}
+ },
+ {
+ "path": "pages/collection/collection",
+ "name": "my",
+ "style": {}
+ },
+ {
+ "path": "pages/mediate/mediate",
+ "name": "my",
+ "style": {}
+ },
+ {
+ "path": "pages/account/account",
+ "name": "my",
+ "style": {}
+ },
+ {
+ "path": "pages/role/role",
+ "name": "my",
+ "style": {}
+ },
+ {
+ "path": "pages/certification/certification",
+ "name": "my",
+ "style": {}
+ },
+ {
+ "path": "pages/setup/setup",
+ "name": "my",
+ "style": {}
+ },
+ {
+ "path": "pages/party-member-auth/party-member-auth",
+ "name": "my",
+ "style": {}
+ },
+ {
+ "path": "pages/my-masses/my-masses",
+ "name": "my",
+ "style": {}
+ },
+ {
+ "path": "pages/my-masses/my-masses-details",
+ "name": "my",
+ "style": {}
+ },
+ {
+ "path": "pages/patient/patient",
+ "name": "my",
+ "style": {}
+ },
+ {
+ "path": "pages/my-patient/my-patient",
+ "name": "my",
+ "style": {}
+ },
+ {
+ "path": "pages/my-patient-details/my-patient-details",
+ "name": "my",
+ "style": {}
+ },
+ {
+ "path": "pages/create-server-record/create-server-record",
+ "name": "my",
+ "style": {}
+ },
+ {
+ "path": "pages/my-masses/my-masses-appraise",
+ "name": "my",
+ "style": {}
+ },
+ {
+ "path": "pages/my-masses/my-masses-reply",
+ "name": "my",
+ "style": {}
+ }
+ ]
+ }
+ ],
+ "tabBar": {
+ "custom": false,
+ "color": "#000000",
+ "selectedColor": "#FE3B53",
+ "backgroundColor": "#ffffff",
+ "position": "bottom",
+ "borderStyle": "black",
+ "list": [{
+ "pagePath": "pages/people/people",
+ "text": "民生",
+ "iconPath": "static/images/tabbar/ic-people.png",
+ "selectedIconPath": "static/images/tabbar/ic-people.png"
+ },
+ {
+ "pagePath": "pages/life/life",
+ "text": "生活",
+ "iconPath": "static/images/tabbar/ic-life.png",
+ "selectedIconPath": "static/images/tabbar/ic-life.png"
+ },
+ {
+ "pagePath": "pages/enterprise/enterprise",
+ "text": "惠企",
+ "iconPath": "static/images/tabbar/ic-enterprise.png",
+ "selectedIconPath": "static/images/tabbar/ic-enterprise.png"
+ },
+ {
+ "pagePath": "pages/consult/consult",
+ "text": "资讯",
+ "iconPath": "static/images/tabbar/ic-consult.png",
+ "selectedIconPath": "static/images/tabbar/ic-consult.png"
+ },
+ {
+ "pagePath": "pages/my/my",
+ "text": "我的",
+ "iconPath": "static/images/tabbar/ic-my.png",
+ "selectedIconPath": "static/images/tabbar/ic-my.png"
+ }
+ ]
+ },
+ "useExtendedLib": {},
+ "permission": {
+ "scope.userLocation": {
+ "desc": "你的位置信息将用于小程序位置接口的效果展示"
+ }
+ },
+ "requiredBackgroundModes": [
+ "audio",
+ "location"
+ ],
+ "requiredPrivateInfos": [
+ "getLocation"
+ ],
+ "plugins": {
+ "myPlugin": {
+ "version": "1.4.0",
+ "provider": "wx3572fa9e027e055a"
+ }
+ },
+ "sitemapLocation": "sitemap.json",
+ "easycom": {
+ "autoscan": true,
+ "custom": {
+ "^custom-nav-bar$": "@/components/custom-nav-bar/custom-nav-bar"
+ }
+ },
+ "globalStyle": {
+ "backgroundTextStyle": "dark",
+ "navigationBarBackgroundColor": "#fff",
+ "navigationBarTitleText": "",
+ "navigationBarTextStyle": "black",
+ "navigationStyle": "custom"
+ }
+}
\ No newline at end of file
diff --git a/src/pages/agreement/user-agreement.vue b/src/pages/agreement/user-agreement.vue
new file mode 100644
index 0000000..d18c1c3
--- /dev/null
+++ b/src/pages/agreement/user-agreement.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/authorize/authorize.vue b/src/pages/authorize/authorize.vue
new file mode 100644
index 0000000..de01d43
--- /dev/null
+++ b/src/pages/authorize/authorize.vue
@@ -0,0 +1,283 @@
+
+
+
+ 介休网格通
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 已阅读并同意《
+ 用户服务协议
+ 》
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/consult/consult.vue b/src/pages/consult/consult.vue
new file mode 100644
index 0000000..d3fbb41
--- /dev/null
+++ b/src/pages/consult/consult.vue
@@ -0,0 +1,242 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ key.title }}
+
+
+ {{ key.publisher }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/enterprise/enterprise.vue b/src/pages/enterprise/enterprise.vue
new file mode 100644
index 0000000..f192348
--- /dev/null
+++ b/src/pages/enterprise/enterprise.vue
@@ -0,0 +1,554 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 我的诉求
+
+
+
+ 发布诉求
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+ {{ itemName.name }}
+
+ {{ itemName.remark }}
+
+
+
+
+
+
+
+ 优质回复
+
+
+
+
+
+
+
+
+ {{ item.name || item.nickName || '暂无名称' }}
+
+
+ {{ getDateTime(item.createTime, 2) }}
+
+
+ {{ state.label }}
+
+
+
+
+
+ {{ item.appealTitle }}
+
+
+
+
+
+
+
+
+
+
+ {{ item.appealCurrentLocation }}
+
+
+
+
+
+
+ {{ item.replyCreator }}
+
+ {{ getDateTime(item.replyTime, 2) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/guide/index.vue b/src/pages/guide/index.vue
new file mode 100644
index 0000000..e37b49d
--- /dev/null
+++ b/src/pages/guide/index.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue
new file mode 100644
index 0000000..ecac4f5
--- /dev/null
+++ b/src/pages/index/index.vue
@@ -0,0 +1,41 @@
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
diff --git a/src/pages/life/life.vue b/src/pages/life/life.vue
new file mode 100644
index 0000000..82cf78c
--- /dev/null
+++ b/src/pages/life/life.vue
@@ -0,0 +1,523 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ itemName.name }}
+
+ {{ itemName.remark }}
+
+
+
+
+
+
+
+ 精彩介休
+
+
+
+
+
+
+
+
+ {{ item.merchantName }}
+
+
+
+
+
+ 距离
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/my/my.vue b/src/pages/my/my.vue
new file mode 100644
index 0000000..0d06cc4
--- /dev/null
+++ b/src/pages/my/my.vue
@@ -0,0 +1,593 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ userInfo.nickName }}
+ 请登录
+
+
+
+
+
+
+
+
+ {{ myInfo.integral || 0 }}
+
+
+ 我的积分
+
+
+
+
+
+
+
+ {{ itemName.name }}
+
+
+ {{
+ itemName.name === '我的点单'
+ ? myInfo.orderCount
+ : itemName.name === '我的家庭医生'
+ ? myInfo.familyDoctorCount
+ : itemName.name === '我的收藏'
+ ? myInfo.collectionCount
+ : itemName.name === '我的调解'
+ ? myInfo.caseCount
+ : 0
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ itemName.name }}
+
+
+
+
+
+
+
+
+ {{
+ itemName.name === '我的诉求'
+ ? myInfo.appealCount
+ : itemName.name === '我的收藏'
+ ? myInfo.collectionCount
+ : itemName.name === '我的调解'
+ ? myInfo.caseCount
+ : 0
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/people/people.vue b/src/pages/people/people.vue
new file mode 100644
index 0000000..2cf559b
--- /dev/null
+++ b/src/pages/people/people.vue
@@ -0,0 +1,380 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ itemName.name }}
+
+ {{ itemName.remark }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/phone/index.vue b/src/pages/phone/index.vue
new file mode 100644
index 0000000..755b0e6
--- /dev/null
+++ b/src/pages/phone/index.vue
@@ -0,0 +1,311 @@
+
+
+
+ 介休网格通
+
+
+
+
+
+
+
+
+
+
+
+
+ {{codeTitle}}
+ {{codeTitle}}秒
+
+
+
+
+
+ 提交
+
+
+
+
+
+
+
+ 已阅读并同意《
+ 用户服务协议
+ 》
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/shime-uni.d.ts b/src/shime-uni.d.ts
new file mode 100644
index 0000000..5ecbb26
--- /dev/null
+++ b/src/shime-uni.d.ts
@@ -0,0 +1,6 @@
+export {}
+
+declare module "vue" {
+ type Hooks = App.AppInstance & Page.PageInstance;
+ interface ComponentCustomOptions extends Hooks {}
+}
\ No newline at end of file
diff --git a/src/static/images/default-avatar.png b/src/static/images/default-avatar.png
new file mode 100644
index 0000000..201174c
Binary files /dev/null and b/src/static/images/default-avatar.png differ
diff --git a/src/static/images/enterprise/icon-1.png b/src/static/images/enterprise/icon-1.png
new file mode 100644
index 0000000..2f0d307
Binary files /dev/null and b/src/static/images/enterprise/icon-1.png differ
diff --git a/src/static/images/enterprise/icon.png b/src/static/images/enterprise/icon.png
new file mode 100644
index 0000000..2f6b6da
Binary files /dev/null and b/src/static/images/enterprise/icon.png differ
diff --git a/src/static/images/ic-arrow-black.png b/src/static/images/ic-arrow-black.png
new file mode 100644
index 0000000..e96c93a
Binary files /dev/null and b/src/static/images/ic-arrow-black.png differ
diff --git a/src/static/images/ic-arrow-white.png b/src/static/images/ic-arrow-white.png
new file mode 100644
index 0000000..9bcd3f4
Binary files /dev/null and b/src/static/images/ic-arrow-white.png differ
diff --git a/src/static/images/ic-collection.png b/src/static/images/ic-collection.png
new file mode 100644
index 0000000..4568d3d
Binary files /dev/null and b/src/static/images/ic-collection.png differ
diff --git a/src/static/images/ic-collection1.png b/src/static/images/ic-collection1.png
new file mode 100644
index 0000000..b7a8f71
Binary files /dev/null and b/src/static/images/ic-collection1.png differ
diff --git a/src/static/images/ic-give.png b/src/static/images/ic-give.png
new file mode 100644
index 0000000..6ff93f9
Binary files /dev/null and b/src/static/images/ic-give.png differ
diff --git a/src/static/images/ic-give1.png b/src/static/images/ic-give1.png
new file mode 100644
index 0000000..e30e9c4
Binary files /dev/null and b/src/static/images/ic-give1.png differ
diff --git a/src/static/images/ic-give2.png b/src/static/images/ic-give2.png
new file mode 100644
index 0000000..174c0f0
Binary files /dev/null and b/src/static/images/ic-give2.png differ
diff --git a/src/static/images/ic-radio.png b/src/static/images/ic-radio.png
new file mode 100644
index 0000000..17eeffa
Binary files /dev/null and b/src/static/images/ic-radio.png differ
diff --git a/src/static/images/ic-radio1.png b/src/static/images/ic-radio1.png
new file mode 100644
index 0000000..3c9b61d
Binary files /dev/null and b/src/static/images/ic-radio1.png differ
diff --git a/src/static/images/ic-share.png b/src/static/images/ic-share.png
new file mode 100644
index 0000000..e394fd0
Binary files /dev/null and b/src/static/images/ic-share.png differ
diff --git a/src/static/images/ic-success.png b/src/static/images/ic-success.png
new file mode 100644
index 0000000..48b36f4
Binary files /dev/null and b/src/static/images/ic-success.png differ
diff --git a/src/static/images/ic-you.png b/src/static/images/ic-you.png
new file mode 100644
index 0000000..7fb72a4
Binary files /dev/null and b/src/static/images/ic-you.png differ
diff --git a/src/static/images/icon-people.png b/src/static/images/icon-people.png
new file mode 100644
index 0000000..3e5fcf3
Binary files /dev/null and b/src/static/images/icon-people.png differ
diff --git a/src/static/images/icon1.png b/src/static/images/icon1.png
new file mode 100644
index 0000000..0a6fe4c
Binary files /dev/null and b/src/static/images/icon1.png differ
diff --git a/src/static/images/icon2.png b/src/static/images/icon2.png
new file mode 100644
index 0000000..d7c3246
Binary files /dev/null and b/src/static/images/icon2.png differ
diff --git a/src/static/images/icon3.png b/src/static/images/icon3.png
new file mode 100644
index 0000000..7bb450b
Binary files /dev/null and b/src/static/images/icon3.png differ
diff --git a/src/static/images/icon4.png b/src/static/images/icon4.png
new file mode 100644
index 0000000..6783b0a
Binary files /dev/null and b/src/static/images/icon4.png differ
diff --git a/src/static/images/icon5.png b/src/static/images/icon5.png
new file mode 100644
index 0000000..10f0922
Binary files /dev/null and b/src/static/images/icon5.png differ
diff --git a/src/static/images/icon9.png b/src/static/images/icon9.png
new file mode 100644
index 0000000..7bd1e17
Binary files /dev/null and b/src/static/images/icon9.png differ
diff --git a/src/static/images/rate-icon.png b/src/static/images/rate-icon.png
new file mode 100644
index 0000000..da2ba8c
Binary files /dev/null and b/src/static/images/rate-icon.png differ
diff --git a/src/static/images/search.png b/src/static/images/search.png
new file mode 100644
index 0000000..5060ced
Binary files /dev/null and b/src/static/images/search.png differ
diff --git a/src/static/images/share-icon.png b/src/static/images/share-icon.png
new file mode 100644
index 0000000..4596df0
Binary files /dev/null and b/src/static/images/share-icon.png differ
diff --git a/src/static/images/tabbar/ic-consult.png b/src/static/images/tabbar/ic-consult.png
new file mode 100644
index 0000000..269b20f
Binary files /dev/null and b/src/static/images/tabbar/ic-consult.png differ
diff --git a/src/static/images/tabbar/ic-enterprise.png b/src/static/images/tabbar/ic-enterprise.png
new file mode 100644
index 0000000..eda2d72
Binary files /dev/null and b/src/static/images/tabbar/ic-enterprise.png differ
diff --git a/src/static/images/tabbar/ic-life.png b/src/static/images/tabbar/ic-life.png
new file mode 100644
index 0000000..0e1a1c0
Binary files /dev/null and b/src/static/images/tabbar/ic-life.png differ
diff --git a/src/static/images/tabbar/ic-my.png b/src/static/images/tabbar/ic-my.png
new file mode 100644
index 0000000..620f218
Binary files /dev/null and b/src/static/images/tabbar/ic-my.png differ
diff --git a/src/static/images/tabbar/ic-people.png b/src/static/images/tabbar/ic-people.png
new file mode 100644
index 0000000..00bc221
Binary files /dev/null and b/src/static/images/tabbar/ic-people.png differ
diff --git a/src/static/images/void-icon2.png b/src/static/images/void-icon2.png
new file mode 100644
index 0000000..fe41069
Binary files /dev/null and b/src/static/images/void-icon2.png differ
diff --git a/src/static/logo.png b/src/static/logo.png
new file mode 100644
index 0000000..b5771e2
Binary files /dev/null and b/src/static/logo.png differ
diff --git a/src/static/packages/enterprise/image/camera.png b/src/static/packages/enterprise/image/camera.png
new file mode 100644
index 0000000..21c398c
Binary files /dev/null and b/src/static/packages/enterprise/image/camera.png differ
diff --git a/src/static/packages/enterprise/image/card-icon.png b/src/static/packages/enterprise/image/card-icon.png
new file mode 100644
index 0000000..9f35998
Binary files /dev/null and b/src/static/packages/enterprise/image/card-icon.png differ
diff --git a/src/static/packages/enterprise/image/card.png b/src/static/packages/enterprise/image/card.png
new file mode 100644
index 0000000..b701de0
Binary files /dev/null and b/src/static/packages/enterprise/image/card.png differ
diff --git a/src/static/packages/enterprise/image/enterprise-none.png b/src/static/packages/enterprise/image/enterprise-none.png
new file mode 100644
index 0000000..a7224c9
Binary files /dev/null and b/src/static/packages/enterprise/image/enterprise-none.png differ
diff --git a/src/static/packages/enterprise/image/ic-check-select.png b/src/static/packages/enterprise/image/ic-check-select.png
new file mode 100644
index 0000000..17eeffa
Binary files /dev/null and b/src/static/packages/enterprise/image/ic-check-select.png differ
diff --git a/src/static/packages/enterprise/image/ic-check.png b/src/static/packages/enterprise/image/ic-check.png
new file mode 100644
index 0000000..3c9b61d
Binary files /dev/null and b/src/static/packages/enterprise/image/ic-check.png differ
diff --git a/src/static/packages/enterprise/image/my-appeal.png b/src/static/packages/enterprise/image/my-appeal.png
new file mode 100644
index 0000000..0e32256
Binary files /dev/null and b/src/static/packages/enterprise/image/my-appeal.png differ
diff --git a/src/static/packages/my/image/accomplish.png b/src/static/packages/my/image/accomplish.png
new file mode 100644
index 0000000..3a78989
Binary files /dev/null and b/src/static/packages/my/image/accomplish.png differ
diff --git a/src/static/packages/my/image/integral.png b/src/static/packages/my/image/integral.png
new file mode 100644
index 0000000..0c45638
Binary files /dev/null and b/src/static/packages/my/image/integral.png differ
diff --git a/src/static/packages/my/image/login_bg.png b/src/static/packages/my/image/login_bg.png
new file mode 100644
index 0000000..3f2b690
Binary files /dev/null and b/src/static/packages/my/image/login_bg.png differ
diff --git a/src/static/packages/my/image/logo_bg.png b/src/static/packages/my/image/logo_bg.png
new file mode 100644
index 0000000..58aea6d
Binary files /dev/null and b/src/static/packages/my/image/logo_bg.png differ
diff --git a/src/static/packages/my/image/masses.png b/src/static/packages/my/image/masses.png
new file mode 100644
index 0000000..79dc3f1
Binary files /dev/null and b/src/static/packages/my/image/masses.png differ
diff --git a/src/static/packages/my/image/order.png b/src/static/packages/my/image/order.png
new file mode 100644
index 0000000..1e71d94
Binary files /dev/null and b/src/static/packages/my/image/order.png differ
diff --git a/src/static/packages/my/image/person.png b/src/static/packages/my/image/person.png
new file mode 100644
index 0000000..32bfc1c
Binary files /dev/null and b/src/static/packages/my/image/person.png differ
diff --git a/src/static/packages/my/image/reply.png b/src/static/packages/my/image/reply.png
new file mode 100644
index 0000000..60ec35b
Binary files /dev/null and b/src/static/packages/my/image/reply.png differ
diff --git a/src/static/packages/my/image/search.png b/src/static/packages/my/image/search.png
new file mode 100644
index 0000000..5060ced
Binary files /dev/null and b/src/static/packages/my/image/search.png differ
diff --git a/src/static/packages/my/image/worker.png b/src/static/packages/my/image/worker.png
new file mode 100644
index 0000000..db03ea0
Binary files /dev/null and b/src/static/packages/my/image/worker.png differ
diff --git a/src/static/packages/people/images/ic-Inquiries.png b/src/static/packages/people/images/ic-Inquiries.png
new file mode 100644
index 0000000..080e623
Binary files /dev/null and b/src/static/packages/people/images/ic-Inquiries.png differ
diff --git a/src/static/packages/people/images/ic-xia.png b/src/static/packages/people/images/ic-xia.png
new file mode 100644
index 0000000..306df0f
Binary files /dev/null and b/src/static/packages/people/images/ic-xia.png differ
diff --git a/src/static/packages/people/images/icon10.png b/src/static/packages/people/images/icon10.png
new file mode 100644
index 0000000..fc94ffc
Binary files /dev/null and b/src/static/packages/people/images/icon10.png differ
diff --git a/src/static/packages/people/images/icon2.png b/src/static/packages/people/images/icon2.png
new file mode 100644
index 0000000..f948c13
Binary files /dev/null and b/src/static/packages/people/images/icon2.png differ
diff --git a/src/static/packages/people/images/icon3.png b/src/static/packages/people/images/icon3.png
new file mode 100644
index 0000000..3e5eb54
Binary files /dev/null and b/src/static/packages/people/images/icon3.png differ
diff --git a/src/static/packages/people/images/icon7.png b/src/static/packages/people/images/icon7.png
new file mode 100644
index 0000000..eaa2312
Binary files /dev/null and b/src/static/packages/people/images/icon7.png differ
diff --git a/src/static/packages/people/images/icon9.png b/src/static/packages/people/images/icon9.png
new file mode 100644
index 0000000..7bd1e17
Binary files /dev/null and b/src/static/packages/people/images/icon9.png differ
diff --git a/src/static/packages/public/images/Chief_physician.png b/src/static/packages/public/images/Chief_physician.png
new file mode 100644
index 0000000..7a2d62f
Binary files /dev/null and b/src/static/packages/public/images/Chief_physician.png differ
diff --git a/src/static/packages/public/pages/web-view/img.jpg b/src/static/packages/public/pages/web-view/img.jpg
new file mode 100644
index 0000000..ba83f73
Binary files /dev/null and b/src/static/packages/public/pages/web-view/img.jpg differ
diff --git a/src/style/normalize.less b/src/style/normalize.less
new file mode 100644
index 0000000..2006c89
--- /dev/null
+++ b/src/style/normalize.less
@@ -0,0 +1,62 @@
+page {
+ height: 100%;
+ font-family: 'Microsoft YaHei', '微软雅黑', 'MicrosoftJhengHei', '华文细黑', Helvetica, Arial, 'sans-serif';
+ font-size: 26rpx;
+ background-color: #ffffff;
+ font-weight: 400;
+}
+
+view,
+image,
+icon,
+scroll-view,
+text,
+button,
+checkbox,
+form,
+input,
+label,
+navigator,
+audio,
+video,
+canvas {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ border: 0;
+ outline: 0;
+}
+
+scroll-view {
+ height: 100%;
+}
+
+form,
+image {
+ display: block;
+}
+
+button {
+ padding: 0;
+ margin: 0;
+ border-radius: 0;
+ height: 100%;
+ display: block;
+ line-height: inherit;
+ font-size: inherit;
+ color: inherit;
+ background: none;
+ -webkit-appearance: none;
+ border: none;
+}
+
+button::after {
+ content: none;
+}
+
+input,
+textarea {
+ font-family: 'Microsoft YaHei', '微软雅黑', 'MicrosoftJhengHei', '华文细黑', Helvetica, Arial, 'sans-serif';
+ font-size: 26rpx;
+ z-index: 0;
+}
diff --git a/src/style/public.less b/src/style/public.less
new file mode 100644
index 0000000..232117f
--- /dev/null
+++ b/src/style/public.less
@@ -0,0 +1,138 @@
+/* 单行超出显示点点点 */
+.uniline {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+/* 多行超出显示点点点 */
+.multi-line {
+ overflow: hidden;
+ display: -webkit-box;
+ text-overflow: ellipsis;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 2;
+}
+
+/* 多行超出显示点点点 */
+.multi-line-3 {
+ overflow: hidden;
+ display: -webkit-box;
+ text-overflow: ellipsis;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 3;
+}
+
+.red {
+ color: red;
+ font-size: 28rpx;
+ font-weight: 400;
+}
+
+.flex {
+ display: flex;
+ display: -webkit-flex;
+}
+
+.flex-v-center {
+ align-items: center;
+ -webkit-align-items: center;
+}
+
+.flex-center {
+ justify-content: center;
+ -webkit-justify-content: center;
+ align-items: center;
+ -webkit-align-items: center;
+}
+
+.flex-between {
+ justify-content: space-between;
+ -webkit-justify-content: space-between;
+}
+
+.flex-around {
+ justify-content: space-around;
+ -webkit-justify-content: space-around;
+}
+
+.flex-evenly {
+ justify-content: space-evenly;
+ -webkit-justify-content: space-evenly;
+}
+
+.flex-v-between {
+ align-content: space-between;
+ -webkit-align-content: space-between;
+}
+
+.flex-v-end {
+ align-content: flex-end;
+ -webkit-align-content: flex-end;
+}
+
+.flex-v-start {
+ align-content: flex-start;
+ -webkit-align-content: flex-start;
+}
+
+.flex-end {
+ justify-content: flex-end;
+ -webkit-justify-content: flex-end;
+}
+
+.flex-col {
+ flex-direction: column;
+ -webkit-flex-direction: column;
+}
+
+.flex1 {
+ flex: 1;
+ -webkit-flex: 1;
+}
+
+.flex0 {
+ flex: none;
+ -webkit-flex: none;
+}
+
+.flex-start {
+ justify-content: flex-start;
+ -webkit-justify-content: flex-start;
+}
+
+.text-line-1 {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ -webkit-line-clamp: 1;
+ -webkit-box-orient: vertical;
+ word-break: break-all;
+}
+
+.text-line-2 {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ -webkit-line-clamp: 2;
+ -webkit-box-orient: vertical;
+ word-break: break-all;
+}
+
+.text-line-3 {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ -webkit-line-clamp: 3;
+ -webkit-box-orient: vertical;
+ word-break: break-all;
+}
+
+.text-line-4 {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ -webkit-line-clamp: 3;
+ -webkit-box-orient: vertical;
+ word-break: break-all;
+}
diff --git a/src/style/theme.less b/src/style/theme.less
new file mode 100644
index 0000000..00faa65
--- /dev/null
+++ b/src/style/theme.less
@@ -0,0 +1,15 @@
+/* 颜色主题 */
+page {
+ --title-guides-color: #ffced6; // 标题辅助线
+ --nav-bar-background-color: #ffffff;
+ --nav-bar-icon-color: #999999; // 导航栏返回按钮样式
+ --nav-bar-text-color: #333333; // 导航栏左侧文案样式
+ --item-dominant-color: #fe3b53; // 项目主色
+ --tab-active-text-color: #fe3b53; // 所有tabs选中颜色
+ --tabs-bottom-bar-color: #fe3b53; // // 所有tabs选中下划线颜色
+}
+
+// margin
+.m-b-28 {
+ margin-bottom: 28rpx;
+}
diff --git a/src/uni.scss b/src/uni.scss
new file mode 100644
index 0000000..288300d
--- /dev/null
+++ b/src/uni.scss
@@ -0,0 +1,76 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+
+/* 颜色变量 */
+
+/* 行为相关颜色 */
+$uni-color-primary: #007aff;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+/* 文字基本颜色 */
+$uni-text-color: #333; // 基本色
+$uni-text-color-inverse: #fff; // 反色
+$uni-text-color-grey: #999; // 辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable: #c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color: #fff;
+$uni-bg-color-grey: #f8f8f8;
+$uni-bg-color-hover: #f1f1f1; // 点击状态颜色
+$uni-bg-color-mask: rgba(0, 0, 0, 0.4); // 遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color: #c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm: 12px;
+$uni-font-size-base: 14px;
+$uni-font-size-lg: 16;
+
+/* 图片尺寸 */
+$uni-img-size-sm: 20px;
+$uni-img-size-base: 26px;
+$uni-img-size-lg: 40px;
+
+/* Border Radius */
+$uni-border-radius-sm: 2px;
+$uni-border-radius-base: 3px;
+$uni-border-radius-lg: 6px;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 5px;
+$uni-spacing-row-base: 10px;
+$uni-spacing-row-lg: 15px;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 4px;
+$uni-spacing-col-base: 8px;
+$uni-spacing-col-lg: 12px;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2c405a; // 文章标题颜色
+$uni-font-size-title: 20px;
+$uni-color-subtitle: #555; // 二级标题颜色
+$uni-font-size-subtitle: 18px;
+$uni-color-paragraph: #3f536e; // 文章段落颜色
+$uni-font-size-paragraph: 15px;
\ No newline at end of file
diff --git a/src/uni_modules/mp-html/README.md b/src/uni_modules/mp-html/README.md
new file mode 100644
index 0000000..dcfcc2c
--- /dev/null
+++ b/src/uni_modules/mp-html/README.md
@@ -0,0 +1,193 @@
+## 为减小组件包的大小,默认组件包中不包含编辑、latex 公式等扩展功能,需要使用扩展功能的请参考下方的 插件扩展 栏的说明
+
+## 功能介绍
+- 全端支持(含 `v3、NVUE`)
+- 支持丰富的标签(包括 `table`、`video`、`svg` 等)
+- 支持丰富的事件效果(自动预览图片、链接处理等)
+- 支持设置占位图(加载中、出错时、预览时)
+- 支持锚点跳转、长按复制等丰富功能
+- 支持大部分 *html* 实体
+- 丰富的插件(关键词搜索、内容编辑、`latex` 公式等)
+- 效率高、容错性强且轻量化
+
+查看 [功能介绍](https://jin-yufeng.gitee.io/mp-html/#/overview/feature) 了解更多
+
+## 使用方法
+- `uni_modules` 方式
+ 1. 点击右上角的 `使用 HBuilder X 导入插件` 按钮直接导入项目或点击 `下载插件 ZIP` 按钮下载插件包并解压到项目的 `uni_modules/mp-html` 目录下
+ 2. 在需要使用页面的 `(n)vue` 文件中添加
+ ```html
+
+
+ ```
+ ```javascript
+ export default {
+ data() {
+ return {
+ html: 'Hello World!
'
+ }
+ }
+ }
+ ```
+ 3. 需要更新版本时在 `HBuilder X` 中右键 `uni_modules/mp-html` 目录选择 `从插件市场更新` 即可
+
+- 源码方式
+ 1. 从 [github](https://github.com/jin-yufeng/mp-html/tree/master/dist/uni-app) 或 [gitee](https://gitee.com/jin-yufeng/mp-html/tree/master/dist/uni-app) 下载源码
+ 插件市场的 **非 uni_modules 版本** 无法更新,不建议从插件市场获取
+ 2. 在需要使用页面的 `(n)vue` 文件中添加
+ ```html
+
+ ```
+ ```javascript
+ import mpHtml from '@/components/mp-html/mp-html'
+ export default {
+ // HBuilderX 2.5.5+ 可以通过 easycom 自动引入
+ components: {
+ mpHtml
+ },
+ data() {
+ return {
+ html: 'Hello World!
'
+ }
+ }
+ }
+ ```
+
+- npm 方式
+ 1. 在项目根目录下执行
+ ```bash
+ npm install mp-html
+ ```
+ 2. 在需要使用页面的 `(n)vue` 文件中添加
+ ```html
+
+ ```
+ ```javascript
+ import mpHtml from 'mp-html/dist/uni-app/components/mp-html/mp-html'
+ export default {
+ // 不可省略
+ components: {
+ mpHtml
+ },
+ data() {
+ return {
+ html: 'Hello World!
'
+ }
+ }
+ }
+ ```
+ 3. 需要更新版本时执行以下命令即可
+ ```bash
+ npm update mp-html
+ ```
+
+ 使用 *cli* 方式运行的项目,通过 *npm* 方式引入时,需要在 *vue.config.js* 中配置 *transpileDependencies*,详情可见 [#330](https://github.com/jin-yufeng/mp-html/issues/330#issuecomment-913617687)
+ 如果在 **nvue** 中使用还要将 `dist/uni-app/static` 目录下的内容拷贝到项目的 `static` 目录下,否则无法运行
+
+查看 [快速开始](https://jin-yufeng.gitee.io/mp-html/#/overview/quickstart) 了解更多
+
+## 组件属性
+
+| 属性 | 类型 | 默认值 | 说明 |
+|:---:|:---:|:---:|---|
+| container-style | String | | 容器的样式([2.1.0+](https://jin-yufeng.gitee.io/mp-html/#/changelog/changelog#v210)) |
+| content | String | | 用于渲染的 html 字符串 |
+| copy-link | Boolean | true | 是否允许外部链接被点击时自动复制 |
+| domain | String | | 主域名(用于链接拼接) |
+| error-img | String | | 图片出错时的占位图链接 |
+| lazy-load | Boolean | false | 是否开启图片懒加载 |
+| loading-img | String | | 图片加载过程中的占位图链接 |
+| pause-video | Boolean | true | 是否在播放一个视频时自动暂停其他视频 |
+| preview-img | Boolean | true | 是否允许图片被点击时自动预览 |
+| scroll-table | Boolean | false | 是否给每个表格添加一个滚动层使其能单独横向滚动 |
+| selectable | Boolean | false | 是否开启文本长按复制 |
+| set-title | Boolean | true | 是否将 title 标签的内容设置到页面标题 |
+| show-img-menu | Boolean | true | 是否允许图片被长按时显示菜单 |
+| tag-style | Object | | 设置标签的默认样式 |
+| use-anchor | Boolean | false | 是否使用锚点链接 |
+
+查看 [属性](https://jin-yufeng.gitee.io/mp-html/#/basic/prop) 了解更多
+
+## 组件事件
+
+| 名称 | 触发时机 |
+|:---:|---|
+| load | dom 树加载完毕时 |
+| ready | 图片加载完毕时 |
+| error | 发生渲染错误时 |
+| imgtap | 图片被点击时 |
+| linktap | 链接被点击时 |
+| play | 音视频播放时 |
+
+查看 [事件](https://jin-yufeng.gitee.io/mp-html/#/basic/event) 了解更多
+
+## api
+组件实例上提供了一些 `api` 方法可供调用
+
+| 名称 | 作用 |
+|:---:|---|
+| in | 将锚点跳转的范围限定在一个 scroll-view 内 |
+| navigateTo | 锚点跳转 |
+| getText | 获取文本内容 |
+| getRect | 获取富文本内容的位置和大小 |
+| setContent | 设置富文本内容 |
+| imgList | 获取所有图片的数组 |
+| pauseMedia | 暂停播放音视频([2.2.2+](https://jin-yufeng.gitee.io/mp-html/#/changelog/changelog#v222)) |
+| setPlaybackRate | 设置音视频播放速率([2.4.0+](https://jin-yufeng.gitee.io/mp-html/#/changelog/changelog#v240)) |
+
+查看 [api](https://jin-yufeng.gitee.io/mp-html/#/advanced/api) 了解更多
+
+## 插件扩展
+除基本功能外,本组件还提供了丰富的扩展,可按照需要选用
+
+| 名称 | 作用 |
+|:---:|---|
+| audio | 音乐播放器 |
+| editable | 富文本 **编辑**([示例项目](https://mp-html.oss-cn-hangzhou.aliyuncs.com/editable.zip)) |
+| emoji | 解析 emoji |
+| highlight | 代码块高亮显示 |
+| markdown | 渲染 markdown |
+| search | 关键词搜索 |
+| style | 匹配 style 标签中的样式 |
+| txv-video | 使用腾讯视频 |
+| img-cache | 图片缓存 by [@PentaTea](https://github.com/PentaTea) |
+| latex | 渲染 latex 公式 by [@Zeng-J](https://github.com/Zeng-J) |
+
+从插件市场导入的包中 **不含有** 扩展插件,使用插件需通过微信小程序 `富文本插件` 获取或参考以下方法进行打包:
+1. 获取完整组件包
+ ```bash
+ npm install mp-html
+ ```
+2. 编辑 `tools/config.js` 中的 `plugins` 项,选择需要的插件
+3. 生成新的组件包
+ 在 `node_modules/mp-html` 目录下执行
+ ```bash
+ npm install
+ npm run build:uni-app
+ ```
+4. 拷贝 `dist/uni-app` 中的内容到项目根目录
+
+查看 [插件](https://jin-yufeng.gitee.io/mp-html/#/advanced/plugin) 了解更多
+
+## 关于 nvue
+`nvue` 使用原生渲染,不支持部分 `css` 样式,为实现和 `html` 相同的效果,组件内部通过 `web-view` 进行渲染,性能上差于原生,根据 `weex` 官方建议,`web` 标签仅应用在非常规的降级场景。因此,如果通过原生的方式(如 `richtext`)能够满足需要,则不建议使用本组件,如果有较多的富文本内容,则可以直接使用 `vue` 页面
+由于渲染方式与其他端不同,有以下限制:
+1. 不支持 `lazy-load` 属性
+2. 视频不支持全屏播放
+3. 如果在 `flex-direction: row` 的容器中使用,需要给组件设置宽度或设置 `flex: 1` 占满剩余宽度
+
+纯 `nvue` 模式下,[此问题](https://ask.dcloud.net.cn/question/119678) 修复前,不支持通过 `uni_modules` 引入,需要本地引入(将 [dist/uni-app](https://github.com/jin-yufeng/mp-html/tree/master/dist/uni-app) 中的内容拷贝到项目根目录下)
+
+## 立即体验
+
+
+## 问题反馈
+遇到问题时,请先查阅 [常见问题](https://jin-yufeng.gitee.io/mp-html/#/question/faq) 和 [issue](https://github.com/jin-yufeng/mp-html/issues) 中是否已有相同的问题
+可通过 [issue](https://github.com/jin-yufeng/mp-html/issues/new/choose) 、插件问答或发送邮件到 [mp_html@126.com](mailto:mp_html@126.com) 提问,不建议在评论区提问(不方便回复)
+提问请严格按照 [issue 模板](https://github.com/jin-yufeng/mp-html/issues/new/choose) ,描述清楚使用环境、`html` 内容或可复现的 `demo` 项目以及复现方式,对于 **描述不清**、**无法复现** 或重复的问题将不予回复
+
+欢迎加入 `QQ` 交流群:
+群1(已满):`699734691`
+群2:`778239129`
+
+查看 [问题反馈](https://jin-yufeng.gitee.io/mp-html/#/question/feedback) 了解更多
diff --git a/src/uni_modules/mp-html/changelog.md b/src/uni_modules/mp-html/changelog.md
new file mode 100644
index 0000000..e313d38
--- /dev/null
+++ b/src/uni_modules/mp-html/changelog.md
@@ -0,0 +1,129 @@
+## v2.4.2(2023-05-14)
+1. `A` `editable` 插件支持修改文字颜色 [详细](https://github.com/jin-yufeng/mp-html/issues/254)
+2. `F` 修复了 `svg` 中有 `style` 不生效的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/505)
+3. `F` 修复了使用旧版编译器可能报错 `Bad attr nodes` 的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/472)
+4. `F` 修复了 `app` 端可能出现无法读取 `lazyLoad` 的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/513)
+5. `F` 修复了 `editable` 插件在点击换图时未拼接 `domain` 的问题 [详细](https://github.com/jin-yufeng/mp-html/pull/497) by [@TwoKe945](https://github.com/TwoKe945)
+6. `F` 修复了 `latex` 插件部分情况下不显示的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/515)
+7. `F` 修复了 `editable` 插件点击音视频时其他标签框不消失的问题
+## v2.4.1(2022-12-25)
+1. `F` 修复了没有图片时 `ready` 事件可能不触发的问题
+2. `F` 修复了加载过程中可能出现 `Root label not found` 错误的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/470)
+3. `F` 修复了 `audio` 插件退出页面可能会报错的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/457)
+4. `F` 修复了 `vue3` 运行到 `app` 在 `HBuilder X 3.6.10` 以上报错的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/480)
+5. `F` 修复了 `nvue` 端链接中包含 `%22` 时可能无法显示的问题
+6. `F` 修复了 `vue3` 使用 `highlight` 插件可能报错的问题
+## v2.4.0(2022-08-27)
+1. `A` 增加了 [setPlaybackRate](https://jin-yufeng.gitee.io/mp-html/#/advanced/api#setPlaybackRate) 的 `api`,可以设置音视频的播放速率 [详细](https://github.com/jin-yufeng/mp-html/issues/452)
+2. `A` 示例小程序代码开源 [详细](https://github.com/jin-yufeng/mp-html-demo)
+3. `U` 优化 `ready` 事件触发时机,未设置懒加载的情况下基本可以准确触发 [详细](https://github.com/jin-yufeng/mp-html/issues/195)
+4. `U` `highlight` 插件在编辑状态下不进行高亮处理,便于编辑
+5. `F` 修复了 `flex` 布局下图片大小可能不正确的问题
+6. `F` 修复了 `selectable` 属性没有设置 `force` 也可能出现渲染异常的问题
+7. `F` 修复了表格中的图片大小可能不正确的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/448)
+8. `F` 修复了含有合并单元格的表格可能无法设置竖直对齐的问题
+9. `F` 修复了 `editable` 插件在 `scroll-view` 中使用时工具条位置可能不正确的问题
+10. `F` 修复了 `vue3` 使用 [search](advanced/plugin#search) 插件可能导致错误换行的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/449)
+## v2.3.2(2022-08-13)
+1. `A` 增加 [latex](https://jin-yufeng.gitee.io/mp-html/#/advanced/plugin#latex) 插件,可以渲染数学公式 [详细](https://github.com/jin-yufeng/mp-html/pull/447) by [@Zeng-J](https://github.com/Zeng-J)
+2. `U` 优化根节点下有很多标签的长内容渲染速度
+3. `U` `highlight` 插件适配 `lang-xxx` 格式
+4. `F` 修复了 `table` 标签设置 `border` 属性后可能无法修改边框样式的问题 [详细](https://github.com/jin-yufeng/mp-html/pull/439) by [@zouxingjie](https://github.com/zouxingjie)
+5. `F` 修复了 `editable` 插件输入连续空格无效的问题
+6. `F` 修复了 `vue3` 图片设置 `inline` 会报错的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/438)
+7. `F` 修复了 `vue3` 使用 `table` 可能报错的问题
+## v2.3.1(2022-05-20)
+1. `U` `app` 端支持使用本地图片
+2. `U` 优化了微信小程序 `selectable` 属性在 `ios` 端的处理 [详细](https://jin-yufeng.gitee.io/mp-html/#/basic/prop#selectable)
+3. `F` 修复了 `editable` 插件不在顶部时 `tooltip` 位置可能错误的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/430)
+4. `F` 修复了 `vue3` 运行到微信小程序可能报错丢失内容的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/414)
+5. `F` 修复了 `vue3` 部分标签可能被错误换行的问题
+6. `F` 修复了 `editable` 插件 `app` 端插入视频无法预览的问题
+## v2.3.0(2022-04-01)
+1. `A` 增加了 `play` 事件,音视频播放时触发,可用于与页面其他音视频进行互斥播放 [详细](basic/event#play)
+2. `U` `show-img-menu` 属性支持控制预览时是否长按弹出菜单
+3. `U` 优化 `wxs` 处理,提高渲染性能 [详细](https://developers.weixin.qq.com/community/develop/article/doc/0006cc2b204740f601bd43fa25a413)
+4. `U` `video` 标签支持 `object-fit` 属性
+5. `U` 增加支持一些常用实体编码 [详细](https://github.com/jin-yufeng/mp-html/issues/418)
+6. `F` 修复了图片仅设置高度可能不显示的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/410)
+7. `F` 修复了 `video` 标签高度设置为 `auto` 不显示的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/411)
+8. `F` 修复了使用 `grid` 布局时可能样式错误的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/413)
+9. `F` 修复了含有合并单元格的表格部分情况下显示异常的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/417)
+10. `F` 修复了 `editable` 插件连续插入内容时顺序不正确的问题
+11. `F` 修复了 `uni-app` 包 `vue3` 使用 `audio` 插件报错的问题
+12. `F` 修复了 `uni-app` 包 `highlight` 插件使用自定义的 `prism.min.js` 报错的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/416)
+## v2.2.2(2022-02-26)
+1. `A` 增加了 [pauseMedia](https://jin-yufeng.gitee.io/mp-html/#/advanced/api#pauseMedia) 的 `api`,可用于暂停播放音视频 [详细](https://github.com/jin-yufeng/mp-html/issues/317)
+2. `U` 优化了长内容的加载速度
+3. `U` 适配 `vue3` [#389](https://github.com/jin-yufeng/mp-html/issues/389)、[#398](https://github.com/jin-yufeng/mp-html/pull/398) by [@zhouhuafei](https://github.com/zhouhuafei)、[#400](https://github.com/jin-yufeng/mp-html/issues/400)
+4. `F` 修复了小程序端图片高度设置为百分比时可能不显示的问题
+5. `F` 修复了 `highlight` 插件部分情况下可能显示不完整的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/403)
+## v2.2.1(2021-12-24)
+1. `A` `editable` 插件增加上下移动标签功能
+2. `U` `editable` 插件支持在文本中间光标处插入内容
+3. `F` 修复了 `nvue` 端设置 `margin` 后可能导致高度不正确的问题
+4. `F` 修复了 `highlight` 插件使用压缩版的 `prism.css` 可能导致背景失效的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/367)
+5. `F` 修复了编辑状态下使用 `emoji` 插件内容为空时可能报错的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/371)
+6. `F` 修复了使用 `editable` 插件后将 `selectable` 属性设置为 `force` 不生效的问题
+## v2.2.0(2021-10-12)
+1. `A` 增加 `customElements` 配置项,便于添加自定义功能性标签 [详细](https://github.com/jin-yufeng/mp-html/issues/350)
+2. `A` `editable` 插件增加切换音视频自动播放状态的功能 [详细](https://github.com/jin-yufeng/mp-html/pull/341) by [@leeseett](https://github.com/leeseett)
+3. `A` `editable` 插件删除媒体标签时触发 `remove` 事件,便于删除已上传的文件
+4. `U` `editable` 插件 `insertImg` 方法支持同时插入多张图片 [详细](https://github.com/jin-yufeng/mp-html/issues/342)
+5. `U` `editable` 插入图片和音视频时支持拼接 `domian` 主域名
+6. `F` 修复了内部链接参数中包含 `://` 时被认为是外部链接的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/356)
+7. `F` 修复了部分 `svg` 标签名或属性名大小写不正确时不生效的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/351)
+8. `F` 修复了 `nvue` 页面运行到非 `app` 平台时可能样式错误的问题
+## v2.1.5(2021-08-13)
+1. `A` 增加支持标签的 `dir` 属性
+2. `F` 修复了 `ruby` 标签文字与拼音没有居中对齐的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/325)
+3. `F` 修复了音视频标签内有 `a` 标签时可能无法播放的问题
+4. `F` 修复了 `externStyle` 中的 `class` 名包含下划线或数字时可能失效的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/326)
+5. `F` 修复了 `h5` 端引入 `externStyle` 可能不生效的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/326)
+## v2.1.4(2021-07-14)
+1. `F` 修复了 `rt` 标签无法设置样式的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/318)
+2. `F` 修复了表格中有单元格同时合并行和列时可能显示不正确的问题
+3. `F` 修复了 `app` 端无法关闭图片长按菜单的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/322)
+4. `F` 修复了 `editable` 插件只能添加图片链接不能修改的问题 [详细](https://github.com/jin-yufeng/mp-html/pull/312) by [@leeseett](https://github.com/leeseett)
+## v2.1.3(2021-06-12)
+1. `A` `editable` 插件增加 `insertTable` 方法
+2. `U` `editable` 插件支持编辑表格中的空白单元格 [详细](https://github.com/jin-yufeng/mp-html/issues/310)
+3. `F` 修复了 `externStyle` 中使用伪类可能失效的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/298)
+4. `F` 修复了多个组件同时使用时 `tag-style` 属性时可能互相影响的问题 [详细](https://github.com/jin-yufeng/mp-html/pull/305) by [@woodguoyu](https://github.com/woodguoyu)
+5. `F` 修复了包含 `linearGradient` 的 `svg` 可能无法显示的问题
+6. `F` 修复了编译到头条小程序时可能报错的问题
+7. `F` 修复了 `nvue` 端不触发 `click` 事件的问题
+8. `F` 修复了 `editable` 插件尾部插入时无法撤销的问题
+9. `F` 修复了 `editable` 插件的 `insertHtml` 方法只能在末尾插入的问题
+10. `F` 修复了 `editable` 插件插入音频不显示的问题
+## v2.1.2(2021-04-24)
+1. `A` 增加了 [img-cache](https://jin-yufeng.gitee.io/mp-html/#/advanced/plugin#img-cache) 插件,可以在 `app` 端缓存图片 [详细](https://github.com/jin-yufeng/mp-html/issues/292) by [@PentaTea](https://github.com/PentaTea)
+2. `U` 支持通过 `container-style` 属性设置 `white-space` 来保留连续空格和换行符 [详细](https://jin-yufeng.gitee.io/mp-html/#/question/faq#space)
+3. `U` 代码风格符合 [standard](https://standardjs.com) 标准
+4. `U` `editable` 插件编辑状态下支持预览视频 [详细](https://github.com/jin-yufeng/mp-html/issues/286)
+5. `F` 修复了 `svg` 标签内嵌 `svg` 时无法显示的问题
+6. `F` 修复了编译到支付宝和头条小程序时部分区域不可复制的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/291)
+## v2.1.1(2021-04-09)
+1. 修复了对 `p` 标签设置 `tag-style` 可能不生效的问题
+2. 修复了 `svg` 标签中的文本无法显示的问题
+3. 修复了使用 `editable` 插件编辑表格时可能报错的问题
+4. 修复了使用 `highlight` 插件运行到头条小程序时可能没有样式的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/280)
+5. 修复了使用 `editable` 插件 `editable` 属性为 `false` 时会报错的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/284)
+6. 修复了 `style` 插件连续子选择器失效的问题
+7. 修复了 `editable` 插件无法修改图片和字体大小的问题
+## v2.1.0.2(2021-03-21)
+修复了 `nvue` 端使用可能报错的问题
+## v2.1.0(2021-03-20)
+1. `A` 增加了 [container-style](https://jin-yufeng.gitee.io/mp-html/#/basic/prop#container-style) 属性 [详细](https://gitee.com/jin-yufeng/mp-html/pulls/1)
+2. `A` 增加支持 `strike` 标签
+3. `A` `editable` 插件增加 `placeholder` 属性 [详细](https://jin-yufeng.gitee.io/mp-html/#/advanced/plugin#editable)
+4. `A` `editable` 插件增加 `insertHtml` 方法 [详细](https://jin-yufeng.gitee.io/mp-html/#/advanced/plugin#editable)
+5. `U` 外部样式支持标签名选择器 [详细](https://jin-yufeng.gitee.io/mp-html/#/overview/quickstart#setting)
+6. `F` 修复了 `nvue` 端部分情况下可能不显示的问题
+## v2.0.5(2021-03-12)
+1. `U` [linktap](https://jin-yufeng.gitee.io/mp-html/#/basic/event#linktap) 事件增加返回内部文本内容 `innerText` [详细](https://github.com/jin-yufeng/mp-html/issues/271)
+2. `U` [selectable](https://jin-yufeng.gitee.io/mp-html/#/basic/prop#selectable) 属性设置为 `force` 时能够在微信 `iOS` 端生效(文本块会变成 `inline-block`) [详细](https://github.com/jin-yufeng/mp-html/issues/267)
+3. `F` 修复了部分情况下竖向无法滚动的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/182)
+4. `F` 修复了多次修改富文本数据时部分内容可能不显示的问题
+5. `F` 修复了 [腾讯视频](https://jin-yufeng.gitee.io/mp-html/#/advanced/plugin#txv-video) 插件可能无法播放的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/265)
+6. `F` 修复了 [highlight](https://jin-yufeng.gitee.io/mp-html/#/advanced/plugin#highlight) 插件没有设置高亮语言时没有应用默认样式的问题 [详细](https://github.com/jin-yufeng/mp-html/issues/276) by [@fuzui](https://github.com/fuzui)
diff --git a/src/uni_modules/mp-html/components/mp-html/mp-html.vue b/src/uni_modules/mp-html/components/mp-html/mp-html.vue
new file mode 100644
index 0000000..d4cad07
--- /dev/null
+++ b/src/uni_modules/mp-html/components/mp-html/mp-html.vue
@@ -0,0 +1,498 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/mp-html/components/mp-html/node/node.vue b/src/uni_modules/mp-html/components/mp-html/node/node.vue
new file mode 100644
index 0000000..c8fa062
--- /dev/null
+++ b/src/uni_modules/mp-html/components/mp-html/node/node.vue
@@ -0,0 +1,576 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{n.text}}
+
+
+ {{n.text}}
+
+ \n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/uni_modules/mp-html/components/mp-html/parser.js b/src/uni_modules/mp-html/components/mp-html/parser.js
new file mode 100644
index 0000000..e2e7a87
--- /dev/null
+++ b/src/uni_modules/mp-html/components/mp-html/parser.js
@@ -0,0 +1,1335 @@
+/**
+ * @fileoverview html 解析器
+ */
+
+// 配置
+const config = {
+ // 信任的标签(保持标签名不变)
+ trustTags: makeMap('a,abbr,ad,audio,b,blockquote,br,code,col,colgroup,dd,del,dl,dt,div,em,fieldset,h1,h2,h3,h4,h5,h6,hr,i,img,ins,label,legend,li,ol,p,q,ruby,rt,source,span,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,title,ul,video'),
+
+ // 块级标签(转为 div,其他的非信任标签转为 span)
+ blockTags: makeMap('address,article,aside,body,caption,center,cite,footer,header,html,nav,pre,section'),
+
+ // #ifdef (MP-WEIXIN || MP-QQ || APP-PLUS || MP-360) && VUE3
+ // 行内标签
+ inlineTags: makeMap('abbr,b,big,code,del,em,i,ins,label,q,small,span,strong,sub,sup'),
+ // #endif
+
+ // 要移除的标签
+ ignoreTags: makeMap('area,base,canvas,embed,frame,head,iframe,input,link,map,meta,param,rp,script,source,style,textarea,title,track,wbr'),
+
+ // 自闭合的标签
+ voidTags: makeMap('area,base,br,col,circle,ellipse,embed,frame,hr,img,input,line,link,meta,param,path,polygon,rect,source,track,use,wbr'),
+
+ // html 实体
+ entities: {
+ lt: '<',
+ gt: '>',
+ quot: '"',
+ apos: "'",
+ ensp: '\u2002',
+ emsp: '\u2003',
+ nbsp: '\xA0',
+ semi: ';',
+ ndash: '–',
+ mdash: '—',
+ middot: '·',
+ lsquo: '‘',
+ rsquo: '’',
+ ldquo: '“',
+ rdquo: '”',
+ bull: '•',
+ hellip: '…',
+ larr: '←',
+ uarr: '↑',
+ rarr: '→',
+ darr: '↓'
+ },
+
+ // 默认的标签样式
+ tagStyle: {
+ // #ifndef APP-PLUS-NVUE
+ address: 'font-style:italic',
+ big: 'display:inline;font-size:1.2em',
+ caption: 'display:table-caption;text-align:center',
+ center: 'text-align:center',
+ cite: 'font-style:italic',
+ dd: 'margin-left:40px',
+ mark: 'background-color:yellow',
+ pre: 'font-family:monospace;white-space:pre',
+ s: 'text-decoration:line-through',
+ small: 'display:inline;font-size:0.8em',
+ strike: 'text-decoration:line-through',
+ u: 'text-decoration:underline'
+ // #endif
+ },
+
+ // svg 大小写对照表
+ svgDict: {
+ animatetransform: 'animateTransform',
+ lineargradient: 'linearGradient',
+ viewbox: 'viewBox',
+ attributename: 'attributeName',
+ repeatcount: 'repeatCount',
+ repeatdur: 'repeatDur'
+ }
+}
+const tagSelector={}
+const {
+ windowWidth,
+ // #ifdef MP-WEIXIN
+ system
+ // #endif
+} = uni.getSystemInfoSync()
+const blankChar = makeMap(' ,\r,\n,\t,\f')
+let idIndex = 0
+
+// #ifdef H5 || APP-PLUS
+config.ignoreTags.iframe = undefined
+config.trustTags.iframe = true
+config.ignoreTags.embed = undefined
+config.trustTags.embed = true
+// #endif
+// #ifdef APP-PLUS-NVUE
+config.ignoreTags.source = undefined
+config.ignoreTags.style = undefined
+// #endif
+
+/**
+ * @description 创建 map
+ * @param {String} str 逗号分隔
+ */
+function makeMap (str) {
+ const map = Object.create(null)
+ const list = str.split(',')
+ for (let i = list.length; i--;) {
+ map[list[i]] = true
+ }
+ return map
+}
+
+/**
+ * @description 解码 html 实体
+ * @param {String} str 要解码的字符串
+ * @param {Boolean} amp 要不要解码 &
+ * @returns {String} 解码后的字符串
+ */
+function decodeEntity (str, amp) {
+ let i = str.indexOf('&')
+ while (i !== -1) {
+ const j = str.indexOf(';', i + 3)
+ let code
+ if (j === -1) break
+ if (str[i + 1] === '#') {
+ // { 形式的实体
+ code = parseInt((str[i + 2] === 'x' ? '0' : '') + str.substring(i + 2, j))
+ if (!isNaN(code)) {
+ str = str.substr(0, i) + String.fromCharCode(code) + str.substr(j + 1)
+ }
+ } else {
+ // 形式的实体
+ code = str.substring(i + 1, j)
+ if (config.entities[code] || (code === 'amp' && amp)) {
+ str = str.substr(0, i) + (config.entities[code] || '&') + str.substr(j + 1)
+ }
+ }
+ i = str.indexOf('&', i + 1)
+ }
+ return str
+}
+
+/**
+ * @description 合并多个块级标签,加快长内容渲染
+ * @param {Array} nodes 要合并的标签数组
+ */
+function mergeNodes (nodes) {
+ let i = nodes.length - 1
+ for (let j = i; j >= -1; j--) {
+ if (j === -1 || nodes[j].c || !nodes[j].name || (nodes[j].name !== 'div' && nodes[j].name !== 'p' && nodes[j].name[0] !== 'h') || (nodes[j].attrs.style || '').includes('inline')) {
+ if (i - j >= 5) {
+ nodes.splice(j + 1, i - j, {
+ name: 'div',
+ attrs: {},
+ children: nodes.slice(j + 1, i + 1)
+ })
+ }
+ i = j - 1
+ }
+ }
+}
+
+/**
+ * @description html 解析器
+ * @param {Object} vm 组件实例
+ */
+function Parser (vm) {
+ this.options = vm || {}
+ this.tagStyle = Object.assign({}, config.tagStyle, this.options.tagStyle)
+ this.imgList = vm.imgList || []
+ this.imgList._unloadimgs = 0
+ this.plugins = vm.plugins || []
+ this.attrs = Object.create(null)
+ this.stack = []
+ this.nodes = []
+ this.pre = (this.options.containerStyle || '').includes('white-space') && this.options.containerStyle.includes('pre') ? 2 : 0
+}
+
+/**
+ * @description 执行解析
+ * @param {String} content 要解析的文本
+ */
+Parser.prototype.parse = function (content) {
+ // 插件处理
+ for (let i = this.plugins.length; i--;) {
+ if (this.plugins[i].onUpdate) {
+ content = this.plugins[i].onUpdate(content, config) || content
+ }
+ }
+
+ new Lexer(this).parse(content)
+ // 出栈未闭合的标签
+ while (this.stack.length) {
+ this.popNode()
+ }
+ if (this.nodes.length > 50) {
+ mergeNodes(this.nodes)
+ }
+ return this.nodes
+}
+
+/**
+ * @description 将标签暴露出来(不被 rich-text 包含)
+ */
+Parser.prototype.expose = function () {
+ // #ifndef APP-PLUS-NVUE
+ for (let i = this.stack.length; i--;) {
+ const item = this.stack[i]
+ if (item.c || item.name === 'a' || item.name === 'video' || item.name === 'audio') return
+ item.c = 1
+ }
+ // #endif
+}
+
+/**
+ * @description 处理插件
+ * @param {Object} node 要处理的标签
+ * @returns {Boolean} 是否要移除此标签
+ */
+Parser.prototype.hook = function (node) {
+ for (let i = this.plugins.length; i--;) {
+ if (this.plugins[i].onParse && this.plugins[i].onParse(node, this) === false) {
+ return false
+ }
+ }
+ return true
+}
+
+/**
+ * @description 将链接拼接上主域名
+ * @param {String} url 需要拼接的链接
+ * @returns {String} 拼接后的链接
+ */
+Parser.prototype.getUrl = function (url) {
+ const domain = this.options.domain
+ if (url[0] === '/') {
+ if (url[1] === '/') {
+ // // 开头的补充协议名
+ url = (domain ? domain.split('://')[0] : 'http') + ':' + url
+ } else if (domain) {
+ // 否则补充整个域名
+ url = domain + url
+ } /* #ifdef APP-PLUS */ else {
+ url = plus.io.convertLocalFileSystemURL(url)
+ } /* #endif */
+ } else if (!url.includes('data:') && !url.includes('://')) {
+ if (domain) {
+ url = domain + '/' + url
+ } /* #ifdef APP-PLUS */ else {
+ url = plus.io.convertLocalFileSystemURL(url)
+ } /* #endif */
+ }
+ return url
+}
+
+/**
+ * @description 解析样式表
+ * @param {Object} node 标签
+ * @returns {Object}
+ */
+Parser.prototype.parseStyle = function (node) {
+ const attrs = node.attrs
+ const list = (this.tagStyle[node.name] || '').split(';').concat((attrs.style || '').split(';'))
+ const styleObj = {}
+ let tmp = ''
+
+ if (attrs.id && !this.xml) {
+ // 暴露锚点
+ if (this.options.useAnchor) {
+ this.expose()
+ } else if (node.name !== 'img' && node.name !== 'a' && node.name !== 'video' && node.name !== 'audio') {
+ attrs.id = undefined
+ }
+ }
+
+ // 转换 width 和 height 属性
+ if (attrs.width) {
+ styleObj.width = parseFloat(attrs.width) + (attrs.width.includes('%') ? '%' : 'px')
+ attrs.width = undefined
+ }
+ if (attrs.height) {
+ styleObj.height = parseFloat(attrs.height) + (attrs.height.includes('%') ? '%' : 'px')
+ attrs.height = undefined
+ }
+
+ for (let i = 0, len = list.length; i < len; i++) {
+ const info = list[i].split(':')
+ if (info.length < 2) continue
+ const key = info.shift().trim().toLowerCase()
+ let value = info.join(':').trim()
+ if ((value[0] === '-' && value.lastIndexOf('-') > 0) || value.includes('safe')) {
+ // 兼容性的 css 不压缩
+ tmp += `;${key}:${value}`
+ } else if (!styleObj[key] || value.includes('import') || !styleObj[key].includes('import')) {
+ // 重复的样式进行覆盖
+ if (value.includes('url')) {
+ // 填充链接
+ let j = value.indexOf('(') + 1
+ if (j) {
+ while (value[j] === '"' || value[j] === "'" || blankChar[value[j]]) {
+ j++
+ }
+ value = value.substr(0, j) + this.getUrl(value.substr(j))
+ }
+ } else if (value.includes('rpx')) {
+ // 转换 rpx(rich-text 内部不支持 rpx)
+ value = value.replace(/[0-9.]+\s*rpx/g, $ => parseFloat($) * windowWidth / 750 + 'px')
+ }
+ styleObj[key] = value
+ }
+ }
+
+ node.attrs.style = tmp
+ return styleObj
+}
+
+/**
+ * @description 解析到标签名
+ * @param {String} name 标签名
+ * @private
+ */
+Parser.prototype.onTagName = function (name) {
+ this.tagName = this.xml ? name : name.toLowerCase()
+ if (this.tagName === 'svg') {
+ this.xml = (this.xml || 0) + 1 // svg 标签内大小写敏感
+ config.ignoreTags.style = undefined // svg 标签内 style 可用
+ }
+}
+
+/**
+ * @description 解析到属性名
+ * @param {String} name 属性名
+ * @private
+ */
+Parser.prototype.onAttrName = function (name) {
+ name = this.xml ? name : name.toLowerCase()
+ if (name.substr(0, 5) === 'data-') {
+ if (name === 'data-src' && !this.attrs.src) {
+ // data-src 自动转为 src
+ this.attrName = 'src'
+ } else if (this.tagName === 'img' || this.tagName === 'a') {
+ // a 和 img 标签保留 data- 的属性,可以在 imgtap 和 linktap 事件中使用
+ this.attrName = name
+ } else {
+ // 剩余的移除以减小大小
+ this.attrName = undefined
+ }
+ } else {
+ this.attrName = name
+ this.attrs[name] = 'T' // boolean 型属性缺省设置
+ }
+}
+
+/**
+ * @description 解析到属性值
+ * @param {String} val 属性值
+ * @private
+ */
+Parser.prototype.onAttrVal = function (val) {
+ const name = this.attrName || ''
+ if (name === 'style' || name === 'href') {
+ // 部分属性进行实体解码
+ this.attrs[name] = decodeEntity(val, true)
+ } else if (name.includes('src')) {
+ // 拼接主域名
+ this.attrs[name] = this.getUrl(decodeEntity(val, true))
+ } else if (name) {
+ this.attrs[name] = val
+ }
+}
+
+/**
+ * @description 解析到标签开始
+ * @param {Boolean} selfClose 是否有自闭合标识 />
+ * @private
+ */
+Parser.prototype.onOpenTag = function (selfClose) {
+ // 拼装 node
+ const node = Object.create(null)
+ node.name = this.tagName
+ node.attrs = this.attrs
+ // 避免因为自动 diff 使得 type 被设置为 null 导致部分内容不显示
+ if (this.options.nodes.length) {
+ node.type = 'node'
+ }
+ this.attrs = Object.create(null)
+
+ const attrs = node.attrs
+ const parent = this.stack[this.stack.length - 1]
+ const siblings = parent ? parent.children : this.nodes
+ const close = this.xml ? selfClose : config.voidTags[node.name]
+
+ // 替换标签名选择器
+ if (tagSelector[node.name]) {
+ attrs.class = tagSelector[node.name] + (attrs.class ? ' ' + attrs.class : '')
+ }
+
+ // 转换 embed 标签
+ if (node.name === 'embed') {
+ // #ifndef H5 || APP-PLUS
+ const src = attrs.src || ''
+ // 按照后缀名和 type 将 embed 转为 video 或 audio
+ if (src.includes('.mp4') || src.includes('.3gp') || src.includes('.m3u8') || (attrs.type || '').includes('video')) {
+ node.name = 'video'
+ } else if (src.includes('.mp3') || src.includes('.wav') || src.includes('.aac') || src.includes('.m4a') || (attrs.type || '').includes('audio')) {
+ node.name = 'audio'
+ }
+ if (attrs.autostart) {
+ attrs.autoplay = 'T'
+ }
+ attrs.controls = 'T'
+ // #endif
+ // #ifdef H5 || APP-PLUS
+ this.expose()
+ // #endif
+ }
+
+ // #ifndef APP-PLUS-NVUE
+ // 处理音视频
+ if (node.name === 'video' || node.name === 'audio') {
+ // 设置 id 以便获取 context
+ if (node.name === 'video' && !attrs.id) {
+ attrs.id = 'v' + idIndex++
+ }
+ // 没有设置 controls 也没有设置 autoplay 的自动设置 controls
+ if (!attrs.controls && !attrs.autoplay) {
+ attrs.controls = 'T'
+ }
+ // 用数组存储所有可用的 source
+ node.src = []
+ if (attrs.src) {
+ node.src.push(attrs.src)
+ attrs.src = undefined
+ }
+ this.expose()
+ }
+ // #endif
+
+ // 处理自闭合标签
+ if (close) {
+ if (!this.hook(node) || config.ignoreTags[node.name]) {
+ // 通过 base 标签设置主域名
+ if (node.name === 'base' && !this.options.domain) {
+ this.options.domain = attrs.href
+ } /* #ifndef APP-PLUS-NVUE */ else if (node.name === 'source' && parent && (parent.name === 'video' || parent.name === 'audio') && attrs.src) {
+ // 设置 source 标签(仅父节点为 video 或 audio 时有效)
+ parent.src.push(attrs.src)
+ } /* #endif */
+ return
+ }
+
+ // 解析 style
+ const styleObj = this.parseStyle(node)
+
+ // 处理图片
+ if (node.name === 'img') {
+ if (attrs.src) {
+ // 标记 webp
+ if (attrs.src.includes('webp')) {
+ node.webp = 'T'
+ }
+ // data url 图片如果没有设置 original-src 默认为不可预览的小图片
+ if (attrs.src.includes('data:') && !attrs['original-src']) {
+ attrs.ignore = 'T'
+ }
+ if (!attrs.ignore || node.webp || attrs.src.includes('cloud://')) {
+ for (let i = this.stack.length; i--;) {
+ const item = this.stack[i]
+ if (item.name === 'a') {
+ node.a = item.attrs
+ }
+ if (item.name === 'table' && !node.webp && !attrs.src.includes('cloud://')) {
+ if (!styleObj.display || styleObj.display.includes('inline')) {
+ node.t = 'inline-block'
+ } else {
+ node.t = styleObj.display
+ }
+ styleObj.display = undefined
+ }
+ // #ifndef H5 || APP-PLUS
+ const style = item.attrs.style || ''
+ if (style.includes('flex:') && !style.includes('flex:0') && !style.includes('flex: 0') && (!styleObj.width || parseInt(styleObj.width) > 100)) {
+ styleObj.width = '100% !important'
+ styleObj.height = ''
+ for (let j = i + 1; j < this.stack.length; j++) {
+ this.stack[j].attrs.style = (this.stack[j].attrs.style || '').replace('inline-', '')
+ }
+ } else if (style.includes('flex') && styleObj.width === '100%') {
+ for (let j = i + 1; j < this.stack.length; j++) {
+ const style = this.stack[j].attrs.style || ''
+ if (!style.includes(';width') && !style.includes(' width') && style.indexOf('width') !== 0) {
+ styleObj.width = ''
+ break
+ }
+ }
+ } else if (style.includes('inline-block')) {
+ if (styleObj.width && styleObj.width[styleObj.width.length - 1] === '%') {
+ item.attrs.style += ';max-width:' + styleObj.width
+ styleObj.width = ''
+ } else {
+ item.attrs.style += ';max-width:100%'
+ }
+ }
+ // #endif
+ item.c = 1
+ }
+ attrs.i = this.imgList.length.toString()
+ let src = attrs['original-src'] || attrs.src
+ // #ifndef H5 || MP-ALIPAY || APP-PLUS || MP-360
+ if (this.imgList.includes(src)) {
+ // 如果有重复的链接则对域名进行随机大小写变换避免预览时错位
+ let i = src.indexOf('://')
+ if (i !== -1) {
+ i += 3
+ let newSrc = src.substr(0, i)
+ for (; i < src.length; i++) {
+ if (src[i] === '/') break
+ newSrc += Math.random() > 0.5 ? src[i].toUpperCase() : src[i]
+ }
+ newSrc += src.substr(i)
+ src = newSrc
+ }
+ }
+ // #endif
+ this.imgList.push(src)
+ if (!node.t) {
+ this.imgList._unloadimgs += 1
+ }
+ // #ifdef H5 || APP-PLUS
+ if (this.options.lazyLoad) {
+ attrs['data-src'] = attrs.src
+ attrs.src = undefined
+ }
+ // #endif
+ }
+ }
+ if (styleObj.display === 'inline') {
+ styleObj.display = ''
+ }
+ // #ifndef APP-PLUS-NVUE
+ if (attrs.ignore) {
+ styleObj['max-width'] = styleObj['max-width'] || '100%'
+ attrs.style += ';-webkit-touch-callout:none'
+ }
+ // #endif
+ // 设置的宽度超出屏幕,为避免变形,高度转为自动
+ if (parseInt(styleObj.width) > windowWidth) {
+ styleObj.height = undefined
+ }
+ // 记录是否设置了宽高
+ if (!isNaN(parseInt(styleObj.width))) {
+ node.w = 'T'
+ }
+ if (!isNaN(parseInt(styleObj.height)) && (!styleObj.height.includes('%') || (parent && (parent.attrs.style || '').includes('height')))) {
+ node.h = 'T'
+ }
+ } else if (node.name === 'svg') {
+ siblings.push(node)
+ this.stack.push(node)
+ this.popNode()
+ return
+ }
+ for (const key in styleObj) {
+ if (styleObj[key]) {
+ attrs.style += `;${key}:${styleObj[key].replace(' !important', '')}`
+ }
+ }
+ attrs.style = attrs.style.substr(1) || undefined
+ // #ifdef (MP-WEIXIN || MP-QQ) && VUE3
+ if (!attrs.style) {
+ delete attrs.style
+ }
+ // #endif
+ } else {
+ if ((node.name === 'pre' || ((attrs.style || '').includes('white-space') && attrs.style.includes('pre'))) && this.pre !== 2) {
+ this.pre = node.pre = 1
+ }
+ node.children = []
+ this.stack.push(node)
+ }
+
+ // 加入节点树
+ siblings.push(node)
+}
+
+/**
+ * @description 解析到标签结束
+ * @param {String} name 标签名
+ * @private
+ */
+Parser.prototype.onCloseTag = function (name) {
+ // 依次出栈到匹配为止
+ name = this.xml ? name : name.toLowerCase()
+ let i
+ for (i = this.stack.length; i--;) {
+ if (this.stack[i].name === name) break
+ }
+ if (i !== -1) {
+ while (this.stack.length > i) {
+ this.popNode()
+ }
+ } else if (name === 'p' || name === 'br') {
+ const siblings = this.stack.length ? this.stack[this.stack.length - 1].children : this.nodes
+ siblings.push({
+ name,
+ attrs: {
+ class: tagSelector[name] || '',
+ style: this.tagStyle[name] || ''
+ }
+ })
+ }
+}
+
+/**
+ * @description 处理标签出栈
+ * @private
+ */
+Parser.prototype.popNode = function () {
+ const node = this.stack.pop()
+ let attrs = node.attrs
+ const children = node.children
+ const parent = this.stack[this.stack.length - 1]
+ const siblings = parent ? parent.children : this.nodes
+
+ if (!this.hook(node) || config.ignoreTags[node.name]) {
+ // 获取标题
+ if (node.name === 'title' && children.length && children[0].type === 'text' && this.options.setTitle) {
+ uni.setNavigationBarTitle({
+ title: children[0].text
+ })
+ }
+ siblings.pop()
+ return
+ }
+
+ if (node.pre && this.pre !== 2) {
+ // 是否合并空白符标识
+ this.pre = node.pre = undefined
+ for (let i = this.stack.length; i--;) {
+ if (this.stack[i].pre) {
+ this.pre = 1
+ }
+ }
+ }
+
+ const styleObj = {}
+
+ // 转换 svg
+ if (node.name === 'svg') {
+ if (this.xml > 1) {
+ // 多层 svg 嵌套
+ this.xml--
+ return
+ }
+ // #ifdef APP-PLUS-NVUE
+ (function traversal (node) {
+ if (node.name) {
+ // 调整 svg 的大小写
+ node.name = config.svgDict[node.name] || node.name
+ for (const item in node.attrs) {
+ if (config.svgDict[item]) {
+ node.attrs[config.svgDict[item]] = node.attrs[item]
+ node.attrs[item] = undefined
+ }
+ }
+ for (let i = 0; i < (node.children || []).length; i++) {
+ traversal(node.children[i])
+ }
+ }
+ })(node)
+ // #endif
+ // #ifndef APP-PLUS-NVUE
+ let src = ''
+ const style = attrs.style
+ attrs.style = ''
+ attrs.xmlns = 'http://www.w3.org/2000/svg';
+ (function traversal (node) {
+ if (node.type === 'text') {
+ src += node.text
+ return
+ }
+ const name = config.svgDict[node.name] || node.name
+ src += '<' + name
+ for (const item in node.attrs) {
+ const val = node.attrs[item]
+ if (val) {
+ src += ` ${config.svgDict[item] || item}="${val}"`
+ }
+ }
+ if (!node.children) {
+ src += '/>'
+ } else {
+ src += '>'
+ for (let i = 0; i < node.children.length; i++) {
+ traversal(node.children[i])
+ }
+ src += '' + name + '>'
+ }
+ })(node)
+ node.name = 'img'
+ node.attrs = {
+ src: 'data:image/svg+xml;utf8,' + src.replace(/#/g, '%23'),
+ style,
+ ignore: 'T'
+ }
+ node.children = undefined
+ // #endif
+ this.xml = false
+ config.ignoreTags.style = true
+ return
+ }
+
+ // #ifndef APP-PLUS-NVUE
+ // 转换 align 属性
+ if (attrs.align) {
+ if (node.name === 'table') {
+ if (attrs.align === 'center') {
+ styleObj['margin-inline-start'] = styleObj['margin-inline-end'] = 'auto'
+ } else {
+ styleObj.float = attrs.align
+ }
+ } else {
+ styleObj['text-align'] = attrs.align
+ }
+ attrs.align = undefined
+ }
+
+ // 转换 dir 属性
+ if (attrs.dir) {
+ styleObj.direction = attrs.dir
+ attrs.dir = undefined
+ }
+
+ // 转换 font 标签的属性
+ if (node.name === 'font') {
+ if (attrs.color) {
+ styleObj.color = attrs.color
+ attrs.color = undefined
+ }
+ if (attrs.face) {
+ styleObj['font-family'] = attrs.face
+ attrs.face = undefined
+ }
+ if (attrs.size) {
+ let size = parseInt(attrs.size)
+ if (!isNaN(size)) {
+ if (size < 1) {
+ size = 1
+ } else if (size > 7) {
+ size = 7
+ }
+ styleObj['font-size'] = ['x-small', 'small', 'medium', 'large', 'x-large', 'xx-large', 'xxx-large'][size - 1]
+ }
+ attrs.size = undefined
+ }
+ }
+ // #endif
+
+ // 一些编辑器的自带 class
+ if ((attrs.class || '').includes('align-center')) {
+ styleObj['text-align'] = 'center'
+ }
+
+ Object.assign(styleObj, this.parseStyle(node))
+
+ if (node.name !== 'table' && parseInt(styleObj.width) > windowWidth) {
+ styleObj['max-width'] = '100%'
+ styleObj['box-sizing'] = 'border-box'
+ }
+
+ // #ifndef APP-PLUS-NVUE
+ if (config.blockTags[node.name]) {
+ node.name = 'div'
+ } else if (!config.trustTags[node.name] && !this.xml) {
+ // 未知标签转为 span,避免无法显示
+ node.name = 'span'
+ }
+
+ if (node.name === 'a' || node.name === 'ad'
+ // #ifdef H5 || APP-PLUS
+ || node.name === 'iframe' // eslint-disable-line
+ // #endif
+ ) {
+ this.expose()
+ } else if (node.name === 'video') {
+ if ((styleObj.height || '').includes('auto')) {
+ styleObj.height = undefined
+ }
+ /* #ifdef APP-PLUS */
+ let str = ''
+ node.html = str
+ /* #endif */
+ } else if ((node.name === 'ul' || node.name === 'ol') && node.c) {
+ // 列表处理
+ const types = {
+ a: 'lower-alpha',
+ A: 'upper-alpha',
+ i: 'lower-roman',
+ I: 'upper-roman'
+ }
+ if (types[attrs.type]) {
+ attrs.style += ';list-style-type:' + types[attrs.type]
+ attrs.type = undefined
+ }
+ for (let i = children.length; i--;) {
+ if (children[i].name === 'li') {
+ children[i].c = 1
+ }
+ }
+ } else if (node.name === 'table') {
+ // 表格处理
+ // cellpadding、cellspacing、border 这几个常用表格属性需要通过转换实现
+ let padding = parseFloat(attrs.cellpadding)
+ let spacing = parseFloat(attrs.cellspacing)
+ const border = parseFloat(attrs.border)
+ const bordercolor = styleObj['border-color']
+ const borderstyle = styleObj['border-style']
+ if (node.c) {
+ // padding 和 spacing 默认 2
+ if (isNaN(padding)) {
+ padding = 2
+ }
+ if (isNaN(spacing)) {
+ spacing = 2
+ }
+ }
+ if (border) {
+ attrs.style += `;border:${border}px ${borderstyle || 'solid'} ${bordercolor || 'gray'}`
+ }
+ if (node.flag && node.c) {
+ // 有 colspan 或 rowspan 且含有链接的表格通过 grid 布局实现
+ styleObj.display = 'grid'
+ if (spacing) {
+ styleObj['grid-gap'] = spacing + 'px'
+ styleObj.padding = spacing + 'px'
+ } else if (border) {
+ // 无间隔的情况下避免边框重叠
+ attrs.style += ';border-left:0;border-top:0'
+ }
+
+ const width = [] // 表格的列宽
+ const trList = [] // tr 列表
+ const cells = [] // 保存新的单元格
+ const map = {}; // 被合并单元格占用的格子
+
+ (function traversal (nodes) {
+ for (let i = 0; i < nodes.length; i++) {
+ if (nodes[i].name === 'tr') {
+ trList.push(nodes[i])
+ } else {
+ traversal(nodes[i].children || [])
+ }
+ }
+ })(children)
+
+ for (let row = 1; row <= trList.length; row++) {
+ let col = 1
+ for (let j = 0; j < trList[row - 1].children.length; j++) {
+ const td = trList[row - 1].children[j]
+ if (td.name === 'td' || td.name === 'th') {
+ // 这个格子被上面的单元格占用,则列号++
+ while (map[row + '.' + col]) {
+ col++
+ }
+ let style = td.attrs.style || ''
+ let start = style.indexOf('width') ? style.indexOf(';width') : 0
+ // 提取出 td 的宽度
+ if (start !== -1) {
+ let end = style.indexOf(';', start + 6)
+ if (end === -1) {
+ end = style.length
+ }
+ if (!td.attrs.colspan) {
+ width[col] = style.substring(start ? start + 7 : 6, end)
+ }
+ style = style.substr(0, start) + style.substr(end)
+ }
+ // 设置竖直对齐
+ style += ';display:flex'
+ start = style.indexOf('vertical-align')
+ if (start !== -1) {
+ const val = style.substr(start + 15, 10)
+ if (val.includes('middle')) {
+ style += ';align-items:center'
+ } else if (val.includes('bottom')) {
+ style += ';align-items:flex-end'
+ }
+ } else {
+ style += ';align-items:center'
+ }
+ // 设置水平对齐
+ start = style.indexOf('text-align')
+ if (start !== -1) {
+ const val = style.substr(start + 11, 10)
+ if (val.includes('center')) {
+ style += ';justify-content: center'
+ } else if (val.includes('right')) {
+ style += ';justify-content: right'
+ }
+ }
+ style = (border ? `;border:${border}px ${borderstyle || 'solid'} ${bordercolor || 'gray'}` + (spacing ? '' : ';border-right:0;border-bottom:0') : '') + (padding ? `;padding:${padding}px` : '') + ';' + style
+ // 处理列合并
+ if (td.attrs.colspan) {
+ style += `;grid-column-start:${col};grid-column-end:${col + parseInt(td.attrs.colspan)}`
+ if (!td.attrs.rowspan) {
+ style += `;grid-row-start:${row};grid-row-end:${row + 1}`
+ }
+ col += parseInt(td.attrs.colspan) - 1
+ }
+ // 处理行合并
+ if (td.attrs.rowspan) {
+ style += `;grid-row-start:${row};grid-row-end:${row + parseInt(td.attrs.rowspan)}`
+ if (!td.attrs.colspan) {
+ style += `;grid-column-start:${col};grid-column-end:${col + 1}`
+ }
+ // 记录下方单元格被占用
+ for (let rowspan = 1; rowspan < td.attrs.rowspan; rowspan++) {
+ for (let colspan = 0; colspan < (td.attrs.colspan || 1); colspan++) {
+ map[(row + rowspan) + '.' + (col - colspan)] = 1
+ }
+ }
+ }
+ if (style) {
+ td.attrs.style = style
+ }
+ cells.push(td)
+ col++
+ }
+ }
+ if (row === 1) {
+ let temp = ''
+ for (let i = 1; i < col; i++) {
+ temp += (width[i] ? width[i] : 'auto') + ' '
+ }
+ styleObj['grid-template-columns'] = temp
+ }
+ }
+ node.children = cells
+ } else {
+ // 没有使用合并单元格的表格通过 table 布局实现
+ if (node.c) {
+ styleObj.display = 'table'
+ }
+ if (!isNaN(spacing)) {
+ styleObj['border-spacing'] = spacing + 'px'
+ }
+ if (border || padding) {
+ // 遍历
+ (function traversal (nodes) {
+ for (let i = 0; i < nodes.length; i++) {
+ const td = nodes[i]
+ if (td.name === 'th' || td.name === 'td') {
+ if (border) {
+ td.attrs.style = `border:${border}px ${borderstyle || 'solid'} ${bordercolor || 'gray'};${td.attrs.style || ''}`
+ }
+ if (padding) {
+ td.attrs.style = `padding:${padding}px;${td.attrs.style || ''}`
+ }
+ } else if (td.children) {
+ traversal(td.children)
+ }
+ }
+ })(children)
+ }
+ }
+ // 给表格添加一个单独的横向滚动层
+ if (this.options.scrollTable && !(attrs.style || '').includes('inline')) {
+ const table = Object.assign({}, node)
+ node.name = 'div'
+ node.attrs = {
+ style: 'overflow:auto'
+ }
+ node.children = [table]
+ attrs = table.attrs
+ }
+ } else if ((node.name === 'td' || node.name === 'th') && (attrs.colspan || attrs.rowspan)) {
+ for (let i = this.stack.length; i--;) {
+ if (this.stack[i].name === 'table') {
+ this.stack[i].flag = 1 // 指示含有合并单元格
+ break
+ }
+ }
+ } else if (node.name === 'ruby') {
+ // 转换 ruby
+ node.name = 'span'
+ for (let i = 0; i < children.length - 1; i++) {
+ if (children[i].type === 'text' && children[i + 1].name === 'rt') {
+ children[i] = {
+ name: 'div',
+ attrs: {
+ style: 'display:inline-block;text-align:center'
+ },
+ children: [{
+ name: 'div',
+ attrs: {
+ style: 'font-size:50%;' + (children[i + 1].attrs.style || '')
+ },
+ children: children[i + 1].children
+ }, children[i]]
+ }
+ children.splice(i + 1, 1)
+ }
+ }
+ } else if (node.c) {
+ (function traversal (node) {
+ node.c = 2
+ for (let i = node.children.length; i--;) {
+ const child = node.children[i]
+ // #ifdef (MP-WEIXIN || MP-QQ || APP-PLUS || MP-360) && VUE3
+ if (child.name && (config.inlineTags[child.name] || ((child.attrs.style || '').includes('inline') && child.children)) && !child.c) {
+ traversal(child)
+ }
+ // #endif
+ if (!child.c || child.name === 'table') {
+ node.c = 1
+ }
+ }
+ })(node)
+ }
+
+ if ((styleObj.display || '').includes('flex') && !node.c) {
+ for (let i = children.length; i--;) {
+ const item = children[i]
+ if (item.f) {
+ item.attrs.style = (item.attrs.style || '') + item.f
+ item.f = undefined
+ }
+ }
+ }
+ // flex 布局时部分样式需要提取到 rich-text 外层
+ const flex = parent && ((parent.attrs.style || '').includes('flex') || (parent.attrs.style || '').includes('grid'))
+ // #ifdef MP-WEIXIN
+ // 检查基础库版本 virtualHost 是否可用
+ && !(node.c && wx.getNFCAdapter) // eslint-disable-line
+ // #endif
+ // #ifndef MP-WEIXIN || MP-QQ || MP-BAIDU || MP-TOUTIAO
+ && !node.c // eslint-disable-line
+ // #endif
+ if (flex) {
+ node.f = ';max-width:100%'
+ }
+
+ if (children.length >= 50 && node.c && !(styleObj.display || '').includes('flex')) {
+ mergeNodes(children)
+ }
+ // #endif
+
+ for (const key in styleObj) {
+ if (styleObj[key]) {
+ const val = `;${key}:${styleObj[key].replace(' !important', '')}`
+ /* #ifndef APP-PLUS-NVUE */
+ if (flex && ((key.includes('flex') && key !== 'flex-direction') || key === 'align-self' || key.includes('grid') || styleObj[key][0] === '-' || (key.includes('width') && val.includes('%')))) {
+ node.f += val
+ if (key === 'width') {
+ attrs.style += ';width:100%'
+ }
+ } else /* #endif */ {
+ attrs.style += val
+ }
+ }
+ }
+ attrs.style = attrs.style.substr(1) || undefined
+ // #ifdef (MP-WEIXIN || MP-QQ) && VUE3
+ for (const key in attrs) {
+ if (!attrs[key]) {
+ delete attrs[key]
+ }
+ }
+ // #endif
+}
+
+/**
+ * @description 解析到文本
+ * @param {String} text 文本内容
+ */
+Parser.prototype.onText = function (text) {
+ if (!this.pre) {
+ // 合并空白符
+ let trim = ''
+ let flag
+ for (let i = 0, len = text.length; i < len; i++) {
+ if (!blankChar[text[i]]) {
+ trim += text[i]
+ } else {
+ if (trim[trim.length - 1] !== ' ') {
+ trim += ' '
+ }
+ if (text[i] === '\n' && !flag) {
+ flag = true
+ }
+ }
+ }
+ // 去除含有换行符的空串
+ if (trim === ' ') {
+ if (flag) return
+ // #ifdef VUE3
+ else {
+ const parent = this.stack[this.stack.length - 1]
+ if (parent && parent.name[0] === 't') return
+ }
+ // #endif
+ }
+ text = trim
+ }
+ const node = Object.create(null)
+ node.type = 'text'
+ // #ifdef (MP-BAIDU || MP-ALIPAY || MP-TOUTIAO) && VUE3
+ node.attrs = {}
+ // #endif
+ node.text = decodeEntity(text)
+ if (this.hook(node)) {
+ // #ifdef MP-WEIXIN
+ if (this.options.selectable === 'force' && system.includes('iOS') && !uni.canIUse('rich-text.user-select')) {
+ this.expose()
+ }
+ // #endif
+ const siblings = this.stack.length ? this.stack[this.stack.length - 1].children : this.nodes
+ siblings.push(node)
+ }
+}
+
+/**
+ * @description html 词法分析器
+ * @param {Object} handler 高层处理器
+ */
+function Lexer (handler) {
+ this.handler = handler
+}
+
+/**
+ * @description 执行解析
+ * @param {String} content 要解析的文本
+ */
+Lexer.prototype.parse = function (content) {
+ this.content = content || ''
+ this.i = 0 // 标记解析位置
+ this.start = 0 // 标记一个单词的开始位置
+ this.state = this.text // 当前状态
+ for (let len = this.content.length; this.i !== -1 && this.i < len;) {
+ this.state()
+ }
+}
+
+/**
+ * @description 检查标签是否闭合
+ * @param {String} method 如果闭合要进行的操作
+ * @returns {Boolean} 是否闭合
+ * @private
+ */
+Lexer.prototype.checkClose = function (method) {
+ const selfClose = this.content[this.i] === '/'
+ if (this.content[this.i] === '>' || (selfClose && this.content[this.i + 1] === '>')) {
+ if (method) {
+ this.handler[method](this.content.substring(this.start, this.i))
+ }
+ this.i += selfClose ? 2 : 1
+ this.start = this.i
+ this.handler.onOpenTag(selfClose)
+ if (this.handler.tagName === 'script') {
+ this.i = this.content.indexOf('', this.i)
+ if (this.i !== -1) {
+ this.i += 2
+ this.start = this.i
+ }
+ this.state = this.endTag
+ } else {
+ this.state = this.text
+ }
+ return true
+ }
+ return false
+}
+
+/**
+ * @description 文本状态
+ * @private
+ */
+Lexer.prototype.text = function () {
+ this.i = this.content.indexOf('<', this.i) // 查找最近的标签
+ if (this.i === -1) {
+ // 没有标签了
+ if (this.start < this.content.length) {
+ this.handler.onText(this.content.substring(this.start, this.content.length))
+ }
+ return
+ }
+ const c = this.content[this.i + 1]
+ if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
+ // 标签开头
+ if (this.start !== this.i) {
+ this.handler.onText(this.content.substring(this.start, this.i))
+ }
+ this.start = ++this.i
+ this.state = this.tagName
+ } else if (c === '/' || c === '!' || c === '?') {
+ if (this.start !== this.i) {
+ this.handler.onText(this.content.substring(this.start, this.i))
+ }
+ const next = this.content[this.i + 2]
+ if (c === '/' && ((next >= 'a' && next <= 'z') || (next >= 'A' && next <= 'Z'))) {
+ // 标签结尾
+ this.i += 2
+ this.start = this.i
+ this.state = this.endTag
+ return
+ }
+ // 处理注释
+ let end = '-->'
+ if (c !== '!' || this.content[this.i + 2] !== '-' || this.content[this.i + 3] !== '-') {
+ end = '>'
+ }
+ this.i = this.content.indexOf(end, this.i)
+ if (this.i !== -1) {
+ this.i += end.length
+ this.start = this.i
+ }
+ } else {
+ this.i++
+ }
+}
+
+/**
+ * @description 标签名状态
+ * @private
+ */
+Lexer.prototype.tagName = function () {
+ if (blankChar[this.content[this.i]]) {
+ // 解析到标签名
+ this.handler.onTagName(this.content.substring(this.start, this.i))
+ while (blankChar[this.content[++this.i]]);
+ if (this.i < this.content.length && !this.checkClose()) {
+ this.start = this.i
+ this.state = this.attrName
+ }
+ } else if (!this.checkClose('onTagName')) {
+ this.i++
+ }
+}
+
+/**
+ * @description 属性名状态
+ * @private
+ */
+Lexer.prototype.attrName = function () {
+ let c = this.content[this.i]
+ if (blankChar[c] || c === '=') {
+ // 解析到属性名
+ this.handler.onAttrName(this.content.substring(this.start, this.i))
+ let needVal = c === '='
+ const len = this.content.length
+ while (++this.i < len) {
+ c = this.content[this.i]
+ if (!blankChar[c]) {
+ if (this.checkClose()) return
+ if (needVal) {
+ // 等号后遇到第一个非空字符
+ this.start = this.i
+ this.state = this.attrVal
+ return
+ }
+ if (this.content[this.i] === '=') {
+ needVal = true
+ } else {
+ this.start = this.i
+ this.state = this.attrName
+ return
+ }
+ }
+ }
+ } else if (!this.checkClose('onAttrName')) {
+ this.i++
+ }
+}
+
+/**
+ * @description 属性值状态
+ * @private
+ */
+Lexer.prototype.attrVal = function () {
+ const c = this.content[this.i]
+ const len = this.content.length
+ if (c === '"' || c === "'") {
+ // 有冒号的属性
+ this.start = ++this.i
+ this.i = this.content.indexOf(c, this.i)
+ if (this.i === -1) return
+ this.handler.onAttrVal(this.content.substring(this.start, this.i))
+ } else {
+ // 没有冒号的属性
+ for (; this.i < len; this.i++) {
+ if (blankChar[this.content[this.i]]) {
+ this.handler.onAttrVal(this.content.substring(this.start, this.i))
+ break
+ } else if (this.checkClose('onAttrVal')) return
+ }
+ }
+ while (blankChar[this.content[++this.i]]);
+ if (this.i < len && !this.checkClose()) {
+ this.start = this.i
+ this.state = this.attrName
+ }
+}
+
+/**
+ * @description 结束标签状态
+ * @returns {String} 结束的标签名
+ * @private
+ */
+Lexer.prototype.endTag = function () {
+ const c = this.content[this.i]
+ if (blankChar[c] || c === '>' || c === '/') {
+ this.handler.onCloseTag(this.content.substring(this.start, this.i))
+ if (c !== '>') {
+ this.i = this.content.indexOf('>', this.i)
+ if (this.i === -1) return
+ }
+ this.start = ++this.i
+ this.state = this.text
+ } else {
+ this.i++
+ }
+}
+
+export default Parser
diff --git a/src/uni_modules/mp-html/package.json b/src/uni_modules/mp-html/package.json
new file mode 100644
index 0000000..5959db8
--- /dev/null
+++ b/src/uni_modules/mp-html/package.json
@@ -0,0 +1,76 @@
+{
+ "id": "mp-html",
+ "displayName": "mp-html 富文本组件【全端支持,支持编辑、latex等扩展】",
+ "version": "v2.4.2",
+ "description": "一个强大的富文本组件,高效轻量,功能丰富",
+ "keywords": [
+ "富文本",
+ "编辑器",
+ "html",
+ "rich-text",
+ "editor"
+ ],
+ "repository": "https://github.com/jin-yufeng/mp-html",
+ "dcloudext": {
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/mp-html",
+ "type": "component-vue"
+ },
+ "uni_modules": {
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "u",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y"
+ },
+ "快应用": {
+ "华为": "y",
+ "联盟": "y"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/uni_modules/mp-html/static/app-plus/mp-html/js/handler.js b/src/uni_modules/mp-html/static/app-plus/mp-html/js/handler.js
new file mode 100644
index 0000000..1d986bd
--- /dev/null
+++ b/src/uni_modules/mp-html/static/app-plus/mp-html/js/handler.js
@@ -0,0 +1 @@
+"use strict";function t(t){for(var e=Object.create(null),n=t.attributes.length;n--;)e[t.attributes[n].name]=t.attributes[n].value;return e}function e(){a[1]&&(this.src=a[1],this.onerror=null),this.onclick=null,this.ontouchstart=null,uni.postMessage({data:{action:"onError",source:"img",attrs:t(this)}})}function n(){window.unloadimgs-=1,0===window.unloadimgs&&uni.postMessage({data:{action:"onReady"}})}function o(r,s,c){for(var d=0;d0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;a("navigateTo",{url:encodeURI(n)})},navigateBack:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.delta;a("navigateBack",{delta:parseInt(n)||1})},switchTab:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;a("switchTab",{url:encodeURI(n)})},reLaunch:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;a("reLaunch",{url:encodeURI(n)})},redirectTo:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;a("redirectTo",{url:encodeURI(n)})},getEnv:function(e){window.plus?e({plus:!0}):e({h5:!0})},postMessage:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};a("postMessage",e.data||{})}},r=/uni-app/i.test(navigator.userAgent),d=/Html5Plus/i.test(navigator.userAgent),s=/complete|loaded|interactive/;var w=window.my&&navigator.userAgent.indexOf("AlipayClient")>-1;var u=window.swan&&window.swan.webView&&/swan/i.test(navigator.userAgent);var c=window.qq&&window.qq.miniProgram&&/QQ/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var g=window.tt&&window.tt.miniProgram&&/toutiaomicroapp/i.test(navigator.userAgent);var v=window.wx&&window.wx.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var p=window.qa&&/quickapp/i.test(navigator.userAgent);for(var l,_=function(){window.UniAppJSBridge=!0,document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady",{bubbles:!0,cancelable:!0}))},f=[function(e){if(r||d)return window.__dcloud_weex_postMessage||window.__dcloud_weex_?document.addEventListener("DOMContentLoaded",e):window.plus&&s.test(document.readyState)?setTimeout(e,0):document.addEventListener("plusready",e),o},function(e){if(v)return window.WeixinJSBridge&&window.WeixinJSBridge.invoke?setTimeout(e,0):document.addEventListener("WeixinJSBridgeReady",e),window.wx.miniProgram},function(e){if(c)return window.QQJSBridge&&window.QQJSBridge.invoke?setTimeout(e,0):document.addEventListener("QQJSBridgeReady",e),window.qq.miniProgram},function(e){if(w){document.addEventListener("DOMContentLoaded",e);var n=window.my;return{navigateTo:n.navigateTo,navigateBack:n.navigateBack,switchTab:n.switchTab,reLaunch:n.reLaunch,redirectTo:n.redirectTo,postMessage:n.postMessage,getEnv:n.getEnv}}},function(e){if(u)return document.addEventListener("DOMContentLoaded",e),window.swan.webView},function(e){if(g)return document.addEventListener("DOMContentLoaded",e),window.tt.miniProgram},function(e){if(p){window.QaJSBridge&&window.QaJSBridge.invoke?setTimeout(e,0):document.addEventListener("QaJSBridgeReady",e);var n=window.qa;return{navigateTo:n.navigateTo,navigateBack:n.navigateBack,switchTab:n.switchTab,reLaunch:n.reLaunch,redirectTo:n.redirectTo,postMessage:n.postMessage,getEnv:n.getEnv}}},function(e){return document.addEventListener("DOMContentLoaded",e),o}],m=0;m
\ No newline at end of file
diff --git a/src/uni_modules/p-f-unicom/1.jpg b/src/uni_modules/p-f-unicom/1.jpg
new file mode 100644
index 0000000..a27b392
Binary files /dev/null and b/src/uni_modules/p-f-unicom/1.jpg differ
diff --git a/src/uni_modules/p-f-unicom/README.md b/src/uni_modules/p-f-unicom/README.md
new file mode 100644
index 0000000..ca436ae
--- /dev/null
+++ b/src/uni_modules/p-f-unicom/README.md
@@ -0,0 +1,188 @@
+## p-f-unicom 跨层级通信插件,解决非父子通信的痛点
+
+> 前言:我们在使用`Vue`进行开发时如何能够解决非父子组件之间的一个通信问题,那如果碰到这样一个问题其实按照一般的开发步骤解决起来是非常繁琐的可能各种的`parent`、`children`或者有人可能会直接定义在全局环境上那这样的操作会使得你的项目在越来越复杂的业务开发中变得非常的脆弱。
+
+##### `p-f-unicom` 自定义插件:
+
+1. 它是`Vue.js`的一个自定义插件,解决了`Vue`中非父子组件通讯的痛点。
+2. 利用订阅者和发布者模式来管理消息。
+
+##### 功能:
+1. 任意一个`Vue`组件向其他所有组件发送指令。
+2. 任意一个`Vue`组件向某组`Vue`组件发送指令。
+3. 任意一个`Vue`组件向特定`unicom-id`组件发送消息。
+4. 在任意一个`Vue`组件内获取某组组件列表。
+5. 在任意一个`Vue`组件内获取特定`unciom-id`组件。
+6. 发送指令到还没初始化的`unicom-id`组件。
+7. 发送指令到还没初始化的`unicom-group`分组组件。
+8. 组件销毁时自动销毁绑定的订阅事件。
+
+##### 使用:
+`main.js` 注册`Unicom`插件
+
+`unicom`是插件内置的名称,如果需要修改可以在`Vue.use`时自定义。
+```javascript
+// 导入
+import unicom from './plugin/p-f-unicom.js'
+// 使用
+Vue.use(unicom, {
+ name: 'unicom',
+ idName: 'unicomId',
+ groupName: 'unicomGroup'
+})
+```
+
+##### Vue组件内部使用
+
+child.vue (订阅)
+```javascript
+
+
+ // ......
+
+
+
+```
+index.vue (发布)
+
+```javascript
+
+
+ // unicom-id 不能和其它组件所定的 unicom-id 相同
+ // unicom-group 定义组的名称数组,会和组件内的 `unicomGroup` 合并并去重 ,不定义默认使用 child 组件内的 `unicomGroup`
+
+
+
+
+```
+
+
+#### 发布的使用模式:
+
+##### 组件已经存在
+
+instruct1 是指令也就是你在 vue 组件中定义的接收消息的事件名称:
+
+```javascript
+unicom: {
+ instruct1(sender, oQueryParams, aYearList) {
+ // 查询栏消息
+ console.log('订阅消息', JSON.stringify(oQueryParams), aYearList);
+ }
+}
+```
+
+1. instruct1@group (发送到指定分组)
+2. instruct1#id1 (发送到指定组件)
+3. @group (获取指定分组组件)
+4. #id1 (获取指定组件)
+
+##### 组件还未创建,延迟发送指令(一次性指令)
+
+指令使用 ~ 打头
+
+1. ~instruct1 (指令延迟发送,直到包含有 `instruct1` 指令的组件出现)
+2. ~instruct1@group (指令延迟发送,直到出现分组命名`group`的组件)
+3. ~instruct1#id1 (指令延迟发送,直到出现命名`id1`的组件)
+
+如果你的组件是通过点击按钮这样通过判断来渲染出来的,那么事件的执行可以按下面的示例:
+
+```javascript
+this.$unicom('~onQuery111@industrialAnalyseFilterGroup', 'hello'); // 这个是发送组件未创建时的指令,指令将被缓存等待组件创建后触发onQuery111指令方法
+this.$unicom('onQuery111@industrialAnalyseFilterGroup', 'hello111'); // 第二次向已经创建完成的组件发送指令onQuery111需要使用不带~号的形式
+```
+
+对应的组件
+```javascript
+
+ 我不是初始化时就渲染
+
+
+```
+
+
+##### 组件监听
+
+组件监听使用,指令使用 ~ 打头, 第二个参数为 `callback` 回调
+
+```
+methods: {
+ doExec () {
+ this.$unicom('~#child-id', function(child){
+ // `child`组件创建完成,从 `child` 组件的`created`函数触发出来,所以请不要操作 `child`组件的 dom 元素,组件挂载请监听 this.$nextTick
+ })
+ }
+}
+```
+
+1. ~@group (监听分组命名group的组件出现)
+2. ~#id1 (监听命名id1的组件出现)
+
+具体的使用 demo 请参考 v-demo 目录。
+
+
+*****
+注:
+1.此插件原始地址:[vue-plugins](https://gitee.com/zhangh-design/vue-plugins)。
+2.版权归原作者所有,仅为了方便,挂上插件市场。
+3.对原作者表示感谢!
\ No newline at end of file
diff --git a/src/uni_modules/p-f-unicom/changelog.md b/src/uni_modules/p-f-unicom/changelog.md
new file mode 100644
index 0000000..def70bc
--- /dev/null
+++ b/src/uni_modules/p-f-unicom/changelog.md
@@ -0,0 +1,2 @@
+## 1.0.0(2023-02-02)
+init
diff --git a/src/uni_modules/p-f-unicom/index.js b/src/uni_modules/p-f-unicom/index.js
new file mode 100644
index 0000000..02fb908
--- /dev/null
+++ b/src/uni_modules/p-f-unicom/index.js
@@ -0,0 +1,369 @@
+import _get from 'lodash/get'
+import _set from 'lodash/set'
+import _isEmpty from 'lodash/isEmpty'
+import _isEqual from 'lodash/isEqual'
+import _forEach from 'lodash/forEach'
+import _isUndefined from 'lodash/isUndefined'
+import _flattenDeep from 'lodash/flattenDeep'
+import _toString from 'lodash/toString'
+import _has from 'lodash/has'
+import _includes from 'lodash/includes'
+import _keys from 'lodash/keys'
+import _isFunction from 'lodash/isFunction'
+import _uniq from 'lodash/uniq'
+import _flatMap from 'lodash/flatMap'
+import _union from 'lodash/union'
+/**
+ * @desc
+ * Vue 跨组件通信插件
+ */
+let unicomIdName = ''
+let unicomGroupName = ''
+// vm容器、分组、事件、命名 唯一、推迟触发的事件
+const [vmMap, groupForVm, events, idForVm, sendDefer] = [new Map(), {}, {}, {}, []]
+/**
+ * @desc 触发执行事件
+ * @param {string} method - 指令的名称
+ * @param {string} toKey - 目标组件的 unicomId 或者 unicomGroup
+ * @param {string} aim - 标识 (#)
+ * @param {Array} args - 参数
+ */
+const emitEvent = function (method, toKey, aim, args) {
+ const evs = _get(events, method, [])
+ let evLen = 0
+ const len = evs.length
+ // 循环已经注册的指令
+ for (evLen; evLen < len; evLen++) {
+ // 存储的数据
+ const { fn, scope } = evs[evLen]
+ if (_isEqual(aim, '#')) {
+ // id
+ if (scope[unicomIdName] !== toKey) {
+ // 目标不存在
+ continue
+ }
+ } else if (_isEqual(aim, '@')) {
+ // 分组
+ const group = _get(vmMap.get(scope), 'group', [])
+ if (_isEmpty(group) || _isEqual(_includes(group, toKey), false)) {
+ // 目标不存在
+ continue
+ }
+ }
+ _isEqual(_isUndefined(scope), false) && fn.apply(scope, args)
+ }
+ // 返回被触发的指令
+ return evLen
+}
+/**
+ * @desc 发送容器 或者 获得 目标容器
+ * @param {string} query - 指令名称 (~instruct1#id1)
+ * @param {...any} args - 可变参数
+ */
+const unicomQuery = function (query, ...args) {
+ let [toKey, aim, defer, eventIndex] = ['', '', false, -1]
+ // query=instruct1#id1
+ const method = query
+ .replace(/^([`~])/, function (s0, s1) {
+ // query=~instruct1#id1
+ if (_isEqual(s1, '~')) {
+ defer = true
+ }
+ return ''
+ })
+ .replace(/([@#])([^@#]*)$/, function (s0, s1, s2) {
+ // query=instruct1@child-a
+ // s0=@child-a s1=@ s2=child-a
+ toKey = s2
+ aim = s1
+ return ''
+ })
+ // method=instruct1
+ if (defer) {
+ sendDefer.push([method, toKey, aim, args, this])
+ return this
+ }
+ if (_isEqual(_isEqual(method, ''), false)) {
+ args.unshift(this)
+ eventIndex = emitEvent(method, toKey, aim, args)
+ }
+ // 获取目标 vm
+ switch (aim) {
+ case '#':
+ return _get(idForVm, toKey, null)
+ case '@':
+ return _get(groupForVm, toKey, [])
+ }
+ return eventIndex
+}
+/**
+ * @desc 更新分组
+ * @param {Object} scope - 组件的实例
+ * @param {string[]} nv - 指令 unicom-group 传入的组数据 (新)
+ * @param {string[]} [ov] - 指令 unicom-group 传入的组数据 (旧)
+ */
+const updateName = function (scope, nv, ov) {
+ // 实例上设置分组
+ const vmData = vmMap.get(scope) || {}
+ const group = _get(vmData, 'group', [])
+ // 删除旧的 vm
+ if (_isEqual(_isUndefined(ov), false)) {
+ _uniq(_flattenDeep(_flatMap(ov))).forEach(function (key) {
+ if (_includes(group, key)) {
+ const vms = _get(groupForVm, key, [])
+ _isEqual(_isEmpty(vms), false) && vms.splice(vms.indexOf(scope), 1)
+ if (_isEmpty(vms)) {
+ group.splice(group.indexOf(key), 1)
+ Reflect.deleteProperty(groupForVm, key)
+ }
+ }
+ })
+ }
+ // 增加新的
+ if (_isEqual(_isUndefined(nv), false)) {
+ _uniq(_flattenDeep(_flatMap(nv))).forEach(function (key) {
+ const vms = _get(groupForVm, key, [])
+ if (_isEmpty(vms)) {
+ _set(groupForVm, key, vms)
+ }
+ // 新添加 组件 到组里面
+ if (_isEqual(_includes(vms, scope), false)) {
+ vms.push(scope)
+ }
+ if (_isEqual(_includes(group, key), false)) {
+ group.push(key)
+ }
+ })
+ }
+}
+/**
+ * @desc 更新 unicomId
+ * @param {Object} scope - 组件的实例
+ * @param {string} newValue - 指令 unicom-id 传入的id数据 (新)
+ * @param {string} [oldValue] - 指令 unicom-id 传入的id数据 (旧)
+ */
+const updateId = function (scope, newValue, oldValue) {
+ if (_isEqual(newValue, oldValue)) {
+ return
+ }
+ if (_isEqual(_isUndefined(oldValue), false) && _isEqual(_get(idForVm, oldValue), scope)) {
+ // watch 监测值修改需要删除,组件销毁时需要删除
+ Reflect.deleteProperty(idForVm, oldValue)
+ }
+ if (_isEqual(_isUndefined(newValue), false) && _isEqual(_has(idForVm, newValue), false)) {
+ _set(idForVm, newValue, scope)
+ } else if (_isEqual(_isUndefined(newValue), false) && _has(idForVm, newValue)) {
+ console.warn(`${unicomIdName}='${newValue}'的组件已经定义并存在。`)
+ }
+}
+/**
+ * @desc 添加事件
+ * @param {string} method - 指令的名称
+ * @param {function} fn - 指令名称对应的函数
+ * @param {Object} scope - 指令名称对应函数所运行的作用域
+ */
+const appendEvent = function (method, fn, scope) {
+ if (_isEqual(_has(events, method), false)) {
+ events[method] = []
+ }
+ if (_isFunction(fn)) {
+ events[method].push({ fn, scope, method })
+ }
+}
+/**
+ * @desc 移除事件
+ * @param {string} method - 指令的名称
+ * @param {Object} scope - 指令名称对应函数所运行的作用域
+ */
+const removeEvent = function (method, scope) {
+ const evs = _get(events, method, [])
+ if (_isEqual(_isEmpty(evs), false)) {
+ for (let i = 0; i < evs.length; i++) {
+ if (_isEqual(scope, evs[i].scope)) {
+ evs.splice(i, 1)
+ }
+ }
+ }
+}
+export default {
+ install (Vue, { name = 'unicom', idName = `${name}Id`, groupName = `${name}Group` } = {}) {
+ // 添加原型方法 (unicomQuery 函数放在 install 外部不然无法获取调用函数的 this 对象)
+ Vue.prototype['$' + name] = unicomQuery
+ // unicom-id
+ unicomIdName = idName
+ // 分组 unicom-group
+ unicomGroupName = groupName
+ // 全局混入
+ Vue.mixin({
+ props: {
+ // 命名 unicom-id="id1"
+ [idName]: {
+ type: String,
+ default: ''
+ },
+ // 分组(纯字符串类数组不能是真实的数组) unicom-group="['child-a', 'child-b']"
+ [groupName]: {
+ type: Array,
+ default: () => []
+ }
+ },
+ watch: {
+ [idName] (nv, ov) {
+ updateId(this, nv, ov)
+ },
+ [groupName]: {
+ deep: true,
+ handler (nv, ov) {
+ updateName(this, nv, ov);
+ }
+ }
+ },
+ // 创建的时候加入事件机制
+ beforeCreate () {
+ const opt = this.$options
+ const vmData = {}
+ const [us, uni, group] = [
+ _get(opt, name, {}),
+ (vmData.uni = {}),
+ (vmData.group = [])
+ ]
+ if (_isEqual(_isEmpty(us), false)) {
+ _forEach(us, opt => {
+ if (_isEmpty(opt)) {
+ return true
+ }
+ _forEach(opt, (handler, key) => {
+ if (_isEqual(_isUndefined(handler), false)) {
+ _isUndefined(_get(uni, key)) && _set(uni, key, [])
+ uni[key].push(handler)
+ // 添加事件
+ appendEvent(key, handler, this)
+ }
+ })
+ })
+ }
+ // 命名分组
+ const groupNameOpt = _get(opt, groupName, [])
+ if (_isEqual(_isEmpty(groupNameOpt), false)) {
+ _forEach(_uniq(_flattenDeep(_flatMap(groupNameOpt))), item => {
+ const key = _toString(item)
+ _isUndefined(_get(groupForVm, key)) && (groupForVm[key] = [])
+ group.push(key)
+ groupForVm[key].push(this)
+ })
+ }
+ if (_isEqual(_isEmpty(group), false) || _isEqual(_isEmpty(uni), false)) {
+ vmMap.set(this, vmData)
+ }
+ },
+ created () {
+ // 实例命名 唯一
+ const uId = this[idName]
+ const uGroupName = this[groupName]
+ _isEqual(_isEqual(uId, ''), false) && updateId(this, uId)
+ _isEqual(_isEmpty(uGroupName), false) && updateName(this, uGroupName)
+ // 实例上设置分组
+ const vmData = vmMap.get(this) || {}
+ for (let i = 0; i < sendDefer.length; i++) {
+ const [method, toKey, aim, args, scope] = sendDefer[i]
+ let flag = false
+ if (_isEqual(aim, '#')) {
+ if (_isEqual(toKey, uId)) {
+ flag = true
+ }
+ } else if (_isEqual(aim, '@')) {
+ if (
+ _isEqual(_isUndefined(_get(vmData, 'group')), false) &&
+ _includes(_get(vmData, 'group'), toKey)
+ ) {
+ flag = true
+ }
+ } else {
+ if (
+ _isEqual(method, '') ||
+ _includes(_keys(_get(vmData, 'uni', {})), method)
+ ) {
+ flag = true
+ }
+ }
+ if (flag) {
+ // 延后,并且方法为空
+ if (_isEqual(method, '')) {
+ /**
+ * @desc 监听组件事件
+ * @example
+ * this.$unicom('~#id1', function (childScope) {// unicomId=id1的组件创建完成})
+ */
+ if (_isFunction(args[0])) {
+ args[0](this)
+ }
+ } else {
+ sendDefer.splice(i--, 1)
+ args.unshift(scope)
+ emitEvent(method, toKey, aim, args)
+ }
+ }
+ }
+ },
+ // 全局混合,销毁实例的时候销毁事件
+ destroyed () {
+ // 移除唯一ID
+ const uId = this[idName]
+ if (_isEqual(_isEqual(uId, ''), false)) {
+ updateId(this, undefined, uId)
+ }
+ // 移除 命名分组、实例命名
+ const uGroupName = _get(this, groupName, [])
+ const optGroupName = _get(this.$options, groupName, [])
+ if (_isEqual(_isEmpty(uGroupName), false) || _isEqual(_isEmpty(optGroupName), false)) {
+ updateName(this, undefined, _union(uGroupName, optGroupName))
+ }
+
+ const vmData = vmMap.get(this)
+ if (_isUndefined(vmData)) {
+ return
+ }
+ vmMap.delete(this)
+
+ const uni = _get(vmData, 'uni', {})
+ // 移除事件
+ for (const key in uni) {
+ removeEvent(key, this)
+ }
+ // 分组,一对多, 单个vm可以多个分组名称 组件命名
+ const group = _get(vmData, 'group', [])
+ _forEach(group, function (name) {
+ const gs = groupForVm[name]
+ if (_isEqual(_isUndefined(gs), false)) {
+ const index = gs.indexOf(this)
+ if (index > -1) {
+ gs.splice(index, 1)
+ }
+ if (gs.length === 0) {
+ delete groupForVm[name]
+ }
+ }
+ })
+ // 监控销毁 method为空
+ for (let i = 0; i < sendDefer.length;) {
+ const pms = sendDefer[i]
+ if (_isEqual(pms[0], '') && _isEqual(pms[4], this)) {
+ sendDefer.splice(i, 1)
+ } else {
+ i += 1
+ }
+ }
+ }
+ })
+ // 自定义属性合并策略
+ // 混入(mixins)时不是简单的覆盖而是追加
+ const merge = _get(Vue, 'config.optionMergeStrategies', {})
+ merge[name] = merge[unicomGroupName] = function (parentVal, childVal) {
+ const p = parentVal || []
+ if (_isEqual(_isUndefined(childVal), false)) {
+ p.push(childVal)
+ }
+ return p
+ }
+ }
+}
diff --git a/src/uni_modules/p-f-unicom/package.json b/src/uni_modules/p-f-unicom/package.json
new file mode 100644
index 0000000..0d18f9a
--- /dev/null
+++ b/src/uni_modules/p-f-unicom/package.json
@@ -0,0 +1,84 @@
+{
+ "id": "p-f-unicom",
+ "displayName": "p-f-unicom",
+ "version": "1.0.0",
+ "description": "p-f-unicom",
+ "keywords": [
+ "p-f-unicom"
+],
+ "repository": "https://gitee.com/zhangh-design/vue-plugins",
+ "engines": {
+ "HBuilderX": "^3.1.0"
+ },
+ "dcloudext": {
+ "type": "sdk-js",
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": ""
+ },
+ "uni_modules": {
+ "dependencies": [],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "Vue": {
+ "vue2": "u",
+ "vue3": "u"
+ },
+ "App": {
+ "app-vue": "u",
+ "app-nvue": "u"
+ },
+ "H5-mobile": {
+ "Safari": "u",
+ "Android Browser": "u",
+ "微信浏览器(Android)": "u",
+ "QQ浏览器(Android)": "u"
+ },
+ "H5-pc": {
+ "Chrome": "u",
+ "IE": "u",
+ "Edge": "u",
+ "Firefox": "u",
+ "Safari": "u"
+ },
+ "小程序": {
+ "微信": "u",
+ "阿里": "u",
+ "百度": "u",
+ "字节跳动": "u",
+ "QQ": "u",
+ "钉钉": "u",
+ "快手": "u",
+ "飞书": "u",
+ "京东": "u"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ }
+ }
+ }
+ },
+ "dependencies": {
+ "lodash": "^4.17.21"
+ }
+}
diff --git a/src/uni_modules/zp-mixins/changelog.md b/src/uni_modules/zp-mixins/changelog.md
new file mode 100644
index 0000000..c7e7b0e
--- /dev/null
+++ b/src/uni_modules/zp-mixins/changelog.md
@@ -0,0 +1,14 @@
+## 1.0.6(2023-04-12)
+为防冲突,给selectComponent两个函数添加前缀zp
+## 1.0.5(2023-03-28)
+修复ts项目找不到setData的问题
+## 1.0.4(2023-03-07)
+修复小程序报错
+## 1.0.3(2023-02-26)
+修复pageLifetimes
+## 1.0.2(2023-01-06)
+增加使用文档
+## 1.0.1(2022-12-07)
+更新文档
+## 1.0.0(2022-12-07)
+init
diff --git a/src/uni_modules/zp-mixins/index.js b/src/uni_modules/zp-mixins/index.js
new file mode 100644
index 0000000..9e2edd9
--- /dev/null
+++ b/src/uni_modules/zp-mixins/index.js
@@ -0,0 +1,52 @@
+//lifetimes
+import { pageLifetimes } from './lifecycle/pageLifetimes';
+
+//methods
+import { clone } from './methods/clone';
+import { handleDataset } from './methods/dataset';
+import { escape2Html, html2Escape } from './methods/escape';
+import { parseEventDynamicCode } from './methods/event';
+import { getTabBar } from './methods/getTabBar';
+import { getRelationNodes } from './methods/relation';
+import { selectComponent as zpSelectComponent,
+ selectAllComponents as zpSelectAllComponents } from './methods/selectComponent';
+import { setData } from './methods/setData';
+
+export default {
+ // #ifndef VUE3
+ install(Vue, option) {
+ Vue.mixin({
+ ...pageLifetimes,
+ methods: {
+ clone,
+ handleDataset,
+ escape2Html,
+ html2Escape,
+ parseEventDynamicCode,
+ getTabBar,
+ getRelationNodes,
+ zpSelectComponent,
+ zpSelectAllComponents,
+ setData
+ }
+ })
+ }
+ // #endif
+
+ // #ifdef VUE3
+ ...pageLifetimes,
+ methods: {
+ clone,
+ handleDataset,
+ escape2Html,
+ html2Escape,
+ parseEventDynamicCode,
+ getTabBar,
+ getRelationNodes,
+ zpSelectComponent,
+ zpSelectAllComponents,
+ setData
+ }
+ // #endif
+}
+
diff --git a/src/uni_modules/zp-mixins/index.ts b/src/uni_modules/zp-mixins/index.ts
new file mode 100644
index 0000000..00ac2ea
--- /dev/null
+++ b/src/uni_modules/zp-mixins/index.ts
@@ -0,0 +1,31 @@
+import Vue from 'vue';
+
+//lifetimes
+import { pageLifetimes } from './lifecycle/pageLifetimes';
+
+//methods
+import { clone } from './methods/clone';
+import { handleDataset } from './methods/dataset';
+import { escape2Html, html2Escape } from './methods/escape';
+import { parseEventDynamicCode } from './methods/event';
+import { getTabBar } from './methods/getTabBar';
+import { getRelationNodes } from './methods/relation';
+import { selectComponent as zpSelectComponent, selectAllComponents as zpSelectAllComponents } from './methods/selectComponent';
+import { setData } from './methods/setData';
+
+// console.log("lifecycle", lifecycle)
+export default Vue.extend({
+ ...pageLifetimes,
+ methods: {
+ clone,
+ handleDataset,
+ escape2Html,
+ html2Escape,
+ parseEventDynamicCode,
+ getTabBar,
+ getRelationNodes,
+ zpSelectComponent,
+ zpSelectAllComponents,
+ setData
+ }
+});
diff --git a/src/uni_modules/zp-mixins/lifecycle/index.js b/src/uni_modules/zp-mixins/lifecycle/index.js
new file mode 100644
index 0000000..cf21608
--- /dev/null
+++ b/src/uni_modules/zp-mixins/lifecycle/index.js
@@ -0,0 +1,2 @@
+export * from './pageLifetimes'
+
diff --git a/src/uni_modules/zp-mixins/lifecycle/pageLifetimes.js b/src/uni_modules/zp-mixins/lifecycle/pageLifetimes.js
new file mode 100644
index 0000000..e831cad
--- /dev/null
+++ b/src/uni_modules/zp-mixins/lifecycle/pageLifetimes.js
@@ -0,0 +1,32 @@
+/**
+ * 组件pageLifetimes处理,需在页面生命周期里调用
+ * @param {Object} node
+ * @param {Object} lifeName
+ */
+function handlePageLifetime(node, lifeName) {
+ node.$children.map(child => {
+ if (typeof child[lifeName] == 'function') child[lifeName]()
+ handlePageLifetime(child, lifeName)
+ })
+}
+
+export const pageLifetimes = {
+ onLoad() {
+ // #ifndef APP || MP-MP-WEIXIN || MP-KUAISHOU
+ uni.onWindowResize((res) => {
+ handlePageLifetime(this, "handlePageResize")
+ })
+ // #endif
+ },
+ onShow() {
+ handlePageLifetime(this, "handlePageShow")
+ },
+ onHide() {
+ handlePageLifetime(this, "handlePageHide")
+ },
+ onResize() {
+ // #ifdef APP || MP-MP-WEIXIN || MP-KUAISHOU
+ handlePageLifetime(this, "handlePageResize")
+ // #endif
+ }
+};
diff --git a/src/uni_modules/zp-mixins/methods/clone.js b/src/uni_modules/zp-mixins/methods/clone.js
new file mode 100644
index 0000000..3b03ccf
--- /dev/null
+++ b/src/uni_modules/zp-mixins/methods/clone.js
@@ -0,0 +1,10 @@
+/**
+ * 用于处理对props进行赋值的情况
+ * //简单处理一下就行了
+ *
+ * @param {*} target
+ * @returns
+ */
+export function clone(target) {
+ return JSON.parse(JSON.stringify(target))
+}
diff --git a/src/uni_modules/zp-mixins/methods/dataset.js b/src/uni_modules/zp-mixins/methods/dataset.js
new file mode 100644
index 0000000..b1c5dec
--- /dev/null
+++ b/src/uni_modules/zp-mixins/methods/dataset.js
@@ -0,0 +1,21 @@
+/**
+ * 用于处理dataset
+ * 自定义组件的事件里,是获取不到e.currentTarget.dataset的
+ * 因此收集data-参数,手动传进去
+ *
+ * @param {*} event
+ * @param {*} dataSet
+ */
+export function handleDataset(event, dataSet = {}) {
+ if (event && !event.currentTarget) {
+ if (dataSet.tagId) {
+ event.currentTarget = {
+ id: dataSet.tagId
+ }
+ } else {
+ event.currentTarget = {
+ dataset: dataSet
+ }
+ }
+ }
+}
diff --git a/src/uni_modules/zp-mixins/methods/escape.js b/src/uni_modules/zp-mixins/methods/escape.js
new file mode 100644
index 0000000..fc33de1
--- /dev/null
+++ b/src/uni_modules/zp-mixins/methods/escape.js
@@ -0,0 +1,36 @@
+/**
+ * 转义符换成普通字符
+ * @param {*} str
+ * @returns
+ */
+export function escape2Html(str) {
+ if (!str) return str
+ var arrEntities = {
+ 'lt': '<',
+ 'gt': '>',
+ 'nbsp': ' ',
+ 'amp': '&',
+ 'quot': '"'
+ }
+ return str.replace(/&(lt|gt|nbsp|amp|quot);/ig, function(all, t) {
+ return arrEntities[t]
+ })
+}
+
+/**
+ * 普通字符转换成转义符
+ * @param {*} sHtml
+ * @returns
+ */
+export function html2Escape(sHtml) {
+ if (!sHtml) return sHtml
+ return sHtml.replace(/[<>&"]/g, function(c) {
+ return {
+ '<': '<',
+ '>': '>',
+ '&': '&',
+ '"': '"'
+ } [c]
+ })
+}
+
diff --git a/src/uni_modules/zp-mixins/methods/event.js b/src/uni_modules/zp-mixins/methods/event.js
new file mode 100644
index 0000000..f255793
--- /dev/null
+++ b/src/uni_modules/zp-mixins/methods/event.js
@@ -0,0 +1,10 @@
+/**
+ * 解析事件里的动态函数名,这种没有()的函数名,在uniapp不被执行
+ * 比如:立即
+ * @param {*} exp
+ */
+export function parseEventDynamicCode(e, exp) {
+ if (typeof(this[exp]) === 'function') {
+ this[exp](e)
+ }
+}
diff --git a/src/uni_modules/zp-mixins/methods/getTabBar.js b/src/uni_modules/zp-mixins/methods/getTabBar.js
new file mode 100644
index 0000000..a948051
--- /dev/null
+++ b/src/uni_modules/zp-mixins/methods/getTabBar.js
@@ -0,0 +1,19 @@
+/**
+ * 接管getTabBar函数,默认uni-app是没有这个函数的
+ * 适用于使用custom-tab-bar自定义导航栏的小程序项目
+ * 需注意:
+ * 1.custom-tab-bar下面仍是小程序文件
+ * 2.pages.json里面需使用条件编译区分好小程序和非小程序的tabBar配置
+ */
+export function getTabBar() {
+ return {
+ setData(obj) {
+ if (typeof this.$mp?.page?.getTabBar === 'function' &&
+ this.$mp?.page?.getTabBar()) {
+ this.$mp.page.getTabBar().setData(obj)
+ } else {
+ console.log("当前平台不支持getTabBar(),已稍作处理,详细请参见相关文档。")
+ }
+ }
+ }
+}
diff --git a/src/uni_modules/zp-mixins/methods/index.js b/src/uni_modules/zp-mixins/methods/index.js
new file mode 100644
index 0000000..a52f0e8
--- /dev/null
+++ b/src/uni_modules/zp-mixins/methods/index.js
@@ -0,0 +1,8 @@
+export * from './clone'
+export * from './dataset'
+export * from './escape'
+export * from './event'
+export * from './getTabBar'
+export * from './relation'
+export * from './selectComponent'
+export * from './setData'
diff --git a/src/uni_modules/zp-mixins/methods/relation.js b/src/uni_modules/zp-mixins/methods/relation.js
new file mode 100644
index 0000000..035e0ff
--- /dev/null
+++ b/src/uni_modules/zp-mixins/methods/relation.js
@@ -0,0 +1,10 @@
+/**
+ * 组件间关系
+ * 注意:须与p-f-unicom配合使用!!!
+ * @param {*} name
+ * @returns
+ */
+export function getRelationNodes(name) {
+ if(!this.$unicom) throw "this.getRelationNodes()需与p-f-unicom配合使用!"
+ return this.$unicom('@' + name)
+}
diff --git a/src/uni_modules/zp-mixins/methods/selectComponent.js b/src/uni_modules/zp-mixins/methods/selectComponent.js
new file mode 100644
index 0000000..8b716bc
--- /dev/null
+++ b/src/uni_modules/zp-mixins/methods/selectComponent.js
@@ -0,0 +1,196 @@
+const createTraverse = () => {
+ let stop = false;
+ return function traverse(root, callback) {
+ if (!stop && typeof callback === 'function') {
+ let children = root.$children;
+ for (let index = 0; !stop && index < children.length; index++) {
+ let element = children[index];
+ stop = callback(element) === true;
+ traverse(element, callback);
+ }
+ }
+ };
+};
+
+/**
+ * 安全的JSON.stringify
+ * @param {Object} node
+ */
+function safeStringify(node) {
+ var cache = [];
+ var str = JSON.stringify(node, function(key, value) {
+ if (typeof value === 'object' && value !== null) {
+ if (cache.indexOf(value) !== -1) {
+ // 移除
+ return;
+ }
+ // 收集所有的值
+ cache.push(value);
+ }
+ return value;
+ });
+ cache = null; // 清空变量,便于垃圾回收机制回收
+ return str
+}
+
+const match = (node, selector) => {
+ var vnode = node._vnode;
+
+ //好家伙,在微信小程序里,node里面根本找不到class,因此这种方式没法搞了
+
+ //关键之处!
+ // console.log("attrs", (vnode.context.$vnode.data));
+ vnode = vnode?.context?.$vnode ?? ""
+ //console.log(vnode.data) --> [Object] {"staticClass":"bar","attrs":{"_i":0}} at selectComponent.js:72
+ if (!vnode || !vnode.data) {
+ return false
+ }
+
+ let attrs = vnode.data.attrs || {};
+ let staticClass = vnode.data.staticClass || '';
+
+ const id = attrs.id || '';
+ if (selector[0] === '#') {
+ return selector.substr(1) === id;
+ } else {
+ staticClass = staticClass.trim().split(' ');
+ selector = selector.substr(1).split('.');
+ return selector.reduce((a, c) => a && staticClass.includes(c), true);
+ }
+};
+
+const selectorBuilder = (selector) => {
+ selector = selector.replace(/>>>/g, '>');
+ selector = selector.split('>').map(s => {
+ return s.trim().split(' ').join(`').descendant('`);
+ }).join(`').child('`);
+
+ // 替换掉new Function方式,因为小程序不支持new Function和eval
+ //return new Function('Selector', 'node', 'all', `return new Selector(node, all).descendant('` + selector + `')`);
+ return function(Selector, node, all) {
+ return new Selector(node, all).descendant(selector)
+ }
+};
+
+class Selector {
+ constructor(node, all = false) {
+ this.nodes = [node];
+ this.all = all;
+ }
+
+ child(selector) {
+ let matches = [];
+ if (this.all) {
+ this.nodes.forEach(node => {
+ matches.push(...node.$children.filter(node => match(node, selector)));
+ });
+ } else {
+ if (this.nodes.length > 0) {
+ let node = this.nodes[0].$children.find(node => match(node, selector));
+ matches = node ? [node] : [];
+ }
+ }
+ this.nodes = matches;
+ return this;
+ }
+
+ descendant(selector) {
+ let matches = [];
+ this.nodes.forEach(root => {
+ createTraverse()(root, (node) => {
+ if (match(node, selector)) {
+ matches.push(node);
+ return !this.all;
+ }
+ });
+ });
+ this.nodes = matches;
+ return this;
+ }
+}
+////////////////////////////////////////////selectComponent//////////////////////////////////////////////////
+/**
+ * 其他平台,如APP
+ * @param {Object} selector
+ */
+function selectComponentOther(selector) {
+ const selectors = selector.split(',').map(s => s.trim());
+ if (!selectors[0]) {
+ return null;
+ }
+ const querySelector = selectorBuilder(selectors[0]);
+ return querySelector(Selector, this, false, selector).nodes[0];
+}
+
+
+/**
+ * 还是用这个微信小程序的实现吧
+ * @param {Object} selector
+ */
+var selectComponentWeiXin2 = function(selector) {
+ console.log(".$scope",this.$scope.selectComponent(selector))
+ return this.$scope.selectComponent(selector)?.data || undefined
+}
+
+/**
+ * selectComponent
+ * @param {Object} args
+ */
+export function selectComponent(args) {
+ // console.log(".$scope",this.$scope)
+ // #ifdef MP
+ //H5和小程序能正常使用这个函数
+ //重写selectComponent函数,因为默认会多一层$vm
+ return selectComponentWeiXin2.call(this, args)
+ // #endif
+
+ // #ifndef MP
+ // 因App的结构略有差异,此函数无法正常使用
+ // function(e){return function e(t,n){if(n(t.$vnode||t._vnode))return t;for(var r=t.$children,i=0;i s.trim());
+ let selected = [];
+ selectors.forEach(selector => {
+ const querySelector = selectorBuilder(selector);
+ selected = selected.concat(querySelector(Selector, this, true, selector).nodes);
+ });
+ return selected;
+}
+
+
+/**
+ * 还是用这个微信小程序的实现吧
+ * @param {Object} selector
+ */
+var selectAllComponentsWeiXin2 = function(selector) {
+ var list = this.$scope.selectAllComponents(selector) || []
+ list = list.map(item => item.data)
+ return list
+}
+
+/**
+ * selectAllComponents
+ * @param {Object} args
+ */
+export function selectAllComponents(args) {
+ // #ifdef MP
+ //H5和小程序能正常使用这个函数
+ //重写selectComponent函数,因为默认会多一层$vm
+ return selectAllComponentsWeiXin2.call(this, args)
+ // #endif
+
+ // #ifndef MP
+ // 因App的结构略有差异,此函数无法正常使用
+ return selectAllComponentsOther.call(this, args)
+ // #endif
+}
diff --git a/src/uni_modules/zp-mixins/methods/setData.js b/src/uni_modules/zp-mixins/methods/setData.js
new file mode 100644
index 0000000..46a0add
--- /dev/null
+++ b/src/uni_modules/zp-mixins/methods/setData.js
@@ -0,0 +1,90 @@
+import _set from '../utils/_set'
+import debounce from '../utils/debounce'
+
+/**
+ * 老setData polyfill
+ * 用于转换后的uniapp的项目能直接使用this.setData()函数
+ * @param {*} obj
+ * @param {*} callback
+ */
+function oldSetData (obj, callback) {
+ let that = this
+ const handleData = (tepData, tepKey, afterKey) => {
+ var tepData2 = tepData
+ tepKey = tepKey.split('.')
+ tepKey.forEach(item => {
+ if (tepData[item] === null || tepData[item] === undefined) {
+ let reg = /^[0-9]+$/
+ tepData[item] = reg.test(afterKey) ? [] : {}
+ tepData2 = tepData[item]
+ } else {
+ tepData2 = tepData[item]
+ }
+ })
+ return tepData2
+ }
+ const isFn = function (value) {
+ return typeof value == 'function' || false
+ }
+ Object.keys(obj).forEach(function (key) {
+ let val = obj[key]
+ key = key.replace(/\]/g, '').replace(/\[/g, '.')
+ let front, after
+ let index_after = key.lastIndexOf('.')
+ if (index_after != -1) {
+ after = key.slice(index_after + 1)
+ front = handleData(that, key.slice(0, index_after), after)
+ } else {
+ after = key
+ front = that
+ }
+ if (front.$data && front.$data[after] === undefined) {
+ Object.defineProperty(front, after, {
+ get () {
+ return front.$data[after]
+ },
+ set (newValue) {
+ front.$data[after] = newValue
+ that.hasOwnProperty("$forceUpdate") && that.$forceUpdate()
+ },
+ enumerable: true,
+ configurable: true
+ })
+ front[after] = val
+ } else {
+ that.$set(front, after, val)
+ }
+ })
+ // this.$forceUpdate();
+ isFn(callback) && this.$nextTick(callback)
+}
+
+/**
+ * 变量名正则
+ */
+const variableNameReg = /^([^\x00-\xff]|[a-zA-Z_$])([^\x00-\xff]|[a-zA-Z0-9_$])*$/
+
+
+/**
+ * 2022-10-31 重写setData
+ * 2023-05-08 增加微信“简易双向绑定”支持
+ * 用于转换后的uniapp的项目能直接使用this.setData()函数
+ * @param {Object} obj
+ * @param {Object} callback
+ */
+export function setData (obj, callback = null) {
+ Object.keys(obj).forEach((key) => {
+ _set(this, key, obj[key])
+
+ //处理微信“简易双向绑定”
+ if (variableNameReg.test(key) && key.endsWith("Clone")) {
+ let propName = key.replace(/Clone$/, "")
+ if (this.$options.propsData[propName]) {
+ this.$emit(`update:${propName}`, obj[key])
+ }
+ }
+ })
+
+ debounce(this, '$forceUpdate', 200)
+ if (typeof callback == 'function') this.$nextTick(callback)
+}
diff --git a/src/uni_modules/zp-mixins/package.json b/src/uni_modules/zp-mixins/package.json
new file mode 100644
index 0000000..a90f50b
--- /dev/null
+++ b/src/uni_modules/zp-mixins/package.json
@@ -0,0 +1,86 @@
+{
+ "id": "zp-mixins",
+ "displayName": "zp-mixins",
+ "version": "1.0.6",
+ "description": "用于minipropgram-to-uniapp的mixins",
+ "keywords": [
+ "mixins",
+ "小程序",
+ "代码转换"
+],
+ "repository": "https://github.com/zhangdaren/zp-mixins",
+ "engines": {
+ "HBuilderX": "^3.1.0"
+ },
+ "dcloudext": {
+ "type": "sdk-js",
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": ""
+ },
+ "uni_modules": {
+ "dependencies": [],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ },
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "n"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y",
+ "钉钉": "y",
+ "快手": "y",
+ "飞书": "y",
+ "京东": "y"
+ },
+ "快应用": {
+ "华为": "y",
+ "联盟": "y"
+ }
+ }
+ }
+ },
+ "dependencies": {
+ "tern": "^0.24.3"
+ }
+}
diff --git a/src/uni_modules/zp-mixins/readme.md b/src/uni_modules/zp-mixins/readme.md
new file mode 100644
index 0000000..b179863
--- /dev/null
+++ b/src/uni_modules/zp-mixins/readme.md
@@ -0,0 +1,107 @@
+# zp-mixins
+本插件,基本无法单独使用。
+
+为方便miniprogram-to-uniapp(小程序转uniapp项目)工具后续升级,特单独摘出做成插件,便于后续更新。
+
+
+注意:
+
+1.本插件仅限于miniprogram-to-uniapp(小程序转uni-app项目)转换工具使用,
+
+2.如果是新项目或uni-app项目,建议还是使用vue/uni-app它自身支持的方式实现,效率更高些。
+
+3.目前仅支持vue2/vue3的options写法。至于setup,因其天生弱化mixin,也无this,建议直接import导入按需使用吧~
+
+# 安装
+
+点击右侧 “使用 HBuilderX 导入插件” 按钮,并选择对应项目。
+
+# 使用
+
+在main.js文件里面增加引用,即可全局使用这些函数,如下所示:
+
+
+```
+import App from './App'
+
+// 添加zpMixins
+import zpMixins from '@/uni_modules/zp-mixins/index.js'
+
+// #ifndef VUE3
+import Vue from 'vue'
+
+Vue.use(zpMixins)
+
+Vue.config.productionTip = false
+App.mpType = 'app'
+const app = new Vue({
+ ...App
+})
+app.$mount()
+// #endif
+
+// #ifdef VUE3
+import { createSSRApp } from 'vue'
+export function createApp() {
+ const app = createSSRApp(App)
+ app.mixin(zpMixins)
+ return {
+ app
+ }
+}
+// #endif
+```
+
+注意:vue3项目仅支持Options API方式(setup API写法有点不同,不支持这种方式使用,建议直接通过import引入使用)。
+
+# 功能介绍
+
+## pageLifetimes(组件所在页面的生命周期)
+处理组件里的pageLifetimes
+
+## clone(深拷贝)
+深拷贝的简单版本,未处理循环引用。
+
+## handleDataset
+用于处理dataset
+
+在自定义组件的事件里,是获取不到e.currentTarget.dataset的
+
+因此收集data-参数,手动传进去
+
+## html2Escape 普通字符转换成转义符
+用于替换wxParse为mp-html时使用
+
+## escape2Html 转义符换成普通字符
+暂未用上
+
+## parseEventDynamicCode
+解析事件里的动态函数名,这种没有()的函数名,在uniapp不被执行
+
+比如:立即
+
+## getTabBar
+实现小程序自定义组件的this.getTabBar().setData()函数
+
+## getRelationNodes
+获取组件间关系this.getRelationNodes()
+
+注意:
+
+1.须与p-f-unicom配合使用!
+
+2.并不能与小程序的getRelationNodes相提并论,因为底层实现不一样
+
+## selectComponent
+## selectAllComponents
+抹平各平台差异,实现类似于小程序的selectComponent和selectAllComponents函数。
+
+使用方式与小程序一致。
+
+注:新项目建议还是使用ref这种方式,获取组件实例。
+
+## setData
+1.实现setData函数,让uni-app也能支持使用setData函数。
+2.实现微信“简易双向绑定”
+
+注意:本函数仅为小程序转换uniapp项目所作的支撑,如uni-app项目里,最好还是使用this.xx这种方式。
diff --git a/src/uni_modules/zp-mixins/utils/_set.js b/src/uni_modules/zp-mixins/utils/_set.js
new file mode 100644
index 0000000..2a4c288
--- /dev/null
+++ b/src/uni_modules/zp-mixins/utils/_set.js
@@ -0,0 +1,26 @@
+/**
+ * lodash set
+ * @param {*} obj
+ * @param {*} path
+ * @param {*} value
+ * @returns
+ */
+function _set(obj, path, value) {
+ if (Object(obj) !== obj) return obj // When obj is not an object
+ // If not yet an array, get the keys from the string-path
+ if (!Array.isArray(path)) path = path.toString().match(/[^.[\]]+/g) || []
+ path.slice(0, -1).reduce((a, c, i) => // Iterate all of them except the last one
+ Object(a[c]) === a[c] // Does the key exist and is its value an object?
+ // Yes: then follow that path
+ ?
+ a[c]
+ // No: create the key. Is the next key a potential array-index?
+ :
+ a[c] = Math.abs(path[i + 1]) >> 0 === +path[i + 1] ? [] // Yes: assign a new array object
+ :
+ {}, // No: assign a new plain object
+ obj)[path[path.length - 1]] = value // Finally assign the value to the last key
+ return obj // Return the top-level object to allow chaining
+}
+
+export default _set
diff --git a/src/uni_modules/zp-mixins/utils/debounce.js b/src/uni_modules/zp-mixins/utils/debounce.js
new file mode 100644
index 0000000..45a3603
--- /dev/null
+++ b/src/uni_modules/zp-mixins/utils/debounce.js
@@ -0,0 +1,17 @@
+/**
+ * 防抖
+ * @param {Object} scope //引用的this,发现不显式传this,拿不到。
+ * @param {Object} fn
+ * @param {Object} delay
+ */
+let t = null
+const debounce = function(scope, fn, delay) {
+ if (t !== null) {
+ clearTimeout(t)
+ }
+ t = setTimeout(() => {
+ scope[fn]()
+ }, delay)
+}
+
+export default debounce
diff --git a/src/utils/request.js b/src/utils/request.js
new file mode 100644
index 0000000..22aae13
--- /dev/null
+++ b/src/utils/request.js
@@ -0,0 +1,122 @@
+/**
+ * 基于原生wx.request封装的请求方法
+ * @param {Object} params 参数
+ */
+import config from '../config/index';
+import server from './server';
+const request = async function (params, isLoading = true) {
+ if (isLoading) {
+ uni.showLoading({
+ title: '加载中',
+ mask: true
+ });
+ }
+ const token = uni.getStorageSync('token');
+ const defaultOptions = {
+ method: 'GET',
+ header: {
+ 'Content-Type': 'application/json'
+ },
+ data: {}
+ };
+ if (token) {
+ Object.assign(defaultOptions.header, {
+ 'X-Access-Token': token,
+ Authorization: `Bearer ${token}`
+ });
+ }
+
+ // 存储在Storage里的用户信息
+ const data = {};
+
+ // 合并参数到默认配置
+ Object.assign(defaultOptions, params);
+ if (Object.hasOwnProperty.call(params, 'data')) {
+ // 如果请求用不到上述信息,请把data清空
+ Object.assign(data, params.data);
+ }
+
+ // 请求URL
+ let url = '';
+ if (Object.hasOwnProperty.call(params, 'url')) {
+ // 根据配置查询
+ const flag = params.url.indexOf('http') >= 0;
+ url = flag ? params.url : `${config.env.baseUrl}${params.url}`;
+ } else {
+ // eslint-disable-next-line no-console
+ console.log('请求url未定义');
+ }
+ const options = Object.assign(defaultOptions, {
+ url,
+ data
+ });
+
+ // 调用wx的请求api
+ return await uni.request({
+ ...options
+ })
+ .then(async (res) => {
+ // 先判断登陆是否失效,401为于后端协商未登录时的状态
+ // if (res.data.code === 401) {
+ // server.login();
+ // }
+ // if (res.data.code === 1002003003) {
+ // // 1002003003 用户不存在,跳转注册
+ // uni.showToast({
+ // icon: 'none',
+ // title: '用户不存在,正在跳转至授权登陆...',
+ // mask: true,
+ // duration: 2000
+ // });
+ // setTimeout(() => {
+ // uni.navigateTo({
+ // url: '/pages/authorize/authorize'
+ // });
+ // }, 2000);
+ // return;
+ // }
+ // if (res.data.code !== 0) {
+ // uni.showToast({
+ // icon: 'none',
+ // title: res.data.msg
+ // });
+ // return;
+ // }
+ return res.data;
+ })
+ .catch(() => {
+ uni.showToast({
+ title: '网络错误',
+ icon: 'error',
+ duration: 2000,
+ mask: true
+ });
+ })
+ .finally(() => {
+ uni.hideLoading();
+ });
+};
+export const post = function () {
+ const arg = arguments;
+ if (typeof arg[0] === 'object') {
+ return request({
+ ...arg[0],
+ method: 'post'
+ });
+ }
+ if (typeof arg[0] === 'string' && typeof arg[1] === 'object') {
+ return request({
+ url: arg[0],
+ data: arg[1],
+ method: 'post'
+ });
+ }
+ return request({
+ url: arg[0],
+ method: 'post'
+ });
+};
+export const get = function (data) {
+ return request(data);
+};
+export default request;
diff --git a/src/utils/server.js b/src/utils/server.js
new file mode 100644
index 0000000..18a97dc
--- /dev/null
+++ b/src/utils/server.js
@@ -0,0 +1,146 @@
+/**
+ * @name 登陆注册逻辑
+ * @description 登陆注册文件代码
+ */
+import config from '../config/index';
+
+// 响应字段处理对象
+const responseFuns = {
+ 0(res) {
+ // 登陆成功
+ const { accessToken, userInfo, roles = [] } = res.data.data;
+ uni.setStorageSync('isLogin', true);
+ uni.setStorageSync('token', accessToken);
+ uni.setStorageSync('userInfoData', userInfo);
+ uni.setStorageSync('userRoles', roles[0]);
+ return true;
+ },
+ 401() {
+ login();
+ },
+ 403(_res) {
+ uni.showToast({
+ icon: 'none',
+ title: res.data.msg
+ });
+ },
+ 500() {
+ // 500 登陆失败
+ uni.setStorageSync('isLogin', false);
+ },
+ 1002000008() {
+ // 1002000008 手机号未注册,登陆失败跳转到重新注册授权页面
+ uni.showToast({
+ icon: 'none',
+ title: '该手机号未注册,正在跳转至授权登陆...',
+ mask: true,
+ duration: 2000
+ });
+ setTimeout(() => {
+ uni.navigateTo({
+ url: '/pages/authorize/authorize'
+ });
+ }, 2000);
+ },
+ 1002003003() {
+ // 1002003003 用户不存在,跳转注册
+ uni.showToast({
+ icon: 'none',
+ title: '用户不存在,正在跳转至授权登陆...',
+ mask: true,
+ duration: 2000
+ });
+ setTimeout(() => {
+ uni.navigateTo({
+ url: '/pages/authorize/authorize'
+ });
+ }, 2000);
+ },
+ default(_res) {
+ uni.showToast({
+ icon: 'none',
+ title: _res.data.msg
+ });
+ }
+};
+
+// 登陆
+const login = async function () {
+ // 获取code到后端换取token
+ const { code } = await uni.login();
+ const loginParam = {
+ url: `${config.env.baseUrl}${config.env.loginPath}`,
+ method: 'POST',
+ data: {
+ code
+ }
+ };
+
+ // 调用后台等里接口
+ try {
+ const res = await uni.request(loginParam);
+ if (res.statusCode === 200) {
+ if (typeof responseFuns[res.data.code] === 'function') {
+ return responseFuns[res.data.code](res);
+ }
+ return responseFuns['default'](res);
+ } else {
+ uni.setStorageSync('isLogin', false);
+ uni.showToast({
+ title: '登录请求失败'
+ });
+ }
+ return false;
+ } catch (err) {
+ console.log('CatchClause', err);
+ console.log('CatchClause', err);
+ uni.setStorageSync('isLogin', false);
+ uni.showToast({
+ title: '登录请求出错'
+ });
+ return false;
+ }
+};
+
+/**
+ * 注册
+ * @param {Object} data
+ */
+const register = async function (data = {}) {
+ const registerParam = {
+ url: `${config.env.baseUrl}${config.env.loginPath}`,
+ method: 'POST',
+ data
+ };
+ try {
+ const res = await uni.request(registerParam);
+ if (res.statusCode === 200) {
+ if (typeof responseFuns[res.data.code] === 'function') {
+ return responseFuns[res.data.code](res);
+ }
+ } else {
+ uni.setStorageSync('isLogin', false);
+ uni.showToast({
+ title: '登录请求失败'
+ });
+ }
+ return false;
+ } catch (err) {
+ console.log('CatchClause', err);
+ console.log('CatchClause', err);
+ uni.setStorageSync('isLogin', false);
+ uni.showToast({
+ icon: 'error',
+ title: '登录/注册失败出错了!'
+ });
+ return false;
+ }
+};
+export default {
+ data() {
+ return {};
+ },
+ login,
+ register,
+ responseFuns
+};
diff --git a/src/utils/share.js b/src/utils/share.js
new file mode 100644
index 0000000..b113eec
--- /dev/null
+++ b/src/utils/share.js
@@ -0,0 +1,28 @@
+export default {
+ data() {
+ return {}
+ },
+ //分享小程序
+ onShareAppMessage(e) {
+ if (e.from === 'button') {
+ console.log('来自页面内转发按钮');
+ } else if (e.from === 'menu') {
+ console.log('右上角菜单转发按钮');
+ }
+ return {
+ // 自定义分享内容
+ title: 'xxxx',
+ desc: 'xxxxxx',
+ path: '/pages/index/index', // 路径,可传递参数到指定页面
+ imageUrl: 'https://xxxxxx.com.cn'
+ };
+ },
+ // 分享到朋友圈
+ onShareTimeline() {
+ return {
+ title: 'xxxxx',
+ path: '/pages/index/index',
+ imageUrl: 'https://xxxxxx.com.cn'
+ };
+ },
+}
diff --git a/src/utils/upload.js b/src/utils/upload.js
new file mode 100644
index 0000000..501c752
--- /dev/null
+++ b/src/utils/upload.js
@@ -0,0 +1,33 @@
+export default async function (params) {
+ const app = getApp()
+
+ uni.showLoading({
+ mask: true
+ })
+ const url = `${app.env.baseUrl}/admin-api/infra/file/upload`
+ const token = uni.getStorageSync('token')
+ const {
+ file
+ } = params
+
+ return await uni.uploadFile({
+ url,
+ filePath: file.url,
+ name: 'file',
+ header: {
+ "content-type": "multipart/form-data",
+ 'X-Access-Token': token,
+ 'Authorization': `Bearer ${token}`
+ },
+ }).then(res => {
+ uni.hideLoading()
+ return JSON.parse(res.data)
+ })
+ .catch(async err => {
+ uni.hideLoading()
+ await uni.showToast({
+ title: '上传图片失败',
+ mask: true
+ })
+ })
+}
\ No newline at end of file
diff --git a/src/utils/util.js b/src/utils/util.js
new file mode 100644
index 0000000..020ee61
--- /dev/null
+++ b/src/utils/util.js
@@ -0,0 +1,225 @@
+/**
+ * @param {*} val
+ * @return {*} 校验只要是数字(包含正负整数,0以及正负浮点数)就返回true
+ */
+function isNumber(val) {
+ var regPos = /^\d+(\.\d+)?$/; //非负浮点数
+ var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数
+ if (regPos.test(val) && regNeg.test(val)) {
+ return true;
+ }
+ return false;
+}
+
+/**
+ * 节流
+ * @param fn 需要节流的函数
+ * @param t 时间
+ */
+const throttle = (ft, t) => {
+ let flag = true;
+ const interval = t;
+ return function (self, ...args) {
+ if (flag) {
+ fn.apply(self, args);
+ flag = false;
+ setTimeout(() => {
+ flag = true;
+ }, interval);
+ }
+ };
+};
+
+/**
+ * 防抖
+ * @param fn 需要防抖的函数
+ * @param t 时间
+ */
+const debounce = (fn, t = 300) => {
+ let timeId = null;
+ const delay = t;
+ return function (self, ...args) {
+ if (timeId) {
+ clearTimeout(timeId);
+ }
+ timeId = setTimeout(() => {
+ timeId = null;
+ fn.apply(self, args);
+ }, delay);
+ };
+};
+
+// 防抖示例
+// addNumber = debounce(function (this: any) {
+// this.setData({
+// number: this.data.number + 10
+// })
+// }, 300)
+//节流示例
+// reduce = throttle(function (this: any) {
+// this.setData({
+// number: this.data.number - 1
+// })
+// }, 1000)
+
+/**
+ * 获取app.json下的pages
+ */
+// const { pages } = __wxConfig;
+
+/**
+ * 获取当前时间
+ * @param {Object} date
+ */
+function getDateString(date = new Date()) {
+ return {
+ year: date.getFullYear(),
+ month: date.getMonth() + 1,
+ day: date.getDate(),
+ hour: date.getHours(),
+ minute: date.getMinutes()
+ };
+}
+
+/**
+ * 设置树哪一级可选
+ *
+ * @param {Array} data 需要处理的树
+ * @param {Number} level 级别
+ * @returns {Array} 处理完成的树
+ * @description 可以选择的时候添加 selectable = true,反之, selectable = false
+ */
+function setSelectTreeLevel(tree, level) {
+ if (!Array.isArray(tree)) {
+ throw new Error('tree is not array!');
+ }
+ const list = JSON.parse(JSON.stringify(tree));
+ return list.map((item) => {
+ const itemObj = item;
+ itemObj.selectable = itemObj.code === level;
+ if (Array.isArray(itemObj.children) && itemObj.children.length > 0) {
+ itemObj.children = setSelectTreeLevel(itemObj.children, level);
+ }
+ return itemObj;
+ });
+}
+
+/**
+ * chilren为空的时候,从null转换为[]
+ *
+ * @param {Array} data 需要处理的树
+ * @returns {Array} 处理完成的树
+ */
+function handleChildren(tree) {
+ if (!Array.isArray(tree)) {
+ throw new Error('tree is not array!');
+ }
+ const list = JSON.parse(JSON.stringify(tree));
+ return list.map((item) => {
+ // eslint-disable-next-line no-param-reassign
+ if (item.children === null) {
+ item.children = [];
+ } else {
+ handleChildren(item.children);
+ }
+ return item;
+ });
+}
+
+/**
+ * 格式化时间
+ * @param {number} 任何合法的时间格式、秒或毫秒的时间戳
+ * @returns {string} 时间格式,可选。默认yyyy-mm-dd hh:MM:ss,年为"yyyy",月为"mm",日为"dd",时为"hh",分为"MM",秒为"ss",格式可以自由搭配,如: yyyy:mm:dd yyyy-mm-dd yyyy年mm月dd日,yyyy年mm月dd日 hh时MM分ss秒,yyyy/mm/dd/,MM:ss等组合
+ */
+function timeFormat(dateTime = null, fmt = 'yyyy-mm-dd hh:MM:ss') {
+ // 如果为null,则格式化当前时间
+ if (!dateTime) {
+ dateTime = Number(new Date());
+ }
+ // 如果dateTime长度为10或者13,则为秒和毫秒的时间戳,如果超过13位,则为其他的时间格式
+ if (dateTime.toString().length == 10) {
+ dateTime *= 1000;
+ }
+ const date = new Date(dateTime);
+ let ret;
+ const opt = {
+ 'y+': date.getFullYear().toString(),
+ // 年
+ 'm+': (date.getMonth() + 1).toString(),
+ // 月
+ 'd+': date.getDate().toString(),
+ // 日
+ 'h+': date.getHours().toString(),
+ // 时
+ 'M+': date.getMinutes().toString(),
+ // 分
+ 's+': date.getSeconds().toString() // 秒
+ // 有其他格式化字符需求可以继续添加,必须转化成字符串
+ };
+
+ for (const k in opt) {
+ ret = new RegExp(`(${k})`).exec(fmt);
+ if (ret) {
+ fmt = fmt.replace(ret[1], ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0'));
+ }
+ }
+ return fmt;
+}
+
+/**
+ * 获取当前页带参数的url
+ * @returns {string} url
+ */
+function getCurrentPageUrlWithArgs() {
+ const pages = getCurrentPages(); // 获取加载的页面
+ const currentPage = pages[pages.length - 1]; // 获取当前页面的对象
+ const url = currentPage.route; // 当前页面url
+ const { options } = currentPage; // 如果要获取url中所带的参数可以查看options
+
+ //拼接url的参数
+ let urlWithArgs = `${url}?`;
+ for (const key in options) {
+ const value = options[key];
+ urlWithArgs += `${key}=${value}&`;
+ }
+ urlWithArgs = urlWithArgs.substring(0, urlWithArgs.length - 1);
+ return '/' + urlWithArgs;
+}
+
+/**
+ * rich-text 文本首行缩进和图片居中
+ * @returns {Object} res
+ */
+function setRichText(res) {
+ if (res.data && res.data.createTime) {
+ res.data.createTime = timeFormat(res.data.createTime);
+ if (res.data.content) {
+ res.data.content = res.data.content.replace(/(\
= 0;
+};
+
+/**
+ * 格式化日期
+ * @param arr 时间戳
+ * @param str 展示的日期司机 默认0
+ * 0 (年-月-日 时:分:秒) 1 (x年-x月-x日 时:分:秒) 2 (x年-x月-x日) 3 (时:分:秒)
+ */
+var getDateTime = function(value, type) {
+ //不能使用 new Date()
+ var time = new Date(value);
+ var year = time.getFullYear();
+ var month = time.getMonth() + 1;
+ var date = time.getDate();
+ var hour = time.getHours();
+ var minute = time.getMinutes();
+ var second = time.getSeconds();
+ month = month < 10 ? '0' + month : month;
+ date = date < 10 ? '0' + date : date;
+ hour = hour < 10 ? '0' + hour : hour;
+ minute = minute < 10 ? '0' + minute : minute;
+ second = second < 10 ? '0' + second : second;
+ var arr = [
+ year + '-' + month + '-' + date + ' ' + hour + ':' + minute + ':' + second,
+ year +
+ '年' +
+ month +
+ '月' +
+ date +
+ '日' +
+ ' ' +
+ hour +
+ ':' +
+ minute +
+ ':' +
+ second,
+ year + '年' + month + '月' + date + '日',
+ hour + ':' + minute + ':' + second,
+ ];
+ if (!type) {
+ return arr[0];
+ }
+ return arr[type];
+};
+
+/**
+ * 把m转为km,保留小数点后两位
+ * @param m 距离数值
+ */
+function setMorKm(m) {
+ var n = '';
+ if (m) {
+ if (m >= 1000) {
+ n = (m / 1000).toFixed(2) + 'km';
+ } else {
+ n = m + 'm';
+ }
+ } else {
+ n = '0m';
+ }
+ return n;
+}
+
+/**
+ * 根据url存在[]根据对象内的值动态修改,并且url内可自动化拼接参数
+ * @param String url地址
+ * @param Object 对象
+ */
+function updateQuery(url, item) {
+ if (!item) {
+ return url;
+ }
+
+ if (url !== undefined) {
+ let urlRegex = /(\?|&)name=[^&]*/g;
+ return url.replace(urlRegex, function(_, it) {
+ return item[it];
+ });
+ }
+}
+
+function formatStr(str) {
+ return str.substring(0, 1) + new Array(str.length).join('*')
+}
+
+export default {
+ log: log,
+ str2Json: str2Json,
+ isNull: isNull,
+ getFullUrl: getFullUrl,
+ getSingleFullUrl: getSingleFullUrl,
+ isIncluded: isIncluded,
+ getDateTime: getDateTime,
+ setMorKm: setMorKm,
+ updateQuery: updateQuery,
+ formatStr: formatStr
+};
\ No newline at end of file
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..11fffd2
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "extends": "@vue/tsconfig/tsconfig.json",
+ "compilerOptions": {
+ "sourceMap": true,
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["./src/*"]
+ },
+ "lib": ["esnext", "dom"],
+ "types": ["@dcloudio/types"]
+ },
+ "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
+}
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 0000000..46e36fe
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,7 @@
+import { defineConfig } from "vite";
+import uni from "@dcloudio/vite-plugin-uni";
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [uni()],
+});
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..b0d94ac
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,4327 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@ampproject/remapping@^2.1.2", "@ampproject/remapping@^2.2.0":
+ version "2.2.1"
+ resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630"
+ integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.0"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
+"@babel/code-frame@^7.22.13":
+ version "7.22.13"
+ resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e"
+ integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==
+ dependencies:
+ "@babel/highlight" "^7.22.13"
+ chalk "^2.4.2"
+
+"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.2":
+ version "7.23.2"
+ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc"
+ integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==
+
+"@babel/core@^7.21.3", "@babel/core@^7.22.10", "@babel/core@^7.22.9":
+ version "7.23.2"
+ resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94"
+ integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==
+ dependencies:
+ "@ampproject/remapping" "^2.2.0"
+ "@babel/code-frame" "^7.22.13"
+ "@babel/generator" "^7.23.0"
+ "@babel/helper-compilation-targets" "^7.22.15"
+ "@babel/helper-module-transforms" "^7.23.0"
+ "@babel/helpers" "^7.23.2"
+ "@babel/parser" "^7.23.0"
+ "@babel/template" "^7.22.15"
+ "@babel/traverse" "^7.23.2"
+ "@babel/types" "^7.23.0"
+ convert-source-map "^2.0.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.3"
+ semver "^6.3.1"
+
+"@babel/generator@^7.20.5", "@babel/generator@^7.23.0":
+ version "7.23.0"
+ resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420"
+ integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==
+ dependencies:
+ "@babel/types" "^7.23.0"
+ "@jridgewell/gen-mapping" "^0.3.2"
+ "@jridgewell/trace-mapping" "^0.3.17"
+ jsesc "^2.5.1"
+
+"@babel/helper-annotate-as-pure@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882"
+ integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956"
+ integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==
+ dependencies:
+ "@babel/types" "^7.22.15"
+
+"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52"
+ integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==
+ dependencies:
+ "@babel/compat-data" "^7.22.9"
+ "@babel/helper-validator-option" "^7.22.15"
+ browserslist "^4.21.9"
+ lru-cache "^5.1.1"
+ semver "^6.3.1"
+
+"@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.22.5":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4"
+ integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.22.5"
+ "@babel/helper-environment-visitor" "^7.22.5"
+ "@babel/helper-function-name" "^7.22.5"
+ "@babel/helper-member-expression-to-functions" "^7.22.15"
+ "@babel/helper-optimise-call-expression" "^7.22.5"
+ "@babel/helper-replace-supers" "^7.22.9"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ semver "^6.3.1"
+
+"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1"
+ integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.22.5"
+ regexpu-core "^5.3.1"
+ semver "^6.3.1"
+
+"@babel/helper-define-polyfill-provider@^0.4.3":
+ version "0.4.3"
+ resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz#a71c10f7146d809f4a256c373f462d9bba8cf6ba"
+ integrity sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==
+ dependencies:
+ "@babel/helper-compilation-targets" "^7.22.6"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ debug "^4.1.1"
+ lodash.debounce "^4.0.8"
+ resolve "^1.14.2"
+
+"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5":
+ version "7.22.20"
+ resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167"
+ integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==
+
+"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0":
+ version "7.23.0"
+ resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759"
+ integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==
+ dependencies:
+ "@babel/template" "^7.22.15"
+ "@babel/types" "^7.23.0"
+
+"@babel/helper-hoist-variables@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb"
+ integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-member-expression-to-functions@^7.22.15":
+ version "7.23.0"
+ resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366"
+ integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==
+ dependencies:
+ "@babel/types" "^7.23.0"
+
+"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0"
+ integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==
+ dependencies:
+ "@babel/types" "^7.22.15"
+
+"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.23.0":
+ version "7.23.0"
+ resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e"
+ integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-module-imports" "^7.22.15"
+ "@babel/helper-simple-access" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ "@babel/helper-validator-identifier" "^7.22.20"
+
+"@babel/helper-optimise-call-expression@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e"
+ integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295"
+ integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==
+
+"@babel/helper-remap-async-to-generator@^7.22.20", "@babel/helper-remap-async-to-generator@^7.22.5":
+ version "7.22.20"
+ resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0"
+ integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.22.5"
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-wrap-function" "^7.22.20"
+
+"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9":
+ version "7.22.20"
+ resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793"
+ integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-member-expression-to-functions" "^7.22.15"
+ "@babel/helper-optimise-call-expression" "^7.22.5"
+
+"@babel/helper-simple-access@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de"
+ integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-skip-transparent-expression-wrappers@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847"
+ integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-split-export-declaration@^7.22.6":
+ version "7.22.6"
+ resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c"
+ integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-string-parser@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f"
+ integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==
+
+"@babel/helper-validator-identifier@^7.22.20":
+ version "7.22.20"
+ resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0"
+ integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==
+
+"@babel/helper-validator-option@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040"
+ integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==
+
+"@babel/helper-wrap-function@^7.22.20":
+ version "7.22.20"
+ resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569"
+ integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==
+ dependencies:
+ "@babel/helper-function-name" "^7.22.5"
+ "@babel/template" "^7.22.15"
+ "@babel/types" "^7.22.19"
+
+"@babel/helpers@^7.23.2":
+ version "7.23.2"
+ resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767"
+ integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==
+ dependencies:
+ "@babel/template" "^7.22.15"
+ "@babel/traverse" "^7.23.2"
+ "@babel/types" "^7.23.0"
+
+"@babel/highlight@^7.22.13":
+ version "7.22.20"
+ resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54"
+ integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.22.20"
+ chalk "^2.4.2"
+ js-tokens "^4.0.0"
+
+"@babel/parser@^7.16.4", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0":
+ version "7.23.0"
+ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719"
+ integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==
+
+"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962"
+ integrity sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f"
+ integrity sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
+ "@babel/plugin-transform-optional-chaining" "^7.22.15"
+
+"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2":
+ version "7.21.0-placeholder-for-preset-env.2"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703"
+ integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==
+
+"@babel/plugin-syntax-async-generators@^7.8.4":
+ version "7.8.4"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
+ integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-class-properties@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
+ integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-syntax-class-static-block@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406"
+ integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-syntax-dynamic-import@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
+ integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-export-namespace-from@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a"
+ integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.3"
+
+"@babel/plugin-syntax-import-assertions@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98"
+ integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-syntax-import-attributes@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb"
+ integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-syntax-import-meta@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51"
+ integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-json-strings@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
+ integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-jsx@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918"
+ integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
+ integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
+ integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-numeric-separator@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
+ integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-object-rest-spread@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
+ integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-optional-catch-binding@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
+ integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-optional-chaining@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
+ integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-private-property-in-object@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad"
+ integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-syntax-top-level-await@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
+ integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-syntax-typescript@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272"
+ integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-syntax-unicode-sets-regex@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357"
+ integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-transform-arrow-functions@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958"
+ integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-async-generator-functions@^7.23.2":
+ version "7.23.2"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz#054afe290d64c6f576f371ccc321772c8ea87ebb"
+ integrity sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-remap-async-to-generator" "^7.22.20"
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+
+"@babel/plugin-transform-async-to-generator@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775"
+ integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==
+ dependencies:
+ "@babel/helper-module-imports" "^7.22.5"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-remap-async-to-generator" "^7.22.5"
+
+"@babel/plugin-transform-block-scoped-functions@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024"
+ integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-block-scoping@^7.23.0":
+ version "7.23.0"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022"
+ integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-class-properties@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77"
+ integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.22.5"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-class-static-block@^7.22.11":
+ version "7.22.11"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974"
+ integrity sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.22.11"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
+
+"@babel/plugin-transform-classes@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b"
+ integrity sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.22.5"
+ "@babel/helper-compilation-targets" "^7.22.15"
+ "@babel/helper-environment-visitor" "^7.22.5"
+ "@babel/helper-function-name" "^7.22.5"
+ "@babel/helper-optimise-call-expression" "^7.22.5"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-replace-supers" "^7.22.9"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ globals "^11.1.0"
+
+"@babel/plugin-transform-computed-properties@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869"
+ integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/template" "^7.22.5"
+
+"@babel/plugin-transform-destructuring@^7.23.0":
+ version "7.23.0"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c"
+ integrity sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-dotall-regex@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165"
+ integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.22.5"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-duplicate-keys@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285"
+ integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-dynamic-import@^7.22.11":
+ version "7.22.11"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa"
+ integrity sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+
+"@babel/plugin-transform-exponentiation-operator@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a"
+ integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==
+ dependencies:
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-export-namespace-from@^7.22.11":
+ version "7.22.11"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c"
+ integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+
+"@babel/plugin-transform-for-of@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29"
+ integrity sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-function-name@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143"
+ integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==
+ dependencies:
+ "@babel/helper-compilation-targets" "^7.22.5"
+ "@babel/helper-function-name" "^7.22.5"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-json-strings@^7.22.11":
+ version "7.22.11"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835"
+ integrity sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
+
+"@babel/plugin-transform-literals@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920"
+ integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-logical-assignment-operators@^7.22.11":
+ version "7.22.11"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c"
+ integrity sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+
+"@babel/plugin-transform-member-expression-literals@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def"
+ integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-modules-amd@^7.23.0":
+ version "7.23.0"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88"
+ integrity sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.23.0"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-modules-commonjs@^7.23.0":
+ version "7.23.0"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481"
+ integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.23.0"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-simple-access" "^7.22.5"
+
+"@babel/plugin-transform-modules-systemjs@^7.23.0":
+ version "7.23.0"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160"
+ integrity sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==
+ dependencies:
+ "@babel/helper-hoist-variables" "^7.22.5"
+ "@babel/helper-module-transforms" "^7.23.0"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-validator-identifier" "^7.22.20"
+
+"@babel/plugin-transform-modules-umd@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98"
+ integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.22.5"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f"
+ integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.22.5"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-new-target@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d"
+ integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11":
+ version "7.22.11"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc"
+ integrity sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+
+"@babel/plugin-transform-numeric-separator@^7.22.11":
+ version "7.22.11"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd"
+ integrity sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+
+"@babel/plugin-transform-object-rest-spread@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f"
+ integrity sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==
+ dependencies:
+ "@babel/compat-data" "^7.22.9"
+ "@babel/helper-compilation-targets" "^7.22.15"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-transform-parameters" "^7.22.15"
+
+"@babel/plugin-transform-object-super@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c"
+ integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-replace-supers" "^7.22.5"
+
+"@babel/plugin-transform-optional-catch-binding@^7.22.11":
+ version "7.22.11"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0"
+ integrity sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+
+"@babel/plugin-transform-optional-chaining@^7.22.15", "@babel/plugin-transform-optional-chaining@^7.23.0":
+ version "7.23.0"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158"
+ integrity sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+
+"@babel/plugin-transform-parameters@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114"
+ integrity sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-private-methods@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722"
+ integrity sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.22.5"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-private-property-in-object@^7.22.11":
+ version "7.22.11"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1"
+ integrity sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.22.5"
+ "@babel/helper-create-class-features-plugin" "^7.22.11"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
+
+"@babel/plugin-transform-property-literals@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766"
+ integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-regenerator@^7.22.10":
+ version "7.22.10"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca"
+ integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ regenerator-transform "^0.15.2"
+
+"@babel/plugin-transform-reserved-words@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb"
+ integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-shorthand-properties@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624"
+ integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-spread@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b"
+ integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
+
+"@babel/plugin-transform-sticky-regex@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa"
+ integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-template-literals@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff"
+ integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-typeof-symbol@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34"
+ integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-typescript@^7.20.7", "@babel/plugin-transform-typescript@^7.22.10":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz#15adef906451d86349eb4b8764865c960eb54127"
+ integrity sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.22.5"
+ "@babel/helper-create-class-features-plugin" "^7.22.15"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/plugin-syntax-typescript" "^7.22.5"
+
+"@babel/plugin-transform-unicode-escapes@^7.22.10":
+ version "7.22.10"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9"
+ integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-unicode-property-regex@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81"
+ integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.22.5"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-unicode-regex@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183"
+ integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.22.5"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-unicode-sets-regex@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91"
+ integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.22.5"
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/preset-env@^7.22.9":
+ version "7.23.2"
+ resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.2.tgz#1f22be0ff0e121113260337dbc3e58fafce8d059"
+ integrity sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==
+ dependencies:
+ "@babel/compat-data" "^7.23.2"
+ "@babel/helper-compilation-targets" "^7.22.15"
+ "@babel/helper-plugin-utils" "^7.22.5"
+ "@babel/helper-validator-option" "^7.22.15"
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15"
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15"
+ "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2"
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+ "@babel/plugin-syntax-class-properties" "^7.12.13"
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+ "@babel/plugin-syntax-import-assertions" "^7.22.5"
+ "@babel/plugin-syntax-import-attributes" "^7.22.5"
+ "@babel/plugin-syntax-import-meta" "^7.10.4"
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
+ "@babel/plugin-syntax-top-level-await" "^7.14.5"
+ "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6"
+ "@babel/plugin-transform-arrow-functions" "^7.22.5"
+ "@babel/plugin-transform-async-generator-functions" "^7.23.2"
+ "@babel/plugin-transform-async-to-generator" "^7.22.5"
+ "@babel/plugin-transform-block-scoped-functions" "^7.22.5"
+ "@babel/plugin-transform-block-scoping" "^7.23.0"
+ "@babel/plugin-transform-class-properties" "^7.22.5"
+ "@babel/plugin-transform-class-static-block" "^7.22.11"
+ "@babel/plugin-transform-classes" "^7.22.15"
+ "@babel/plugin-transform-computed-properties" "^7.22.5"
+ "@babel/plugin-transform-destructuring" "^7.23.0"
+ "@babel/plugin-transform-dotall-regex" "^7.22.5"
+ "@babel/plugin-transform-duplicate-keys" "^7.22.5"
+ "@babel/plugin-transform-dynamic-import" "^7.22.11"
+ "@babel/plugin-transform-exponentiation-operator" "^7.22.5"
+ "@babel/plugin-transform-export-namespace-from" "^7.22.11"
+ "@babel/plugin-transform-for-of" "^7.22.15"
+ "@babel/plugin-transform-function-name" "^7.22.5"
+ "@babel/plugin-transform-json-strings" "^7.22.11"
+ "@babel/plugin-transform-literals" "^7.22.5"
+ "@babel/plugin-transform-logical-assignment-operators" "^7.22.11"
+ "@babel/plugin-transform-member-expression-literals" "^7.22.5"
+ "@babel/plugin-transform-modules-amd" "^7.23.0"
+ "@babel/plugin-transform-modules-commonjs" "^7.23.0"
+ "@babel/plugin-transform-modules-systemjs" "^7.23.0"
+ "@babel/plugin-transform-modules-umd" "^7.22.5"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5"
+ "@babel/plugin-transform-new-target" "^7.22.5"
+ "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11"
+ "@babel/plugin-transform-numeric-separator" "^7.22.11"
+ "@babel/plugin-transform-object-rest-spread" "^7.22.15"
+ "@babel/plugin-transform-object-super" "^7.22.5"
+ "@babel/plugin-transform-optional-catch-binding" "^7.22.11"
+ "@babel/plugin-transform-optional-chaining" "^7.23.0"
+ "@babel/plugin-transform-parameters" "^7.22.15"
+ "@babel/plugin-transform-private-methods" "^7.22.5"
+ "@babel/plugin-transform-private-property-in-object" "^7.22.11"
+ "@babel/plugin-transform-property-literals" "^7.22.5"
+ "@babel/plugin-transform-regenerator" "^7.22.10"
+ "@babel/plugin-transform-reserved-words" "^7.22.5"
+ "@babel/plugin-transform-shorthand-properties" "^7.22.5"
+ "@babel/plugin-transform-spread" "^7.22.5"
+ "@babel/plugin-transform-sticky-regex" "^7.22.5"
+ "@babel/plugin-transform-template-literals" "^7.22.5"
+ "@babel/plugin-transform-typeof-symbol" "^7.22.5"
+ "@babel/plugin-transform-unicode-escapes" "^7.22.10"
+ "@babel/plugin-transform-unicode-property-regex" "^7.22.5"
+ "@babel/plugin-transform-unicode-regex" "^7.22.5"
+ "@babel/plugin-transform-unicode-sets-regex" "^7.22.5"
+ "@babel/preset-modules" "0.1.6-no-external-plugins"
+ "@babel/types" "^7.23.0"
+ babel-plugin-polyfill-corejs2 "^0.4.6"
+ babel-plugin-polyfill-corejs3 "^0.8.5"
+ babel-plugin-polyfill-regenerator "^0.5.3"
+ core-js-compat "^3.31.0"
+ semver "^6.3.1"
+
+"@babel/preset-modules@0.1.6-no-external-plugins":
+ version "0.1.6-no-external-plugins"
+ resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a"
+ integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/types" "^7.4.4"
+ esutils "^2.0.2"
+
+"@babel/regjsgen@^0.8.0":
+ version "0.8.0"
+ resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310"
+ integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
+
+"@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4":
+ version "7.23.2"
+ resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885"
+ integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==
+ dependencies:
+ regenerator-runtime "^0.14.0"
+
+"@babel/template@^7.22.15", "@babel/template@^7.22.5":
+ version "7.22.15"
+ resolved "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38"
+ integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==
+ dependencies:
+ "@babel/code-frame" "^7.22.13"
+ "@babel/parser" "^7.22.15"
+ "@babel/types" "^7.22.15"
+
+"@babel/traverse@^7.22.5", "@babel/traverse@^7.23.2":
+ version "7.23.2"
+ resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8"
+ integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==
+ dependencies:
+ "@babel/code-frame" "^7.22.13"
+ "@babel/generator" "^7.23.0"
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-function-name" "^7.23.0"
+ "@babel/helper-hoist-variables" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ "@babel/parser" "^7.23.0"
+ "@babel/types" "^7.23.0"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
+"@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.4.4":
+ version "7.23.0"
+ resolved "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb"
+ integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==
+ dependencies:
+ "@babel/helper-string-parser" "^7.22.5"
+ "@babel/helper-validator-identifier" "^7.22.20"
+ to-fast-properties "^2.0.0"
+
+"@dcloudio/types@^3.3.2":
+ version "3.4.3"
+ resolved "https://registry.npmjs.org/@dcloudio/types/-/types-3.4.3.tgz#e18a93930cfa5a5cd27fd650930689b5a4eca7b1"
+ integrity sha512-WzQGX06z2+HU3HnOO+/DxX37jyUECSXCuI7GVjFXs10+ZExTbdouwQXZvH8hR7k/FjuXFjQKHV9fuvfexyXluw==
+
+"@dcloudio/uni-app-plus@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-app-plus/-/uni-app-plus-3.0.0-3081220230817001.tgz#a544ec6faf8a8c15b83b04b1f76dc43054e329e2"
+ integrity sha512-GpQobx3WbcyOZ49f8JM+febzKvlthFBAxcs4xrbtNVzmkj0jLJoh9GoH37oa7m5DI1k4l5wUuwvg4/JxBbhOSA==
+ dependencies:
+ "@dcloudio/uni-app-uts" "3.0.0-3081220230817001"
+ "@dcloudio/uni-app-vite" "3.0.0-3081220230817001"
+ "@dcloudio/uni-app-vue" "3.0.0-3081220230817001"
+ debug "^4.3.3"
+ fs-extra "^10.0.0"
+ licia "^1.29.0"
+ postcss-selector-parser "^6.0.6"
+
+"@dcloudio/uni-app-uts@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-app-uts/-/uni-app-uts-3.0.0-3081220230817001.tgz#b787f4107d5cae5cc0f811f9bf6b229ad36f3501"
+ integrity sha512-snMFEpTw5T0TT5uFwp0piytLRB0FBRHDM5ML00E1nrzfts0XlaFKoB4UsvLySG5sE5+Xt8F5/uzKxid3mcgTLQ==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@babel/types" "^7.20.7"
+ "@dcloudio/uni-cli-shared" "3.0.0-3081220230817001"
+ "@dcloudio/uni-i18n" "3.0.0-3081220230817001"
+ "@dcloudio/uni-nvue-styler" "3.0.0-3081220230817001"
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@rollup/pluginutils" "^4.2.0"
+ "@vue/compiler-core" "3.2.47"
+ "@vue/compiler-sfc" "3.2.47"
+ "@vue/shared" "3.2.47"
+ debug "^4.3.3"
+ es-module-lexer "^1.2.1"
+ fs-extra "^10.0.0"
+ picocolors "^1.0.0"
+ source-map "^0.6.1"
+
+"@dcloudio/uni-app-vite@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-app-vite/-/uni-app-vite-3.0.0-3081220230817001.tgz#559233883238f31ebd9e3f81f6eb8b954b1bb5fe"
+ integrity sha512-iHmKh6hjPGh+FC6Fi4qqwT5N31QiWv9JymCLdbkOJRi71A3byDjxoH7ScSEEEg+A5AAPky6LHbmFmznPMeSwAg==
+ dependencies:
+ "@dcloudio/uni-cli-shared" "3.0.0-3081220230817001"
+ "@dcloudio/uni-i18n" "3.0.0-3081220230817001"
+ "@dcloudio/uni-nvue-styler" "3.0.0-3081220230817001"
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@rollup/pluginutils" "^4.2.0"
+ "@vitejs/plugin-vue" "^4.2.1"
+ "@vue/compiler-dom" "3.2.47"
+ "@vue/compiler-sfc" "3.2.47"
+ debug "^4.3.3"
+ fs-extra "^10.0.0"
+ picocolors "^1.0.0"
+
+"@dcloudio/uni-app-vue@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-app-vue/-/uni-app-vue-3.0.0-3081220230817001.tgz#24caf5316c662908df393529795fa4838a762697"
+ integrity sha512-08ZUIn2a+OZWjqvjTbLygWZOY9YXbf2J1ns2letBI9aoMZDx+Sgx2lUFWHDksmOhvApPLKrRjJM0Hmmxi2mjJw==
+
+"@dcloudio/uni-app@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-app/-/uni-app-3.0.0-3081220230817001.tgz#d18750d49253ae71054a1f2a324c6ba90769cb5f"
+ integrity sha512-sf8PzXHSd/VFCn7X9+QbD4nrY21FnIwjrhyX2hFit7PZK9kpyQluqCmG7YuotuXJzsNML8c8u2O9q5FaeOyTHg==
+ dependencies:
+ "@dcloudio/uni-cloud" "3.0.0-3081220230817001"
+ "@dcloudio/uni-components" "3.0.0-3081220230817001"
+ "@dcloudio/uni-i18n" "3.0.0-3081220230817001"
+ "@dcloudio/uni-push" "3.0.0-3081220230817001"
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@dcloudio/uni-stat" "3.0.0-3081220230817001"
+ "@vue/shared" "3.2.47"
+
+"@dcloudio/uni-automator@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-automator/-/uni-automator-3.0.0-3081220230817001.tgz#c037c5ad0ba0262c8bc98482bc2e16dbdf3d6945"
+ integrity sha512-boaRlUAAXsEh4aN5PbtMVvzdmvXqoEWa8eQBD4oCH36lyGgK8q75vsjLRi4LBFFwNlCNMrYepTNbBCjP+Sgt0g==
+ dependencies:
+ "@dcloudio/uni-cli-shared" "3.0.0-3081220230817001"
+ address "^1.1.2"
+ cross-env "^7.0.3"
+ debug "^4.3.3"
+ default-gateway "^6.0.3"
+ fs-extra "^10.0.0"
+ jsonc-parser "^3.2.0"
+ licia "^1.29.0"
+ qrcode-reader "^1.0.4"
+ qrcode-terminal "^0.12.0"
+ ws "^8.4.2"
+
+"@dcloudio/uni-cli-shared@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-cli-shared/-/uni-cli-shared-3.0.0-3081220230817001.tgz#cfc679a41c9a415f25c326a86676c68eb57272ed"
+ integrity sha512-FOeydfIdKZg+MnQsHSFLXBzzmXtgCWnmEyjw3MHNN5mGwQB6+f7vK8sLw+yjizD/j71eMnh8XXCk+dV3nD/Vzg==
+ dependencies:
+ "@ampproject/remapping" "^2.1.2"
+ "@babel/core" "^7.21.3"
+ "@babel/parser" "^7.16.4"
+ "@babel/types" "^7.20.7"
+ "@dcloudio/uni-i18n" "3.0.0-3081220230817001"
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@intlify/core-base" "9.1.9"
+ "@intlify/shared" "9.1.9"
+ "@intlify/vue-devtools" "9.1.9"
+ "@rollup/pluginutils" "^4.2.0"
+ "@vue/compiler-core" "3.2.47"
+ "@vue/compiler-dom" "3.2.47"
+ "@vue/compiler-sfc" "3.2.47"
+ "@vue/server-renderer" "3.2.47"
+ "@vue/shared" "3.2.47"
+ autoprefixer "^10.4.14"
+ base64url "^3.0.1"
+ chokidar "^3.5.3"
+ compare-versions "^3.6.0"
+ debug "^4.3.3"
+ es-module-lexer "^1.2.1"
+ esbuild "^0.17.5"
+ estree-walker "^2.0.2"
+ fast-glob "^3.2.11"
+ fs-extra "^10.0.0"
+ hash-sum "^2.0.0"
+ jsonc-parser "^3.0.0"
+ magic-string "^0.30.0"
+ merge "^2.1.1"
+ mime "^3.0.0"
+ module-alias "^2.2.2"
+ os-locale-s-fix "^1.0.8-fix-1"
+ picocolors "^1.0.0"
+ postcss-import "^14.0.2"
+ postcss-load-config "^3.1.1"
+ postcss-modules "^4.3.0"
+ postcss-selector-parser "^6.0.6"
+ resolve "^1.22.1"
+ tapable "^2.2.0"
+ xregexp "3.1.0"
+
+"@dcloudio/uni-cloud@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-cloud/-/uni-cloud-3.0.0-3081220230817001.tgz#a6b2dcd22127d6c85a0ba1769300c347c39243cf"
+ integrity sha512-rrHN4PvvylrhmivAoSv4h8ZcQ3ZWHnMRXhQWPC9FBR1TInrrxrrAHuMqSZn6pTIXhCiRA3Kuy6aDNVCbt6VA+g==
+ dependencies:
+ "@dcloudio/uni-cli-shared" "3.0.0-3081220230817001"
+ "@dcloudio/uni-i18n" "3.0.0-3081220230817001"
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@vue/shared" "3.2.47"
+ fast-glob "^3.2.11"
+
+"@dcloudio/uni-components@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-components/-/uni-components-3.0.0-3081220230817001.tgz#73b7d54c67db1dbcbb7402b66aacf592896bcece"
+ integrity sha512-FlIrTgR/9Yp8FWYfhXfLPd0jJtBwJwRBAWWmLNaufkTojm6X7rX8wQOd13n+7gJGKzfXcEV8npOYpVou4P46Pw==
+ dependencies:
+ "@dcloudio/uni-cloud" "3.0.0-3081220230817001"
+ "@dcloudio/uni-h5" "3.0.0-3081220230817001"
+ "@dcloudio/uni-i18n" "3.0.0-3081220230817001"
+
+"@dcloudio/uni-h5-vite@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-h5-vite/-/uni-h5-vite-3.0.0-3081220230817001.tgz#15e1044d6d1a443565e1dc0ff06520ecf137a550"
+ integrity sha512-x7F6mUTjHiOx7+lj5yIrzhD7gr0HTNJaku5gV3O8bFjxKLcIkFkAyliKPbqJ4QZCmCCmEfJpOGKrDhk35tlibg==
+ dependencies:
+ "@dcloudio/uni-cli-shared" "3.0.0-3081220230817001"
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@rollup/pluginutils" "^4.2.0"
+ "@vue/compiler-dom" "3.2.47"
+ "@vue/compiler-sfc" "3.2.47"
+ "@vue/server-renderer" "3.2.47"
+ "@vue/shared" "3.2.47"
+ debug "^4.3.3"
+ fs-extra "^10.0.0"
+ mime "^3.0.0"
+ module-alias "^2.2.2"
+
+"@dcloudio/uni-h5-vue@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-h5-vue/-/uni-h5-vue-3.0.0-3081220230817001.tgz#e0359fa05ead43156ad7b883aef6552a7d0b62a7"
+ integrity sha512-q1eFoXb5/4whNIJ1CumKmeypPjZofw8xDQRHZeGZ7NVRQ0/MYnEm6A0n/vkmEo1IgTZIY83m/jr6RNg7a9Ko/A==
+ dependencies:
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@vue/server-renderer" "3.2.47"
+
+"@dcloudio/uni-h5@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-h5/-/uni-h5-3.0.0-3081220230817001.tgz#d4aab795a4f48bb348151fa6eb1c3f08415c9586"
+ integrity sha512-m2RCZpYxuAGnXlQKSQ8FGy4OlnUJJ8XMx2HNQWriDwtjDpAGDU8I2LZQZ7MHCNPIUd503y+mgU2NPlSQHnrlkQ==
+ dependencies:
+ "@dcloudio/uni-h5-vite" "3.0.0-3081220230817001"
+ "@dcloudio/uni-h5-vue" "3.0.0-3081220230817001"
+ "@dcloudio/uni-i18n" "3.0.0-3081220230817001"
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@vue/server-renderer" "3.2.47"
+ "@vue/shared" "3.2.47"
+ debug "^4.3.3"
+ localstorage-polyfill "^1.0.1"
+ postcss-selector-parser "^6.0.6"
+ safe-area-insets "^1.4.1"
+ vue-router "^4.1.6"
+ xmlhttprequest "^1.8.0"
+
+"@dcloudio/uni-i18n@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-i18n/-/uni-i18n-3.0.0-3081220230817001.tgz#392d8e39a7d3324d2413ef949d4bc06f18c25c43"
+ integrity sha512-ooAIoNCy+DPlMtA4k9eoaJJsYQtici85le+ietIIzLdJoa2YUnudYv9CvG9Mw/RsKQI+MLl96ADAPgUpGzounw==
+
+"@dcloudio/uni-mp-alipay@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-mp-alipay/-/uni-mp-alipay-3.0.0-3081220230817001.tgz#aea5f2b292e52de255cd90084d41821cd96b81dd"
+ integrity sha512-lZR2u8sxJ/ZaDqaxEmGzgWWKHcjnLGedDTrMh8kOEPLHO6THVNe5TP6XeiTcE0HKJfWEXv6X13erjn0FCstz3A==
+ dependencies:
+ "@dcloudio/uni-cli-shared" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-vite" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-vue" "3.0.0-3081220230817001"
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@vue/compiler-core" "3.2.47"
+ "@vue/shared" "3.2.47"
+
+"@dcloudio/uni-mp-baidu@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-mp-baidu/-/uni-mp-baidu-3.0.0-3081220230817001.tgz#beb1b6b23b12682a5f5ff1b5febcc077e33622eb"
+ integrity sha512-FYwK1AqSc+NvtvaCia/fOP57ELx5O5icHjuwPKMsJv5eGtqlwhXzyvSCoGEFyYQcsWP9ZqYSb3fTuxVlbiEYdA==
+ dependencies:
+ "@dcloudio/uni-cli-shared" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-compiler" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-vite" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-vue" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-weixin" "3.0.0-3081220230817001"
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@vue/compiler-core" "3.2.47"
+ "@vue/shared" "3.2.47"
+ jimp "^0.10.1"
+ licia "^1.29.0"
+ qrcode-reader "^1.0.4"
+ qrcode-terminal "^0.12.0"
+ ws "^8.4.2"
+
+"@dcloudio/uni-mp-compiler@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-mp-compiler/-/uni-mp-compiler-3.0.0-3081220230817001.tgz#e7f04d7577684e3e0259ea22ccd802fb29158f56"
+ integrity sha512-KDfwEr9jFNSkNbYmdDc+zfGuZwXGkz3bW3c4cuV44IncTf/UW2m594Z2UzhJkx/p662aQ2W9M4BFZ0o5QSfQDw==
+ dependencies:
+ "@babel/generator" "^7.20.5"
+ "@babel/parser" "^7.16.4"
+ "@babel/types" "^7.20.7"
+ "@dcloudio/uni-cli-shared" "3.0.0-3081220230817001"
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@vue/compiler-core" "3.2.47"
+ "@vue/compiler-dom" "3.2.47"
+ "@vue/shared" "3.2.47"
+ estree-walker "^2.0.2"
+
+"@dcloudio/uni-mp-jd@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-mp-jd/-/uni-mp-jd-3.0.0-3081220230817001.tgz#fe3b8880105a3bb6cf88fdec49ae04d68bab11b6"
+ integrity sha512-sKDppXhk7k8Euce9v7ItQ2cs3+XpQV/DX8FjXzfO9DfjQEKiR/Pyfis7e3ANQrF4V/W3uwK5wgN/PyI3/NRloQ==
+ dependencies:
+ "@dcloudio/uni-cli-shared" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-compiler" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-vite" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-vue" "3.0.0-3081220230817001"
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@vue/shared" "3.2.47"
+
+"@dcloudio/uni-mp-kuaishou@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-mp-kuaishou/-/uni-mp-kuaishou-3.0.0-3081220230817001.tgz#52a9b86f8c2d048f87212b59498975cfde6da110"
+ integrity sha512-wYXwoxcdms8PviNsKg2Y9oqHawKqseoD97sYs94RLDVSnyO9c6NOoUMsYjXwIZXt05E56bJ9EbxDqYDwwJhEKw==
+ dependencies:
+ "@dcloudio/uni-cli-shared" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-compiler" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-vite" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-vue" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-weixin" "3.0.0-3081220230817001"
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@vue/compiler-core" "3.2.47"
+ "@vue/shared" "3.2.47"
+
+"@dcloudio/uni-mp-lark@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-mp-lark/-/uni-mp-lark-3.0.0-3081220230817001.tgz#57c2ab515e332df2ed188eca9d3b1b454a92934a"
+ integrity sha512-4aHwULp+Nx55BoJvj1jCXWnVJrzl0ACEbDlXVvxmNUI5tkqn2kYL4AZgrXP1vCx8MHKVPI4E34Z+lrBTfSfKMA==
+ dependencies:
+ "@dcloudio/uni-cli-shared" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-compiler" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-toutiao" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-vite" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-vue" "3.0.0-3081220230817001"
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@vue/compiler-core" "3.2.47"
+ "@vue/shared" "3.2.47"
+
+"@dcloudio/uni-mp-qq@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-mp-qq/-/uni-mp-qq-3.0.0-3081220230817001.tgz#e3c4bcac8344778337d3dfe9d01a4738fcf20fff"
+ integrity sha512-StSsxCCKMdZCghUZ+wdX1otCmlYkIV+O2Z/AxMv772HfIKlpDp44PPaxlKBG4L6+X7h2JsCvyZW1iSznM5A3CQ==
+ dependencies:
+ "@dcloudio/uni-cli-shared" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-vite" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-vue" "3.0.0-3081220230817001"
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@vue/shared" "3.2.47"
+ fs-extra "^10.0.0"
+
+"@dcloudio/uni-mp-toutiao@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-mp-toutiao/-/uni-mp-toutiao-3.0.0-3081220230817001.tgz#e8b71b054b66cbc36404987ec4f0444a72f3466e"
+ integrity sha512-ZMSNNjQpCV4z+76OA8rDKKhqr+vQmTvKNUOzKfND5KPYhgWbqviEBZ8ptiDT5gaWXMpkUHNfWz32hdi5CLbj5Q==
+ dependencies:
+ "@dcloudio/uni-cli-shared" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-compiler" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-vite" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-vue" "3.0.0-3081220230817001"
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@vue/compiler-core" "3.2.47"
+ "@vue/shared" "3.2.47"
+
+"@dcloudio/uni-mp-vite@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-mp-vite/-/uni-mp-vite-3.0.0-3081220230817001.tgz#8fde797170edd1e540e8f698bc7ecdc99ba9412f"
+ integrity sha512-jmEbsVOJ1dlj46QiSFMB2C3zbgGivkGf1KXoPTAprv0WZrkmjF1uNLj0pHFOOUnnyHwHPViEApsMOPS4twIjIQ==
+ dependencies:
+ "@dcloudio/uni-cli-shared" "3.0.0-3081220230817001"
+ "@dcloudio/uni-i18n" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-compiler" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-vue" "3.0.0-3081220230817001"
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@vue/compiler-sfc" "3.2.47"
+ "@vue/shared" "3.2.47"
+ debug "^4.3.3"
+
+"@dcloudio/uni-mp-vue@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-mp-vue/-/uni-mp-vue-3.0.0-3081220230817001.tgz#b8fb00bbe5471a681e13cb30b4c7de786590abd7"
+ integrity sha512-EfdTH6+qGXRh3402+psl8X4K34/gHfBPaMfxbwMsne1rGnB8ZVXiN73gVXKfCWeznvJqdWuTWmmjqaLoBhjOjA==
+ dependencies:
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@vue/shared" "3.2.47"
+
+"@dcloudio/uni-mp-weixin@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-mp-weixin/-/uni-mp-weixin-3.0.0-3081220230817001.tgz#9521a691fa94ed4f1b5452f6a34eeb4e0125e222"
+ integrity sha512-vo2k8OaWFOvoXuRX83UCR0AOOKXXwjRDIOX0y/jUC9TX63Ne5OTdRKH9253D9109FrwtrtsUWqnpfn1ynKXl9g==
+ dependencies:
+ "@dcloudio/uni-cli-shared" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-vite" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-vue" "3.0.0-3081220230817001"
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@vue/shared" "3.2.47"
+ jimp "^0.10.1"
+ licia "^1.29.0"
+ qrcode-reader "^1.0.4"
+ qrcode-terminal "^0.12.0"
+ ws "^8.4.2"
+
+"@dcloudio/uni-nvue-styler@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-nvue-styler/-/uni-nvue-styler-3.0.0-3081220230817001.tgz#ddf649c52d501746cada299b232289060a5c42ec"
+ integrity sha512-EImnyrYHmAc7ibKfIMkBG1uMavS5sPdrtQj52m40o/QNU5kcsqUk2Od9c1ULkQloxhmK2E4FZvXo4cgszE/Txw==
+ dependencies:
+ "@vue/shared" "3.2.47"
+ parse-css-font "^4.0.0"
+ postcss "^8.4.23"
+
+"@dcloudio/uni-push@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-push/-/uni-push-3.0.0-3081220230817001.tgz#b7826ba6948b8c71a900083e585c4ba85e989d57"
+ integrity sha512-1IyVJlBnZVVvY49SQKpZG5Oxak5Wl51NvYEozuYoeBaaTeZObm7B6eyd722sXi0Dd6N1sE3kIdm/XReprK53eg==
+ dependencies:
+ "@dcloudio/uni-cli-shared" "3.0.0-3081220230817001"
+
+"@dcloudio/uni-quickapp-webview@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-quickapp-webview/-/uni-quickapp-webview-3.0.0-3081220230817001.tgz#ec5c9b166bfb7cd864ebac51131c6eba397d186f"
+ integrity sha512-w6yitVyCKEFSO+UDsJPjc5RfAstIdOEbBHgim0gInTfOl90odmyUPKDxWhwQgS5vqezBXpCj0/6ywVMHvZu+7A==
+ dependencies:
+ "@dcloudio/uni-cli-shared" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-vite" "3.0.0-3081220230817001"
+ "@dcloudio/uni-mp-vue" "3.0.0-3081220230817001"
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@vue/shared" "3.2.47"
+
+"@dcloudio/uni-shared@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-shared/-/uni-shared-3.0.0-3081220230817001.tgz#26e7f981c8ef62da933943ea3cf32f52ec924621"
+ integrity sha512-NI1pBO40VqvnWjwNXad3CqrUYvr4ffGjiDMgJGMP13rgOEAqamU7ozBimoASDVPKyyfSHTeuYuh0gtaaLu4CsQ==
+ dependencies:
+ "@vue/shared" "3.2.47"
+
+"@dcloudio/uni-stacktracey@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-stacktracey/-/uni-stacktracey-3.0.0-3081220230817001.tgz#d490bd0c46554715e2f39095027f317c08f32620"
+ integrity sha512-DUTTN8JWXxjO3ryz7uhD3+vazHVMflln15+r0ycWBjXO0p0MepRY3gX5gKCyiq9D3NUIxazcFAUJ6agFVUbDog==
+
+"@dcloudio/uni-stat@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/uni-stat/-/uni-stat-3.0.0-3081220230817001.tgz#09a07acf8be92b7209a951d028588f5a98946f49"
+ integrity sha512-xpbsor5WKU1eCbo0dmQ0hBUX6RrdG7DNDzCSD6oimndIXVGLkFhWrIC3brQ7S1G2GQvXdXnXJpUVskI3qNe/uw==
+ dependencies:
+ "@dcloudio/uni-cli-shared" "3.0.0-3081220230817001"
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ debug "^4.3.3"
+
+"@dcloudio/vite-plugin-uni@3.0.0-3081220230817001":
+ version "3.0.0-3081220230817001"
+ resolved "https://registry.npmjs.org/@dcloudio/vite-plugin-uni/-/vite-plugin-uni-3.0.0-3081220230817001.tgz#ebab0080824ba0796db84064fa47e4c3266c97c6"
+ integrity sha512-dLeqqyrNNUBTZfI0ppPk4YoD+DBI0gJLeTjpN6bK5i3nFKkju9g2K6IWl62YMObjTiXwQF8qAEDb+fyWoe4Ksw==
+ dependencies:
+ "@babel/core" "^7.21.3"
+ "@babel/plugin-syntax-import-meta" "^7.10.4"
+ "@babel/plugin-transform-typescript" "^7.20.7"
+ "@dcloudio/uni-cli-shared" "3.0.0-3081220230817001"
+ "@dcloudio/uni-shared" "3.0.0-3081220230817001"
+ "@rollup/pluginutils" "^4.2.0"
+ "@vitejs/plugin-legacy" "^4.0.3"
+ "@vitejs/plugin-vue" "^4.2.1"
+ "@vitejs/plugin-vue-jsx" "^3.0.1"
+ "@vue/compiler-core" "3.2.47"
+ "@vue/compiler-dom" "3.2.47"
+ "@vue/compiler-sfc" "3.2.47"
+ "@vue/shared" "3.2.47"
+ cac "6.7.9"
+ debug "^4.3.3"
+ estree-walker "^2.0.2"
+ express "^4.17.1"
+ fast-glob "^3.2.11"
+ fs-extra "^10.0.0"
+ hash-sum "^2.0.0"
+ jsonc-parser "^3.0.0"
+ magic-string "^0.30.0"
+ picocolors "^1.0.0"
+ terser "^5.4.0"
+
+"@esbuild/android-arm64@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz#cf91e86df127aa3d141744edafcba0abdc577d23"
+ integrity sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==
+
+"@esbuild/android-arm64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd"
+ integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==
+
+"@esbuild/android-arm@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz#025b6246d3f68b7bbaa97069144fb5fb70f2fff2"
+ integrity sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==
+
+"@esbuild/android-arm@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d"
+ integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==
+
+"@esbuild/android-x64@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz#c820e0fef982f99a85c4b8bfdd582835f04cd96e"
+ integrity sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==
+
+"@esbuild/android-x64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1"
+ integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==
+
+"@esbuild/darwin-arm64@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz#edef4487af6b21afabba7be5132c26d22379b220"
+ integrity sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==
+
+"@esbuild/darwin-arm64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276"
+ integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==
+
+"@esbuild/darwin-x64@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz#42829168730071c41ef0d028d8319eea0e2904b4"
+ integrity sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==
+
+"@esbuild/darwin-x64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb"
+ integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==
+
+"@esbuild/freebsd-arm64@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz#1f4af488bfc7e9ced04207034d398e793b570a27"
+ integrity sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==
+
+"@esbuild/freebsd-arm64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2"
+ integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==
+
+"@esbuild/freebsd-x64@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz#636306f19e9bc981e06aa1d777302dad8fddaf72"
+ integrity sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==
+
+"@esbuild/freebsd-x64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4"
+ integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==
+
+"@esbuild/linux-arm64@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz#a003f7ff237c501e095d4f3a09e58fc7b25a4aca"
+ integrity sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==
+
+"@esbuild/linux-arm64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb"
+ integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==
+
+"@esbuild/linux-arm@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz#b591e6a59d9c4fe0eeadd4874b157ab78cf5f196"
+ integrity sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==
+
+"@esbuild/linux-arm@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a"
+ integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==
+
+"@esbuild/linux-ia32@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz#24333a11027ef46a18f57019450a5188918e2a54"
+ integrity sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==
+
+"@esbuild/linux-ia32@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a"
+ integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==
+
+"@esbuild/linux-loong64@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz#d5ad459d41ed42bbd4d005256b31882ec52227d8"
+ integrity sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==
+
+"@esbuild/linux-loong64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72"
+ integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==
+
+"@esbuild/linux-mips64el@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz#4e5967a665c38360b0a8205594377d4dcf9c3726"
+ integrity sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==
+
+"@esbuild/linux-mips64el@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289"
+ integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==
+
+"@esbuild/linux-ppc64@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz#206443a02eb568f9fdf0b438fbd47d26e735afc8"
+ integrity sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==
+
+"@esbuild/linux-ppc64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7"
+ integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==
+
+"@esbuild/linux-riscv64@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz#c351e433d009bf256e798ad048152c8d76da2fc9"
+ integrity sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==
+
+"@esbuild/linux-riscv64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09"
+ integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==
+
+"@esbuild/linux-s390x@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz#661f271e5d59615b84b6801d1c2123ad13d9bd87"
+ integrity sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==
+
+"@esbuild/linux-s390x@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829"
+ integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==
+
+"@esbuild/linux-x64@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz#e4ba18e8b149a89c982351443a377c723762b85f"
+ integrity sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==
+
+"@esbuild/linux-x64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4"
+ integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==
+
+"@esbuild/netbsd-x64@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz#7d4f4041e30c5c07dd24ffa295c73f06038ec775"
+ integrity sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==
+
+"@esbuild/netbsd-x64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462"
+ integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==
+
+"@esbuild/openbsd-x64@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz#970fa7f8470681f3e6b1db0cc421a4af8060ec35"
+ integrity sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==
+
+"@esbuild/openbsd-x64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691"
+ integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==
+
+"@esbuild/sunos-x64@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz#abc60e7c4abf8b89fb7a4fe69a1484132238022c"
+ integrity sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==
+
+"@esbuild/sunos-x64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273"
+ integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==
+
+"@esbuild/win32-arm64@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz#7b0ff9e8c3265537a7a7b1fd9a24e7bd39fcd87a"
+ integrity sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==
+
+"@esbuild/win32-arm64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f"
+ integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==
+
+"@esbuild/win32-ia32@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz#e90fe5267d71a7b7567afdc403dfd198c292eb09"
+ integrity sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==
+
+"@esbuild/win32-ia32@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03"
+ integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==
+
+"@esbuild/win32-x64@0.16.17":
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz#c5a1a4bfe1b57f0c3e61b29883525c6da3e5c091"
+ integrity sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==
+
+"@esbuild/win32-x64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061"
+ integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==
+
+"@intlify/core-base@9.1.9":
+ version "9.1.9"
+ resolved "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.1.9.tgz#e4e8c951010728e4af3a0d13d74cf3f9e7add7f6"
+ integrity sha512-x5T0p/Ja0S8hs5xs+ImKyYckVkL4CzcEXykVYYV6rcbXxJTe2o58IquSqX9bdncVKbRZP7GlBU1EcRaQEEJ+vw==
+ dependencies:
+ "@intlify/devtools-if" "9.1.9"
+ "@intlify/message-compiler" "9.1.9"
+ "@intlify/message-resolver" "9.1.9"
+ "@intlify/runtime" "9.1.9"
+ "@intlify/shared" "9.1.9"
+ "@intlify/vue-devtools" "9.1.9"
+
+"@intlify/core-base@9.6.5":
+ version "9.6.5"
+ resolved "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.6.5.tgz#af92cae122fb99e882b3d7f1433f682065a3e164"
+ integrity sha512-LzbGXiZkMWPIHnHI0g6q554S87Cmh2mmCmjytK/3pDQfjI84l+dgGoeQuKj02q7EbULRuUUgYVZVqAwEUawXGg==
+ dependencies:
+ "@intlify/message-compiler" "9.6.5"
+ "@intlify/shared" "9.6.5"
+
+"@intlify/devtools-if@9.1.9":
+ version "9.1.9"
+ resolved "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.1.9.tgz#a30e1dd1256ff2c5c98d8d75d075384fba898e5d"
+ integrity sha512-oKSMKjttG3Ut/1UGEZjSdghuP3fwA15zpDPcjkf/1FjlOIm6uIBGMNS5jXzsZy593u+P/YcnrZD6cD3IVFz9vQ==
+ dependencies:
+ "@intlify/shared" "9.1.9"
+
+"@intlify/message-compiler@9.1.9":
+ version "9.1.9"
+ resolved "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.1.9.tgz#1193cbd224a71c2fb981455b8534a3c766d2948d"
+ integrity sha512-6YgCMF46Xd0IH2hMRLCssZI3gFG4aywidoWQ3QP4RGYQXQYYfFC54DxhSgfIPpVoPLQ+4AD29eoYmhiHZ+qLFQ==
+ dependencies:
+ "@intlify/message-resolver" "9.1.9"
+ "@intlify/shared" "9.1.9"
+ source-map "0.6.1"
+
+"@intlify/message-compiler@9.6.5":
+ version "9.6.5"
+ resolved "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.6.5.tgz#3a33882497417c63b23b012731d60a485c8e5558"
+ integrity sha512-WeJ499thIj0p7JaIO1V3JaJbqdqfBykS5R8fElFs5hNeotHtPAMBs4IiA+8/KGFkAbjJusgFefCq6ajP7F7+4Q==
+ dependencies:
+ "@intlify/shared" "9.6.5"
+ source-map-js "^1.0.2"
+
+"@intlify/message-resolver@9.1.9":
+ version "9.1.9"
+ resolved "https://registry.npmjs.org/@intlify/message-resolver/-/message-resolver-9.1.9.tgz#3155ccd2f5e6d0dc16cad8b7f1d8e97fcda05bfc"
+ integrity sha512-Lx/DBpigeK0sz2BBbzv5mu9/dAlt98HxwbG7xLawC3O2xMF9MNWU5FtOziwYG6TDIjNq0O/3ZbOJAxwITIWXEA==
+
+"@intlify/runtime@9.1.9":
+ version "9.1.9"
+ resolved "https://registry.npmjs.org/@intlify/runtime/-/runtime-9.1.9.tgz#2c12ce29518a075629efed0a8ed293ee740cb285"
+ integrity sha512-XgPw8+UlHCiie3fI41HPVa/VDJb3/aSH7bLhY1hJvlvNV713PFtb4p4Jo+rlE0gAoMsMCGcsiT982fImolSltg==
+ dependencies:
+ "@intlify/message-compiler" "9.1.9"
+ "@intlify/message-resolver" "9.1.9"
+ "@intlify/shared" "9.1.9"
+
+"@intlify/shared@9.1.9":
+ version "9.1.9"
+ resolved "https://registry.npmjs.org/@intlify/shared/-/shared-9.1.9.tgz#0baaf96128b85560666bec784ffb01f6623cc17a"
+ integrity sha512-xKGM1d0EAxdDFCWedcYXOm6V5Pfw/TMudd6/qCdEb4tv0hk9EKeg7lwQF1azE0dP2phvx0yXxrt7UQK+IZjNdw==
+
+"@intlify/shared@9.6.5":
+ version "9.6.5"
+ resolved "https://registry.npmjs.org/@intlify/shared/-/shared-9.6.5.tgz#a81f384d804e99ceac55bb061c344f156bd96590"
+ integrity sha512-gD7Ey47Xi4h/t6P+S04ymMSoA3wVRxGqjxuIMglwRO8POki9h164Epu2N8wk/GHXM/hR6ZGcsx2HArCCENjqSQ==
+
+"@intlify/vue-devtools@9.1.9":
+ version "9.1.9"
+ resolved "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.1.9.tgz#2be8f4dbe7f7ed4115676eb32348141d411e426b"
+ integrity sha512-YPehH9uL4vZcGXky4Ev5qQIITnHKIvsD2GKGXgqf+05osMUI6WSEQHaN9USRa318Rs8RyyPCiDfmA0hRu3k7og==
+ dependencies:
+ "@intlify/message-resolver" "9.1.9"
+ "@intlify/runtime" "9.1.9"
+ "@intlify/shared" "9.1.9"
+
+"@jimp/bmp@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.10.3.tgz#79a23678e8389865c62e77b0dccc3e069dfc27f0"
+ integrity sha512-keMOc5woiDmONXsB/6aXLR4Z5Q+v8lFq3EY2rcj2FmstbDMhRuGbmcBxlEgOqfRjwvtf/wOtJ3Of37oAWtVfLg==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ bmp-js "^0.1.0"
+ core-js "^3.4.1"
+
+"@jimp/core@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/core/-/core-0.10.3.tgz#4095f3bef43837c85d8f8373b912bc431cfe6d1f"
+ integrity sha512-Gd5IpL3U2bFIO57Fh/OA3HCpWm4uW/pU01E75rI03BXfTdz3T+J7TwvyG1XaqsQ7/DSlS99GXtLQPlfFIe28UA==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ any-base "^1.1.0"
+ buffer "^5.2.0"
+ core-js "^3.4.1"
+ exif-parser "^0.1.12"
+ file-type "^9.0.0"
+ load-bmfont "^1.3.1"
+ mkdirp "^0.5.1"
+ phin "^2.9.1"
+ pixelmatch "^4.0.2"
+ tinycolor2 "^1.4.1"
+
+"@jimp/custom@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/custom/-/custom-0.10.3.tgz#eb6201b2e8fdd83afc3d8b514538e5faa1d30980"
+ integrity sha512-nZmSI+jwTi5IRyNLbKSXQovoeqsw+D0Jn0SxW08wYQvdkiWA8bTlDQFgQ7HVwCAKBm8oKkDB/ZEo9qvHJ+1gAQ==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/core" "^0.10.3"
+ core-js "^3.4.1"
+
+"@jimp/gif@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/gif/-/gif-0.10.3.tgz#7661280fd2b9cb70175b20e80f4e2b3e3ecf614e"
+ integrity sha512-vjlRodSfz1CrUvvrnUuD/DsLK1GHB/yDZXHthVdZu23zYJIW7/WrIiD1IgQ5wOMV7NocfrvPn2iqUfBP81/WWA==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+ omggif "^1.0.9"
+
+"@jimp/jpeg@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.10.3.tgz#56f66874f204826291747ae12ff9eb337ab5cb8d"
+ integrity sha512-AAANwgUZOt6f6P7LZxY9lyJ9xclqutYJlsxt3JbriXUGJgrrFAIkcKcqv1nObgmQASSAQKYaMV9KdHjMlWFKlQ==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+ jpeg-js "^0.3.4"
+
+"@jimp/plugin-blit@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.10.3.tgz#095bafbb2d82c300159334a49a094f0b7d362ae6"
+ integrity sha512-5zlKlCfx4JWw9qUVC7GI4DzXyxDWyFvgZLaoGFoT00mlXlN75SarlDwc9iZ/2e2kp4bJWxz3cGgG4G/WXrbg3Q==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+
+"@jimp/plugin-blur@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.10.3.tgz#1bb91f730fda02b3c99d913e0191111327654766"
+ integrity sha512-cTOK3rjh1Yjh23jSfA6EHCHjsPJDEGLC8K2y9gM7dnTUK1y9NNmkFS23uHpyjgsWFIoH9oRh2SpEs3INjCpZhQ==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+
+"@jimp/plugin-circle@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.10.3.tgz#c5a6ec275cf1e86b1356824637910a299c9fd662"
+ integrity sha512-51GAPIVelqAcfuUpaM5JWJ0iWl4vEjNXB7p4P7SX5udugK5bxXUjO6KA2qgWmdpHuCKtoNgkzWU9fNSuYp7tCA==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+
+"@jimp/plugin-color@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.10.3.tgz#810c0f7cb4ceb21da1aecfbdb6ae09f00c1c0bfa"
+ integrity sha512-RgeHUElmlTH7vpI4WyQrz6u59spiKfVQbsG/XUzfWGamFSixa24ZDwX/yV/Ts+eNaz7pZeIuv533qmKPvw2ujg==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+ tinycolor2 "^1.4.1"
+
+"@jimp/plugin-contain@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.10.3.tgz#cf62126a60260359061be456b2193818c5eb1df5"
+ integrity sha512-bYJKW9dqzcB0Ihc6u7jSyKa3juStzbLs2LFr6fu8TzA2WkMS/R8h+ddkiO36+F9ILTWHP0CIA3HFe5OdOGcigw==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+
+"@jimp/plugin-cover@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.10.3.tgz#7cdf56ce878c24adc35c583735015118c6de38b4"
+ integrity sha512-pOxu0cM0BRPzdV468n4dMocJXoMbTnARDY/EpC3ZW15SpMuc/dr1KhWQHgoQX5kVW1Wt8zgqREAJJCQ5KuPKDA==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+
+"@jimp/plugin-crop@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.10.3.tgz#03785181f62ddae9558ae73206f8d6217d7fa703"
+ integrity sha512-nB7HgOjjl9PgdHr076xZ3Sr6qHYzeBYBs9qvs3tfEEUeYMNnvzgCCGtUl6eMakazZFCMk3mhKmcB9zQuHFOvkg==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+
+"@jimp/plugin-displace@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.10.3.tgz#cb5b225e6cf3cf44062b08cd2cf2115b3150d8c3"
+ integrity sha512-8t3fVKCH5IVqI4lewe4lFFjpxxr69SQCz5/tlpDLQZsrNScNJivHdQ09zljTrVTCSgeCqQJIKgH2Q7Sk/pAZ0w==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+
+"@jimp/plugin-dither@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.10.3.tgz#c5c1cbbf157a771ba72b947dd9921a7bff3cf41a"
+ integrity sha512-JCX/oNSnEg1kGQ8ffZ66bEgQOLCY3Rn+lrd6v1jjLy/mn9YVZTMsxLtGCXpiCDC2wG/KTmi4862ysmP9do9dAQ==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+
+"@jimp/plugin-fisheye@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.10.3.tgz#dee46d704df5c681556dc9ea9e87e8c77ac4fdda"
+ integrity sha512-RRZb1wqe+xdocGcFtj2xHU7sF7xmEZmIa6BmrfSchjyA2b32TGPWKnP3qyj7p6LWEsXn+19hRYbjfyzyebPElQ==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+
+"@jimp/plugin-flip@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.10.3.tgz#12f894f85b283ad4f43b492e0755f8ec9459bc60"
+ integrity sha512-0epbi8XEzp0wmSjoW9IB0iMu0yNF17aZOxLdURCN3Zr+8nWPs5VNIMqSVa1Y62GSyiMDpVpKF/ITiXre+EqrPg==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+
+"@jimp/plugin-gaussian@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.10.3.tgz#279222fc5d3aec24fab6162df2a1190309c71874"
+ integrity sha512-25eHlFbHUDnMMGpgRBBeQ2AMI4wsqCg46sue0KklI+c2BaZ+dGXmJA5uT8RTOrt64/K9Wz5E+2n7eBnny4dfpQ==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+
+"@jimp/plugin-invert@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.10.3.tgz#6b7beacbe507fa03eec87b1d6343feba80e342eb"
+ integrity sha512-effYSApWY/FbtlzqsKXlTLkgloKUiHBKjkQnqh5RL4oQxh/33j6aX+HFdDyQKtsXb8CMd4xd7wyiD2YYabTa0g==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+
+"@jimp/plugin-mask@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.10.3.tgz#72d994c3bb56c050a4edd6515f74b5b6d92dee69"
+ integrity sha512-twrg8q8TIhM9Z6Jcu9/5f+OCAPaECb0eKrrbbIajJqJ3bCUlj5zbfgIhiQIzjPJ6KjpnFPSqHQfHkU1Vvk/nVw==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+
+"@jimp/plugin-normalize@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.10.3.tgz#f3cbb8a0fcc8e696619d5d46403b0620ee5240d6"
+ integrity sha512-xkb5eZI/mMlbwKkDN79+1/t/+DBo8bBXZUMsT4gkFgMRKNRZ6NQPxlv1d3QpRzlocsl6UMxrHnhgnXdLAcgrXw==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+
+"@jimp/plugin-print@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.10.3.tgz#565d57a3a87dd59b4ede9cba7a6e34f8d01ed1b1"
+ integrity sha512-wjRiI6yjXsAgMe6kVjizP+RgleUCLkH256dskjoNvJzmzbEfO7xQw9g6M02VET+emnbY0CO83IkrGm2q43VRyg==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+ load-bmfont "^1.4.0"
+
+"@jimp/plugin-resize@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.10.3.tgz#616fab55a1996a12e9583e7c1fb76815388fc14b"
+ integrity sha512-rf8YmEB1d7Sg+g4LpqF0Mp+dfXfb6JFJkwlAIWPUOR7lGsPWALavEwTW91c0etEdnp0+JB9AFpy6zqq7Lwkq6w==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+
+"@jimp/plugin-rotate@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.10.3.tgz#cfcbdad664e13c84ce9b008ddbc157e03d7baa31"
+ integrity sha512-YXLlRjm18fkW9MOHUaVAxWjvgZM851ofOipytz5FyKp4KZWDLk+dZK1JNmVmK7MyVmAzZ5jsgSLhIgj+GgN0Eg==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+
+"@jimp/plugin-scale@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.10.3.tgz#b593081ff35b0e9e11d5e0a3188c590eaa838434"
+ integrity sha512-5DXD7x7WVcX1gUgnlFXQa8F+Q3ThRYwJm+aesgrYvDOY+xzRoRSdQvhmdd4JEEue3lyX44DvBSgCIHPtGcEPaw==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+
+"@jimp/plugin-shadow@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.10.3.tgz#a9d54c8081a55152e5cc830cf5c898ab882b519a"
+ integrity sha512-/nkFXpt2zVcdP4ETdkAUL0fSzyrC5ZFxdcphbYBodqD7fXNqChS/Un1eD4xCXWEpW8cnG9dixZgQgStjywH0Mg==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+
+"@jimp/plugin-threshold@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.10.3.tgz#8dd289c81de4bfbdb496f9c24496f9ee3b751ab5"
+ integrity sha512-Dzh0Yq2wXP2SOnxcbbiyA4LJ2luwrdf1MghNIt9H+NX7B+IWw/N8qA2GuSm9n4BPGSLluuhdAWJqHcTiREriVA==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+
+"@jimp/plugins@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.10.3.tgz#e15d7ba3f9e2a6b479efad5c344c8b61e01b7cb2"
+ integrity sha512-jTT3/7hOScf0EIKiAXmxwayHhryhc1wWuIe3FrchjDjr9wgIGNN2a7XwCgPl3fML17DXK1x8EzDneCdh261bkw==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/plugin-blit" "^0.10.3"
+ "@jimp/plugin-blur" "^0.10.3"
+ "@jimp/plugin-circle" "^0.10.3"
+ "@jimp/plugin-color" "^0.10.3"
+ "@jimp/plugin-contain" "^0.10.3"
+ "@jimp/plugin-cover" "^0.10.3"
+ "@jimp/plugin-crop" "^0.10.3"
+ "@jimp/plugin-displace" "^0.10.3"
+ "@jimp/plugin-dither" "^0.10.3"
+ "@jimp/plugin-fisheye" "^0.10.3"
+ "@jimp/plugin-flip" "^0.10.3"
+ "@jimp/plugin-gaussian" "^0.10.3"
+ "@jimp/plugin-invert" "^0.10.3"
+ "@jimp/plugin-mask" "^0.10.3"
+ "@jimp/plugin-normalize" "^0.10.3"
+ "@jimp/plugin-print" "^0.10.3"
+ "@jimp/plugin-resize" "^0.10.3"
+ "@jimp/plugin-rotate" "^0.10.3"
+ "@jimp/plugin-scale" "^0.10.3"
+ "@jimp/plugin-shadow" "^0.10.3"
+ "@jimp/plugin-threshold" "^0.10.3"
+ core-js "^3.4.1"
+ timm "^1.6.1"
+
+"@jimp/png@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/png/-/png-0.10.3.tgz#5282cad239d02743137d88239e4cb1804ed877dd"
+ integrity sha512-YKqk/dkl+nGZxSYIDQrqhmaP8tC3IK8H7dFPnnzFVvbhDnyYunqBZZO3SaZUKTichClRw8k/CjBhbc+hifSGWg==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.10.3"
+ core-js "^3.4.1"
+ pngjs "^3.3.3"
+
+"@jimp/tiff@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.10.3.tgz#6d143bbc42b40c9f618686a596311b35f7ff8502"
+ integrity sha512-7EsJzZ5Y/EtinkBGuwX3Bi4S+zgbKouxjt9c82VJTRJOQgLWsE/RHqcyRCOQBhHAZ9QexYmDz34medfLKdoX0g==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ core-js "^3.4.1"
+ utif "^2.0.1"
+
+"@jimp/types@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/types/-/types-0.10.3.tgz#9122e0a3c70129c7f26c05bbeae5030ed3a6fd5d"
+ integrity sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/bmp" "^0.10.3"
+ "@jimp/gif" "^0.10.3"
+ "@jimp/jpeg" "^0.10.3"
+ "@jimp/png" "^0.10.3"
+ "@jimp/tiff" "^0.10.3"
+ core-js "^3.4.1"
+ timm "^1.6.1"
+
+"@jimp/utils@^0.10.3":
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/@jimp/utils/-/utils-0.10.3.tgz#69209dd6c2d6fd956a0beb67a47c26cb6f52f3fe"
+ integrity sha512-VcSlQhkil4ReYmg1KkN+WqHyYfZ2XfZxDsKAHSfST1GEz/RQHxKZbX+KhFKtKflnL0F4e6DlNQj3vznMNXCR2w==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ core-js "^3.4.1"
+ regenerator-runtime "^0.13.3"
+
+"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
+ version "0.3.3"
+ resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098"
+ integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==
+ dependencies:
+ "@jridgewell/set-array" "^1.0.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
+"@jridgewell/resolve-uri@^3.1.0":
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721"
+ integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
+
+"@jridgewell/set-array@^1.0.1":
+ version "1.1.2"
+ resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
+ integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
+
+"@jridgewell/source-map@^0.3.3":
+ version "0.3.5"
+ resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91"
+ integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.0"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15":
+ version "1.4.15"
+ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
+ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
+
+"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9":
+ version "0.3.20"
+ resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f"
+ integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.1.0"
+ "@jridgewell/sourcemap-codec" "^1.4.14"
+
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.5"
+ resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.walk@^1.2.3":
+ version "1.2.8"
+ resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
+"@rollup/pluginutils@^4.2.0":
+ version "4.2.1"
+ resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d"
+ integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==
+ dependencies:
+ estree-walker "^2.0.1"
+ picomatch "^2.2.2"
+
+"@vant/popperjs@^1.3.0":
+ version "1.3.0"
+ resolved "https://registry.npmjs.org/@vant/popperjs/-/popperjs-1.3.0.tgz#e0eff017124b5b2352ef3b36a6df06277f4400f2"
+ integrity sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw==
+
+"@vant/use@^1.6.0":
+ version "1.6.0"
+ resolved "https://registry.npmjs.org/@vant/use/-/use-1.6.0.tgz#237df3091617255519552ca311ffdfea9de59001"
+ integrity sha512-PHHxeAASgiOpSmMjceweIrv2AxDZIkWXyaczksMoWvKV2YAYEhoizRuk/xFnKF+emUIi46TsQ+rvlm/t2BBCfA==
+
+"@vitejs/plugin-legacy@^4.0.3":
+ version "4.1.1"
+ resolved "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-4.1.1.tgz#27aad7ab082d2d554cf48a8e4f1c0ae9f3eca522"
+ integrity sha512-um3gbVouD2Q/g19C0qpDfHwveXDCAHzs8OC3e9g6aXpKoD1H14himgs7wkMnhAynBJy7QqUoZNAXDuqN8zLR2g==
+ dependencies:
+ "@babel/core" "^7.22.9"
+ "@babel/preset-env" "^7.22.9"
+ browserslist "^4.21.9"
+ core-js "^3.31.1"
+ magic-string "^0.30.1"
+ regenerator-runtime "^0.13.11"
+ systemjs "^6.14.1"
+
+"@vitejs/plugin-vue-jsx@^3.0.1":
+ version "3.0.2"
+ resolved "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.0.2.tgz#f071274f78ea8132c6731986893b7c5c5231af24"
+ integrity sha512-obF26P2Z4Ogy3cPp07B4VaW6rpiu0ue4OT2Y15UxT5BZZ76haUY9guOsZV3uWh/I6xc+VeiW+ZVabRE82FyzWw==
+ dependencies:
+ "@babel/core" "^7.22.10"
+ "@babel/plugin-transform-typescript" "^7.22.10"
+ "@vue/babel-plugin-jsx" "^1.1.5"
+
+"@vitejs/plugin-vue@^4.2.1":
+ version "4.4.0"
+ resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.4.0.tgz#8ae96573236cdb12de6850a6d929b5537ec85390"
+ integrity sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==
+
+"@volar/language-core@1.10.10", "@volar/language-core@~1.10.5":
+ version "1.10.10"
+ resolved "https://registry.npmjs.org/@volar/language-core/-/language-core-1.10.10.tgz#9c240a36dd4007b9c4f00739f6cecb81da54a49e"
+ integrity sha512-nsV1o3AZ5n5jaEAObrS3MWLBWaGwUj/vAsc15FVNIv+DbpizQRISg9wzygsHBr56ELRH8r4K75vkYNMtsSNNWw==
+ dependencies:
+ "@volar/source-map" "1.10.10"
+
+"@volar/source-map@1.10.10", "@volar/source-map@~1.10.5":
+ version "1.10.10"
+ resolved "https://registry.npmjs.org/@volar/source-map/-/source-map-1.10.10.tgz#ec807fe60b8afe29e19bf6d1c90d2e76502df541"
+ integrity sha512-GVKjLnifV4voJ9F0vhP56p4+F3WGf+gXlRtjFZsv6v3WxBTWU3ZVeaRaEHJmWrcv5LXmoYYpk/SC25BKemPRkg==
+ dependencies:
+ muggle-string "^0.3.1"
+
+"@volar/typescript@~1.10.5":
+ version "1.10.10"
+ resolved "https://registry.npmjs.org/@volar/typescript/-/typescript-1.10.10.tgz#1f88202c63988ddfcee154a93050312041b83329"
+ integrity sha512-4a2r5bdUub2m+mYVnLu2wt59fuoYWe7nf0uXtGHU8QQ5LDNfzAR0wK7NgDiQ9rcl2WT3fxT2AA9AylAwFtj50A==
+ dependencies:
+ "@volar/language-core" "1.10.10"
+ path-browserify "^1.0.1"
+
+"@vue/babel-helper-vue-transform-on@^1.1.5":
+ version "1.1.5"
+ resolved "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.1.5.tgz#a976486b21e108e545524fe41ffe3fc9bbc28c7f"
+ integrity sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==
+
+"@vue/babel-plugin-jsx@^1.1.5":
+ version "1.1.5"
+ resolved "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.5.tgz#5088bae7dbb83531d94df3742ff650c12fd54973"
+ integrity sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==
+ dependencies:
+ "@babel/helper-module-imports" "^7.22.5"
+ "@babel/plugin-syntax-jsx" "^7.22.5"
+ "@babel/template" "^7.22.5"
+ "@babel/traverse" "^7.22.5"
+ "@babel/types" "^7.22.5"
+ "@vue/babel-helper-vue-transform-on" "^1.1.5"
+ camelcase "^6.3.0"
+ html-tags "^3.3.1"
+ svg-tags "^1.0.0"
+
+"@vue/compiler-core@3.2.47":
+ version "3.2.47"
+ resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.47.tgz#3e07c684d74897ac9aa5922c520741f3029267f8"
+ integrity sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/shared" "3.2.47"
+ estree-walker "^2.0.2"
+ source-map "^0.6.1"
+
+"@vue/compiler-core@3.3.8":
+ version "3.3.8"
+ resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.8.tgz#301bb60d0245265a88ed5b30e200fbf223acb313"
+ integrity sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g==
+ dependencies:
+ "@babel/parser" "^7.23.0"
+ "@vue/shared" "3.3.8"
+ estree-walker "^2.0.2"
+ source-map-js "^1.0.2"
+
+"@vue/compiler-dom@3.2.47":
+ version "3.2.47"
+ resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz#a0b06caf7ef7056939e563dcaa9cbde30794f305"
+ integrity sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==
+ dependencies:
+ "@vue/compiler-core" "3.2.47"
+ "@vue/shared" "3.2.47"
+
+"@vue/compiler-dom@3.3.8", "@vue/compiler-dom@^3.3.0":
+ version "3.3.8"
+ resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.8.tgz#09d832514b9b8d9415a3816b065d69dbefcc7e9b"
+ integrity sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ==
+ dependencies:
+ "@vue/compiler-core" "3.3.8"
+ "@vue/shared" "3.3.8"
+
+"@vue/compiler-sfc@3.2.47":
+ version "3.2.47"
+ resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz#1bdc36f6cdc1643f72e2c397eb1a398f5004ad3d"
+ integrity sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/compiler-core" "3.2.47"
+ "@vue/compiler-dom" "3.2.47"
+ "@vue/compiler-ssr" "3.2.47"
+ "@vue/reactivity-transform" "3.2.47"
+ "@vue/shared" "3.2.47"
+ estree-walker "^2.0.2"
+ magic-string "^0.25.7"
+ postcss "^8.1.10"
+ source-map "^0.6.1"
+
+"@vue/compiler-sfc@3.3.8":
+ version "3.3.8"
+ resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.8.tgz#40b18e48aa00260950964d1d72157668521be0e1"
+ integrity sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA==
+ dependencies:
+ "@babel/parser" "^7.23.0"
+ "@vue/compiler-core" "3.3.8"
+ "@vue/compiler-dom" "3.3.8"
+ "@vue/compiler-ssr" "3.3.8"
+ "@vue/reactivity-transform" "3.3.8"
+ "@vue/shared" "3.3.8"
+ estree-walker "^2.0.2"
+ magic-string "^0.30.5"
+ postcss "^8.4.31"
+ source-map-js "^1.0.2"
+
+"@vue/compiler-ssr@3.2.47":
+ version "3.2.47"
+ resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz#35872c01a273aac4d6070ab9d8da918ab13057ee"
+ integrity sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==
+ dependencies:
+ "@vue/compiler-dom" "3.2.47"
+ "@vue/shared" "3.2.47"
+
+"@vue/compiler-ssr@3.3.8":
+ version "3.3.8"
+ resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.8.tgz#136eed54411e4694815d961048a237191063fbce"
+ integrity sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w==
+ dependencies:
+ "@vue/compiler-dom" "3.3.8"
+ "@vue/shared" "3.3.8"
+
+"@vue/devtools-api@^6.5.0":
+ version "6.5.1"
+ resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz#7f71f31e40973eeee65b9a64382b13593fdbd697"
+ integrity sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==
+
+"@vue/language-core@1.8.22":
+ version "1.8.22"
+ resolved "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.22.tgz#1ef62645fb9b1f830c6c84a5586e49e74727b1e3"
+ integrity sha512-bsMoJzCrXZqGsxawtUea1cLjUT9dZnDsy5TuZ+l1fxRMzUGQUG9+Ypq4w//CqpWmrx7nIAJpw2JVF/t258miRw==
+ dependencies:
+ "@volar/language-core" "~1.10.5"
+ "@volar/source-map" "~1.10.5"
+ "@vue/compiler-dom" "^3.3.0"
+ "@vue/shared" "^3.3.0"
+ computeds "^0.0.1"
+ minimatch "^9.0.3"
+ muggle-string "^0.3.1"
+ vue-template-compiler "^2.7.14"
+
+"@vue/reactivity-transform@3.2.47":
+ version "3.2.47"
+ resolved "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz#e45df4d06370f8abf29081a16afd25cffba6d84e"
+ integrity sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/compiler-core" "3.2.47"
+ "@vue/shared" "3.2.47"
+ estree-walker "^2.0.2"
+ magic-string "^0.25.7"
+
+"@vue/reactivity-transform@3.3.8":
+ version "3.3.8"
+ resolved "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.8.tgz#6d07649013b0be5c670f0ab6cc7ddd3150ad03f2"
+ integrity sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw==
+ dependencies:
+ "@babel/parser" "^7.23.0"
+ "@vue/compiler-core" "3.3.8"
+ "@vue/shared" "3.3.8"
+ estree-walker "^2.0.2"
+ magic-string "^0.30.5"
+
+"@vue/reactivity@3.3.8":
+ version "3.3.8"
+ resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.8.tgz#cce8a03a3fd3539c3eeda53e277ba365d160dd4d"
+ integrity sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw==
+ dependencies:
+ "@vue/shared" "3.3.8"
+
+"@vue/runtime-core@3.3.8", "@vue/runtime-core@^3.2.45":
+ version "3.3.8"
+ resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.8.tgz#fba5a632cbf2b5d29e171489570149cb6975dcdb"
+ integrity sha512-qurzOlb6q26KWQ/8IShHkMDOuJkQnQcTIp1sdP4I9MbCf9FJeGVRXJFr2mF+6bXh/3Zjr9TDgURXrsCr9bfjUw==
+ dependencies:
+ "@vue/reactivity" "3.3.8"
+ "@vue/shared" "3.3.8"
+
+"@vue/runtime-dom@3.3.8":
+ version "3.3.8"
+ resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.8.tgz#e2d7aa795cf50914dda9a951887765a594b38af4"
+ integrity sha512-Noy5yM5UIf9UeFoowBVgghyGGPIDPy1Qlqt0yVsUdAVbqI8eeMSsTqBtauaEoT2UFXUk5S64aWVNJN4MJ2vRdA==
+ dependencies:
+ "@vue/runtime-core" "3.3.8"
+ "@vue/shared" "3.3.8"
+ csstype "^3.1.2"
+
+"@vue/server-renderer@3.2.47":
+ version "3.2.47"
+ resolved "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.47.tgz#8aa1d1871fc4eb5a7851aa7f741f8f700e6de3c0"
+ integrity sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==
+ dependencies:
+ "@vue/compiler-ssr" "3.2.47"
+ "@vue/shared" "3.2.47"
+
+"@vue/server-renderer@3.3.8":
+ version "3.3.8"
+ resolved "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.8.tgz#9b1779010e75783edeed8fcfb97d9c95fc3ac5d2"
+ integrity sha512-zVCUw7RFskvPuNlPn/8xISbrf0zTWsTSdYTsUTN1ERGGZGVnRxM2QZ3x1OR32+vwkkCm0IW6HmJ49IsPm7ilLg==
+ dependencies:
+ "@vue/compiler-ssr" "3.3.8"
+ "@vue/shared" "3.3.8"
+
+"@vue/shared@3.2.47":
+ version "3.2.47"
+ resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz#e597ef75086c6e896ff5478a6bfc0a7aa4bbd14c"
+ integrity sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==
+
+"@vue/shared@3.3.8", "@vue/shared@^3.0.0", "@vue/shared@^3.3.0":
+ version "3.3.8"
+ resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.3.8.tgz#f044942142e1d3a395f24132e6203a784838542d"
+ integrity sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw==
+
+"@vue/tsconfig@^0.1.3":
+ version "0.1.3"
+ resolved "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.1.3.tgz#4a61dbd29783d01ddab504276dcf0c2b6988654f"
+ integrity sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==
+
+accepts@~1.3.8:
+ version "1.3.8"
+ resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
+ integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
+ dependencies:
+ mime-types "~2.1.34"
+ negotiator "0.6.3"
+
+acorn@^8.8.2:
+ version "8.11.2"
+ resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b"
+ integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==
+
+address@^1.1.2:
+ version "1.2.2"
+ resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e"
+ integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+any-base@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz#ae101a62bc08a597b4c9ab5b7089d456630549fe"
+ integrity sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==
+
+anymatch@~3.1.2:
+ version "3.1.3"
+ resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
+ integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+array-flatten@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
+ integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
+
+autoprefixer@^10.4.14:
+ version "10.4.16"
+ resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz#fad1411024d8670880bdece3970aa72e3572feb8"
+ integrity sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==
+ dependencies:
+ browserslist "^4.21.10"
+ caniuse-lite "^1.0.30001538"
+ fraction.js "^4.3.6"
+ normalize-range "^0.1.2"
+ picocolors "^1.0.0"
+ postcss-value-parser "^4.2.0"
+
+babel-plugin-polyfill-corejs2@^0.4.6:
+ version "0.4.6"
+ resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz#b2df0251d8e99f229a8e60fc4efa9a68b41c8313"
+ integrity sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==
+ dependencies:
+ "@babel/compat-data" "^7.22.6"
+ "@babel/helper-define-polyfill-provider" "^0.4.3"
+ semver "^6.3.1"
+
+babel-plugin-polyfill-corejs3@^0.8.5:
+ version "0.8.6"
+ resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz#25c2d20002da91fe328ff89095c85a391d6856cf"
+ integrity sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.4.3"
+ core-js-compat "^3.33.1"
+
+babel-plugin-polyfill-regenerator@^0.5.3:
+ version "0.5.3"
+ resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz#d4c49e4b44614607c13fb769bcd85c72bb26a4a5"
+ integrity sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.4.3"
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+base64-js@^1.3.1:
+ version "1.5.1"
+ resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
+ integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+
+base64url@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d"
+ integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==
+
+binary-extensions@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
+ integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
+
+bmp-js@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz#e05a63f796a6c1ff25f4771ec7adadc148c07233"
+ integrity sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==
+
+body-parser@1.20.1:
+ version "1.20.1"
+ resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668"
+ integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==
+ dependencies:
+ bytes "3.1.2"
+ content-type "~1.0.4"
+ debug "2.6.9"
+ depd "2.0.0"
+ destroy "1.2.0"
+ http-errors "2.0.0"
+ iconv-lite "0.4.24"
+ on-finished "2.4.1"
+ qs "6.11.0"
+ raw-body "2.5.1"
+ type-is "~1.6.18"
+ unpipe "1.0.0"
+
+brace-expansion@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
+ integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
+ dependencies:
+ balanced-match "^1.0.0"
+
+braces@^3.0.2, braces@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+browserslist@^4.21.10, browserslist@^4.21.9, browserslist@^4.22.1:
+ version "4.22.1"
+ resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619"
+ integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==
+ dependencies:
+ caniuse-lite "^1.0.30001541"
+ electron-to-chromium "^1.4.535"
+ node-releases "^2.0.13"
+ update-browserslist-db "^1.0.13"
+
+buffer-equal@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b"
+ integrity sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==
+
+buffer-from@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
+ integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
+
+buffer@^5.2.0:
+ version "5.7.1"
+ resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
+ integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
+ dependencies:
+ base64-js "^1.3.1"
+ ieee754 "^1.1.13"
+
+bytes@3.1.2:
+ version "3.1.2"
+ resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
+ integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
+
+cac@6.7.9:
+ version "6.7.9"
+ resolved "https://registry.npmjs.org/cac/-/cac-6.7.9.tgz#70a2013067ce97c34b4acf18293cfcdbbef556dd"
+ integrity sha512-XN5qEpfNQCJ8jRaZgitSkkukjMRCGio+X3Ks5KUbGGlPbV+pSem1l9VuzooCBXOiMFshUZgyYqg6rgN8rjkb/w==
+
+call-bind@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513"
+ integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==
+ dependencies:
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.1"
+ set-function-length "^1.1.1"
+
+camelcase@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
+ integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
+
+caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541:
+ version "1.0.30001561"
+ resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz#752f21f56f96f1b1a52e97aae98c57c562d5d9da"
+ integrity sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==
+
+chalk@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chokidar@^3.5.3:
+ version "3.5.3"
+ resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
+ integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
+ dependencies:
+ anymatch "~3.1.2"
+ braces "~3.0.2"
+ glob-parent "~5.1.2"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.6.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
+
+commander@^2.20.0:
+ version "2.20.3"
+ resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
+compare-versions@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62"
+ integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==
+
+computeds@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz#215b08a4ba3e08a11ff6eee5d6d8d7166a97ce2e"
+ integrity sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==
+
+content-disposition@0.5.4:
+ version "0.5.4"
+ resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
+ integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
+ dependencies:
+ safe-buffer "5.2.1"
+
+content-type@~1.0.4:
+ version "1.0.5"
+ resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
+ integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
+
+convert-source-map@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
+ integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
+
+cookie-signature@1.0.6:
+ version "1.0.6"
+ resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
+ integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
+
+cookie@0.5.0:
+ version "0.5.0"
+ resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
+ integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
+
+copy-anything@^2.0.1:
+ version "2.0.6"
+ resolved "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480"
+ integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==
+ dependencies:
+ is-what "^3.14.1"
+
+core-js-compat@^3.31.0, core-js-compat@^3.33.1:
+ version "3.33.2"
+ resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.2.tgz#3ea4563bfd015ad4e4b52442865b02c62aba5085"
+ integrity sha512-axfo+wxFVxnqf8RvxTzoAlzW4gRoacrHeoFlc9n0x50+7BEyZL/Rt3hicaED1/CEd7I6tPCPVUYcJwCMO5XUYw==
+ dependencies:
+ browserslist "^4.22.1"
+
+core-js@^3.31.1, core-js@^3.4.1:
+ version "3.33.2"
+ resolved "https://registry.npmjs.org/core-js/-/core-js-3.33.2.tgz#312bbf6996a3a517c04c99b9909cdd27138d1ceb"
+ integrity sha512-XeBzWI6QL3nJQiHmdzbAOiMYqjrb7hwU7A39Qhvd/POSa/t9E1AeZyEZx3fNvp/vtM8zXwhoL0FsiS0hD0pruQ==
+
+cross-env@^7.0.3:
+ version "7.0.3"
+ resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf"
+ integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==
+ dependencies:
+ cross-spawn "^7.0.1"
+
+cross-spawn@^7.0.1, cross-spawn@^7.0.3:
+ version "7.0.3"
+ resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
+css-font-size-keywords@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz#854875ace9aca6a8d2ee0d345a44aae9bb6db6cb"
+ integrity sha512-Q+svMDbMlelgCfH/RVDKtTDaf5021O486ZThQPIpahnIjUkMUslC+WuOQSWTgGSrNCH08Y7tYNEmmy0hkfMI8Q==
+
+css-font-stretch-keywords@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz#50cee9b9ba031fb5c952d4723139f1e107b54b10"
+ integrity sha512-KmugPO2BNqoyp9zmBIUGwt58UQSfyk1X5DbOlkb2pckDXFSAfjsD5wenb88fNrD6fvS+vu90a/tsPpb9vb0SLg==
+
+css-font-style-keywords@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz#5c3532813f63b4a1de954d13cea86ab4333409e4"
+ integrity sha512-0Fn0aTpcDktnR1RzaBYorIxQily85M2KXRpzmxQPgh8pxUN9Fcn00I8u9I3grNr1QXVgCl9T5Imx0ZwKU973Vg==
+
+css-font-weight-keywords@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz#9bc04671ac85bc724b574ef5d3ac96b0d604fd97"
+ integrity sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA==
+
+css-list-helpers@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/css-list-helpers/-/css-list-helpers-2.0.0.tgz#7cb3d6f9ec9e5087ae49d834cead282806e8818f"
+ integrity sha512-9Bj8tZ0jWbAM3u/U6m/boAzAwLPwtjzFvwivr2piSvyVa3K3rChJzQy4RIHkNkKiZCHrEMWDJWtTR8UyVhdDnQ==
+
+css-system-font-keywords@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz#85c6f086aba4eb32c571a3086affc434b84823ed"
+ integrity sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA==
+
+cssesc@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
+ integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+
+csstype@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b"
+ integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==
+
+dayjs@^1.10.4:
+ version "1.11.10"
+ resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0"
+ integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==
+
+de-indent@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
+ integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==
+
+debug@2.6.9:
+ version "2.6.9"
+ resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^3.2.6:
+ version "3.2.7"
+ resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
+ integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
+ dependencies:
+ ms "^2.1.1"
+
+debug@^4.1.0, debug@^4.1.1, debug@^4.3.3:
+ version "4.3.4"
+ resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
+default-gateway@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71"
+ integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==
+ dependencies:
+ execa "^5.0.0"
+
+define-data-property@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3"
+ integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==
+ dependencies:
+ get-intrinsic "^1.2.1"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.0"
+
+depd@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
+ integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
+
+destroy@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
+ integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
+
+dom-walk@^0.1.0:
+ version "0.1.2"
+ resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84"
+ integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==
+
+ee-first@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+ integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
+
+electron-to-chromium@^1.4.535:
+ version "1.4.577"
+ resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.577.tgz#a732f11cf4532be96e5e3f1197dcda54c2cec7ad"
+ integrity sha512-/5xHPH6f00SxhHw6052r+5S1xO7gHNc89hV7tqlvnStvKbSrDqc/u6AlwPvVWWNj+s4/KL6T6y8ih+nOY0qYNA==
+
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+ integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
+
+errno@^0.1.1:
+ version "0.1.8"
+ resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
+ integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
+ dependencies:
+ prr "~1.0.1"
+
+es-module-lexer@^1.2.1:
+ version "1.3.1"
+ resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz#c1b0dd5ada807a3b3155315911f364dc4e909db1"
+ integrity sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==
+
+esbuild@^0.16.14:
+ version "0.16.17"
+ resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz#fc2c3914c57ee750635fee71b89f615f25065259"
+ integrity sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==
+ optionalDependencies:
+ "@esbuild/android-arm" "0.16.17"
+ "@esbuild/android-arm64" "0.16.17"
+ "@esbuild/android-x64" "0.16.17"
+ "@esbuild/darwin-arm64" "0.16.17"
+ "@esbuild/darwin-x64" "0.16.17"
+ "@esbuild/freebsd-arm64" "0.16.17"
+ "@esbuild/freebsd-x64" "0.16.17"
+ "@esbuild/linux-arm" "0.16.17"
+ "@esbuild/linux-arm64" "0.16.17"
+ "@esbuild/linux-ia32" "0.16.17"
+ "@esbuild/linux-loong64" "0.16.17"
+ "@esbuild/linux-mips64el" "0.16.17"
+ "@esbuild/linux-ppc64" "0.16.17"
+ "@esbuild/linux-riscv64" "0.16.17"
+ "@esbuild/linux-s390x" "0.16.17"
+ "@esbuild/linux-x64" "0.16.17"
+ "@esbuild/netbsd-x64" "0.16.17"
+ "@esbuild/openbsd-x64" "0.16.17"
+ "@esbuild/sunos-x64" "0.16.17"
+ "@esbuild/win32-arm64" "0.16.17"
+ "@esbuild/win32-ia32" "0.16.17"
+ "@esbuild/win32-x64" "0.16.17"
+
+esbuild@^0.17.5:
+ version "0.17.19"
+ resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955"
+ integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==
+ optionalDependencies:
+ "@esbuild/android-arm" "0.17.19"
+ "@esbuild/android-arm64" "0.17.19"
+ "@esbuild/android-x64" "0.17.19"
+ "@esbuild/darwin-arm64" "0.17.19"
+ "@esbuild/darwin-x64" "0.17.19"
+ "@esbuild/freebsd-arm64" "0.17.19"
+ "@esbuild/freebsd-x64" "0.17.19"
+ "@esbuild/linux-arm" "0.17.19"
+ "@esbuild/linux-arm64" "0.17.19"
+ "@esbuild/linux-ia32" "0.17.19"
+ "@esbuild/linux-loong64" "0.17.19"
+ "@esbuild/linux-mips64el" "0.17.19"
+ "@esbuild/linux-ppc64" "0.17.19"
+ "@esbuild/linux-riscv64" "0.17.19"
+ "@esbuild/linux-s390x" "0.17.19"
+ "@esbuild/linux-x64" "0.17.19"
+ "@esbuild/netbsd-x64" "0.17.19"
+ "@esbuild/openbsd-x64" "0.17.19"
+ "@esbuild/sunos-x64" "0.17.19"
+ "@esbuild/win32-arm64" "0.17.19"
+ "@esbuild/win32-ia32" "0.17.19"
+ "@esbuild/win32-x64" "0.17.19"
+
+escalade@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
+ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+
+escape-html@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+ integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
+
+escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+
+estree-walker@^2.0.1, estree-walker@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
+ integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
+
+esutils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+etag@~1.8.1:
+ version "1.8.1"
+ resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+ integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
+
+execa@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
+ integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
+ dependencies:
+ cross-spawn "^7.0.3"
+ get-stream "^6.0.0"
+ human-signals "^2.1.0"
+ is-stream "^2.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^4.0.1"
+ onetime "^5.1.2"
+ signal-exit "^3.0.3"
+ strip-final-newline "^2.0.0"
+
+exif-parser@^0.1.12:
+ version "0.1.12"
+ resolved "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz#58a9d2d72c02c1f6f02a0ef4a9166272b7760922"
+ integrity sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==
+
+express@^4.17.1:
+ version "4.18.2"
+ resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59"
+ integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==
+ dependencies:
+ accepts "~1.3.8"
+ array-flatten "1.1.1"
+ body-parser "1.20.1"
+ content-disposition "0.5.4"
+ content-type "~1.0.4"
+ cookie "0.5.0"
+ cookie-signature "1.0.6"
+ debug "2.6.9"
+ depd "2.0.0"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ finalhandler "1.2.0"
+ fresh "0.5.2"
+ http-errors "2.0.0"
+ merge-descriptors "1.0.1"
+ methods "~1.1.2"
+ on-finished "2.4.1"
+ parseurl "~1.3.3"
+ path-to-regexp "0.1.7"
+ proxy-addr "~2.0.7"
+ qs "6.11.0"
+ range-parser "~1.2.1"
+ safe-buffer "5.2.1"
+ send "0.18.0"
+ serve-static "1.15.0"
+ setprototypeof "1.2.0"
+ statuses "2.0.1"
+ type-is "~1.6.18"
+ utils-merge "1.0.1"
+ vary "~1.1.2"
+
+fast-glob@^3.2.11:
+ version "3.3.2"
+ resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
+ integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.2"
+ merge2 "^1.3.0"
+ micromatch "^4.0.4"
+
+fastq@^1.6.0:
+ version "1.15.0"
+ resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a"
+ integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
+ dependencies:
+ reusify "^1.0.4"
+
+file-type@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz#a68d5ad07f486414dfb2c8866f73161946714a18"
+ integrity sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+finalhandler@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32"
+ integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
+ dependencies:
+ debug "2.6.9"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ on-finished "2.4.1"
+ parseurl "~1.3.3"
+ statuses "2.0.1"
+ unpipe "~1.0.0"
+
+forwarded@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
+ integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
+
+fraction.js@^4.3.6:
+ version "4.3.7"
+ resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7"
+ integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==
+
+fresh@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+ integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
+
+fs-extra@^10.0.0:
+ version "10.1.0"
+ resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
+ integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==
+ dependencies:
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
+fsevents@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
+ integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
+
+function-bind@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
+ integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
+
+generic-names@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz#0bd8a2fd23fe8ea16cbd0a279acd69c06933d9a3"
+ integrity sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==
+ dependencies:
+ loader-utils "^3.2.0"
+
+gensync@^1.0.0-beta.2:
+ version "1.0.0-beta.2"
+ resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+
+get-intrinsic@^1.0.2, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b"
+ integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==
+ dependencies:
+ function-bind "^1.1.2"
+ has-proto "^1.0.1"
+ has-symbols "^1.0.3"
+ hasown "^2.0.0"
+
+get-stream@^6.0.0:
+ version "6.0.1"
+ resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
+ integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
+
+glob-parent@^5.1.2, glob-parent@~5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+global@~4.4.0:
+ version "4.4.0"
+ resolved "https://registry.npmjs.org/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406"
+ integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==
+ dependencies:
+ min-document "^2.19.0"
+ process "^0.11.10"
+
+globals@^11.1.0:
+ version "11.12.0"
+ resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+gopd@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
+ integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
+ dependencies:
+ get-intrinsic "^1.1.3"
+
+graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0:
+ version "4.2.11"
+ resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
+ integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
+
+has-property-descriptors@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340"
+ integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==
+ dependencies:
+ get-intrinsic "^1.2.2"
+
+has-proto@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0"
+ integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==
+
+has-symbols@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
+ integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+
+hash-sum@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a"
+ integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==
+
+hasown@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c"
+ integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==
+ dependencies:
+ function-bind "^1.1.2"
+
+he@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
+ integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+
+html-tags@^3.3.1:
+ version "3.3.1"
+ resolved "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce"
+ integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==
+
+http-errors@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
+ integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
+ dependencies:
+ depd "2.0.0"
+ inherits "2.0.4"
+ setprototypeof "1.2.0"
+ statuses "2.0.1"
+ toidentifier "1.0.1"
+
+human-signals@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
+ integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
+
+iconv-lite@0.4.24:
+ version "0.4.24"
+ resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+iconv-lite@^0.6.3:
+ version "0.6.3"
+ resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
+ integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3.0.0"
+
+icss-replace-symbols@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
+ integrity sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==
+
+icss-utils@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
+ integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
+
+ieee754@^1.1.13:
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
+ integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
+
+image-size@~0.5.0:
+ version "0.5.5"
+ resolved "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
+ integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==
+
+inherits@2.0.4:
+ version "2.0.4"
+ resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+invert-kv@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.npmjs.org/invert-kv/-/invert-kv-3.0.1.tgz#a93c7a3d4386a1dc8325b97da9bb1620c0282523"
+ integrity sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==
+
+ipaddr.js@1.9.1:
+ version "1.9.1"
+ resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
+ integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
+
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-core-module@^2.13.0:
+ version "2.13.1"
+ resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384"
+ integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==
+ dependencies:
+ hasown "^2.0.0"
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+
+is-function@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08"
+ integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==
+
+is-glob@^4.0.1, is-glob@~4.0.1:
+ version "4.0.3"
+ resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-stream@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
+ integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
+
+is-what@^3.14.1:
+ version "3.14.1"
+ resolved "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1"
+ integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+
+jimp@^0.10.1:
+ version "0.10.3"
+ resolved "https://registry.npmjs.org/jimp/-/jimp-0.10.3.tgz#285027b49eee3418259a8e1e9a20dd078cf8b7b1"
+ integrity sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/custom" "^0.10.3"
+ "@jimp/plugins" "^0.10.3"
+ "@jimp/types" "^0.10.3"
+ core-js "^3.4.1"
+ regenerator-runtime "^0.13.3"
+
+jpeg-js@^0.3.4:
+ version "0.3.7"
+ resolved "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.7.tgz#471a89d06011640592d314158608690172b1028d"
+ integrity sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==
+
+js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+jsesc@^2.5.1:
+ version "2.5.2"
+ resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+
+jsesc@~0.5.0:
+ version "0.5.0"
+ resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+ integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==
+
+json5@^2.2.3:
+ version "2.2.3"
+ resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
+
+jsonc-parser@^3.0.0, jsonc-parser@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76"
+ integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==
+
+jsonfile@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
+ integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
+ dependencies:
+ universalify "^2.0.0"
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+lcid@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/lcid/-/lcid-3.1.1.tgz#9030ec479a058fc36b5e8243ebaac8b6ac582fd0"
+ integrity sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==
+ dependencies:
+ invert-kv "^3.0.0"
+
+less-loader@^11.1.3:
+ version "11.1.3"
+ resolved "https://registry.npmjs.org/less-loader/-/less-loader-11.1.3.tgz#1bb62d6ca9bf00a177c02793b54baac40f9be694"
+ integrity sha512-A5b7O8dH9xpxvkosNrP0dFp2i/dISOJa9WwGF3WJflfqIERE2ybxh1BFDj5CovC2+jCE4M354mk90hN6ziXlVw==
+
+less@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.npmjs.org/less/-/less-4.2.0.tgz#cbefbfaa14a4cd388e2099b2b51f956e1465c450"
+ integrity sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==
+ dependencies:
+ copy-anything "^2.0.1"
+ parse-node-version "^1.0.1"
+ tslib "^2.3.0"
+ optionalDependencies:
+ errno "^0.1.1"
+ graceful-fs "^4.1.2"
+ image-size "~0.5.0"
+ make-dir "^2.1.0"
+ mime "^1.4.1"
+ needle "^3.1.0"
+ source-map "~0.6.0"
+
+licia@^1.29.0:
+ version "1.38.2"
+ resolved "https://registry.npmjs.org/licia/-/licia-1.38.2.tgz#3fc9d85a5e715711bf5c367b52329147414c07ff"
+ integrity sha512-QsX3fZt88e1KaNdZXTSXqGYNHFXMV8xgfwa3eCTYdv8k4OLQimxwjTdXXej11BdSyUUp0rCZROI8rcTvnZRZ7w==
+
+lilconfig@^2.0.5:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52"
+ integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==
+
+load-bmfont@^1.3.1, load-bmfont@^1.4.0:
+ version "1.4.1"
+ resolved "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz#c0f5f4711a1e2ccff725a7b6078087ccfcddd3e9"
+ integrity sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==
+ dependencies:
+ buffer-equal "0.0.1"
+ mime "^1.3.4"
+ parse-bmfont-ascii "^1.0.3"
+ parse-bmfont-binary "^1.0.5"
+ parse-bmfont-xml "^1.1.4"
+ phin "^2.9.1"
+ xhr "^2.0.1"
+ xtend "^4.0.0"
+
+loader-utils@^3.2.0:
+ version "3.2.1"
+ resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576"
+ integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==
+
+localstorage-polyfill@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/localstorage-polyfill/-/localstorage-polyfill-1.0.1.tgz#4b3083d4bc51d23b4158537e66816137413fd31a"
+ integrity sha512-m4iHVZxFH5734oQcPKU08025gIz2+4bjWR9lulP8ZYxEJR0BpA0w32oJmkzh8y3UI9ci7xCBehQDc3oA1X+VHw==
+
+lodash.camelcase@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+ integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==
+
+lodash.debounce@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
+ integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==
+
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+magic-string@^0.25.7:
+ version "0.25.9"
+ resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
+ integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
+ dependencies:
+ sourcemap-codec "^1.4.8"
+
+magic-string@^0.30.0, magic-string@^0.30.1, magic-string@^0.30.5:
+ version "0.30.5"
+ resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9"
+ integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==
+ dependencies:
+ "@jridgewell/sourcemap-codec" "^1.4.15"
+
+make-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
+ integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
+ dependencies:
+ pify "^4.0.1"
+ semver "^5.6.0"
+
+media-typer@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
+ integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
+
+merge-descriptors@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
+ integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
+
+merge-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
+ integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
+
+merge2@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+merge@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz#59ef4bf7e0b3e879186436e8481c06a6c162ca98"
+ integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==
+
+methods@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+ integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
+
+micromatch@^4.0.4:
+ version "4.0.5"
+ resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
+ integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
+ dependencies:
+ braces "^3.0.2"
+ picomatch "^2.3.1"
+
+mime-db@1.52.0:
+ version "1.52.0"
+ resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
+ integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
+
+mime-types@~2.1.24, mime-types@~2.1.34:
+ version "2.1.35"
+ resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
+ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
+ dependencies:
+ mime-db "1.52.0"
+
+mime@1.6.0, mime@^1.3.4, mime@^1.4.1:
+ version "1.6.0"
+ resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
+mime@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7"
+ integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==
+
+mimic-fn@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+min-document@^2.19.0:
+ version "2.19.0"
+ resolved "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
+ integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==
+ dependencies:
+ dom-walk "^0.1.0"
+
+minimatch@^9.0.3:
+ version "9.0.3"
+ resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825"
+ integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==
+ dependencies:
+ brace-expansion "^2.0.1"
+
+minimist@^1.2.6:
+ version "1.2.8"
+ resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
+ integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
+
+mkdirp@^0.5.1:
+ version "0.5.6"
+ resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
+ integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
+ dependencies:
+ minimist "^1.2.6"
+
+module-alias@^2.2.2:
+ version "2.2.3"
+ resolved "https://registry.npmjs.org/module-alias/-/module-alias-2.2.3.tgz#ec2e85c68973bda6ab71ce7c93b763ec96053221"
+ integrity sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q==
+
+mp-html@^2.4.1:
+ version "2.4.2"
+ resolved "https://registry.npmjs.org/mp-html/-/mp-html-2.4.2.tgz#dfc08136d05990ac4d97b3d603c7689cbcd6a031"
+ integrity sha512-MSfJh5ckuaI2uibeO4qiUl2e/j5fpXy6cmW/ZzSkb+U3rTJfMSNzODqrDwG0YWOd8BVI+tD9/jLZiBhJbMupUg==
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
+
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+ms@2.1.3, ms@^2.1.1:
+ version "2.1.3"
+ resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
+muggle-string@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz#e524312eb1728c63dd0b2ac49e3282e6ed85963a"
+ integrity sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==
+
+nanoid@^3.3.6:
+ version "3.3.7"
+ resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
+ integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
+
+needle@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz#07d240ebcabfd65c76c03afae7f6defe6469df44"
+ integrity sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==
+ dependencies:
+ debug "^3.2.6"
+ iconv-lite "^0.6.3"
+ sax "^1.2.4"
+
+negotiator@0.6.3:
+ version "0.6.3"
+ resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
+ integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
+
+node-releases@^2.0.13:
+ version "2.0.13"
+ resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d"
+ integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+normalize-range@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
+ integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
+
+npm-run-path@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
+ integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
+ dependencies:
+ path-key "^3.0.0"
+
+object-inspect@^1.9.0:
+ version "1.13.1"
+ resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2"
+ integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==
+
+omggif@^1.0.9:
+ version "1.0.10"
+ resolved "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz#ddaaf90d4a42f532e9e7cb3a95ecdd47f17c7b19"
+ integrity sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==
+
+on-finished@2.4.1:
+ version "2.4.1"
+ resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
+ integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
+ dependencies:
+ ee-first "1.1.1"
+
+onetime@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
+ integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
+ dependencies:
+ mimic-fn "^2.1.0"
+
+os-locale-s-fix@^1.0.8-fix-1:
+ version "1.0.8-fix-1"
+ resolved "https://registry.npmjs.org/os-locale-s-fix/-/os-locale-s-fix-1.0.8-fix-1.tgz#7db4f9fc7cea29e9266900ea0bc72aaff13ff14a"
+ integrity sha512-Sv0OvhPiMutICiwORAUefv02DCPb62IelBmo8ZsSrRHyI3FStqIWZvjqDkvtjU+lcujo7UNir+dCwKSqlEQ/5w==
+ dependencies:
+ lcid "^3.0.0"
+
+pako@^1.0.5:
+ version "1.0.11"
+ resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
+ integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
+
+parse-bmfont-ascii@^1.0.3:
+ version "1.0.6"
+ resolved "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz#11ac3c3ff58f7c2020ab22769079108d4dfa0285"
+ integrity sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==
+
+parse-bmfont-binary@^1.0.5:
+ version "1.0.6"
+ resolved "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz#d038b476d3e9dd9db1e11a0b0e53a22792b69006"
+ integrity sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==
+
+parse-bmfont-xml@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz#015319797e3e12f9e739c4d513872cd2fa35f389"
+ integrity sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==
+ dependencies:
+ xml-parse-from-string "^1.0.0"
+ xml2js "^0.4.5"
+
+parse-css-font@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/parse-css-font/-/parse-css-font-4.0.0.tgz#17f62c0d45195b9708d430d1e4d6f54b7e2753ed"
+ integrity sha512-lnY7dTUfjRXsSo5G5C639L8RaBBaVSgL+5hacIFKsNHzeCJQ5SFSZv1DZmc7+wZv/22PFGOq2YbaEHLdaCS/mQ==
+ dependencies:
+ css-font-size-keywords "^1.0.0"
+ css-font-stretch-keywords "^1.0.1"
+ css-font-style-keywords "^1.0.1"
+ css-font-weight-keywords "^1.0.0"
+ css-list-helpers "^2.0.0"
+ css-system-font-keywords "^1.0.0"
+ unquote "^1.1.1"
+
+parse-headers@^2.0.0:
+ version "2.0.5"
+ resolved "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9"
+ integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==
+
+parse-node-version@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b"
+ integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
+
+parseurl@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
+ integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
+
+path-browserify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
+ integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
+
+path-key@^3.0.0, path-key@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+path-parse@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+path-to-regexp@0.1.7:
+ version "0.1.7"
+ resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
+ integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
+
+phin@^2.9.1:
+ version "2.9.3"
+ resolved "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz#f9b6ac10a035636fb65dfc576aaaa17b8743125c"
+ integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==
+
+picocolors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
+ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+pify@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
+
+pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
+pixelmatch@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854"
+ integrity sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==
+ dependencies:
+ pngjs "^3.0.0"
+
+pngjs@^3.0.0, pngjs@^3.3.3:
+ version "3.4.0"
+ resolved "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f"
+ integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==
+
+postcss-import@^14.0.2:
+ version "14.1.0"
+ resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0"
+ integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==
+ dependencies:
+ postcss-value-parser "^4.0.0"
+ read-cache "^1.0.0"
+ resolve "^1.1.7"
+
+postcss-load-config@^3.1.1:
+ version "3.1.4"
+ resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855"
+ integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==
+ dependencies:
+ lilconfig "^2.0.5"
+ yaml "^1.10.2"
+
+postcss-modules-extract-imports@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d"
+ integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==
+
+postcss-modules-local-by-default@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz#b08eb4f083050708998ba2c6061b50c2870ca524"
+ integrity sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==
+ dependencies:
+ icss-utils "^5.0.0"
+ postcss-selector-parser "^6.0.2"
+ postcss-value-parser "^4.1.0"
+
+postcss-modules-scope@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06"
+ integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==
+ dependencies:
+ postcss-selector-parser "^6.0.4"
+
+postcss-modules-values@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c"
+ integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==
+ dependencies:
+ icss-utils "^5.0.0"
+
+postcss-modules@^4.3.0:
+ version "4.3.1"
+ resolved "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz#517c06c09eab07d133ae0effca2c510abba18048"
+ integrity sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==
+ dependencies:
+ generic-names "^4.0.0"
+ icss-replace-symbols "^1.1.0"
+ lodash.camelcase "^4.3.0"
+ postcss-modules-extract-imports "^3.0.0"
+ postcss-modules-local-by-default "^4.0.0"
+ postcss-modules-scope "^3.0.0"
+ postcss-modules-values "^4.0.0"
+ string-hash "^1.1.1"
+
+postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.6:
+ version "6.0.13"
+ resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b"
+ integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==
+ dependencies:
+ cssesc "^3.0.0"
+ util-deprecate "^1.0.2"
+
+postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
+ integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
+
+postcss@^8.1.10, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.31:
+ version "8.4.31"
+ resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d"
+ integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==
+ dependencies:
+ nanoid "^3.3.6"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
+process@^0.11.10:
+ version "0.11.10"
+ resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+ integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
+
+proxy-addr@~2.0.7:
+ version "2.0.7"
+ resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
+ integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
+ dependencies:
+ forwarded "0.2.0"
+ ipaddr.js "1.9.1"
+
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
+ integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==
+
+qrcode-reader@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/qrcode-reader/-/qrcode-reader-1.0.4.tgz#95d9bb9e8130800361a96cb5a43124ad1d9e06b8"
+ integrity sha512-rRjALGNh9zVqvweg1j5OKIQKNsw3bLC+7qwlnead5K/9cb1cEIAGkwikt/09U0K+2IDWGD9CC6SP7tHAjUeqvQ==
+
+qrcode-terminal@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819"
+ integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==
+
+qs@6.11.0:
+ version "6.11.0"
+ resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
+ integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
+ dependencies:
+ side-channel "^1.0.4"
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+range-parser@~1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
+ integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
+
+raw-body@2.5.1:
+ version "2.5.1"
+ resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
+ integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
+ dependencies:
+ bytes "3.1.2"
+ http-errors "2.0.0"
+ iconv-lite "0.4.24"
+ unpipe "1.0.0"
+
+read-cache@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
+ integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==
+ dependencies:
+ pify "^2.3.0"
+
+readdirp@~3.6.0:
+ version "3.6.0"
+ resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
+ dependencies:
+ picomatch "^2.2.1"
+
+regenerate-unicode-properties@^10.1.0:
+ version "10.1.1"
+ resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480"
+ integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==
+ dependencies:
+ regenerate "^1.4.2"
+
+regenerate@^1.4.2:
+ version "1.4.2"
+ resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
+ integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
+
+regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.3:
+ version "0.13.11"
+ resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
+ integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
+
+regenerator-runtime@^0.14.0:
+ version "0.14.0"
+ resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45"
+ integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==
+
+regenerator-transform@^0.15.2:
+ version "0.15.2"
+ resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4"
+ integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==
+ dependencies:
+ "@babel/runtime" "^7.8.4"
+
+regexpu-core@^5.3.1:
+ version "5.3.2"
+ resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b"
+ integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==
+ dependencies:
+ "@babel/regjsgen" "^0.8.0"
+ regenerate "^1.4.2"
+ regenerate-unicode-properties "^10.1.0"
+ regjsparser "^0.9.1"
+ unicode-match-property-ecmascript "^2.0.0"
+ unicode-match-property-value-ecmascript "^2.1.0"
+
+regjsparser@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709"
+ integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==
+ dependencies:
+ jsesc "~0.5.0"
+
+resolve@^1.1.7, resolve@^1.14.2, resolve@^1.22.1:
+ version "1.22.8"
+ resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
+ integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
+ dependencies:
+ is-core-module "^2.13.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rollup@^3.10.0:
+ version "3.29.4"
+ resolved "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981"
+ integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+safe-area-insets@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.npmjs.org/safe-area-insets/-/safe-area-insets-1.4.1.tgz#89309e01a516dcd7d2fe012a9c4115182957bd8b"
+ integrity sha512-r/nRWTjFGhhm3w1Z6Kd/jY11srN+lHt2mNl1E/emQGW8ic7n3Avu4noibklfSM+Y34peNphHD/BSZecav0sXYQ==
+
+safe-buffer@5.2.1:
+ version "5.2.1"
+ resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0":
+ version "2.1.2"
+ resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+sax@>=0.6.0, sax@^1.2.4:
+ version "1.3.0"
+ resolved "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0"
+ integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==
+
+semver@^5.6.0:
+ version "5.7.2"
+ resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
+ integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
+
+semver@^6.3.1:
+ version "6.3.1"
+ resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
+ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
+
+semver@^7.5.4:
+ version "7.5.4"
+ resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
+ integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
+ dependencies:
+ lru-cache "^6.0.0"
+
+send@0.18.0:
+ version "0.18.0"
+ resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
+ integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
+ dependencies:
+ debug "2.6.9"
+ depd "2.0.0"
+ destroy "1.2.0"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "2.0.0"
+ mime "1.6.0"
+ ms "2.1.3"
+ on-finished "2.4.1"
+ range-parser "~1.2.1"
+ statuses "2.0.1"
+
+serve-static@1.15.0:
+ version "1.15.0"
+ resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
+ integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
+ dependencies:
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ parseurl "~1.3.3"
+ send "0.18.0"
+
+set-function-length@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed"
+ integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==
+ dependencies:
+ define-data-property "^1.1.1"
+ get-intrinsic "^1.2.1"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.0"
+
+setprototypeof@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
+ integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
+
+shebang-command@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+ dependencies:
+ shebang-regex "^3.0.0"
+
+shebang-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+side-channel@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
+ integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
+ dependencies:
+ call-bind "^1.0.0"
+ get-intrinsic "^1.0.2"
+ object-inspect "^1.9.0"
+
+signal-exit@^3.0.3:
+ version "3.0.7"
+ resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
+ integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
+
+source-map-js@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
+ integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
+
+source-map-support@~0.5.20:
+ version "0.5.21"
+ resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
+ integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0:
+ version "0.6.1"
+ resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+sourcemap-codec@^1.4.8:
+ version "1.4.8"
+ resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
+ integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
+
+statuses@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
+ integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
+
+string-hash@^1.1.1:
+ version "1.1.3"
+ resolved "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b"
+ integrity sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==
+
+strip-final-newline@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
+ integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
+svg-tags@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764"
+ integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==
+
+systemjs@^6.14.1:
+ version "6.14.2"
+ resolved "https://registry.npmjs.org/systemjs/-/systemjs-6.14.2.tgz#e289f959f8c8b407403bd39c6abaa16f2c13f316"
+ integrity sha512-1TlOwvKWdXxAY9vba+huLu99zrQURDWA8pUTYsRIYDZYQbGyK+pyEP4h4dlySsqo7ozyJBmYD20F+iUHhAltEg==
+
+tapable@^2.2.0:
+ version "2.2.1"
+ resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
+ integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
+
+terser@^5.4.0:
+ version "5.24.0"
+ resolved "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz#4ae50302977bca4831ccc7b4fef63a3c04228364"
+ integrity sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==
+ dependencies:
+ "@jridgewell/source-map" "^0.3.3"
+ acorn "^8.8.2"
+ commander "^2.20.0"
+ source-map-support "~0.5.20"
+
+timm@^1.6.1:
+ version "1.7.1"
+ resolved "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz#96bab60c7d45b5a10a8a4d0f0117c6b7e5aff76f"
+ integrity sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==
+
+tinycolor2@^1.4.1:
+ version "1.6.0"
+ resolved "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e"
+ integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+toidentifier@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
+ integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
+
+tslib@^2.3.0:
+ version "2.6.2"
+ resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
+ integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
+
+type-is@~1.6.18:
+ version "1.6.18"
+ resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
+ integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
+ dependencies:
+ media-typer "0.3.0"
+ mime-types "~2.1.24"
+
+typescript@^4.9.4:
+ version "4.9.5"
+ resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
+ integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
+
+unicode-canonical-property-names-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc"
+ integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==
+
+unicode-match-property-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3"
+ integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==
+ dependencies:
+ unicode-canonical-property-names-ecmascript "^2.0.0"
+ unicode-property-aliases-ecmascript "^2.0.0"
+
+unicode-match-property-value-ecmascript@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0"
+ integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==
+
+unicode-property-aliases-ecmascript@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd"
+ integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==
+
+universalify@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
+ integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
+
+unpipe@1.0.0, unpipe@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+ integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
+
+unquote@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
+ integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==
+
+update-browserslist-db@^1.0.13:
+ version "1.0.13"
+ resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4"
+ integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==
+ dependencies:
+ escalade "^3.1.1"
+ picocolors "^1.0.0"
+
+utif@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz#9e1582d9bbd20011a6588548ed3266298e711759"
+ integrity sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==
+ dependencies:
+ pako "^1.0.5"
+
+util-deprecate@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
+
+utils-merge@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
+ integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
+
+vant@^4.7.3:
+ version "4.7.3"
+ resolved "https://registry.npmjs.org/vant/-/vant-4.7.3.tgz#46cc14bff809e4bebb8651bab50b150ec49794d6"
+ integrity sha512-nb0pXxKSOaE9CvH//KozKDivqhjE4ZRvx1b/RCWFL4H3tZ5l+HhWtwK1yJx5AkO1Pm/IYQY86yZa1tums8DfsQ==
+ dependencies:
+ "@vant/popperjs" "^1.3.0"
+ "@vant/use" "^1.6.0"
+ "@vue/shared" "^3.0.0"
+
+vary@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
+ integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
+
+vite@4.1.4:
+ version "4.1.4"
+ resolved "https://registry.npmjs.org/vite/-/vite-4.1.4.tgz#170d93bcff97e0ebc09764c053eebe130bfe6ca0"
+ integrity sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==
+ dependencies:
+ esbuild "^0.16.14"
+ postcss "^8.4.21"
+ resolve "^1.22.1"
+ rollup "^3.10.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+vue-i18n@^9.1.9:
+ version "9.6.5"
+ resolved "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.6.5.tgz#3a0bdc1e339ded633dc90aee640a7249efdfe3e5"
+ integrity sha512-dpUEjKHg7pEsaS7ZPPxp1CflaR7bGmsvZJEhnszHPKl9OTNyno5j/DvMtMSo41kpddq4felLA7GK2prjpnXVlw==
+ dependencies:
+ "@intlify/core-base" "9.6.5"
+ "@intlify/shared" "9.6.5"
+ "@vue/devtools-api" "^6.5.0"
+
+vue-router@^4.1.6:
+ version "4.2.5"
+ resolved "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz#b9e3e08f1bd9ea363fdd173032620bc50cf0e98a"
+ integrity sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==
+ dependencies:
+ "@vue/devtools-api" "^6.5.0"
+
+vue-template-compiler@^2.7.14:
+ version "2.7.15"
+ resolved "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.15.tgz#ec88ba8ceafe0f17a528b89c57e01e02da92b0de"
+ integrity sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==
+ dependencies:
+ de-indent "^1.0.2"
+ he "^1.2.0"
+
+vue-tsc@^1.0.24:
+ version "1.8.22"
+ resolved "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.22.tgz#421e73c38b50802a6716ca32ed87b5970c867323"
+ integrity sha512-j9P4kHtW6eEE08aS5McFZE/ivmipXy0JzrnTgbomfABMaVKx37kNBw//irL3+LlE3kOo63XpnRigyPC3w7+z+A==
+ dependencies:
+ "@volar/typescript" "~1.10.5"
+ "@vue/language-core" "1.8.22"
+ semver "^7.5.4"
+
+vue@^3.2.45:
+ version "3.3.8"
+ resolved "https://registry.npmjs.org/vue/-/vue-3.3.8.tgz#532ff071af24f6a69e5ecc53a66858a9ee874ffc"
+ integrity sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w==
+ dependencies:
+ "@vue/compiler-dom" "3.3.8"
+ "@vue/compiler-sfc" "3.3.8"
+ "@vue/runtime-dom" "3.3.8"
+ "@vue/server-renderer" "3.3.8"
+ "@vue/shared" "3.3.8"
+
+which@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+ dependencies:
+ isexe "^2.0.0"
+
+ws@^8.4.2:
+ version "8.14.2"
+ resolved "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f"
+ integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==
+
+xhr@^2.0.1:
+ version "2.6.0"
+ resolved "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d"
+ integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==
+ dependencies:
+ global "~4.4.0"
+ is-function "^1.0.1"
+ parse-headers "^2.0.0"
+ xtend "^4.0.0"
+
+xml-parse-from-string@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28"
+ integrity sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==
+
+xml2js@^0.4.5:
+ version "0.4.23"
+ resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66"
+ integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==
+ dependencies:
+ sax ">=0.6.0"
+ xmlbuilder "~11.0.0"
+
+xmlbuilder@~11.0.0:
+ version "11.0.1"
+ resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3"
+ integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==
+
+xmlhttprequest@^1.8.0:
+ version "1.8.0"
+ resolved "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc"
+ integrity sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==
+
+xregexp@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/xregexp/-/xregexp-3.1.0.tgz#14d8461e0bdd38224bfee5039a0898fc42fcd336"
+ integrity sha512-4Y1x6DyB8xRoxosooa6PlGWqmmSKatbzhrftZ7Purmm4B8R4qIEJG1A2hZsdz5DhmIqS0msC0I7KEq93GphEVg==
+
+xtend@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+
+yallist@^3.0.2:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yaml@^1.10.2:
+ version "1.10.2"
+ resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
+ integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==