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.
- package/coms/basic/JSAM.js +22 -8
- package/package.json +1 -1
- package/public/efront.js +1 -1
package/coms/basic/JSAM.js
CHANGED
|
@@ -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)
|
|
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 =
|
|
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
|
|
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
|
-
|
|
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*\})
|
|
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);
|