@ragestudio/scylla-odm 0.22.2 → 0.22.4
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.
- package/batch/index.d.ts +3 -3
- package/batch/index.d.ts.map +1 -1
- package/client.d.ts +6 -5
- package/client.d.ts.map +1 -1
- package/client.js +11 -12
- package/client.js.map +1 -1
- package/cql_gen/create_table.d.ts +1 -1
- package/cql_gen/create_table.d.ts.map +1 -1
- package/document/index.d.ts +3 -3
- package/document/index.d.ts.map +1 -1
- package/driver/LICENSE.txt +177 -0
- package/driver/NOTICE.txt +67 -0
- package/driver/auth/index.d.ts +37 -0
- package/driver/auth/index.js +37 -0
- package/driver/auth/no-auth-provider.js +73 -0
- package/driver/auth/plain-text-auth-provider.js +81 -0
- package/driver/auth/provider.js +77 -0
- package/driver/client-options.js +442 -0
- package/driver/client.js +1267 -0
- package/driver/concurrent/index.d.ts +49 -0
- package/driver/concurrent/index.js +366 -0
- package/driver/connection.js +1034 -0
- package/driver/control-connection.js +1282 -0
- package/driver/encoder.js +2316 -0
- package/driver/errors.js +223 -0
- package/driver/execution-options.js +612 -0
- package/driver/execution-profile.js +274 -0
- package/driver/host-connection-pool.js +587 -0
- package/driver/host.js +699 -0
- package/driver/index.d.ts +387 -0
- package/driver/index.js +81 -0
- package/driver/mapping/cache.js +214 -0
- package/driver/mapping/doc-info-adapter.js +171 -0
- package/driver/mapping/index.d.ts +219 -0
- package/driver/mapping/index.js +57 -0
- package/driver/mapping/mapper.js +225 -0
- package/driver/mapping/mapping-handler.js +641 -0
- package/driver/mapping/model-batch-item.js +215 -0
- package/driver/mapping/model-batch-mapper.js +141 -0
- package/driver/mapping/model-mapper.js +315 -0
- package/driver/mapping/model-mapping-info.js +225 -0
- package/driver/mapping/object-selector.js +417 -0
- package/driver/mapping/q.js +156 -0
- package/driver/mapping/query-generator.js +556 -0
- package/driver/mapping/result-mapper.js +123 -0
- package/driver/mapping/result.js +139 -0
- package/driver/mapping/table-mappings.js +133 -0
- package/driver/mapping/tree.js +160 -0
- package/driver/metadata/aggregate.js +79 -0
- package/driver/metadata/client-state.js +119 -0
- package/driver/metadata/data-collection.js +182 -0
- package/driver/metadata/event-debouncer.js +174 -0
- package/driver/metadata/index.d.ts +276 -0
- package/driver/metadata/index.js +1156 -0
- package/driver/metadata/materialized-view.js +49 -0
- package/driver/metadata/schema-function.js +98 -0
- package/driver/metadata/schema-index.js +166 -0
- package/driver/metadata/schema-parser.js +1399 -0
- package/driver/metadata/table-metadata.js +77 -0
- package/driver/operation-state.js +206 -0
- package/driver/policies/address-resolution.js +145 -0
- package/driver/policies/index.d.ts +241 -0
- package/driver/policies/index.js +110 -0
- package/driver/policies/load-balancing.js +970 -0
- package/driver/policies/reconnection.js +166 -0
- package/driver/policies/retry.js +326 -0
- package/driver/policies/speculative-execution.js +150 -0
- package/driver/policies/timestamp-generation.js +176 -0
- package/driver/prepare-handler.js +347 -0
- package/driver/promise-utils.js +191 -0
- package/driver/readers.js +624 -0
- package/driver/request-execution.js +644 -0
- package/driver/request-handler.js +332 -0
- package/driver/requests.js +618 -0
- package/driver/stream-id-stack.js +209 -0
- package/driver/streams.js +745 -0
- package/driver/token.js +325 -0
- package/driver/tokenizer.js +631 -0
- package/driver/types/big-decimal.js +282 -0
- package/driver/types/duration.js +576 -0
- package/driver/types/index.d.ts +486 -0
- package/driver/types/index.js +733 -0
- package/driver/types/inet-address.js +262 -0
- package/driver/types/integer.js +818 -0
- package/driver/types/local-date.js +280 -0
- package/driver/types/local-time.js +299 -0
- package/driver/types/mutable-long.js +385 -0
- package/driver/types/protocol-version.js +391 -0
- package/driver/types/result-set.js +287 -0
- package/driver/types/result-stream.js +164 -0
- package/driver/types/row.js +85 -0
- package/driver/types/time-uuid.js +414 -0
- package/driver/types/tuple.js +103 -0
- package/driver/types/uuid.js +160 -0
- package/driver/types/vector.js +130 -0
- package/driver/types/version-number.js +153 -0
- package/driver/utils.js +1485 -0
- package/driver/writers.js +350 -0
- package/global.d.ts +1 -1
- package/global.d.ts.map +1 -1
- package/index.d.ts +6 -6
- package/index.d.ts.map +1 -1
- package/index.js +6 -6
- package/index.js.map +1 -1
- package/migrate/index.d.ts +1 -1
- package/migrate/index.d.ts.map +1 -1
- package/migrate/index.js +1 -1
- package/migrate/index.js.map +1 -1
- package/model/index.d.ts +6 -6
- package/model/index.d.ts.map +1 -1
- package/model/index.js +10 -10
- package/model/index.js.map +1 -1
- package/operations/countAll.d.ts +1 -1
- package/operations/countAll.d.ts.map +1 -1
- package/operations/delete.d.ts +3 -4
- package/operations/delete.d.ts.map +1 -1
- package/operations/delete.js +1 -1
- package/operations/delete.js.map +1 -1
- package/operations/find.d.ts +2 -2
- package/operations/find.d.ts.map +1 -1
- package/operations/find.js +1 -1
- package/operations/find.js.map +1 -1
- package/operations/findOne.d.ts +2 -2
- package/operations/findOne.d.ts.map +1 -1
- package/operations/findOne.js +1 -1
- package/operations/findOne.js.map +1 -1
- package/operations/insert.d.ts +3 -3
- package/operations/insert.d.ts.map +1 -1
- package/operations/insert.js +2 -2
- package/operations/insert.js.map +1 -1
- package/operations/sync.d.ts +1 -1
- package/operations/sync.d.ts.map +1 -1
- package/operations/sync.js +1 -1
- package/operations/sync.js.map +1 -1
- package/operations/tableExists.d.ts +1 -1
- package/operations/tableExists.d.ts.map +1 -1
- package/operations/update.d.ts +3 -3
- package/operations/update.d.ts.map +1 -1
- package/operations/update.js +2 -2
- package/operations/update.js.map +1 -1
- package/package.json +4 -12
- package/schema/index.d.ts +1 -1
- package/schema/index.d.ts.map +1 -1
- package/types.d.ts +4 -4
- package/types.d.ts.map +1 -1
- package/utils/queryParser.d.ts +1 -1
- package/utils/queryParser.d.ts.map +1 -1
- package/utils/queryParser.js +1 -1
- package/utils/queryParser.js.map +1 -1
- package/utils/typeChecker.d.ts +1 -1
- package/utils/typeChecker.d.ts.map +1 -1
- package/utils/typeChecker.js +1 -1
- package/utils/typeChecker.js.map +1 -1
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Licensed to the Apache Software Foundation (ASF) under one
|
|
3
|
+
* or more contributor license agreements. See the NOTICE file
|
|
4
|
+
* distributed with this work for additional information
|
|
5
|
+
* regarding copyright ownership. The ASF licenses this file
|
|
6
|
+
* to you under the Apache License, Version 2.0 (the
|
|
7
|
+
* "License"); you may not use this file except in compliance
|
|
8
|
+
* with the License. You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import Long from "long"
|
|
20
|
+
|
|
21
|
+
const TWO_PWR_16_DBL = 1 << 16
|
|
22
|
+
const TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Constructs a signed int64 representation.
|
|
26
|
+
* @ignore
|
|
27
|
+
*/
|
|
28
|
+
class MutableLong {
|
|
29
|
+
constructor(b00, b16, b32, b48) {
|
|
30
|
+
// Use an array of uint16
|
|
31
|
+
this._arr = [b00 & 0xffff, b16 & 0xffff, b32 & 0xffff, b48 & 0xffff]
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
toString() {
|
|
35
|
+
return this.toImmutable().toString()
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Compares this value with the provided value.
|
|
40
|
+
* @param {MutableLong} other
|
|
41
|
+
* @return {number}
|
|
42
|
+
*/
|
|
43
|
+
compare(other) {
|
|
44
|
+
const thisNeg = this.isNegative()
|
|
45
|
+
const otherNeg = other.isNegative()
|
|
46
|
+
if (thisNeg && !otherNeg) {
|
|
47
|
+
return -1
|
|
48
|
+
}
|
|
49
|
+
if (!thisNeg && otherNeg) {
|
|
50
|
+
return 1
|
|
51
|
+
}
|
|
52
|
+
// At this point the sign bits are the same
|
|
53
|
+
return this._compareBits(other)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
_compareBits(other) {
|
|
57
|
+
for (let i = 3; i >= 0; i--) {
|
|
58
|
+
if (this._arr[i] > other._arr[i]) {
|
|
59
|
+
return 1
|
|
60
|
+
}
|
|
61
|
+
if (this._arr[i] < other._arr[i]) {
|
|
62
|
+
return -1
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return 0
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
getUint16(index) {
|
|
69
|
+
return this._arr[index]
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
getLowBitsUnsigned() {
|
|
73
|
+
return (this._arr[0] | ((this._arr[1] & 0xffff) << 16)) >>> 0
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
getHighBitsUnsigned() {
|
|
77
|
+
return (this._arr[2] | (this._arr[3] << 16)) >>> 0
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
toNumber() {
|
|
81
|
+
return (
|
|
82
|
+
((this._arr[3] << 16) | this._arr[2]) * TWO_PWR_32_DBL +
|
|
83
|
+
(((this._arr[1] << 16) | this._arr[0]) >>> 0)
|
|
84
|
+
)
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Performs the bitwise NOT of this value.
|
|
89
|
+
* @return {MutableLong}
|
|
90
|
+
*/
|
|
91
|
+
not() {
|
|
92
|
+
this._arr[0] = ~this._arr[0] & 0xffff
|
|
93
|
+
this._arr[1] = ~this._arr[1] & 0xffff
|
|
94
|
+
this._arr[2] = ~this._arr[2] & 0xffff
|
|
95
|
+
this._arr[3] = ~this._arr[3] & 0xffff
|
|
96
|
+
return this
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
add(addend) {
|
|
100
|
+
let c48 = 0,
|
|
101
|
+
c32 = 0,
|
|
102
|
+
c16 = 0,
|
|
103
|
+
c00 = 0
|
|
104
|
+
c00 += this._arr[0] + addend._arr[0]
|
|
105
|
+
this._arr[0] = c00 & 0xffff
|
|
106
|
+
c16 += c00 >>> 16
|
|
107
|
+
c16 += this._arr[1] + addend._arr[1]
|
|
108
|
+
this._arr[1] = c16 & 0xffff
|
|
109
|
+
c32 += c16 >>> 16
|
|
110
|
+
c32 += this._arr[2] + addend._arr[2]
|
|
111
|
+
this._arr[2] = c32 & 0xffff
|
|
112
|
+
c48 += c32 >>> 16
|
|
113
|
+
c48 += this._arr[3] + addend._arr[3]
|
|
114
|
+
this._arr[3] = c48 & 0xffff
|
|
115
|
+
return this
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
shiftLeft(numBits) {
|
|
119
|
+
if (numBits === 0) {
|
|
120
|
+
return this
|
|
121
|
+
}
|
|
122
|
+
if (numBits >= 64) {
|
|
123
|
+
return this.toZero()
|
|
124
|
+
}
|
|
125
|
+
const remainingBits = numBits % 16
|
|
126
|
+
const pos = Math.floor(numBits / 16)
|
|
127
|
+
if (pos > 0) {
|
|
128
|
+
this._arr[3] = this._arr[3 - pos]
|
|
129
|
+
this._arr[2] = pos > 2 ? 0 : this._arr[2 - pos]
|
|
130
|
+
this._arr[1] = pos > 1 ? 0 : this._arr[0]
|
|
131
|
+
this._arr[0] = 0
|
|
132
|
+
}
|
|
133
|
+
if (remainingBits > 0) {
|
|
134
|
+
// shift left within the int16 and the next one
|
|
135
|
+
this._arr[3] =
|
|
136
|
+
((this._arr[3] << remainingBits) |
|
|
137
|
+
(this._arr[2] >>> (16 - remainingBits))) &
|
|
138
|
+
0xffff
|
|
139
|
+
this._arr[2] =
|
|
140
|
+
((this._arr[2] << remainingBits) |
|
|
141
|
+
(this._arr[1] >>> (16 - remainingBits))) &
|
|
142
|
+
0xffff
|
|
143
|
+
this._arr[1] =
|
|
144
|
+
((this._arr[1] << remainingBits) |
|
|
145
|
+
(this._arr[0] >>> (16 - remainingBits))) &
|
|
146
|
+
0xffff
|
|
147
|
+
this._arr[0] = (this._arr[0] << remainingBits) & 0xffff
|
|
148
|
+
}
|
|
149
|
+
return this
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
shiftRightUnsigned(numBits) {
|
|
153
|
+
if (numBits === 0) {
|
|
154
|
+
return this
|
|
155
|
+
}
|
|
156
|
+
if (numBits >= 64) {
|
|
157
|
+
return this.toZero()
|
|
158
|
+
}
|
|
159
|
+
const remainingBits = numBits % 16
|
|
160
|
+
const pos = Math.floor(numBits / 16)
|
|
161
|
+
if (pos > 0) {
|
|
162
|
+
this._arr[0] = this._arr[pos]
|
|
163
|
+
this._arr[1] = pos > 2 ? 0 : this._arr[1 + pos]
|
|
164
|
+
this._arr[2] = pos > 1 ? 0 : this._arr[3]
|
|
165
|
+
this._arr[3] = 0
|
|
166
|
+
}
|
|
167
|
+
if (remainingBits > 0) {
|
|
168
|
+
this._arr[0] =
|
|
169
|
+
(this._arr[0] >>> remainingBits) |
|
|
170
|
+
((this._arr[1] << (16 - remainingBits)) & 0xffff)
|
|
171
|
+
this._arr[1] =
|
|
172
|
+
(this._arr[1] >>> remainingBits) |
|
|
173
|
+
((this._arr[2] << (16 - remainingBits)) & 0xffff)
|
|
174
|
+
this._arr[2] =
|
|
175
|
+
(this._arr[2] >>> remainingBits) |
|
|
176
|
+
((this._arr[3] << (16 - remainingBits)) & 0xffff)
|
|
177
|
+
this._arr[3] = this._arr[3] >>> remainingBits
|
|
178
|
+
}
|
|
179
|
+
return this
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
or(other) {
|
|
183
|
+
this._arr[0] |= other._arr[0]
|
|
184
|
+
this._arr[1] |= other._arr[1]
|
|
185
|
+
this._arr[2] |= other._arr[2]
|
|
186
|
+
this._arr[3] |= other._arr[3]
|
|
187
|
+
return this
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Returns the bitwise XOR of this Long and the given one.
|
|
192
|
+
* @param {MutableLong} other
|
|
193
|
+
* @returns {MutableLong} this instance.
|
|
194
|
+
*/
|
|
195
|
+
xor(other) {
|
|
196
|
+
this._arr[0] ^= other._arr[0]
|
|
197
|
+
this._arr[1] ^= other._arr[1]
|
|
198
|
+
this._arr[2] ^= other._arr[2]
|
|
199
|
+
this._arr[3] ^= other._arr[3]
|
|
200
|
+
return this
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
clone() {
|
|
204
|
+
return new MutableLong(
|
|
205
|
+
this._arr[0],
|
|
206
|
+
this._arr[1],
|
|
207
|
+
this._arr[2],
|
|
208
|
+
this._arr[3],
|
|
209
|
+
)
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Performs the product of this and the specified Long.
|
|
214
|
+
* @param {MutableLong} multiplier
|
|
215
|
+
* @returns {MutableLong} this instance.
|
|
216
|
+
*/
|
|
217
|
+
multiply(multiplier) {
|
|
218
|
+
let negate = false
|
|
219
|
+
if (this.isZero() || multiplier.isZero()) {
|
|
220
|
+
return this.toZero()
|
|
221
|
+
}
|
|
222
|
+
if (this.isNegative()) {
|
|
223
|
+
this.negate()
|
|
224
|
+
negate = !negate
|
|
225
|
+
}
|
|
226
|
+
if (multiplier.isNegative()) {
|
|
227
|
+
multiplier = multiplier.clone().negate()
|
|
228
|
+
negate = !negate
|
|
229
|
+
}
|
|
230
|
+
// We can skip products that would overflow.
|
|
231
|
+
let c48 = 0,
|
|
232
|
+
c32 = 0,
|
|
233
|
+
c16 = 0,
|
|
234
|
+
c00 = 0
|
|
235
|
+
c00 += this._arr[0] * multiplier._arr[0]
|
|
236
|
+
c16 += c00 >>> 16
|
|
237
|
+
c16 += this._arr[1] * multiplier._arr[0]
|
|
238
|
+
c32 += c16 >>> 16
|
|
239
|
+
c16 &= 0xffff
|
|
240
|
+
c16 += this._arr[0] * multiplier._arr[1]
|
|
241
|
+
c32 += c16 >>> 16
|
|
242
|
+
c32 += this._arr[2] * multiplier._arr[0]
|
|
243
|
+
c48 += c32 >>> 16
|
|
244
|
+
c32 &= 0xffff
|
|
245
|
+
c32 += this._arr[1] * multiplier._arr[1]
|
|
246
|
+
c48 += c32 >>> 16
|
|
247
|
+
c32 &= 0xffff
|
|
248
|
+
c32 += this._arr[0] * multiplier._arr[2]
|
|
249
|
+
c48 += c32 >>> 16
|
|
250
|
+
c48 +=
|
|
251
|
+
this._arr[3] * multiplier._arr[0] +
|
|
252
|
+
this._arr[2] * multiplier._arr[1] +
|
|
253
|
+
this._arr[1] * multiplier._arr[2] +
|
|
254
|
+
this._arr[0] * multiplier._arr[3]
|
|
255
|
+
this._arr[0] = c00 & 0xffff
|
|
256
|
+
this._arr[1] = c16 & 0xffff
|
|
257
|
+
this._arr[2] = c32 & 0xffff
|
|
258
|
+
this._arr[3] = c48 & 0xffff
|
|
259
|
+
if (negate) {
|
|
260
|
+
this.negate()
|
|
261
|
+
}
|
|
262
|
+
return this
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
toZero() {
|
|
266
|
+
this._arr[3] = this._arr[2] = this._arr[1] = this._arr[0] = 0
|
|
267
|
+
return this
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
isZero() {
|
|
271
|
+
return (
|
|
272
|
+
this._arr[3] === 0 &&
|
|
273
|
+
this._arr[2] === 0 &&
|
|
274
|
+
this._arr[1] === 0 &&
|
|
275
|
+
this._arr[0] === 0
|
|
276
|
+
)
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
isNegative() {
|
|
280
|
+
// most significant bit turned on
|
|
281
|
+
return (this._arr[3] & 0x8000) > 0
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* Negates this value.
|
|
286
|
+
* @return {MutableLong}
|
|
287
|
+
*/
|
|
288
|
+
negate() {
|
|
289
|
+
return this.not().add(MutableLong.one)
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
equals(other) {
|
|
293
|
+
if (!(other instanceof MutableLong)) {
|
|
294
|
+
return false
|
|
295
|
+
}
|
|
296
|
+
return (
|
|
297
|
+
this._arr[0] === other._arr[0] &&
|
|
298
|
+
this._arr[1] === other._arr[1] &&
|
|
299
|
+
this._arr[2] === other._arr[2] &&
|
|
300
|
+
this._arr[3] === other._arr[3]
|
|
301
|
+
)
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
toImmutable() {
|
|
305
|
+
return Long.fromBits(
|
|
306
|
+
this.getLowBitsUnsigned(),
|
|
307
|
+
this.getHighBitsUnsigned(),
|
|
308
|
+
false,
|
|
309
|
+
)
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
static fromNumber(value) {
|
|
313
|
+
if (isNaN(value) || !isFinite(value)) {
|
|
314
|
+
return new MutableLong()
|
|
315
|
+
}
|
|
316
|
+
if (value < 0) {
|
|
317
|
+
return MutableLong.fromNumber(-value).negate()
|
|
318
|
+
}
|
|
319
|
+
const low32Bits = value % TWO_PWR_32_DBL
|
|
320
|
+
const high32Bits = value / TWO_PWR_32_DBL
|
|
321
|
+
return MutableLong.fromBits(low32Bits, high32Bits)
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
static fromBits(low32Bits, high32Bits) {
|
|
325
|
+
return new MutableLong(
|
|
326
|
+
low32Bits,
|
|
327
|
+
low32Bits >>> 16,
|
|
328
|
+
high32Bits,
|
|
329
|
+
high32Bits >>> 16,
|
|
330
|
+
)
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* Returns a Long representation of the given string, written using the specified radix.
|
|
335
|
+
* @param {String} str
|
|
336
|
+
* @param {Number} [radix]
|
|
337
|
+
* @return {MutableLong}
|
|
338
|
+
*/
|
|
339
|
+
static fromString(str, radix) {
|
|
340
|
+
if (typeof str !== "string") {
|
|
341
|
+
throw new Error("String format is not valid: " + str)
|
|
342
|
+
}
|
|
343
|
+
if (str.length === 0) {
|
|
344
|
+
throw Error("number format error: empty string")
|
|
345
|
+
}
|
|
346
|
+
if (
|
|
347
|
+
str === "NaN" ||
|
|
348
|
+
str === "Infinity" ||
|
|
349
|
+
str === "+Infinity" ||
|
|
350
|
+
str === "-Infinity"
|
|
351
|
+
) {
|
|
352
|
+
return new MutableLong()
|
|
353
|
+
}
|
|
354
|
+
radix = radix || 10
|
|
355
|
+
if (radix < 2 || radix > 36) {
|
|
356
|
+
throw Error("radix out of range: " + radix)
|
|
357
|
+
}
|
|
358
|
+
let p
|
|
359
|
+
if ((p = str.indexOf("-")) > 0) {
|
|
360
|
+
throw Error('number format error: interior "-" character: ' + str)
|
|
361
|
+
}
|
|
362
|
+
if (p === 0) {
|
|
363
|
+
return MutableLong.fromString(str.substring(1), radix).negate()
|
|
364
|
+
}
|
|
365
|
+
// Do several (8) digits each time through the loop
|
|
366
|
+
const radixToPower = MutableLong.fromNumber(Math.pow(radix, 8))
|
|
367
|
+
const result = new MutableLong()
|
|
368
|
+
for (let i = 0; i < str.length; i += 8) {
|
|
369
|
+
const size = Math.min(8, str.length - i)
|
|
370
|
+
const value = parseInt(str.substring(i, i + size), radix)
|
|
371
|
+
if (size < 8) {
|
|
372
|
+
const power = MutableLong.fromNumber(Math.pow(radix, size))
|
|
373
|
+
result.multiply(power).add(MutableLong.fromNumber(value))
|
|
374
|
+
break
|
|
375
|
+
}
|
|
376
|
+
result.multiply(radixToPower)
|
|
377
|
+
result.add(MutableLong.fromNumber(value))
|
|
378
|
+
}
|
|
379
|
+
return result
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
MutableLong.one = new MutableLong(1, 0, 0, 0)
|
|
384
|
+
|
|
385
|
+
export default MutableLong
|