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