efront 3.9.15 → 3.9.16

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.
@@ -0,0 +1,91 @@
1
+ var cookiesMap = {};
2
+ var parseCookieFromText = function (cookie) {
3
+ var pairs = cookie.split(/;\s*/);
4
+ var info = {};
5
+ for (var cx = 1, dx = pairs.length; cx < dx; cx++) {
6
+ var kvs = /^(.+?)\=(.+?)$/.exec(pairs[cx]);
7
+ if (!kvs) continue;
8
+ var [, k, v] = kvs;
9
+ k = k.trim().toLowerCase();
10
+ switch (k) {
11
+ case "expires":
12
+ v = +new Date(v);
13
+ break;
14
+ case "max-age":
15
+ k = "expires";
16
+ v = Date.now() + v * 1000;
17
+ break;
18
+ }
19
+ info[k] = v;
20
+ }
21
+ var pair = parseKV(pairs[0], ";");
22
+ return [pair, info];
23
+ };
24
+
25
+ function addCookie(cookie_text, originDomain = "") {
26
+ if (!cookie_text) return;
27
+ var cookies = cookie_text.replace(/(^|;|,)\s*(expires)=(\w*),([^=]*)(;|$)/ig, "$1$2=$3.$4$5")
28
+ .split(/,\s*/).map(parseCookieFromText);
29
+ for (var cookie of cookies) {
30
+ var [pair, info] = cookie;
31
+ var { path, domain, expires } = info;
32
+ if (!domain) {
33
+ domain = originDomain.replace(/[^\/]+$/, "");
34
+ }
35
+ if (/^\./.test(domain)) {
36
+ domain = domain.replace(/^\.+/, "");
37
+ }
38
+ var destPath;
39
+ if (/^\//.test(path)) {
40
+ destPath = domain.replace(/\/.*$/, "") + path;
41
+ } else {
42
+ destPath = domain;
43
+ }
44
+ destPath = destPath.replace(/\/+$/, "");
45
+ if (originDomain.indexOf(destPath) >= 0) {
46
+ if (!cookiesMap[destPath]) {
47
+ cookiesMap[destPath] = {};
48
+ }
49
+ var map = cookiesMap[destPath];
50
+ for (var k in pair) {
51
+ var v = pair[k];
52
+ map[k] = [v, expires];
53
+ }
54
+ }
55
+ }
56
+ }
57
+
58
+ function getCookies(domainPath) {
59
+ var cookieObject = {};
60
+ var splited = domainPath.split("/");
61
+ var domain = splited[0];
62
+ var now = Date.now();
63
+ do {
64
+ var copy = splited.slice(0);
65
+ do {
66
+ domainPath = copy.join("/");
67
+ var cookie = cookiesMap[domainPath];
68
+ if (cookie) {
69
+ for (var k in cookie) {
70
+ if (!cookieObject[k]) {
71
+ var [cook, expires] = cookie[k];
72
+ if (expires && expires < now) {
73
+ delete cookieObject[k];
74
+ continue;
75
+ }
76
+ cookieObject[k] = cook;
77
+ }
78
+ }
79
+ }
80
+ copy.pop();
81
+ } while (copy.length);
82
+ domain = domain.replace(/^.*?(\.|$)/, "");
83
+ splited[0] = domain;
84
+ } while (domain.length);
85
+ return serialize(cookieObject, ";");
86
+ }
87
+ return {
88
+ cookiesMap,
89
+ addCookie,
90
+ getCookies,
91
+ }
@@ -1,5 +1,8 @@
1
1
  var FormData = this.FormData;
2
- var cookiesMap = {};
2
+ var { cookiesMap, getCookies, addCookie } = cookie;
3
+ var saveCookie = lazy(function () {
4
+ sessionStorage.setItem(cookieItemsInSessionStorageKey, JSON.stringify(cookiesMap));
5
+ }, 20);
3
6
  // ///// 1 ////////// 2 /////// 3 //// 4 //
4
7
  var domainReg = /^(?:(https?)\:)?\/\/(.*?)(?:\/(.*?))?([\?#].*)?$/i;
5
8
  var base = domainReg.test(location.href) ? '/' : "http://efront.cc/";
@@ -33,71 +36,6 @@ function getRequestProtocol(url) {
33
36
  }
34
37
  return "http:";
35
38
  }
36
- function getCookies(domainPath) {
37
- var cookieObject = {};
38
- var splited = domainPath.split("/");
39
- var domain = splited[0];
40
- do {
41
- var copy = splited.slice(0);
42
- do {
43
- domainPath = copy.join("/");
44
- var cookie = cookiesMap[domainPath];
45
- if (cookie) {
46
- for (var k in cookie) {
47
- if (!cookieObject[k]) {
48
- cookieObject[k] = cookie[k];
49
- }
50
- }
51
- }
52
- copy.pop();
53
- } while (copy.length);
54
- domain = domain.replace(/^.*?(\.|$)/, "");
55
- splited[0] = domain;
56
- } while (domain.length);
57
- return serialize(cookieObject, ";");
58
- }
59
- function addCookie(cookie, originDomain = "") {
60
- if (cookie) {
61
- clearTimeout(addCookie.save_timer);
62
- addCookie.save_timer = setTimeout(function () {
63
- sessionStorage.setItem(cookieItemsInSessionStorageKey, JSON.stringify(cookiesMap));
64
- }, 20);
65
- cookie.replace(/(^|;|,)\s*(expires)=(\w*),([^=]*)(;|$)/ig, "$1$2=$3.$4$5")
66
- .split(/,\s*/).map(function (cookie) {
67
- var cookieObject = {};
68
- var result = cookie.split(/;\s*/);
69
- result.slice(1).map(function (kev) {
70
- var kvs = /^(.+?)\=(.+?)$/.exec(kev);
71
- if (kvs) {
72
- var [, k, v] = kvs;
73
- cookieObject[k.toLowerCase()] = v;
74
- }
75
- });
76
- var { path, domain } = cookieObject;
77
- if (!domain) {
78
- domain = originDomain.replace(/[^\/]+$/, "");
79
- }
80
- if (/^\./.test(domain)) {
81
- domain = domain.replace(/^\.+/, "");
82
- }
83
- var destPath;
84
- if (/^\//.test(path)) {
85
- destPath = domain.replace(/\/.*$/, "") + path;
86
- } else {
87
- destPath = domain;
88
- }
89
- destPath = destPath.replace(/\/+$/, "");
90
- if (originDomain.indexOf(destPath) >= 0) {
91
- var cookieMap = parseKV(result[0], ";");
92
- if (!cookiesMap[destPath]) {
93
- cookiesMap[destPath] = cookieMap;
94
- } else {
95
- extend(cookiesMap[destPath], cookieMap);
96
- }
97
- }
98
- });
99
- }
100
- }
101
39
  function isChildPath(relative, path) {
102
40
  return relative.replace(/^(.*\/)[^\/]*$/, path);
103
41
  }
@@ -174,6 +112,7 @@ function cross(method, url, headers) {
174
112
  if (xhr.getResponseHeader && !nocross) {
175
113
  var cookie = xhr.getResponseHeader("efront-cookie");
176
114
  addCookie(cookie, originDomain);
115
+ saveCookie();
177
116
  }
178
117
  switch (xhr.status) {
179
118
  case 0:
@@ -380,6 +319,7 @@ extend(cross, {
380
319
  setHost,
381
320
  addReform,
382
321
  getCookies,
322
+ saveCookie,
383
323
  addCookie,
384
324
  addDirect,
385
325
  getCrossUrl
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efront",
3
- "version": "3.9.15",
3
+ "version": "3.9.16",
4
4
  "description": "一个开发工具,开放源代码,自带组件库和编译环境,可以用来开发web组件,web应用或nodejs模块,或做为已有代码的加密工具,也可以做为静态页面服务器或跨域中转服务器使用",
5
5
  "main": "public/efront.js",
6
6
  "directories": {