diff --git a/package.json b/package.json
index e2ea714..f97f56f 100644
--- a/package.json
+++ b/package.json
@@ -68,6 +68,7 @@
"@dcloudio/uni-automator": "3.0.0-3090920231225001",
"@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
"@dcloudio/uni-stacktracey": "3.0.0-3090920231225001",
+ "@dcloudio/uni-uts-v1": "3.0.0-3090920231225001",
"@dcloudio/vite-plugin-uni": "3.0.0-3090920231225001",
"@vue/runtime-core": "^3.2.45",
"sass": "^1.71.1",
diff --git a/src/pages.json b/src/pages.json
index d47f2e2..ca9774b 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -74,6 +74,23 @@
"style": {
"navigationBarTitleText": "个人信息"
}
+ },
+ {
+ "path": "pages/upgrade/index",
+ "style": {
+ "disableScroll": true,
+ "disableSwipeBack": true,
+ "app-plus": {
+ "backgroundColorTop": "transparent",
+ "background": "transparent",
+ "titleNView": false,
+ "scrollIndicator": false,
+
+ "popGesture": "none",
+ "animationType": "fade-in",
+ "animationDuration": 200
+ }
+ }
}
],
"subPackages": [
diff --git a/src/pages/clockout/index.vue b/src/pages/clockout/index.vue
index bcdbf98..99704c6 100644
--- a/src/pages/clockout/index.vue
+++ b/src/pages/clockout/index.vue
@@ -66,7 +66,7 @@
>
打卡
- {{ timeFormat(newTime, 'hh:mm:ss') }}
+ {{ timeFormat(newTime, 'hh:MM:ss') }}
diff --git a/src/pages/clockout/logs.vue b/src/pages/clockout/logs.vue
index 3807b3a..0e67643 100644
--- a/src/pages/clockout/logs.vue
+++ b/src/pages/clockout/logs.vue
@@ -47,7 +47,7 @@
v-if="current?.sign_status == 2 || current?.sign_status == 3"
>
补卡申请>
- 补卡申请
+ 更新打卡
diff --git a/src/pages/home/index.vue b/src/pages/home/index.vue
index 0e81e0e..139003b 100644
--- a/src/pages/home/index.vue
+++ b/src/pages/home/index.vue
@@ -88,6 +88,11 @@ import StoreDown from './components/store-down.vue'
import { useUserStore } from '@/store/modules/user'
import cuBadge from '@/components/cu-badge/index.vue'
import checkPermission from '@/utils/permission'
+import checkUpdate from '@/pages/upgrade/check-update'
+// #ifdef APP-PLUS
+checkUpdate()
+// #endif
+
const userStore = useUserStore()
const userInfo = computed(() => userStore.userInfo)
const unread_notifications = computed(
diff --git a/src/pages/setting/index.vue b/src/pages/setting/index.vue
index 46d06bc..7f98e9c 100644
--- a/src/pages/setting/index.vue
+++ b/src/pages/setting/index.vue
@@ -23,7 +23,7 @@
-
+ |
v{{ varsion }}
@@ -52,6 +52,7 @@ import Cell from '@/components/cell/index'
import { sys } from '@climblee/uv-ui/libs/function'
import { computed } from 'vue'
import { useUserStore } from '@/store/modules/user'
+import checkUpdate from '@/pages/upgrade/check-update'
const modalRef = ref(null)
const userStore = useUserStore()
@@ -73,4 +74,8 @@ const logout = () => {
url: '/pages/login/index',
})
}
+
+const onCheckUpdate = () => {
+ checkUpdate()
+}
diff --git a/src/pages/upgrade/call-check-version.js b/src/pages/upgrade/call-check-version.js
new file mode 100644
index 0000000..376182a
--- /dev/null
+++ b/src/pages/upgrade/call-check-version.js
@@ -0,0 +1,110 @@
+import { http } from '@/utils/request';
+
+export default function () {
+ // #ifdef APP
+ return new Promise((resolve, reject) => {
+ const systemInfo = uni.getSystemInfoSync();
+ const appId = systemInfo.appId;
+ const appVersion = systemInfo.appVersion; //systemInfo.appVersion
+ if (typeof appId === 'string' && typeof appVersion === 'string' && appId.length > 0 && appVersion.length > 0) {
+ plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
+
+ if (widgetInfo.version) {
+ let data = {
+ action: 'checkVersion',
+ appid: appId,
+ appVersion: appVersion,
+ wgtVersion: widgetInfo.version
+ };
+ http.get('/latest-app-versions').then(res => {
+ // console.log(res);
+ const resData = {
+ "android": {
+ "name": "v1.0.2",
+ "version": 102,
+ "title": "v.1.0.2",
+ "description": "1.xxx\n2.bbb",
+ "update_strategy": "wgt",
+ "is_force": true,
+ "apk_url": "http://localhost/storage/app-versions/v1.0.2_1714479188.apk",
+ "wgt_url": "http://localhost/storage/app-versions/v1.0.2_1714479188.wgt",
+ "release_at": 1714479289
+ },
+ "ios": {
+ "name": "v2.0.0",
+ "version": 200,
+ "title": "v2.0.0",
+ "description": "1.xxx\n2.bbb\n3.ccc",
+ "update_strategy": "apk",
+ "is_force": true,
+ "apk_url": "http://baidu.com",
+ "wgt_url": "http://localhost/storage/app-versions/v1.0.0_100_ios.wgt",
+ "release_at": 1714479106
+ }
+ }
+
+ // _id : string
+ // appid : string
+ // name : string
+ // title : string
+ // contents : string
+ // url : string // 安装包下载地址
+ // platform : Array // Array<'Android' | 'iOS'>
+ // version : string // 版本号 1.0.0
+ // uni_platform : string // "android" | "ios" // 版本号 1.0.0
+ // stable_publish : boolean // 是否是稳定版
+ // is_mandatory : boolean // 是否强制更新
+ // is_silently : boolean | null // 是否静默更新
+ // create_env : string // "upgrade-center"
+ // create_date : number
+ // message : string
+ // code : number
+
+ // type : string // "native_app" | "wgt"
+ // store_list : StoreListItem[] | null
+ // min_uni_version : string | null // 升级 wgt 的最低 uni-app 版本
+
+ const info = resData[systemInfo.platform];
+ console.log(info);
+ const resInfo = {
+ name: info.name,
+ title: info.title,
+ contents: info.description,
+ url: info.apk_url || info.wgt_url,
+ platform: systemInfo.platform,
+ version: info.version,
+ uni_platform: systemInfo.platform,
+ stable_publish: true,
+ is_mandatory: info.is_force,
+ //静默更新
+ is_silently: false,
+ //101 wgt更新
+ //102 apk更新
+ // 0 无更新
+ type: info.update_strategy,
+ // code: info.update_strategy === 'wgt' ? 101 : 102
+ code: 0
+ }
+ resolve(resInfo);
+ }).catch(err => {
+ reject(err);
+ })
+ }
+ else {
+ reject('widgetInfo.version is EMPTY');
+ }
+ });
+ }
+ else {
+ reject('plus.runtime.appid is EMPTY');
+ }
+ });
+ // #endif
+ // #ifndef APP
+ return new Promise((resolve, reject) => {
+ reject({
+ message: '请在App中使用'
+ });
+ });
+ // #endif
+}
diff --git a/src/pages/upgrade/check-update-nvue.js b/src/pages/upgrade/check-update-nvue.js
new file mode 100644
index 0000000..e6ed43d
--- /dev/null
+++ b/src/pages/upgrade/check-update-nvue.js
@@ -0,0 +1,184 @@
+function callCheckVersion() {
+ // #ifdef APP-PLUS
+ return new Promise((resolve, reject) => {
+ plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {
+ let data = {
+ action: 'checkVersion',
+ appid: plus.runtime.appid,
+ appVersion: plus.runtime.version,
+ wgtVersion: widgetInfo.version
+ }
+ uniCloud.callFunction({
+ name: 'uni-upgrade-center',
+ data,
+ success: (e) => {
+ resolve(e)
+ },
+ fail: (error) => {
+ reject(error)
+ }
+ })
+ })
+ })
+ // #endif
+ // #ifndef APP-PLUS
+ return new Promise((resolve, reject) => {})
+ // #endif
+}
+
+// 推荐再App.vue中使用
+const PACKAGE_INFO_KEY = '__package_info__'
+
+export default function() {
+ // #ifdef APP-PLUS
+ return new Promise((resolve, reject) => {
+ callCheckVersion().then(async (e) => {
+ if (!e.result) return;
+ const {
+ code,
+ message,
+ is_silently, // 是否静默更新
+ url, // 安装包下载地址
+ platform, // 安装包平台
+ type // 安装包类型
+ } = e.result;
+
+ // 此处逻辑仅为实例,可自行编写
+ if (code > 0) {
+ // 腾讯云和阿里云下载链接不同,需要处理一下,阿里云会原样返回
+ const {
+ fileList
+ } = await uniCloud.getTempFileURL({
+ fileList: [url]
+ });
+ if (fileList[0].tempFileURL)
+ e.result.url = fileList[0].tempFileURL;
+
+ resolve(e)
+
+ // 静默更新,只有wgt有
+ if (is_silently) {
+ uni.downloadFile({
+ url: e.result.url,
+ success: res => {
+ if (res.statusCode == 200) {
+ // 下载好直接安装,下次启动生效
+ plus.runtime.install(res.tempFilePath, {
+ force: false
+ });
+ }
+ }
+ });
+ return;
+ }
+
+ /**
+ * 提示升级一
+ * 使用 uni.showModal
+ */
+ // return updateUseModal(e.result)
+
+ /**
+ * 提示升级二
+ * 官方适配的升级弹窗,可自行替换资源适配UI风格
+ */
+ uni.setStorageSync(PACKAGE_INFO_KEY, e.result)
+ uni.navigateTo({
+ url: `/uni_modules/uni-upgrade-center-app/pages/upgrade-popup?local_storage_key=${PACKAGE_INFO_KEY}`,
+ fail: (err) => {
+ console.error('更新弹框跳转失败', err)
+ uni.removeStorageSync(PACKAGE_INFO_KEY)
+ }
+ })
+
+ return
+ } else if (code < 0) {
+ // TODO 云函数报错处理
+ console.error(message)
+ return reject(e)
+ }
+ return resolve(e)
+ }).catch(err => {
+ // TODO 云函数报错处理
+ console.error(err.message)
+ reject(err)
+ })
+ });
+ // #endif
+}
+
+/**
+ * 使用 uni.showModal 升级
+ */
+function updateUseModal(packageInfo) {
+ const {
+ title, // 标题
+ contents, // 升级内容
+ is_mandatory, // 是否强制更新
+ url, // 安装包下载地址
+ platform, // 安装包平台
+ type // 安装包类型
+ } = packageInfo;
+
+ let isWGT = type === 'wgt'
+ let isiOS = !isWGT ? platform.includes('iOS') : false;
+ let confirmText = isiOS ? '立即跳转更新' : '立即下载更新'
+
+ return uni.showModal({
+ title,
+ content: contents,
+ showCancel: !is_mandatory,
+ confirmText,
+ success: res => {
+ if (res.cancel) return;
+
+ // 安装包下载
+ if (isiOS) {
+ plus.runtime.openURL(url);
+ return;
+ }
+
+ uni.showToast({
+ title: '后台下载中……',
+ duration: 1000
+ });
+
+ // wgt 和 安卓下载更新
+ downloadTask = uni.downloadFile({
+ url,
+ success: res => {
+ if (res.statusCode !== 200) {
+ console.error('下载安装包失败', err);
+ return;
+ }
+ // 下载好直接安装,下次启动生效
+ plus.runtime.install(res.tempFilePath, {
+ force: false
+ }, () => {
+ if (is_mandatory) {
+ //更新完重启app
+ plus.runtime.restart();
+ return;
+ }
+ uni.showModal({
+ title: '安装成功是否重启?',
+ success: res => {
+ if (res.confirm) {
+ //更新完重启app
+ plus.runtime.restart();
+ }
+ }
+ });
+ }, err => {
+ uni.showModal({
+ title: '更新失败',
+ content: err
+ .message,
+ showCancel: false
+ });
+ });
+ }
+ });
+ }
+ });
+}
diff --git a/src/pages/upgrade/check-update.js b/src/pages/upgrade/check-update.js
new file mode 100644
index 0000000..aa0fa6d
--- /dev/null
+++ b/src/pages/upgrade/check-update.js
@@ -0,0 +1,124 @@
+import callCheckVersion from "./call-check-version";
+
+// Recommend using in App.vue
+const PACKAGE_INFO_KEY = '__package_info__';
+
+
+export default function () {
+
+ return new Promise((resolve, reject) => {
+ callCheckVersion().then(async (uniUpgradeCenterResult) => {
+ console.log('uniUpgradeCenterResult', uniUpgradeCenterResult);
+
+ const code = uniUpgradeCenterResult.code;
+ const message = uniUpgradeCenterResult.message;
+ const url = uniUpgradeCenterResult.url;
+
+ if (code > 0) {
+
+ if (uniUpgradeCenterResult.is_silently) {
+ uni.downloadFile({
+ url,
+ success: res => {
+ if (res.statusCode == 200) {
+ plus.runtime.install(res.tempFilePath, {
+ force: false
+ });
+ }
+ }
+ });
+ return;
+ }
+
+ uni.setStorageSync(PACKAGE_INFO_KEY, uniUpgradeCenterResult);
+ uni.navigateTo({
+ url: `/pages/upgrade/index?local_storage_key=${PACKAGE_INFO_KEY}`,
+ fail: (err) => {
+ console.error('Update dialog navigation failed', err);
+ uni.removeStorageSync(PACKAGE_INFO_KEY);
+ }
+ });
+
+
+
+ return resolve(uniUpgradeCenterResult);
+ } else if (code < 0) {
+ console.error(message);
+ return reject(uniUpgradeCenterResult);
+ }
+ return resolve(uniUpgradeCenterResult);
+ }).catch((err) => {
+ reject(err);
+ });
+ });
+}
+
+function updateUseModal(packageInfo) {
+ const {
+ title,
+ contents,
+ is_mandatory,
+ url,
+ type,
+ platform
+ } = packageInfo;
+
+ let isWGT = type === 'wgt';
+ let isiOS = !isWGT ? platform.includes('iOS') : false;
+
+ let confirmText = isiOS ? '立即跳转更新' : '立即下载更新';
+
+ return uni.showModal({
+ title,
+ content: contents,
+ showCancel: !is_mandatory,
+ confirmText,
+ success: res => {
+ if (res.cancel) return;
+
+ if (isiOS) {
+ plus.runtime.openURL(url);
+ return;
+ }
+
+ uni.showToast({
+ title: '后台下载中……',
+ duration: 1000
+ });
+
+ uni.downloadFile({
+ url,
+ success: res => {
+ if (res.statusCode !== 200) {
+ console.error('Download package failed');
+ return;
+ }
+
+ plus.runtime.install(res.tempFilePath, {
+ force: false
+ }, () => {
+ if (is_mandatory) {
+ plus.runtime.restart();
+ return;
+ }
+ uni.showModal({
+ title: '安装成功是否重启?',
+ success: res => {
+ if (res.confirm) {
+ plus.runtime.restart();
+ }
+ }
+ });
+ }, err => {
+ uni.showModal({
+ title: '更新失败',
+ content: err.message,
+ showCancel: false
+ });
+ });
+
+ }
+ });
+ }
+ });
+}
diff --git a/src/pages/upgrade/index.vue b/src/pages/upgrade/index.vue
new file mode 100644
index 0000000..872ff86
--- /dev/null
+++ b/src/pages/upgrade/index.vue
@@ -0,0 +1,611 @@
+
+
+
+
+ {{title}}
+
+
+
+
+
+
+ {{subTitle}}
+ {{version}}
+
+
+
+
+ {{contents}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/work/create.vue b/src/pages/work/create.vue
index 9a01bce..7b60f34 100644
--- a/src/pages/work/create.vue
+++ b/src/pages/work/create.vue
@@ -29,11 +29,10 @@
-
+
void) | null
+}
+```
+
+### finishNotificationProgress(options: FinishNotificationProgressOptions) : void
+
+完成时调用的API,比如下载完成后需要显示下载完成并隐藏进度时调用。
+
+参数说明
+
+
+```
+export type FinishNotificationProgressOptions = {
+ /**
+ * 通知标题
+ * @defaultValue 应用名称
+ */
+ title ?: string | null
+ /**
+ * 通知内容
+ */
+ content : string,
+ /**
+ * 点击通知消息回调
+ */
+ onClick : () => void
+}
+```
+
+
+### cancelNotificationProgress() : void
+
+取消通知消息显示
+
diff --git a/src/uni_modules/uts-progressNotification/utssdk/app-android/AndroidManifest.xml b/src/uni_modules/uts-progressNotification/utssdk/app-android/AndroidManifest.xml
new file mode 100644
index 0000000..93749e9
--- /dev/null
+++ b/src/uni_modules/uts-progressNotification/utssdk/app-android/AndroidManifest.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uts-progressNotification/utssdk/app-android/TransparentActivity.uts b/src/uni_modules/uts-progressNotification/utssdk/app-android/TransparentActivity.uts
new file mode 100644
index 0000000..1967899
--- /dev/null
+++ b/src/uni_modules/uts-progressNotification/utssdk/app-android/TransparentActivity.uts
@@ -0,0 +1,62 @@
+import Activity from "android.app.Activity";
+import Bundle from 'android.os.Bundle';
+import Build from 'android.os.Build';
+import View from 'android.view.View';
+import Color from 'android.graphics.Color';
+import WindowManager from 'android.view.WindowManager';
+import { globalNotificationProgressFinishCallBack, globalNotificationProgressCallBack } from './callbacks.uts';
+import { ACTION_DOWNLOAD_FINISH, ACTION_DOWNLOAD_PROGRESS } from "./constant.uts"
+
+
+export class TransparentActivity extends Activity {
+ constructor() {
+ super()
+ }
+
+ @Suppress("DEPRECATION")
+ override onCreate(savedInstanceState : Bundle | null) {
+ super.onCreate(savedInstanceState)
+ this.fullScreen(this)
+ const action = this.getIntent().getAction()
+ if (action == ACTION_DOWNLOAD_FINISH) {
+ setTimeout(() => {
+ globalNotificationProgressFinishCallBack()
+ globalNotificationProgressFinishCallBack = () => { }
+ }, 100)
+ this.overridePendingTransition(0, 0)
+ }
+
+ if (action == ACTION_DOWNLOAD_PROGRESS) {
+ setTimeout(() => {
+ globalNotificationProgressCallBack?.()
+ globalNotificationProgressCallBack = () => { }
+ }, 100)
+ this.overridePendingTransition(0, 0)
+ }
+
+ setTimeout(() => {
+ this.finish()
+ }, 20)
+ }
+
+
+ @Suppress("DEPRECATION")
+ private fullScreen(activity : Activity) {
+ if (Build.VERSION.SDK_INT >= 19) {
+ if (Build.VERSION.SDK_INT >= 21) {
+ const window = activity.getWindow();
+ const decorView = window.getDecorView();
+ const option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
+ decorView.setSystemUiVisibility(option);
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.setStatusBarColor(Color.TRANSPARENT);
+ } else {
+ const window = activity.getWindow();
+ const attributes = window.getAttributes();
+ const flagTranslucentStatus = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
+ attributes.flags |= flagTranslucentStatus;
+ window.setAttributes(attributes);
+ }
+ }
+ }
+}
diff --git a/src/uni_modules/uts-progressNotification/utssdk/app-android/callbacks.uts b/src/uni_modules/uts-progressNotification/utssdk/app-android/callbacks.uts
new file mode 100644
index 0000000..2378189
--- /dev/null
+++ b/src/uni_modules/uts-progressNotification/utssdk/app-android/callbacks.uts
@@ -0,0 +1,4 @@
+
+
+export let globalNotificationProgressCallBack : (() => void) | null = () => { }
+export let globalNotificationProgressFinishCallBack = () => { }
diff --git a/src/uni_modules/uts-progressNotification/utssdk/app-android/config.json b/src/uni_modules/uts-progressNotification/utssdk/app-android/config.json
new file mode 100644
index 0000000..7deedfa
--- /dev/null
+++ b/src/uni_modules/uts-progressNotification/utssdk/app-android/config.json
@@ -0,0 +1,3 @@
+{
+ "minSdkVersion": "19"
+}
\ No newline at end of file
diff --git a/src/uni_modules/uts-progressNotification/utssdk/app-android/constant.uts b/src/uni_modules/uts-progressNotification/utssdk/app-android/constant.uts
new file mode 100644
index 0000000..8652ac4
--- /dev/null
+++ b/src/uni_modules/uts-progressNotification/utssdk/app-android/constant.uts
@@ -0,0 +1,2 @@
+export const ACTION_DOWNLOAD_FINISH = "ACTION_DOWNLOAD_FINISH"
+export const ACTION_DOWNLOAD_PROGRESS = "ACTION_DOWNLOAD_PROGRESS"
\ No newline at end of file
diff --git a/src/uni_modules/uts-progressNotification/utssdk/app-android/index.uts b/src/uni_modules/uts-progressNotification/utssdk/app-android/index.uts
new file mode 100644
index 0000000..0782f61
--- /dev/null
+++ b/src/uni_modules/uts-progressNotification/utssdk/app-android/index.uts
@@ -0,0 +1,159 @@
+import Build from 'android.os.Build';
+import Context from 'android.content.Context';
+import NotificationManager from 'android.app.NotificationManager';
+import NotificationChannel from 'android.app.NotificationChannel';
+import Notification from 'android.app.Notification';
+import Intent from 'android.content.Intent';
+import ComponentName from 'android.content.ComponentName';
+import PendingIntent from 'android.app.PendingIntent';
+import { CreateNotificationProgressOptions, FinishNotificationProgressOptions } from '../interface.uts';
+import { ACTION_DOWNLOAD_FINISH, ACTION_DOWNLOAD_PROGRESS } from "./constant.uts"
+
+import { globalNotificationProgressFinishCallBack, globalNotificationProgressCallBack } from './callbacks.uts';
+
+export { TransparentActivity } from './TransparentActivity.uts';
+
+
+const DOWNLOAD_PROGRESS_NOTIFICATION_ID : Int = 7890
+const DC_DOWNLOAD_CHANNEL_ID = "下载文件"
+const DC_DOWNLOAD_CHANNEL_NAME = "用于显示现在进度的渠道"
+
+
+let notificationBuilder : Notification.Builder | null = null
+
+let timeId = -1
+
+let histroyProgress = 0
+
+let isProgress = false
+
+
+
+export function createNotificationProgress(options : CreateNotificationProgressOptions) : void {
+ const { content, progress, onClick } = options
+
+ if (progress == 100) {
+ clearTimeout(timeId)
+ const context = UTSAndroid.getAppContext() as Context
+ realCreateNotificationProgress(options.title ?? getAppName(context), content, progress, onClick)
+ reset()
+ return
+ }
+
+ histroyProgress = progress
+ if (timeId != -1) {
+ return
+ }
+
+ const context = UTSAndroid.getAppContext() as Context
+ if (!isProgress) {
+ realCreateNotificationProgress(options.title ?? getAppName(context), content, histroyProgress, onClick)
+ isProgress = true
+ } else {
+ timeId = setTimeout(() => {
+ realCreateNotificationProgress(options.title ?? getAppName(context), content, histroyProgress, onClick)
+ timeId = -1
+ }, 1000)
+ }
+}
+
+
+export function cancelNotificationProgress() : void {
+ const context = UTSAndroid.getAppContext() as Context
+ const notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
+ notificationManager.cancel(DOWNLOAD_PROGRESS_NOTIFICATION_ID)
+ reset()
+}
+
+
+function realCreateNotificationProgress(title : string, content : string, progress : number, cb : (() => void) | null) : void {
+ globalNotificationProgressCallBack = cb
+ const context = UTSAndroid.getAppContext() as Context
+ const notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
+ createDownloadChannel(notificationManager)
+ const builder = createNotificationBuilder(context)
+ builder.setProgress(100, progress.toInt(), false)
+ builder.setContentTitle(title)
+ builder.setContentText(content)
+ builder.setContentIntent(createPendingIntent(context, ACTION_DOWNLOAD_PROGRESS));
+ notificationManager.notify(DOWNLOAD_PROGRESS_NOTIFICATION_ID, builder.build())
+}
+
+
+export function finishNotificationProgress(options : FinishNotificationProgressOptions) {
+ globalNotificationProgressFinishCallBack = options.onClick
+ const context = UTSAndroid.getAppContext() as Context
+ const notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
+ createDownloadChannel(notificationManager)
+ const builder = createNotificationBuilder(context)
+ builder.setProgress(0, 0, false)
+ builder.setContentTitle(options.title ?? getAppName(context))
+ builder.setContentText(options.content)
+ //小米rom setOngoing未false的时候,会被通知管理器归为不重要通知
+ // builder.setOngoing(false)
+ builder.setAutoCancel(true);
+ builder.setContentIntent(createPendingIntent(context, ACTION_DOWNLOAD_FINISH));
+ notificationManager.notify(DOWNLOAD_PROGRESS_NOTIFICATION_ID, builder.build())
+ reset()
+}
+
+function reset() {
+ isProgress = false
+ notificationBuilder = null
+ histroyProgress = 0
+ if (timeId != -1) {
+ clearTimeout(timeId)
+ timeId = -1
+ }
+}
+
+
+
+function createPendingIntent(context : Context, action : string) : PendingIntent {
+ const i = new Intent(action);
+ i.setComponent(new ComponentName(context.getPackageName(), "uts.sdk.modules.utsProgressNotification.TransparentActivity"));
+ let flags = PendingIntent.FLAG_ONE_SHOT;
+ if (Build.VERSION.SDK_INT >= 23) {
+ flags = PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE;
+ }
+ return PendingIntent.getActivity(context, DOWNLOAD_PROGRESS_NOTIFICATION_ID, i, flags);
+}
+
+
+function createDownloadChannel(notificationManager : NotificationManager) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ const channel = new NotificationChannel(
+ DC_DOWNLOAD_CHANNEL_ID,
+ DC_DOWNLOAD_CHANNEL_NAME,
+ NotificationManager.IMPORTANCE_LOW
+ )
+ notificationManager.createNotificationChannel(channel)
+ }
+}
+@Suppress("DEPRECATION")
+function createNotificationBuilder(context : Context) : Notification.Builder {
+ if (notificationBuilder == null) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ notificationBuilder = new Notification.Builder(context, DC_DOWNLOAD_CHANNEL_ID)
+ } else {
+ notificationBuilder = new Notification.Builder(context)
+ }
+ notificationBuilder!.setSmallIcon(context.getApplicationInfo().icon)
+ notificationBuilder!.setOngoing(true)
+ notificationBuilder!.setSound(null)
+ }
+ return notificationBuilder!
+}
+
+@Suppress("DEPRECATION")
+function getAppName(context : Context) : string {
+ let appName = ""
+ try {
+ const packageManager = context.getPackageManager()
+ const applicationInfo = packageManager.getApplicationInfo(context.getPackageName(), 0)
+ appName = packageManager.getApplicationLabel(applicationInfo) as string
+ } catch (e : Exception) {
+ e.printStackTrace()
+ }
+ return appName
+}
diff --git a/src/uni_modules/uts-progressNotification/utssdk/app-android/res/values/notification_progress_styles.xml b/src/uni_modules/uts-progressNotification/utssdk/app-android/res/values/notification_progress_styles.xml
new file mode 100644
index 0000000..cc01105
--- /dev/null
+++ b/src/uni_modules/uts-progressNotification/utssdk/app-android/res/values/notification_progress_styles.xml
@@ -0,0 +1,11 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/uni_modules/uts-progressNotification/utssdk/interface.uts b/src/uni_modules/uts-progressNotification/utssdk/interface.uts
new file mode 100644
index 0000000..9570353
--- /dev/null
+++ b/src/uni_modules/uts-progressNotification/utssdk/interface.uts
@@ -0,0 +1,46 @@
+export type CreateNotificationProgressOptions = {
+ /**
+ * 通知标题
+ * @defaultValue 应用名称
+ */
+ title ?: string | null
+ /**
+ * 通知内容
+ */
+ content : string,
+ /**
+ * 进度
+ */
+ progress : number,
+ /**
+ * 点击通知消息回调
+ * @defaultValue null
+ */
+ onClick? : (() => void) | null
+}
+
+
+export type FinishNotificationProgressOptions = {
+ /**
+ * 通知标题
+ * @defaultValue 应用名称
+ */
+ title ?: string | null
+ /**
+ * 通知内容
+ */
+ content : string,
+ /**
+ * 点击通知消息回调
+ */
+ onClick : () => void
+}
+
+
+export type CreateNotificationProgress = (options : CreateNotificationProgressOptions) => void;
+
+
+export type CancelNotificationProgress = () => void;
+
+
+export type FinishNotificationProgress = (options: FinishNotificationProgressOptions) => void
diff --git a/src/uni_modules/uts-progressNotification/utssdk/unierror.uts b/src/uni_modules/uts-progressNotification/utssdk/unierror.uts
new file mode 100644
index 0000000..e69de29
diff --git a/src/utils/request.js b/src/utils/request.js
index ae11d54..adf3597 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -2,13 +2,16 @@ import Request from 'luch-request';
import { useGlobSetting } from '@/config';
import { useUserStoreWithOut } from '@/store/modules/user';
const { apiUrl } = useGlobSetting();
-
+const systemInfo = uni.getSystemInfoSync();
const http = new Request();
+
http.setConfig((config) => {
config.baseURL = apiUrl;
config.timeout = 10000;
config.header = Object.assign({
- Accept: 'application/json'
+ Accept: 'application/json',
+ // 'app-cli-os': android/ios,
+ // 'app-cli-version': 100
}, config.header);
/* 设置全局配置 */
config.validateStatus = (statusCode) => {
@@ -74,7 +77,12 @@ http.interceptors.response.use(async (response) => {
}
return response.data;
}, (error) => {
- return error;
+ console.log(error);
+ uni.showToast({
+ title: error.errMsg,
+ icon: 'none'
+ })
+ return Promise.reject(error);
});
export { http };
export const Method = {
diff --git a/yarn.lock b/yarn.lock
index c6f8690..bc0ba4d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1426,6 +1426,71 @@
"@dcloudio/uni-shared" "3.0.0-3090920231225001"
debug "^4.3.3"
+"@dcloudio/uni-uts-v1@3.0.0-3090920231225001":
+ version "3.0.0-3090920231225001"
+ resolved "https://registry.npmmirror.com/@dcloudio/uni-uts-v1/-/uni-uts-v1-3.0.0-3090920231225001.tgz#a6aca922ef84c19eb64105b632a0453c33007af7"
+ integrity sha512-6SpUeOAhCy2sr48/vUVZGDGpmktwKo7lWnVvdRzOfUbTCVnEdr+TR1kLJMEXGnalHDopVUluzCvLWqsHflV1yw==
+ dependencies:
+ "@dcloudio/uts" "3.0.0-3090920231225001"
+ "@rollup/pluginutils" "^5.0.5"
+ "@vue/shared" "3.2.47"
+ adm-zip "^0.5.9"
+ android-versions "^1.8.1"
+ colors "^1.4.0"
+ fast-glob "^3.2.11"
+ find-cache-dir "^3.3.2"
+ fs-extra "^10.0.0"
+ graphlib "^2.1.8"
+ jsonc-parser "^3.0.0"
+ lodash "^4.17.21"
+ md5-file "^5.0.0"
+ object-hash "^3.0.0"
+ semver "^7.5.4"
+ source-map "^0.7.4"
+ source-map-js "^1.0.2"
+
+"@dcloudio/uts-darwin-arm64@3.0.0-3090920231225001":
+ version "3.0.0-3090920231225001"
+ resolved "https://registry.npmmirror.com/@dcloudio/uts-darwin-arm64/-/uts-darwin-arm64-3.0.0-3090920231225001.tgz#13771d974c5e4d36ed9af32855d31573e77a37c2"
+ integrity sha512-QsCqVlIaOiXEdDv4XdeAdcgoxdk2QE+4n5vYSLVYft8KWuP6seweYki+My2TByBPxMGUBRQ9GRzM14qNM9CmXg==
+
+"@dcloudio/uts-darwin-x64@3.0.0-3090920231225001":
+ version "3.0.0-3090920231225001"
+ resolved "https://registry.npmmirror.com/@dcloudio/uts-darwin-x64/-/uts-darwin-x64-3.0.0-3090920231225001.tgz#5517fae6cb74236d4c05e682e061e03675d1b4d6"
+ integrity sha512-15l9geqR1IIzhEkTqLFicNsmM6ZFP++a9QL5d9vmPDXNIxePw95bv9iNHgJMEKlxm+Cif1qInpgtLlyimiRZKw==
+
+"@dcloudio/uts-linux-x64-gnu@3.0.0-3090920231225001":
+ version "3.0.0-3090920231225001"
+ resolved "https://registry.npmmirror.com/@dcloudio/uts-linux-x64-gnu/-/uts-linux-x64-gnu-3.0.0-3090920231225001.tgz#af6a1fc0a91711b4c0afede63095e007a9f6e4b8"
+ integrity sha512-R7Zjyyg1ezZVEfM88M/wm6mQIZjknF9SHUHdYhwjrRG07yuGxFHf8jTi3pIpRJ92pkIWcWPcODxYo+AyVjdCtw==
+
+"@dcloudio/uts-linux-x64-musl@3.0.0-3090920231225001":
+ version "3.0.0-3090920231225001"
+ resolved "https://registry.npmmirror.com/@dcloudio/uts-linux-x64-musl/-/uts-linux-x64-musl-3.0.0-3090920231225001.tgz#217e09d5d076959f551ebf2ed14d3c75201d1e38"
+ integrity sha512-zOEqEhPHZwbaJnZB4ATGVlQ9NjbSx4OCc4oIlfwL7/AyHLNob5g80xtsKE5zcvGccPF7+aiMPcbwXowk5zJYQw==
+
+"@dcloudio/uts-win32-ia32-msvc@3.0.0-3090920231225001":
+ version "3.0.0-3090920231225001"
+ resolved "https://registry.npmmirror.com/@dcloudio/uts-win32-ia32-msvc/-/uts-win32-ia32-msvc-3.0.0-3090920231225001.tgz#1822e015f83e5bfe7908299a802583c59cfeb784"
+ integrity sha512-HltDzVGQtLBbaYVeWDxNmC0wdeFcf22YBjCqFimbEtYPIGFY7FPQ/68l0m0LjvGtq7NdjjN6m28s0SUSB+PD3Q==
+
+"@dcloudio/uts-win32-x64-msvc@3.0.0-3090920231225001":
+ version "3.0.0-3090920231225001"
+ resolved "https://registry.npmmirror.com/@dcloudio/uts-win32-x64-msvc/-/uts-win32-x64-msvc-3.0.0-3090920231225001.tgz#0eaa808182e5427bf4f342112c91de4a7d447d19"
+ integrity sha512-DuP8g2Afjk/dgx58KXsAOJTtPoZrtEN2fC1jB3SQbkq0Hd0TIYx/iqqWmrBSk3Y2GwOMvdrWqIKFjkFhRNFS5w==
+
+"@dcloudio/uts@3.0.0-3090920231225001":
+ version "3.0.0-3090920231225001"
+ resolved "https://registry.npmmirror.com/@dcloudio/uts/-/uts-3.0.0-3090920231225001.tgz#4d4c13c6202d8d4c9d3eed5771a0d2a5b0cd9ef2"
+ integrity sha512-lwhXowKE08PK4bfhmAs/LzNnRao9w7RAZ8tujAWTiI2WOqp7lPpHBCVzH0wmx1iWWOsPZcevyYvszashov3DtQ==
+ optionalDependencies:
+ "@dcloudio/uts-darwin-arm64" "3.0.0-3090920231225001"
+ "@dcloudio/uts-darwin-x64" "3.0.0-3090920231225001"
+ "@dcloudio/uts-linux-x64-gnu" "3.0.0-3090920231225001"
+ "@dcloudio/uts-linux-x64-musl" "3.0.0-3090920231225001"
+ "@dcloudio/uts-win32-ia32-msvc" "3.0.0-3090920231225001"
+ "@dcloudio/uts-win32-x64-msvc" "3.0.0-3090920231225001"
+
"@dcloudio/vite-plugin-uni@3.0.0-3090920231225001":
version "3.0.0-3090920231225001"
resolved "https://registry.npmmirror.com/@dcloudio/vite-plugin-uni/-/vite-plugin-uni-3.0.0-3090920231225001.tgz"
@@ -2703,6 +2768,18 @@ address@^1.1.2:
resolved "https://registry.npmmirror.com/address/-/address-1.2.2.tgz"
integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==
+adm-zip@^0.5.9:
+ version "0.5.12"
+ resolved "https://registry.npmmirror.com/adm-zip/-/adm-zip-0.5.12.tgz#87786328e91d54b37358d8a50f954c4cd73ba60b"
+ integrity sha512-6TVU49mK6KZb4qG6xWaaM4C7sA/sgUMLy/JYMOzkcp3BvVLpW0fXDFQiIzAuxFCt/2+xD7fNIiPFAoLZPhVNLQ==
+
+android-versions@^1.8.1:
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/android-versions/-/android-versions-1.9.0.tgz#433d53fc6ed5ba2b8d3c2801cb5da3964013274d"
+ integrity sha512-13O2B6PQMEM4ej9n13ePRQeckrCoKbZrvuzlLvK+9s2QmncpHDbYzZxhgapN32sJNoifN6VAHexLnd/6CYrs7Q==
+ dependencies:
+ semver "^7.5.2"
+
ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz"
@@ -2926,11 +3003,21 @@ colorette@^2.0.20:
resolved "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz"
integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==
+colors@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
+ integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
+
commander@^2.20.0:
version "2.20.3"
resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+commondir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+ integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
+
compare-versions@^3.6.0:
version "3.6.0"
resolved "https://registry.npmmirror.com/compare-versions/-/compare-versions-3.6.0.tgz"
@@ -3344,6 +3431,23 @@ finalhandler@1.2.0:
statuses "2.0.1"
unpipe "~1.0.0"
+find-cache-dir@^3.3.2:
+ version "3.3.2"
+ resolved "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b"
+ integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==
+ dependencies:
+ commondir "^1.0.1"
+ make-dir "^3.0.2"
+ pkg-dir "^4.1.0"
+
+find-up@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+ dependencies:
+ locate-path "^5.0.0"
+ path-exists "^4.0.0"
+
find-up@^5.0.0:
version "5.0.0"
resolved "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz"
@@ -3446,6 +3550,13 @@ graceful-fs@^4.1.6, graceful-fs@^4.2.0:
resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
+graphlib@^2.1.8:
+ version "2.1.8"
+ resolved "https://registry.npmmirror.com/graphlib/-/graphlib-2.1.8.tgz#5761d414737870084c92ec7b5dbcb0592c9d35da"
+ integrity sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==
+ dependencies:
+ lodash "^4.17.15"
+
gzip-size@^6.0.0:
version "6.0.0"
resolved "https://registry.npmmirror.com/gzip-size/-/gzip-size-6.0.0.tgz"
@@ -3706,6 +3817,13 @@ localstorage-polyfill@^1.0.1:
resolved "https://registry.npmmirror.com/localstorage-polyfill/-/localstorage-polyfill-1.0.1.tgz"
integrity sha512-m4iHVZxFH5734oQcPKU08025gIz2+4bjWR9lulP8ZYxEJR0BpA0w32oJmkzh8y3UI9ci7xCBehQDc3oA1X+VHw==
+locate-path@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
+ dependencies:
+ p-locate "^4.1.0"
+
locate-path@^6.0.0:
version "6.0.0"
resolved "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz"
@@ -3723,6 +3841,11 @@ lodash.debounce@^4.0.8:
resolved "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz"
integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==
+lodash@^4.17.15, lodash@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
lru-cache@^5.1.1:
version "5.1.1"
resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz"
@@ -3730,6 +3853,13 @@ lru-cache@^5.1.1:
dependencies:
yallist "^3.0.2"
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
luch-request@^3.1.1:
version "3.1.1"
resolved "https://registry.npmmirror.com/luch-request/-/luch-request-3.1.1.tgz"
@@ -3751,6 +3881,18 @@ magic-string@^0.30.0, magic-string@^0.30.1, magic-string@^0.30.5, magic-string@^
dependencies:
"@jridgewell/sourcemap-codec" "^1.4.15"
+make-dir@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
+ integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
+ dependencies:
+ semver "^6.0.0"
+
+md5-file@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/md5-file/-/md5-file-5.0.0.tgz#e519f631feca9c39e7f9ea1780b63c4745012e20"
+ integrity sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw==
+
mdn-data@2.0.30:
version "2.0.30"
resolved "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.30.tgz"
@@ -3919,6 +4061,11 @@ npm-run-path@^4.0.1:
dependencies:
path-key "^3.0.0"
+object-hash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9"
+ integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==
+
object-inspect@^1.13.1:
version "1.13.1"
resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz"
@@ -3959,6 +4106,13 @@ os-locale-s-fix@^1.0.8-fix-1:
dependencies:
lcid "^3.0.0"
+p-limit@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+ dependencies:
+ p-try "^2.0.0"
+
p-limit@^3.0.2:
version "3.1.0"
resolved "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz"
@@ -3966,6 +4120,13 @@ p-limit@^3.0.2:
dependencies:
yocto-queue "^0.1.0"
+p-locate@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
+ dependencies:
+ p-limit "^2.2.0"
+
p-locate@^5.0.0:
version "5.0.0"
resolved "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz"
@@ -3973,6 +4134,11 @@ p-locate@^5.0.0:
dependencies:
p-limit "^3.0.2"
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
pako@^1.0.5:
version "1.0.11"
resolved "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz"
@@ -4089,6 +4255,13 @@ pixelmatch@^4.0.2:
dependencies:
pngjs "^3.0.0"
+pkg-dir@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
+ integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
+ dependencies:
+ find-up "^4.0.0"
+
pkg-types@^1.0.3:
version "1.0.3"
resolved "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.0.3.tgz"
@@ -4358,11 +4531,18 @@ scule@^1.1.1:
resolved "https://registry.npmmirror.com/scule/-/scule-1.3.0.tgz"
integrity sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==
-semver@^6.3.1:
+semver@^6.0.0, semver@^6.3.1:
version "6.3.1"
resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
+semver@^7.5.2, semver@^7.5.4:
+ version "7.6.0"
+ resolved "https://registry.npmmirror.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d"
+ integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
+ dependencies:
+ lru-cache "^6.0.0"
+
send@0.18.0:
version "0.18.0"
resolved "https://registry.npmmirror.com/send/-/send-0.18.0.tgz"
@@ -4463,6 +4643,11 @@ source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1:
resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+source-map@^0.7.4:
+ version "0.7.4"
+ resolved "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656"
+ integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
+
sourcemap-codec@^1.4.8:
version "1.4.8"
resolved "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz"
@@ -4844,6 +5029,11 @@ yallist@^3.0.2:
resolved "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz"
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
yaml@^1.10.2:
version "1.10.2"
resolved "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz"
| |