efront 4.22.14 → 4.22.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.
@@ -1,3 +1,6 @@
1
+ - zh-CN: 无法存入数据到$1
2
+ en: Unable to deposit data to $1
3
+
1
4
  - zh-CN: "参数异常: $1"
2
5
  en: "Parameter exception: $1"
3
6
 
@@ -21,7 +21,7 @@
21
21
  }
22
22
  }
23
23
 
24
- :root {
24
+ :scope {
25
25
  height: 100%;
26
26
  overflow: auto;
27
27
  }
@@ -72,8 +72,10 @@
72
72
  (用户互访/visit/,open=false) swap // 不公开时检查此项`;
73
73
  var [db] = arguments;
74
74
  if (!db.fields) {
75
- var [da1] = await data.from('dbfind', { dbid: db.name, size: 1 });
76
- db.fields = da1 ? Object.keys(da1).map(k => ({ key: k })) : [];
75
+ try {
76
+ var [da1] = await data.from('dbfind', { dbid: db.name, size: 1 });
77
+ db.fields = da1 ? Object.keys(da1).map(k => ({ key: k })) : [];
78
+ } catch { }
77
79
  }
78
80
  var editAction = function (a) {
79
81
  popup('#/db/act', [db, a]);
@@ -41,6 +41,7 @@
41
41
  var a = button;
42
42
  var load = async function name(params) {
43
43
  dbs = await data.from("dball");
44
+ dbs.forEach(db => db.name = db.name || db.id);
44
45
  };
45
46
  load();
46
47
  var adddb = async function () {
@@ -1,14 +1,14 @@
1
- var isEmpty = require("./isEmpty");
2
- var convertReg = /^(?:object|function)$/;
3
- var hasOwnProperty = Object.prototype.hasOwnProperty;
1
+ var strings = require("./strings");
2
+ var spaces = require("./spaces");
3
+ var isArrayLike = require("./isArrayLike");
4
4
  var check = function (o) {
5
- return o === null || typeof o === 'bigint' || o instanceof BigInt || typeof o === 'number' || typeof o === "boolean";
5
+ return o === null || o === false || o === true || o === Infinity || o !== o;
6
6
  };
7
7
  var string = function (a) {
8
- return "\"" + String(a).replace(/\\/g, "\\\\").replace(/"/g, '\\$&') + "\"";
8
+ return strings.encode(a, '"', false);
9
9
  };
10
10
  var symbol = function (a) {
11
- return "\'" + String(a).replace(/^\w*\(([\s\S]*)\)$/, '$1').replace(/\\/g, "\\\\").replace(/'/g, '\\$&') + "\'";
11
+ return strings.encode(String(a).replace(/^\w*\(([\s\S]*)\)$/, '$1'), "'");
12
12
  };
13
13
  var date = function (d) {
14
14
  return d.toISOString();
@@ -17,288 +17,224 @@ var regrep = a => a === '/' ? "\\/" : a;
17
17
  var regexp = function (r) {
18
18
  return '/' + r.source.replace(/\\[\s\S]|\//g, regrep) + '/' + r.flags;
19
19
  };
20
- var join = function (o) {
21
- if (o === undefined) return '';
22
- if (check(o)) return String(o);
23
- if (typeof o === 'symbol' || o instanceof Symbol) return symbol(o);
24
- if (typeof o !== 'object') return string(o);
25
- if (o instanceof Date) return date(o);
26
- if (o instanceof RegExp) return regexp(o);
27
- var arr = o[""];
28
- delete o[""];
29
- var typeid = o._;
30
- delete o._;
31
- var pairs = [].concat(arr);
32
- for (var k in o) {
33
- pairs.push(k + ':' + o[k]);
34
- }
35
- var s;
36
- if (o instanceof Array) {
37
- s = `[${pairs.join(',')}]`;
38
- }
39
- else {
40
- s = `{${pairs.join(',')}}`;
41
- }
42
- if (typeid > 0) s = typeid + s;
43
- return s;
20
+ var isValidK = function (k) {
21
+ return k.length < 16 && !/^\d|[,:'"\\\/`\-\[\]\{\}\(\)\.\+\#\@\&^]/.test(k) && spaces.trim(k) === k;
44
22
  };
45
- function stringify(memery, preload) {
46
- if (!isEmpty(preload)) {
47
- preload = [].concat(preload);
48
- var i = preload.indexOf(memery) + 1;
49
- if (i > 0) return i + ',';
50
- }
23
+ var extractK = function (k) {
24
+ return k.length < 16 && isFinite(k);
25
+ };
26
+ var noDulp = false, plength = 0;
27
+ function _tostring(memery, preload, dist) {
51
28
  if (memery === undefined) return '';
52
29
  if (check(memery)) return String(memery);
53
- if (typeof memery === 'symbol') return symbol(memery);
54
- if (memery instanceof Date) return date(memery);
55
- if (memery instanceof RegExp) return regexp(memery);
56
- if (!convertReg.test(typeof memery)) return string(memery);
30
+ if (typeof memery === 'number') {
31
+ if (memery < 0) return String(memery);
32
+ return "+" + String(memery);
33
+ }
34
+ if (typeof memery === 'string') return string(memery);
35
+ if (typeof memery === 'symbol' || memery instanceof Symbol) return symbol(memery);
36
+ if (typeof memery === 'bigint' || memery instanceof BigInt) return String(memery) + "n";
57
37
  m: if (typeof memery === 'function') {
58
38
  for (var k in memery) break m;
59
39
  return '';
60
40
  }
61
- var dist = [memery];
62
- var rest = [memery];
63
- var trimed = [memery instanceof Array ? [] : {}];
64
- var objects = [trimed[0]];
65
- if (!isEmpty(preload)) dist = dist.concat(preload);
66
- var preload_used = false;
67
- while (rest.length) {
68
- var memery = rest.shift();
69
- var o = objects.shift();
70
- var inc = 0, arr = [];
71
- o[""] = arr;
72
- o._ = dist.indexOf(memery.constructor);
73
- if (o._ > 0) preload_used = true;
74
- for (var k in memery) {
75
- var m = memery[k];
76
- f: if (typeof m === 'function') {
77
- for (var k in m) break f;
78
- if (dist.indexOf(m) >= 0) {
79
- preload_used = true;
80
- break f;
81
- }
82
- continue;
83
- }
84
- if (inc === +k && k !== '') {
85
- var kindex = "";
86
- inc++;
87
- } else {
88
- var kindex = dist.indexOf(k);
89
- if (!~kindex) {
90
- kindex = dist.length;
91
- dist.push(k);
92
- trimed.push(k);
93
- }
94
- }
95
- var index = dist.indexOf(m);
96
- if (!~index) {
97
- index = dist.length;
98
- dist.push(m);
99
- if (m !== null) {
100
- if (m instanceof Date) {
101
- trimed.push(m);
102
- }
103
- else if (m instanceof RegExp) {
104
- trimed.push(m);
105
- }
106
- else if (convertReg.test(typeof m)) {
107
- rest.push(m);
108
- var t = m instanceof Array ? [] : {};
109
- trimed.push(t);
110
- objects.push(t);
111
- }
112
- else {
113
- trimed.push(m);
114
- }
115
- } else {
116
- trimed.push(m);
117
- }
41
+ if (memery instanceof Date) return date(memery);
42
+ if (memery instanceof RegExp) return regexp(memery);
43
+ var d = preload.indexOf(memery.constructor);
44
+ var pre = memery instanceof Array ? "[" : "{";
45
+ var aft = pre === "{" ? "}" : "]"
46
+ if (d >= 0) pre = d + pre;
47
+ var inc = 0, arr = [];
48
+ var index = dist.length;
49
+ dist.push(undefined);
50
+ for (var k in memery) {
51
+ var v = memery[k];
52
+ if (v && typeof v === 'object' || typeof v === 'function') {
53
+ var i = preload.indexOf(v);
54
+ if (i >= 0) {
55
+ if (noDulp) throw new Error(i18n`数据异常`);
56
+ v = i;
118
57
  }
119
- if (kindex === '') {
120
- arr.push(index);
121
- } else {
122
- o[kindex] = index;
58
+ else {
59
+ i = plength;
60
+ preload.push(v);
61
+ plength++;
62
+ _tostring(v, preload, dist);
63
+ if (noDulp) preload.pop();
64
+ v = i;
123
65
  }
124
66
  }
67
+ else {
68
+ v = _tostring(v, preload);
69
+ }
70
+
71
+ if (k && +k === inc) {
72
+ arr.push(v);
73
+ }
74
+ else {
75
+ if (extractK(k)) k = "+" + k;
76
+ else if (!isValidK(k)) k = string(String(k));
77
+ arr.push(k + ":" + v);
78
+ }
79
+ inc++;
125
80
  }
126
- var result = trimed.map(join).join(',');
127
- if (trimed.length === 1 && preload_used) result += ',';
128
- return result;
81
+ dist[index] = pre + arr.join(',') + aft;
82
+ return dist[index];
129
83
  }
130
- var create = function (a, dst) {
131
- if (!a) return;
132
- var arr = a.split(',');
133
- var rest = [];
134
- for (var cx = 0, dx = arr.length; cx < dx; cx++) {
135
- var s = arr[cx].split(":");
136
- var k = s[0], v = s[1];
137
- if (v === undefined) {
138
- rest.push(k);
139
- } else {
140
- dst[k] = +v;
141
- }
84
+
85
+ function stringify(memery, preload, hasDulp = true) {
86
+ noDulp = preload === false || hasDulp === false;
87
+ if (isArrayLike(hasDulp)) preload = hasDulp;
88
+ if (isArrayLike(preload)) {
89
+ preload = Array.apply(null, preload);
90
+ var i = preload.indexOf(memery) + 1;
91
+ if (i > 0) return i + ',';
92
+ preload.unshift(memery);
142
93
  }
143
- dst[""] = rest;
144
- };
145
- function parse(string, preload) {
146
- string = String(string);
147
- var trimed = [];
148
- var reg0 = /\d+/g;
149
- var reg1 = /\}/g;
150
- var reg2 = /\]/g;
151
- var reg3 = /\\[\s\S]|"/g;
152
- var reg4 = /,|$/g;
153
- var reg5 = /\\[\s\S]|\//g;
154
- var reg6 = /\\[\s\S]|'/g;
155
- var marked = [];
156
- for (var cx = 0, dx = string.length; cx < dx; cx++) {
157
- var s = string.charAt(cx);
158
- var reg = null, o = null;
159
- reg0.lastIndex = 0;
160
- var typeid = 0;
161
- var m = reg0.test(string.charAt(cx));
162
- if (m) {
163
- reg0.lastIndex = cx;
164
- var m = reg0.exec(string);
165
- if (/^[\[\{]$/.test(string.charAt(reg0.lastIndex))) {
166
- typeid = +m[0];
167
- cx = reg0.lastIndex;
168
- s = string.charAt(reg0.lastIndex);
94
+ else preload = [memery];
95
+ var dist = [];
96
+ plength = preload.length;
97
+ dist[0] = _tostring(memery, preload, dist);
98
+ return dist.join(',');
99
+ }
100
+ function parseValue(v) {
101
+ if (/^"/.test(v)) return strings.decode(v);
102
+ if (/^[\+\-]?\d+n$/.test(v)) return BigInt(v.slice(0, v.length - 1));
103
+ if (/^[\+\-]\d/.test(v)) return parseFloat(v);
104
+ if (/^\d+[\-\/]/.test(v)) return new Date(v);
105
+ if (/^\d/.test(v)) return parseFloat(v);
106
+ switch (v) {
107
+ case "true": return true;
108
+ case "false": return false;
109
+ case "null": return null;
110
+ case "": return undefined;
111
+ case "Infinity": return Infinity;
112
+ case "NaN": return NaN;
113
+ }
114
+ if (/^\//.test(v)) {
115
+ var flag = /\/(\w*)$/.exec(v);
116
+ return new RegExp(v.slice(1, flag.index), flag[1]);
117
+ }
118
+ if (/^'/.test(v)) return Symbol(strings.decode(v));
119
+ return v;
120
+ }
121
+ function setkd([obj, kds]) {
122
+ if (!isjsam) return kds.forEach(setkv, obj);
123
+ for (var [k, d] of kds) {
124
+ if (typeof k === 'number');
125
+ else if (/^\d+$/.test(k)) k = this[k];
126
+ else k = parseValue(k);
127
+ if (d instanceof Object);
128
+ else if (d.length <= 16 && /^\d+$/.test(d)) d = this[d];
129
+ else d = parseValue(d);
130
+ obj[k] = d;
131
+ }
132
+ }
133
+ function setkv([k, v]) {
134
+ if (typeof k === 'number');
135
+ else if (/^\d+$/.test(k));
136
+ else k = parseValue(k);
137
+ if (v instanceof Object);
138
+ else v = parseValue(v);
139
+ this[k] = v;
140
+ }
141
+ var blocks = [];
142
+ var isjsam = false;
143
+ function scanblock(string, index, preload, obj) {
144
+ var reg = /\\[\s\S]|[\:,'"\}\]\{\[\/]/g;
145
+ reg.lastIndex = index;
146
+ var instr = false;
147
+ var inc = index === 0 ? preload.length : 1, k = 0, d = null;
148
+ var start = index;
149
+ var kds = [];
150
+ a: while (index < string.length) {
151
+ var match = reg.exec(string);
152
+ if (!match) {
153
+ index = string.length;
154
+ break;
155
+ }
156
+ var m = match[0];
157
+ index = match.index + m.length;
158
+ if (/^['"\/]$/.test(m)) {
159
+ if (instr === m) {
160
+ instr = false;
169
161
  }
162
+ else if (instr) continue;
163
+ else instr = m;
170
164
  }
171
- switch (s) {
165
+ else if (instr) continue;
166
+ switch (m) {
167
+ case ":":
168
+ if (index > start + 10 && /^\d+[\/\-]/.test(string.slice(start, start + 10))) {
169
+ continue;
170
+ }
171
+ k = spaces.trim(string.slice(start, match.index));
172
+ start = index;
173
+ continue;
172
174
  case ",":
173
- trimed.push(undefined);
174
- break;
175
+ d = spaces.trim(string.slice(start, match.index));
176
+ if (preload === obj) isjsam = true;
177
+ if (!d && typeof k === 'number') {
178
+ start = index;
179
+ k = inc++;
180
+ continue;
181
+ }
182
+ if (preload === obj) {
183
+ preload[k] = parseValue(d);
184
+ }
185
+ else kds.push([k, d]);
186
+ k = inc++;
187
+ start = index;
188
+ continue;
175
189
  case "{":
176
- reg = reg1;
177
- o = {};
190
+ var o = {};
178
191
  case "[":
179
- o = o || [];
180
- reg = reg || reg2;
181
- reg.lastIndex = cx + 1;
182
- reg.exec(string);
183
- var index = reg.lastIndex;
184
- var s = string.slice(cx + 1, index - 1);
185
- create(s, o);
186
- marked.push(trimed.length);
187
- trimed.push(o);
188
- cx = reg.lastIndex;
189
- if (typeid) {
190
- o._ = typeid;
192
+ var o = o || [];
193
+ d = spaces.trim(string.slice(start, match.index));
194
+ if (d) {
195
+ d = preload[d];
196
+ if (!d) throw new Error('数据异常!');
197
+ if (Object.setPrototypeOf) Object.setPrototypeOf(o, d.prototype);
198
+ else o = Object.create(d.prototype);
191
199
  }
192
- if (/\d/.test(string.charAt(cx))) {
193
- reg4.lastIndex = cx;
194
- var m = reg4.exec(string);
195
- o._ = typeid || string.slice(cx, m.index);
196
- cx = m.index;
200
+ if (preload === obj) {
201
+ preload[k] = o;
197
202
  }
198
- break;
199
- case "/":
200
- reg = reg5;
201
- o = 1;
202
- case "'":
203
- reg = reg || reg6;
204
- o = o || 2;
205
- case "\"":
206
- reg = reg || reg3;
207
- reg.lastIndex = cx + 1;
208
- do {
209
- var s = reg.exec(string);
210
- } while (s && s[0].length === 2);
211
- var index = reg.lastIndex;
212
- s = string.slice(cx + 1, index - 1).replace(/\\([\s\S])/g, '$1');
213
- cx = index;
214
- if (o == 2) {
215
- s = Symbol(s);
216
- } else if (o == 1) {
217
- reg4.lastIndex = index;
218
- var m = reg4.exec(string);
219
- index = m.index;
220
- var flag = string.slice(cx, index);
221
- cx = index;
222
- s = new RegExp(s, flag);
203
+ else {
204
+ kds.push([k, o]);
223
205
  }
224
- trimed.push(s);
206
+ index = start = scanblock(string, index, preload, o, isjsam);
207
+ o = null;
208
+ k = inc;
209
+ reg.lastIndex = index;
225
210
  break;
226
- default:
227
- reg4.lastIndex = cx;
228
- var match = reg4.exec(string);
229
- var index = match.index;
230
- var s = string.slice(cx, index);
231
- switch (s) {
232
- case "null":
233
- s = null;
234
- break;
235
- case "true":
236
- s = true;
237
- break;
238
- case "false":
239
- s = false;
240
- break;
241
- default:
242
- if (/^\d+[\/\-]/i.test(s)) {
243
- s = new Date(s);
244
- }
245
- else if (/^\-?\d+$/.test(s)) {
246
- if (s.length > 15) {
247
- s = BigInt(s);
248
- } else {
249
- s = parseInt(s);
250
- }
251
- } else {
252
- s = parseFloat(s);
253
- }
254
-
255
- }
256
- trimed.push(s);
257
- cx = index;
211
+ case "}": case "]":
212
+ index = match.index;
213
+ break a;
258
214
  }
259
215
  }
260
- if (string.charAt(string.length - 1) === ',') trimed.push(undefined);
261
- var dist = [trimed[0]];
262
- if (!isEmpty(preload)) dist = dist.concat(preload);
263
- var preloads_length = dist.length - 1;
264
- dist = dist.concat(trimed.slice(1, trimed.length));
265
-
266
- for (var cx = 0, dx = marked.length; cx < dx; cx++) {
267
- var index = marked[cx];
268
- var o = trimed[index];
269
- if (index > 0) index += preloads_length;
270
- if (o._ > 0) dist[index] = Object.create(dist[o._].prototype);
271
- else dist[index] = o instanceof Array ? [] : {};
272
- }
273
- for (var cx = 0, dx = marked.length; cx < dx; cx++) {
274
- var index = marked[cx];
275
- var o = trimed[index];
276
- if (index > 0) index += preloads_length;
277
- var t = dist[index];
278
- var arr = o[""];
279
- delete o[""];
280
- delete o._;
281
- if (arr) for (var k in arr) {
282
- if (hasOwnProperty.call(arr, k)) t[k] = dist[arr[k]];
216
+ if (start < index) {
217
+ var d = spaces.trim(string.slice(start, index));
218
+ if (typeof k !== 'number' || d) {
219
+ if (obj === preload) preload[k] = parseValue(d);
220
+ else kds.push([k, d]);
283
221
  }
284
- for (var k in o) {
285
- if (hasOwnProperty.call(o, k)) {
286
- var v = o[k];
287
- t[dist[k]] = dist[v];
288
- }
289
- }
290
- }
291
- if (trimed.length > 1 && typeof trimed[0] === 'number') {
292
- return dist[trimed[0]];
293
222
  }
294
- return dist[0];
223
+ blocks.push([obj, kds]);
224
+ return reg.lastIndex;
225
+ }
226
+ function parse(string, preload) {
227
+ if (isArrayLike(preload)) preload = Array.apply(null, preload);
228
+ else preload = [];
229
+ isjsam = false;
230
+ preload.unshift(void 0);
231
+ string = String(string);
232
+ scanblock(string, 0, preload, preload);
233
+ blocks.forEach(setkd, preload);
234
+ blocks = [];
235
+ return preload[0];
295
236
  }
296
237
  module.exports = {
297
238
  stringify,
298
- parse(data, preload) {
299
- if (/^\s*[^\{\[\s]|^\s*(?:\[\s*\]|\{\s*\}|)\s*$/.test(data)) return parse(data, preload);
300
- if (/^\s*\{[\d\,\:\s]*\}\s*,/.test(data)) return parse(data, preload);
301
- if (/^\s*\[[\d\,\:\s]*\]\s*,/.test(data)) return parse(data, preload);
302
- return JSON.parse(data);
303
- }
239
+ parse,
304
240
  };
@@ -37,6 +37,8 @@ var test_self = function () {
37
37
  test({ a: false }) // {1:2},"a",false
38
38
  test({ a: null }) // {1:2},"a",null
39
39
  test({ a: 0 }) // {1:2},"a",0
40
+ test({ a: [0] }) // {a:2},"a",0
41
+ test({ 2: [0] }) // {a:2},"a",0
40
42
  test({ a: NaN }) // {1:2},"a",NaN
41
43
  test({ a: { b: { c: [3], d: [2] } } }) // {1:2},"a",{3:4},"b",{5:6,7:8},"c",[9],"d",[10],3,2
42
44
  test({ a: { b: { c: [3, o], d: [2] } } }) // {1:2},"a",{3:4},"b",{5:6,7:8},"c",[9,10],"d",[11],3,{12:10},2,"o"
@@ -46,6 +48,8 @@ var test_self = function () {
46
48
  d = { c };
47
49
  a.d = d;
48
50
  test(a); // {1:2},"d",{3:4},"c",[5],{6:0},"a"
51
+ test([{ "name": "用户", "open": true }, { "name": "导航", "open": true }, { "name": "商品", "open": true },]);
52
+ console.log(JSAM.parse(`[1:2,3:2,4:5,6:7,8:2,9:2,10:2,11:2,12:13,14:13,15:16],"is_errored",null,"error_message","is_loading",false,"is_loaded",true,"is_readonly","loading","loading_promise","data","appid",,"sign","smap",{17:7,18:7},"zh","en"`))
49
53
  };
50
54
  function test2(obj) {
51
55
  var data = JSAM.parse(JSON.stringify(obj));
@@ -55,8 +59,31 @@ function test_json() {
55
59
  test2({ 1: 2 });
56
60
  test2({ "adfasdf": 22 });
57
61
  test2([12, 23]);
62
+ test2({ "uptime": 15.602063, "memery": [22244769792, 38478614528], "arch": "x64", "platform": "win32", "nodeVersion": "v22.14.0", "version": "4.22.13", "machine": "x86_64" });
63
+ test2([{ "name": "用户", "open": true }, { "name": "导航", "open": true }, { "name": "商品", "open": true },]);
64
+ }
65
+ function gettime(f) {
66
+ var timestart = Date.now();
67
+ f();
68
+ return Date.now() - timestart;
69
+ }
70
+ function test_time() {
71
+ var data = Array(10000).fill(0).map((a, i) => (
72
+ { obj: { obj: { [i >>> 6]: i }, obj2: ["您好,这是速度测试"], obj3: { key2: {} } }, key: 'asad' }
73
+ ));
74
+ var t1 = gettime(() => basic_$JSON.stringify(data));
75
+ console.log(t1);
76
+ var t2 = gettime(() => JSON.stringify(data));
77
+ console.log(t2);
78
+ var t3 = gettime(() => JSAM.stringify(data));
79
+ console.log(t1, t2, t3);
80
+ var t4 = gettime(() => JSAM.stringify(data, false));
81
+ console.log(t1, t2, t3, t4);
58
82
  }
59
83
  function JSAM_test() {
84
+ JSAM.debug = true;
60
85
  test_self();
61
86
  test_json();
87
+ JSAM.debug = false;
88
+ test_time();
62
89
  }
@@ -375,7 +375,7 @@ var parseData = function (sourceText) {
375
375
  sourceText = sourceText.replace(/^[^\(]+\(([\s\S]*)\)[^\)]*$/, "$1");
376
376
  }
377
377
  try {
378
- if (/^[\[\{][\d\:,]+[\}\]],|^(Infinity|''|NaN|\d+|)$|^\/[\s\S]*?\/\w*$/.test(sourceText)) {
378
+ if (/^[\[\{]|^[+\-]\d|^\d+[\/\-]|\dn$|^(Infinity|''|NaN|\d+|)$|^\/[\s\S]*?\/\w*$/.test(sourceText)) {
379
379
  sourceText = JSAM.parse(sourceText);
380
380
  } else {
381
381
  sourceText = parseYML(sourceText);
@@ -1061,6 +1061,12 @@ var data = {
1061
1061
  fireListener(instanceId, data);
1062
1062
  return instanceDataMap[instanceId];
1063
1063
  },
1064
+ wetInstance(instanceId, data, rememberWithStorage) {
1065
+ instanceHasDulpData = false;
1066
+ var res = this.setInstance(instanceId, data, rememberWithStorage);
1067
+ instanceHasDulpData = true;
1068
+ return res;
1069
+ },
1064
1070
  patchInstance(instanceId, data, rememberWithStorage = 0) {
1065
1071
  var instance = this.getInstance(instanceId);
1066
1072
  extend(instance, data);
@@ -1136,14 +1142,21 @@ var data = {
1136
1142
  extend(instance, data);
1137
1143
  }
1138
1144
  };
1139
-
1145
+ var instanceHasDulpData = true;
1140
1146
  function setItem(instanceId, data, rememberWithStorage = 0) {
1141
1147
  const storageId = userPrefix + instanceId + pagePathName;
1148
+ var buff = null;
1142
1149
  if (rememberWithStorage !== false) {
1143
- sessionStorage.setItem(storageId, JSAM.stringify(data));
1150
+ try {
1151
+ sessionStorage.setItem(storageId, buff = JSAM.stringify(data, instanceHasDulpData));
1152
+ } catch (e) { console.error(i18n`无法存入数据到${"sessionStorage"}`, instanceId, e) }
1144
1153
  }
1145
1154
  if (rememberWithStorage) {
1146
- localStorage.setItem(storageId, JSAM.stringify(data));
1155
+ try {
1156
+ localStorage.setItem(storageId, buff || JSAM.stringify(data, instanceHasDulpData));
1157
+ } catch (e) {
1158
+ console.error(i18n`无法存入数据到${"localStorage"}`, instanceId, e)
1159
+ }
1147
1160
  }
1148
1161
  }
1149
1162
 
@@ -1,6 +1,6 @@
1
1
  var window = this;
2
2
  function isArrayLike(a) {
3
- if (a === null || a === window || typeof a !== 'object' || isNode(a)) return false;
3
+ if (a == null || typeof a !== 'object' || a.window === a || isNode(a)) return false;
4
4
  if (isFinite(a.length)) {
5
5
  if (a.length > 0) {
6
6
  return a.length - 1 in a;
@@ -8,4 +8,5 @@ function isArrayLike(a) {
8
8
  return true;
9
9
  }
10
10
  return false;
11
- }
11
+ }
12
+ module.exports = isArrayLike;