Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
tianyazhichiC
algorithm-visualizer
提交
7271b346
A
algorithm-visualizer
项目概览
tianyazhichiC
/
algorithm-visualizer
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
algorithm-visualizer
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
7271b346
编写于
2月 05, 2019
作者:
J
Jason Park
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Remove dependencies on unpkg.com (#234)
上级
ece28477
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
22 addition
and
7 deletion
+22
-7
package-lock.json
package-lock.json
+1
-1
package.json
package.json
+1
-1
src/backend/common/util.js
src/backend/common/util.js
+10
-0
src/backend/controllers/tracers.js
src/backend/controllers/tracers.js
+2
-1
src/backend/tracers/WorkerBuilder.js
src/backend/tracers/WorkerBuilder.js
+4
-0
src/backend/tracers/js/worker.js
src/backend/tracers/js/worker.js
+2
-2
src/frontend/apis/index.js
src/frontend/apis/index.js
+1
-1
src/frontend/core/renderers/Array2DRenderer/index.jsx
src/frontend/core/renderers/Array2DRenderer/index.jsx
+1
-1
未找到文件。
package-lock.json
浏览文件 @
7271b346
{
"name"
:
"algorithm-visualizer"
,
"name"
:
"
@algorithm-visualizer/
algorithm-visualizer"
,
"version"
:
"2.0.0"
,
"lockfileVersion"
:
1
,
"requires"
:
true
,
...
...
package.json
浏览文件 @
7271b346
{
"name"
:
"algorithm-visualizer"
,
"name"
:
"
@algorithm-visualizer/
algorithm-visualizer"
,
"version"
:
"2.0.0"
,
"title"
:
"Algorithm Visualizer"
,
"description"
:
"Algorithm Visualizer is an interactive online platform that visualizes algorithms from code."
,
...
...
src/backend/common/util.js
浏览文件 @
7271b346
import
Promise
from
'
bluebird
'
;
import
axios
from
'
axios
'
;
import
child_process
from
'
child_process
'
;
import
path
from
'
path
'
;
import
fs
from
'
fs-extra
'
;
...
...
@@ -32,6 +33,14 @@ const getDescription = files => {
return
removeMarkdown
(
descriptionLines
.
join
(
'
'
));
};
const
download
=
(
url
,
localPath
)
=>
axios
({
url
,
method
:
'
GET
'
,
responseType
:
'
stream
'
})
.
then
(
response
=>
new
Promise
((
resolve
,
reject
)
=>
{
const
writer
=
fs
.
createWriteStream
(
localPath
);
writer
.
on
(
'
finish
'
,
resolve
);
writer
.
on
(
'
error
'
,
reject
);
response
.
data
.
pipe
(
writer
);
}));
export
{
execute
,
createKey
,
...
...
@@ -39,4 +48,5 @@ export {
listFiles
,
listDirectories
,
getDescription
,
download
,
};
src/backend/controllers/tracers.js
浏览文件 @
7271b346
...
...
@@ -73,7 +73,8 @@ Object.keys(builderMap).forEach(lang => {
if
(
builder
instanceof
ImageBuilder
)
{
router
.
post
(
`/
${
lang
}
`
,
trace
(
lang
));
}
else
if
(
builder
instanceof
WorkerBuilder
)
{
router
.
get
(
`/
${
lang
}
`
,
(
req
,
res
)
=>
res
.
sendFile
(
builder
.
workerPath
));
router
.
get
(
`/
${
lang
}
`
,
(
req
,
res
)
=>
res
.
sendFile
(
builder
.
tracerPath
));
router
.
get
(
`/
${
lang
}
/worker`
,
(
req
,
res
)
=>
res
.
sendFile
(
builder
.
workerPath
));
}
});
...
...
src/backend/tracers/WorkerBuilder.js
浏览文件 @
7271b346
import
path
from
'
path
'
;
import
{
download
}
from
'
/common/util
'
;
class
WorkerBuilder
{
constructor
()
{
this
.
tracerPath
=
path
.
resolve
(
__dirname
,
'
..
'
,
'
public
'
,
'
algorithm-visualizer.js
'
);
this
.
workerPath
=
path
.
resolve
(
__dirname
,
'
js
'
,
'
worker.js
'
);
this
.
build
=
this
.
build
.
bind
(
this
);
}
build
(
release
)
{
const
{
tag_name
}
=
release
;
return
download
(
`https://github.com/algorithm-visualizer/tracers.js/releases/download/
${
tag_name
}
/algorithm-visualizer.js`
,
this
.
tracerPath
);
}
}
...
...
src/backend/tracers/js/worker.js
浏览文件 @
7271b346
const
process
=
{
env
:
{
ALGORITHM_VISUALIZER
:
'
1
'
}
};
importScripts
(
'
https://unpkg.com/algorithm-visualizer@latest/dist/algorithm-visualizer.
js
'
);
importScripts
(
'
/api/tracers/
js
'
);
const
sandbox
=
code
=>
{
const
require
=
name
=>
({
'
algorithm-visualizer
'
:
AlgorithmVisualizer
}[
name
]);
// fake require
...
...
@@ -7,7 +7,7 @@ const sandbox = code => {
};
onmessage
=
e
=>
{
const
lines
=
e
.
data
.
split
(
'
\n
'
).
map
((
line
,
i
)
=>
line
.
replace
(
/
(
.+
\.
*delay *
)(\(
*
\)
)
/g
,
`$1(
${
i
}
)`
));
const
lines
=
e
.
data
.
split
(
'
\n
'
).
map
((
line
,
i
)
=>
line
.
replace
(
/
(
\.\s
*delay
\s
*
)\(\s
*
\
)
/g
,
`$1(
${
i
}
)`
));
const
code
=
lines
.
join
(
'
\n
'
);
sandbox
(
code
);
postMessage
(
AlgorithmVisualizer
.
Tracer
.
traces
);
...
...
src/frontend/apis/index.js
浏览文件 @
7271b346
...
...
@@ -79,7 +79,7 @@ const TracerApi = {
}]),
json
:
({
code
})
=>
new
Promise
(
resolve
=>
resolve
(
JSON
.
parse
(
code
))),
js
:
({
code
},
params
,
cancelToken
)
=>
new
Promise
((
resolve
,
reject
)
=>
{
const
worker
=
new
Worker
(
'
/api/tracers/js
'
);
const
worker
=
new
Worker
(
'
/api/tracers/js
/worker
'
);
if
(
cancelToken
)
{
cancelToken
.
promise
.
then
(
cancel
=>
{
worker
.
terminate
();
...
...
src/frontend/core/renderers/Array2DRenderer/index.jsx
浏览文件 @
7271b346
...
...
@@ -28,7 +28,7 @@ class Array2DRenderer extends Renderer {
}
{
longestRow
.
map
((
_
,
i
)
=>
(
<
td
className
=
{
classes
(
styles
.
col
,
styles
.
index
)
}
>
<
td
className
=
{
classes
(
styles
.
col
,
styles
.
index
)
}
key
=
{
i
}
>
<
span
className
=
{
styles
.
value
}
>
{
i
}
</
span
>
</
td
>
))
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录