@@ -3,9 +3,9 @@ | |||
# VUE_APP_API_ROOT_USER=https://smapitest.malls.iformall.com/C | |||
# 开发 | |||
NODE_ENV=development | |||
VUE_APP_ENV=development | |||
VUE_APP_API_ROOT=https://mtest.metavatar.cc/C | |||
# NODE_ENV=development | |||
# VUE_APP_ENV=development | |||
# VUE_APP_API_ROOT=https://mtest.metavatar.cc/C | |||
# VUE_APP_API_ROOT=https://smapitest.malls.iformall.com/C 已废弃 | |||
@@ -15,3 +15,9 @@ VUE_APP_API_ROOT=https://mtest.metavatar.cc/C | |||
# VUE_APP_ENV=production | |||
# VUE_APP_API_ROOT=http://m.metavatar.cc/C | |||
# .env 无论开发环境还是生成环境都会加载 | |||
# .env.development 开发环境加载这个文件 | |||
# .env.production 生成环境加载这个文件 | |||
@@ -1,4 +1,5 @@ | |||
# NODE_ENV=development | |||
# VUE_APP_ENV=development | |||
# VUE_APP_API_ROOT=https://smapitest.malls.iformall.com/C | |||
NODE_ENV=development | |||
VUE_APP_ENV=development | |||
VUE_APP_API_ROOT=https://mtest.metavatar.cc/C | |||
@@ -1,4 +1,4 @@ | |||
# NODE_ENV=production | |||
# VUE_APP_ENV=production | |||
# VUE_APP_API_ROOT=http://m.metavatar.cc/C | |||
NODE_ENV=production | |||
VUE_APP_ENV=production | |||
VUE_APP_API_ROOT=http://m.metavatar.cc/C |
@@ -3,8 +3,8 @@ | |||
"version": "0.1.0", | |||
"private": true, | |||
"scripts": { | |||
"dev": "vue-cli-service serve", | |||
"build": "vue-cli-service build" | |||
"dev": "vue-cli-service serve --mode development", | |||
"build": "vue-cli-service build --mode production" | |||
}, | |||
"dependencies": { | |||
"axios": "0.18.1", | |||
@@ -36,4 +36,4 @@ | |||
"uglifyjs-webpack-plugin": "^2.2.0", | |||
"vue-template-compiler": "^2.6.11" | |||
} | |||
} | |||
} |
@@ -0,0 +1,348 @@ | |||
<template> | |||
<div class="uploder"> | |||
<div class="change-photo-setter" style="height: 240px; width: 160px"> | |||
<van-uploader ref="uploader" class="sett-item" :before-read="beforeRead" style="height: 240px; width: 160px"> | |||
<div style="height: 240px; width: 160px"> | |||
<!-- <img :src="ImgUrl" alt="" /> --> | |||
</div> | |||
</van-uploader> | |||
</div> | |||
<div class="uploadava"> | |||
<!-- van-popup有bug,某些1情况需要绑定app为根 --> | |||
<van-popup :get-container="this.isAndroid ? '' : '#app'" class="vanPopup" duration="0" v-model="showCropper" position="top" :style="{ height: '100%' }"> | |||
<div class="cropper-container" :style="{ height: '94vh' }"> | |||
<van-loading v-show="loadingShow" size="50" color="#fff" vertical text-color="#fff">上传中...</van-loading> | |||
<!-- 切图组件 --> | |||
<vueCropper | |||
style="background-image: none" | |||
ref="cropper" | |||
:img="option.img" | |||
:outputSize="option.outputSize" | |||
:outputType="option.outputType" | |||
:info="option.info" | |||
:full="option.full" | |||
:autoCropWidth="option.autoCropWidth" | |||
:autoCropHeight="option.autoCropHeight" | |||
:canMove="option.canMove" | |||
:canMoveBox="option.canMoveBox" | |||
:original="option.original" | |||
:autoCrop="option.autoCrop" | |||
:fixed="option.fixed" | |||
:fixedNumber="option.fixedNumber" | |||
:centerBox="option.centerBox" | |||
:infoTrue="option.infoTrue" | |||
:fixedBox="option.fixedBox" | |||
:high="option.high" | |||
:mode="option.mode" /> | |||
<!-- <div style="display: flex; justify-content: space-between; padding: 10px; height: 8vh"> | |||
<div @click="onClickLeft">取消</div> | |||
<div @click="onClickRight">确定</div> | |||
</div> --> | |||
<van-nav-bar left-text="取消" right-text="确定" @click-left="onClickLeft" @click-right="onClickRight" /> | |||
</div> | |||
</van-popup> | |||
</div> | |||
</div> | |||
</template> | |||
<script> | |||
import { awsImgUpload } from '@/api/editModel'; | |||
import { Toast } from 'vant'; | |||
import { VueCropper } from 'vue-cropper'; | |||
import { scrollToID, getDeviceType } from '../utils'; | |||
import { saveImgApi } from '../api/editModel'; | |||
import { watch } from 'vue'; | |||
export default { | |||
name: 'uploadAva', | |||
components: { | |||
VueCropper | |||
}, | |||
props: { | |||
showAta: { | |||
default: false, | |||
type: Boolean | |||
}, | |||
avaUrl: { | |||
default: '', | |||
type: String | |||
}, | |||
type: { | |||
default: '', | |||
type: Number | |||
}, | |||
videoType: { | |||
default: null, | |||
type: Number | |||
} | |||
}, | |||
data() { | |||
return { | |||
isAndroid: false, //判断是不是ios | |||
aaa: null, | |||
ImgUrl: '', | |||
show: true, // 上传类型的弹窗 | |||
imageFileName: '', | |||
showCropper: false, // 裁剪的弹窗 | |||
option: { | |||
img: '', | |||
outputSize: 0.8, | |||
info: false, // 裁剪框的大小信息 | |||
// outputType: 'jpeg', // 裁剪生成图片的格式 | |||
outputType: 'png', // 裁剪生成图片的格式 | |||
canScale: true, // 图片是否允许滚轮缩放 | |||
autoCrop: true, // 是否默认生成截图框 | |||
autoCropWidth: window.innerWidth - 100 + 'px', // 默认生成截图框宽度 | |||
autoCropHeight: window.innerWidth - 100 + 'px', // 默认生成截图框高度 | |||
high: true, // 是否按照设备的dpr 输出等比例图片 | |||
fixedBox: false, // 固定截图框大小 不允许改变 | |||
fixed: false, // 是否开启截图框宽高固定比例 | |||
// fixedNumber: [1, 1], // 截图框的宽高比例 | |||
full: true, // 是否输出原图比例的截图 | |||
canMoveBox: true, // 截图框能否拖动 | |||
original: false, // 上传图片按照原始比例渲染 | |||
centerBox: true, // 截图框是否被限制在图片里面 | |||
infoTrue: false, // true 为展示真实输出图片宽高 false 展示看到的截图框宽高 | |||
mode: '100% auto' // 图片默认渲染方式 | |||
}, | |||
loadingShow: false // 是否展示loading | |||
}; | |||
}, | |||
created() { | |||
const deviceType = getDeviceType(); | |||
this.isAndroid = false; | |||
if (!deviceType) { | |||
// 设备类型为pc | |||
this.isAndroid = false; | |||
} else { | |||
if (deviceType[0] == 'Android') { | |||
// 设备类型为安卓 | |||
this.isAndroid = true; | |||
} else { | |||
// 其他设备 | |||
this.isAndroid = false; | |||
} | |||
} | |||
if (this.type == 4 && this.videoType == 1) { | |||
this.option.autoCropWidth = 1080 + 'px'; // 默认生成截图框宽度 | |||
this.option.autoCropHeight = 1920 + 'px'; // 默认生成截图框高度 | |||
this.option.fixed = true; | |||
this.option.fixedNumber = [1080, 1920]; | |||
} | |||
if (this.type == 4 && this.videoType == 2) { | |||
this.option.autoCropWidth = 1920 + 'px'; // 默认生成截图框宽度 | |||
this.option.autoCropHeight = 1080 + 'px'; // 默认生成截图框高度 | |||
this.option.fixed = true; | |||
this.option.fixedNumber = [1920, 1080]; | |||
} | |||
}, | |||
methods: { | |||
beforeRead(file) { | |||
// console.log(file) | |||
if (file.type !== 'image/jpeg' && file.type !== 'image/png') { | |||
this.$toast('请上传 jpg/png 格式图片'); | |||
return false; | |||
} | |||
let data = window.URL.createObjectURL(new Blob([file])); | |||
this.option.img = data; //给裁剪图片的路径 | |||
this.showCropper = true; | |||
return false; | |||
}, | |||
// 点击裁剪的选择 | |||
onClickRight() { | |||
let that = this; | |||
this.loadingShow = true; | |||
console.log(this.$refs.cropper); | |||
this.$refs.cropper.getCropBlob(async data => { | |||
console.log(data, '图片数据'); | |||
let formData = new FormData(); | |||
formData.append('file', data); | |||
let file = formData.get('file'); | |||
// 转为 base64 | |||
// let reader = new FileReader(); | |||
// const base64Data = await new Promise((resolve, reject) => { | |||
// reader.onload = () => { | |||
// resolve(reader.result); | |||
// }; | |||
// reader.readAsDataURL(file); | |||
// }); | |||
// let imgBinary = await that.base64ToBinary(base64Data.substring(23)); | |||
// // base64结果 | |||
// that.ImgUrl = base64Data; | |||
that.loading = false; | |||
// console.log(that.ImgUrl, 'dasdasd') | |||
// 发请求 | |||
const AccessToken = localStorage.getItem('AccessToken'); | |||
that | |||
.$axios({ | |||
method: 'post', | |||
// url: `https://smapitest.malls.iformall.com/C/api/upload/awsImgUpload`, | |||
// url: `http://m.metavatar.cc/C/api/upload/awsImgUpload`, | |||
url: process.env.VUE_APP_API_ROOT + `/api/upload/awsImgUpload`, | |||
headers: { | |||
'content-type': 'multipart/form-data', | |||
token: AccessToken, | |||
'Access-Control-Allow-Credentials': true | |||
}, | |||
data: formData | |||
}) | |||
.then(async res => { | |||
// console.log(res.data.data.url) | |||
const res1 = await saveImgApi({ | |||
type: that.type, | |||
videoType: that.videoType, | |||
material: res.data.data.url | |||
}); | |||
// 重新获取列表 | |||
await that.$parent.$parent.getMyBGIListApi(); | |||
await that.$parent.$parent.getMyScListApi(); | |||
if (this.type == 4) { | |||
that.$parent.$parent.changeShowBGIList(1); | |||
} | |||
if (this.type == 5) { | |||
that.$parent.$parent.changeShowBGIList(3); | |||
} | |||
that.loadingShow = false; | |||
that.showCropper = false; | |||
Toast.success('上传成功'); | |||
}); | |||
}); | |||
}, | |||
// 点击取消 | |||
onClickLeft() { | |||
this.loadingShow = false; | |||
this.showCropper = false; | |||
this.$parent.showPhotoUploader = false; | |||
}, | |||
// 上传图片 | |||
async pushImg(data) { | |||
try { | |||
const res = await awsImgUpload(data); | |||
this.loadingShow = false; | |||
this.showCropper = false; | |||
Toast.success('上传成功'); | |||
} catch (error) { | |||
console.log(error, 'error'); | |||
Toast.fail(error.message); | |||
} | |||
}, | |||
//图片转base64,异步 | |||
toBase64(file) { | |||
let that = this; | |||
return new Promise((resolve, reject) => { | |||
const reader = new FileReader(); | |||
reader.onload = () => { | |||
// base64结果 | |||
that.ImgUrl = this.result; | |||
that.loading = false; | |||
}; | |||
reader.onerror = reject; | |||
reader.readAsDataURL(file); | |||
}); | |||
}, | |||
// base64 转二进制 | |||
base64ToBinary(base64) { | |||
const binaryStr = window.atob(base64); | |||
const len = binaryStr.length; | |||
const bytes = new Uint8Array(len); | |||
for (let i = 0; i < len; ++i) { | |||
bytes[i] = binaryStr.charCodeAt(i); | |||
} | |||
return bytes; | |||
} | |||
}, | |||
mounted() {} | |||
}; | |||
</script> | |||
<style lang="scss" scoped> | |||
// /deep/.cropper-container { | |||
// z-index: 2005 !important; | |||
// } | |||
// .uploder{ | |||
// overflow: hidden; | |||
// } | |||
/deep/.cropper-view-box { | |||
outline: 2px dashed #fff !important; | |||
} | |||
/deep/.crop-point { | |||
background-color: auto !important; | |||
} | |||
/deep/.van-loading { | |||
position: absolute; | |||
// color: red; | |||
z-index: 9999; | |||
left: 50%; | |||
top: 50%; | |||
margin-left: -55px; | |||
margin-top: -30px; | |||
background: rgba(0, 0, 0, 0.3); | |||
padding: 10px 30px; | |||
border-radius: 25px; | |||
} | |||
.uploadava { | |||
// width: 100%; | |||
// width: 100vw; | |||
height: 94vh; | |||
.update-avatar { | |||
height: 100%; | |||
text-align: center; | |||
.update-avatar-line { | |||
width: 100%; | |||
height: 1px; | |||
background-color: #979797; | |||
} | |||
.avatar-select-type { | |||
background-color: #fff; | |||
width: 346px; | |||
border-radius: 12px; | |||
padding-bottom: 4px; | |||
.upload-avator { | |||
padding: 14px; | |||
} | |||
} | |||
p { | |||
margin: 15px 0 30px; | |||
background-color: #fff; | |||
width: 346px; | |||
border-radius: 12px; | |||
padding: 15px 0 18px; | |||
} | |||
} | |||
.cropper-container { | |||
position: relative; | |||
width: 100%; | |||
height: 94vh; | |||
// height: 100%; | |||
/deep/ .van-nav-bar { | |||
position: absolute; | |||
z-index: 999; | |||
width: 100%; | |||
bottom: 0px; | |||
left: 0px; | |||
height: 6vh; | |||
background-color: rgba(0, 0, 0, 0.87); | |||
:global(.van-nav-bar__text) { | |||
color: #000; | |||
// font-size: $font-size-normal-x; | |||
} | |||
:global(.van-nav-bar__text:nth-child(2)) { | |||
color: #000; | |||
font-weight: 500; | |||
} | |||
// :global(.van-icon) { | |||
// color: red; | |||
// } | |||
} | |||
} | |||
.vue-cropper { | |||
background: #000; | |||
width: 100%; | |||
height: 88vh; | |||
padding-top: 46px; | |||
box-sizing: border-box; | |||
} | |||
} | |||
</style> |
@@ -10,11 +10,12 @@ | |||
<div class="uploadava"> | |||
<!-- van-popup有bug,某些1情况需要绑定app为根 --> | |||
<van-popup :get-container="this.isAndroid ? '' : '#app'" class="vanPopup" duration="0" v-model="showCropper" position="top" :style="{ height: '100%' }"> | |||
<div class="cropper-container" :style="{ height: '94vh' }"> | |||
<div class="cropper-container" :style="{ height: '92vh', position: 'relative' }"> | |||
<van-loading v-show="loadingShow" size="50" color="#fff" vertical text-color="#fff">上传中...</van-loading> | |||
<!-- 切图组件 --> | |||
<!-- :outputSize="option.outputSize" --> | |||
<vueCropper | |||
style="background-image: none" | |||
:style="{ backgroundImage: 'none', height: '92vh' }" | |||
ref="cropper" | |||
:img="option.img" | |||
:outputSize="option.outputSize" | |||
@@ -38,7 +39,7 @@ | |||
<div @click="onClickLeft">取消</div> | |||
<div @click="onClickRight">确定</div> | |||
</div> --> | |||
<van-nav-bar left-text="取消" right-text="确定" @click-left="onClickLeft" @click-right="onClickRight" /> | |||
<van-nav-bar :style="{ height: '8vh', width: '100%', position: 'absolute' }" left-text="取消" right-text="确定" @click-left="onClickLeft" @click-right="onClickRight" /> | |||
</div> | |||
</van-popup> | |||
</div> | |||
@@ -85,7 +86,7 @@ export default { | |||
showCropper: false, // 裁剪的弹窗 | |||
option: { | |||
img: '', | |||
outputSize: 0.8, | |||
outputSize: 0.01, //图片质量 | |||
info: false, // 裁剪框的大小信息 | |||
// outputType: 'jpeg', // 裁剪生成图片的格式 | |||
outputType: 'png', // 裁剪生成图片的格式 | |||
@@ -149,13 +150,18 @@ export default { | |||
}, | |||
// 点击裁剪的选择 | |||
onClickRight() { | |||
const timestamp = Date.now(); | |||
let that = this; | |||
this.loadingShow = true; | |||
console.log(this.$refs.cropper); | |||
// console.log(this.$refs.cropper); | |||
this.$refs.cropper.getCropData(data => { | |||
// do something | |||
// console.log(data, 'base64'); | |||
}); | |||
this.$refs.cropper.getCropBlob(async data => { | |||
console.log(data, '图片数据'); | |||
console.log(data, '上传图片数据'); | |||
let formData = new FormData(); | |||
formData.append('file', data); | |||
formData.append('file', data, timestamp + '.png'); | |||
let file = formData.get('file'); | |||
// 转为 base64 | |||
// let reader = new FileReader(); | |||
@@ -262,6 +268,14 @@ export default { | |||
// .uploder{ | |||
// overflow: hidden; | |||
// } | |||
/deep/.van-nav-bar__content { | |||
height: 8vh; | |||
background-color: #ccc; | |||
} | |||
/deep/.van-hairline--bottom::after { | |||
// height: 8vh; | |||
} | |||
/deep/.cropper-view-box { | |||
outline: 2px dashed #fff !important; | |||
} | |||
@@ -1,6 +1,7 @@ | |||
<template> | |||
<div v-if="proportion" :class="inPage ? 'page active' : 'page'" id="pageBody" @touchstart="globalClick"> | |||
<div class="content" :style="bgStyle" ref="fatherBox"> | |||
<div ref="fatherBox1" v-if="proportion" :class="inPage ? 'page active' : 'page'" id="pageBody" @touchstart="globalClick"> | |||
<div class="content" id="content" :style="bgStyle" ref="fatherBox"> | |||
<!-- <img style="width: 100px; height: 100px" :src="newImg" alt="" /> --> | |||
<!-- 控制框 --> | |||
<!-- <div class="control"> | |||
<div @click="controlImg(1)">放大</div> | |||
@@ -96,6 +97,7 @@ export default { | |||
}, | |||
data() { | |||
return { | |||
newImg: false, | |||
inPage: false, | |||
dragging: false, | |||
proportionSon: null, | |||
@@ -133,6 +135,7 @@ export default { | |||
methods: { | |||
...mapActions(['setCharacters']), | |||
// 组件 | |||
globalClick(e) { | |||
console.log(e.target.id); | |||
@@ -224,6 +227,7 @@ export default { | |||
// 数字人的处理 | |||
// 鼠标按下事件 | |||
virtualTouchStart() { | |||
this.generateImage(); | |||
this.domIndex = -2; | |||
this.isFcous = true; | |||
this.dragging = true; | |||
@@ -28,3 +28,4 @@ new Vue({ | |||
render: function (h) { return h(App) } | |||
}).$mount('#app') | |||
@@ -53,6 +53,10 @@ p { | |||
transform: translate(-50%, -50%); | |||
} | |||
.van-toast { | |||
// font-size: 12px !important; | |||
width: 70% !important; | |||
} | |||
// 字体导入 | |||
@font-face { | |||
font-family: "ALi Regular"; | |||
@@ -76,3 +80,12 @@ p { | |||
font-family: "ALi Regular","Heiti", "Simsun", "Helvetica Neue", Helvetica, Arial, sans-serif; | |||
} | |||
// @media screen and (max-width: 280px) { | |||
// /* 根据实际情况修改字体大小和元素宽度 */ | |||
// html { | |||
// -webkit-text-size-adjust: none !important; | |||
// font-size: 8px; | |||
// } | |||
// } | |||
@@ -416,6 +416,7 @@ export default { | |||
try { | |||
const res = await doRegisterByPhone(data); | |||
console.log(res); | |||
Toast.success('注册成功!'); | |||
this.loginType = 1; | |||
} catch (error) { | |||
console.log(error, 'error'); | |||
@@ -442,7 +442,8 @@ export default { | |||
clickBottomTab(index) { | |||
if (index == 1) { | |||
if (this.textareaContent == 0) { | |||
Toast.fail('输入文案后才可以选择声音哦~~'); | |||
// Toast.fail('输入文案后才可以选择声音哦~~'); | |||
Toast('输入文案后才可以选择声音哦~~'); | |||
return; | |||
} | |||
this.showSoundList2 = false; | |||
@@ -577,12 +578,14 @@ export default { | |||
forbidClick: true | |||
}); | |||
if (!this.textareaContent) { | |||
Toast.fail('请输入文案内容!'); | |||
// Toast.fail('请输入文案内容!'); | |||
Toast('请输入文案内容!'); | |||
return; | |||
} | |||
// 当没有选择声音参数时 | |||
if (!this.soundChoose.id) { | |||
Toast.fail('请选择声音!'); | |||
// Toast.fail('请选择声音!'); | |||
Toast('请选择声音!'); | |||
return; | |||
} | |||
// 当没有选择声音参数时 | |||
@@ -26,7 +26,7 @@ | |||
<!-- 具体内容 --> | |||
<div v-show="!showLoading"> | |||
<!-- 列表样式--大图 --> | |||
<div v-if="videoList.length == 0">暂无数据</div> | |||
<div v-if="videoList.length == 0" style="height: 550px">暂无数据</div> | |||
<!-- 新 修改v-if--> | |||
<div v-if="waterfallBug"> | |||
<waterfall v-if="videoList.length != 0" v-show="listActive == 1" class="waterFall" :col="2" :data="videoList"> | |||
@@ -104,7 +104,8 @@ | |||
<!-- 创建新作品 --> | |||
<!-- <div class="goAdd" @click="checkInviteCode">+ 创作新作品</div> --> | |||
<div class="goNewAdd" @click="checkInviteCode"> | |||
<i class="el-icon-plus"></i> | |||
<img src="../../assets/icon/icon-plus.png" alt="" /> | |||
<!-- <i class="el-icon-plus"></i> --> | |||
</div> | |||
<div class="messageCover" :class="isShowMessageCover ? 'active' : ''" @click="exitCover"> | |||
@@ -210,7 +211,7 @@ export default { | |||
if (seconds) { | |||
return formatSeconds(seconds); | |||
} else { | |||
return '无'; | |||
return '暂未获取'; | |||
} | |||
}, | |||
@@ -219,7 +220,7 @@ export default { | |||
if (bytes) { | |||
return bytesToSize(bytes); | |||
} else { | |||
return '无'; | |||
return '暂未获取'; | |||
} | |||
}, | |||
@@ -361,6 +362,10 @@ export default { | |||
mounted() { | |||
this.inPage = true; | |||
scrollToID('top'); | |||
console.log(process.env.NODE_ENV); | |||
console.log(process.env.VUE_APP_ENV); | |||
console.log(process.env.VUE_APP_API_ROOT); | |||
}, | |||
async created() { | |||
@@ -383,6 +388,7 @@ export default { | |||
} | |||
.page { | |||
// transform: translateX(30%); | |||
min-height: 100vh; | |||
opacity: 0; | |||
transition: all 0.5s; // global-transition | |||
padding-bottom: 25px; | |||
@@ -590,12 +596,19 @@ export default { | |||
width: 60px; | |||
height: 60px; | |||
border-radius: 50%; | |||
font-size: 40px; | |||
line-height: 60px; | |||
text-align: center; | |||
// font-size: 40px; | |||
// line-height: 60px; | |||
// text-align: center; | |||
color: #ffffff; | |||
background: linear-gradient(316deg, #6ee4d7 0%, #37c4f1 32%, #a49afc 100%); | |||
box-shadow: 0px 2px 6px 0px rgba(114, 100, 245, 0.25); | |||
display: flex; | |||
justify-content: space-around; | |||
align-items: center; | |||
img { | |||
width: 60%; | |||
height: 60%; | |||
} | |||
} | |||
.messageCover { | |||
position: fixed; | |||
@@ -1,6 +1,7 @@ | |||
// const UglifyJsPlugin = require('uglifyjs-webpack-plugin') | |||
const path = require('path'); | |||
let externals = {} | |||
let cdn = { css: [], js: [] } | |||
const isProduction = process.env.VUE_APP_ENV == 'production' // 判断是否是生产环境 | |||
@@ -27,15 +28,15 @@ if (isProduction) { | |||
} | |||
} | |||
module.exports = { | |||
configureWebpack: { | |||
configureWebpack: { | |||
resolve: { | |||
alias: { | |||
'@': path.resolve(__dirname, 'src') | |||
} | |||
}, | |||
externals | |||
externals, | |||
}, | |||
css: { | |||
loaderOptions: { | |||
@@ -316,13 +316,13 @@ | |||
resolved "https://registry.npmmirror.com/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz#eade9fd1f537993bc1f0949f3aea276ecc4fab31" | |||
integrity sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ== | |||
"@tufjs/models@1.0.2": | |||
version "1.0.2" | |||
resolved "https://registry.npmmirror.com/@tufjs/models/-/models-1.0.2.tgz#6c1e99210ada62c057b1742b5528d85acbfe0a47" | |||
integrity sha512-uxarDtxTIK3f8hJS4yFhW/lvTa3tsiQU5iDCRut+NCnOXvNtEul0Ct58NIIcIx9Rkt7OFEK31Ndpqsd663nsew== | |||
"@tufjs/models@1.0.3": | |||
version "1.0.3" | |||
resolved "https://registry.npmmirror.com/@tufjs/models/-/models-1.0.3.tgz#e6cb8a86834da7459a7c836cd892dee56b4bab44" | |||
integrity sha512-mkFEqqRisi13DmR5pX4x+Zk97EiU8djTtpNW1GeuX410y/raAsq/T3ZCjwoRIZ8/cIBfW0olK/sywlAiWevDVw== | |||
dependencies: | |||
"@tufjs/canonical-json" "1.0.0" | |||
minimatch "^8.0.3" | |||
minimatch "^7.4.6" | |||
"@types/body-parser@*": | |||
version "1.19.2" | |||
@@ -3239,7 +3239,7 @@ file-loader@^4.2.0: | |||
file-saver@^2.0.5: | |||
version "2.0.5" | |||
resolved "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz#d61cfe2ce059f414d899e9dd6d4107ee25670c38" | |||
resolved "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz" | |||
integrity sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA== | |||
file-uri-to-path@1.0.0: | |||
@@ -5179,9 +5179,9 @@ lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: | |||
integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== | |||
lru-cache@^9.0.0: | |||
version "9.0.3" | |||
resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-9.0.3.tgz#8a04f282df5320227bb7215c55df2660d3e4e25b" | |||
integrity sha512-cyjNRew29d4kbgnz1sjDqxg7qg8NW4s+HQzCGjeon7DV5T2yDije16W9HaUFV1dhVEMh+SjrOcK0TomBmf3Egg== | |||
version "9.1.1" | |||
resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-9.1.1.tgz#c58a93de58630b688de39ad04ef02ef26f1902f1" | |||
integrity sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A== | |||
make-dir@^2.0.0: | |||
version "2.1.0" | |||
@@ -5468,14 +5468,14 @@ minimatch@^6.1.6, minimatch@^6.2.0: | |||
dependencies: | |||
brace-expansion "^2.0.1" | |||
minimatch@^7.4.2: | |||
minimatch@^7.4.2, minimatch@^7.4.6: | |||
version "7.4.6" | |||
resolved "https://registry.npmmirror.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb" | |||
integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw== | |||
dependencies: | |||
brace-expansion "^2.0.1" | |||
minimatch@^8.0.2, minimatch@^8.0.3: | |||
minimatch@^8.0.2: | |||
version "8.0.4" | |||
resolved "https://registry.npmmirror.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" | |||
integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== | |||
@@ -5694,10 +5694,10 @@ nan@^2.12.1, nan@^2.13.2: | |||
resolved "https://registry.npmmirror.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" | |||
integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== | |||
nanoid@^3.3.4: | |||
version "3.3.4" | |||
resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz" | |||
integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== | |||
nanoid@^3.3.6: | |||
version "3.3.6" | |||
resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz" | |||
integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== | |||
nanomatch@^1.2.9: | |||
version "1.2.13" | |||
@@ -6970,11 +6970,11 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.27, postcss@^7.0.3 | |||
source-map "^0.6.1" | |||
postcss@^8.4.14: | |||
version "8.4.21" | |||
resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.21.tgz" | |||
integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== | |||
version "8.4.23" | |||
resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.23.tgz" | |||
integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA== | |||
dependencies: | |||
nanoid "^3.3.4" | |||
nanoid "^3.3.6" | |||
picocolors "^1.0.0" | |||
source-map-js "^1.0.2" | |||
@@ -7775,13 +7775,13 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.7: | |||
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== | |||
sigstore@^1.0.0: | |||
version "1.2.0" | |||
resolved "https://registry.npmmirror.com/sigstore/-/sigstore-1.2.0.tgz#ae5b31dac75c2d31e7873897e2862f0d0b205bce" | |||
integrity sha512-Fr9+W1nkBSIZCkJQR7jDn/zI0UXNsVpp+7mDQkCnZOIxG9p6yNXBx9xntHsfUyYHE55XDkkVV3+rYbrkzAeesA== | |||
version "1.3.2" | |||
resolved "https://registry.npmmirror.com/sigstore/-/sigstore-1.3.2.tgz#2f70ec3e1192911484d9d148ecd9c98345cd172d" | |||
integrity sha512-0KT1DjpVB11FK15ep7BIsZQV6j1jBm4SnXIInbBCRvql6II39IKONOMO+j036sGsArU/+2xqa1NDJwJkic0neA== | |||
dependencies: | |||
"@sigstore/protobuf-specs" "^0.1.0" | |||
make-fetch-happen "^11.0.1" | |||
tuf-js "^1.0.0" | |||
tuf-js "^1.1.3" | |||
simple-swizzle@^0.2.2: | |||
version "0.2.2" | |||
@@ -8520,12 +8520,12 @@ tty-browserify@0.0.0: | |||
resolved "https://registry.npmmirror.com/tty-browserify/-/tty-browserify-0.0.0.tgz" | |||
integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== | |||
tuf-js@^1.0.0: | |||
version "1.1.3" | |||
resolved "https://registry.npmmirror.com/tuf-js/-/tuf-js-1.1.3.tgz#db3aada70fbf91fd9def9ad255645eaf81309f69" | |||
integrity sha512-jGYi5nG/kqgfTFQSdoN6PW9eIn+XRZqdXku+fSwNk6UpWIsWaV7pzAqPgFr85edOPhoyJDyBqCS+DCnHroMvrw== | |||
tuf-js@^1.1.3: | |||
version "1.1.4" | |||
resolved "https://registry.npmmirror.com/tuf-js/-/tuf-js-1.1.4.tgz#e85a936b16859c7fae23e5f040bc0f7b559b3192" | |||
integrity sha512-Lw2JRM3HTYhEtQJM2Th3aNCPbnXirtWMl065BawwmM2pX6XStH/ZO9e8T2hh0zk/HUa+1i6j+Lv6eDitKTau6A== | |||
dependencies: | |||
"@tufjs/models" "1.0.2" | |||
"@tufjs/models" "1.0.3" | |||
make-fetch-happen "^11.0.1" | |||
tunnel-agent@^0.6.0: | |||