efront 3.16.0 → 3.16.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.
@@ -42,6 +42,11 @@ var join = function (o) {
42
42
  return s;
43
43
  };
44
44
  function stringify(memery, preload) {
45
+ if (!isEmpty(preload)) {
46
+ preload = [].concat(preload);
47
+ var i = preload.indexOf(memery) + 1;
48
+ if (i > 0) return i + ',';
49
+ }
45
50
  if (memery === undefined) return '';
46
51
  if (check(memery)) return String(memery);
47
52
  if (typeof memery === 'symbol') return symbol(memery);
@@ -57,17 +62,22 @@ function stringify(memery, preload) {
57
62
  var trimed = [memery instanceof Array ? [] : {}];
58
63
  var objects = [trimed[0]];
59
64
  if (!isEmpty(preload)) dist = dist.concat(preload);
65
+ var preload_used = false;
60
66
  while (rest.length) {
61
67
  var memery = rest.shift();
62
68
  var o = objects.shift();
63
69
  var inc = 0, arr = [];
64
70
  o[""] = arr;
65
71
  o._ = dist.indexOf(memery.constructor);
72
+ if (o._ > 0) preload_used = true;
66
73
  for (var k in memery) {
67
74
  var m = memery[k];
68
75
  f: if (typeof m === 'function') {
69
76
  for (var k in m) break f;
70
- if (dist.indexOf(m) >= 0) break f;
77
+ if (dist.indexOf(m) >= 0) {
78
+ preload_used = true;
79
+ break f;
80
+ }
71
81
  continue;
72
82
  }
73
83
  if (inc === +k && k !== '') {
@@ -113,7 +123,7 @@ function stringify(memery, preload) {
113
123
  }
114
124
  }
115
125
  var result = trimed.map(join).join(',');
116
- if (trimed.length === 1) result += ',';
126
+ if (trimed.length === 1 && preload_used) result += ',';
117
127
  return result;
118
128
  }
119
129
  var create = function (a, dst) {
@@ -181,7 +191,7 @@ function parse(string, preload) {
181
191
  reg4.lastIndex = cx;
182
192
  var m = reg4.exec(string);
183
193
  o._ = typeid || string.slice(cx, m.index);
184
- cx = reg4.lastIndex;
194
+ cx = m.index;
185
195
  }
186
196
  break;
187
197
  case "/":
@@ -212,12 +222,10 @@ function parse(string, preload) {
212
222
  trimed.push(s);
213
223
  break;
214
224
  default:
215
- reg4.lastIndex = cx + 1;
225
+ reg4.lastIndex = cx;
216
226
  var match = reg4.exec(string);
217
227
  var index = match.index;
218
-
219
228
  var s = string.slice(cx, index);
220
- cx = index;
221
229
  switch (s) {
222
230
  case "null":
223
231
  s = null;
@@ -244,8 +252,10 @@ function parse(string, preload) {
244
252
 
245
253
  }
246
254
  trimed.push(s);
255
+ cx = index;
247
256
  }
248
257
  }
258
+ if (string.charAt(string.length - 1) === ',') trimed.push(undefined);
249
259
  var dist = [trimed[0]];
250
260
  if (!isEmpty(preload)) dist = dist.concat(preload);
251
261
  var preloads_length = dist.length - 1;
@@ -264,7 +274,8 @@ function parse(string, preload) {
264
274
  var t = dist[index];
265
275
  var arr = o[""];
266
276
  delete o[""];
267
- for (var k in arr) {
277
+ delete o._;
278
+ if (arr) for (var k in arr) {
268
279
  t[k] = dist[arr[k]];
269
280
  }
270
281
  for (var k in o) {
@@ -272,12 +283,15 @@ function parse(string, preload) {
272
283
  t[dist[k]] = dist[v];
273
284
  }
274
285
  }
286
+ if (trimed.length > 1 && typeof trimed[0] === 'number') {
287
+ return dist[trimed[0]];
288
+ }
275
289
  return dist[0];
276
290
  }
277
291
  module.exports = {
278
292
  stringify,
279
293
  parse(data, preload) {
280
- if (!/^\s*([\[\{]|\[\s*\]|\{\s*\})/.test(data)) return parse(data, preload);
294
+ if (!/^\s*([\[\{]|\[\s*\]|\{\s*\})$/.test(data)) return parse(data, preload);
281
295
  if (/^\s*\{[\d\,\:\s]*\}\s*,/.test(data)) return parse(data, preload);
282
296
  if (/^\s*\[[\d\,\:\s]*\]\s*,/.test(data)) return parse(data, preload);
283
297
  return JSON.parse(data, preload);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efront",
3
- "version": "3.16.0",
3
+ "version": "3.16.1",
4
4
  "description": "一个开发工具,开放源代码,自带组件库和编译环境,可以用来开发web组件,web应用或nodejs模块,或做为已有代码的加密工具,也可以做为静态页面服务器或跨域中转服务器使用",
5
5
  "main": "public/efront.js",
6
6
  "directories": {