@waku/rln 0.1.5-9901863.0 → 0.1.5-a824fff.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 (142) hide show
  1. package/bundle/index.js +2 -1
  2. package/bundle/packages/rln/dist/contract/constants.js +2 -1
  3. package/bundle/packages/rln/dist/contract/rln_base_contract.js +70 -65
  4. package/bundle/packages/rln/dist/contract/rln_contract.js +1 -1
  5. package/bundle/packages/rln/dist/credentials_manager.js +10 -28
  6. package/bundle/packages/rln/dist/identity.js +0 -8
  7. package/bundle/packages/rln/dist/keystore/keystore.js +28 -15
  8. package/bundle/packages/rln/dist/utils/metamask.js +2 -2
  9. package/bundle/packages/rln/dist/zerokit.js +5 -5
  10. package/dist/.tsbuildinfo +1 -1
  11. package/dist/contract/constants.d.ts +1 -1
  12. package/dist/contract/constants.js +1 -1
  13. package/dist/contract/constants.js.map +1 -1
  14. package/dist/contract/index.d.ts +1 -0
  15. package/dist/contract/index.js +1 -0
  16. package/dist/contract/index.js.map +1 -1
  17. package/dist/contract/rln_base_contract.d.ts +5 -11
  18. package/dist/contract/rln_base_contract.js +68 -63
  19. package/dist/contract/rln_base_contract.js.map +1 -1
  20. package/dist/contract/types.d.ts +5 -0
  21. package/dist/contract/types.js.map +1 -1
  22. package/dist/credentials_manager.d.ts +3 -9
  23. package/dist/credentials_manager.js +10 -28
  24. package/dist/credentials_manager.js.map +1 -1
  25. package/dist/identity.d.ts +0 -1
  26. package/dist/identity.js +0 -8
  27. package/dist/identity.js.map +1 -1
  28. package/dist/index.d.ts +2 -1
  29. package/dist/index.js +1 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/keystore/keystore.d.ts +1 -0
  32. package/dist/keystore/keystore.js +28 -15
  33. package/dist/keystore/keystore.js.map +1 -1
  34. package/dist/keystore/types.d.ts +2 -2
  35. package/dist/rln.js.map +1 -1
  36. package/dist/zerokit.d.ts +3 -3
  37. package/dist/zerokit.js +5 -5
  38. package/dist/zerokit.js.map +1 -1
  39. package/package.json +1 -1
  40. package/src/contract/constants.ts +1 -1
  41. package/src/contract/index.ts +1 -0
  42. package/src/contract/rln_base_contract.ts +100 -93
  43. package/src/contract/types.ts +5 -0
  44. package/src/credentials_manager.ts +10 -34
  45. package/src/identity.ts +0 -9
  46. package/src/index.ts +3 -1
  47. package/src/keystore/keystore.ts +54 -29
  48. package/src/keystore/types.ts +2 -2
  49. package/src/rln.ts +1 -0
  50. package/src/zerokit.ts +3 -3
  51. package/bundle/_virtual/__node-resolve_empty.js +0 -6
  52. package/bundle/_virtual/_node-resolve_empty.js +0 -3
  53. package/bundle/_virtual/bn.js +0 -3
  54. package/bundle/_virtual/common.js +0 -3
  55. package/bundle/_virtual/common2.js +0 -3
  56. package/bundle/_virtual/hash.js +0 -3
  57. package/bundle/_virtual/inherits_browser.js +0 -3
  58. package/bundle/_virtual/ripemd.js +0 -3
  59. package/bundle/_virtual/sha.js +0 -3
  60. package/bundle/_virtual/sha3.js +0 -3
  61. package/bundle/_virtual/utils3.js +0 -3
  62. package/bundle/node_modules/@ethersproject/abi/lib.esm/_version.js +0 -3
  63. package/bundle/node_modules/@ethersproject/abi/lib.esm/abi-coder.js +0 -96
  64. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/abstract-coder.js +0 -148
  65. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/address.js +0 -26
  66. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/anonymous.js +0 -20
  67. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/array.js +0 -210
  68. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/boolean.js +0 -18
  69. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/bytes.js +0 -30
  70. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/fixed-bytes.js +0 -26
  71. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/null.js +0 -22
  72. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/number.js +0 -43
  73. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/string.js +0 -19
  74. package/bundle/node_modules/@ethersproject/abi/lib.esm/coders/tuple.js +0 -58
  75. package/bundle/node_modules/@ethersproject/abi/lib.esm/fragments.js +0 -854
  76. package/bundle/node_modules/@ethersproject/abi/lib.esm/interface.js +0 -609
  77. package/bundle/node_modules/@ethersproject/abstract-provider/lib.esm/_version.js +0 -3
  78. package/bundle/node_modules/@ethersproject/abstract-provider/lib.esm/index.js +0 -66
  79. package/bundle/node_modules/@ethersproject/abstract-signer/lib.esm/_version.js +0 -3
  80. package/bundle/node_modules/@ethersproject/abstract-signer/lib.esm/index.js +0 -302
  81. package/bundle/node_modules/@ethersproject/address/lib.esm/_version.js +0 -3
  82. package/bundle/node_modules/@ethersproject/address/lib.esm/index.js +0 -110
  83. package/bundle/node_modules/@ethersproject/base64/lib.esm/base64.js +0 -20
  84. package/bundle/node_modules/@ethersproject/basex/lib.esm/index.js +0 -120
  85. package/bundle/node_modules/@ethersproject/bignumber/lib.esm/_version.js +0 -3
  86. package/bundle/node_modules/@ethersproject/bignumber/lib.esm/bignumber.js +0 -287
  87. package/bundle/node_modules/@ethersproject/bytes/lib.esm/_version.js +0 -3
  88. package/bundle/node_modules/@ethersproject/bytes/lib.esm/index.js +0 -402
  89. package/bundle/node_modules/@ethersproject/constants/lib.esm/addresses.js +0 -3
  90. package/bundle/node_modules/@ethersproject/constants/lib.esm/bignumbers.js +0 -8
  91. package/bundle/node_modules/@ethersproject/constants/lib.esm/hashes.js +0 -3
  92. package/bundle/node_modules/@ethersproject/contracts/lib.esm/_version.js +0 -3
  93. package/bundle/node_modules/@ethersproject/contracts/lib.esm/index.js +0 -893
  94. package/bundle/node_modules/@ethersproject/hash/lib.esm/_version.js +0 -3
  95. package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js +0 -256
  96. package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js +0 -36
  97. package/bundle/node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js +0 -135
  98. package/bundle/node_modules/@ethersproject/hash/lib.esm/id.js +0 -8
  99. package/bundle/node_modules/@ethersproject/hash/lib.esm/namehash.js +0 -64
  100. package/bundle/node_modules/@ethersproject/hash/lib.esm/typed-data.js +0 -443
  101. package/bundle/node_modules/@ethersproject/keccak256/lib.esm/index.js +0 -8
  102. package/bundle/node_modules/@ethersproject/keccak256/node_modules/js-sha3/src/sha3.js +0 -660
  103. package/bundle/node_modules/@ethersproject/logger/lib.esm/_version.js +0 -3
  104. package/bundle/node_modules/@ethersproject/logger/lib.esm/index.js +0 -352
  105. package/bundle/node_modules/@ethersproject/networks/lib.esm/_version.js +0 -3
  106. package/bundle/node_modules/@ethersproject/networks/lib.esm/index.js +0 -248
  107. package/bundle/node_modules/@ethersproject/properties/lib.esm/_version.js +0 -3
  108. package/bundle/node_modules/@ethersproject/properties/lib.esm/index.js +0 -127
  109. package/bundle/node_modules/@ethersproject/providers/lib.esm/_version.js +0 -3
  110. package/bundle/node_modules/@ethersproject/providers/lib.esm/base-provider.js +0 -2007
  111. package/bundle/node_modules/@ethersproject/providers/lib.esm/formatter.js +0 -422
  112. package/bundle/node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js +0 -674
  113. package/bundle/node_modules/@ethersproject/providers/lib.esm/web3-provider.js +0 -132
  114. package/bundle/node_modules/@ethersproject/rlp/lib.esm/_version.js +0 -3
  115. package/bundle/node_modules/@ethersproject/rlp/lib.esm/index.js +0 -120
  116. package/bundle/node_modules/@ethersproject/sha2/lib.esm/sha2.js +0 -8
  117. package/bundle/node_modules/@ethersproject/signing-key/lib.esm/_version.js +0 -3
  118. package/bundle/node_modules/@ethersproject/signing-key/lib.esm/elliptic.js +0 -2430
  119. package/bundle/node_modules/@ethersproject/signing-key/lib.esm/index.js +0 -76
  120. package/bundle/node_modules/@ethersproject/strings/lib.esm/_version.js +0 -3
  121. package/bundle/node_modules/@ethersproject/strings/lib.esm/utf8.js +0 -219
  122. package/bundle/node_modules/@ethersproject/transactions/lib.esm/_version.js +0 -3
  123. package/bundle/node_modules/@ethersproject/transactions/lib.esm/index.js +0 -279
  124. package/bundle/node_modules/@ethersproject/web/lib.esm/_version.js +0 -3
  125. package/bundle/node_modules/@ethersproject/web/lib.esm/geturl.js +0 -69
  126. package/bundle/node_modules/@ethersproject/web/lib.esm/index.js +0 -404
  127. package/bundle/node_modules/bech32/index.js +0 -187
  128. package/bundle/node_modules/bn.js/lib/bn.js +0 -3361
  129. package/bundle/node_modules/hash.js/lib/hash/common.js +0 -97
  130. package/bundle/node_modules/hash.js/lib/hash/hmac.js +0 -51
  131. package/bundle/node_modules/hash.js/lib/hash/ripemd.js +0 -152
  132. package/bundle/node_modules/hash.js/lib/hash/sha/1.js +0 -81
  133. package/bundle/node_modules/hash.js/lib/hash/sha/224.js +0 -33
  134. package/bundle/node_modules/hash.js/lib/hash/sha/256.js +0 -113
  135. package/bundle/node_modules/hash.js/lib/hash/sha/384.js +0 -39
  136. package/bundle/node_modules/hash.js/lib/hash/sha/512.js +0 -336
  137. package/bundle/node_modules/hash.js/lib/hash/sha/common.js +0 -53
  138. package/bundle/node_modules/hash.js/lib/hash/sha.js +0 -14
  139. package/bundle/node_modules/hash.js/lib/hash/utils.js +0 -282
  140. package/bundle/node_modules/hash.js/lib/hash.js +0 -33
  141. package/bundle/node_modules/inherits/inherits_browser.js +0 -33
  142. package/bundle/node_modules/minimalistic-assert/index.js +0 -13
