zkjson 0.1.21 → 0.1.23

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 -75
  2. package/package.json +1 -1
  3. package/parse.js +133 -92
  4. package/uint.js +246 -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 arr(size)
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,45 @@ 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
+ for (var i = i4; i < size; i++) {
378
+ if (json[i] != 0) i4 = i
379
+ }
380
+ var init = 0n
350
381
  while (c > 0 || init == 0) {
351
382
  init = 1
352
383
  var len = digits(c)
@@ -355,76 +386,77 @@ const push = (json, size, digit, c, overflow = 3) => {
355
386
  var _c = c
356
387
  if (overflow < len) {
357
388
  _len = overflow
358
- _len2 = overflow + 1
359
- _c = (c / 10 ** (len - overflow)) >> 0 // _c = c \ 10 ** (len - overflow)
360
- c -= _c * 10 ** (len - overflow)
389
+ _len2 = overflow + 1n
390
+ _c = (c / 10n ** (len - overflow)) >> 0n
391
+ c -= _c * 10n ** (len - overflow)
361
392
  } else {
362
- c = 0
393
+ c = 0n
363
394
  }
364
395
  var appended = 0
365
396
  for (var i = i4; i < size; i++) {
366
397
  var d = digits(json[i])
367
- var one = 0
368
- var ones = 0
369
- var nums = 0
398
+ var one = 0n
399
+ var ones = 0n
400
+ var nums = 0n
370
401
  if (_len == 1 && digit > d) {
371
- var x = json[i] - 10 ** (d - 1)
372
- var i2 = 1
402
+ var x = json[i] - 10n ** (d - 1n)
403
+ var i2 = 1n
373
404
  while (i2 < d) {
374
- var len = (x / 10 ** (d - i2 - 1)) >> 0
375
- x = x - len * 10 ** (d - i2 - 1)
405
+ var len = 0n
406
+ len = (x / 10n ** (d - i2 - 1n)) >> 0n
407
+ x = x - len * 10n ** (d - i2 - 1n)
376
408
  if (len == 1) {
377
409
  if (ones == 0) one = i2
378
410
  ones++
379
- } else if (len !== 0) {
380
- ones = 0
381
- nums = 0
411
+ } else if (len != 0) {
412
+ ones = 0n
413
+ nums = 0n
382
414
  } else {
383
415
  one = i2
384
416
  }
385
417
  i2++
386
418
  if (len == 0) {
387
- var len3 = (x / 10 ** (d - i2 - 1)) >> 0
388
- x = x - len3 * 10 ** (d - i2 - 1)
419
+ var len3 = (x / 10n ** (d - i2 - 1n)) >> 0n
420
+ x = x - len3 * 10n ** (d - i2 - 1n)
389
421
  i2++
390
422
  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
423
+ for (var i3 = 0n; i3 < len3; i3++) {
424
+ var len2 = (x / 10n ** (d - i2 - 1n)) >> 0n
425
+ x = x - len2 * 10n ** (d - i2 - 1n)
426
+ nums = nums * 10n + len2
395
427
  i2++
396
428
  }
397
429
  } 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
430
+ for (var i3 = 0n; i3 < len; i3++) {
431
+ var len2 = (x / 10n ** (d - i2 - 1n)) >> 0n
432
+ x = x - len2 * 10n ** (d - i2 - 1n)
433
+ if (len == 1) nums = nums * 10n + len2
402
434
  i2++
403
435
  }
404
436
  }
405
437
  }
406
- if (ones == 2) nums = nums * 10 + _c
438
+ if (ones == 2) nums = nums * 10n + _c
407
439
  }
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
440
+ if (ones > 2 && ones < 9) {
441
+ var x = (json[i] / 10n ** (d - one - 1n)) >> 0n
442
+ x = x * 10n + ones + 1n
443
+ x = x * 10n ** ones + nums
444
+ x = x * 10n + _c
413
445
  json[i] = x
414
446
  i4 = i
415
447
  appended = 1
416
448
  } 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
449
+ var x = (json[i] / 10n ** (d - one)) >> 0n
450
+ x = x * 10n + 0n
451
+ x = x * 10n + ones + 1n
452
+ x = x * 10n ** (ones + 1n) + nums
421
453
  json[i] = x
422
454
  i4 = i
423
455
  appended = 1
424
456
  } 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
457
+ if (json[i] == 0) json[i] = 1n
458
+ json[i] = json[i] * 10n + _len2
459
+ json[i] = json[i] * 10n ** _len + _c
428
460
  i4 = i
429
461
  appended = 1
430
462
  }
@@ -432,95 +464,104 @@ const push = (json, size, digit, c, overflow = 3) => {
432
464
  }
433
465
  return json
434
466
  }
