@waku/rln 0.1.8-e224c05.0 → 0.1.8-e800af3.0

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 (187) hide show
  1. package/bundle/_virtual/utils.js +2 -2
  2. package/bundle/_virtual/utils2.js +2 -2
  3. package/bundle/index.js +6 -1
  4. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/_sha2.js +1 -1
  5. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/hmac.js +1 -1
  6. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/pbkdf2.js +1 -1
  7. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/scrypt.js +1 -1
  8. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/sha256.js +1 -1
  9. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/sha512.js +1 -1
  10. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/@noble/hashes/utils.js +1 -1
  11. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/random.js +1 -1
  12. package/bundle/node_modules/@chainsafe/bls-keystore/node_modules/ethereum-cryptography/utils.js +2 -2
  13. package/bundle/node_modules/@chainsafe/is-ip/lib/is-ip.js +12 -0
  14. package/bundle/node_modules/@chainsafe/is-ip/lib/parse.js +26 -0
  15. package/bundle/node_modules/@chainsafe/is-ip/lib/parser.js +202 -0
  16. package/bundle/node_modules/@multiformats/multiaddr/dist/src/constants.js +43 -0
  17. package/bundle/node_modules/@multiformats/multiaddr/dist/src/errors.js +17 -0
  18. package/bundle/node_modules/@multiformats/multiaddr/dist/src/registry.js +245 -0
  19. package/bundle/node_modules/@multiformats/multiaddr/dist/src/utils.js +191 -0
  20. package/bundle/node_modules/@multiformats/multiaddr/dist/src/validation.js +30 -0
  21. package/bundle/node_modules/@noble/hashes/esm/hmac.js +88 -0
  22. package/bundle/node_modules/@noble/hashes/esm/sha3.js +1 -1
  23. package/bundle/node_modules/@noble/hashes/esm/utils.js +8 -1
  24. package/bundle/node_modules/@waku/zerokit-rln-wasm/rln_wasm.js +517 -255
  25. package/bundle/node_modules/it-length-prefixed/dist/src/decode.js +6 -0
  26. package/bundle/node_modules/multiformats/dist/src/bases/base10.js +3 -1
  27. package/bundle/node_modules/multiformats/dist/src/bases/base16.js +4 -2
  28. package/bundle/node_modules/multiformats/dist/src/bases/base2.js +3 -1
  29. package/bundle/node_modules/multiformats/dist/src/bases/base256emoji.js +3 -1
  30. package/bundle/node_modules/multiformats/dist/src/bases/base32.js +11 -9
  31. package/bundle/node_modules/multiformats/dist/src/bases/base36.js +4 -2
  32. package/bundle/node_modules/multiformats/dist/src/bases/base58.js +4 -2
  33. package/bundle/node_modules/multiformats/dist/src/bases/base64.js +6 -4
  34. package/bundle/node_modules/multiformats/dist/src/bases/base8.js +3 -1
  35. package/bundle/node_modules/multiformats/dist/src/bases/identity.js +3 -1
  36. package/bundle/node_modules/multiformats/dist/src/basics.js +15 -0
  37. package/bundle/node_modules/multiformats/dist/src/bytes.js +15 -1
  38. package/bundle/node_modules/multiformats/dist/src/cid.js +371 -0
  39. package/bundle/node_modules/multiformats/dist/src/hashes/digest.js +62 -0
  40. package/bundle/node_modules/multiformats/dist/src/varint.js +15 -0
  41. package/bundle/node_modules/multiformats/dist/src/vendor/varint.js +78 -0
  42. package/bundle/node_modules/protons-runtime/dist/src/codec.js +20 -0
  43. package/bundle/node_modules/protons-runtime/dist/src/codecs/enum.js +24 -0
  44. package/bundle/node_modules/protons-runtime/dist/src/codecs/message.js +7 -0
  45. package/bundle/node_modules/protons-runtime/dist/src/decode.js +8 -0
  46. package/bundle/node_modules/protons-runtime/dist/src/encode.js +11 -0
  47. package/bundle/node_modules/protons-runtime/dist/src/index.js +30 -0
  48. package/bundle/node_modules/protons-runtime/dist/src/utils/float.js +54 -0
  49. package/bundle/node_modules/protons-runtime/dist/src/utils/longbits.js +175 -0
  50. package/bundle/node_modules/protons-runtime/dist/src/utils/pool.js +28 -0
  51. package/bundle/node_modules/protons-runtime/dist/src/utils/reader.js +367 -0
  52. package/bundle/node_modules/protons-runtime/dist/src/utils/utf8.js +99 -0
  53. package/bundle/node_modules/protons-runtime/dist/src/utils/writer.js +438 -0
  54. package/bundle/node_modules/uint8-varint/dist/src/index.js +124 -0
  55. package/bundle/node_modules/uint8arrays/dist/src/alloc.js +17 -0
  56. package/bundle/node_modules/uint8arrays/dist/src/concat.js +20 -0
  57. package/bundle/node_modules/uint8arrays/dist/src/from-string.js +19 -0
  58. package/bundle/node_modules/uint8arrays/dist/src/to-string.js +19 -0
  59. package/bundle/node_modules/uint8arrays/dist/src/util/as-uint8array.js +9 -0
  60. package/bundle/node_modules/uint8arrays/dist/src/util/bases.js +49 -0
  61. package/bundle/packages/core/dist/lib/connection_manager/connection_limiter.js +18 -0
  62. package/bundle/packages/core/dist/lib/connection_manager/connection_manager.js +24 -0
  63. package/bundle/packages/core/dist/lib/connection_manager/dialer.js +14 -0
  64. package/bundle/packages/core/dist/lib/connection_manager/discovery_dialer.js +14 -0
  65. package/bundle/packages/core/dist/lib/connection_manager/keep_alive_manager.js +15 -0
  66. package/bundle/packages/core/dist/lib/connection_manager/shard_reader.js +14 -0
  67. package/bundle/packages/core/dist/lib/filter/filter.js +28 -0
  68. package/bundle/packages/core/dist/lib/light_push/light_push.js +28 -0
  69. package/bundle/packages/core/dist/lib/message/version_0.js +172 -0
  70. package/bundle/packages/core/dist/lib/metadata/metadata.js +28 -0
  71. package/bundle/packages/core/dist/lib/store/store.js +24 -0
  72. package/bundle/packages/interfaces/dist/connection_manager.js +9 -0
  73. package/bundle/packages/interfaces/dist/health_status.js +17 -0
  74. package/bundle/packages/interfaces/dist/protocols.js +92 -0
  75. package/bundle/packages/interfaces/dist/waku.js +7 -0
  76. package/bundle/packages/proto/dist/generated/filter.js +447 -0
  77. package/bundle/packages/proto/dist/generated/filter_v2.js +426 -0
  78. package/bundle/packages/proto/dist/generated/light_push.js +550 -0
  79. package/bundle/packages/proto/dist/generated/message.js +215 -0
  80. package/bundle/packages/proto/dist/generated/metadata.js +132 -0
  81. package/bundle/packages/proto/dist/generated/peer_exchange.js +211 -0
  82. package/bundle/packages/proto/dist/generated/sds_message.js +172 -0
  83. package/bundle/packages/proto/dist/generated/store_v3.js +492 -0
  84. package/bundle/packages/proto/dist/generated/topic_only_message.js +63 -0
  85. package/bundle/packages/rln/dist/codec.js +92 -0
  86. package/bundle/packages/rln/dist/contract/constants.js +14 -7
  87. package/bundle/packages/rln/dist/contract/rln_base_contract.js +2 -1
  88. package/bundle/packages/rln/dist/contract/rln_contract.js +109 -0
  89. package/bundle/packages/rln/dist/credentials_manager.js +45 -4
  90. package/bundle/packages/rln/dist/identity.js +2 -1
  91. package/bundle/packages/rln/dist/keystore/keystore.js +30 -9
  92. package/bundle/packages/rln/dist/message.js +59 -0
  93. package/bundle/packages/rln/dist/proof.js +54 -0
  94. package/bundle/packages/rln/dist/resources/verification_key.js +112 -0
  95. package/bundle/packages/rln/dist/resources/witness_calculator.js +1 -1
  96. package/bundle/packages/rln/dist/rln.js +36 -4
  97. package/bundle/packages/rln/dist/root_tracker.js +76 -0
  98. package/bundle/packages/rln/dist/utils/bytes.js +70 -31
  99. package/bundle/packages/rln/dist/utils/epoch.js +23 -1
  100. package/bundle/packages/rln/dist/utils/hash.js +10 -0
  101. package/bundle/packages/rln/dist/zerokit.js +99 -2
  102. package/bundle/packages/utils/dist/bytes/index.js +31 -0
  103. package/bundle/resources/rln.wasm +0 -0
  104. package/bundle/resources/rln_final.zkey +0 -0
  105. package/bundle/resources/verification_key.d.ts +13 -0
  106. package/bundle/resources/verification_key.js +112 -0
  107. package/bundle/resources/witness_calculator.d.ts +7 -21
  108. package/bundle/resources/witness_calculator.js +1 -1
  109. package/dist/.tsbuildinfo +1 -1
  110. package/dist/codec.d.ts +40 -0
  111. package/dist/codec.js +79 -0
  112. package/dist/codec.js.map +1 -0
  113. package/dist/codec.test-utils.d.ts +37 -0
  114. package/dist/codec.test-utils.js +61 -0
  115. package/dist/codec.test-utils.js.map +1 -0
  116. package/dist/contract/constants.d.ts +10 -3
  117. package/dist/contract/constants.js +13 -6
  118. package/dist/contract/constants.js.map +1 -1
  119. package/dist/contract/index.d.ts +1 -0
  120. package/dist/contract/index.js +1 -0
  121. package/dist/contract/index.js.map +1 -1
  122. package/dist/contract/rln_base_contract.js +2 -1
  123. package/dist/contract/rln_base_contract.js.map +1 -1
  124. package/dist/contract/rln_contract.d.ts +17 -0
  125. package/dist/contract/rln_contract.js +107 -0
  126. package/dist/contract/rln_contract.js.map +1 -0
  127. package/dist/contract/test_setup.d.ts +26 -0
  128. package/dist/contract/test_setup.js +56 -0
  129. package/dist/contract/test_setup.js.map +1 -0
  130. package/dist/contract/test_utils.d.ts +39 -0
  131. package/dist/contract/test_utils.js +118 -0
  132. package/dist/contract/test_utils.js.map +1 -0
  133. package/dist/credentials_manager.d.ts +14 -2
  134. package/dist/credentials_manager.js +45 -4
  135. package/dist/credentials_manager.js.map +1 -1
  136. package/dist/identity.js +2 -1
  137. package/dist/identity.js.map +1 -1
  138. package/dist/index.d.ts +6 -2
  139. package/dist/index.js +6 -2
  140. package/dist/index.js.map +1 -1
  141. package/dist/keystore/keystore.js +30 -9
  142. package/dist/keystore/keystore.js.map +1 -1
  143. package/dist/message.d.ts +19 -0
  144. package/dist/message.js +51 -0
  145. package/dist/message.js.map +1 -0
  146. package/dist/proof.d.ts +21 -0
  147. package/dist/proof.js +50 -0
  148. package/dist/proof.js.map +1 -0
  149. package/dist/resources/rln.wasm +0 -0
  150. package/dist/resources/rln_final.zkey +0 -0
  151. package/dist/resources/verification_key.d.ts +13 -0
  152. package/dist/resources/verification_key.js +112 -0
  153. package/dist/resources/witness_calculator.d.ts +7 -21
  154. package/dist/resources/witness_calculator.js +1 -1
  155. package/dist/rln.d.ts +9 -0
  156. package/dist/rln.js +32 -4
  157. package/dist/rln.js.map +1 -1
  158. package/dist/root_tracker.d.ts +10 -0
  159. package/dist/root_tracker.js +75 -0
  160. package/dist/root_tracker.js.map +1 -0
  161. package/dist/utils/bytes.d.ts +31 -9
  162. package/dist/utils/bytes.js +70 -31
  163. package/dist/utils/bytes.js.map +1 -1
  164. package/dist/zerokit.d.ts +11 -0
  165. package/dist/zerokit.js +97 -1
  166. package/dist/zerokit.js.map +1 -1
  167. package/package.json +1 -1
  168. package/src/codec.test-utils.ts +88 -0
  169. package/src/codec.ts +138 -0
  170. package/src/contract/constants.ts +16 -6
  171. package/src/contract/index.ts +1 -0
  172. package/src/contract/rln_base_contract.ts +2 -1
  173. package/src/contract/rln_contract.ts +147 -0
  174. package/src/contract/test_setup.ts +86 -0
  175. package/src/contract/test_utils.ts +179 -0
  176. package/src/credentials_manager.ts +72 -8
  177. package/src/identity.ts +2 -1
  178. package/src/index.ts +11 -1
  179. package/src/keystore/keystore.ts +32 -9
  180. package/src/message.ts +73 -0
  181. package/src/proof.ts +69 -0
  182. package/src/resources/verification_key.d.ts +13 -0
  183. package/src/resources/witness_calculator.d.ts +7 -21
  184. package/src/rln.ts +65 -5
  185. package/src/root_tracker.ts +92 -0
  186. package/src/utils/bytes.ts +73 -36
  187. package/src/zerokit.ts +217 -1