@@ -1,210 +0,0 @@
1
- import { Logger } from '../../../logger/lib.esm/index.js';
2
- import { version } from '../_version.js';
3
- import { Coder, Writer } from './abstract-coder.js';
4
- import { AnonymousCoder } from './anonymous.js';
5
-
6
- const logger = new Logger(version);
7
- function pack(writer, coders, values) {
8
- let arrayValues = null;
9
- if (Array.isArray(values)) {
10
- arrayValues = values;
11
- }
12
- else if (values && typeof (values) === "object") {
13
- let unique = {};
14
- arrayValues = coders.map((coder) => {
15
- const name = coder.localName;
16
- if (!name) {
17
- logger.throwError("cannot encode object for signature with missing names", Logger.errors.INVALID_ARGUMENT, {
18
- argument: "values",
19
- coder: coder,
20
- value: values
21
- });
22
- }
23
- if (unique[name]) {
24
- logger.throwError("cannot encode object for signature with duplicate names", Logger.errors.INVALID_ARGUMENT, {
25
- argument: "values",
26
- coder: coder,
27
- value: values
28
- });
29
- }
30
- unique[name] = true;
31
- return values[name];
32
- });
33
- }
34
- else {
35
- logger.throwArgumentError("invalid tuple value", "tuple", values);
36
- }
37
- if (coders.length !== arrayValues.length) {
38
- logger.throwArgumentError("types/value length mismatch", "tuple", values);
39
- }
40
- let staticWriter = new Writer(writer.wordSize);
41
- let dynamicWriter = new Writer(writer.wordSize);
42
- let updateFuncs = [];
43
- coders.forEach((coder, index) => {
44
- let value = arrayValues[index];
45
- if (coder.dynamic) {
46
- // Get current dynamic offset (for the future pointer)
47
- let dynamicOffset = dynamicWriter.length;
48
- // Encode the dynamic value into the dynamicWriter
49
- coder.encode(dynamicWriter, value);
50
- // Prepare to populate the correct offset once we are done
51
- let updateFunc = staticWriter.writeUpdatableValue();
52
- updateFuncs.push((baseOffset) => {
53
- updateFunc(baseOffset + dynamicOffset);
54
- });
55
- }
56
- else {
57
- coder.encode(staticWriter, value);
58
- }
59
- });
60
- // Backfill all the dynamic offsets, now that we know the static length
61
- updateFuncs.forEach((func) => { func(staticWriter.length); });
62
- let length = writer.appendWriter(staticWriter);
63
- length += writer.appendWriter(dynamicWriter);
64
- return length;
65
- }
66
- function unpack(reader, coders) {
67
- let values = [];
68
- // A reader anchored to this base
69
- let baseReader = reader.subReader(0);
70
- coders.forEach((coder) => {
71
- let value = null;
72
- if (coder.dynamic) {
73
- let offset = reader.readValue();
74
- let offsetReader = baseReader.subReader(offset.toNumber());
75
- try {
76
- value = coder.decode(offsetReader);
77
- }
78
- catch (error) {
79
- // Cannot recover from this
80
- if (error.code === Logger.errors.BUFFER_OVERRUN) {
81
- throw error;
82
- }
83
- value = error;
84
- value.baseType = coder.name;
85
- value.name = coder.localName;
86
- value.type = coder.type;
87
- }
88
- }
89
- else {
90
- try {
91
- value = coder.decode(reader);
92
- }
93
- catch (error) {
94
- // Cannot recover from this
95
- if (error.code === Logger.errors.BUFFER_OVERRUN) {
96
- throw error;
97
- }
98
- value = error;
99
- value.baseType = coder.name;
100
- value.name = coder.localName;
101
- value.type = coder.type;
102
- }
103
- }
104
- if (value != undefined) {
105
- values.push(value);
106
- }
107
- });
108
- // We only output named properties for uniquely named coders
109
- const uniqueNames = coders.reduce((accum, coder) => {
110
- const name = coder.localName;
111
- if (name) {
112
- if (!accum[name]) {
113
- accum[name] = 0;
114
- }
115
- accum[name]++;
116
- }
117
- return accum;
118
- }, {});
119
- // Add any named parameters (i.e. tuples)
120
- coders.forEach((coder, index) => {
121
- let name = coder.localName;
122
- if (!name || uniqueNames[name] !== 1) {
123
- return;
124
- }
125
- if (name === "length") {
126
- name = "_length";
127
- }
128
- if (values[name] != null) {
129
- return;
130
- }
131
- const value = values[index];
132
- if (value instanceof Error) {
133
- Object.defineProperty(values, name, {
134
- enumerable: true,
135
- get: () => { throw value; }
136
- });
137
- }
138
- else {
139
- values[name] = value;
140
- }
141
- });
142
- for (let i = 0; i < values.length; i++) {
143
- const value = values[i];
144
- if (value instanceof Error) {
145
- Object.defineProperty(values, i, {
146
- enumerable: true,
147
- get: () => { throw value; }
148
- });
149
- }
150
- }
151
- return Object.freeze(values);
152
- }
153
- class ArrayCoder extends Coder {
154
- constructor(coder, length, localName) {
155
- const type = (coder.type + "[" + (length >= 0 ? length : "") + "]");
156
- const dynamic = (length === -1 || coder.dynamic);
157
- super("array", type, localName, dynamic);
158
- this.coder = coder;
159
- this.length = length;
160
- }
161
- defaultValue() {
162
- // Verifies the child coder is valid (even if the array is dynamic or 0-length)
163
- const defaultChild = this.coder.defaultValue();
164
- const result = [];
165
- for (let i = 0; i < this.length; i++) {
166
- result.push(defaultChild);
167
- }
168
- return result;
169
- }
170
- encode(writer, value) {
171
- if (!Array.isArray(value)) {
172
- this._throwError("expected array value", value);
173
- }
174
- let count = this.length;
175
- if (count === -1) {
176
- count = value.length;
177
- writer.writeValue(value.length);
178
- }
179
- logger.checkArgumentCount(value.length, count, "coder array" + (this.localName ? (" " + this.localName) : ""));
180
- let coders = [];
181
- for (let i = 0; i < value.length; i++) {
182
- coders.push(this.coder);
183
- }
184
- return pack(writer, coders, value);
185
- }
186
- decode(reader) {
187
- let count = this.length;
188
- if (count === -1) {
189
- count = reader.readValue().toNumber();
190
- // Check that there is *roughly* enough data to ensure
191
- // stray random data is not being read as a length. Each
192
- // slot requires at least 32 bytes for their value (or 32
193
- // bytes as a link to the data). This could use a much
194
- // tighter bound, but we are erroring on the side of safety.
195
- if (count * 32 > reader._data.length) {
196
- logger.throwError("insufficient data length", Logger.errors.BUFFER_OVERRUN, {
197
- length: reader._data.length,
198
- count: count
199
- });
200
- }
201
- }
202
- let coders = [];
203
- for (let i = 0; i < count; i++) {
204
- coders.push(new AnonymousCoder(this.coder));
205
- }
206
- return reader.coerce(this.name, unpack(reader, coders));
207
- }
208
- }
209
-
210
- export { ArrayCoder, pack, unpack };
@@ -1,18 +0,0 @@
1
- import { Coder } from './abstract-coder.js';
2
-
3
- class BooleanCoder extends Coder {
4
- constructor(localName) {
5
- super("bool", "bool", localName, false);
6
- }
7
- defaultValue() {
8
- return false;
9
- }
10
- encode(writer, value) {
11
- return writer.writeValue(value ? 1 : 0);
12
- }
13
- decode(reader) {
14
- return reader.coerce(this.type, !reader.readValue().isZero());
15
- }
16
- }
17
-
18
- export { BooleanCoder };
@@ -1,30 +0,0 @@
1
- import { hexlify, arrayify } from '../../../bytes/lib.esm/index.js';
2
- import { Coder } from './abstract-coder.js';
3
-
4
- class DynamicBytesCoder extends Coder {
5
- constructor(type, localName) {
6
- super(type, type, localName, true);
7
- }
8
- defaultValue() {
9
- return "0x";
10
- }
11
- encode(writer, value) {
12
- value = arrayify(value);
13
- let length = writer.writeValue(value.length);
14
- length += writer.writeBytes(value);
15
- return length;
16
- }
17
- decode(reader) {
18
- return reader.readBytes(reader.readValue().toNumber(), true);
19
- }
20
- }
21
- class BytesCoder extends DynamicBytesCoder {
22
- constructor(localName) {
23
- super("bytes", localName);
24
- }
25
- decode(reader) {
26
- return reader.coerce(this.name, hexlify(super.decode(reader)));
27
- }
28
- }
29
-
30
- export { BytesCoder, DynamicBytesCoder };
@@ -1,26 +0,0 @@
1
- import { arrayify, hexlify } from '../../../bytes/lib.esm/index.js';
2
- import { Coder } from './abstract-coder.js';
3
-
4
- // @TODO: Merge this with bytes
5
- class FixedBytesCoder extends Coder {
6
- constructor(size, localName) {
7
- let name = "bytes" + String(size);
8
- super(name, name, localName, false);
9
- this.size = size;
10
- }
11
- defaultValue() {
12
- return ("0x0000000000000000000000000000000000000000000000000000000000000000").substring(0, 2 + this.size * 2);
13
- }
14
- encode(writer, value) {
15
- let data = arrayify(value);
16
- if (data.length !== this.size) {
17
- this._throwError("incorrect data length", value);
18
- }
19
- return writer.writeBytes(data);
20
- }
21
- decode(reader) {
22
- return reader.coerce(this.name, hexlify(reader.readBytes(this.size)));
23
- }
24
- }
25
-
26
- export { FixedBytesCoder };
@@ -1,22 +0,0 @@
1
- import { Coder } from './abstract-coder.js';
2
-
3
- class NullCoder extends Coder {
4
- constructor(localName) {
5
- super("null", "", localName, false);
6
- }
7
- defaultValue() {
8
- return null;
9
- }
10
- encode(writer, value) {
11
- if (value != null) {
12
- this._throwError("not null", value);
13
- }
14
- return writer.writeBytes([]);
15
- }
16
- decode(reader) {
17
- reader.readBytes(0);
18
- return reader.coerce(this.name, null);
19
- }
20
- }
21
-
22
- export { NullCoder };
@@ -1,43 +0,0 @@
1
- import { Coder } from './abstract-coder.js';
2
- import { BigNumber } from '../../../bignumber/lib.esm/bignumber.js';
3
- import { MaxUint256, One, NegativeOne, Zero } from '../../../constants/lib.esm/bignumbers.js';
4
-
5
- class NumberCoder extends Coder {
6
- constructor(size, signed, localName) {
7
- const name = ((signed ? "int" : "uint") + (size * 8));
8
- super(name, name, localName, false);
9
- this.size = size;
10
- this.signed = signed;
11
- }
12
- defaultValue() {
13
- return 0;
14
- }
15
- encode(writer, value) {
16
- let v = BigNumber.from(value);
17
- // Check bounds are safe for encoding
18
- let maxUintValue = MaxUint256.mask(writer.wordSize * 8);
19
- if (this.signed) {
20
- let bounds = maxUintValue.mask(this.size * 8 - 1);
21
- if (v.gt(bounds) || v.lt(bounds.add(One).mul(NegativeOne))) {
22
- this._throwError("value out-of-bounds", value);
23
- }
24
- }
25
- else if (v.lt(Zero) || v.gt(maxUintValue.mask(this.size * 8))) {
26
- this._throwError("value out-of-bounds", value);
27
- }
28
- v = v.toTwos(this.size * 8).mask(this.size * 8);
29
- if (this.signed) {
30
- v = v.fromTwos(this.size * 8).toTwos(8 * writer.wordSize);
31
- }
32
- return writer.writeValue(v);
33
- }
34
- decode(reader) {
35
- let value = reader.readValue().mask(this.size * 8);
36
- if (this.signed) {
37
- value = value.fromTwos(this.size * 8);
38
- }
39
- return reader.coerce(this.name, value);
40
- }
41
- }
42
-
43
- export { NumberCoder };
@@ -1,19 +0,0 @@
1
- import { toUtf8Bytes, toUtf8String } from '../../../strings/lib.esm/utf8.js';
2
- import { DynamicBytesCoder } from './bytes.js';
3
-
4
- class StringCoder extends DynamicBytesCoder {
5
- constructor(localName) {
6
- super("string", localName);
7
- }
8
- defaultValue() {
9
- return "";
10
- }
11
- encode(writer, value) {
12
- return super.encode(writer, toUtf8Bytes(value));
13
- }
14
- decode(reader) {
15
- return toUtf8String(super.decode(reader));
16
- }
17
- }
18
-
19
- export { StringCoder };
@@ -1,58 +0,0 @@
1
- import { Coder } from './abstract-coder.js';
2
- import { pack, unpack } from './array.js';
3
-
4
- class TupleCoder extends Coder {
5
- constructor(coders, localName) {
6
- let dynamic = false;
7
- const types = [];
8
- coders.forEach((coder) => {
9
- if (coder.dynamic) {
10
- dynamic = true;
11
- }
12
- types.push(coder.type);
13
- });
14
- const type = ("tuple(" + types.join(",") + ")");
15
- super("tuple", type, localName, dynamic);
16
- this.coders = coders;
17
- }
18
- defaultValue() {
19
- const values = [];
20
- this.coders.forEach((coder) => {
21
- values.push(coder.defaultValue());
22
- });
23
- // We only output named properties for uniquely named coders
24
- const uniqueNames = this.coders.reduce((accum, coder) => {
25
- const name = coder.localName;
26
- if (name) {
27
- if (!accum[name]) {
28
- accum[name] = 0;
29
- }
30
- accum[name]++;
31
- }
32
- return accum;
33
- }, {});
34
- // Add named values
35
- this.coders.forEach((coder, index) => {
36
- let name = coder.localName;
37
- if (!name || uniqueNames[name] !== 1) {
38
- return;
39
- }
40
- if (name === "length") {
41
- name = "_length";
42
- }
43
- if (values[name] != null) {
44
- return;
45
- }
46
- values[name] = values[index];
47
- });
48
- return Object.freeze(values);
49
- }
50
- encode(writer, value) {
51
- return pack(writer, this.coders, value);
52
- }
53
- decode(reader) {
54
- return reader.coerce(this.name, unpack(reader, this.coders));
55
- }
56
- }
57
-
58
- export { TupleCoder };