Commit 77379025 authored by Chen Jiping's avatar Chen Jiping

完成部分功能

parent 885cdb10
.video {
width:100%;
display: none;
}
.upload-btn {
margin: 3px;
border-radius: 2px;
position: relative;
border: 1px solid #dcdfe6;
text-align: center;
height: 30px;
line-height: 30px;
}
.edit-data{
padding: 10px;
.hide-fileinput {
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
opacity: 0;
cursor: pointer;
}
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>h5-template-generator</title>
<script type="text/javascript" src="../lib/js/jquery-1.12.3.min.js"></script>
<link href="./index.css" rel="stylesheet" >
<script type="text/javascript" src="//staging-teach.cdn.ireadabc.com/h5template/h5-static-lib/js/air.js"></script>
<script type="text/javascript" src="../lib/js/jquery-1.12.3.min.js"></script>
<link href="./index.css" rel="stylesheet">
<link href="../lib/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<script type="text/javascript" src="../lib/bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript"
src="//staging-teach.cdn.ireadabc.com/h5template/h5-static-lib/js/air_online_open.js"></script>
<script type="text/javascript" src="//teach.cdn.ireadabc.com/h5template/h5-static-lib/js/wangEditor.min.js"></script>
</head>
<body>
<div class="edit-data">
<!-- 简单的例子,一个输入框+一个按钮,保存输入框的信息 -->
test: <input type="text" name="test" />
<input id="save" type="button" value="保存" >
</div>
<body>
<div class="container-fluid" id="content">
<div class="panel panel-info">
<div class="panel-heading">
<h3>内容编辑</h3>
</div>
<div class="panel-body">
<form class="form-horizontal" enctype="multipart/form-data">
<div class="form-group">
<label for="video" class="col-sm-2 control-label">视频</label>
<div class="col-sm-2">
<div class="upload-btn"><span>上传视频</span><input class="hide-fileinput" type="file" name="video"
accept="video/*"></div>
<video class="video" id="showVideo" src="" controls="controls"></video>
</div>
</div>
</form>
</div>
</div>
</div>
</body>
<script src="./index.js"></script>
</html>
\ No newline at end of file
......@@ -10,26 +10,107 @@ var uploadData = window.courseware.uploadData(); //上传文件必须要的参
*/
//对应模板的名称,这个可以不写,但是最好是能写上,同时开发多个模板的情况下如果不写这个,本地缓存可能会存在混乱
var key = "h5_test";
$(function(){
window.courseware.getData(function(data){
//数据加载完,才算页面加载完成
//获取数据
if(data&&data.test){
$("[name='test']").val(data.test);
}
//绑定点击事件
$('#save').on('click',function(){
var test = $("[name='test']").val();
//保存新增或修改的数据
window.courseware.setData({test: test},function(){
//保存数据也是异步的
alert("保存成功!");
},key);
})
},key);
})
\ No newline at end of file
var key = "JM-07";
class FormView {
data;
init() {
this.initDefaultData();
this.initView();
}
initDefaultData() {
if (!this.data) {
this.data = {};
}
}
initView() {
var _dom = $("#content");
if (this.data.video) {
_dom.find(".video").attr("src", this.data.video).show();
}
const _this = this;
_dom.find("[name='video']").change(function () {
const files = $(this).prop('files');
$(this).attr("disabled", true);
$(this).prev().text("上传中...");
commonUploadFile(files[0], (data) => {
$(this).attr("disabled", false);
$(this).prev().text("上传视频");
if (data) {
const d = JSON.parse(data);
$("#showVideo").attr("src", d.url).show();
_this.data.video = d.url;
_this.save();
}
});
});
}
saveTmsp = null;
save() {
if (this.saveTmsp) {
return;
}
this.saveTmsp = setTimeout(() => {
const saveData = this.data;
console.log(saveData);
window.courseware.setData(saveData, null, key); //用于存储数据
this.saveTmsp = null;
}, 1000);
}
}
$(function () {
var formView = new FormView();
window.courseware.getData(function (data) {
console.log(data);
formView.data = data;
formView.init();
}, key);
});
function commonUploadFile(file, callback) {
const uploadUrl = window.courseware.uploadUrl(); //上传文件的路径
const uploadData = window.courseware.uploadData(); //上传文件必须要的参数
const formData = new FormData();
formData.append("file", file);
for (const key in uploadData) {
formData.append(key, uploadData[key]);
}
$.ajax({
url: uploadUrl,
type: "post",
data: formData,
dataType: 'text',
contentType: false,
processData: false,
success: function (data) {
callback && callback(data);
},
error: function (data) {
console.error("文件上传失败", data);
callback && callback(null);
}
});
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
require('../../js/transition.js')
require('../../js/alert.js')
require('../../js/button.js')
require('../../js/carousel.js')
require('../../js/collapse.js')
require('../../js/dropdown.js')
require('../../js/modal.js')
require('../../js/tooltip.js')
require('../../js/popover.js')
require('../../js/scrollspy.js')
require('../../js/tab.js')
require('../../js/affix.js')
\ No newline at end of file
......@@ -3,6 +3,253 @@ body {
background: #fff;
}
#test{
margin: 80px;
.content {
position: absolute;
left: 0px;
top: 0px;
right: 0px;
bottom: 0px;
background: #f1e4c2;
min-width: 960px;
}
#tea {
position: absolute;
left: 0px;
top: 0px;
right: 0px;
bottom: 0px;
background: url(../lib/images/bg.jpg) repeat-y;
background-size: 100%;
display: none;
}
#stu {
position: absolute;
left: 0px;
top: 0px;
right: 0px;
bottom: 0px;
background: url(../lib/images/bg.jpg) repeat-y;
background-size: 100%;
display: none;
}
.title{
object-fit: contain;
font-family: PingFangSC;
font-size: 48px;
font-weight: 600;
font-stretch: normal;
font-style: normal;
line-height: normal;
letter-spacing: normal;
color: #3e9b31;
position: relative;
}
.dialog-content {
position: relative;
width: 60%;
height: 60%;
top: 5%;
left: 20%;
z-index: 10;
}
.video-container {
position: relative;
width: 96%;
height: 100%;
left: 2%;
overflow: hidden;
background: #f1e4c2;
}
.play-speed-content {
position: absolute;
width: 10%;
height: 60%;
top: 20%;
right: -20%;
background: url(../lib/images/speed-bg.png) no-repeat;
background-size: 100%;
}
.speed {
object-fit: contain;
font-family: Arial;
font-size: 15px;
font-weight: normal;
font-stretch: normal;
font-style: normal;
line-height: normal;
letter-spacing: normal;
text-align: center;
margin-top: 15px;
color: #b17d5a;
}
.speed-choice:hover{
color: #2f9228;
cursor: pointer;
}
.progress-div{
position: relative;
width: 80%;
height: 30%;
top: 10%;
left: 10%;
justify-content:center;
}
.progress-label{
font-size: 10px;
font-weight: normal;
font-stretch: normal;
font-style: normal;
line-height: normal;
letter-spacing: normal;
text-align: right;
color: #b17d5a;
white-space: nowrap;
justify-content:center;
}
.progress-label-left{
float: left;
}
.progress-label-right{
float: left;
}
.my-progress{
float: left;
height: 10px;
width: 90%;
overflow: hidden;
background-color: #ebe0c0;
border-radius: 4px;
}
.my-progress-bar{
background-color: #3e9b31;
}
#video {
width: 100%;
height: 100%;
}
.video-play-bg{
width: 140px;
height: 140px;
position: absolute;
bottom: 10px;
left: 50%;
margin-left: -70px;
}
.video-play-ani{
width: 140px;
height: 140px;
position: absolute;
left: 50%;
margin-left: -70px;
display: none;
}
.video-play-icon{
width: 100px;
height: 100px;
border: solid 8px #b17d5a;
background: #e7cc97;
border-radius: 100%;
position: absolute;
top: 50%;
margin-top: -50px;
left: 50%;
margin-left: -50px;
cursor: pointer;
z-index: 10;
display: flex;
align-items: center;
justify-content: center;
}
.control {
width: 0px;
height: 0px;
}
.play {
border-top: 20px solid transparent;
border-bottom: 20px solid transparent;
border-left: solid 38px #fff;
margin-left: 10px;
}
.pause {
width: 14px;
height: 40px;
border-left: solid 10px #fff;
border-right: solid 10px #fff;
}
.press {
animation: press .1s forwards;
}
.recorder-play-icon{
width: 100px;
height: 100px;
border: solid 8px #b17d5a;
background: #e7cc97;
border-radius: 100%;
position: absolute;
bottom: 8%;
left: 5%;
cursor: pointer;
z-index: 10;
display: flex;
align-items: center;
justify-content: center;
}
.recorder-btn {
border: solid 6px #b17d5a;
background: #e7cc97;
border-radius: 21px;
color: #fff;
text-align: center;
height: 60px;
line-height: 60px;
width: 60%;
font-size: 30px;
font-weight: bold;
position: absolute;
bottom: 8%;
cursor: pointer;
-moz-user-select: none;
-khtml-user-select: none;
user-select: none;
}
.recorder-play {
width: 40px;
height: 40px;
border: solid 8px #fff;
border-radius: 100%;
background: #fff;
margin-top: 30px solid transparent;
margin-bottom: 30px solid transparent;
}
.recorder-pause {
width: 40px;
height: 40px;
display: none;
}
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>h5-template-generator</title>
<script type="text/javascript" src="../lib/js/jquery-1.12.3.min.js"></script>
<link href="./index.css" rel="stylesheet" >
<script type="text/javascript" src="//staging-teach.cdn.ireadabc.com/h5template/h5-static-lib/js/air.js"></script>
<script type="text/javascript" src="../lib/js/jquery-1.12.3.min.js"></script>
<link href="../lib/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<script type="text/javascript" src="../lib/bootstrap/js/bootstrap.min.js"></script>
<link href="./index.css" rel="stylesheet">
<script type="text/javascript"
src="//staging-teach.cdn.ireadabc.com/h5template/h5-static-lib/js/air_online_open.js"></script>
</head>
<body>
<h1 id="test"></h1>
</body>
<div class="content">
<div role="tea" id="tea">
<div style="margin-top: 25px;margin-left: 203px;"><span class="title">请同学们根据视频复述课文</span></div>
<div class="dialog-content">
<div class="video-container">
<video id="video" src=""></video>
</div>
<div id='playSpeed' class="play-speed-content">
<p class="speed" style="margin-top:30px; margin-bottom: 30px; font-size: 20px;">倍数</p>
<p class="speed speed-choice" data-speed="0.75">0.75x</p>
<p class="speed speed-choice" data-speed="1">1x</p>
<p class="speed speed-choice" data-speed="1.25">1.25x</p>
<p class="speed speed-choice" data-speed="1.5">1.5x</p>
<p class="speed speed-choice" data-speed="2">2x</p>
</div>
</div>
<div class="progress-div">
<div class="progress-label-left">
<span id="cur-time" class="progress-label ">00:00</span>
</div>
<div class="progress my-progress">
<div class="progress-bar my-progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;">
</div>
</div>
<div class=" progress-label-right">
<span id="total-time" class="progress-label">00:00</span>
</div>
</div>
<div class="video-play-bg">
<img src="../lib/images/play-circle.png" id='ani' class="video-play-ani">
<div class="recorder-play-icon">
<div class="control recorder-play">
</div>
<img src="../lib/images/recorder-pasue.png" class="recorder-pause">
</div>
</div>
</div>
</div>
</body>
<script src="./index.js"></script>
</html>
\ No newline at end of file
......@@ -9,35 +9,183 @@ window.air.hideAirClassLoading(key,data); //页面加载完成时,必须调
//对应模板的名称,这个可以不写,但是最好是能写上,同时开发多个模板的情况下如果不写这个,本地缓存可能会存在混乱
var key = "h5_test";
$(function(){
window.courseware.getData(function(data){
//数据加载完,才算页面加载完成
//获取数据
if(data&&data.test){
$("#test").html("Hello "+data.test);
} else{
//一般来讲,如果没有获取到数据的话,给一组默认数据,用于演示模板的展示效果,方便别人了解这个模板
$("#test").html("Hello 我是演示信息!");
}
//数据渲染完成后,添加各种交互或者动画效果
//我这里简单做一个渐入渐出效果的例子
var flag = true;
setInterval(function(){
if(flag){
$("#test").fadeIn(500);
}else{
$("#test").fadeOut(500);
}
flag = !flag;
},1000)
var key = "JM-07";
var USERINFO = null;
var ROLE = null;
$(function () {
window.courseware.getData(function (data) {
USERINFO = window.air.airClassInfo.user;
ROLE = USERINFO.classRole;
const playView = new PlayView(data);
playView.init();
//在页面加载、事件、动画等都初始化完成后,一定要记得调用此方法,否则模板将是不可用的
window.air.hideAirClassLoading(key,data);
window.air.hideAirClassLoading(key, this.data);
}, key);
})
class PlayView {
data;
constructor(data) {
this.data = data;
}
init() {
// 若无数据 则为预览模式 需要填充一些默认数据用来显示
this.initDefaultData();
this.initData();
this.initView();
}
initDefaultData() {
if (!this.data) {
this.data = {};
}
}
initData() {
}
initView() {
if (ROLE == "tea") {
$("[role='tea']").show(); // 老师特定的页面
}
else {
$("[role='stu']").show(); // 老师特定的页面
}
if (this.data.video) {
$("#video").attr("src", this.data.video);
const video = $("#video")[0];
let i = setInterval(() => {
if(video.readyState > 0){
let totalTime = getTimeStr(video.duration);
$("#total-time").empty();
$("#total-time").append(totalTime);
}
}, 100);
}
bindRecorderBtn();
bindSpeedBtn();
}
}
// 视频播放按钮
function bindVideoPlayBtn() {
bindPressAnimation($(".video-play-icon"));
$("#video")[0].addEventListener('ended', function () {
// 监听视频播放结束
$(".video-play-icon .control").removeClass("pause").addClass("play");
});
$("#video")[0].addEventListener('pause', function () {
// 监听视频播放结束
$(".video-play-icon .control").removeClass("pause").addClass("play");
});
$(".video-play-icon").click(function () {
const video = $("#video")[0];
const control = $(".video-play-icon .control");
const status_ = control.hasClass("play");
if (status_) {
video.play();
control.removeClass("play").addClass("pause");
} else {
video.pause();
control.removeClass("pause").addClass("play");
}
});
}
// 录音按钮
function bindRecorderBtn() {
bindPressAnimation($(".recorder-play-icon"));
$(".recorder-play-icon").click(function () {
const control = $(".recorder-play-icon .control");
const status_ = control.hasClass("recorder-play");
if (status_) {
control.removeClass("recorder-play");
$(".recorder-play-icon .recorder-pause").show();
} else {
$(".recorder-play-icon .recorder-pause").hide();
control.addClass("recorder-play");
}
});
}
// 绑定点击效果
function bindPressAnimation(_dom) {
_dom.mousedown(function () {
$(this).addClass("press");
}).mouseup(function () {
$(this).removeClass("press");
}).mouseout(function () {
$(this).removeClass("press");
})
_dom.on("touchstart", function (e) {
e.preventDefault();
$(this).addClass("press");
}).on("touchend", function (e) {
e.preventDefault();
$(this).removeClass("press");
})
}
function getTimeStr(time) {
if (!time) {
return "00:00";
}
let sec = Math.ceil(time % 60);
let minute = Math.floor(time / 60);
let timeStr = (minute < 10 ? "0" + minute : minute) + ":" + (sec < 10 ? "0" + sec : sec);
return timeStr;
}
function bindSpeedBtn(){
$(".speed-choice").click(function () {
const video = $("#video")[0];
},key);
let speed = $(this).attr('data-speed');
console.log(speed);
if(video){
video.playbackRate = speed;
}
})
\ No newline at end of file
video.play();
});
}
\ No newline at end of file
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
bl@^1.0.0:
version "1.2.3"
resolved "https://registry.nlark.com/bl/download/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7"
integrity sha1-Ho3YAULqyA1xWMnczAR/tiDgNec=
dependencies:
readable-stream "^2.3.5"
safe-buffer "^5.1.1"
buffer-alloc-unsafe@^1.1.0:
version "1.1.0"
resolved "https://registry.npm.taobao.org/buffer-alloc-unsafe/download/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
integrity sha1-vX3CauKXLQ7aJTvgYdupkjScGfA=
buffer-alloc@^1.2.0:
version "1.2.0"
resolved "https://registry.npm.taobao.org/buffer-alloc/download/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
integrity sha1-iQ3ZDZI6hz4I4Q5f1RpX5bfM4Ow=
dependencies:
buffer-alloc-unsafe "^1.1.0"
buffer-fill "^1.0.0"
buffer-crc32@~0.2.3:
version "0.2.13"
resolved "https://registry.npm.taobao.org/buffer-crc32/download/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
buffer-fill@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/buffer-fill/download/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
compressing@^1.5.0:
version "1.5.1"
resolved "https://registry.npm.taobao.org/compressing/download/compressing-1.5.1.tgz#d031a3311b8c2ed6561a8431671d5a844540482d"
integrity sha1-0DGjMRuMLtZWGoQxZx1ahEVASC0=
dependencies:
flushwritable "^1.0.0"
get-ready "^1.0.0"
iconv-lite "^0.5.0"
mkdirp "^0.5.1"
pump "^3.0.0"
streamifier "^0.1.1"
tar-stream "^1.5.2"
yauzl "^2.7.0"
yazl "^2.4.2"
core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.nlark.com/core-util-is/download/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
end-of-stream@^1.0.0, end-of-stream@^1.1.0:
version "1.4.4"
resolved "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
integrity sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=
dependencies:
once "^1.4.0"
fd-slicer@~1.1.0:
version "1.1.0"
resolved "https://registry.npm.taobao.org/fd-slicer/download/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=
dependencies:
pend "~1.2.0"
flushwritable@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/flushwritable/download/flushwritable-1.0.0.tgz#3e328d8fde412ad47e738e3be750b4d290043498"
integrity sha1-PjKNj95BKtR+c44751C00pAENJg=
fs-constants@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/fs-constants/download/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
integrity sha1-a+Dem+mYzhavivwkSXue6bfM2a0=
get-ready@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/get-ready/download/get-ready-1.0.0.tgz#f91817f1e9adecfea13a562adfc8de883ab34782"
integrity sha1-+RgX8emt7P6hOlYq38jeiDqzR4I=
iconv-lite@^0.5.0:
version "0.5.2"
resolved "https://registry.nlark.com/iconv-lite/download/iconv-lite-0.5.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.5.2.tgz#af6d628dccfb463b7364d97f715e4b74b8c8c2b8"
integrity sha1-r21ijcz7RjtzZNl/cV5LdLjIwrg=
dependencies:
safer-buffer ">= 2.1.2 < 3"
inherits@~2.0.3:
version "2.0.4"
resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=
isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
minimist@^1.2.5:
version "1.2.5"
resolved "https://registry.nlark.com/minimist/download/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
integrity sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=
mkdirp@^0.5.1:
version "0.5.5"
resolved "https://registry.nlark.com/mkdirp/download/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
integrity sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=
dependencies:
minimist "^1.2.5"
once@^1.3.1, once@^1.4.0:
version "1.4.0"
resolved "https://registry.nlark.com/once/download/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
dependencies:
wrappy "1"
pend@~1.2.0:
version "1.2.0"
resolved "https://registry.npm.taobao.org/pend/download/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
process-nextick-args@~2.0.0:
version "2.0.1"
resolved "https://registry.nlark.com/process-nextick-args/download/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
integrity sha1-eCDZsWEgzFXKmud5JoCufbptf+I=
pump@^3.0.0:
version "3.0.0"
resolved "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
integrity sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=
dependencies:
end-of-stream "^1.1.0"
once "^1.3.1"
readable-stream@^2.3.0, readable-stream@^2.3.5:
version "2.3.7"
resolved "https://registry.nlark.com/readable-stream/download/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
integrity sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.3"
isarray "~1.0.0"
process-nextick-args "~2.0.0"
safe-buffer "~5.1.1"
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
safe-buffer@^5.1.1:
version "5.2.1"
resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=
safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha1-mR7GnSluAxN0fVm9/St0XDX4go0=
"safer-buffer@>= 2.1.2 < 3":
version "2.1.2"
resolved "https://registry.nlark.com/safer-buffer/download/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=
streamifier@^0.1.1:
version "0.1.1"
resolved "https://registry.npm.taobao.org/streamifier/download/streamifier-0.1.1.tgz#97e98d8fa4d105d62a2691d1dc07e820db8dfc4f"
integrity sha1-l+mNj6TRBdYqJpHR3AfoINuN/E8=
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.nlark.com/string_decoder/download/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
integrity sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=
dependencies:
safe-buffer "~5.1.0"
tar-stream@^1.5.2:
version "1.6.2"
resolved "https://registry.npm.taobao.org/tar-stream/download/tar-stream-1.6.2.tgz?cache=0&sync_timestamp=1609236328737&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftar-stream%2Fdownload%2Ftar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555"
integrity sha1-jqVdqzeXIlPZqa+Q/c1VmuQ1xVU=
dependencies:
bl "^1.0.0"
buffer-alloc "^1.2.0"
end-of-stream "^1.0.0"
fs-constants "^1.0.0"
readable-stream "^2.3.0"
to-buffer "^1.1.1"
xtend "^4.0.0"
to-buffer@^1.1.1:
version "1.1.1"
resolved "https://registry.nlark.com/to-buffer/download/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80"
integrity sha1-STvUj2LXxD/N7TE6A9ytsuEhOoA=
util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.nlark.com/util-deprecate/download/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
wrappy@1:
version "1.0.2"
resolved "https://registry.nlark.com/wrappy/download/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
xtend@^4.0.0:
version "4.0.2"
resolved "https://registry.nlark.com/xtend/download/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=
yauzl@^2.7.0:
version "2.10.0"
resolved "https://registry.npm.taobao.org/yauzl/download/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=
dependencies:
buffer-crc32 "~0.2.3"
fd-slicer "~1.1.0"
yazl@^2.4.2:
version "2.5.1"
resolved "https://registry.nlark.com/yazl/download/yazl-2.5.1.tgz#a3d65d3dd659a5b0937850e8609f22fffa2b5c35"
integrity sha1-o9ZdPdZZpbCTeFDoYJ8i//orXDU=
dependencies:
buffer-crc32 "~0.2.3"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment