efront 3.18.2 → 3.19.1

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.
Files changed (47) hide show
  1. package/apps/pivot/api.yml +2 -0
  2. package/apps/pivot/link/chat.js +8 -11
  3. package/apps/pivot/link/index.html +2 -0
  4. package/apps/pivot/link/index.js +13 -0
  5. package/apps/pivot/link/room.html +0 -0
  6. package/apps/pivot/link/room.js +10 -0
  7. package/apps/pivot/main.js +7 -1
  8. package/apps/pivot/menu.yml +1 -1
  9. package/apps/pivot/wow/edit.js +3 -0
  10. package/apps/pivot/wow/root.js +33 -4
  11. package/coms/basic/cross_.js +8 -1
  12. package/coms/frame/chat.html +1 -1
  13. package/coms/frame/chat.js +15 -2
  14. package/coms/frame/chat.less +3 -3
  15. package/coms/frame/list.js +13 -4
  16. package/coms/maps/baidu.js +6 -1
  17. package/coms/maps/gaode.js +3 -0
  18. package/coms/maps/google.js +2 -2
  19. package/coms/maps/osm.js +1 -1
  20. package/coms/pivot/pedit.less +3 -0
  21. package/coms/pivot/plist.js +7 -1
  22. package/coms/random//350/272/253/344/273/275/350/257/201.js +154 -0
  23. package/coms/reptile/cross.js +9 -4
  24. package/coms/zimoli/Item.js +32 -23
  25. package/coms/zimoli/contextmenu.js +6 -23
  26. package/coms/zimoli/createItemTarget.js +8 -2
  27. package/coms/zimoli/drag.js +0 -1
  28. package/coms/zimoli/list.js +1 -1
  29. package/coms/zimoli/maps.js +323 -144
  30. package/coms/zimoli/maps.less +8 -0
  31. package/coms/zimoli/maps_test.html +2 -0
  32. package/coms/zimoli/maps_test.js +37 -28
  33. package/coms/zimoli/maps_test.less +4 -6
  34. package/coms/zimoli/menu.js +2 -2
  35. package/coms/zimoli/menuItem.html +1 -1
  36. package/coms/zimoli/menuItem.js +2 -4
  37. package/coms/zimoli/menuList.html +1 -1
  38. package/coms/zimoli/menuList.js +5 -4
  39. package/coms/zimoli/menuList.less +5 -0
  40. package/coms/zimoli/move.js +5 -23
  41. package/coms/zimoli/oncemount.js +1 -1
  42. package/coms/zimoli/onmousewheel.js +1 -0
  43. package/coms/zimoli/popup.js +2 -1
  44. package/coms/zimoli/render.js +38 -27
  45. package/coms/zimoli/resize.js +1 -4
  46. package/package.json +1 -1
  47. package/public/efront.js +1 -1
@@ -14,8 +14,10 @@
14
14
  count: options ::count
15
15
  bootlog: options ::similar
16
16
  link: options ::link
17
+ room: options ::link-:id
17
18
  care: options ::care-:id
18
19
  cast: options ::cast-:id?:msg
20
+ upload: put :path
19
21
  https://www.ip.cn/:
20
22
  iplocation: get https://www.ip.cn/api/index?ip=:ip&type=1
21
23
  # https://ipchaxun.com/ :
