zkjson 0.1.20 → 0.1.22

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.
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
  }