Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
E
evm-store
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanli
evm-store
Commits
ab4625f5
Commit
ab4625f5
authored
Nov 11, 2021
by
wanli
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
✨
feat: 前端增加代码显示
parent
d3e4a593
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
356 additions
and
250 deletions
+356
-250
.gitignore
.gitignore
+1
-0
backend/view/api.py
backend/view/api.py
+87
-27
evm_module_tools
evm_module_tools
+1
-1
frontend/package-lock.json
frontend/package-lock.json
+97
-189
frontend/package.json
frontend/package.json
+2
-0
frontend/src/api/store.js
frontend/src/api/store.js
+8
-0
frontend/src/views/system/evm-module-tool.vue
frontend/src/views/system/evm-module-tool.vue
+160
-33
No files found.
.gitignore
View file @
ab4625f5
...
@@ -55,6 +55,7 @@ backend/backupData.json
...
@@ -55,6 +55,7 @@ backend/backupData.json
config.ini
config.ini
*.epk
*.epk
*.bc
*.bc
*.lock
tools/build_out/application/config.py
tools/build_out/application/config.py
tools/build_out/logs
tools/build_out/logs
...
...
backend/view/api.py
View file @
ab4625f5
...
@@ -39,13 +39,28 @@ def get_encoding(file):
...
@@ -39,13 +39,28 @@ def get_encoding(file):
data
=
f
.
read
()
data
=
f
.
read
()
return
chardet
.
detect
(
data
)[
'encoding'
]
return
chardet
.
detect
(
data
)[
'encoding'
]
def
stopApp
():
@
api
.
route
(
"/system/getFileContent"
,
methods
=
[
"POST"
])
fpath
=
os
.
sep
.
join
([
os
.
getcwd
(),
"restart.json"
])
def
get_file_content
():
with
open
(
fpath
,
"w+"
)
as
f
:
params
=
request
.
json
ret
=
json
.
loads
(
f
.
read
())
if
not
params
or
not
params
.
get
(
"file"
,
None
):
ret
[
"count"
]
=
ret
[
"count"
]
+
1
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
msg
=
"parameter file is null"
)
f
.
write
(
json
.
dumps
(
ret
,
indent
=
4
))
return
ret
# 获取文件路径
fpath
=
Path
(
config
.
get
(
"UPLOAD_PATH"
))
.
joinpath
(
params
[
"file"
])
# 判断文件是否存在
if
not
fpath
.
exists
():
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
msg
=
"file not found"
)
# 存在则读取文件内容
encode_type
=
get_encoding
(
fpath
.
resolve
()
.
as_posix
())
result
=
""
with
open
(
fpath
.
resolve
()
.
as_posix
(),
"r"
,
encoding
=
encode_type
)
as
f
:
result
=
f
.
read
()
# 判断文件类型
# 将内容以字符串形式返回给前端
return
response_result
(
ResponseCode
.
OK
,
data
=
result
)
@
api
.
route
(
"/evm"
,
methods
=
[
'GET'
,
'POST'
])
@
api
.
route
(
"/evm"
,
methods
=
[
'GET'
,
'POST'
])
def
hello_evm
():
def
hello_evm
():
...
@@ -123,7 +138,6 @@ def get_app_info(uuid):
...
@@ -123,7 +138,6 @@ def get_app_info(uuid):
res
=
item
res
=
item
break
break
print
(
res
)
return
response_result
(
ResponseCode
.
OK
,
data
=
res
)
return
response_result
(
ResponseCode
.
OK
,
data
=
res
)
@
api
.
route
(
"/store/downloadEpk/<uuid>"
,
methods
=
[
'GET'
,
'POST'
])
@
api
.
route
(
"/store/downloadEpk/<uuid>"
,
methods
=
[
'GET'
,
'POST'
])
...
@@ -142,14 +156,12 @@ def download_epk(uuid):
...
@@ -142,14 +156,12 @@ def download_epk(uuid):
'status'
:
0
,
'status'
:
0
,
'time'
:
int
(
time
.
time
())
'time'
:
int
(
time
.
time
())
})
})
print
(
res
)
return
response_result
(
ResponseCode
.
OK
,
data
=
res
)
return
response_result
(
ResponseCode
.
OK
,
data
=
res
)
@
api
.
route
(
"/opqcp"
,
methods
=
[
'POST'
])
@
api
.
route
(
"/opqcp"
,
methods
=
[
'POST'
])
def
action_opqcp
():
def
action_opqcp
():
params
=
request
.
json
params
=
request
.
json
result
,
message
=
signalManager
.
actionOpqcp
.
emit
(
params
)
result
,
message
=
signalManager
.
actionOpqcp
.
emit
(
params
)
print
(
result
)
return
response_result
(
ResponseCode
.
OK
,
msg
=
message
)
return
response_result
(
ResponseCode
.
OK
,
msg
=
message
)
...
@@ -210,7 +222,6 @@ def action_build():
...
@@ -210,7 +222,6 @@ def action_build():
fd
.
write
(
text
)
fd
.
write
(
text
)
result
=
subprocess
.
call
(
"./utils/executable -c {file}"
.
format
(
file
=
file
),
shell
=
True
)
result
=
subprocess
.
call
(
"./utils/executable -c {file}"
.
format
(
file
=
file
),
shell
=
True
)
print
(
result
)
# new_name = "{}.{}".format(Path(file).name, "bc")
# new_name = "{}.{}".format(Path(file).name, "bc")
# os.rename(os.sep.join([os.getcwd(), "executable.bc"]), os.sep.join([os.getcwd(), new_name]))
# os.rename(os.sep.join([os.getcwd(), "executable.bc"]), os.sep.join([os.getcwd(), new_name]))
# dst_files.append(Path(os.getcwd()).joinpath(new_name))
# dst_files.append(Path(os.getcwd()).joinpath(new_name))
...
@@ -378,10 +389,17 @@ def parse_header_files():
...
@@ -378,10 +389,17 @@ def parse_header_files():
# 如果有错误,则向前端提示错误
# 如果有错误,则向前端提示错误
# 如果没有错误,则向前端返回下载地址。最终需要打包成压缩文件,放到nginx负载的公网目录下
# 如果没有错误,则向前端返回下载地址。最终需要打包成压缩文件,放到nginx负载的公网目录下
params
=
request
.
form
if
not
params
:
params
=
{}
if
params
.
get
(
"type"
,
None
)
and
params
.
get
(
"type"
)
not
in
[
"evm"
,
"cffi"
]:
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
msg
=
"type value is invaild"
)
if
len
(
request
.
files
.
getlist
(
'binfile'
))
<
0
:
if
len
(
request
.
files
.
getlist
(
'binfile'
))
<
0
:
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
msg
=
"nothing upload"
)
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
msg
=
"nothing upload"
)
target_path
=
Path
(
config
.
get
(
"UPLOAD_PATH"
))
.
joinpath
(
config
.
get
(
"
UPLOAD
_DIR"
))
target_path
=
Path
(
config
.
get
(
"UPLOAD_PATH"
))
.
joinpath
(
config
.
get
(
"
TEMP
_DIR"
))
if
not
target_path
.
exists
():
if
not
target_path
.
exists
():
target_path
.
mkdir
()
target_path
.
mkdir
()
...
@@ -394,13 +412,15 @@ def parse_header_files():
...
@@ -394,13 +412,15 @@ def parse_header_files():
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
msg
=
"nothing upload..."
)
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
msg
=
"nothing upload..."
)
files
=
[]
files
=
[]
source_file_list
=
[]
for
f
in
request
.
files
.
getlist
(
'binfile'
):
for
f
in
request
.
files
.
getlist
(
'binfile'
):
target
=
target_path
.
joinpath
(
f
.
filename
)
target
=
target_path
.
joinpath
(
f
.
filename
)
if
target
.
suffix
not
in
[
".h"
]:
if
target
.
suffix
not
in
[
".h"
,
".hpp"
,
".c"
,
".cpp"
]:
continue
continue
with
open
(
target
.
resolve
()
.
as_posix
(),
"wb+"
)
as
fd
:
with
open
(
target
.
resolve
()
.
as_posix
(),
"wb+"
)
as
fd
:
fd
.
write
(
f
.
stream
.
read
())
fd
.
write
(
f
.
stream
.
read
())
files
.
append
(
target
)
files
.
append
(
target
)
source_file_list
.
append
(
target
.
relative_to
(
Path
(
config
.
get
(
"UPLOAD_PATH"
)))
.
as_posix
())
# 加载系统内置类型映射文件
# 加载系统内置类型映射文件
config_file
=
"typeconfig.json"
config_file
=
"typeconfig.json"
...
@@ -418,23 +438,41 @@ def parse_header_files():
...
@@ -418,23 +438,41 @@ def parse_header_files():
error_tips
=
[]
error_tips
=
[]
result_list
=
[]
result_list
=
[]
for
file
in
files
:
for
file
in
files
:
result
=
parse_header_file
(
file
.
resolve
()
.
as_posix
(),
undefined_type
,
error_tips
)
result
=
parse_header_file
(
file
.
resolve
()
.
as_posix
(),
undefined_type
,
error_tips
,
target_path
.
resolve
()
.
as_posix
()
)
if
result
!=
None
:
if
result
!=
None
:
target
=
target_path
.
joinpath
(
"analyze.{}.json"
.
format
(
file
.
name
))
source_file_list
.
append
(
target
.
relative_to
(
Path
(
config
.
get
(
"UPLOAD_PATH"
)))
.
as_posix
())
target
=
target_path
.
joinpath
(
"generate.{}.json"
.
format
(
file
.
name
))
with
open
(
target
.
resolve
()
.
as_posix
(),
"w+"
,
encoding
=
"utf-8"
)
as
f
:
f
.
write
(
json
.
dumps
(
result
,
indent
=
2
))
source_file_list
.
append
(
target
.
relative_to
(
Path
(
config
.
get
(
"UPLOAD_PATH"
)))
.
as_posix
())
target
=
target_path
.
joinpath
(
"{}.json"
.
format
(
file
.
name
))
target
=
target_path
.
joinpath
(
"{}.json"
.
format
(
file
.
name
))
with
open
(
target
.
resolve
()
.
as_posix
(),
"w+"
,
encoding
=
"utf-8"
)
as
f
:
with
open
(
target
.
resolve
()
.
as_posix
(),
"w+"
,
encoding
=
"utf-8"
)
as
f
:
f
.
write
(
json
.
dumps
(
result
))
f
.
write
(
json
.
dumps
(
result
))
if
params
.
get
(
"name"
,
None
)
!=
None
and
len
(
files
)
<=
1
:
result
[
"name"
]
=
params
.
get
(
"name"
)
result_list
.
append
(
result
)
result_list
.
append
(
result
)
source_file_list
.
append
(
target
.
relative_to
(
Path
(
config
.
get
(
"UPLOAD_PATH"
)))
.
as_posix
())
target_dir
=
Path
(
config
.
get
(
"UPLOAD_PATH"
))
.
joinpath
(
config
.
get
(
"TEMP_DIR"
))
.
resolve
()
.
as_posix
()
target_dir
=
target_path
.
parent
if
len
(
result_list
)
>
0
:
if
len
(
result_list
)
>
0
:
path_list
=
generate_from_list
(
result_list
)
path_list
=
generate_from_list
(
result_list
,
params
[
"type"
],
target_path
.
resolve
()
.
as_posix
())
target_file
=
compress_files
(
path_list
,
target_dir
)
target_file
=
compress_files
(
path_list
,
target_dir
.
resolve
()
.
as_posix
())
for
file
in
path_list
:
source_file_list
.
append
(
Path
(
file
[
"c"
])
.
relative_to
(
Path
(
config
.
get
(
"UPLOAD_PATH"
)))
.
as_posix
())
source_file_list
.
append
(
Path
(
file
[
"h"
])
.
relative_to
(
Path
(
config
.
get
(
"UPLOAD_PATH"
)))
.
as_posix
())
source_file_list
.
append
(
Path
(
file
[
"j"
])
.
relative_to
(
Path
(
config
.
get
(
"UPLOAD_PATH"
)))
.
as_posix
())
if
len
(
undefined_type
)
>
0
:
# 说明有用户自定义的类型,需要用户标注这些类型
if
len
(
undefined_type
)
>
0
:
# 说明有用户自定义的类型,需要用户标注这些类型
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
data
=
{
'undefined_type'
:
undefined_type
,
'dir'
:
target_path
.
name
},
msg
=
error_tips
)
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
data
=
{
'undefined_type'
:
undefined_type
,
'dir'
:
target_path
.
name
},
msg
=
error_tips
)
else
:
# 没啥问题,返回下载地址给前端
else
:
# 没啥问题,返回下载地址给前端
target_file
=
Path
(
target_file
)
.
relative_to
(
Path
(
config
.
get
(
"UPLOAD_PATH"
)))
.
as_posix
()
target_file
=
Path
(
target_file
)
.
relative_to
(
Path
(
config
.
get
(
"UPLOAD_PATH"
)))
return
response_result
(
ResponseCode
.
OK
,
data
=
{
"filename"
:
os
.
path
.
basename
(
target_file
),
"url"
:
target_file
})
data
=
{
"file"
:
target_file
.
name
,
"url"
:
target_file
.
as_posix
(),
"parent"
:
target_path
.
relative_to
(
target_dir
.
parent
)
.
as_posix
(),
"sources"
:
source_file_list
}
return
response_result
(
ResponseCode
.
OK
,
data
=
data
)
except
Exception
as
e
:
except
Exception
as
e
:
traceback
.
print_exc
()
traceback
.
print_exc
()
logger
.
error
(
str
(
e
))
logger
.
error
(
str
(
e
))
...
@@ -453,6 +491,9 @@ def process_parse():
...
@@ -453,6 +491,9 @@ def process_parse():
if
len
(
params
)
<=
0
:
if
len
(
params
)
<=
0
:
return
response_result
(
ResponseCode
.
PARAMETER_NULL
)
return
response_result
(
ResponseCode
.
PARAMETER_NULL
)
if
params
.
get
(
"module"
,
None
)
and
params
.
get
(
"module"
)
not
in
[
"evm"
,
"cffi"
]:
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
msg
=
"module value is invaild"
)
target_dir
=
Path
(
config
.
get
(
"UPLOAD_PATH"
))
.
joinpath
(
config
.
get
(
"TEMP_DIR"
))
.
joinpath
(
params
[
"dir"
])
target_dir
=
Path
(
config
.
get
(
"UPLOAD_PATH"
))
.
joinpath
(
config
.
get
(
"TEMP_DIR"
))
.
joinpath
(
params
[
"dir"
])
if
not
target_dir
.
exists
():
if
not
target_dir
.
exists
():
return
response_result
(
ResponseCode
.
INVAILD_REQUEST
,
msg
=
"target directory not exists"
)
return
response_result
(
ResponseCode
.
INVAILD_REQUEST
,
msg
=
"target directory not exists"
)
...
@@ -480,26 +521,45 @@ def process_parse():
...
@@ -480,26 +521,45 @@ def process_parse():
undefined_type
=
[]
undefined_type
=
[]
error_tips
=
[]
error_tips
=
[]
result_list
=
[]
result_list
=
[]
source_file_list
=
[]
for
root
,
dirs
,
files
in
os
.
walk
(
target_dir
.
resolve
()
.
as_posix
()):
for
root
,
dirs
,
files
in
os
.
walk
(
target_dir
.
resolve
()
.
as_posix
()):
target_
file
=
Path
(
root
)
target_
path
=
Path
(
root
)
for
file
in
files
:
for
file
in
files
:
target_file
=
target_
file
.
joinpath
(
file
)
target_file
=
target_
path
.
joinpath
(
file
)
if
target_file
.
exists
():
if
target_file
.
exists
():
result
=
parse_header_file
(
target_file
.
resolve
()
.
as_posix
(),
undefined_type
,
error_tips
)
result
=
parse_header_file
(
target_file
.
resolve
()
.
as_posix
(),
undefined_type
,
error_tips
,
root
)
if
result
!=
None
:
if
result
!=
None
:
target
=
target_path
.
joinpath
(
"analyze.{}.json"
.
format
(
file
.
name
))
source_file_list
.
append
(
target
.
relative_to
(
Path
(
config
.
get
(
"UPLOAD_PATH"
)))
.
as_posix
())
target
=
target_path
.
joinpath
(
"generate.{}.json"
.
format
(
file
.
name
))
with
open
(
target
.
resolve
()
.
as_posix
(),
"w+"
,
encoding
=
"utf-8"
)
as
f
:
f
.
write
(
json
.
dumps
(
result
,
indent
=
2
))
source_file_list
.
append
(
target
.
relative_to
(
Path
(
config
.
get
(
"UPLOAD_PATH"
)))
.
as_posix
())
target
=
target_file
.
parent
.
joinpath
(
"{}.json"
.
format
(
target_file
.
name
))
target
=
target_file
.
parent
.
joinpath
(
"{}.json"
.
format
(
target_file
.
name
))
with
open
(
target
.
resolve
()
.
as_posix
(),
"w+"
,
encoding
=
"utf-8"
)
as
f
:
with
open
(
target
.
resolve
()
.
as_posix
(),
"w+"
,
encoding
=
"utf-8"
)
as
f
:
f
.
write
(
json
.
dumps
(
result
))
f
.
write
(
json
.
dumps
(
result
))
if
params
.
get
(
"name"
,
None
)
and
len
(
files
)
<=
1
:
result
[
"name"
]
=
params
.
get
(
"name"
)
result_list
.
append
(
result
)
result_list
.
append
(
result
)
source_file_list
.
append
(
target
.
relative_to
(
Path
(
config
.
get
(
"UPLOAD_PATH"
)))
.
as_posix
())
source_file_list
.
append
(
file
)
target_dir
=
Path
(
config
.
get
(
"UPLOAD_PATH"
))
.
joinpath
(
config
.
get
(
"UPLOAD_DIR"
))
.
resolve
()
.
as_posix
()
if
len
(
result_list
)
>
0
:
if
len
(
result_list
)
>
0
:
path_list
=
generate_from_list
(
result_list
)
path_list
=
generate_from_list
(
result_list
,
params
[
"module"
],
target_dir
.
resolve
()
.
as_posix
())
target_dir
=
Path
(
config
.
get
(
"UPLOAD_PATH"
))
.
joinpath
(
config
.
get
(
"UPLOAD_DIR"
))
.
resolve
()
.
as_posix
()
target_file
=
compress_files
(
path_list
,
target_dir
)
target_file
=
compress_files
(
path_list
,
target_dir
)
for
file
in
path_list
:
source_file_list
.
append
(
Path
(
file
[
"c"
])
.
relative_to
(
Path
(
config
.
get
(
"UPLOAD_PATH"
)))
.
as_posix
())
source_file_list
.
append
(
Path
(
file
[
"h"
])
.
relative_to
(
Path
(
config
.
get
(
"UPLOAD_PATH"
)))
.
as_posix
())
source_file_list
.
append
(
Path
(
file
[
"j"
])
.
relative_to
(
Path
(
config
.
get
(
"UPLOAD_PATH"
)))
.
as_posix
())
if
len
(
undefined_type
)
<=
0
:
if
len
(
undefined_type
)
<=
0
:
target_file
=
Path
(
target_file
)
.
relative_to
(
Path
(
config
.
get
(
"UPLOAD_PATH"
)))
.
as_posix
()
target_file
=
Path
(
target_file
)
.
relative_to
(
Path
(
config
.
get
(
"UPLOAD_PATH"
)))
return
response_result
(
ResponseCode
.
OK
,
data
=
{
"file
name"
:
os
.
path
.
basename
(
target_file
),
"url"
:
target_file
})
return
response_result
(
ResponseCode
.
OK
,
data
=
{
"file
"
:
target_file
.
name
,
"url"
:
target_file
.
as_posix
(),
"parent"
:
target_file
.
resolve
()
.
as_posix
(),
"sources"
:
source_file_list
})
else
:
else
:
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
data
=
{
'undefined_type'
:
undefined_type
,
'dir'
:
params
[
"dir"
]
},
msg
=
error_tips
)
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
data
=
{
'undefined_type'
:
undefined_type
,
'dir'
:
params
[
"dir"
]
},
msg
=
error_tips
)
except
Exception
as
e
:
except
Exception
as
e
:
...
...
evm_module_tools
@
55b1249c
Subproject commit
0ec1baa3d93da20ef57c3dd937c19ac80bf9abad
Subproject commit
55b1249c57b4912e8fe706d87620889b3f97bdc2
frontend/package-lock.json
View file @
ab4625f5
...
@@ -2113,11 +2113,6 @@
...
@@ -2113,11 +2113,6 @@
"@hapi/hoek"
:
"^8.3.0"
"@hapi/hoek"
:
"^8.3.0"
}
}
},
},
"@interactjs/types"
:
{
"version"
:
"1.9.22"
,
"resolved"
:
"https://registry.npm.taobao.org/@interactjs/types/download/@interactjs/types-1.9.22.tgz"
,
"integrity"
:
"sha512-GMMMCYE+FPrKCOOOqQ/ImpqLyinb6e8psw9MR9ymTJxnkmJMKrY/GDC/187PVxpWdtSqW+GibkeRfUCOv6vFjg=="
},
"@intervolga/optimize-cssnano-plugin"
:
{
"@intervolga/optimize-cssnano-plugin"
:
{
"version"
:
"1.0.6"
,
"version"
:
"1.0.6"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz"
,
...
@@ -2738,16 +2733,6 @@
...
@@ -2738,16 +2733,6 @@
"integrity"
:
"sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="
,
"integrity"
:
"sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="
,
"dev"
:
true
"dev"
:
true
},
},
"ansi-styles"
:
{
"version"
:
"4.3.0"
,
"resolved"
:
"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
,
"integrity"
:
"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"color-convert"
:
"^2.0.1"
}
},
"cacache"
:
{
"cacache"
:
{
"version"
:
"13.0.1"
,
"version"
:
"13.0.1"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/cacache/-/cacache-13.0.1.tgz"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/cacache/-/cacache-13.0.1.tgz"
,
...
@@ -2785,23 +2770,6 @@
...
@@ -2785,23 +2770,6 @@
"wrap-ansi"
:
"^6.2.0"
"wrap-ansi"
:
"^6.2.0"
}
}
},
},
"color-convert"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
,
"integrity"
:
"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"color-name"
:
"~1.1.4"
}
},
"color-name"
:
{
"version"
:
"1.1.4"
,
"resolved"
:
"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
,
"integrity"
:
"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
,
"dev"
:
true
,
"optional"
:
true
},
"css-loader"
:
{
"css-loader"
:
{
"version"
:
"3.6.0"
,
"version"
:
"3.6.0"
,
"resolved"
:
"https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz"
,
"resolved"
:
"https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz"
,
...
@@ -2823,13 +2791,6 @@
...
@@ -2823,13 +2791,6 @@
"semver"
:
"^6.3.0"
"semver"
:
"^6.3.0"
}
}
},
},
"emojis-list"
:
{
"version"
:
"3.0.0"
,
"resolved"
:
"https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz"
,
"integrity"
:
"sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
,
"dev"
:
true
,
"optional"
:
true
},
"fast-deep-equal"
:
{
"fast-deep-equal"
:
{
"version"
:
"3.1.3"
,
"version"
:
"3.1.3"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
,
...
@@ -2931,60 +2892,6 @@
...
@@ -2931,60 +2892,6 @@
"terser"
:
"^4.6.12"
,
"terser"
:
"^4.6.12"
,
"webpack-sources"
:
"^1.4.3"
"webpack-sources"
:
"^1.4.3"
}
}
},
"vue-loader-v16"
:
{
"version"
:
"npm:vue-loader@16.1.2"
,
"resolved"
:
"https://registry.npmjs.org/vue-loader/-/vue-loader-16.1.2.tgz"
,
"integrity"
:
"sha512-8QTxh+Fd+HB6fiL52iEVLKqE9N1JSlMXLR92Ijm6g8PZrwIxckgpqjPDWRP5TWxdiPaHR+alUWsnu1ShQOwt+Q=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"chalk"
:
"^4.1.0"
,
"hash-sum"
:
"^2.0.0"
,
"loader-utils"
:
"^2.0.0"
},
"dependencies"
:
{
"chalk"
:
{
"version"
:
"4.1.0"
,
"resolved"
:
"https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz"
,
"integrity"
:
"sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"ansi-styles"
:
"^4.1.0"
,
"supports-color"
:
"^7.1.0"
}
},
"has-flag"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
,
"integrity"
:
"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
,
"dev"
:
true
,
"optional"
:
true
},
"loader-utils"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz"
,
"integrity"
:
"sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"big.js"
:
"^5.2.2"
,
"emojis-list"
:
"^3.0.0"
,
"json5"
:
"^2.1.2"
}
},
"supports-color"
:
{
"version"
:
"7.2.0"
,
"resolved"
:
"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
,
"integrity"
:
"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"has-flag"
:
"^4.0.0"
}
}
}
}
}
}
}
},
},
...
@@ -3939,11 +3846,6 @@
...
@@ -3939,11 +3846,6 @@
"integrity"
:
"sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY="
,
"integrity"
:
"sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY="
,
"dev"
:
true
"dev"
:
true
},
},
"batch-processor"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz"
,
"integrity"
:
"sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg="
},
"bcrypt-pbkdf"
:
{
"bcrypt-pbkdf"
:
{
"version"
:
"1.0.2"
,
"version"
:
"1.0.2"
,
"resolved"
:
"http://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz"
,
"resolved"
:
"http://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz"
,
...
@@ -4852,7 +4754,6 @@
...
@@ -4852,7 +4754,6 @@
"component-emitter"
:
{
"component-emitter"
:
{
"version"
:
"1.3.0"
,
"version"
:
"1.3.0"
,
"resolved"
:
"https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz"
,
"resolved"
:
"https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz"
,
"integrity"
:
"sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
,
"dev"
:
true
"dev"
:
true
},
},
"compressible"
:
{
"compressible"
:
{
...
@@ -6128,14 +6029,6 @@
...
@@ -6128,14 +6029,6 @@
"safer-buffer"
:
"^2.1.0"
"safer-buffer"
:
"^2.1.0"
}
}
},
},
"echarts"
:
{
"version"
:
"4.8.0"
,
"resolved"
:
"https://registry.npm.taobao.org/echarts/download/echarts-4.8.0.tgz"
,
"integrity"
:
"sha1-ssHPuSKbE9No7hBPyO6mALV01MQ="
,
"requires"
:
{
"zrender"
:
"4.3.1"
}
},
"ee-first"
:
{
"ee-first"
:
{
"version"
:
"1.1.1"
,
"version"
:
"1.1.1"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/ee-first/-/ee-first-1.1.1.tgz"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/ee-first/-/ee-first-1.1.1.tgz"
,
...
@@ -6171,14 +6064,6 @@
...
@@ -6171,14 +6064,6 @@
"integrity"
:
"sha512-bsVCsONiVX1abkWdH7KtpuDAhsQ3N3bjPYhROSAXE78roJKet0Y5wznA14JE9pzbwSZmSMAW6KiKYf1RvbTJkA=="
,
"integrity"
:
"sha512-bsVCsONiVX1abkWdH7KtpuDAhsQ3N3bjPYhROSAXE78roJKet0Y5wznA14JE9pzbwSZmSMAW6KiKYf1RvbTJkA=="
,
"dev"
:
true
"dev"
:
true
},
},
"element-resize-detector"
:
{
"version"
:
"1.2.1"
,
"resolved"
:
"https://registry.npm.taobao.org/element-resize-detector/download/element-resize-detector-1.2.1.tgz"
,
"integrity"
:
"sha512-BdFsPepnQr9fznNPF9nF4vQ457U/ZJXQDSNF1zBe7yaga8v9AdZf3/NElYxFdUh7SitSGt040QygiTo6dtatIw=="
,
"requires"
:
{
"batch-processor"
:
"1.0.0"
}
},
"element-ui"
:
{
"element-ui"
:
{
"version"
:
"2.13.0"
,
"version"
:
"2.13.0"
,
"resolved"
:
"https://registry.npm.taobao.org/element-ui/download/element-ui-2.13.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felement-ui%2Fdownload%2Felement-ui-2.13.0.tgz"
,
"resolved"
:
"https://registry.npm.taobao.org/element-ui/download/element-ui-2.13.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felement-ui%2Fdownload%2Felement-ui-2.13.0.tgz"
,
...
@@ -7131,11 +7016,6 @@
...
@@ -7131,11 +7016,6 @@
"schema-utils"
:
"^2.5.0"
"schema-utils"
:
"^2.5.0"
}
}
},
},
"file-saver"
:
{
"version"
:
"2.0.5"
,
"resolved"
:
"https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz"
,
"integrity"
:
"sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
},
"file-uri-to-path"
:
{
"file-uri-to-path"
:
{
"version"
:
"1.0.0"
,
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz"
,
"resolved"
:
"https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz"
,
...
@@ -8030,11 +7910,6 @@
...
@@ -8030,11 +7910,6 @@
"integrity"
:
"sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w="
,
"integrity"
:
"sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w="
,
"dev"
:
true
"dev"
:
true
},
},
"immediate"
:
{
"version"
:
"3.0.6"
,
"resolved"
:
"https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz"
,
"integrity"
:
"sha1-nbHb0Pr43m++D13V5Wu2BigN5ps="
},
"import-cwd"
:
{
"import-cwd"
:
{
"version"
:
"2.1.0"
,
"version"
:
"2.1.0"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/import-cwd/-/import-cwd-2.1.0.tgz"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/import-cwd/-/import-cwd-2.1.0.tgz"
,
...
@@ -8250,14 +8125,6 @@
...
@@ -8250,14 +8125,6 @@
}
}
}
}
},
},
"interactjs"
:
{
"version"
:
"1.9.22"
,
"resolved"
:
"https://registry.npm.taobao.org/interactjs/download/interactjs-1.9.22.tgz"
,
"integrity"
:
"sha512-zUQefYtYJTazWKqDCSYV0vMJPFWp/PKXwpA3v75fD3+4+4J3/ItjlO7K3L1CpNWYU6s8uoEmwwOD6uDy6OoI/w=="
,
"requires"
:
{
"@interactjs/types"
:
"1.9.22"
}
},
"internal-ip"
:
{
"internal-ip"
:
{
"version"
:
"4.3.0"
,
"version"
:
"4.3.0"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/internal-ip/-/internal-ip-4.3.0.tgz"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/internal-ip/-/internal-ip-4.3.0.tgz"
,
...
@@ -8605,8 +8472,7 @@
...
@@ -8605,8 +8472,7 @@
},
},
"isobject"
:
{
"isobject"
:
{
"version"
:
"3.0.1"
,
"version"
:
"3.0.1"
,
"resolved"
:
"https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz"
,
"resolved"
:
"https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz"
"integrity"
:
"sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg=="
},
},
"isstream"
:
{
"isstream"
:
{
"version"
:
"0.1.2"
,
"version"
:
"0.1.2"
,
...
@@ -8656,11 +8522,6 @@
...
@@ -8656,11 +8522,6 @@
"resolved"
:
"https://registry.npm.taobao.org/js-cookie/download/js-cookie-2.2.1.tgz?cache=0&sync_timestamp=1576061496440&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-cookie%2Fdownload%2Fjs-cookie-2.2.1.tgz"
,
"resolved"
:
"https://registry.npm.taobao.org/js-cookie/download/js-cookie-2.2.1.tgz?cache=0&sync_timestamp=1576061496440&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-cookie%2Fdownload%2Fjs-cookie-2.2.1.tgz"
,
"integrity"
:
"sha1-aeEG3F1YBolFYpAqpbrsN0Tpsrg="
"integrity"
:
"sha1-aeEG3F1YBolFYpAqpbrsN0Tpsrg="
},
},
"js-md5"
:
{
"version"
:
"0.7.3"
,
"resolved"
:
"https://registry.npmjs.org/js-md5/-/js-md5-0.7.3.tgz"
,
"integrity"
:
"sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ=="
},
"js-message"
:
{
"js-message"
:
{
"version"
:
"1.0.7"
,
"version"
:
"1.0.7"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/js-message/-/js-message-1.0.7.tgz"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/js-message/-/js-message-1.0.7.tgz"
,
...
@@ -8771,17 +8632,6 @@
...
@@ -8771,17 +8632,6 @@
"verror"
:
"1.10.0"
"verror"
:
"1.10.0"
}
}
},
},
"jszip"
:
{
"version"
:
"3.6.0"
,
"resolved"
:
"https://registry.npmjs.org/jszip/-/jszip-3.6.0.tgz"
,
"integrity"
:
"sha512-jgnQoG9LKnWO3mnVNBnfhkh0QknICd1FGSrXcgrl67zioyJ4wgx25o9ZqwNtrROSflGBCGYnJfjrIyRIby1OoQ=="
,
"requires"
:
{
"lie"
:
"~3.3.0"
,
"pako"
:
"~1.0.2"
,
"readable-stream"
:
"~2.3.6"
,
"set-immediate-shim"
:
"~1.0.1"
}
},
"killable"
:
{
"killable"
:
{
"version"
:
"1.0.1"
,
"version"
:
"1.0.1"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/killable/-/killable-1.0.1.tgz"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/killable/-/killable-1.0.1.tgz"
,
...
@@ -8937,14 +8787,6 @@
...
@@ -8937,14 +8787,6 @@
"type-check"
:
"~0.4.0"
"type-check"
:
"~0.4.0"
}
}
},
},
"lie"
:
{
"version"
:
"3.3.0"
,
"resolved"
:
"https://registry.npmjs.org/lie/-/lie-3.3.0.tgz"
,
"integrity"
:
"sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ=="
,
"requires"
:
{
"immediate"
:
"~3.0.5"
}
},
"lines-and-columns"
:
{
"lines-and-columns"
:
{
"version"
:
"1.1.6"
,
"version"
:
"1.1.6"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/lines-and-columns/-/lines-and-columns-1.1.6.tgz"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/lines-and-columns/-/lines-and-columns-1.1.6.tgz"
,
...
@@ -9461,7 +9303,6 @@
...
@@ -9461,7 +9303,6 @@
"mixin-deep"
:
{
"mixin-deep"
:
{
"version"
:
"1.3.2"
,
"version"
:
"1.3.2"
,
"resolved"
:
"https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz"
,
"resolved"
:
"https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz"
,
"integrity"
:
"sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA=="
,
"dev"
:
true
,
"dev"
:
true
,
"requires"
:
{
"requires"
:
{
"for-in"
:
"^1.0.2"
,
"for-in"
:
"^1.0.2"
,
...
@@ -9500,6 +9341,11 @@
...
@@ -9500,6 +9341,11 @@
"resolved"
:
"https://registry.npmjs.org/moment/-/moment-2.29.1.tgz"
,
"resolved"
:
"https://registry.npmjs.org/moment/-/moment-2.29.1.tgz"
,
"integrity"
:
"sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
"integrity"
:
"sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
},
},
"monaco-editor"
:
{
"version"
:
"0.30.1"
,
"resolved"
:
"https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.30.1.tgz"
,
"integrity"
:
"sha512-B/y4+b2O5G2gjuxIFtCE2EkM17R2NM7/3F8x0qcPsqy4V83bitJTIO4TIeZpYlzu/xy6INiY/+84BEm6+7Cmzg=="
},
"move-concurrently"
:
{
"move-concurrently"
:
{
"version"
:
"1.0.1"
,
"version"
:
"1.0.1"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/move-concurrently/-/move-concurrently-1.0.1.tgz"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/move-concurrently/-/move-concurrently-1.0.1.tgz"
,
...
@@ -10226,7 +10072,8 @@
...
@@ -10226,7 +10072,8 @@
"pako"
:
{
"pako"
:
{
"version"
:
"1.0.11"
,
"version"
:
"1.0.11"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/pako/-/pako-1.0.11.tgz"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/pako/-/pako-1.0.11.tgz"
,
"integrity"
:
"sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
"integrity"
:
"sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
,
"dev"
:
true
},
},
"parallel-transform"
:
{
"parallel-transform"
:
{
"version"
:
"1.2.0"
,
"version"
:
"1.2.0"
,
...
@@ -10322,7 +10169,6 @@
...
@@ -10322,7 +10169,6 @@
"pascalcase"
:
{
"pascalcase"
:
{
"version"
:
"0.1.1"
,
"version"
:
"0.1.1"
,
"resolved"
:
"https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz"
,
"resolved"
:
"https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz"
,
"integrity"
:
"sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw=="
,
"dev"
:
true
"dev"
:
true
},
},
"path-browserify"
:
{
"path-browserify"
:
{
...
@@ -10405,11 +10251,6 @@
...
@@ -10405,11 +10251,6 @@
"resolved"
:
"http://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz"
,
"resolved"
:
"http://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz"
,
"integrity"
:
"sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
"integrity"
:
"sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
},
"photoswipe"
:
{
"version"
:
"4.1.3"
,
"resolved"
:
"https://registry.npmjs.org/photoswipe/-/photoswipe-4.1.3.tgz"
,
"integrity"
:
"sha512-89Z43IRUyw7ycTolo+AaiDn3W1EEIfox54hERmm9bI12IB9cvRfHSHez3XhAyU8XW2EAFrC+2sKMhh7SJwn0bA=="
},
"picomatch"
:
{
"picomatch"
:
{
"version"
:
"2.2.2"
,
"version"
:
"2.2.2"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/picomatch/-/picomatch-2.2.2.tgz"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/picomatch/-/picomatch-2.2.2.tgz"
,
...
@@ -10485,7 +10326,7 @@
...
@@ -10485,7 +10326,7 @@
"version"
:
"github:sampotts/plyr#028be22dec323b23727315ef0c34682192991488"
,
"version"
:
"github:sampotts/plyr#028be22dec323b23727315ef0c34682192991488"
,
"from"
:
"github:sampotts/plyr#develop"
,
"from"
:
"github:sampotts/plyr#develop"
,
"requires"
:
{
"requires"
:
{
"core-js"
:
"^3.
8
.1"
,
"core-js"
:
"^3.
10
.1"
,
"custom-event-polyfill"
:
"^1.0.7"
,
"custom-event-polyfill"
:
"^1.0.7"
,
"loadjs"
:
"^4.2.0"
,
"loadjs"
:
"^4.2.0"
,
"rangetouch"
:
"^2.0.1"
,
"rangetouch"
:
"^2.0.1"
,
...
@@ -12471,11 +12312,6 @@
...
@@ -12471,11 +12312,6 @@
"resolved"
:
"http://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz"
,
"resolved"
:
"http://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz"
,
"integrity"
:
"sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
"integrity"
:
"sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
},
},
"set-immediate-shim"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz"
,
"integrity"
:
"sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E="
},
"set-value"
:
{
"set-value"
:
{
"version"
:
"2.0.1"
,
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npm.taobao.org/set-value/download/set-value-2.0.1.tgz"
,
"resolved"
:
"https://registry.npm.taobao.org/set-value/download/set-value-2.0.1.tgz"
,
...
@@ -13592,7 +13428,6 @@
...
@@ -13592,7 +13428,6 @@
"tapable"
:
{
"tapable"
:
{
"version"
:
"1.1.3"
,
"version"
:
"1.1.3"
,
"resolved"
:
"https://registry.npm.taobao.org/tapable/download/tapable-1.1.3.tgz"
,
"resolved"
:
"https://registry.npm.taobao.org/tapable/download/tapable-1.1.3.tgz"
,
"integrity"
:
"sha1-ofzMBrWNth/XpF2i2kT186Pme6I="
,
"dev"
:
true
"dev"
:
true
},
},
"tar"
:
{
"tar"
:
{
...
@@ -13790,7 +13625,6 @@
...
@@ -13790,7 +13625,6 @@
"to-fast-properties"
:
{
"to-fast-properties"
:
{
"version"
:
"2.0.0"
,
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz"
,
"resolved"
:
"https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz"
,
"integrity"
:
"sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
,
"dev"
:
true
"dev"
:
true
},
},
"to-object-path"
:
{
"to-object-path"
:
{
...
@@ -14323,15 +14157,6 @@
...
@@ -14323,15 +14157,6 @@
}
}
}
}
},
},
"vue-grid-layout"
:
{
"version"
:
"2.3.8"
,
"resolved"
:
"https://registry.npm.taobao.org/vue-grid-layout/download/vue-grid-layout-2.3.8.tgz"
,
"integrity"
:
"sha1-R+SowW3548kX+MFC+G+3BZToazw="
,
"requires"
:
{
"element-resize-detector"
:
"^1.1.15"
,
"interactjs"
:
"^1.6.3"
}
},
"vue-hot-reload-api"
:
{
"vue-hot-reload-api"
:
{
"version"
:
"2.3.4"
,
"version"
:
"2.3.4"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz"
,
"resolved"
:
"https://mirrors.huaweicloud.com/repository/npm/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz"
,
...
@@ -14359,6 +14184,94 @@
...
@@ -14359,6 +14184,94 @@
}
}
}
}
},
},
"vue-loader-v16"
:
{
"version"
:
"npm:vue-loader@16.8.3"
,
"resolved"
:
"https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz"
,
"integrity"
:
"sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"chalk"
:
"^4.1.0"
,
"hash-sum"
:
"^2.0.0"
,
"loader-utils"
:
"^2.0.0"
},
"dependencies"
:
{
"ansi-styles"
:
{
"version"
:
"4.3.0"
,
"resolved"
:
"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
,
"integrity"
:
"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"color-convert"
:
"^2.0.1"
}
},
"chalk"
:
{
"version"
:
"4.1.2"
,
"resolved"
:
"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
,
"integrity"
:
"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"ansi-styles"
:
"^4.1.0"
,
"supports-color"
:
"^7.1.0"
}
},
"color-convert"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
,
"integrity"
:
"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"color-name"
:
"~1.1.4"
}
},
"color-name"
:
{
"version"
:
"1.1.4"
,
"resolved"
:
"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
,
"integrity"
:
"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
,
"dev"
:
true
,
"optional"
:
true
},
"emojis-list"
:
{
"version"
:
"3.0.0"
,
"resolved"
:
"https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz"
,
"integrity"
:
"sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
,
"dev"
:
true
,
"optional"
:
true
},
"has-flag"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
,
"integrity"
:
"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
,
"dev"
:
true
,
"optional"
:
true
},
"loader-utils"
:
{
"version"
:
"2.0.2"
,
"resolved"
:
"https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz"
,
"integrity"
:
"sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"big.js"
:
"^5.2.2"
,
"emojis-list"
:
"^3.0.0"
,
"json5"
:
"^2.1.2"
}
},
"supports-color"
:
{
"version"
:
"7.2.0"
,
"resolved"
:
"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
,
"integrity"
:
"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"has-flag"
:
"^4.0.0"
}
}
}
},
"vue-plyr"
:
{
"vue-plyr"
:
{
"version"
:
"7.0.0"
,
"version"
:
"7.0.0"
,
"resolved"
:
"https://registry.npmjs.org/vue-plyr/-/vue-plyr-7.0.0.tgz"
,
"resolved"
:
"https://registry.npmjs.org/vue-plyr/-/vue-plyr-7.0.0.tgz"
,
...
@@ -15241,11 +15154,6 @@
...
@@ -15241,11 +15154,6 @@
"dev"
:
true
"dev"
:
true
}
}
}
}
},
"zrender"
:
{
"version"
:
"4.3.1"
,
"resolved"
:
"https://registry.npm.taobao.org/zrender/download/zrender-4.3.1.tgz"
,
"integrity"
:
"sha1-uviqbcgYei+BlpLX1fm+36K5D6M="
}
}
}
}
}
}
frontend/package.json
View file @
ab4625f5
...
@@ -20,6 +20,7 @@
...
@@ -20,6 +20,7 @@
"local-storage"
:
"^2.0.0"
,
"local-storage"
:
"^2.0.0"
,
"mockjs"
:
"^1.1.0"
,
"mockjs"
:
"^1.1.0"
,
"moment"
:
"^2.29.1"
,
"moment"
:
"^2.29.1"
,
"monaco-editor"
:
"^0.30.1"
,
"node-sass"
:
"^4.14.1"
,
"node-sass"
:
"^4.14.1"
,
"normalize.css"
:
"^8.0.1"
,
"normalize.css"
:
"^8.0.1"
,
"nprogress"
:
"^0.2.0"
,
"nprogress"
:
"^0.2.0"
,
...
@@ -30,6 +31,7 @@
...
@@ -30,6 +31,7 @@
"vue-count-to"
:
"^1.0.13"
,
"vue-count-to"
:
"^1.0.13"
,
"vue-grid-layout"
:
"^2.3.12"
,
"vue-grid-layout"
:
"^2.3.12"
,
"vue-loading-spinner"
:
"^1.0.11"
,
"vue-loading-spinner"
:
"^1.0.11"
,
"vue-monaco-editor"
:
"^0.0.19"
,
"vue-plyr"
:
"^7.0.0"
,
"vue-plyr"
:
"^7.0.0"
,
"vue-router"
:
"^3.1.3"
,
"vue-router"
:
"^3.1.3"
,
"vue-star-rating"
:
"^1.7.0"
,
"vue-star-rating"
:
"^1.7.0"
,
...
...
frontend/src/api/store.js
View file @
ab4625f5
...
@@ -32,6 +32,14 @@ export function postByteCodeFile(data) {
...
@@ -32,6 +32,14 @@ export function postByteCodeFile(data) {
});
});
}
}
export
function
getFileContent
(
data
)
{
return
request
({
url
:
"
/api/v1/evm_store/system/getFileContent
"
,
method
:
"
post
"
,
data
});
}
export
function
postCHeaderFile
(
data
)
{
export
function
postCHeaderFile
(
data
)
{
return
request
({
return
request
({
url
:
"
/api/v1/evm_store/system/parseCHeader
"
,
url
:
"
/api/v1/evm_store/system/parseCHeader
"
,
...
...
frontend/src/views/system/evm-module-tool.vue
View file @
ab4625f5
...
@@ -8,6 +8,8 @@
...
@@ -8,6 +8,8 @@
</div>
</div>
<el-tabs
v-model=
"activeName"
type=
"border-card"
>
<el-tabs
v-model=
"activeName"
type=
"border-card"
>
<el-tab-pane
label=
"解析文件"
name=
"first"
>
<el-tab-pane
label=
"解析文件"
name=
"first"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"8"
>
<div
style=
"margin: 10px 0px"
>
<div
style=
"margin: 10px 0px"
>
<el-form>
<el-form>
<el-form-item>
<el-form-item>
...
@@ -28,11 +30,60 @@
...
@@ -28,11 +30,60 @@
<div
class=
"el-upload__tip"
slot=
"tip"
>
请选择C头文件
</div>
<div
class=
"el-upload__tip"
slot=
"tip"
>
请选择C头文件
</div>
</el-upload>
</el-upload>
</el-form-item>
</el-form-item>
<el-form-item
label=
"模块名称"
>
<el-input
v-model=
"form.name"
placeholder=
"请输入模块名称,不填则以文件名为准"
></el-input>
</el-form-item>
<el-form-item
label=
"注册类型"
>
<el-select
v-model=
"form.type"
placeholder=
"请选择"
>
<el-option
v-for=
"item in optionList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-form-item>
<el-button
@
click=
"uploadFile"
>
开始上传
</el-button>
<el-button
@
click=
"uploadFile"
>
开始上传
</el-button>
<el-button
@
click=
"handleDownloadFile"
>
下载文件
</el-button>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
</div>
</div>
</el-col>
<el-col
:span=
"16"
>
<div
style=
"margin: 10px"
>
<el-select
v-model=
"form.file"
placeholder=
"请选择文件"
@
change=
"onFileChange"
>
<el-option
v-for=
"(item, index) in newFileList"
:key=
"index"
:label=
"item"
:value=
"item"
></el-option>
</el-select>
</div>
<MonacoEditor
height=
"600"
width=
"100%"
class=
"vs"
style=
"text-align: left; background-color: #fff"
:language=
"lang"
:key=
"randomkey"
:code=
"code"
:editorOptions=
"options"
@
mounted=
"onMounted"
@
codeChange=
"onCodeChange"
>
</MonacoEditor>
</el-col>
</el-row>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"类型管理"
name=
"second"
>
<el-tab-pane
label=
"类型管理"
name=
"second"
>
<el-table
:data=
"markType"
size=
"medium"
style=
"width: 50%"
>
<el-table
:data=
"markType"
size=
"medium"
style=
"width: 50%"
>
...
@@ -120,14 +171,32 @@ import {
...
@@ -120,14 +171,32 @@ import {
processCHeaderFile
,
processCHeaderFile
,
getMarkType
,
getMarkType
,
updateMarkType
,
updateMarkType
,
getFileContent
,
}
from
"
@/api/store
"
;
}
from
"
@/api/store
"
;
import
MonacoEditor
from
"
vue-monaco-editor
"
;
export
default
{
export
default
{
name
:
"
EvmModule
"
,
name
:
"
EvmModule
"
,
data
()
{
data
()
{
return
{
return
{
code
:
'
function evm() {
\t\n\t
console.log("Hello world!");
\n
}
'
,
editor
:
null
,
randomkey
:
1231231
,
lang
:
"
javascript
"
,
options
:
{
theme
:
"
vs
"
,
selectOnLineNumbers
:
true
,
roundedSelection
:
false
,
readOnly
:
false
,
automaticLayout
:
true
,
glyphMargin
:
true
,
showFoldingControls
:
"
always
"
,
formatOnPaste
:
true
,
formatOnType
:
true
,
folding
:
true
,
},
activeName
:
"
first
"
,
activeName
:
"
first
"
,
fileList
:
[],
page
:
"
evm-module-tool.vue
"
,
page
:
"
evm-module-tool.vue
"
,
dir
:
null
,
dir
:
null
,
baseType
:
[
baseType
:
[
...
@@ -138,13 +207,43 @@ export default {
...
@@ -138,13 +207,43 @@ export default {
{
label
:
"
指针
"
,
value
:
"
void *
"
},
{
label
:
"
指针
"
,
value
:
"
void *
"
},
{
label
:
"
void
"
,
value
:
"
void
"
},
{
label
:
"
void
"
,
value
:
"
void
"
},
],
],
optionList
:
[
{
label
:
"
EVM注册
"
,
value
:
"
evm
"
},
{
label
:
"
CFFI注册
"
,
value
:
"
cffi
"
},
],
form
:
{
type
:
"
evm
"
,
name
:
null
,
file
:
null
,
},
fileList
:
[],
newFileList
:
[],
typeList
:
[
"
evm
"
,
"
cffi
"
],
undefined_type
:
[],
undefined_type
:
[],
error_tips
:
[],
error_tips
:
[],
dialogVisible
:
false
,
dialogVisible
:
false
,
markType
:
[],
markType
:
[],
result
:
null
,
};
};
},
},
components
:
{
MonacoEditor
,
},
methods
:
{
methods
:
{
createRamdomKey
()
{
return
Math
.
floor
(
Math
.
random
()
*
(
10
,
1000000012313
));
},
onMounted
(
editor
)
{
this
.
editor
=
editor
;
},
onCodeChange
(
editor
)
{
console
.
log
(
editor
);
},
onFileChange
(
file
)
{
console
.
log
(
file
,
this
.
form
.
file
);
if
(
!
this
.
result
)
return
;
this
.
getFileContent
(
file
);
},
createFile
(
content
,
filename
)
{
createFile
(
content
,
filename
)
{
const
a
=
document
.
createElement
(
"
a
"
);
const
a
=
document
.
createElement
(
"
a
"
);
const
blob
=
new
Blob
([
content
]);
const
blob
=
new
Blob
([
content
]);
...
@@ -156,7 +255,7 @@ export default {
...
@@ -156,7 +255,7 @@ export default {
},
},
handleUploaded
(
response
)
{
handleUploaded
(
response
)
{
if
(
response
.
code
===
200
)
{
if
(
response
.
code
===
200
)
{
this
.
downloadFile
(
response
);
this
.
downloadFile
(
response
.
data
);
}
else
{
}
else
{
this
.
$message
.
warning
(
response
.
message
);
this
.
$message
.
warning
(
response
.
message
);
}
}
...
@@ -164,6 +263,9 @@ export default {
...
@@ -164,6 +263,9 @@ export default {
handleUploadFile
(
file
)
{
handleUploadFile
(
file
)
{
this
.
fileList
.
push
(
file
);
this
.
fileList
.
push
(
file
);
},
},
handleDownloadFile
()
{
this
.
downloadFile
(
this
.
result
);
},
handleUploadRemove
(
file
,
fileList
)
{
handleUploadRemove
(
file
,
fileList
)
{
console
.
log
(
fileList
);
console
.
log
(
fileList
);
for
(
let
i
=
0
;
i
<
this
.
fileList
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
this
.
fileList
.
length
;
i
++
)
{
...
@@ -173,10 +275,25 @@ export default {
...
@@ -173,10 +275,25 @@ export default {
}
}
}
}
},
},
getFileContent
(
file
)
{
getFileContent
({
file
:
file
})
.
then
((
res
)
=>
{
this
.
code
=
res
.
data
;
this
.
lang
=
"
c
"
;
this
.
randomkey
=
this
.
createRamdomKey
();
this
.
$message
.
success
(
res
.
message
);
})
.
catch
((
err
)
=>
{
console
.
log
(
err
);
this
.
$message
.
error
(
err
.
message
);
});
},
downloadFile
(
result
)
{
downloadFile
(
result
)
{
if
(
!
this
.
result
)
return
;
const
a
=
document
.
createElement
(
"
a
"
);
const
a
=
document
.
createElement
(
"
a
"
);
a
.
download
=
result
.
data
.
filenam
e
;
a
.
download
=
result
.
fil
e
;
a
.
href
=
result
.
data
.
url
;
a
.
href
=
result
.
url
;
a
.
target
=
""
;
a
.
target
=
""
;
a
.
click
();
a
.
click
();
},
},
...
@@ -203,12 +320,16 @@ export default {
...
@@ -203,12 +320,16 @@ export default {
uploadFile
()
{
uploadFile
()
{
this
.
$refs
.
upload
.
submit
();
this
.
$refs
.
upload
.
submit
();
let
formData
=
new
FormData
();
let
formData
=
new
FormData
();
formData
.
append
(
"
type
"
,
this
.
form
.
type
);
formData
.
append
(
"
name
"
,
this
.
form
.
name
);
this
.
fileList
.
forEach
((
item
)
=>
{
this
.
fileList
.
forEach
((
item
)
=>
{
formData
.
append
(
"
binfile
"
,
item
.
file
);
formData
.
append
(
"
binfile
"
,
item
.
file
);
});
});
postCHeaderFile
(
formData
)
postCHeaderFile
(
formData
)
.
then
((
res
)
=>
{
.
then
((
res
)
=>
{
this
.
downloadFile
(
res
);
this
.
result
=
res
.
data
;
this
.
newFileList
=
res
.
data
.
sources
;
if
(
res
.
data
.
sources
.
length
)
this
.
getFileContent
(
res
.
data
.
sources
[
0
]);
})
})
.
catch
((
err
)
=>
{
.
catch
((
err
)
=>
{
if
(
err
.
code
==
400
)
{
if
(
err
.
code
==
400
)
{
...
@@ -230,10 +351,11 @@ export default {
...
@@ -230,10 +351,11 @@ export default {
this
.
error_tips
.
forEach
((
item
)
=>
{
this
.
error_tips
.
forEach
((
item
)
=>
{
types
[
item
.
type
]
=
item
.
mark
;
types
[
item
.
type
]
=
item
.
mark
;
});
});
processCHeaderFile
({
dir
:
this
.
dir
,
type
:
types
,
module
:
this
.
form
.
type
})
processCHeaderFile
({
dir
:
this
.
dir
,
type
:
types
})
.
then
((
res
)
=>
{
.
then
((
res
)
=>
{
this
.
downloadFile
(
res
);
this
.
result
=
res
.
data
;
this
.
newFileList
=
res
.
data
.
sources
;
if
(
res
.
data
.
sources
.
length
)
this
.
getFileContent
(
res
.
data
.
sources
[
0
]);
})
})
.
catch
((
err
)
=>
{
.
catch
((
err
)
=>
{
if
(
err
.
code
==
400
)
{
if
(
err
.
code
==
400
)
{
...
@@ -251,7 +373,12 @@ export default {
...
@@ -251,7 +373,12 @@ export default {
});
});
},
},
},
},
mounted
()
{},
mounted
()
{
setTimeout
(()
=>
{
this
.
code
=
"
console.log(123456)
"
;
console
.
log
(
this
.
code
);
},
2000
);
},
created
()
{
created
()
{
this
.
getMarkType
();
this
.
getMarkType
();
},
},
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment