efront 3.13.2 → 3.13.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,4 +11,10 @@
11
11
  version: options ::version
12
12
  uptime: options ::uptime
13
13
  count: options ::count
14
- bootlog: options ::similar
14
+ bootlog: options ::similar
15
+ https://www.ip.cn/ :
16
+ iplocation: get https://www.ip.cn/api/index?ip=:ip&type=1
17
+ # https://ipchaxun.com/ :
18
+ # iplocation: get:[].info%20label:nth-child(n+2)>span:nth-child(2) :ip/
19
+ # https://www.ip138.com/:
20
+ # iplocation: get:head>script:nth-last-child(1) iplookup.asp?ip=:ip&action=2
@@ -1,20 +1,35 @@
1
1
  var fields = refilm`
2
2
  地址/ip
3
- 端口/port
3
+ 地理位置/ip ${function (e) {
4
+ var ip = e.data[e.field.key];
5
+ var m = /(\d+\.){3}\d+$/.exec(ip);
6
+ if (m) {
7
+ data.from("iplocation", { ip: m[0] }, function (a) {
8
+ var l = document.createElement('label');
9
+ l.innerText = a.address;
10
+ appendChild(e, l);
11
+ });
12
+ }
13
+ return e;
14
+ }}
15
+ 启动时间/time ${function (e) {
16
+ e.innerHTML = filterTime(e.data[e.field.key]);
17
+ }}
18
+ 端口/port input
4
19
  版本/version
5
20
  进程/pid
6
- 时间/time date
7
- `;
21
+ `;
8
22
  function main() {
9
23
  var page = div();
10
24
  page.innerHTML = template;
11
- var items = data.from("bootlog", item => {
12
- item.forEach(a => {
25
+ var items = data.from("bootlog", datas => {
26
+ datas.forEach(a => {
13
27
  var [v, p] = a.ppid.split("/");
14
28
  a.version = v;
15
29
  a.pid = p;
16
- })
17
- return item;
30
+ });
31
+ datas.sort((a, b) => b.time - a.time);
32
+ return datas;
18
33
  });
19
34
  renderWithDefaults(page, {
20
35
  items,
@@ -1,3 +1,11 @@
1
1
  & {
2
2
  height: 100%;
3
+ }
4
+
5
+ model {
6
+ label {
7
+ display: inline-block;
8
+ color: #666;
9
+ font-size: 9px;
10
+ }
3
11
  }
@@ -7,16 +7,15 @@ cross.addReform(async function ({ status, url, headers }, reform, reject) {
7
7
  var base1 = protocol + "//" + host + "/";
8
8
  if (base !== base1) {
9
9
  data.setSource(base1, null);
10
- var page = await popup("/auth/login", base1);
11
- care(page, "login", function (info) {
12
- data.setSource(base1, info);
13
- headers.authorization = info;
14
- reform();
15
- });
16
- on("remove")(page, reject);
17
- return false;
18
10
  }
19
- location.reload();
11
+ var page = await popup("/auth/login", base1);
12
+ care(page, "login", function (info) {
13
+ data.setSource(base1, info);
14
+ headers.authorization = info;
15
+ reform();
16
+ });
17
+ on("remove")(page, reject);
18
+ return false;
20
19
  }
21
20
  })
22
21
  data.setReporter(function (m, t) {
@@ -27,7 +26,7 @@ data.bindInstance("base", async function (base) {
27
26
  cross.addDirect(base.base);
28
27
  var apimap = await data.getConfig();
29
28
  for (var k in apimap) {
30
- apimap[k].base = base.base;
29
+ if (apimap[k].method === 'options') apimap[k].base = base.base;
31
30
  }
32
31
  });
33
32
  var base = data.getInstance('base').base;
@@ -180,7 +180,14 @@ function cross_(jsonp, digest = noop, method, url, headers) {
180
180
  };
181
181
  xhr.form = function (data) {
182
182
  xhr.data(data);
183
- if (FormData) {
183
+ var hasFile = false;
184
+ if (FormData) for (var k in jsondata) {
185
+ if (isFile(jsondata[k])) {
186
+ hasFile = true;
187
+ break;
188
+ }
189
+ }
190
+ if (hasFile) {
184
191
  datas = new FormData;
185
192
  for (var k in jsondata) {
186
193
  datas.append(k, jsondata[k]);
@@ -12,6 +12,8 @@ test('http://yunxu1019@live.cn@github.com/?a', 'username', 'yunxu1019@live.cn')
12
12
  test('localhost', 'host', 'localhost')
13
13
  test('localhost:80', 'port', '80')
14
14
  test('localhost:80/', 'port', '80')
15
+ test('efront.cc', 'host', 'efront.cc')
16
+ test('127.0.0.1', 'host', '127.0.0.1')
15
17
  test(':80', 'port', '80')
16
18
  test('80', 'port', '80')
17
19
  test('/80', 'pathname', '/80')
@@ -75,8 +75,24 @@ const formulaters = {
75
75
  var seekFromSource = function (obj, base) {
76
76
  var source = dataSourceMap;
77
77
  if (base && base in dataSourceMap) source = source[base];
78
- obj = seek(source, obj);
79
- if (isObject(obj)) for (var k in obj) if (obj[k] === dataSourceMap) delete obj[k];
78
+ if (isObject(obj)) {
79
+ var dist = {};
80
+ for (var k in obj) {
81
+ var v = obj[k];
82
+ if (/^\:/.test(k)) {
83
+ k = seek(source, k.slice(1));
84
+ }
85
+ if (v === '') {
86
+ if (source !== dataSourceMap) v = source;
87
+ else v = seek(source, k);
88
+ }
89
+ else if (/^\:/.test(v)) {
90
+ v = seek(source, v.slice(1));
91
+ }
92
+ dist[k] = v;
93
+ }
94
+ obj = dist;
95
+ }
80
96
  return obj;
81
97
  };
82
98
  function getErrorMessage(error = this) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efront",
3
- "version": "3.13.2",
3
+ "version": "3.13.3",
4
4
  "description": "一个开发工具,开放源代码,自带组件库和编译环境,可以用来开发web组件,web应用或nodejs模块,或做为已有代码的加密工具,也可以做为静态页面服务器或跨域中转服务器使用",
5
5
  "main": "public/efront.js",
6
6
  "directories": {