@@ -0,0 +1,367 @@
1
+ import { decodeUint8Array, encodingLength } from '../../../../uint8-varint/dist/src/index.js';
2
+ import { readFloatLE, readDoubleLE } from './float.js';
3
+ import { LongBits } from './longbits.js';
4
+ import { read } from './utf8.js';
5
+
6
+ /* istanbul ignore next */
7
+ function indexOutOfRange(reader, writeLength) {
8
+ return RangeError(`index out of range: ${reader.pos} + ${writeLength ?? 1} > ${reader.len}`);
9
+ }
10
+ function readFixed32End(buf, end) {
11
+ return (buf[end - 4] |
12
+ buf[end - 3] << 8 |
13
+ buf[end - 2] << 16 |
14
+ buf[end - 1] << 24) >>> 0;
15
+ }
16
+ /**
17
+ * Constructs a new reader instance using the specified buffer.
18
+ */
19
+ class Uint8ArrayReader {
20
+ buf;
21
+ pos;
22
+ len;
23
+ _slice = Uint8Array.prototype.subarray;
24
+ constructor(buffer) {
25
+ /**
26
+ * Read buffer
27
+ */
28
+ this.buf = buffer;
29
+ /**
30
+ * Read buffer position
31
+ */
32
+ this.pos = 0;
33
+ /**
34
+ * Read buffer length
35
+ */
36
+ this.len = buffer.length;
37
+ }
38
+ /**
39
+ * Reads a varint as an unsigned 32 bit value
40
+ */
41
+ uint32() {
42
+ let value = 4294967295;
43
+ value = (this.buf[this.pos] & 127) >>> 0;
44
+ if (this.buf[this.pos++] < 128)
45
+ return value;
46
+ value = (value | (this.buf[this.pos] & 127) << 7) >>> 0;
47
+ if (this.buf[this.pos++] < 128)
48
+ return value;
49
+ value = (value | (this.buf[this.pos] & 127) << 14) >>> 0;
50
+ if (this.buf[this.pos++] < 128)
51
+ return value;
52
+ value = (value | (this.buf[this.pos] & 127) << 21) >>> 0;
53
+ if (this.buf[this.pos++] < 128)
54
+ return value;
55
+ value = (value | (this.buf[this.pos] & 15) << 28) >>> 0;
56
+ if (this.buf[this.pos++] < 128)
57
+ return value;
58
+ if ((this.pos += 5) > this.len) {
59
+ this.pos = this.len;
60
+ throw indexOutOfRange(this, 10);
61
+ }
62
+ return value;
63
+ }
64
+ /**
65
+ * Reads a varint as a signed 32 bit value
66
+ */
67
+ int32() {
68
+ return this.uint32() | 0;
69
+ }
70
+ /**
71
+ * Reads a zig-zag encoded varint as a signed 32 bit value
72
+ */
73
+ sint32() {
74
+ const value = this.uint32();
75
+ return value >>> 1 ^ -(value & 1) | 0;
76
+ }
77
+ /**
78
+ * Reads a varint as a boolean
79
+ */
80
+ bool() {
81
+ return this.uint32() !== 0;
82
+ }
83
+ /**
84
+ * Reads fixed 32 bits as an unsigned 32 bit integer
85
+ */
86
+ fixed32() {
87
+ if (this.pos + 4 > this.len) {
88
+ throw indexOutOfRange(this, 4);
89
+ }
90
+ const res = readFixed32End(this.buf, this.pos += 4);
91
+ return res;
92
+ }
93
+ /**
94
+ * Reads fixed 32 bits as a signed 32 bit integer
95
+ */
96
+ sfixed32() {
97
+ if (this.pos + 4 > this.len) {
98
+ throw indexOutOfRange(this, 4);
99
+ }
100
+ const res = readFixed32End(this.buf, this.pos += 4) | 0;
101
+ return res;
102
+ }
103
+ /**
104
+ * Reads a float (32 bit) as a number
105
+ */
106
+ float() {
107
+ if (this.pos + 4 > this.len) {
108
+ throw indexOutOfRange(this, 4);
109
+ }
110
+ const value = readFloatLE(this.buf, this.pos);
111
+ this.pos += 4;
112
+ return value;
113
+ }
114
+ /**
115
+ * Reads a double (64 bit float) as a number
116
+ */
117
+ double() {
118
+ /* istanbul ignore if */
119
+ if (this.pos + 8 > this.len) {
120
+ throw indexOutOfRange(this, 4);
121
+ }
122
+ const value = readDoubleLE(this.buf, this.pos);
123
+ this.pos += 8;
124
+ return value;
125
+ }
126
+ /**
127
+ * Reads a sequence of bytes preceded by its length as a varint
128
+ */
129
+ bytes() {
130
+ const length = this.uint32();
131
+ const start = this.pos;
132
+ const end = this.pos + length;
133
+ /* istanbul ignore if */
134
+ if (end > this.len) {
135
+ throw indexOutOfRange(this, length);
136
+ }
137
+ this.pos += length;
138
+ return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1
139
+ ? new Uint8Array(0)
140
+ : this.buf.subarray(start, end);
141
+ }
142
+ /**
143
+ * Reads a string preceded by its byte length as a varint
144
+ */
145
+ string() {
146
+ const bytes = this.bytes();
147
+ return read(bytes, 0, bytes.length);
148
+ }
149
+ /**
150
+ * Skips the specified number of bytes if specified, otherwise skips a varint
151
+ */
152
+ skip(length) {
153
+ if (typeof length === 'number') {
154
+ /* istanbul ignore if */
155
+ if (this.pos + length > this.len) {
156
+ throw indexOutOfRange(this, length);
157
+ }
158
+ this.pos += length;
159
+ }
160
+ else {
161
+ do {
162
+ /* istanbul ignore if */
163
+ if (this.pos >= this.len) {
164
+ throw indexOutOfRange(this);
165
+ }
166
+ } while ((this.buf[this.pos++] & 128) !== 0);
167
+ }
168
+ return this;
169
+ }
170
+ /**
171
+ * Skips the next element of the specified wire type
172
+ */
173
+ skipType(wireType) {
174
+ switch (wireType) {
175
+ case 0:
176
+ this.skip();
177
+ break;
178
+ case 1:
179
+ this.skip(8);
180
+ break;
181
+ case 2:
182
+ this.skip(this.uint32());
183
+ break;
184
+ case 3:
185
+ while ((wireType = this.uint32() & 7) !== 4) {
186
+ this.skipType(wireType);
187
+ }
188
+ break;
189
+ case 5:
190
+ this.skip(4);
191
+ break;
192
+ /* istanbul ignore next */
193
+ default:
194
+ throw Error(`invalid wire type ${wireType} at offset ${this.pos}`);
195
+ }
196
+ return this;
197
+ }
198
+ readLongVarint() {
199
+ // tends to deopt with local vars for octet etc.
200
+ const bits = new LongBits(0, 0);
201
+ let i = 0;
202
+ if (this.len - this.pos > 4) { // fast route (lo)
203
+ for (; i < 4; ++i) {
204
+ // 1st..4th
205
+ bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;
206
+ if (this.buf[this.pos++] < 128) {
207
+ return bits;
208
+ }
209
+ }
210
+ // 5th
211
+ bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;
212
+ bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;
213
+ if (this.buf[this.pos++] < 128) {
214
+ return bits;
215
+ }
216
+ i = 0;
217
+ }
218
+ else {
219
+ for (; i < 3; ++i) {
220
+ /* istanbul ignore if */
221
+ if (this.pos >= this.len) {
222
+ throw indexOutOfRange(this);
223
+ }
224
+ // 1st..3th
225
+ bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;
226
+ if (this.buf[this.pos++] < 128) {
227
+ return bits;
228
+ }
229
+ }
230
+ // 4th
231
+ bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;
232
+ return bits;
233
+ }
234
+ if (this.len - this.pos > 4) { // fast route (hi)
235
+ for (; i < 5; ++i) {
236
+ // 6th..10th
237
+ bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;
238
+ if (this.buf[this.pos++] < 128) {
239
+ return bits;
240
+ }
241
+ }
242
+ }
243
+ else {
244
+ for (; i < 5; ++i) {
245
+ if (this.pos >= this.len) {
246
+ throw indexOutOfRange(this);
247
+ }
248
+ // 6th..10th
249
+ bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;
250
+ if (this.buf[this.pos++] < 128) {
251
+ return bits;
252
+ }
253
+ }
254
+ }
255
+ throw Error('invalid varint encoding');
256
+ }
257
+ readFixed64() {
258
+ if (this.pos + 8 > this.len) {
259
+ throw indexOutOfRange(this, 8);
260
+ }
261
+ const lo = readFixed32End(this.buf, this.pos += 4);
262
+ const hi = readFixed32End(this.buf, this.pos += 4);
263
+ return new LongBits(lo, hi);
264
+ }
265
+ /**
266
+ * Reads a varint as a signed 64 bit value
267
+ */
268
+ int64() {
269
+ return this.readLongVarint().toBigInt();
270
+ }
271
+ /**
272
+ * Reads a varint as a signed 64 bit value returned as a possibly unsafe
273
+ * JavaScript number
274
+ */
275
+ int64Number() {
276
+ return this.readLongVarint().toNumber();
277
+ }
278
+ /**
279
+ * Reads a varint as a signed 64 bit value returned as a string
280
+ */
281
+ int64String() {
282
+ return this.readLongVarint().toString();
283
+ }
284
+ /**
285
+ * Reads a varint as an unsigned 64 bit value
286
+ */
287
+ uint64() {
288
+ return this.readLongVarint().toBigInt(true);
289
+ }
290
+ /**
291
+ * Reads a varint as an unsigned 64 bit value returned as a possibly unsafe
292
+ * JavaScript number
293
+ */
294
+ uint64Number() {
295
+ const value = decodeUint8Array(this.buf, this.pos);
296
+ this.pos += encodingLength(value);
297
+ return value;
298
+ }
299
+ /**
300
+ * Reads a varint as an unsigned 64 bit value returned as a string
301
+ */
302
+ uint64String() {
303
+ return this.readLongVarint().toString(true);
304
+ }
305
+ /**
306
+ * Reads a zig-zag encoded varint as a signed 64 bit value
307
+ */
308
+ sint64() {
309
+ return this.readLongVarint().zzDecode().toBigInt();
310
+ }
311
+ /**
312
+ * Reads a zig-zag encoded varint as a signed 64 bit value returned as a
313
+ * possibly unsafe JavaScript number
314
+ */
315
+ sint64Number() {
316
+ return this.readLongVarint().zzDecode().toNumber();
317
+ }
318
+ /**
319
+ * Reads a zig-zag encoded varint as a signed 64 bit value returned as a
320
+ * string
321
+ */
322
+ sint64String() {
323
+ return this.readLongVarint().zzDecode().toString();
324
+ }
325
+ /**
326
+ * Reads fixed 64 bits
327
+ */
328
+ fixed64() {
329
+ return this.readFixed64().toBigInt();
330
+ }
331
+ /**
332
+ * Reads fixed 64 bits returned as a possibly unsafe JavaScript number
333
+ */
334
+ fixed64Number() {
335
+ return this.readFixed64().toNumber();
336
+ }
337
+ /**
338
+ * Reads fixed 64 bits returned as a string
339
+ */
340
+ fixed64String() {
341
+ return this.readFixed64().toString();
342
+ }
343
+ /**
344
+ * Reads zig-zag encoded fixed 64 bits
345
+ */
346
+ sfixed64() {
347
+ return this.readFixed64().toBigInt();
348
+ }
349
+ /**
350
+ * Reads zig-zag encoded fixed 64 bits returned as a possibly unsafe
351
+ * JavaScript number
352
+ */
353
+ sfixed64Number() {
354
+ return this.readFixed64().toNumber();
355
+ }
356
+ /**
357
+ * Reads zig-zag encoded fixed 64 bits returned as a string
358
+ */
359
+ sfixed64String() {
360
+ return this.readFixed64().toString();
361
+ }
362
+ }
363
+ function createReader(buf) {
364
+ return new Uint8ArrayReader(buf instanceof Uint8Array ? buf : buf.subarray());
365
+ }
366
+
367
+ export { Uint8ArrayReader, createReader };
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Calculates the UTF8 byte length of a string
3
+ */
4
+ function length(string) {
5
+ let len = 0;
6
+ let c = 0;
7
+ for (let i = 0; i < string.length; ++i) {
8
+ c = string.charCodeAt(i);
9
+ if (c < 128) {
10
+ len += 1;
11
+ }
12
+ else if (c < 2048) {
13
+ len += 2;
14
+ }
15
+ else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {
16
+ ++i;
17
+ len += 4;
18
+ }
19
+ else {
20
+ len += 3;
21
+ }
22
+ }
23
+ return len;
24
+ }
25
+ /**
26
+ * Reads UTF8 bytes as a string
27
+ */
28
+ function read(buffer, start, end) {
29
+ const len = end - start;
30
+ if (len < 1) {
31
+ return '';
32
+ }
33
+ let parts;
34
+ const chunk = [];
35
+ let i = 0; // char offset
36
+ let t; // temporary
37
+ while (start < end) {
38
+ t = buffer[start++];
39
+ if (t < 128) {
40
+ chunk[i++] = t;
41
+ }
42
+ else if (t > 191 && t < 224) {
43
+ chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;
44
+ }
45
+ else if (t > 239 && t < 365) {
46
+ t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;
47
+ chunk[i++] = 0xD800 + (t >> 10);
48
+ chunk[i++] = 0xDC00 + (t & 1023);
49
+ }
50
+ else {
51
+ chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;
52
+ }
53
+ if (i > 8191) {
54
+ (parts ?? (parts = [])).push(String.fromCharCode.apply(String, chunk));
55
+ i = 0;
56
+ }
57
+ }
58
+ if (parts != null) {
59
+ if (i > 0) {
60
+ parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));
61
+ }
62
+ return parts.join('');
63
+ }
64
+ return String.fromCharCode.apply(String, chunk.slice(0, i));
65
+ }
66
+ /**
67
+ * Writes a string as UTF8 bytes
68
+ */
69
+ function write(string, buffer, offset) {
70
+ const start = offset;
71
+ let c1; // character 1
72
+ let c2; // character 2
73
+ for (let i = 0; i < string.length; ++i) {
74
+ c1 = string.charCodeAt(i);
75
+ if (c1 < 128) {
76
+ buffer[offset++] = c1;
77
+ }
78
+ else if (c1 < 2048) {
79
+ buffer[offset++] = c1 >> 6 | 192;
80
+ buffer[offset++] = c1 & 63 | 128;
81
+ }
82
+ else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {
83
+ c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);
84
+ ++i;
85
+ buffer[offset++] = c1 >> 18 | 240;
86
+ buffer[offset++] = c1 >> 12 & 63 | 128;
87
+ buffer[offset++] = c1 >> 6 & 63 | 128;
88
+ buffer[offset++] = c1 & 63 | 128;
89
+ }
90
+ else {
91
+ buffer[offset++] = c1 >> 12 | 224;
92
+ buffer[offset++] = c1 >> 6 & 63 | 128;
93
+ buffer[offset++] = c1 & 63 | 128;
94
+ }
95
+ }
96
+ return offset - start;
97
+ }
98
+
99
+ export { length, read, write };