@pushchain/core 0.1.31 → 0.1.32

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pushchain/core",
3
- "version": "0.1.31",
3
+ "version": "0.1.32",
4
4
  "dependencies": {
5
5
  "@bufbuild/protobuf": "^2.0.0",
6
6
  "@coral-xyz/anchor": "^0.31.0",
@@ -63,5 +63,24 @@ export declare class Utils {
63
63
  functionName: string;
64
64
  args?: any[];
65
65
  }): string;
66
+ /**
67
+ * Multiplies a string representation of a number by a given exponent of base 10 (10^exponent).
68
+ *
69
+ * This is commonly used for converting human-readable token amounts to their on-chain representation.
70
+ * For example, converting "1.5" ETH to wei (18 decimals) would be parseUnits("1.5", 18).
71
+ *
72
+ * @param {string} value - The string representation of the number to multiply.
73
+ * @param {number} exponent - The exponent (number of decimal places).
74
+ * @returns {bigint} The result as a bigint.
75
+ *
76
+ * @example
77
+ * Utils.helpers.parseUnits('420', 9)
78
+ * // → 420000000000n
79
+ *
80
+ * @example
81
+ * Utils.helpers.parseUnits('1.5', 18)
82
+ * // → 1500000000000000000n
83
+ */
84
+ parseUnits(value: string, exponent: number): bigint;
66
85
  };
67
86
  }
package/src/lib/utils.js CHANGED
@@ -99,5 +99,73 @@ Utils.helpers = {
99
99
  throw new Error(`Failed to encode function '${functionName}': ${error instanceof Error ? error.message : 'Unknown error'}`);
100
100
  }
101
101
  },
102
+ /**
103
+ * Multiplies a string representation of a number by a given exponent of base 10 (10^exponent).
104
+ *
105
+ * This is commonly used for converting human-readable token amounts to their on-chain representation.
106
+ * For example, converting "1.5" ETH to wei (18 decimals) would be parseUnits("1.5", 18).
107
+ *
108
+ * @param {string} value - The string representation of the number to multiply.
109
+ * @param {number} exponent - The exponent (number of decimal places).
110
+ * @returns {bigint} The result as a bigint.
111
+ *
112
+ * @example
113
+ * Utils.helpers.parseUnits('420', 9)
114
+ * // → 420000000000n
115
+ *
116
+ * @example
117
+ * Utils.helpers.parseUnits('1.5', 18)
118
+ * // → 1500000000000000000n
119
+ */
120
+ parseUnits(value, exponent) {
121
+ // Validate inputs
122
+ if (typeof value !== 'string') {
123
+ throw new Error('Value must be a string');
124
+ }
125
+ if (typeof exponent !== 'number' ||
126
+ !Number.isInteger(exponent) ||
127
+ exponent < 0) {
128
+ throw new Error('Exponent must be a non-negative integer');
129
+ }
130
+ // Handle empty string
131
+ if (value.trim() === '') {
132
+ throw new Error('Value cannot be empty');
133
+ }
134
+ // Remove any whitespace
135
+ const trimmedValue = value.trim();
136
+ // Check for valid number format
137
+ if (!/^-?\d*\.?\d*$/.test(trimmedValue)) {
138
+ throw new Error('Value must be a valid number string');
139
+ }
140
+ // Handle case where value is just a decimal point
141
+ if (trimmedValue === '.' ||
142
+ trimmedValue === '-.' ||
143
+ trimmedValue === '') {
144
+ throw new Error('Value must be a valid number string');
145
+ }
146
+ try {
147
+ // Split on decimal point to handle fractional values
148
+ const parts = trimmedValue.split('.');
149
+ const integerPart = parts[0] || '0';
150
+ const fractionalPart = parts[1] || '';
151
+ // Check if fractional part has more digits than the exponent allows
152
+ if (fractionalPart.length > exponent) {
153
+ throw new Error(`Value has more decimal places (${fractionalPart.length}) than exponent allows (${exponent})`);
154
+ }
155
+ // Pad fractional part with zeros to match exponent
156
+ const paddedFractionalPart = fractionalPart.padEnd(exponent, '0');
157
+ // Combine integer and fractional parts
158
+ const combinedValue = integerPart + paddedFractionalPart;
159
+ // Convert to bigint
160
+ return BigInt(combinedValue);
161
+ }
162
+ catch (error) {
163
+ if (error instanceof Error &&
164
+ error.message.includes('decimal places')) {
165
+ throw error;
166
+ }
167
+ throw new Error(`Failed to parse value '${value}': ${error instanceof Error ? error.message : 'Invalid number format'}`);
168
+ }
169
+ },
102
170
  };
103
171
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../packages/core/src/lib/utils.ts"],"names":[],"mappings":";;;AAAA,iDAK6B;AAC7B,+CAI4B;AAC5B,6CAA0C;AAC1C,mCAAgC;AAEhC;;;GAGG;AAEH;;;GAGG;AACH,MAAa,KAAK;;AAAlB,sBAgHC;AA/GQ,aAAO,GAAG;IACf;;;;;;;;;;;;;;;OAeG;IACH,eAAe,EAAf,yBAAe;IAEf,WAAW,EAAX,qBAAW;IAEX;;;;;;;;;;OAUG;IACH,iBAAiB,EAAjB,2BAAiB;IAEjB,uBAAuB,EAAvB,iCAAuB;CACxB,CAAC;AAEK,YAAM,GAAG;IACd;;OAEG;IACH,sBAAsB,EAAtB,+BAAsB;IACtB;;OAEG;IACH,SAAS,EAAT,kBAAS;IACT;;OAEG;IACH,WAAW,EAAE,oBAAiB;CAC/B,CAAC;AAEK,aAAO,GAAG;IACf,YAAY,EAAE,CAAC,cAAsB,EAAE,EAAE;QACvC,+EAA+E;QAC/E,IAAI,cAAc,KAAK,cAAc,EAAE,CAAC;YACtC,OAAO,oBAAoB,CAAC;QAC9B,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,aAAK,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAClC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,cAAc,CACzC,CAAC;QAEF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,gBAAgB,cAAc,2BAA2B,CAC1D,CAAC;QACJ,CAAC;QAED,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,YAAY,CAAC,EACX,GAAG,EACH,YAAY,EACZ,IAAI,GAAG,EAAE,GAKV;QACC,kBAAkB;QAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,+BAA+B;QAC/B,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QAClE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,aAAa,YAAY,oBAAoB,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,CAAC;YACH,uDAAuD;YACvD,MAAM,YAAY,GAAG,IAAI,eAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,YAAY,CAAC,kBAAkB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,8BAA8B,YAAY,MACxC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAC3C,EAAE,CACH,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../packages/core/src/lib/utils.ts"],"names":[],"mappings":"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"}