zkjson 0.1.20 → 0.1.22

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. package/encoder.js +74 -74
  2. package/package.json +1 -1
  3. package/parse.js +161 -162
  4. package/uint.js +255 -203
package/uint.js CHANGED
@@ -1,61 +1,67 @@
1
1
  function digits(x) {
2
- if (x == 0) return 1
3
- var p = 0
2
+ if (x == 0) return 1n
3
+ var p = 0n
4
4
  while (x > 0) {
5
- x = (x / 10) >> 0 // x = x \ 10
5
+ x = (x / 10n) >> 0n
6
6
  p++
7
7
  }
8
8
  return p
9
9
  }
10
10
 
11
- const arr = row => {
11
+ function arr(row) {
12
12
  var _arr = []
13
13
  for (var i = 0; i < row; i++) {
14
- _arr.push(0)
14
+ _arr.push(0n)
15
15
  }
16
16
  return _arr
17
17
  }
18
18
 
19
- const toArray = (json, size) => {
19
+ function toArray(json, size) {
20
+ json = bn(json)
20
21
  var j = []
21
- var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
22
+ var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
22
23
  while (c[5] == 0) {
23
24
  c = next(json, c)
24
25
  j.push(c[0])
25
26
  }
26
- return j
27
+ return j.map(n => Number(n))
27
28
  }
28
29
 
29
-
30
- const arrPush = (json, size, digit, index, val) => {
30
+ function arrPush(json, size, digit, index, val) {
31
+ json = bn(json)
32
+ index = bn(index)
31
33
  var len = get(json, size, 0)
32
- var _sum = sum(json, size, digit, 1, index + 2)
33
- var at = _sum + 1 + len
34
+ var _sum = sum(json, size, digit, 1, index + 2n)
35
+ var at = _sum + 1n + len
34
36
  json = insert(json, size, digit, at, val)
35
- var alen = get(json, size, index + 1)
36
- json = replace(json, size, digit, index + 1, alen + 1)
37
+ var alen = get(json, size, index + 1n)
38
+ json = replace(json, size, digit, index + 1n, alen + 1n)
37
39
  return json
38
40
  }
39
41
 
40
- const arrGet = (json, size, digit, index, index2) => {
42
+ function arrGet(json, size, digit, index, index2) {
43
+ json = bn(json)
44
+ index = bn(index)
45
+ index2 = bn(index2)
41
46
  var len = get(json, size, 0)
42
- var _sum = sum(json, size, digit, 1, index + 1)
43
- var at = _sum + 1 + len + index2
47
+ var _sum = sum(json, size, digit, 1, index + 1n)
48
+ var at = _sum + 1n + len + index2
44
49
  return get(json, size, at)
45
50
  }
46
51
 
47
- const pushArray = (json, size, digit, _arr, asize) => {
48
- var jlen = length(json,size)
49
- var alen = 0
50
- if(jlen == 0) {
52
+ function pushArray(json, size, digit, _arr, asize) {
53
+ json = bn(json)
54
+ var jlen = length(json, size)
55
+ var alen = 0n
56
+ if (jlen == 0) {
51
57
  json = push(json, size, digit, 1)
52
- }else{
58
+ } else {
53
59
  alen = get(json, size, 0)
54
- json = replace(json, size, digit, 0, alen + 1)
60
+ json = replace(json, size, digit, 0, alen + 1n)
55
61
  }
56
- var len = length(_arr,size)
57
- json = insert(json, size, digit, alen + 1, len)
58
- var c = [0, asize, 0, 0, 0, 0, 0, 0, 0]
62
+ var len = length(_arr, size)
63
+ json = insert(json, size, digit, alen + 1n, len)
64
+ var c = bn([0, asize, 0, 0, 0, 0, 0, 0, 0])
59
65
  while (c[5] == 0) {
60
66
  c = next(_arr, c)
61
67
  json = push(json, size, digit, c[0])
@@ -63,45 +69,45 @@ const pushArray = (json, size, digit, _arr, asize) => {
63
69
  return json
64
70
  }
65
71
 
66
- const popArray = (json, size, digit) => {
67
- var jlen = length(json,size)
68
- var alen = 0
69
- if(jlen == 0) {
72
+ function popArray(json, size, digit) {
73
+ json = bn(json)
74
+ var jlen = length(json, size)
75
+ var alen = 0n
76
+ if (jlen == 0) {
70
77
  throw Error()
71
- }else{
78
+ } else {
72
79
  alen = get(json, size, 0)
73
80
  }
74
- if(alen == 1) return []
81
+ if (alen == 1) return []
75
82
  var len = get(json, size, alen)
76
- json = replace(json, size, digit, 0, alen - 1)
83
+ json = replace(json, size, digit, 0, alen - 1n)
77
84
  var _sum = sum(json, size, digit, 1, alen)
78
- var start = alen + 1 +_sum
79
- var end = start + len + 1
80
- json = remove(json, size, digit, start, end)
81
- json = remove(json, size, digit, alen, alen + 1)
85
+ var start = alen + 1n + _sum
86
+ var end = start + len + 1n
87
+ json = remove(json, size, digit, start, end)
88
+ json = remove(json, size, digit, alen, alen + 1n)
82
89
  return json
83
90
  }
84
91
 
85
-
86
- const length = (json, size) => {
87
- var _len = 0
88
- var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
89
- var nonzero = 0
92
+ function length(json, size) {
93
+ json = bn(json)
94
+ var _len = 0n
95
+ var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
90
96
  while (c[5] == 0) {
91
97
  c = next(json, c)
92
- if (c[0] > 0) nonzero = 1
93
98
  _len++
94
99
  }
95
- if (nonzero) {
100
+ if (json[0] != 0) {
96
101
  return _len
97
102
  } else {
98
103
  return 0
99
104
  }
100
105
  }
101
106
 
102
- const sum = (json, size, digit, start, end) =>{
103
- var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
104
- var _sum = 0
107
+ function sum(json, size, digit, start, end) {
108
+ json = bn(json)
109
+ var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
110
+ var _sum = 0n
105
111
  var i = 0
106
112
  while (c[5] == 0) {
107
113
  c = next(json, c)
@@ -111,8 +117,9 @@ const sum = (json, size, digit, start, end) =>{
111
117
  return _sum
112
118
  }
113
119
 
114
- const mul = (json, size, digit, start, end) =>{
115
- var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
120
+ function mul(json, size, digit, start, end) {
121
+ json = bn(json)
122
+ var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
116
123
  var _mul = 0
117
124
  var i = 0
118
125
  while (c[5] == 0) {
@@ -123,83 +130,93 @@ const mul = (json, size, digit, start, end) =>{
123
130
  return _mul
124
131
  }
125
132
 
126
- const remove = (json, size, digit, start, end) =>{
133
+ function remove(json, size, digit, start, end) {
134
+ json = bn(json)
127
135
  var _arr = arr(size)
128
- var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
136
+ var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
129
137
  var i = 0
130
138
  while (c[5] == 0) {
131
139
  c = next(json, c)
132
- if (i < start || i >= end) push(_arr, size, digit, c[0])
140
+ if (i < start || i >= end) {
141
+ _arr = push(_arr, size, digit, c[0])
142
+ }
133
143
  i++
134
144
  }
135
145
  return _arr
136
146
  }
137
147
 
138
- const slice = (json, size, digit, start, end) =>{
148
+ function slice(json, size, digit, start, end) {
149
+ json = bn(json)
139
150
  var _arr = arr(size)
140
- var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
151
+ var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
141
152
  var i = 0
142
153
  while (c[5] == 0) {
143
154
  c = next(json, c)
144
- if (i >= start && i < end) push(_arr, size, digit, c[0])
155
+ if (i >= start && i < end) _arr = push(_arr, size, digit, c[0])
145
156
  i++
146
157
  }
147
158
  return _arr
148
159
  }
149
160
 
150
- const get = (json,size,index) =>{
151
- var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
161
+ function get(json, size, index) {
162
+ json = bn(json)
163
+ var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
152
164
  var i = 0
153
165
  while (c[5] == 0) {
154
166
  c = next(json, c)
155
- if(i == index) return c[0]
167
+ if (i == index) return c[0]
156
168
  i++
157
169
  }
158
170
  throw Error()
159
171
  }
160
172
 
161
- const insert = (json, size, digit, at, val) =>{
173
+ function insert(json, size, digit, at, val) {
174
+ json = bn(json)
162
175
  var _arr = arr(size)
163
- var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
176
+ var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
164
177
  var i = 0
165
- if(at == 0) {
178
+ if (at == 0) {
166
179
  _arr = push(_arr, size, digit, val)
167
180
  }
168
181
  while (c[5] == 0) {
169
182
  c = next(json, c)
170
- push(_arr, size, digit, c[0])
183
+ _arr = push(_arr, size, digit, c[0])
171
184
  i++
172
- if(at == i) push(_arr, size, digit, val)
185
+ if (at == i) _arr = push(_arr, size, digit, val)
173
186
  }
174
187
  return _arr
175
188
  }
176
189
 
177
- const replace = (json, size, digit, at, val) =>{
190
+ function replace(json, size, digit, at, val) {
191
+ json = bn(json)
178
192
  var _arr = arr(size)
179
- var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
193
+ var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
180
194
  var i = 0
181
195
  while (c[5] == 0) {
182
196
  c = next(json, c)
183
- if(at == i) {
197
+ if (at == i) {
184
198
  _arr = push(_arr, size, digit, val)
185
- }else{
186
- push(_arr, size, digit, c[0])
199
+ } else {
200
+ _arr = push(_arr, size, digit, c[0])
187
201
  }
188
202
  i++
189
203
  }
190
204
  return _arr
191
205
  }
192
206
 
193
- const last = (json, size) => {
207
+ function last(json, size) {
208
+ json = bn(json)
194
209
  var val = 0
195
- var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
210
+ var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
196
211
  while (c[5] == 0) {
197
212
  c = next(json, c)
198
213
  val = c[0]
199
214
  }
200
215
  return val
201
216
  }
202
- const lastRow = (json, size) => {
217
+
218
+ function lastRow(json, size) {
219
+ json = bn(json)
203
220
  var v = 0
204
221
  for (var j = 0; j < size; j++) {
205
222
  if (json[j] != 0) v = j
@@ -207,92 +224,111 @@ const lastRow = (json, size) => {
207
224
  return v
208
225
  }
209
226
 
210
- const shift = (json, size, digit) => {
227
+ function shift(json, size, digit) {
228
+ json = bn(json)
211
229
  var _arr = arr(size)
212
- var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
230
+ var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
213
231
  var i = 0
214
232
  while (c[5] == 0) {
215
233
  c = next(json, c)
216
- if (i > 0) push(_arr, size, digit, c[0])
234
+ if (i > 0) _arr = push(_arr, size, digit, c[0])
217
235
  i++
218
236
  }
219
237
  return _arr
220
238
  }
221
239
 
222
- const unshift = (json, size, digit, num) => {
240
+ function unshift(json, size, digit, num) {
241
+ json = bn(json)
223
242
  var _arr = arr(size)
224
- push(_arr, size, digit, num)
225
- var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
243
+ _arr = push(_arr, size, digit, num)
244
+
245
+ var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
226
246
  var i = 0
227
- if (json[0] !== 0) {
247
+ if (json[0] != 0) {
228
248
  while (c[5] == 0) {
229
249
  c = next(json, c)
230
- push(_arr, size, digit, c[0])
250
+ _arr = push(_arr, size, digit, c[0])
231
251
  i++
232
252
  }
233
253
  }
234
254
  return _arr
235
255
  }
236
256
 
237
- const pop = (json, size, overflow = 3) => {
238
- var l = 0
239
- var ll = 0
240
- var lnum = 0
241
- var series = 0
242
- var snum = 0
243
- var link = 0
244
- var _l = 0
245
- var _d = 0
246
- for (var l2 = 0; l2 < size; l2++) {
257
+ function concat(json, json2, size, digit) {
258
+ json = bn(json)
259
+ var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
260
+ var i = 0
261
+ if (json2[0] != 0) {
262
+ while (c[5] == 0) {
263
+ c = next(json2, c)
264
+ json = push(json, size, digit, c[0])
265
+ i++
266
+ }
267
+ }
268
+ return json
269
+ }
270
+
271
+ function pop(json, size, overflow = 8) {
272
+ json = bn(json)
273
+ overflow = bn(overflow)
274
+ var l = 0n
275
+ var ll = 0n
276
+ var lnum = 0n
277
+ var series = 0n
278
+ var snum = 0n
279
+ var link = 0n
280
+ var _l = 0n
281
+ var _d = 0n
282
+ for (var l2 = 0n; l2 < size; l2++) {
247
283
  if (json[l2] != 0) {
248
284
  _l = l2
249
285
  var x = json[l2]
250
286
  var d = digits(x)
251
287
  var p = d
252
- var on = 0
253
- var i = 0
288
+ var on = 0n
289
+ var i = 0n
254
290
  while (x > 0) {
255
- var n = (x / 10 ** (p - 1)) >> 0 // var n = x \ 10 ** (p - 1)
256
- x -= 10 ** (p - 1) * n
291
+ var n = (x / 10n ** (p - 1n)) >> 0n
292
+ x -= 10n ** (p - 1n) * n
257
293
  p--
258
294
  i++
259
295
  if (on == 0) {
260
- on = 1
296
+ on = 1n
261
297
  } else {
262
298
  var len = n
263
299
  if (link == 0) {
264
- ll = i - 1
300
+ ll = i - 1n
265
301
  l = l2
266
302
  _d = d
267
303
  }
268
304
  lnum = len
269
- snum = 0
305
+ snum = 0n
270
306
  if (len == 0) {
271
- var n = (x / 10 ** (p - 1)) >> 0 // var n = x \ 10 ** (p - 1)
272
- var len2 = (x / 10 ** (p - 1)) >> 0 // var n = x \ 10 ** (p - 1)
307
+ var n = (x / 10n ** (p - 1n)) >> 0n
308
+ var len2 = (x / 10n ** (p - 1n)) >> 0n
273
309
  series = len2
274
- x -= 10 ** (p - 1) * n
310
+ x -= 10n ** (p - 1n) * n
275
311
  p--
276
312
  i++
277
- for (var i2 = 0; i2 < len2; i2++) {
278
- var n = (x / 10 ** (p - 1)) >> 0 // var n = x \ 10 ** (p - 1)
279
- snum = snum * 10 + n
280
- x -= 10 ** (p - 1) * n
313
+ for (var i2 = 0n; i2 < len2; i2++) {
314
+ var n = (x / 10n ** (p - 1n)) >> 0n
315
+ snum = snum * 10n + n
316
+ x -= 10n ** (p - 1n) * n
281
317
  p--
282
318
  i++
283
319
  }
284
320
  } else {
285
321
  var _len = len
286
- if (len == overflow + 1) {
287
- link = 2
322
+ if (len == overflow + 1n) {
323
+ link = 2n
288
324
  _len = overflow
289
325
  } else if (link > 0) {
290
326
  link--
291
327
  }
292
- series = 0
293
- for (var i2 = 0; i2 < _len; i2++) {
294
- var n = (x / 10 ** (p - 1)) >> 0 // var n = x \ 10 ** (p - 1)
295
- x -= 10 ** (p - 1) * n
328
+ series = 0n
329
+ for (var i2 = 0n; i2 < _len; i2++) {
330
+ var n = (x / 10n ** (p - 1n)) >> 0n
331
+ x -= 10n ** (p - 1n) * n
296
332
  p--
297
333
  i++
298
334
  }
@@ -303,40 +339,42 @@ const pop = (json, size, overflow = 3) => {
303
339
  }
304
340
 
305
341
  if (link == 1) {
306
- for (var i = l + 1; i <= _l; i++) {
307
- json[i] = 0
342
+ for (var i = l + 1n; i <= _l; i++) {
343
+ json[i] = 0n
308
344
  }
309
345
  if (ll < 2) {
310
- json[l] = 0
346
+ json[l] = 0n
311
347
  } else {
312
- json[l] = (json[l] / 10 ** (_d - ll)) >> 0
348
+ json[l] = (json[l] / 10n ** (_d - ll)) >> 0n
313
349
  }
314
350
  } else if (series != 0) {
315
351
  if (series == 3) {
316
- json[l] = (json[l] / 10 ** (d - ll)) >> 0
317
- json[l] = json[l] * 10 + 1
318
- var n = (snum / 10 ** 2) >> 0
319
- json[l] = json[l] * 10 + n
320
- json[l] = json[l] * 10 + 1
321
- var n2 = ((snum / 10) >> 0) - n * 10
322
- json[l] = json[l] * 10 + n2
352
+ json[l] = (json[l] / 10n ** (_d - ll)) >> 0n
353
+ json[l] = json[l] * 10n + 1n
354
+ var n = (snum / 10n ** 2n) >> 0n
355
+ json[l] = json[l] * 10n + n
356
+ json[l] = json[l] * 10n + 1n
357
+ var n2 = ((snum / 10n) >> 0n) - n * 10n
358
+ json[l] = json[l] * 10n + n2
323
359
  } else {
324
- json[l] = (json[l] / 10 ** (d - ll - 1)) >> 0
325
- json[l] = json[l] * 10 + (series - 1)
326
- snum = (snum / 10) >> 0
327
- json[l] = json[l] * 10 ** (series - 1) + snum
360
+ json[l] = (json[l] / 10n ** (_d - ll - 1n)) >> 0n
361
+ json[l] = json[l] * 10n + (series - 1n)
362
+ snum = (snum / 10n) >> 0n
363
+ json[l] = json[l] * 10n ** (series - 1n) + snum
328
364
  }
329
365
  } else if (ll < 2) {
330
- json[l] = 0
366
+ json[l] = 0n
331
367
  } else {
332
- json[l] = (json[l] / 10 ** (d - ll)) >> 0
368
+ json[l] = (json[l] / 10n ** (d - ll)) >> 0n
333
369
  }
334
370
  return json
335
371
  }
336
-
337
- const push = (json, size, digit, c, overflow = 3) => {
338
- var i4 = 0
339
- var init = 0
372
+ function push(json, size, digit, c, overflow = 8) {
373
+ overflow = bn(overflow)
374
+ json = bn(json)
375
+ c = bn(c)
376
+ var i4 = 0n
377
+ var init = 0n
340
378
  while (c > 0 || init == 0) {
341
379
  init = 1
342
380
  var len = digits(c)
@@ -345,76 +383,78 @@ const push = (json, size, digit, c, overflow = 3) => {
345
383
  var _c = c
346
384
  if (overflow < len) {
347
385
  _len = overflow
348
- _len2 = overflow + 1
349
- _c = (c / 10 ** (len - overflow)) >> 0 // _c = c \ 10 ** (len - overflow)
350
- c -= _c * 10 ** (len - overflow)
386
+ _len2 = overflow + 1n
387
+ _c = (c / 10n ** (len - overflow)) >> 0n
388
+ c -= _c * 10n ** (len - overflow)
351
389
  } else {
352
- c = 0
390
+ c = 0n
353
391
  }
354
392
  var appended = 0
355
393
  for (var i = i4; i < size; i++) {
356
394
  var d = digits(json[i])
357
- var one = 0
358
- var ones = 0
359
- var nums = 0
395
+ if (d == 0) break
396
+ var one = 0n
397
+ var ones = 0n
398
+ var nums = 0n
360
399
  if (_len == 1 && digit > d) {
361
- var x = json[i] - 10 ** (d - 1)
362
- var i2 = 1
400
+ var x = json[i] - 10n ** (d - 1n)
401
+ var i2 = 1n
363
402
  while (i2 < d) {
364
- var len = (x / 10 ** (d - i2 - 1)) >> 0
365
- x = x - len * 10 ** (d - i2 - 1)
403
+ var len = 0n
404
+ len = (x / 10n ** (d - i2 - 1n)) >> 0n
405
+ x = x - len * 10n ** (d - i2 - 1n)
366
406
  if (len == 1) {
367
407
  if (ones == 0) one = i2
368
408
  ones++
369
- } else if (len !== 0) {
370
- ones = 0
371
- nums = 0
409
+ } else if (len != 0) {
410
+ ones = 0n
411
+ nums = 0n
372
412
  } else {
373
413
  one = i2
374
414
  }
375
415
  i2++
376
416
  if (len == 0) {
377
- var len3 = (x / 10 ** (d - i2 - 1)) >> 0
378
- x = x - len3 * 10 ** (d - i2 - 1)
417
+ var len3 = (x / 10n ** (d - i2 - 1n)) >> 0n
418
+ x = x - len3 * 10n ** (d - i2 - 1n)
379
419
  i2++
380
420
  ones = len3
381
- for (var i3 = 0; i3 < len3; i3++) {
382
- var len2 = (x / 10 ** (d - i2 - 1)) >> 0
383
- x = x - len2 * 10 ** (d - i2 - 1)
384
- nums = nums * 10 + len2
421
+ for (var i3 = 0n; i3 < len3; i3++) {
422
+ var len2 = (x / 10n ** (d - i2 - 1n)) >> 0n
423
+ x = x - len2 * 10n ** (d - i2 - 1n)
424
+ nums = nums * 10n + len2
385
425
  i2++
386
426
  }
387
427
  } else {
388
- for (var i3 = 0; i3 < len; i3++) {
389
- var len2 = (x / 10 ** (d - i2 - 1)) >> 0
390
- x = x - len2 * 10 ** (d - i2 - 1)
391
- if (len == 1) nums = nums * 10 + len2
428
+ for (var i3 = 0n; i3 < len; i3++) {
429
+ var len2 = (x / 10n ** (d - i2 - 1n)) >> 0n
430
+ x = x - len2 * 10n ** (d - i2 - 1n)
431
+ if (len == 1) nums = nums * 10n + len2
392
432
  i2++
393
433
  }
394
434
  }
395
435
  }
396
- if (ones == 2) nums = nums * 10 + _c
436
+ if (ones == 2) nums = nums * 10n + _c
397
437
  }
398
- if (ones > 2) {
399
- var x = (json[i] / 10 ** (d - one - 1)) >> 0
400
- x = x * 10 + ones + 1
401
- x = x * 10 ** ones + nums
402
- x = x * 10 + _c
438
+ if (ones > 2 && ones < 9) {
439
+ var x = (json[i] / 10n ** (d - one - 1n)) >> 0n
440
+ x = x * 10n + ones + 1n
441
+ x = x * 10n ** ones + nums
442
+ x = x * 10n + _c
403
443
  json[i] = x
404
444
  i4 = i
405
445
  appended = 1
406
446
  } else if (ones == 2) {
407
- var x = (json[i] / 10 ** (d - one)) >> 0
408
- x = x * 10 + 0
409
- x = x * 10 + ones + 1
410
- x = x * 10 ** (ones + 1) + nums
447
+ var x = (json[i] / 10n ** (d - one)) >> 0n
448
+ x = x * 10n + 0n
449
+ x = x * 10n + ones + 1n
450
+ x = x * 10n ** (ones + 1n) + nums
411
451
  json[i] = x
412
452
  i4 = i
413
453
  appended = 1
414
454
  } else if (digit > d + _len && appended == 0) {
415
- if (json[i] == 0) json[i] = 1
416
- json[i] = json[i] * 10 + _len2
417
- json[i] = json[i] * 10 ** _len + _c
455
+ if (json[i] == 0) json[i] = 1n
456
+ json[i] = json[i] * 10n + _len2
457
+ json[i] = json[i] * 10n ** _len + _c
418
458
  i4 = i
419
459
  appended = 1
420
460
  }
@@ -422,95 +462,104 @@ const push = (json, size, digit, c, overflow = 3) => {
422
462
  }
423
463
  return json
424
464
  }
465
+ function bn(arr) {
466
+ if (typeof arr == "number") return BigInt(arr)
467
+ if (!Array.isArray(arr)) return arr
468
+ return arr.map(n => {
469
+ return typeof n != "number" ? n : BigInt(n)
470
+ })
471
+ }
425
472
 
426
- const next = (json, c) => {
473
+ function next(json, c) {
474
+ json = bn(json)
475
+ c = bn(c)
427
476
  if (c[5] == 1) {
428
- return [0, c[1], 0, 0, 0, 1, c[6], c[7], c[8]]
477
+ return bn([0, c[1], 0, 0, 0, 1, c[6], c[7], c[8]])
429
478
  }
430
- var prev = 0
479
+ var prev = 0n
431
480
  for (var j = c[2]; j < c[1]; j++) {
432
481
  var d = digits(json[j])
433
482
  if (json[j] > 0) {
434
483
  var p = c[4] == 0 ? digits(json[j]) : c[4]
435
484
  var x = c[4] == 0 ? json[j] : c[3]
436
- var cur = 0
437
- var num = 0
438
- var on = c[4] == 0 ? 0 : c[7]
439
- var len = c[4] == 0 ? 0 : c[8]
485
+ var cur = 0n
486
+ var num = 0n
487
+ var on = c[4] == 0 ? 0n : c[7]
488
+ var len = c[4] == 0 ? 0n : c[8]
440
489
  while (p > 0) {
441
- var n = (x / 10 ** (p - 1)) >> 0 // var n = x \ 10 ** (p - 1)
490
+ var n = (x / 10n ** (p - 1n)) >> 0n
442
491
  if (on == 0) {
443
- on = 1
492
+ on = 1n
444
493
  } else if (on == 1) {
445
494
  if (n == 0) {
446
- on = 4
495
+ on = 4n
447
496
  } else {
448
497
  if (n == 9) {
449
- len = 8
450
- on = 3
498
+ len = 8n
499
+ on = 3n
451
500
  } else {
452
- on = 2
501
+ on = 2n
453
502
  len = n
454
503
  }
455
- cur = 0
504
+ cur = 0n
456
505
  }
457
506
  } else if (on == 4) {
458
- on = 5
507
+ on = 5n
459
508
  len = n
460
509
  } else {
461
- num += n * 10 ** (len - cur - 1)
510
+ num += n * 10n ** (len - cur - 1n)
462
511
  cur++
463
512
  if (on == 5) {
464
513
  num = n
465
514
  len--
466
- x -= 10 ** (p - 1) * n
515
+ x -= 10n ** (p - 1n) * n
467
516
  p--
468
- var done = 0
517
+ var done = 0n
469
518
  if (p == 0) {
470
519
  j++
471
520
  if (c[1] == j || json[j] == 0) {
472
- x = 0
473
- done = 1
521
+ x = 0n
522
+ done = 1n
474
523
  } else {
475
524
  x = json[j]
476
525
  }
477
526
  }
478
- if (len == 0) on = 1
479
- return [num, c[1], j, x, p, done, c[6], on, len]
527
+ if (len == 0) on = 1n
528
+ return bn([num, c[1], j, x, p, done, c[6], on, len])
480
529
  } else if (cur == len) {
481
- prev *= 10 ** len
530
+ prev *= 10n ** len
482
531
  if (on == 3) {
483
532
  prev += num
484
533
  } else {
485
534
  num += prev
486
- x -= 10 ** (p - 1) * n
535
+ x -= 10n ** (p - 1n) * n
487
536
  p--
488
- var done = 0
537
+ var done = 0n
489
538
  if (p == 0) {
490
539
  j++
491
540
  if (c[1] == j || json[j] == 0) {
492
- x = 0
493
- done = 1
541
+ x = 0n
542
+ done = 1n
494
543
  } else {
495
544
  x = json[j]
496
545
  }
497
546
  }
498
- return [num, c[1], j, x, p, done, c[6], 1, len]
547
+ return bn([num, c[1], j, x, p, done, c[6], 1, len])
499
548
  }
500
- cur = 0
501
- on = 1
502
- len = 0
503
- num = 0
549
+ cur = 0n
550
+ on = 1n
551
+ len = 0n
552
+ num = 0n
504
553
  }
505
554
  }
506
- x -= 10 ** (p - 1) * n
555
+ x -= 10n ** (p - 1n) * n
507
556
  p--
508
557
  }
509
558
  } else {
510
- return [0, c[1], 0, 0, 0, 1, c[6], 0, 0]
559
+ return bn([0, c[1], 0, 0, 0, 1, c[6], 0, 0])
511
560
  }
512
561
  }
513
- return [0, c[1], 0, 0, 0, 1, c[6], 0, 0]
562
+ return bn([0, c[1], 0, 0, 0, 1, c[6], 0, 0])
514
563
  }
515
564
 
516
565
  module.exports = {
@@ -533,5 +582,8 @@ module.exports = {
533
582
  mul,
534
583
  arrGet,
535
584
  remove,
536
- popArray
585
+ popArray,
586
+ concat,
587
+ bn,
588
+ digits,
537
589
  }