diff --git a/box/chavy.boxjs.html b/box/chavy.boxjs.html
index 1534855f1..ae74b1577 100644
--- a/box/chavy.boxjs.html
+++ b/box/chavy.boxjs.html
@@ -555,9 +555,35 @@
脚本编辑器
-
+
mdi-play-circle
+
+
+
+ 执行结果
+
+
+ mdi-close
+
+
+
+
+
+
+
+
@@ -1166,6 +1192,7 @@ v{{ver.versio
searchDialog: { show: false },
versionsheet: { show: false },
updatesheet: { show: false },
+ exeScriptSheet: { show: false, resp: null },
naviDrawer: { show: false },
modSessionDialog: { show: false },
editProfileDialog: { show: false },
@@ -1506,32 +1533,53 @@ v{{ver.versio
if (newval === '/coding') {
require.config({ paths: { vs: 'https://cdn.jsdelivr.net/npm/monaco-editor@0.20.0/min/vs' } })
require(['vs/editor/editor.main'], () => {
+ const envjs_demo = [
+ '/** ',
+ ' * 注意: ',
+ ' * 在这里你可以使用完整的 EnvJs 环境',
+ ' * ',
+ ' * 同时: ',
+ ' * 你`必须`手动调用 $done()',
+ ' * ',
+ ' * 因为: ',
+ ' * BoxJs 不为主动执行的脚本调用 $done()',
+ ' * 而把 $done 的时机完全交由脚本控制',
+ ' * ',
+ ' * 最后: ',
+ ' * 这段脚本是可以直接运行的!',
+ ' */ ',
+ 'const host = $.getdata("boxjs_host")',
+ '$.json = {',
+ ' msg: "这段 json 是返回给浏览器的!"',
+ '}',
+ '$.msg($.name, host)',
+ '$.done()',
+ '// $done() 或 $.done() 都可以'
+ ]
+ const surgejs_demo = [
+ '/** ',
+ ' * 注意: ',
+ ' * 你正在使用 Surge HTTP-API 环境',
+ ' * ',
+ ' * 在这里:你不可以使用 EnvJs',
+ ' * 请确保:你的脚本能被 Surge 独立运行',
+ ' * ',
+ ' * 最后: ',
+ ' * 这段脚本是可以直接运行的!',
+ ' */ ',
+ 'const host = $persistentStore.read("boxjs_host")',
+ 'const msgs = [""]',
+ '',
+ 'msgs.push("这是日志的内容")',
+ 'msgs.push("BoxJs host: " + host)',
+ '',
+ 'console.log(msgs.join("\\n"))',
+ '$done()'
+ ]
this.ui.editor = monaco.editor.create(document.getElementById('container'), {
fontSize: 12,
tabSize: 2,
- value: [
- '/** ',
- ' * 注意: ',
- ' * 在这里你可以使用完整的 EnvJs 环境',
- ' * ',
- ' * 同时: ',
- ' * 你`必须`手动调用 $done()',
- ' * ',
- ' * 因为: ',
- ' * BoxJs 不为主动执行的脚本调用 $done()',
- ' * 而把 $done 的时机完全交由脚本控制',
- ' * ',
- ' * 最后: ',
- ' * 这段脚本是可以直接运行的!',
- ' */ ',
- 'const host = $.getdata("boxjs_host")',
- '$.json = {',
- ' msg: "这段 json 是返回给浏览器的!"',
- '}',
- '$.msg($.name, host)',
- '$.done()',
- '// $done() 或 $.done() 都可以'
- ].join('\n'),
+ value: this.box.usercfgs.httpapi ? surgejs_demo.join('\n') : envjs_demo.join('\n'),
language: 'javascript',
minimap: { enabled: false },
theme: this.isDarkMode ? 'vs-dark' : 'vs'
@@ -1792,7 +1840,12 @@ v{{ver.versio
exeScript() {
const script = this.ui.editor.getValue()
const opts = { script }
- axios.post('/api/runScript', opts)
+ axios.post('/api/runScript', opts).then((resp) => {
+ if (this.box.usercfgs.httpapi) {
+ this.ui.exeScriptSheet.resp = JSON.parse(resp.data)
+ this.ui.exeScriptSheet.show = true
+ }
+ })
},
// 保存用户偏好
saveUserCfgs() {
diff --git a/box/chavy.boxjs.js b/box/chavy.boxjs.js
index 44c0ebc98..2e05e81fe 100644
--- a/box/chavy.boxjs.js
+++ b/box/chavy.boxjs.js
@@ -1,6 +1,6 @@
const $ = new Env('BoxJs')
-$.version = '0.7.28'
+$.version = '0.7.29'
$.versionType = 'beta'
/**
@@ -37,7 +37,6 @@ $.html = $.name // `页面`类请求的响应体
// 页面源码地址
$.web = `https://cdn.jsdelivr.net/gh/chavyleung/scripts@${$.version}/box/chavy.boxjs.html?_=${new Date().getTime()}`
-
// 版本说明地址 (Release Note)
$.ver = 'https://gitee.com/chavyleung/scripts/raw/master/box/release/box.release.tf.json'
@@ -524,9 +523,14 @@ async function apiRunScript() {
}
} else {
// 对于手动执行的脚本, 把 $done 的时机交给脚本自主控制
- $.isSkipDone = true
- $request = undefined
- eval(opts.script)
+ if ($.isSurge() && ishttpapi) {
+ const runOpts = { timeout: opts.timeout }
+ await $.runScript(opts.script, runOpts).then((resp) => ($.json = resp))
+ } else {
+ $.isSkipDone = true
+ $request = undefined
+ eval(opts.script)
+ }
}
}
diff --git a/box/release/box.release.tf.json b/box/release/box.release.tf.json
index b824e94f1..c3c1d9b8a 100644
--- a/box/release/box.release.tf.json
+++ b/box/release/box.release.tf.json
@@ -1,5 +1,18 @@
{
"releases": [
+ {
+ "version": "0.7.29",
+ "tags": ["beta"],
+ "author": "@chavyleung",
+ "icon": "https://avatars3.githubusercontent.com/u/29748519",
+ "repo": "https://github.com/chavyleung",
+ "notes": [
+ {
+ "name": "代码编辑器",
+ "descs": ["Surge HTTP-API 环境下执行的代码能显示响应内容"]
+ }
+ ]
+ },
{
"version": "0.7.28",
"tags": ["beta"],