Commit 0d709379 authored by chenqikuai's avatar chenqikuai

fix

parent 3fa09256
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
"lint": "vue-cli-service lint" "lint": "vue-cli-service lint"
}, },
"dependencies": { "dependencies": {
"@33cn/chain33-transaction-parser": "^1.1.4",
"@tailwindcss/line-clamp": "^0.2.0", "@tailwindcss/line-clamp": "^0.2.0",
"@tailwindcss/postcss7-compat": "^2.0.4", "@tailwindcss/postcss7-compat": "^2.0.4",
"ant-design-vue": "^1.7.5", "ant-design-vue": "^1.7.5",
...@@ -17,6 +18,7 @@ ...@@ -17,6 +18,7 @@
"core-js": "^3.6.5", "core-js": "^3.6.5",
"element-ui": "^2.15.6", "element-ui": "^2.15.6",
"postcss": "^7", "postcss": "^7",
"protobufjs": "6.10.1",
"register-service-worker": "^1.7.2", "register-service-worker": "^1.7.2",
"swiper": "^6.6.1", "swiper": "^6.6.1",
"tailwindcss": "npm:@tailwindcss/postcss7-compat@^2.1.0", "tailwindcss": "npm:@tailwindcss/postcss7-compat@^2.1.0",
...@@ -24,8 +26,9 @@ ...@@ -24,8 +26,9 @@
"vue": "^2.6.11", "vue": "^2.6.11",
"vue-i18n": "^8.24.4", "vue-i18n": "^8.24.4",
"vue-router": "^3.2.0", "vue-router": "^3.2.0",
"vue-typed-mixins": "^0.2.0",
"vuex": "^3.4.0", "vuex": "^3.4.0",
"ycc-api": "^0.0.3" "ycc-api": "^0.0.4"
}, },
"devDependencies": { "devDependencies": {
"@babel/preset-env": "^7.16.11", "@babel/preset-env": "^7.16.11",
......
This diff is collapsed.
declare module "*.png"; declare module "*.png";
declare module '@33cn/chain33-transaction-parser'
\ No newline at end of file
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
</router-link> </router-link>
<router-link :to="{path: '/blockChainBrowser', query: {lang: $route.query.lang}}" tag="li" class="pl-5 pr-5 cursor-pointer relative"> <router-link :to="{path: '/blockChainBrowser', query: {lang: $route.query.lang}}" tag="li" class="pl-5 pr-5 cursor-pointer relative">
{{ $t('lang.blockChainBrowser') }} {{ $t('lang.blockChainBrowser') }}
<span v-show="$route.path === '/blockChainBrowser' || $route.path === '/block'" class="absolute block w-7 h-1 bg-active rounded-2xl left-1/2 -bottom-2 transform -translate-x-1/2"></span> <span v-show="$route.path === '/blockChainBrowser' || $route.path === '/block' || $route.path === '/blockDetail' || $route.path=== '/tradeHash'" class="absolute block w-7 h-1 bg-active rounded-2xl left-1/2 -bottom-2 transform -translate-x-1/2"></span>
</router-link> </router-link>
</ul> </ul>
</div> </div>
......
import { searchInputPlaceholder } from "@/constant";
import { queryTransaction } from "ycc-api/dist/cmjs/service/blockDetail/index";
import Vue from "vue";
export default Vue.extend({
data() {
return {
searchInputPlaceholder,
searchValue: "",
data: {} as any,
};
},
async mounted() {
const ret = await queryTransaction(
"ycc",
"/yccApi",
this.$route.query.hash as string
);
if (ret) {
this.data = ret;
}
},
methods: {
clickSearch(str: string) {
console.log(str);
},
setSearchValue(v: string) {
this.searchValue = v;
},
},
});
...@@ -43,7 +43,12 @@ const routes: Array<RouteConfig> = [ ...@@ -43,7 +43,12 @@ const routes: Array<RouteConfig> = [
path: "/blockDetail", path: "/blockDetail",
name: "区块详情", name: "区块详情",
component: () => import(`@/views/${file}/blockDetail.vue`), component: () => import(`@/views/${file}/blockDetail.vue`),
} },
{
path: "/tradeHash",
name: "交易详情",
component: () => import(`@/views/${file}/tradeDetail.vue`),
},
], ],
}, },
]; ];
......
import { i18n } from "@/assets/lang";
import { iAsset } from "@/types/trade"; import { iAsset } from "@/types/trade";
import { deCode } from "./prototype";
import { parseTransferNote } from "@33cn/chain33-transaction-parser";
/**
* 格式化时间
*
* @param {date} date
* @param {string} format
* @returns
*/
const formatTime = (date: any, format = "yyyy-MM-dd hh:mm:ss") => {
if (!date) return "";
if (typeof date === "number") {
if (Math.floor(date / 1e9) > 0 && Math.floor(date / 1e9) < 10) {
date = date * 1000;
}
date = new Date(date);
} else if (typeof date === "string") {
// timestamp in secounds
if (/^\d{10}$/.test(date)) {
date = new Date(Number(date) * 1000);
} else {
// ios 中使用 new Date( yyyy-MM-dd hh:mm:ss:SS ) 时间格式字符串不能精确到 小时以后
const dateArr = date.split(/[- :]/);
const now = new Date();
date = new Date(
Number(dateArr[0]) || now.getFullYear(),
dateArr[1] && parseInt(dateArr[1])
? parseInt(dateArr[1]) - 1
: now.getMonth() - 1,
Number(dateArr[2]) || 1,
Number(dateArr[3]) || 0,
Number(dateArr[4]) || 0,
Number(dateArr[5]) || 0
);
}
} else {
/* eslint-disable-next-line */
console.error("wrong format", date);
return "";
}
if (format === "timestamp") return +date;
const map = {
M: date.getMonth() + 1, // 月份
d: date.getDate(), // 日
h: date.getHours(), // 小时
m: date.getMinutes(), // 分
s: date.getSeconds(), // 秒
q: Math.floor((date.getMonth() + 3) / 3), // 季度
S: date.getMilliseconds(), // 毫秒
W: "星期" + ["日", "一", "二", "三", "四", "五", "六"][date.getDay()], // 星期
} as any;
format = format.replace(/([yMdhmsqSW])+/g, function(all, t) {
let v = map[t];
if (v !== undefined) {
if (all.length > 1) {
v = "0" + v;
v = v.substr(v.length - 2);
}
return v;
} else if (t === "y") {
return (date.getFullYear() + "").substr(4 - all.length);
}
return all;
});
return format;
};
const decodeTransferNote = (tx: any) => {
let payload: any = "";
if (tx.execer === "user.p.xunku.storage") {
return JSON.parse(`${deCode(tx.rawPayload)}`);
}
if (!tx.payload) return tx.rawPayload;
else {
payload = tx.payload;
}
const keys = ["transfer", "withdraw", "transferToExec"];
const key = keys.find((item) => payload[item]);
// console.log(tx.hash==='0x3589f747b41114854fa86953b22d840c1f41606960c79bc3640d4adaf7a5f96a')
if (key && payload[key].note) {
payload[key].note = parseTransferNote(payload[key].note);
}
// 基金会hash特殊处理
if (
tx.hash ===
"0x3589f747b41114854fa86953b22d840c1f41606960c79bc3640d4adaf7a5f96a" &&
key
)
payload[key].note = undefined;
return payload;
};
//截断哈希 //截断哈希
export default { export default {
...@@ -52,73 +147,6 @@ export default { ...@@ -52,73 +147,6 @@ export default {
} }
return res; return res;
}, },
/**
* 格式化时间
*
* @param {date} date
* @param {string} format
* @returns
*/
formatTime(date: any, format = "yyyy-MM-dd hh:mm:ss") {
if (!date) return "";
if (typeof date === "number") {
if (Math.floor(date / 1e9) > 0 && Math.floor(date / 1e9) < 10) {
date = date * 1000;
}
date = new Date(date);
} else if (typeof date === "string") {
// timestamp in secounds
if (/^\d{10}$/.test(date)) {
date = new Date(Number(date) * 1000);
} else {
// ios 中使用 new Date( yyyy-MM-dd hh:mm:ss:SS ) 时间格式字符串不能精确到 小时以后
const dateArr = date.split(/[- :]/);
const now = new Date();
date = new Date(
Number(dateArr[0]) || now.getFullYear(),
dateArr[1] && parseInt(dateArr[1])
? parseInt(dateArr[1]) - 1
: now.getMonth() - 1,
Number(dateArr[2]) || 1,
Number(dateArr[3]) || 0,
Number(dateArr[4]) || 0,
Number(dateArr[5]) || 0
);
}
} else {
/* eslint-disable-next-line */
console.error("wrong format", date);
return "";
}
if (format === "timestamp") return +date;
const map = {
M: date.getMonth() + 1, // 月份
d: date.getDate(), // 日
h: date.getHours(), // 小时
m: date.getMinutes(), // 分
s: date.getSeconds(), // 秒
q: Math.floor((date.getMonth() + 3) / 3), // 季度
S: date.getMilliseconds(), // 毫秒
W: "星期" + ["日", "一", "二", "三", "四", "五", "六"][date.getDay()], // 星期
} as any;
format = format.replace(/([yMdhmsqSW])+/g, function(all, t) {
let v = map[t];
if (v !== undefined) {
if (all.length > 1) {
v = "0" + v;
v = v.substr(v.length - 2);
}
return v;
} else if (t === "y") {
return (date.getFullYear() + "").substr(4 - all.length);
}
return all;
});
return format;
},
filterNum: (num: number | string | null) => { filterNum: (num: number | string | null) => {
if (!num || num === null || num === "") return; if (!num || num === null || num === "") return;
const n = String(num).split("."); const n = String(num).split(".");
...@@ -192,4 +220,31 @@ export default { ...@@ -192,4 +220,31 @@ export default {
return `${process.env.VUE_APP_FEE_TOTAL} ${token}`; return `${process.env.VUE_APP_FEE_TOTAL} ${token}`;
} }
}, },
formatTime,
decodeTransferNote,
caculateTime: (time: any) => {
const Dt = new Date();
const local = Dt.getTime();
let dValue = parseInt(String(local / 1000 - time));
const h = parseInt(String(dValue / 3600));
dValue -= h * 3600;
const m = parseInt(String(dValue / 60));
dValue -= m * 60;
const s = parseInt(String(dValue));
if (parseInt(String(local / 1000 - time)) >= 86400) return formatTime(time);
else if (parseInt(String(local / 1000 - time)) >= 3600)
return `${h}${
h == 1 ? i18n.t("components.hour") : i18n.t("components.hours")
}${m}${
m == 1 ? i18n.t("components.min") : i18n.t("components.mins")
}${s}${s == 1 ? i18n.t("components.sec") : i18n.t("components.secs")}`;
else if (parseInt(String(local / 1000 - time)) >= 60)
return `${m}${
m == 1 ? i18n.t("components.min") : i18n.t("components.mins")
}${s}${s == 1 ? i18n.t("components.sec") : i18n.t("components.secs")}`;
else
return `${s}${
s == 1 ? i18n.t("components.sec") : i18n.t("components.secs")
}`;
},
}; };
export function deCode(params: any): any;
import protobuf from "protobufjs"
import wsJson from './storage.json'
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
export function deCode(params) {
let root = protobuf.Root.fromJSON(wsJson);
const message = root.lookupType('Storage')
let m = hex2ab(params);
let a = message.decode(m)
let b = message.toObject(a)
return utf82rstr(ab2str(b.contentStorage.content))
}
// str 转utf8
function utf82rstr(input) {
let output = ""
let i = 0
let c = 0
let c2 = 0
let c3 = 0
while (i < input.length) {
c = input.charCodeAt(i);
if (c < 128) {
output += String.fromCharCode(c);
i++;
} else if ((c > 191) && (c < 224)) {
c2 = input.charCodeAt(i + 1);
output += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i += 2;
} else {
c2 = input.charCodeAt(i + 1);
c3 = input.charCodeAt(i + 2);
output += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
}
}
return output;
}
// 16进制转ab
var hex2ab = function (hex) {
var typedArray = new Uint8Array(hex.match(/[\da-f]{2}/gi).map(function (h) {
return parseInt(h, 16)
}))
return typedArray
}
// ab 转 str
function ab2str(buf) {
return String.fromCharCode.apply(null, buf);
}
\ No newline at end of file
{
"options": {
"java_outer_classname": "StorageProtobuf",
"java_package": "cn.chain33.javasdk.model.protobuf"
},
"nested": {
"Storage": {
"oneofs": {
"value": {
"oneof": [
"contentStorage",
"hashStorage",
"linkStorage",
"encryptStorage",
"encryptShareStorage"
]
}
},
"fields": {
"contentStorage": {
"type": "ContentOnlyNotaryStorage",
"id": 1
},
"hashStorage": {
"type": "HashOnlyNotaryStorage",
"id": 2
},
"linkStorage": {
"type": "LinkNotaryStorage",
"id": 3
},
"encryptStorage": {
"type": "EncryptNotaryStorage",
"id": 4
},
"encryptShareStorage": {
"type": "EncryptShareNotaryStorage",
"id": 5
},
"ty": {
"type": "int32",
"id": 6
}
}
},
"StorageAction": {
"oneofs": {
"value": {
"oneof": [
"contentStorage",
"hashStorage",
"linkStorage",
"encryptStorage",
"encryptShareStorage"
]
}
},
"fields": {
"contentStorage": {
"type": "ContentOnlyNotaryStorage",
"id": 1
},
"hashStorage": {
"type": "HashOnlyNotaryStorage",
"id": 2
},
"linkStorage": {
"type": "LinkNotaryStorage",
"id": 3
},
"encryptStorage": {
"type": "EncryptNotaryStorage",
"id": 4
},
"encryptShareStorage": {
"type": "EncryptShareNotaryStorage",
"id": 5
},
"ty": {
"type": "int32",
"id": 6
}
}
},
"ContentOnlyNotaryStorage": {
"fields": {
"content": {
"type": "bytes",
"id": 1
},
"key": {
"type": "string",
"id": 2
},
"op": {
"type": "int32",
"id": 3
},
"value": {
"type": "string",
"id": 4
}
}
},
"HashOnlyNotaryStorage": {
"fields": {
"hash": {
"type": "bytes",
"id": 1
},
"key": {
"type": "string",
"id": 2
},
"value": {
"type": "string",
"id": 3
}
}
},
"LinkNotaryStorage": {
"fields": {
"link": {
"type": "bytes",
"id": 1
},
"hash": {
"type": "bytes",
"id": 2
},
"key": {
"type": "string",
"id": 3
},
"value": {
"type": "string",
"id": 4
}
}
},
"EncryptNotaryStorage": {
"fields": {
"contentHash": {
"type": "bytes",
"id": 1
},
"encryptContent": {
"type": "bytes",
"id": 2
},
"nonce": {
"type": "bytes",
"id": 3
},
"key": {
"type": "string",
"id": 4
},
"value": {
"type": "string",
"id": 5
}
}
},
"EncryptShareNotaryStorage": {
"fields": {
"contentHash": {
"type": "bytes",
"id": 1
},
"encryptContent": {
"type": "bytes",
"id": 2
},
"pubKey": {
"type": "bytes",
"id": 3
},
"key": {
"type": "string",
"id": 4
},
"value": {
"type": "string",
"id": 5
}
}
},
"EncryptNotaryAdd": {
"fields": {
"key": {
"type": "string",
"id": 1
},
"encryptAdd": {
"type": "bytes",
"id": 2
}
}
},
"QueryStorage": {
"fields": {
"txHash": {
"type": "string",
"id": 1
}
}
},
"BatchQueryStorage": {
"fields": {
"txHashs": {
"rule": "repeated",
"type": "string",
"id": 1
}
}
},
"BatchReplyStorage": {
"fields": {
"storages": {
"rule": "repeated",
"type": "Storage",
"id": 1
}
}
},
"ReceiptStorage": {
"fields": {}
}
}
}
\ No newline at end of file
<template>
<div
style="margin-top: 70px;"
class="min-w-1200 md:w-bodySet mx-auto flow-root"
>
<chain-search
style="margin-top: 30px;"
:placeholder="searchInputPlaceholder"
:clickSearch="clickSearch"
:value="searchValue"
:setValue="setSearchValue"
></chain-search>
<div class="data-table table-shadow">
<div class="head">
<span>{{ $t('lang.txDetail.detail') }}</span>
</div>
<div class="item line flex items-center">
<label>
<span>{{ $t('lang.txDetail.txHash') }}</span>
</label>
<div class="item-text flex items-center">
<span>{{ data.hash }}</span>
<copy-btn :copyTxt="data.hash" class="ml-2">复制</copy-btn>
</div>
</div>
<div class="item flex items-center">
<label>
<span>{{ $t('lang.txDetail.status') }}</span>
</label>
<div class="item-text">
<div
:class="['status', data.status === true ? 'success' : 'faild']"
class="flex items-center"
>
<img
v-if="data.status === false"
class="w-4 h-4"
src="@/assets/images/blockChainBrowser/tradeDetail/fail.png"
alt=""
/>
<img
v-else
class="w-4 h-4"
src="@/assets/images/blockChainBrowser/tradeDetail/success.png"
alt=""
/>
<div class="ml-1">
{{ data.status === true ? '成功' : '失败' }}
</div>
</div>
</div>
</div>
<div class="item line flex items-center">
<label>
<span>{{ $t('lang.txDetail.height') }}</span>
</label>
<div class="item-text">
<router-link :to="`/blockDetail?height=${data.height}`" class="light">
{{ data.height }}
</router-link>
</div>
</div>
<div class="item flex items-center">
<label>
<span>{{ $t('lang.txDetail.time') }}</span>
</label>
<div class="item-text">{{ data.blockTime | formatTime }}</div>
</div>
<div class="item line flex items-center">
<label>
<span>{{ $t('lang.trade.sender') }}</span>
</label>
<div class="item-text">
<router-link :to="`/address?address=${data.from}`" class="light">
{{ data.from }}
</router-link>
</div>
</div>
<div class="item flex items-center">
<label>
<span>{{ $t('lang.trade.receiver') }}</span>
</label>
<div class="item-text">
<router-link :to="`/address?address=${data.to}`" class="light">
{{ data.to }}
</router-link>
</div>
</div>
<div class="item line flex items-center">
<label>
<span>{{ $t('lang.txDetail.value') }}</span>
</label>
<div class="item-text">
{{
{ amount: data.amount, assets: data.assets, tx: data.inData }
| TradeValue
}}
</div>
</div>
<div class="item flex items-center">
<label>
<span>{{ $t('lang.txDetail.fee') }}</span>
</label>
<div class="item-text">{{ data.fee | filterFee }}</div>
</div>
<div class="item line flex items-center">
<label>
<span>{{ $t('lang.txDetail.random') }}</span>
</label>
<div class="item-text">{{ String(data.nonce) }}</div>
</div>
<div class="item flex items-center">
<label>
<span>{{ $t('lang.txDetail.execer') }}</span>
</label>
<div class="item-text">{{ data.execer }}</div>
</div>
<div class="item line flex items-center">
<label>
<span>{{ $t('lang.trade.func') }}</span>
</label>
<div class="item-text">
{{ data.actionName === 'unknown' ? 'none' : data.actionName }}
</div>
</div>
<div class="item flex items-center">
<label>
<span>{{ $t('lang.txDetail.txType') }}</span>
</label>
<div class="item-text">{{ data.txType }}</div>
</div>
<div class="markdown-data" v-if="data.execer === 'user.write'">
<!-- <markdown :content="markdownTxt"></markdown> -->
</div>
<div class="area line" v-if="data.execer !== 'user.write'">
<label>
<span>{{ $t('lang.txDetail.inData') }}</span>
</label>
<div class="item-text">
<pre class="preTxt" contenteditable="true">
<code>{{data.inData | decodeTransferNote}}</code>
</pre>
</div>
</div>
<div class="area line" v-if="data.execer !== 'user.write'">
<label>
<span>{{ $t('lang.txDetail.outData') }}</span>
</label>
<div class="item-text">
<pre class="preTxt" contenteditable="true">
<code>{{data.outData}}</code>
</pre>
</div>
</div>
</div>
</div>
</template>
<script lang="ts">
import ChainSearch from '@/components/pc/BlockChainBrowser/ChainSearch.vue'
import CopyBtn from '@/components/pc/CopyBtn.vue'
import tradeDetail from '@/mixin/tradeDetail'
import vueTypedMixins from 'vue-typed-mixins'
export default vueTypedMixins(tradeDetail).extend({
components: {
ChainSearch,
CopyBtn,
},
mixins: [tradeDetail],
})
</script>
<style lang="scss" scoped>
.data-table {
width: 100%;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #1f3470;
font-size: 14px;
background: white;
border-radius: 2px;
border: 1px solid rgba(235, 239, 241, 1);
.head {
height: 70px;
border-bottom: 1px solid #eee;
span {
display: inline-block;
height: 100%;
margin-left: 32px;
text-align: center;
font-size: 18px;
font-family: PingFang-SC-Bold, PingFang-SC;
font-weight: bold;
color: #1f3470;
line-height: 69px;
}
}
.item {
height: 60px;
label {
width: 233px;
display: flex;
justify-items: left;
align-items: center;
padding-left: 32px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #7c88ad;
i {
font-size: 20px;
color: #b5d2e9;
}
span {
margin-left: 12px;
font-family: PingFangSC-Regular;
}
}
.item-text {
.status {
width: 70px;
height: 30px;
border-radius: 15px;
padding: 3px 10px;
font-size: 14px;
i {
font-size: 14px;
}
}
.success {
background: rgba(111, 182, 55, 0.1);
color: rgba(118, 193, 40, 1);
}
.faild {
background: rgba(193, 56, 56, 0.1);
color: rgba(193, 56, 56, 1);
}
}
}
.area {
height: 253px;
display: flex;
justify-items: left;
align-items: flex-start;
padding-top: 26px;
label {
width: 233px;
display: flex;
justify-items: left;
align-items: center;
padding-left: 32px;
i {
font-size: 20px;
color: #b5d2e9;
}
span {
margin-left: 12px;
font-family: PingFangSC-Regular;
}
}
.item-text {
width: 890px;
border: 1px solid rgba(235, 239, 241, 1);
background: white;
}
.preTxt {
height: 200px;
padding: 15px;
font-family: Verdana;
overflow-y: auto;
vertical-align: middle;
width: 100%;
word-break: break-all;
}
code {
line-height: 1.38;
margin-left: -49px;
font-family: 'Verdana';
}
.preTxt {
border: 1px solid #ebeff1;
cursor: default;
overflow-y: scroll;
// IE下隐藏
-ms-overflow-style: none;
// 火狐浏览器隐藏
scrollbar-color: transparent transparent;
}
.preTxt:focus-visible {
outline: none;
}
.preTxt::-webkit-scrollbar {
width: 5px;
height: 5px;
background: #e0e3e6;
}
.preTxt::-webkit-scrollbar-thumb {
border-radius: 50px;
background: #6368de;
}
}
.markdown-data {
border-top: 1px solid #eee;
padding: 40px;
font-size: 14px;
}
.line {
background: #f9fafc;
}
}
</style>
...@@ -22,7 +22,8 @@ ...@@ -22,7 +22,8 @@
"src/**/*.tsx", "src/**/*.tsx",
"src/**/*.vue", "src/**/*.vue",
"tests/**/*.ts", "tests/**/*.ts",
"tests/**/*.tsx" "tests/**/*.tsx",
"src/utils/prototype.js"
], ],
"exclude": ["node_modules"] "exclude": ["node_modules"]
} }
...@@ -9,6 +9,11 @@ ...@@ -9,6 +9,11 @@
dependencies: dependencies:
json-bigint "^0.3.0" json-bigint "^0.3.0"
"@33cn/chain33-transaction-parser@^1.1.4":
version "1.1.4"
resolved "https://registry.npmjs.org/@33cn/chain33-transaction-parser/-/chain33-transaction-parser-1.1.4.tgz#6c312b36d8830095d24e3dbb42e3e8f359da3c35"
integrity sha512-P3MNGokdZahYek3DLKzlWTybkQ3zLrW/NCplxZmfcL3hrohJMzhDDXs9TIRPXiCEOvx49PGCaHjpvX0yzTJkxQ==
"@ant-design/colors@^3.1.0": "@ant-design/colors@^3.1.0":
version "3.2.2" version "3.2.2"
resolved "https://registry.npm.taobao.org/@ant-design/colors/download/@ant-design/colors-3.2.2.tgz" resolved "https://registry.npm.taobao.org/@ant-design/colors/download/@ant-design/colors-3.2.2.tgz"
...@@ -1071,6 +1076,59 @@ ...@@ -1071,6 +1076,59 @@
mkdirp "^1.0.4" mkdirp "^1.0.4"
rimraf "^3.0.2" rimraf "^3.0.2"
"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
version "1.1.2"
resolved "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78=
"@protobufjs/base64@^1.1.2":
version "1.1.2"
resolved "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735"
integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==
"@protobufjs/codegen@^2.0.4":
version "2.0.4"
resolved "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb"
integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==
"@protobufjs/eventemitter@^1.1.0":
version "1.1.0"
resolved "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70"
integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A=
"@protobufjs/fetch@^1.1.0":
version "1.1.0"
resolved "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45"
integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=
dependencies:
"@protobufjs/aspromise" "^1.1.1"
"@protobufjs/inquire" "^1.1.0"
"@protobufjs/float@^1.0.2":
version "1.0.2"
resolved "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1"
integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=
"@protobufjs/inquire@^1.1.0":
version "1.1.0"
resolved "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089"
integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=
"@protobufjs/path@^1.1.2":
version "1.1.2"
resolved "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d"
integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=
"@protobufjs/pool@^1.1.0":
version "1.1.0"
resolved "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54"
integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=
"@protobufjs/utf8@^1.1.0":
version "1.1.0"
resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=
"@simonwep/pickr@~1.7.0": "@simonwep/pickr@~1.7.0":
version "1.7.4" version "1.7.4"
resolved "https://registry.nlark.com/@simonwep/pickr/download/@simonwep/pickr-1.7.4.tgz?cache=0&sync_timestamp=1620897298440&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40simonwep%2Fpickr%2Fdownload%2F%40simonwep%2Fpickr-1.7.4.tgz" resolved "https://registry.nlark.com/@simonwep/pickr/download/@simonwep/pickr-1.7.4.tgz?cache=0&sync_timestamp=1620897298440&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40simonwep%2Fpickr%2Fdownload%2F%40simonwep%2Fpickr-1.7.4.tgz"
...@@ -1203,6 +1261,11 @@ ...@@ -1203,6 +1261,11 @@
resolved "https://registry.nlark.com/@types/json-schema/download/@types/json-schema-7.0.7.tgz" resolved "https://registry.nlark.com/@types/json-schema/download/@types/json-schema-7.0.7.tgz"
integrity sha1-mKmTUWyFnrDVxMjwmDF6nqaNua0= integrity sha1-mKmTUWyFnrDVxMjwmDF6nqaNua0=
"@types/long@^4.0.1":
version "4.0.1"
resolved "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9"
integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==
"@types/mime@^1": "@types/mime@^1":
version "1.3.2" version "1.3.2"
resolved "https://registry.nlark.com/@types/mime/download/@types/mime-1.3.2.tgz" resolved "https://registry.nlark.com/@types/mime/download/@types/mime-1.3.2.tgz"
...@@ -1223,6 +1286,11 @@ ...@@ -1223,6 +1286,11 @@
resolved "https://registry.nlark.com/@types/node/download/@types/node-15.3.1.tgz?cache=0&sync_timestamp=1621463621315&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-15.3.1.tgz" resolved "https://registry.nlark.com/@types/node/download/@types/node-15.3.1.tgz?cache=0&sync_timestamp=1621463621315&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-15.3.1.tgz"
integrity sha1-I6Brh+7bUkAWYW6IaxFrj9yxgK8= integrity sha1-I6Brh+7bUkAWYW6IaxFrj9yxgK8=
"@types/node@^13.7.0":
version "13.13.52"
resolved "https://registry.npmjs.org/@types/node/-/node-13.13.52.tgz#03c13be70b9031baaed79481c0c0cfb0045e53f7"
integrity sha512-s3nugnZumCC//n4moGGe6tkNMyYEdaDBitVjwPxXmR5lnMG5dHePinH2EdxkG3Rh1ghFHHixAG4NJhpJW1rthQ==
"@types/normalize-package-data@^2.4.0": "@types/normalize-package-data@^2.4.0":
version "2.4.0" version "2.4.0"
resolved "https://registry.nlark.com/@types/normalize-package-data/download/@types/normalize-package-data-2.4.0.tgz?cache=0&sync_timestamp=1621242027779&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fnormalize-package-data%2Fdownload%2F%40types%2Fnormalize-package-data-2.4.0.tgz" resolved "https://registry.nlark.com/@types/normalize-package-data/download/@types/normalize-package-data-2.4.0.tgz?cache=0&sync_timestamp=1621242027779&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fnormalize-package-data%2Fdownload%2F%40types%2Fnormalize-package-data-2.4.0.tgz"
...@@ -6038,6 +6106,11 @@ loglevel@^1.6.8: ...@@ -6038,6 +6106,11 @@ loglevel@^1.6.8:
resolved "https://registry.nlark.com/loglevel/download/loglevel-1.7.1.tgz" resolved "https://registry.nlark.com/loglevel/download/loglevel-1.7.1.tgz"
integrity sha1-AF/eL15uRwaPk1/yhXPhJe9y8Zc= integrity sha1-AF/eL15uRwaPk1/yhXPhJe9y8Zc=
long@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
loose-envify@^1.0.0: loose-envify@^1.0.0:
version "1.4.0" version "1.4.0"
resolved "https://registry.npm.taobao.org/loose-envify/download/loose-envify-1.4.0.tgz" resolved "https://registry.npm.taobao.org/loose-envify/download/loose-envify-1.4.0.tgz"
...@@ -7555,6 +7628,25 @@ promise-inflight@^1.0.1: ...@@ -7555,6 +7628,25 @@ promise-inflight@^1.0.1:
resolved "https://registry.nlark.com/promise-inflight/download/promise-inflight-1.0.1.tgz" resolved "https://registry.nlark.com/promise-inflight/download/promise-inflight-1.0.1.tgz"
integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
protobufjs@6.10.1:
version "6.10.1"
resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-6.10.1.tgz#e6a484dd8f04b29629e9053344e3970cccf13cd2"
integrity sha512-pb8kTchL+1Ceg4lFd5XUpK8PdWacbvV5SK2ULH2ebrYtl4GjJmS24m6CKME67jzV53tbJxHlnNOSqQHbTsR9JQ==
dependencies:
"@protobufjs/aspromise" "^1.1.2"
"@protobufjs/base64" "^1.1.2"
"@protobufjs/codegen" "^2.0.4"
"@protobufjs/eventemitter" "^1.1.0"
"@protobufjs/fetch" "^1.1.0"
"@protobufjs/float" "^1.0.2"
"@protobufjs/inquire" "^1.1.0"
"@protobufjs/path" "^1.1.2"
"@protobufjs/pool" "^1.1.0"
"@protobufjs/utf8" "^1.1.0"
"@types/long" "^4.0.1"
"@types/node" "^13.7.0"
long "^4.0.0"
proxy-addr@~2.0.5: proxy-addr@~2.0.5:
version "2.0.6" version "2.0.6"
resolved "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.6.tgz" resolved "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.6.tgz"
...@@ -9456,6 +9548,11 @@ vue-template-es2015-compiler@^1.9.0: ...@@ -9456,6 +9548,11 @@ vue-template-es2015-compiler@^1.9.0:
resolved "https://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz" resolved "https://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz"
integrity sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU= integrity sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=
vue-typed-mixins@^0.2.0:
version "0.2.0"
resolved "https://registry.npmjs.org/vue-typed-mixins/-/vue-typed-mixins-0.2.0.tgz#d369c186a392780bbbe9f1b28a4cdcf62bec9053"
integrity sha512-0OxuinandPWv3nm5k/reYkuKtX3jjPZ40Sy9roJz0ih8PUzmI7zSRiXFEJ62LsyRegw9Tqy+qMkajk7ipKP8Vg==
vue@^2.6.11: vue@^2.6.11:
version "2.6.12" version "2.6.12"
resolved "https://registry.nlark.com/vue/download/vue-2.6.12.tgz?cache=0&sync_timestamp=1620856192360&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvue%2Fdownload%2Fvue-2.6.12.tgz" resolved "https://registry.nlark.com/vue/download/vue-2.6.12.tgz?cache=0&sync_timestamp=1620856192360&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvue%2Fdownload%2Fvue-2.6.12.tgz"
...@@ -9820,10 +9917,10 @@ yargs@^16.0.0: ...@@ -9820,10 +9917,10 @@ yargs@^16.0.0:
y18n "^5.0.5" y18n "^5.0.5"
yargs-parser "^20.2.2" yargs-parser "^20.2.2"
ycc-api@^0.0.3: ycc-api@^0.0.4:
version "0.0.3" version "0.0.4"
resolved "https://registry.npmjs.org/ycc-api/-/ycc-api-0.0.3.tgz#348ed5984e440b06d948b374e89406d4fbd04b53" resolved "https://registry.npmjs.org/ycc-api/-/ycc-api-0.0.4.tgz#31c20d2233c0a40564d576503058fccd58af1c9a"
integrity sha512-ApyU2TQPGg2JU/GvS7Pgi41iBhoFnD24tKBpUbDl9Pu2PpVTWKCwaek3GFiFTEJxHRTOCL5QR0NodSoBPUSWpg== integrity sha512-/ZSP/q6sKZqh2TCxX2tS7RCSmZwfLlsY/kNEsSb2v6khbF6w5m+SCLDd1D/d4cMOkWlXZDjCJrPDKwHEqAUErw==
dependencies: dependencies:
"@33cn/chain33-rpc-api" "^1.5.29" "@33cn/chain33-rpc-api" "^1.5.29"
......
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