@@ -2,7 +2,7 @@ async function link(id, page) {
2
2
  if (!id) {
3
3
  id = await data.from("link");
4
4
  }
5
- page.$scope.title = `会话窗口(<span nodrag>${id}</span>)`;
5
+ if (!page.name) page.$scope.title = `会话窗口(<span nodrag>${id}</span>)`;
6
6
  page.roomid = id;
7
7
  var removed = false;
8
8
  on("remove")(page, function () {
@@ -12,18 +12,15 @@ async function link(id, page) {
12
12
  var xhr = null;
13
13
  while (true) {
14
14
  if (removed) break;
15
- xhr = data.from("care", { id }, function (data) {
16
- page.$scope.msglist.push.apply(page.$scope.msglist, data);
17
- var { msglist } = page.$scope;
18
- var chat = page.querySelector("chat");
19
- chat.go(msglist.length ? msglist.length - 1 : 0);
20
- });
21
- await xhr;
15
+ xhr = data.from("care", { id });
16
+ page.push(await xhr);
22
17
  }
23
18
  }
24
- function main(id) {
25
- console.log(id)
26
- var page = frame$chat();
19
+ function main(params) {
20
+ if (isObject(params)) var { linkid: id, name } = params;
21
+ else id = params;
22
+ var page = frame$chat(name);
23
+ if (name) page.name = name;
27
24
  care(page, 'send', function (msg) {
28
25
  data.from("cast", { id: page.roomid, msg });
29
26
  });
@@ -0,0 +1,2 @@
1
+ <menu -src="m in menus" #navbar></menu>
2
+ <container -src="navbar.selected?.path"></container>
@@ -0,0 +1,13 @@
1
+ function index() {
2
+ var page = document.createElement('link-index');
3
+ page.innerHTML = template;
4
+ renderWithDefaults(page, {
5
+ menus: "房间 /link/room, 会话 /link/list".split(/\s*,\s*/).map(a => {
6
+ var [name, path] = a.split(/\s+/);
7
+ return { name, path };
8
+ }),
9
+ menu,
10
+ });
11
+ page.$scope.menus[0].actived = true;
12
+ return page;
13
+ }
File without changes
@@ -0,0 +1,10 @@
1
+ plist.bind(null, '房间', "room", refilm`
2
+ *房间名/name 100
3
+ / $ ${[{
4
+ name: "连接",
5
+ async do(o) {
6
+ var linkid = await data.from("room", { id: encode62.timeencode(o.name) });
7
+ popup("/link/chat", { linkid, name: o.name });
8
+ }
9
+ }]}
10
+ `);
@@ -26,7 +26,7 @@ data.bindInstance("base", async function (base) {
26
26
  cross.addDirect(base.base);
27
27
  var apimap = await data.getConfig();
28
28
  for (var k in apimap) {
29
- if (apimap[k].method === 'options') apimap[k].base = base.base;
29
+ if (/options|put/.test(apimap[k].method)) apimap[k].base = base.base;
30
30
  }
31
31
  });
32
32
  var base = data.getInstance('base').base;
@@ -53,6 +53,12 @@ var layer = layer$glance({
53
53
  on("append")(layer, function () {
54
54
  frame$route.open();
55
55
  });
56
+ on("dragover")(document, function (event) {
57
+ event.preventDefault();
58
+ });
59
+ on("drop")(document, function (event) {
60
+ event.preventDefault();
61
+ });
56
62
  function main() {
57
63
  return layer;
58
64
  }
@@ -3,7 +3,7 @@ WEB:
3
3
  共享目录: /share/list
4
4
  短链接: /proxy/list
5
5
  文件管理: /wow/root
6
- 长连接管理: /link/list
6
+ 长连接管理: /link/index
7
7
  字典: /dict/list
8
8
  接口: /api/list
9
9
  任务:
@@ -10,6 +10,7 @@ function main({ path: root, name }) {
10
10
  renderWithDefaults(a, {
11
11
  fields,
12
12
  pathlist: root,
13
+ origin,
13
14
  isFolder: /\/$/.test(name),
14
15
  data: { name: origin, origin },
15
16
  remove() {
@@ -19,9 +20,11 @@ function main({ path: root, name }) {
19
20
  on('submit')(a, async function (e) {
20
21
  e.preventDefault();
21
22
  var path = root.concat(a.$scope.data.name).join('/');
23
+ path = encode62.timeencode(path);
22
24
  if (origin) {
23
25
  var to = path;
24
26
  path = origin;
27
+ path = encode62.timeencode(path);
25
28
  }
26
29
  await data.from("folder", { opt: origin ? 'mov' : 'add', path, to }).loading_promise;
27
30
  dispatch(this, 'submited');
@@ -1,8 +1,21 @@
1
1
  var fields = refilm`
2
2
  文件
3
3
  `;
4
-
4
+ var passport = encode62.timeencode(encode62.decode62(user._passport, user.session));
5
+ async function upload(f, base) {
6
+ var api = await data.getApi('upload');
7
+ var authorization = await data.getSource(api.base);
8
+ var xhr = cross(api.method, api.base + base + f.name, { authorization: authorization });
9
+ xhr.setRequestHeader('range', 'bytes=1-' + f.size);
10
+ return xhr.send(f);
11
+ }
5
12
  function main() {
13
+ async function uploadAll(files) {
14
+ await queue.call(files, function (f) {
15
+ return upload(f, page.$scope.pathlist.join("/"));
16
+ });
17
+ page.$scope.open();
18
+ }
6
19
  var page = div();
7
20
  page.innerHTML = root;
8
21
  page.onback = function () {
@@ -15,15 +28,24 @@ function main() {
15
28
  return false;
16
29
  }
17
30
  page.setAttribute('ng-mousedown', 'setActive')
31
+ bind('drop')(page, async function (event) {
32
+ event.preventDefault();
33
+ var files = event.dataTransfer.files;
34
+ uploadAll(files);
35
+ });
18
36
 
19
37
  renderWithDefaults(page, {
20
38
  lattice,
21
39
  pathlist: data.getInstance("pathlist"),
22
40
  active: null,
23
41
  open(p) {
42
+ if (p && !/\/$/.test(p.name)) {
43
+ // window.open("/" + this.pathlist.concat(p.name).join('/'))
44
+ return;
45
+ }
24
46
  if (p) p = String(p.name || '').replace(/\/$/, '');
25
47
  if (p) data.setInstance("pathlist", this.pathlist.concat(p));
26
- this.data = data.from("folder", { opt: 'list', path: "/" + this.pathlist.join('/') }, files => {
48
+ this.data = data.from("folder", { opt: 'list', path: encode62.timeencode("/" + this.pathlist.join('/')) }, files => {
27
49
  if (files) return sortname(files).map(f => {
28
50
  return {
29
51
  name: f,
@@ -66,7 +88,14 @@ function main() {
66
88
  }
67
89
  },
68
90
  {
69
- name: '编辑',
91
+ name: "添加文件",
92
+ when: e => !getActive(e),
93
+ do() {
94
+ return chooseFile().then(uploadAll);
95
+ }
96
+ },
97
+ {
98
+ name: '重命名',
70
99
  when,
71
100
  do(e) {
72
101
  popupEdit(e.$scope.d.name);
@@ -91,7 +120,7 @@ function main() {
91
120
  }, 2000);
92
121
  return false;
93
122
  }
94
- await data.from("folder", { opt: 'del', path: "/" + page.$scope.pathlist.concat(e.$scope.d.name).join("/") }).loading_promise;
123
+ await data.from("folder", { opt: 'del', path: encode62.timeencode("/" + page.$scope.pathlist.concat(e.$scope.d.name).join("/")) }).loading_promise;
95
124
  page.$scope.open();
96
125
  }
97
126
  }
@@ -230,12 +230,16 @@ function cross_(jsonp, digest = noop, method, url, headers) {
230
230
  }
231
231
  }
232
232
  }
233
+ var is_gb2312 = /^[gbk][^e]/i.test(method);
234
+ if (is_gb2312) method = method.slice(1);
233
235
  if (nocross) {
234
236
  extend(realHeaders, _headers);
235
237
  xhr.open(method, url);
236
238
  } else {
237
239
  xhr.open(method, getCrossUrl(url, _headers));
238
240
  }
241
+ if (is_gb2312) xhr.overrideMimeType("text/plain; charset=gb2312");
242
+
239
243
  Object.keys(realHeaders).forEach(key => setRequestHeader.call(xhr, key, realHeaders[key]));
240
244
  if (!isEmpty(datas)) send.call(xhr, datas);
241
245
  else send.call(xhr);
@@ -286,7 +290,10 @@ function addDirect(a) {
286
290
  if (typeof a === 'string' || a instanceof RegExp) cors_hosts.push(a);
287
291
  }
288
292
  function notCross(domain) {
289
- if (!base || location_href && location_href === domain.slice(0, location_href.length) || !/^https?\:\/\/|^s?\/\//.test(domain)) return true;
293
+ if (!base ||
294
+ location_href && location_href === domain.slice(0, location_href.length) ||
295
+ !/^https?\:\/\/|^s?\/\//.test(domain) ||
296
+ domain.replace(domainReg, '$2') === base.replace(domainReg, '$2')) return true;
290
297
  for (var cx = 0, dx = cors_hosts.length; cx < dx; cx++) {
291
298
  var host = cors_hosts[cx];
292
299
  if (host instanceof RegExp) {
@@ -11,7 +11,7 @@
11
11
  </padding>
12
12
  </chat>
13
13
  <div textarea @mousedown="this.firstChild.focus()">
14
- <div @input="resize(body)" @keydown.alt.enter="send()" contenteditable="true" -model="text"></div>
14
+ <div @keydown.alt.enter="send()" contenteditable="true" -model="text"></div>
15
15
  </div>
16
16
  </grid>
17
17
  <div foot>
@@ -17,15 +17,28 @@ function msg(elem, { m: data }, parentScopes) {
17
17
  function chat(title = '会话窗口') {
18
18
  var page = view();
19
19
  page.innerHTML = template;
20
- drag.on(page.firstChild, page);
20
+ drag.on(page.firstElementChild, page);
21
21
  resize.on(page);
22
+ var localid = Date.now() + Math.sin(Math.random());
23
+ page.push = function (msgs) {
24
+ var { msglist } = this.$scope;
25
+ msglist.push.apply(msglist, msgs);
26
+ var chat = page.querySelector("chat");
27
+ var lastmsg = chat.getLastVisibleElement();
28
+ if (msgs.length && (!lastmsg || lastmsg.offsetTop + lastmsg.offsetHeight === chat.scrollHeight)) {
29
+ chat.go(msglist.length ? msglist.length - 1 : 0);
30
+ }
31
+ };
32
+ page.renders = [function () {
33
+ this.$scope.resize(this.$scope.body);
34
+ }];
22
35
  renderWithDefaults(page, {
23
36
  chat: list,
24
37
  title,
25
38
  grid,
26
39
  msglist: [],
27
40
  text: '',
28
- localid: Math.random(),
41
+ localid,
29
42
  msg,
30
43
  remove() {
31
44
  remove(page);
@@ -102,7 +102,7 @@ chat {
102
102
  height: 100%;
103
103
  }
104
104
 
105
- .editor-height(80px);
105
+ .editor-height(96px);
106
106
 
107
107
  [textarea] {
108
108
  display: block;
@@ -114,13 +114,13 @@ chat {
114
114
  border: none;
115
115
  outline: none;
116
116
  border-top: 1px solid #000;
117
- border-bottom: 30px solid transparent;
117
+ border-bottom: 28px solid transparent;
118
118
  ime-mode: active;
119
119
  overflow: auto;
120
120
 
121
121
  >div {
122
122
  height: auto;
123
- min-height: 49px;
123
+ min-height: 52px;
124
124
  width: 100%;
125
125
  vertical-align: top;
126
126
  padding: 6px 16px;
@@ -2,11 +2,20 @@ function main(title, { fields, options: options0, load, remove }, edit_ref) {
2
2
  prepare(edit_ref);
3
3
  var page = document.createElement("div");
4
4
  var edit = function (o) {
5
+ if (!edit_ref) {
6
+ return;
7
+ }
8
+ var callback = function () {
9
+ page.$scope.load();
10
+ };
11
+ if (isFunction(edit_ref)) {
12
+ var p = edit_ref(o, callback);
13
+ if (p) on('submited')(p, callback);
14
+ return;
15
+ }
5
16
  zimoli.prepare(edit_ref, function () {
6
- var p = popup(edit_ref, { fields, data: o })
7
- on("submited")(p, function () {
8
- page.$scope.load();
9
- })
17
+ var p = popup(edit_ref, { fields, data: o})
18
+ on("submited")(p, callback);
10
19
  })
11
20
  };
12
21
  page.innerHTML = template;
@@ -27,14 +27,19 @@ var baidu = {
27
27
  getURL: function (x, y, z) {
28
28
  if (x < 0) x = "M" + -x;
29
29
  if (y < 0) y = "M" + -y;
30
- return `http://online0.map.bdimg.com/tile/?qt=tile&x=${x}&y=${y}&z=${z}&styles=pl&scaler=1&udt=20180721`;
30
+ return `https://maponline2.bdimg.com/tile/?qt=tile&x=${x}&y=${y}&z=${z}&styles=pl&scaler=1&udt=20180721`;
31
31
  },
32
32
  lat2y,
33
33
  lng2x,
34
34
  x2lng,
35
35
  y2lat,
36
+ minLng: -180,
37
+ maxLng: 180,
36
38
  direction: -1,
37
39
  lat2tile(lat, zoom) {
38
40
  return Math.ceil(this.lat2y(lat, zoom));
41
+ },
42
+ lng2tile(lng, zoom) {
43
+ return Math.floor(this.lng2x(lng, zoom));
39
44
  }
40
45
  }
@@ -0,0 +1,3 @@
1
+ return {
2
+ url:'http://webst04.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}'
3
+ };
@@ -1,4 +1,4 @@
1
1
  var google = {
2
- url: `http://mt{1-3}.google.cn/vt/lyrs=h&hl=zh-CN&gl=cn&x={x}&y={y}&z={z}`,
3
- url: `http://mt{1-3}.google.cn/vt/lyrs=s&hl=zh-CN&gl=cn&x={x}&y={y}&z={z}`
2
+ url: `https://mt{1-3}.google.cn/vt/lyrs=h&hl=zh-CN&gl=cn&x={x}&y={y}&z={z}`,
3
+ url: `https://gac-geo.googlecnapps.cn/maps/vt?lyrs=s%40781&hl=zh-CN&gl=CN&x={x}&y={y}&z={z}&src=app&scale=1&from=app`
4
4
  };
package/coms/maps/osm.js CHANGED
@@ -1,5 +1,5 @@
1
1
  var osm = {
2
- url: `http://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png`,
2
+ url: `https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png`,
3
3
  loadImage(image, src) {
4
4
  var img = new Image;
5
5
  img.crossOrigin = "anonymous";
@@ -0,0 +1,3 @@
1
+ &{
2
+ position: absolute;
3
+ }
@@ -9,5 +9,11 @@ function main(title, type, fields, edit_ref, options, idkey = fields[0].key) {
9
9
  },
10
10
  fields,
11
11
  options,
12
- }, edit_ref);
12
+ }, edit_ref ? edit_ref : function (o) {
13
+ var p = pedit(title, type, { data: o, fields });
14
+ p.initialStyle = popup.style;
15
+ popup(p, true);
16
+ move.setPosition(p, [.5, .5]);
17
+ return p;
18
+ });
13
19
  }
@@ -0,0 +1,154 @@
1
+ // data.setConfig(data.parseConfig(`
2
+ // https://shenfen.supfree.net/:
3
+ // sheng: gget:[].bblue #title=!title&href=!href&short=!innerText
4
+ // shi: gget:[].bblue sheng.asp?sheng#title=!title&href=!href&short=!innerText
5
+ // qu: gget:[].bblue shi.asp?sheng&shi#title=!title&href=!href&short=!innerText
6
+ // `));
7
+ // var setid = function (a) {
8
+ // a = a.filter(a => a.title);
9
+ // for (var o of a) {
10
+ // o.name = o.title.replace(/身份证|号码/g, "").replace(/市县/, '市');
11
+ // o.id = o.href.replace(/^([^\d]+)\.asp\?[\s\S]*\1\=(\d+)[\s\S]*?$/g, "$2");
12
+ // delete o.href;
13
+ // delete o.title;
14
+ // }
15
+ // return a;
16
+ // };
17
+ // var prefix = {};
18
+ // var tree = {};
19
+ // await queue.call(await data.from("sheng", setid), async function (h) {
20
+ // var shi = await data.from("shi", { sheng: h.id }, setid);
21
+ // var so = {};
22
+ // tree[h.short] = so;
23
+ // while (shi.length) {
24
+ // var s = shi.pop();
25
+ // var qu = await data.from("qu", { sheng: h.id, shi: s.id }, setid);
26
+ // var qo = {};
27
+ // so[s.short] = qo;
28
+ // while (qu.length) {
29
+ // var q = qu.pop();
30
+ // var id = +`${h.id}${s.id}${q.id}`;
31
+ // qo[q.short] = id;
32
+ // prefix[id] = { id, sheng: h.short, shi: s.short, qu: q.short };
33
+ // }
34
+ // }
35
+ // }, 9);
36
+ // prefix = Object.keys(prefix).sort((a, b) => a - b).map(k => prefix[k]);
37
+ // console.log(tree)
38
+ // var prefix = [...];
39
+ // console.log(prefix)
40
+ // for (var cx = 0, ci = 0, cs = prefix[0]; cx < prefix.length; cx++) {
41
+ // if (prefix[cx + 1] !== prefix[cx] + 1) {
42
+ // prefix.splice(ci + 1, cx - ci, prefix[cx] - prefix[ci]);
43
+ // if (ci > 1) {
44
+ // var temp = prefix[ci];
45
+ // prefix[ci] -= cs;
46
+ // cs = temp;
47
+ // }
48
+ // cx = ci + 1;
49
+ // ci = cx + 1;
50
+ // };
51
+ // }
52
+ // console.log(prefix)
53
+
54
+ var prefix = function (source) {
55
+ var src = [];
56
+ do {
57
+ var s = source[0];
58
+ src.push(s);
59
+ if (source[1] === 0) {
60
+ if (source.length <= 2) break;
61
+ source[2] += source[0], source.shift(), source.shift();
62
+ }
63
+ else source[0]++, source[1]--;
64
+ } while (source.length);
65
+ return src;
66
+ }([110101, 8, 10, 6, 117, 1, 9873, 14, 120, 0, 2, 0, 2, 0, 9876, 7, 20, 0, 2, 10, 58, 4, 20, 7, 20, 0, 2, 2, 4, 0, 2, 1, 52, 2, 20, 3, 20, 3, 80, 3, 5, 0, 15, 0, 2, 12, 58, 0, 20, 2, 20, 14, 60, 1, 20, 3, 20, 17, 60, 3, 20, 2, 4, 1, 16, 12, 80, 3, 20, 7, 80, 2, 20, 9, 60, 3, 20, 2, 21, 4, 6, 0, 53, 1, 20, 1, 20, 7, 60, 1, 8920, 0, 4, 5, 16, 2, 60, 0, 20, 2, 10, 1, 10, 6, 80, 2, 10, 0, 10, 1, 80, 1, 10, 0, 10, 0, 2, 8, 58, 0, 20, 1, 20, 1, 3, 1, 57, 0, 20, 2, 20, 3, 80, 1, 20, 8, 60, 0, 20, 1, 20, 9, 60, 1, 20, 1, 20, 11, 60, 0, 20, 1, 20, 13, 60, 1, 20, 1, 20, 9, 60, 1, 1020, 1, 21, 1, 3, 9, 176, 1, 20, 3, 6, 0, 2, 2, 4, 0, 168, 2, 20, 2, 4, 0, 2, 9, 74, 2, 22, 4, 6, 4, 7372, 4, 20, 4, 80, 6, 20, 2, 80, 3, 100, 3, 20, 5, 7, 2, 73, 1, 20, 5, 60, 0, 21, 0, 19, 6, 80, 1, 20, 6, 60, 4, 20, 1, 20, 5, 80, 1, 20, 8, 60, 0, 1120, 5, 21, 1, 5, 4, 74, 1, 20, 3, 80, 1, 21, 5, 179, 1, 21, 9, 79, 1, 23, 3, 5, 3, 5, 0, 67, 0, 21, 6, 79, 0, 21, 5, 99, 2, 57180, 5, 10, 3, 11, 2, 59, 0, 20, 3, 10, 2, 13, 0, 57, 2, 20, 3, 10, 0, 10, 0, 2, 0, 58, 0, 20, 3, 10, 0, 10, 2, 80, 4, 20, 1, 80, 3, 23, 0, 57, 1, 20, 2, 10, 0, 15, 1, 55, 1, 20, 3, 10, 0, 70, 1, 20, 4, 10, 0, 10, 1, 80, 4, 10, 0, 10, 0, 60, 0, 20, 2, 20, 1, 80, 1, 3, 0, 17, 0, 2, 1, 58, 1, 20, 2, 20, 1, 3, 0, 57, 1, 20, 3, 20, 1, 60, 0, 8620, 5, 11, 0, 10, 0, 59, 2, 20, 3, 10, 0, 10, 0, 60, 3, 20, 2, 21, 1, 59, 1, 20, 2, 20, 1, 80, 2, 20, 0, 2, 1, 58, 1, 20, 1, 20, 2, 4, 0, 56, 0, 20, 1, 20, 3, 80, 1, 20, 1, 60, 1, 1520, 5, 23, 0, 2, 0, 7675, 7, 20, 0, 2, 6, 58, 3, 20, 7, 20, 0, 2, 2, 4, 0, 2, 2, 52, 0, 20, 6, 20, 0, 60, 1, 20, 6, 20, 1, 80, 2, 4, 1, 16, 3, 80, 5, 20, 3, 80, 15, 21, 0, 59, 0, 20, 4, 10, 0, 11, 0, 4, 0, 2, 0, 5, 0, 48, 1, 20, 3, 20, 0, 80, 4, 23, 1, 57, 0, 2, 2, 18, 1, 20, 0, 2, 1, 58, 1, 20, 1, 20, 5, 60, 2, 1020, 3, 23, 2, 6, 2, 391, 2, 77380, 0, 2, 7, 9, 8, 118, 0, 9871, 6, 10, 5, 10, 4, 80, 5, 10, 0, 70, 2, 20, 4, 10, 0, 10, 3, 60, 1, 20, 1, 3, 1, 7, 1, 70, 2, 20, 6, 10, 0, 70, 5, 20, 1, 10, 0, 10, 0, 2, 0, 58, 3, 20, 0, 2, 3, 18, 3, 80, 3, 10, 0, 10, 0, 5, 0, 3, 2, 53, 0, 19, 2, 20, 4, 7, 0, 53, 1, 20, 2, 10, 0, 12, 0, 4, 0, 54, 0, 3, 0, 4, 0, 13, 1, 10, 1, 10, 0, 60, 2, 20, 2, 80, 3, 20, 1, 20, 3, 8780, 5, 7, 2, 14, 0, 5, 0, 54, 4, 20, 0, 2, 3, 8, 1, 14, 2, 56, 2, 20, 3, 21, 0, 2, 0, 2, 3, 55, 1, 20, 1, 10, 0, 10, 0, 3, 0, 57, 2, 20, 2, 20, 2, 80, 1, 20, 0, 3, 0, 57, 2, 20, 2, 20, 0, 2, 0, 3, 1, 55, 3, 20, 2, 20, 1, 3, 1, 57, 0, 20, 2, 20, 1, 80, 3, 20, 3, 60, 1, 20, 1, 20, 6, 60, 0, 1320, 1, 21, 1, 3, 4, 7576, 3, 10, 0, 10, 2, 80, 3, 6, 0, 14, 2, 80, 3, 10, 0, 10, 2, 80, 5, 20, 0, 80, 4, 20, 0, 80, 3, 20, 0, 80, 2, 10, 0, 10, 0, 80, 2, 10, 0, 11, 6, 59, 0, 120, 3, 20, 3, 80, 2, 21, 0, 2, 2, 57, 1, 20, 3, 20, 6, 60, 1, 20, 1, 20, 3, 80, 1, 20, 3, 80, 2, 20, 4, 80, 1, 20, 2, 80, 1, 20, 2, 80, 1, 20, 4, 60, 0, 520, 0, 21, 1, 3, 2, 76, 1, 21, 1, 7, 2, 72, 0, 21, 1, 3, 1, 276, 0, 20, 2, 7180, 4, 10, 0, 10, 4, 7, 0, 53, 1, 20, 5, 10, 2, 90, 4, 20, 1, 80, 2, 20, 0, 2, 7, 58, 0, 20, 4, 20, 0, 3, 3, 57, 2, 20, 2, 21, 7, 59, 0, 20, 1, 20, 4, 60, 3, 20, 1, 20, 4, 60, 0, 20, 1, 20, 5, 60, 1, 1220, 2, 24, 0, 2, 4, 7874, 4, 10, 0, 10, 3, 80, 2, 21, 0, 59, 0, 20, 1, 12, 0, 8, 2, 80, 2, 20, 0, 2, 7, 58, 0, 20, 1, 20, 0, 80, 1, 21, 0, 59, 0, 20, 1, 20, 14, 60, 1, 20, 2, 20, 9, 60, 0, 20, 1, 20, 5, 60, 2, 20, 1, 20, 9, 80, 1, 20, 9, 60, 0, 1020, 3, 25, 3, 6, 1, 69, 1, 20, 5, 8, 2, 5, 0, 67, 1, 20, 9, 11, 0, 70, 0, 20, 7, 9, 1, 7570, 4, 11, 1, 11, 3, 58, 0, 20, 2, 4, 0, 6, 3, 70, 4, 20, 5, 20, 2, 80, 5, 80, 0, 20, 2, 20, 2, 80, 1, 10, 2, 23, 0, 47, 6, 20, 4, 23, 1, 57, 5, 20, 1, 10, 0, 15, 6, 55, 2, 20, 2, 10, 0, 10, 0, 2, 0, 59, 1, 19, 1, 80, 2, 20, 1, 20, 1, 80, 2, 100, 1, 10, 1, 10, 8, 80, 1, 20, 7, 60, 1, 20, 1, 20, 5, 60, 0, 20, 1, 20, 5, 80, 1, 20, 7, 580, 0, 20, 0, 2, 2, 5, 0, 2, 0, 571, 0, 21, 4, 6, 2, 37173, 5, 7, 0, 14, 0, 59, 4, 20, 4, 10, 0, 10, 4, 80, 6, 10, 0, 11, 7, 59, 0, 20, 3, 10, 0, 10, 2, 4, 0, 56, 1, 20, 5, 10, 0, 11, 1, 4, 1, 55, 0, 20, 2, 10, 0, 10, 1, 80, 3, 10, 0, 10, 0, 3, 4, 57, 1, 20, 3, 10, 0, 10, 2, 4, 0, 56, 2, 20, 1, 21, 1, 4, 2, 75, 1, 22, 2, 58, 1, 20, 1, 20, 2, 80, 1, 20, 1, 3, 0, 57, 1, 20, 2, 20, 9, 60, 0, 20, 2, 20, 5, 60, 0, 20, 2, 20, 7, 80, 1, 20, 7, 60, 0, 20, 1, 20, 8, 980, 1, 20, 7, 80, 0, 20, 8, 7280, 6, 10, 6, 90, 4, 21, 0, 59, 0, 20, 2, 20, 4, 60, 0, 120, 5, 20, 0, 4, 4, 56, 2, 20, 1, 5, 1, 15, 0, 3, 2, 58, 2, 19, 3, 100, 1, 3, 0, 17, 1, 60, 0, 20, 1, 20, 2, 60, 3, 20, 2, 21, 2, 59, 0, 2, 0, 4, 0, 14, 1, 20, 6, 60, 1, 20, 1, 20, 3, 60, 0, 20, 1, 80, 0, 1420, 1, 21, 1, 3, 3, 6179, 2, 17, 0, 1080, 4, 10, 0, 10, 1, 3, 0, 57, 0, 20, 3, 10, 0, 10, 0, 2, 2, 58, 0, 20, 1, 3, 0, 17, 0, 60, 1, 20, 7, 10, 1, 10, 3, 5, 0, 55, 1, 20, 2, 10, 0, 10, 4, 6, 2, 54, 0, 20, 2, 10, 0, 10, 0, 2, 1, 3, 0, 55, 1, 20, 2, 20, 5, 60, 0, 20, 1, 10, 0, 10, 1, 80, 2, 20, 2, 60, 0, 20, 2, 20, 7, 60, 0, 20, 2, 20, 8, 80, 1, 20, 9, 60, 0, 20, 1, 20, 1, 60, 1, 1120, 2, 21, 0, 2, 0, 477, 0, 100, 0, 21, 5, 8, 0, 6971, 6, 10, 3, 70, 3, 20, 3, 20, 3, 8, 0, 3, 1, 49, 1, 20, 0, 2, 5, 98, 3, 20, 0, 80, 0, 5, 9, 17, 0, 59, 1, 19, 7, 80, 3, 20, 0, 2, 2, 78, 4, 20, 3, 10, 0, 12, 0, 2, 0, 56, 2, 20, 2, 22, 0, 58, 2, 220, 2, 22, 3, 60, 1, 18, 2, 21, 2, 59, 0, 20, 1, 20, 3, 5, 1, 55, 0, 20, 1, 20, 0, 2, 0, 58, 0, 20, 1, 20, 4, 80, 1, 20, 0, 2, 0, 58, 0, 20, 1, 20, 0, 2, 0, 2, 2, 56, 1, 20, 0, 100, 0, 3100, 1, 20, 1, 80, 1, 20, 1, 3, 0, 57, 0, 20, 1, 20, 2, 60, 0, 4720, 5, 10, 0, 10, 6, 80, 4, 10, 0, 10, 5, 80, 4, 10, 0, 10, 11, 80, 0, 2, 2, 8, 0, 10, 2, 60, 0, 20, 2, 11, 0, 9, 0, 80, 2, 20, 0, 60, 0, 20, 2, 20, 1, 80, 3, 20, 0, 60, 0, 20, 1, 20, 3, 60, 0, 20, 1, 20, 10, 80, 1, 20, 2, 80, 1, 20, 8, 60, 0, 20, 1, 20, 3, 60, 0, 20, 1, 20, 4, 60, 0, 620, 0, 21, 2, 4, 7, 75, 0, 22, 8, 179, 0, 22, 0, 3, 1, 174, 0, 21, 10, 79, 1, 22, 8, 7278, 6, 24, 3, 5, 1, 3, 3, 68, 7, 100, 0, 8800, 2, 4, 2, 20, 3, 5, 1, 3, 6, 31068, 14, 121, 16, 18, 3, 141, 3, 9720, 0, 3, 4, 8, 3, 9, 4, 8, 0, 2, 1, 50, 3, 120, 3, 10, 0, 10, 1, 80, 2, 10, 0, 10, 1, 80, 3, 20, 1, 3, 1, 77, 0, 2, 0, 20, 0, 3, 0, 55, 2, 20, 0, 2, 1, 19, 5, 59, 0, 20, 1, 10, 1, 10, 3, 80, 3, 20, 2, 80, 1, 10, 0, 13, 1, 4, 0, 73, 1, 10, 2, 12, 1, 3, 0, 3, 0, 3, 1, 49, 0, 120, 3, 20, 4, 60, 0, 20, 1, 20, 4, 80, 1, 20, 8, 80, 1, 20, 2, 60, 0, 20, 1, 20, 4, 60, 0, 20, 1, 20, 6, 80, 1, 20, 2, 80, 1, 20, 1, 60, 0, 920, 1, 20, 2, 8, 1, 72, 0, 21, 6, 99, 12, 100, 17, 80, 0, 21, 15, 279, 0, 20, 2, 100, 5, 6280, 2, 10, 3, 10, 2, 60, 0, 20, 2, 20, 1, 80, 2, 20, 9, 60, 1, 20, 1, 20, 4, 1780, 0, 21, 8, 79, 0, 21, 6, 79, 0, 21, 6, 79, 0, 25, 4, 75, 0, 21, 14, 79, 1, 21, 1, 3, 7, 7376, 2, 10, 2, 10, 1, 3, 5, 57, 0, 120, 1, 20, 5, 7, 0, 53, 0, 20, 1, 20, 7, 80, 1, 20, 3, 80, 1, 20, 9, 80, 1, 20, 3, 80, 1, 20, 8, 80, 1, 20, 6, 1180, 0, 21, 9, 179, 0, 21, 7, 9, 0, 170, 1, 21, 10, 99, 7, 80, 0, 21, 8, 79, 0, 21, 1, 79, 0, 21, 10, 79, 0, 21, 3, 79, 2, 21, 2, 99, 3, 100, 0, 2, 2, 98, 2, 100, 7, 6580, 1, 20, 6, 2000, 8, 11, 5, 89, 8, 10, 2, 70, 0, 21, 16, 99, 9, 100, 7, 100, 6, 67480, 3, 10, 5, 10, 1, 3, 2, 77, 3, 20, 1, 80, 3, 20, 3, 5, 5, 75, 3, 21, 9, 59, 0, 20, 1, 20, 7, 60, 1, 20, 1, 20, 11, 80, 1, 20, 9, 80, 1, 20, 10, 80, 1, 20, 8, 80, 1, 20, 5, 1380, 0, 21, 8, 79, 0, 21, 5, 179, 0, 21, 10, 7379, 4, 10, 0, 10, 2, 80, 0, 100, 1, 20, 0, 80, 2, 20, 2, 80, 2, 20, 4, 80, 1, 20, 2, 80, 1, 20, 4, 80, 1, 20, 5, 80, 1, 20, 3, 60, 1, 20, 1, 20, 6, 80, 1, 20, 5, 980, 2, 22, 3, 78, 0, 21, 4, 79, 0, 21, 1, 4, 0, 95, 0, 3, 5, 197, 0, 2, 7, 78, 0, 21, 5, 79, 0, 20, 6, 80, 0, 20, 6, 80, 0, 20, 6, 7080, 4, 20, 2, 2000, 7, 100, 3, 100, 3, 200, 4, 100, 5, 100, 5, 80, 1, 20, 2, 7280, 5, 10, 0, 10, 1, 60, 0, 20, 4, 20, 2, 80, 1, 20, 3, 60, 1, 20, 1, 21, 3, 79, 1, 20, 1, 1700, 5, 7880, 7, 20, 0, 80, 4, 1900, 0, 21, 1, 79, 0, 21, 1, 79, 2, 22, 2, 4, 1, 374, 0, 21, 1, 79, 0, 21, 7, 79, 0, 21, 7, 79, 0, 21, 2, 79, 0, 20, 10, 80, 0, 20, 6, 780, 2, 20, 7, 180, 1, 20, 0, 2, 3, 78, 0, 20, 5, 4680, 3]);
67
+ // var prefix = function (source) {
68
+ // var src = [];
69
+ // do {
70
+ // var sheng = source[0]++;
71
+ // src.push(sheng);
72
+ // if (source[0] > source[1]) source.shift(), source.shift();
73
+ // } while (source.length);
74
+ // return src;
75
+ // }([11, 15, 21, 23, 31, 37, 41, 46, 50, 54, 61, 65, 71, 71, 81, 82]);
76
+ var birth = function (q) {
77
+ var d = new Date(1000, q % 12, 1 + q % 31);
78
+ d = new Date(+d + (Date.now() - d) * (1 - Math.pow(.5, q % 9 + 2)));
79
+ return d;
80
+ }
81
+ /**
82
+ * @param {Date} d;
83
+ */
84
+ var date = function (d = birth(), y = d.getFullYear()) {
85
+ return y * 10000 + (d.getMonth() + 1) * 100 + d.getDate();
86
+ };
87
+ var order = function (r = Math.random(), q = r * 20220309 | 0) {
88
+ return (Math.pow(r, q % 10 + 4) * 498 + 1 | 0);
89
+ };
90
+ var code = function (q = Math.random() * 202203091636) {
91
+ return String(prefix[q % prefix.length]);
92
+ };
93
+ var parse = function (r) {
94
+ var p, y, m, d, o, s, x;
95
+ if (typeof r === 'string') switch (r.length) {
96
+ case 18:
97
+ s = r.slice(17, 18);
98
+ case 17:
99
+ o = r.slice(14, 17);
100
+ case 14:
101
+ d = r.slice(12, 14);
102
+ case 12:
103
+ m = r.slice(10, 12);
104
+ case 10:
105
+ y = r.slice(6, 10);
106
+ case 6:
107
+ p = r.slice(0, 6);
108
+ break;
109
+ case 8:
110
+ y = r.slice(0, 4);
111
+ m = r.slice(4, 6);
112
+ d = r.slice(6, 8);
113
+ break;
114
+ case 4:
115
+ y = r.slice(0, 4);
116
+ break;
117
+ case 3:
118
+ o = r >> 1;
119
+ case 1:
120
+ x = o & 1;
121
+ break;
122
+ case 2:
123
+ m = r;
124
+ }
125
+ else if (r === 1 || r === 0) x = r;
126
+ return [p, y, m, d, o, x, s];
127
+ }
128
+ function sex(r = Math.random()) {
129
+ return r < .5 | 0;
130
+ }
131
+ function 身份证(r) {
132
+ var p17, middle;
133
+ if (typeof r === 'string' || r === 1 || r === 0) {
134
+ var r0 = Math.random();
135
+ var q = r0 * 20220309 | 0;
136
+ var d = birth(q);
137
+ var [p = code(q), y = d.getFullYear(), m = d.getMonth() + 1, d = d.getDate(), o = order(r0), x = sex(r0)] = parse(r);
138
+ middle = (y * 10000 + m * 100 + d) * 1000 + (o << 1 | x);
139
+ p17 = p + middle;
140
+ }
141
+ if (!p17) {
142
+ var q = r * 20220309 | 0;
143
+ var d = birth(q);
144
+ middle = (d.getFullYear() * 10000 + (d.getMonth() + 1) * 100 + d.getDate()) * 1000 + (order(r) << 1 | sex(r))
145
+ p17 = code(q) + middle;
146
+ }
147
+ var s = 0;
148
+ var a = [2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4, 8, 5, 10, 9, 7];
149
+ for (var p of p17) {
150
+ s += p * a.pop();
151
+ }
152
+ var end = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2][s % 11];
153
+ return p17 + end;
154
+ }
@@ -1,5 +1,5 @@
1
1
  return cross_.bind(function (callback, onerror) {
2
- var response, responseObject, responseType = "", error;
2
+ var response, responseObject, responseType = "", decoder, error;
3
3
  var xhr = {
4
4
  status: 0,
5
5
  readyState: 0,
@@ -11,7 +11,7 @@ return cross_.bind(function (callback, onerror) {
11
11
  get response() {
12
12
  if (responseType === "" || responseType === "text") {
13
13
  if (this.readyState !== 4) return '';
14
- return String(response);
14
+ return decoder ? decoder(response) : String(response);
15
15
  }
16
16
  else if (error) return null;
17
17
  if (responseObject !== null) return responseObject;
@@ -20,7 +20,7 @@ return cross_.bind(function (callback, onerror) {
20
20
  return response.buffer;
21
21
  case "json":
22
22
  if (!response) return null;
23
- responseObject = JSON.parse(String(response));
23
+ responseObject = JSON.parse(decoder ? decoder(response) : String(response));
24
24
  return responseObject;
25
25
  }
26
26
  return responseObject;
@@ -103,7 +103,12 @@ return cross_.bind(function (callback, onerror) {
103
103
  setRequestHeader(key, value) {
104
104
  this.headers[key] = value;
105
105
  },
106
-
106
+ overrideMimeType(type) {
107
+ responseType = type;
108
+ if (/gb(k|2312|18030)/.test(type)) {
109
+ decoder = require("../efront/gbk2utf8");
110
+ }
111
+ },
107
112
  };
108
113
  return xhr;
109
114
  }, null, undefined);