467
+ function bn(arr) {
468
+ if (typeof arr == "number") return BigInt(arr)
469
+ if (!Array.isArray(arr)) return arr
470
+ return arr.map(n => {
471
+ return typeof n != "number" ? n : BigInt(n)
472
+ })
473
+ }
435
474
 
436
- const next = (json, c) => {
475
+ function next(json, c) {
476
+ json = bn(json)
477
+ c = bn(c)
437
478
  if (c[5] == 1) {
438
- return [0, c[1], 0, 0, 0, 1, c[6], c[7], c[8]]
479
+ return bn([0, c[1], 0, 0, 0, 1, c[6], c[7], c[8]])
439
480
  }
440
- var prev = 0
481
+ var prev = 0n
441
482
  for (var j = c[2]; j < c[1]; j++) {
442
483
  var d = digits(json[j])
443
484
  if (json[j] > 0) {
444
485
  var p = c[4] == 0 ? digits(json[j]) : c[4]
445
486
  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]
487
+ var cur = 0n
488
+ var num = 0n
489
+ var on = c[4] == 0 ? 0n : c[7]
490
+ var len = c[4] == 0 ? 0n : c[8]
450
491
  while (p > 0) {
451
- var n = (x / 10 ** (p - 1)) >> 0 // var n = x \ 10 ** (p - 1)
492
+ var n = (x / 10n ** (p - 1n)) >> 0n
452
493
  if (on == 0) {
453
- on = 1
494
+ on = 1n
454
495
  } else if (on == 1) {
455
496
  if (n == 0) {
456
- on = 4
497
+ on = 4n
457
498
  } else {
458
499
  if (n == 9) {
459
- len = 8
460
- on = 3
500
+ len = 8n
501
+ on = 3n
461
502
  } else {
462
- on = 2
503
+ on = 2n
463
504
  len = n
464
505
  }
465
- cur = 0
506
+ cur = 0n
466
507
  }
467
508
  } else if (on == 4) {
468
- on = 5
509
+ on = 5n
469
510
  len = n
470
511
  } else {
471
- num += n * 10 ** (len - cur - 1)
512
+ num += n * 10n ** (len - cur - 1n)
472
513
  cur++
473
514
  if (on == 5) {
474
515
  num = n
475
516
  len--
476
- x -= 10 ** (p - 1) * n
517
+ x -= 10n ** (p - 1n) * n
477
518
  p--
478
- var done = 0
519
+ var done = 0n
479
520
  if (p == 0) {
480
521
  j++
481
522
  if (c[1] == j || json[j] == 0) {
482
- x = 0
483
- done = 1
523
+ x = 0n
524
+ done = 1n
484
525
  } else {
485
526
  x = json[j]
486
527
  }
487
528
  }
488
- if (len == 0) on = 1
489
- return [num, c[1], j, x, p, done, c[6], on, len]
529
+ if (len == 0) on = 1n
530
+ return bn([num, c[1], j, x, p, done, c[6], on, len])
490
531
  } else if (cur == len) {
491
- prev *= 10 ** len
532
+ prev *= 10n ** len
492
533
  if (on == 3) {
493
534
  prev += num
494
535
  } else {
495
536
  num += prev
496
- x -= 10 ** (p - 1) * n
537
+ x -= 10n ** (p - 1n) * n
497
538
  p--
498
- var done = 0
539
+ var done = 0n
499
540
  if (p == 0) {
500
541
  j++
501
542
  if (c[1] == j || json[j] == 0) {
502
- x = 0
503
- done = 1
543
+ x = 0n
544
+ done = 1n
504
545
  } else {
505
546
  x = json[j]
506
547
  }
507
548
  }
508
- return [num, c[1], j, x, p, done, c[6], 1, len]
549
+ return bn([num, c[1], j, x, p, done, c[6], 1, len])
509
550
  }
510
- cur = 0
511
- on = 1
512
- len = 0
513
- num = 0
551
+ cur = 0n
552
+ on = 1n
553
+ len = 0n
554
+ num = 0n
514
555
  }
515
556
  }
516
- x -= 10 ** (p - 1) * n
557
+ x -= 10n ** (p - 1n) * n
517
558
  p--
518
559
  }
519
560
  } else {
520
- return [0, c[1], 0, 0, 0, 1, c[6], 0, 0]
561
+ return bn([0, c[1], 0, 0, 0, 1, c[6], 0, 0])
521
562
  }
522
563
  }
523
- return [0, c[1], 0, 0, 0, 1, c[6], 0, 0]
564
+ return bn([0, c[1], 0, 0, 0, 1, c[6], 0, 0])
524
565
  }
525
566
 
526
567
  module.exports = {
@@ -544,5 +585,7 @@ module.exports = {
544
585
  arrGet,
545
586
  remove,
546
587
  popArray,
547
- concat
588
+ concat,
589
+ bn,
590
+ digits,
548
591
  }