zkjson 0.1.21 → 0.1.23

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