@berachain/berajs 0.2.8-beta.4 → 0.2.8-beta.6

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 (150) hide show
  1. package/dist/abi/exports.cjs +1 -4452
  2. package/dist/abi/exports.cjs.map +1 -1
  3. package/dist/abi/exports.mjs +1 -4452
  4. package/dist/abi/exports.mjs.map +1 -1
  5. package/dist/actions/exports.cjs +1 -918
  6. package/dist/actions/exports.cjs.map +1 -1
  7. package/dist/actions/exports.mjs +1 -918
  8. package/dist/actions/exports.mjs.map +1 -1
  9. package/dist/chunk-3MZ7MLKF.mjs +2 -0
  10. package/dist/{chunk-PBCE7JTE.mjs.map → chunk-3MZ7MLKF.mjs.map} +1 -1
  11. package/dist/chunk-53TSJM6P.cjs +2 -0
  12. package/dist/chunk-53TSJM6P.cjs.map +1 -0
  13. package/dist/chunk-575OK77P.mjs +2 -0
  14. package/dist/{chunk-GLWPRM33.mjs.map → chunk-575OK77P.mjs.map} +1 -1
  15. package/dist/chunk-5NDYN2IB.mjs +4 -0
  16. package/dist/chunk-5NDYN2IB.mjs.map +1 -0
  17. package/dist/chunk-5W7UKRHX.mjs +2 -0
  18. package/dist/{chunk-J6EHBYSV.mjs.map → chunk-5W7UKRHX.mjs.map} +1 -1
  19. package/dist/chunk-7EAKCNQT.cjs +2 -0
  20. package/dist/chunk-7EAKCNQT.cjs.map +1 -0
  21. package/dist/chunk-CWKDFUFR.mjs +2 -0
  22. package/dist/{chunk-OWUI3VPI.mjs.map → chunk-CWKDFUFR.mjs.map} +1 -1
  23. package/dist/chunk-DDEQFR3M.cjs +2 -0
  24. package/dist/chunk-DDEQFR3M.cjs.map +1 -0
  25. package/dist/chunk-DKY4QPWU.cjs +2 -0
  26. package/dist/chunk-DKY4QPWU.cjs.map +1 -0
  27. package/dist/chunk-DTBJO6VT.cjs +2 -0
  28. package/dist/chunk-DTBJO6VT.cjs.map +1 -0
  29. package/dist/chunk-E32UP4GV.cjs +2 -0
  30. package/dist/chunk-E32UP4GV.cjs.map +1 -0
  31. package/dist/chunk-ESAVA5OD.mjs +2 -0
  32. package/dist/{chunk-ALPEMPZI.mjs.map → chunk-ESAVA5OD.mjs.map} +1 -1
  33. package/dist/chunk-G4CNETLS.mjs +2 -0
  34. package/dist/{chunk-CYBZH6U3.mjs.map → chunk-G4CNETLS.mjs.map} +1 -1
  35. package/dist/chunk-I7M43BB4.cjs +2 -0
  36. package/dist/chunk-I7M43BB4.cjs.map +1 -0
  37. package/dist/chunk-KT6L4K4K.cjs +2 -0
  38. package/dist/chunk-KT6L4K4K.cjs.map +1 -0
  39. package/dist/chunk-MK5NS5B5.mjs +2 -0
  40. package/dist/{chunk-7TFV6UKF.mjs.map → chunk-MK5NS5B5.mjs.map} +1 -1
  41. package/dist/chunk-NAXAZJJY.mjs +2 -0
  42. package/dist/{chunk-ZCEFC2TK.mjs.map → chunk-NAXAZJJY.mjs.map} +1 -1
  43. package/dist/chunk-NLVWRMGD.mjs +2 -0
  44. package/dist/{chunk-GWSTVITN.mjs.map → chunk-NLVWRMGD.mjs.map} +1 -1
  45. package/dist/chunk-OGBD5YOG.mjs +2 -0
  46. package/dist/{chunk-JA4DHMTG.mjs.map → chunk-OGBD5YOG.mjs.map} +1 -1
  47. package/dist/chunk-OGJMSGB2.mjs +2 -0
  48. package/dist/{chunk-KL6YZ5VR.mjs.map → chunk-OGJMSGB2.mjs.map} +1 -1
  49. package/dist/chunk-OIYXOKTT.cjs +2 -0
  50. package/dist/chunk-OIYXOKTT.cjs.map +1 -0
  51. package/dist/chunk-OUD27MU7.cjs +2 -0
  52. package/dist/chunk-OUD27MU7.cjs.map +1 -0
  53. package/dist/chunk-QFLDL4UV.cjs +2 -0
  54. package/dist/chunk-QFLDL4UV.cjs.map +1 -0
  55. package/dist/chunk-RSDCKN4Q.mjs +2 -0
  56. package/dist/chunk-RSDCKN4Q.mjs.map +1 -0
  57. package/dist/chunk-RWOICHRW.cjs +2 -0
  58. package/dist/chunk-RWOICHRW.cjs.map +1 -0
  59. package/dist/chunk-S5VOCVBR.mjs +2 -0
  60. package/dist/{chunk-MKS6W5NI.mjs.map → chunk-S5VOCVBR.mjs.map} +1 -1
  61. package/dist/chunk-SSPFPAWX.mjs +2 -0
  62. package/dist/{chunk-WAFQFAI7.mjs.map → chunk-SSPFPAWX.mjs.map} +1 -1
  63. package/dist/chunk-T5FSQ3YE.mjs +2 -0
  64. package/dist/{chunk-WEULAXBE.mjs.map → chunk-T5FSQ3YE.mjs.map} +1 -1
  65. package/dist/chunk-WD4B3SXS.cjs +4 -0
  66. package/dist/chunk-WD4B3SXS.cjs.map +1 -0
  67. package/dist/chunk-WRFDB3QJ.cjs +2 -0
  68. package/dist/chunk-WRFDB3QJ.cjs.map +1 -0
  69. package/dist/chunk-XNJLSA6P.cjs +2 -0
  70. package/dist/chunk-XNJLSA6P.cjs.map +1 -0
  71. package/dist/chunk-ZYXVUXFQ.cjs +2 -0
  72. package/dist/chunk-ZYXVUXFQ.cjs.map +1 -0
  73. package/dist/contexts/exports.cjs +1 -82
  74. package/dist/contexts/exports.cjs.map +1 -1
  75. package/dist/contexts/exports.mjs +1 -82
  76. package/dist/contexts/exports.mjs.map +1 -1
  77. package/dist/enum/exports.cjs +1 -58
  78. package/dist/enum/exports.cjs.map +1 -1
  79. package/dist/enum/exports.mjs +1 -58
  80. package/dist/enum/exports.mjs.map +1 -1
  81. package/dist/errors/exports.cjs +1 -38
  82. package/dist/errors/exports.cjs.map +1 -1
  83. package/dist/errors/exports.mjs +1 -38
  84. package/dist/hooks/exports.cjs +3 -8327
  85. package/dist/hooks/exports.cjs.map +1 -1
  86. package/dist/hooks/exports.mjs +3 -8327
  87. package/dist/hooks/exports.mjs.map +1 -1
  88. package/dist/utils/exports.cjs +1 -786
  89. package/dist/utils/exports.cjs.map +1 -1
  90. package/dist/utils/exports.mjs +1 -786
  91. package/dist/utils/exports.mjs.map +1 -1
  92. package/package.json +4 -4
  93. package/src/actions/dex/aggregators/base.ts +1 -3
  94. package/src/actions/governance/getDecodedFunctionData.ts +4 -8
  95. package/src/actions/tokens/getUnderlyingToken.ts +1 -3
  96. package/src/errors/BeraError.ts +7 -2
  97. package/src/hooks/dex/usePoolHistoricalData.ts +1 -1
  98. package/src/hooks/enso/useBendZapSupply.ts +1 -1
  99. package/src/hooks/perps/usePythUpdateFee.ts +1 -1
  100. package/src/hooks/validators/useValidatorRewardAllocation.ts +1 -1
  101. package/dist/chunk-24HMIYTN.cjs +0 -36
  102. package/dist/chunk-24HMIYTN.cjs.map +0 -1
  103. package/dist/chunk-2LL77B3T.cjs +0 -135
  104. package/dist/chunk-2LL77B3T.cjs.map +0 -1
  105. package/dist/chunk-3LXVARBJ.cjs +0 -417
  106. package/dist/chunk-3LXVARBJ.cjs.map +0 -1
  107. package/dist/chunk-4HDIUUSV.cjs +0 -130
  108. package/dist/chunk-4HDIUUSV.cjs.map +0 -1
  109. package/dist/chunk-7ONKBHXY.cjs +0 -169
  110. package/dist/chunk-7ONKBHXY.cjs.map +0 -1
  111. package/dist/chunk-7TFV6UKF.mjs +0 -24
  112. package/dist/chunk-A4FPM7U3.cjs +0 -63
  113. package/dist/chunk-A4FPM7U3.cjs.map +0 -1
  114. package/dist/chunk-A7P3JVU7.cjs +0 -4694
  115. package/dist/chunk-A7P3JVU7.cjs.map +0 -1
  116. package/dist/chunk-ALPEMPZI.mjs +0 -417
  117. package/dist/chunk-BEHP54S3.cjs +0 -24
  118. package/dist/chunk-BEHP54S3.cjs.map +0 -1
  119. package/dist/chunk-CYBZH6U3.mjs +0 -135
  120. package/dist/chunk-EWBKSMPG.cjs +0 -13
  121. package/dist/chunk-EWBKSMPG.cjs.map +0 -1
  122. package/dist/chunk-GLWPRM33.mjs +0 -13
  123. package/dist/chunk-GWSTVITN.mjs +0 -572
  124. package/dist/chunk-H3Z37RYU.cjs +0 -15
  125. package/dist/chunk-H3Z37RYU.cjs.map +0 -1
  126. package/dist/chunk-HCC4FJTD.cjs +0 -97
  127. package/dist/chunk-HCC4FJTD.cjs.map +0 -1
  128. package/dist/chunk-J6EHBYSV.mjs +0 -97
  129. package/dist/chunk-JA4DHMTG.mjs +0 -15
  130. package/dist/chunk-KL6YZ5VR.mjs +0 -63
  131. package/dist/chunk-MILSHCKW.cjs +0 -168
  132. package/dist/chunk-MILSHCKW.cjs.map +0 -1
  133. package/dist/chunk-MKS6W5NI.mjs +0 -403
  134. package/dist/chunk-MXWPP6MS.cjs +0 -572
  135. package/dist/chunk-MXWPP6MS.cjs.map +0 -1
  136. package/dist/chunk-OWUI3VPI.mjs +0 -169
  137. package/dist/chunk-PBCE7JTE.mjs +0 -36
  138. package/dist/chunk-QISQSMCV.cjs +0 -1843
  139. package/dist/chunk-QISQSMCV.cjs.map +0 -1
  140. package/dist/chunk-SYWYIMY7.mjs +0 -4694
  141. package/dist/chunk-SYWYIMY7.mjs.map +0 -1
  142. package/dist/chunk-TDW5SPXR.cjs +0 -244
  143. package/dist/chunk-TDW5SPXR.cjs.map +0 -1
  144. package/dist/chunk-TGHG6Q3C.cjs +0 -403
  145. package/dist/chunk-TGHG6Q3C.cjs.map +0 -1
  146. package/dist/chunk-WAFQFAI7.mjs +0 -130
  147. package/dist/chunk-WEULAXBE.mjs +0 -168
  148. package/dist/chunk-ZCEFC2TK.mjs +0 -244
  149. package/dist/chunk-ZV7DCQQY.mjs +0 -1843
  150. package/dist/chunk-ZV7DCQQY.mjs.map +0 -1
@@ -1,417 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
-
3
- var _chunkQISQSMCVcjs = require('./chunk-QISQSMCV.cjs');
4
-
5
- // src/utils/getErrorResponse.ts
6
- async function getErrorResponse(response) {
7
- const contentType = response.headers.get("content-type");
8
- if (_optionalChain([contentType, 'optionalAccess', _ => _.includes, 'call', _2 => _2("application/json")])) {
9
- return response.json();
10
- } else {
11
- const text = await response.text();
12
- try {
13
- return JSON.parse(text);
14
- } catch (e) {
15
- return {
16
- message: "Unknown error, can't decode response into JSON",
17
- cause: text
18
- };
19
- }
20
- }
21
- }
22
-
23
- // src/utils/beraFetch.ts
24
- async function beraFetch(endpoint, options) {
25
- try {
26
- const response = await fetch(
27
- typeof endpoint === "string" || endpoint instanceof URL ? endpoint : endpoint.url,
28
- {
29
- ...options
30
- }
31
- );
32
- if (!response.ok) {
33
- const error = await getErrorResponse(response);
34
- throw new (0, _chunkQISQSMCVcjs.RequestError)({
35
- cause: error,
36
- // @to-do import getErrorResponse logic in this function
37
- // when it's removed from other places
38
- response,
39
- endpoint
40
- });
41
- }
42
- return response;
43
- } catch (error) {
44
- if (error instanceof _chunkQISQSMCVcjs.RequestError) {
45
- throw error;
46
- }
47
- throw new (0, _chunkQISQSMCVcjs.RequestError)({
48
- cause: error,
49
- endpoint,
50
- response: void 0
51
- });
52
- }
53
- }
54
- async function beraFetchJson(endpoint, options) {
55
- const response = await beraFetch(endpoint, {
56
- ...options,
57
- headers: {
58
- Accept: "application/json",
59
- ..._optionalChain([options, 'optionalAccess', _3 => _3.headers])
60
- }
61
- });
62
- return response.json();
63
- }
64
-
65
- // src/utils/constants.ts
66
- var _viem = require('viem');
67
- var CAP_LIMIT_BUFFER = _viem.parseEther.call(void 0, "0.005");
68
- var MAX_CUSTOM_DEADLINE = 1e5;
69
- var MIN_CUSTOM_DEADLINE = 1;
70
- var MIN_CUSTOM_SLIPPAGE = 0.1;
71
- var MAX_CUSTOM_SLIPPAGE = 50;
72
- var DEFAULT_METAMASK_GAS_LIMIT = 7920027n;
73
-
74
- // src/utils/pythHoneyUtils.ts
75
- var getPythDefaultUpdateFee = (tokenListLength) => {
76
- return 2n * BigInt(tokenListLength);
77
- };
78
-
79
- // src/utils/time.ts
80
- function msToSeconds(ms) {
81
- return Math.floor(ms / 1e3);
82
- }
83
- function seconds(seconds2) {
84
- return seconds2 * 1e3;
85
- }
86
- function minutes(minutes2) {
87
- return minutes2 * seconds(60);
88
- }
89
- function minutesInSeconds(minutes2) {
90
- return minutes2 * 60;
91
- }
92
- function hours(hours2) {
93
- return hours2 * minutes(60);
94
- }
95
- function hoursInSeconds(hours2) {
96
- return hours2 * minutesInSeconds(60);
97
- }
98
- function days(days2) {
99
- return days2 * hours(24);
100
- }
101
- function daysInSeconds(days2) {
102
- return days2 * hoursInSeconds(24);
103
- }
104
- function weeks(weeks2) {
105
- return weeks2 * days(7);
106
- }
107
- function weeksInSeconds(weeks2) {
108
- return weeks2 * daysInSeconds(7);
109
- }
110
- function months(months2) {
111
- return months2 * days(30);
112
- }
113
- function monthsInSeconds(months2) {
114
- return months2 * daysInSeconds(30);
115
- }
116
- function years(years2) {
117
- return years2 * days(365);
118
- }
119
- function yearsInSeconds(years2) {
120
- return years2 * daysInSeconds(365);
121
- }
122
-
123
- // src/utils/formatTimestamps.ts
124
- function calculateTimestampFromDays(daysRange) {
125
- const currentDate = /* @__PURE__ */ new Date();
126
- return currentDate.setDate(currentDate.getDate() - daysRange) * 1e3;
127
- }
128
- var monthNames = [
129
- "January",
130
- "February",
131
- "March",
132
- "April",
133
- "May",
134
- "June",
135
- "July",
136
- "August",
137
- "September",
138
- "October",
139
- "November",
140
- "December"
141
- ];
142
- var shortMonthNames = [
143
- "Jan",
144
- "Feb",
145
- "Mar",
146
- "Apr",
147
- "May",
148
- "Jun",
149
- "Jul",
150
- "Aug",
151
- "Sep",
152
- "Oct",
153
- "Nov",
154
- "Dec"
155
- ];
156
- function formatUnixTimestamp(unixTimestamp, isShort) {
157
- const date = new Date(unixTimestamp * 1e3);
158
- const day = date.getDate();
159
- let daySuffix = "th";
160
- if (day === 1 || day === 21 || day === 31) {
161
- daySuffix = "st";
162
- } else if (day === 2 || day === 22) {
163
- daySuffix = "nd";
164
- } else if (day === 3 || day === 23) {
165
- daySuffix = "rd";
166
- }
167
- if (isShort) {
168
- return `${shortMonthNames[date.getMonth()]} ${day}`;
169
- }
170
- return `${monthNames[date.getMonth()]} ${day}${daySuffix}, ${date.getFullYear()}`;
171
- }
172
- function formatTimeLeft(...args) {
173
- const timeLeftInSeconds = args[0];
174
- let condensed;
175
- let showDays;
176
- let showMinutes;
177
- let showSeconds;
178
- if (typeof args[1] !== "object") {
179
- condensed = _nullishCoalesce(args[1], () => ( false));
180
- showDays = _nullishCoalesce(args[2], () => ( false));
181
- showSeconds = _nullishCoalesce(args[3], () => ( false));
182
- showMinutes = true;
183
- } else {
184
- const opts = args[1];
185
- condensed = _nullishCoalesce(opts.condensed, () => ( false));
186
- const greaterUnit = _nullishCoalesce(opts.greaterUnit, () => ( "hours"));
187
- if (greaterUnit === "days") {
188
- showDays = true;
189
- showMinutes = true;
190
- } else if (greaterUnit === "hours") {
191
- showDays = false;
192
- showMinutes = true;
193
- showSeconds = false;
194
- } else {
195
- showDays = false;
196
- showMinutes = true;
197
- }
198
- showSeconds = _nullishCoalesce(opts.showSeconds, () => ( false));
199
- }
200
- let days2 = Math.floor(timeLeftInSeconds / (3600 * 24));
201
- let hours2 = Math.floor(timeLeftInSeconds % (3600 * 24) / 3600);
202
- const minutes2 = Math.floor(timeLeftInSeconds % 3600 / 60);
203
- const seconds2 = timeLeftInSeconds % 60;
204
- if (!showDays) {
205
- hours2 += days2 * 24;
206
- days2 = 0;
207
- }
208
- if (days2 === 0 && hours2 === 0 && minutes2 === 0) {
209
- return condensed ? "< 1 M" : "less than a minute";
210
- }
211
- const daysDisplay = days2 > 0 ? `${days2}${condensed ? "D" : " day"}${!condensed && days2 !== 1 ? "s" : ""}` : "";
212
- const hoursDisplay = hours2 > 0 ? `${hours2}${condensed ? "H" : " hour"}${!condensed && hours2 !== 1 ? "s" : ""}` : "";
213
- const minutesDisplay = minutes2 > 0 && showMinutes || !days2 && !hours2 ? `${minutes2}${condensed ? "M" : " minute"}${!condensed && minutes2 !== 1 ? "s" : ""}` : "";
214
- const secondsDisplay = seconds2 > 0 && showSeconds ? `${seconds2}${condensed ? "S" : " second"}${!condensed && seconds2 !== 1 ? "s" : ""}` : "";
215
- return [daysDisplay, hoursDisplay, minutesDisplay, secondsDisplay].filter(Boolean).join(condensed ? " " : ", ");
216
- }
217
-
218
- // ../utils/src/pkg/bignumber.js.ts
219
- var _bignumberjs = require('bignumber.js'); var _bignumberjs2 = _interopRequireDefault(_bignumberjs);
220
- _bignumberjs2.default.set({
221
- // The EXPONENTIAL_AT option defines the exponent value(s) at which toString returns exponential notation.
222
- // - Single number: the exponent magnitude at and above which exponential notation is used (e.g., `1e9` here disables it for almost all values).
223
- // - 1e9 is the maximum value supported by BigNumber.js.
224
- // See: https://mikemcl.github.io/bignumber.js/#exponential-at
225
- EXPONENTIAL_AT: 1e9
226
- });
227
- var bignumber_js_default = _bignumberjs2.default;
228
-
229
- // src/utils/formatNumber.ts
230
- var POSTFIXES = ["", "K", "M", "B", "T", "P", "E", "Z", "Y"];
231
- function valueToBigNumber(amount) {
232
- if (amount instanceof bignumber_js_default) return amount;
233
- return new bignumber_js_default(amount);
234
- }
235
- function normalizeBN(n, decimals) {
236
- return valueToBigNumber(n).shiftedBy(decimals * -1);
237
- }
238
- function formatNumber(value, options = {}) {
239
- if (typeof options === "number") {
240
- const decimals2 = options;
241
- if (value === void 0 || value === null) {
242
- return "";
243
- }
244
- if (typeof value === "object") {
245
- throw new Error("Value must be a number if using deprecated version");
246
- }
247
- let formatted = Number(value).toFixed(decimals2);
248
- formatted = formatted.replace(/(\.\d*?[1-9])0+$|\.0*$/, "$1");
249
- return formatted;
250
- }
251
- const {
252
- visibleDecimals,
253
- compact = true,
254
- percent = false,
255
- roundDown = false,
256
- roundUp = false,
257
- compactThreshold,
258
- maxValue,
259
- symbol,
260
- prefixText = "",
261
- suffixText = "",
262
- showIsSmallerThanMin = true,
263
- ifNullish = ""
264
- } = options || {};
265
- if (value === void 0 || value === null) {
266
- return ifNullish;
267
- }
268
- const number = percent ? Number(value) * 100 : Number(value);
269
- if (Number.isNaN(number)) {
270
- return "NaN";
271
- }
272
- if (number === Number.POSITIVE_INFINITY) {
273
- return "Infinity";
274
- }
275
- if (number === Number.NEGATIVE_INFINITY) {
276
- return "-Infinity";
277
- }
278
- let decimals = _nullishCoalesce(visibleDecimals, () => ( 0));
279
- if (number === 0) {
280
- decimals = 0;
281
- } else if (visibleDecimals === void 0) {
282
- if (Math.abs(number) > 1 || percent || symbol === "USD") {
283
- decimals = 2;
284
- } else {
285
- decimals = 7;
286
- }
287
- }
288
- const minValue = 10 ** -decimals;
289
- const isSmallerThanMin = number !== 0 && Math.abs(number) < Math.abs(minValue);
290
- const isNegative = number < 0;
291
- const isBiggerThanMax = maxValue ? Math.abs(number) > maxValue : false;
292
- let formattedNumber = isSmallerThanMin ? minValue : number;
293
- const forceCompact = compact && (!compactThreshold || Math.abs(number) > compactThreshold);
294
- if (roundDown && !forceCompact) {
295
- formattedNumber = Math.trunc(Number(formattedNumber) * 10 ** decimals) / 10 ** decimals;
296
- } else if (roundUp && !forceCompact) {
297
- formattedNumber = Math.ceil(Number(formattedNumber) * 10 ** decimals) / 10 ** decimals;
298
- }
299
- let formattedValue;
300
- if (isBiggerThanMax) {
301
- formattedValue = number > maxValue ? "\u221E" : "-\u221E";
302
- } else if (!forceCompact) {
303
- const absFormatted = new Intl.NumberFormat("en-US", {
304
- maximumFractionDigits: decimals,
305
- minimumFractionDigits: decimals
306
- }).format(Math.abs(formattedNumber));
307
- formattedValue = `${isNegative ? "-" : ""}${absFormatted}`;
308
- } else {
309
- const bnValue = valueToBigNumber(formattedNumber);
310
- let integerPlaces = bnValue.abs().toFixed(0).length;
311
- if (compactThreshold && Math.abs(number) <= compactThreshold) {
312
- integerPlaces = 0;
313
- }
314
- const significantDigitsGroup = Math.min(
315
- Math.floor(integerPlaces ? (integerPlaces - 1) / 3 : 0),
316
- POSTFIXES.length - 1
317
- );
318
- const postfix = POSTFIXES[significantDigitsGroup];
319
- let compactValue = normalizeBN(
320
- bnValue,
321
- 3 * significantDigitsGroup
322
- ).toNumber();
323
- if (roundDown) {
324
- compactValue = Math.trunc(Number(compactValue) * 10 ** decimals) / 10 ** decimals;
325
- } else if (roundUp) {
326
- compactValue = Math.ceil(Number(compactValue) * 10 ** decimals) / 10 ** decimals;
327
- }
328
- const prefix = new Intl.NumberFormat("en-US", {
329
- maximumFractionDigits: decimals,
330
- minimumFractionDigits: decimals
331
- }).format(compactValue);
332
- formattedValue = `${prefix}${postfix}`;
333
- }
334
- const parts = [];
335
- if (prefixText) {
336
- parts.push(prefixText);
337
- }
338
- if (isSmallerThanMin && showIsSmallerThanMin) {
339
- parts.push(number < 0 ? ">" : "<");
340
- }
341
- if (_optionalChain([symbol, 'optionalAccess', _4 => _4.toLowerCase, 'call', _5 => _5()]) === "usd" && !percent) {
342
- parts.push("$");
343
- }
344
- parts.push(formattedValue);
345
- if (percent) {
346
- parts.push("%");
347
- }
348
- if (_optionalChain([symbol, 'optionalAccess', _6 => _6.toLowerCase, 'call', _7 => _7()]) !== "usd" && typeof symbol !== "undefined") {
349
- parts.push(" ", symbol);
350
- }
351
- if (suffixText) {
352
- parts.push(suffixText);
353
- }
354
- return parts.join("");
355
- }
356
- var getSafeNumber = (value) => {
357
- if (!value) return 0;
358
- return Number(value) > Number.MAX_SAFE_INTEGER ? Number.MAX_SAFE_INTEGER : _nullishCoalesce(Number(value), () => ( 0));
359
- };
360
- var truncateDecimal = (value, maxDecimal) => {
361
- if (!value) return "0";
362
- const [integerPart = "0", decimalPart = "0"] = `${value}`.split(".");
363
- return `${integerPart}.${decimalPart.substring(0, maxDecimal)}`;
364
- };
365
-
366
- // src/utils/getTestClient.ts
367
-
368
-
369
-
370
-
371
- var _internal = require('@berachain/config/internal');
372
- function getTestClient(chainId = _internal.defaultChainId) {
373
- const rpc = _internal.getRpcUrls.call(void 0, chainId);
374
- if (!rpc.isAnvil) {
375
- throw new Error("No anvil RPC URL found");
376
- }
377
- return _viem.createTestClient.call(void 0, {
378
- mode: "anvil",
379
- transport: _viem.http.call(void 0, rpc.jsonRpcUrl)
380
- });
381
- }
382
-
383
-
384
-
385
-
386
-
387
-
388
-
389
-
390
-
391
-
392
-
393
-
394
-
395
-
396
-
397
-
398
-
399
-
400
-
401
-
402
-
403
-
404
-
405
-
406
-
407
-
408
-
409
-
410
-
411
-
412
-
413
-
414
-
415
-
416
- exports.bignumber_js_default = bignumber_js_default; exports.getErrorResponse = getErrorResponse; exports.beraFetch = beraFetch; exports.beraFetchJson = beraFetchJson; exports.CAP_LIMIT_BUFFER = CAP_LIMIT_BUFFER; exports.MAX_CUSTOM_DEADLINE = MAX_CUSTOM_DEADLINE; exports.MIN_CUSTOM_DEADLINE = MIN_CUSTOM_DEADLINE; exports.MIN_CUSTOM_SLIPPAGE = MIN_CUSTOM_SLIPPAGE; exports.MAX_CUSTOM_SLIPPAGE = MAX_CUSTOM_SLIPPAGE; exports.DEFAULT_METAMASK_GAS_LIMIT = DEFAULT_METAMASK_GAS_LIMIT; exports.getPythDefaultUpdateFee = getPythDefaultUpdateFee; exports.msToSeconds = msToSeconds; exports.seconds = seconds; exports.minutes = minutes; exports.minutesInSeconds = minutesInSeconds; exports.hours = hours; exports.hoursInSeconds = hoursInSeconds; exports.days = days; exports.daysInSeconds = daysInSeconds; exports.weeks = weeks; exports.weeksInSeconds = weeksInSeconds; exports.months = months; exports.monthsInSeconds = monthsInSeconds; exports.years = years; exports.yearsInSeconds = yearsInSeconds; exports.calculateTimestampFromDays = calculateTimestampFromDays; exports.formatUnixTimestamp = formatUnixTimestamp; exports.formatTimeLeft = formatTimeLeft; exports.formatNumber = formatNumber; exports.getSafeNumber = getSafeNumber; exports.truncateDecimal = truncateDecimal; exports.getTestClient = getTestClient;
417
- //# sourceMappingURL=chunk-3LXVARBJ.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/Users/pong/coding/monobera/packages/berajs/dist/chunk-3LXVARBJ.cjs","../src/utils/getErrorResponse.ts","../src/utils/beraFetch.ts","../src/utils/constants.ts","../src/utils/pythHoneyUtils.ts","../src/utils/time.ts","../src/utils/formatTimestamps.ts","../../utils/src/pkg/bignumber.js.ts","../src/utils/formatNumber.ts","../src/utils/getTestClient.ts"],"names":["seconds","minutes","hours","days","weeks","months","years","decimals"],"mappings":"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","file":"/Users/pong/coding/monobera/packages/berajs/dist/chunk-3LXVARBJ.cjs","sourcesContent":[null,"/**\n * @deprecated use beraFetch instead\n */\nexport async function getErrorResponse(response: Response) {\n const contentType = response.headers.get(\"content-type\");\n\n if (contentType?.includes(\"application/json\")) {\n return response.json();\n } else {\n const text = await response.text();\n try {\n return JSON.parse(text);\n } catch {\n return {\n message: \"Unknown error, can't decode response into JSON\",\n cause: text,\n };\n }\n }\n}\n","import { RequestError } from \"../errors/RequestError\";\nimport { getErrorResponse } from \"./getErrorResponse\";\n\ntype RequestOptions = RequestInit;\n\nexport async function beraFetch(\n endpoint: ConstructorParameters<typeof RequestError>[0][\"endpoint\"],\n options?: RequestOptions,\n) {\n try {\n const response = await fetch(\n typeof endpoint === \"string\" || endpoint instanceof URL\n ? endpoint\n : endpoint.url,\n {\n ...options,\n },\n );\n if (!response.ok) {\n const error = await getErrorResponse(response);\n throw new RequestError({\n cause: error,\n // @to-do import getErrorResponse logic in this function\n // when it's removed from other places\n response: response,\n endpoint,\n });\n }\n return response;\n } catch (error) {\n if (error instanceof RequestError) {\n throw error;\n }\n\n throw new RequestError({\n cause: error,\n endpoint,\n response: undefined,\n });\n }\n}\n\nexport async function beraFetchJson<T>(\n endpoint: ConstructorParameters<typeof RequestError>[0][\"endpoint\"],\n options?: RequestOptions,\n) {\n const response = await beraFetch(endpoint, {\n ...options,\n headers: {\n Accept: \"application/json\",\n ...options?.headers,\n },\n });\n return response.json() as Promise<T>;\n}\n","import { parseEther } from \"viem\";\n\n// the buffer of the cap limit, if the user gets close to 10% of the cap limit\n// they should be warned\nexport const CAP_LIMIT_BUFFER = parseEther(\"0.005\");\n\n/**\n * Maximum allowed input for a custom deadline in seconds.\n * @type {number}\n */\nexport const MAX_CUSTOM_DEADLINE = 100000;\n\n/**\n * Minimum allowed input for a custom deadline in seconds.\n * @type {number}\n */\nexport const MIN_CUSTOM_DEADLINE = 1;\n\n/**\n * Minimum allowed input for a custom slippage tolerance percentage.\n * @type {number}\n */\nexport const MIN_CUSTOM_SLIPPAGE = 0.1;\n\n/**\n * Maximum allowed input for a custom slippage tolerance percentage.\n * @type {number}\n */\nexport const MAX_CUSTOM_SLIPPAGE = 50;\n\n/**\n * Default gas limit used by MetaMask\n * @see {@link https://github.com/MetaMask/metamask-extension/blob/06cf7459b963e26d0ae60312d4f9a342d07ab89d/ui/pages/confirmations/send/send.constants.js#L8}\n */\nexport const DEFAULT_METAMASK_GAS_LIMIT = 7920027n;\n","export const getPythDefaultUpdateFee = (tokenListLength: number) => {\n return 2n * BigInt(tokenListLength);\n};\n","/**\n * Convert milliseconds to seconds\n */\nexport function msToSeconds(ms: number): number {\n return Math.floor(ms / 1000);\n}\n\n/**\n * Time utility functions for converting between different time units.\n *\n * This utility file provides functions to convert between seconds, minutes, hours, and days.\n * Note on naming conventions: We use \"seconds\" instead of \"secondsToMs\" because JavaScript\n * is typically based in milliseconds, so the conversion to milliseconds is the more common\n * and expected operation. We use \"xxxInSeconds\" when converting to second-based units.\n */\n\n/**\n * Convert seconds to milliseconds\n */\nexport function seconds(seconds: number): number {\n return seconds * 1000;\n}\n\n/**\n * Convert minutes to milliseconds\n */\nexport function minutes(minutes: number): number {\n return minutes * seconds(60);\n}\n\n/**\n * Convert minutes to seconds\n */\nexport function minutesInSeconds(minutes: number): number {\n return minutes * 60;\n}\n\n/**\n * Convert hours to milliseconds\n */\nexport function hours(hours: number): number {\n return hours * minutes(60);\n}\n\n/**\n * Convert hours to seconds\n */\nexport function hoursInSeconds(hours: number): number {\n return hours * minutesInSeconds(60);\n}\n\n/**\n * Convert days to milliseconds\n */\nexport function days(days: number): number {\n return days * hours(24);\n}\n\n/**\n * Convert days to seconds\n */\nexport function daysInSeconds(days: number): number {\n return days * hoursInSeconds(24);\n}\n\n/**\n * Convert weeks to milliseconds\n */\nexport function weeks(weeks: number): number {\n return weeks * days(7);\n}\n\n/**\n * Convert weeks to seconds\n */\nexport function weeksInSeconds(weeks: number): number {\n return weeks * daysInSeconds(7);\n}\n\n/**\n * Convert months to milliseconds using 30 days per month\n */\nexport function months(months: number): number {\n return months * days(30);\n}\n\n/**\n * Convert months to seconds using 30 days per month\n */\nexport function monthsInSeconds(months: number): number {\n return months * daysInSeconds(30);\n}\n\n/**\n * Convert years to milliseconds using 365 days per year\n */\nexport function years(years: number): number {\n return years * days(365);\n}\n\n/**\n * Convert years to seconds using 365 days per year\n */\nexport function yearsInSeconds(years: number): number {\n return years * daysInSeconds(365);\n}\n","export function calculateTimestampFromDays(daysRange: number): number {\n const currentDate = new Date();\n return currentDate.setDate(currentDate.getDate() - daysRange) * 1000;\n}\n\nconst monthNames = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nconst shortMonthNames = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n];\n\nexport function formatUnixTimestamp(unixTimestamp: number, isShort?: boolean) {\n const date = new Date(unixTimestamp * 1000);\n\n const day = date.getDate();\n let daySuffix = \"th\";\n\n if (day === 1 || day === 21 || day === 31) {\n daySuffix = \"st\";\n } else if (day === 2 || day === 22) {\n daySuffix = \"nd\";\n } else if (day === 3 || day === 23) {\n daySuffix = \"rd\";\n }\n\n if (isShort) {\n return `${shortMonthNames[date.getMonth()]} ${day}`;\n }\n\n return `${\n monthNames[date.getMonth()]\n } ${day}${daySuffix}, ${date.getFullYear()}`;\n}\n\ntype LegacyArgs = [number, boolean?, boolean?, boolean?];\ntype FormatTimeLeftArgs = [\n number,\n {\n condensed?: boolean;\n greaterUnit?: \"days\" | \"hours\" | \"minutes\";\n showSeconds?: boolean;\n },\n];\n\n/**\n * Formats the time left into a string like \"8 hours, 23 minutes\".\n *\n * @param timeLeftInSeconds - The time left in seconds.\n * @returns A formatted string representing the time left.\n */\nexport function formatTimeLeft(\n ...args: FormatTimeLeftArgs | LegacyArgs\n): string {\n const timeLeftInSeconds = args[0];\n let condensed: boolean;\n\n let showDays: boolean;\n\n let showMinutes: boolean;\n let showSeconds: boolean;\n\n if (typeof args[1] !== \"object\") {\n condensed = args[1] ?? false;\n showDays = args[2] ?? false;\n showSeconds = args[3] ?? false;\n showMinutes = true;\n } else {\n const opts = args[1];\n condensed = opts.condensed ?? false;\n const greaterUnit = opts.greaterUnit ?? \"hours\";\n\n if (greaterUnit === \"days\") {\n showDays = true;\n showMinutes = true;\n } else if (greaterUnit === \"hours\") {\n showDays = false;\n showMinutes = true;\n showSeconds = false;\n } else {\n // minutes is the default\n showDays = false;\n showMinutes = true;\n }\n showSeconds = opts.showSeconds ?? false;\n }\n\n let days = Math.floor(timeLeftInSeconds / (3600 * 24));\n let hours = Math.floor((timeLeftInSeconds % (3600 * 24)) / 3600);\n const minutes = Math.floor((timeLeftInSeconds % 3600) / 60);\n const seconds = timeLeftInSeconds % 60;\n\n // If showDays=false, roll days into hours\n if (!showDays) {\n hours += days * 24;\n days = 0;\n }\n\n if (days === 0 && hours === 0 && minutes === 0) {\n return condensed ? \"< 1 M\" : \"less than a minute\";\n }\n\n const daysDisplay =\n days > 0\n ? `${days}${condensed ? \"D\" : \" day\"}${\n !condensed && days !== 1 ? \"s\" : \"\"\n }`\n : \"\";\n\n const hoursDisplay =\n hours > 0\n ? `${hours}${condensed ? \"H\" : \" hour\"}${\n !condensed && hours !== 1 ? \"s\" : \"\"\n }`\n : \"\";\n\n const minutesDisplay =\n (minutes > 0 && showMinutes) || (!days && !hours)\n ? `${minutes}${condensed ? \"M\" : \" minute\"}${\n !condensed && minutes !== 1 ? \"s\" : \"\"\n }`\n : \"\";\n const secondsDisplay =\n seconds > 0 && showSeconds\n ? `${seconds}${condensed ? \"S\" : \" second\"}${\n !condensed && seconds !== 1 ? \"s\" : \"\"\n }`\n : \"\";\n return [daysDisplay, hoursDisplay, minutesDisplay, secondsDisplay]\n .filter(Boolean)\n .join(condensed ? \" \" : \", \");\n}\n","// biome-ignore lint/style/noRestrictedImports: the only import of bignumber.js is allowed here\nimport BigNumber from \"bignumber.js\";\n\nBigNumber.set({\n // The EXPONENTIAL_AT option defines the exponent value(s) at which toString returns exponential notation.\n // - Single number: the exponent magnitude at and above which exponential notation is used (e.g., `1e9` here disables it for almost all values).\n // - 1e9 is the maximum value supported by BigNumber.js.\n // See: https://mikemcl.github.io/bignumber.js/#exponential-at\n EXPONENTIAL_AT: 1e9,\n});\n\nexport default BigNumber;\n","import BigNumber from \"@berachain/utils/pkg/bignumber.js\";\n\nexport type BigNumberValue = string | number | BigNumber;\n\nexport interface FormatNumberOptions {\n /** Number of visible decimal places */\n visibleDecimals?: number;\n /** Whether to use compact notation (K, M, B, etc.) */\n compact?: boolean;\n /** Show as percentage */\n percent?: boolean;\n /** Round down instead of normal rounding */\n roundDown?: boolean;\n /** Round up instead of normal rounding */\n roundUp?: boolean;\n /** Threshold above which compact notation is used */\n compactThreshold?: number;\n /** Maximum value to display (shows ∞ if exceeded) */\n maxValue?: number;\n /** Currency symbol (e.g., \"USD\" for $) */\n symbol?: string;\n /** Prefix text */\n prefixText?: string;\n /** Suffix text */\n suffixText?: string;\n /** Show \"< min\" or \"> min\" indicators for very small values */\n showIsSmallerThanMin?: boolean;\n /** Text to show if value is null/undefined */\n ifNullish?: string;\n}\n\nconst POSTFIXES = [\"\", \"K\", \"M\", \"B\", \"T\", \"P\", \"E\", \"Z\", \"Y\"];\n\nfunction valueToBigNumber(amount: BigNumberValue): BigNumber {\n if (amount instanceof BigNumber) return amount;\n return new BigNumber(amount);\n}\n\nfunction normalizeBN(n: BigNumberValue, decimals: number): BigNumber {\n return valueToBigNumber(n).shiftedBy(decimals * -1);\n}\n\nexport function formatNumber(\n value: BigNumberValue | undefined | null,\n options: FormatNumberOptions | number = {},\n): string {\n if (typeof options === \"number\") {\n const decimals = options;\n if (value === undefined || value === null) {\n return \"\";\n }\n\n if (typeof value === \"object\") {\n throw new Error(\"Value must be a number if using deprecated version\");\n }\n\n // Convert to string with up to 8 decimal places\n let formatted = Number(value).toFixed(decimals);\n // Remove trailing zeros and decimal point if not needed\n formatted = formatted.replace(/(\\.\\d*?[1-9])0+$|\\.0*$/, \"$1\");\n return formatted;\n }\n\n const {\n visibleDecimals,\n compact = true,\n percent = false,\n roundDown = false,\n roundUp = false,\n compactThreshold,\n maxValue,\n symbol,\n prefixText = \"\",\n suffixText = \"\",\n showIsSmallerThanMin = true,\n ifNullish = \"\",\n } = options || {};\n\n // Handle null/undefined values\n if (value === undefined || value === null) {\n return ifNullish;\n }\n\n const number = percent ? Number(value) * 100 : Number(value);\n\n // Handle special numeric values\n if (Number.isNaN(number)) {\n return \"NaN\";\n }\n if (number === Number.POSITIVE_INFINITY) {\n return \"Infinity\";\n }\n if (number === Number.NEGATIVE_INFINITY) {\n return \"-Infinity\";\n }\n\n // Determine decimal places\n let decimals: number = visibleDecimals ?? 0;\n if (number === 0) {\n decimals = 0;\n } else if (visibleDecimals === undefined) {\n if (Math.abs(number) > 1 || percent || symbol === \"USD\") {\n decimals = 2;\n } else {\n decimals = 7;\n }\n }\n\n const minValue = 10 ** -(decimals as number);\n const isSmallerThanMin =\n number !== 0 && Math.abs(number) < Math.abs(minValue);\n const isNegative = number < 0;\n const isBiggerThanMax = maxValue ? Math.abs(number) > maxValue : false;\n\n let formattedNumber = isSmallerThanMin ? minValue : number;\n const forceCompact =\n compact && (!compactThreshold || Math.abs(number) > compactThreshold);\n\n // Apply rounding for non-compact numbers\n if (roundDown && !forceCompact) {\n formattedNumber =\n Math.trunc(Number(formattedNumber) * 10 ** decimals) / 10 ** decimals;\n } else if (roundUp && !forceCompact) {\n formattedNumber =\n Math.ceil(Number(formattedNumber) * 10 ** decimals) / 10 ** decimals;\n }\n\n let formattedValue: string;\n\n if (isBiggerThanMax) {\n formattedValue = number > maxValue! ? \"∞\" : \"-∞\";\n } else if (!forceCompact) {\n const absFormatted = new Intl.NumberFormat(\"en-US\", {\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals,\n }).format(Math.abs(formattedNumber));\n formattedValue = `${isNegative ? \"-\" : \"\"}${absFormatted}`;\n } else {\n // Compact number formatting\n const bnValue = valueToBigNumber(formattedNumber);\n let integerPlaces = bnValue.abs().toFixed(0).length;\n if (compactThreshold && Math.abs(number) <= compactThreshold) {\n integerPlaces = 0;\n }\n\n const significantDigitsGroup = Math.min(\n Math.floor(integerPlaces ? (integerPlaces - 1) / 3 : 0),\n POSTFIXES.length - 1,\n );\n\n const postfix = POSTFIXES[significantDigitsGroup];\n let compactValue = normalizeBN(\n bnValue,\n 3 * significantDigitsGroup,\n ).toNumber();\n\n if (roundDown) {\n compactValue =\n Math.trunc(Number(compactValue) * 10 ** decimals) / 10 ** decimals;\n } else if (roundUp) {\n compactValue =\n Math.ceil(Number(compactValue) * 10 ** decimals) / 10 ** decimals;\n }\n\n const prefix = new Intl.NumberFormat(\"en-US\", {\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals,\n }).format(compactValue);\n\n formattedValue = `${prefix}${postfix}`;\n }\n\n // Build the final formatted string\n const parts: string[] = [];\n\n // Add prefix text\n if (prefixText) {\n parts.push(prefixText);\n }\n\n // Add smaller than indicator\n if (isSmallerThanMin && showIsSmallerThanMin) {\n parts.push(number < 0 ? \">\" : \"<\");\n }\n\n // Add USD symbol\n if (symbol?.toLowerCase() === \"usd\" && !percent) {\n parts.push(\"$\");\n }\n\n // Add the formatted number\n parts.push(formattedValue);\n\n // Add percentage symbol\n if (percent) {\n parts.push(\"%\");\n }\n\n // Add other symbols\n if (symbol?.toLowerCase() !== \"usd\" && typeof symbol !== \"undefined\") {\n parts.push(\" \", symbol);\n }\n\n // Add suffix text\n if (suffixText) {\n parts.push(suffixText);\n }\n\n return parts.join(\"\");\n}\nexport const getSafeNumber = (value: string | undefined): number => {\n if (!value) return 0;\n return Number(value) > Number.MAX_SAFE_INTEGER\n ? Number.MAX_SAFE_INTEGER\n : (Number(value) ?? 0);\n};\n\nexport const truncateDecimal = (\n value: string | number | undefined,\n maxDecimal: number,\n): string => {\n if (!value) return \"0\";\n const [integerPart = \"0\", decimalPart = \"0\"] = `${value}`.split(\".\");\n return `${integerPart}.${decimalPart.substring(0, maxDecimal)}`;\n};\n","import { createTestClient, http } from \"viem\";\n\nimport {\n type ChainId,\n defaultChainId,\n getRpcUrls,\n} from \"@berachain/config/internal\";\n\nexport function getTestClient(chainId: ChainId = defaultChainId) {\n const rpc = getRpcUrls(chainId);\n\n if (!rpc.isAnvil) {\n throw new Error(\"No anvil RPC URL found\");\n }\n return createTestClient({\n mode: \"anvil\",\n transport: http(rpc.jsonRpcUrl),\n });\n}\n"]}
@@ -1,130 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } var _class;
2
-
3
- var _chunkQISQSMCVcjs = require('./chunk-QISQSMCV.cjs');
4
-
5
- // src/errors/BeraTracing.ts
6
- var _handlers = [];
7
- var BeraTracing = {
8
- /**
9
- * Execute a callback, wrapping it in all registered span handlers.
10
- *
11
- * Handlers chain so each wraps the next. First registered = outermost wrapper.
12
- * If no handlers are registered, the callback is executed directly.
13
- */
14
- startSpan(context, callback) {
15
- if (_handlers.length === 0) return callback();
16
- return _handlers.reduceRight(
17
- (next, handler) => () => handler(context, next),
18
- callback
19
- )();
20
- },
21
- /**
22
- * Register a span tracing handler.
23
- *
24
- * @param _event - Must be "span". Exists for API consistency with BeraMonitoring.
25
- * @param handler - A StartSpanFn, e.g. Sentry.startSpan.
26
- * @returns An unsubscribe function to remove the handler.
27
- */
28
- addSpanHandler(handler) {
29
- _handlers.push(handler);
30
- return () => {
31
- const idx = _handlers.indexOf(handler);
32
- if (idx !== -1) _handlers.splice(idx, 1);
33
- };
34
- }
35
- };
36
-
37
- // src/errors/NotFoundError.ts
38
- var NotFoundError = class extends _chunkQISQSMCVcjs.BeraError {
39
- /**
40
- * The name of the resource that was not found.
41
- *
42
- * @example "Reward vault"
43
- */
44
-
45
- /**
46
- * The id of the resource that was not found.
47
- *
48
- * @example "0x1234567890123456789012345678901234567890"
49
- */
50
-
51
- constructor(args) {
52
- super(args);
53
- this.name = "NotFoundError";
54
- this.level = _nullishCoalesce(args.level, () => ( "info"));
55
- this.message = `Resource ${args.resource} with id ${args.id} not found`;
56
- this.resource = args.resource;
57
- this.id = args.id;
58
- }
59
- };
60
-
61
- // src/errors/TransactionFailedError.ts
62
- var TransactionFailedError = (_class = class extends _chunkQISQSMCVcjs.BeraError {
63
- /**
64
- * The hash of the transaction that failed.
65
- *
66
- * Null if the error is due to a simulation failure.
67
- */
68
-
69
- /**
70
- * The receipt of the transaction that failed.
71
- *
72
- * Null if the error is due to a simulation failure.
73
- */
74
-
75
- /**
76
- * The address of the contract that was called.
77
- */
78
-
79
- /**
80
- * The data of the transaction that failed.
81
- */
82
-
83
- /**
84
- * The block number of the transaction that failed.
85
- */
86
- __init() {this.blockNumber = null}
87
- /**
88
- * The input of the transaction that failed.
89
- */
90
-
91
- /**
92
- * The function name of the transaction that failed.
93
- */
94
-
95
- constructor(args) {
96
- super(args);_class.prototype.__init.call(this);;
97
- this.name = "TransactionFailedError";
98
- this.txHash = args.txHash || null;
99
- this.receipt = args.receipt || null;
100
- this.to = args.to;
101
- this.functionName = args.functionName;
102
- this.blockNumber = _nullishCoalesce(args.blockNumber, () => ( null));
103
- this.input = args.input;
104
- if (this.receipt) {
105
- this.message = `Transaction reverted on chain for reason: ${this.reason}`;
106
- } else if (this.txHash) {
107
- this.message = `Transaction reverted after being broadcasted for reason: ${this.reason}`;
108
- } else {
109
- this.message = `${this.reason}: ${this.message}`;
110
- }
111
- this.tags = {
112
- ...this.tags,
113
- "operation.txn.status": args.txHash ? "execution" : "simulation",
114
- ...args.tags
115
- };
116
- if (this.to) {
117
- this.tags["operation.txn.to"] = this.to;
118
- }
119
- if (this.functionName) {
120
- this.tags["operation.txn.functionName"] = this.functionName;
121
- }
122
- }
123
- }, _class);
124
-
125
-
126
-
127
-
128
-
129
- exports.BeraTracing = BeraTracing; exports.NotFoundError = NotFoundError; exports.TransactionFailedError = TransactionFailedError;
130
- //# sourceMappingURL=chunk-4HDIUUSV.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/Users/pong/coding/monobera/packages/berajs/dist/chunk-4HDIUUSV.cjs","../src/errors/BeraTracing.ts","../src/errors/NotFoundError.ts","../src/errors/TransactionFailedError.ts"],"names":[],"mappings":"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","file":"/Users/pong/coding/monobera/packages/berajs/dist/chunk-4HDIUUSV.cjs","sourcesContent":[null,"import type { Unsubscribe } from \"../utils/createEmitter\";\n\n/**\n * Span context passed to tracing handlers.\n * Compatible with Sentry's StartSpanOptions (name, op, attributes).\n */\nexport type SpanContext = {\n name: string;\n op: string;\n attributes: Record<string, string | number | boolean | undefined>;\n};\n\n/**\n * A function that wraps a callback in a tracing span.\n * Compatible with Sentry.startSpan's signature.\n */\ntype StartSpanFn = <T>(\n context: SpanContext,\n callback: () => Promise<T>,\n) => Promise<T>;\n\nconst _handlers: StartSpanFn[] = [];\n\n/**\n * A generic span-tracing module for berajs.\n *\n * Instead of calling Sentry.startSpan directly, berajs calls\n * `BeraTracing.startSpan()`. Consumer apps subscribe via `.on(\"span\", handler)`\n * and forward spans to their tracing provider (Sentry, Datadog, etc.).\n *\n * Multiple handlers are supported and chain in registration order:\n * the first registered handler is the outermost wrapper.\n *\n * @example\n * ```ts\n * // In berajs code:\n * import { BeraTracing } from \"./BeraTracing\";\n * const result = await BeraTracing.startSpan(\n * { name: \"GraphQL query\", op: \"graphql.query\", attributes: {} },\n * () => executeQuery(),\n * );\n *\n * // In app instrumentation:\n * import { BeraTracing } from \"@berachain/berajs/errors\";\n * BeraTracing.addSpanHandler(Sentry.startSpan);\n * ```\n */\nexport const BeraTracing = {\n /**\n * Execute a callback, wrapping it in all registered span handlers.\n *\n * Handlers chain so each wraps the next. First registered = outermost wrapper.\n * If no handlers are registered, the callback is executed directly.\n */\n startSpan<T>(context: SpanContext, callback: () => Promise<T>): Promise<T> {\n if (_handlers.length === 0) return callback();\n\n // Chain: h1(ctx, () => h2(ctx, () => h3(ctx, () => callback())))\n return _handlers.reduceRight<() => Promise<T>>(\n (next, handler) => () => handler(context, next),\n callback,\n )();\n },\n\n /**\n * Register a span tracing handler.\n *\n * @param _event - Must be \"span\". Exists for API consistency with BeraMonitoring.\n * @param handler - A StartSpanFn, e.g. Sentry.startSpan.\n * @returns An unsubscribe function to remove the handler.\n */\n addSpanHandler(handler: StartSpanFn): Unsubscribe {\n _handlers.push(handler);\n return () => {\n const idx = _handlers.indexOf(handler);\n if (idx !== -1) _handlers.splice(idx, 1);\n };\n },\n};\n","import { BeraError, type IBeraErrorArgs } from \"./BeraError\";\n\nexport interface INotFoundErrorArgs extends IBeraErrorArgs {\n resource: string;\n id: string;\n chainId: number;\n}\n\n/**\n * Error thrown when a resource is not found.\n */\nexport class NotFoundError extends BeraError {\n /**\n * The name of the resource that was not found.\n *\n * @example \"Reward vault\"\n */\n resource: string;\n /**\n * The id of the resource that was not found.\n *\n * @example \"0x1234567890123456789012345678901234567890\"\n */\n id: string;\n\n constructor(args: INotFoundErrorArgs) {\n super(args);\n this.name = \"NotFoundError\";\n this.level = args.level ?? \"info\";\n this.message = `Resource ${args.resource} with id ${args.id} not found`;\n this.resource = args.resource;\n this.id = args.id;\n }\n}\n","import type { Hex } from \"@berachain-foundation/berancer-sdk\";\nimport type { Address, TransactionReceipt } from \"viem\";\n\nimport { BeraError, type IBeraErrorArgs } from \"./BeraError\";\n\n/**\n * This error is generally thrown by beraWriteContract when a transaction or simulation fails.\n */\nexport class TransactionFailedError extends BeraError {\n /**\n * The hash of the transaction that failed.\n *\n * Null if the error is due to a simulation failure.\n */\n txHash: string | null;\n\n /**\n * The receipt of the transaction that failed.\n *\n * Null if the error is due to a simulation failure.\n */\n receipt: TransactionReceipt | null;\n\n /**\n * The address of the contract that was called.\n */\n to: Address | undefined;\n\n /**\n * The data of the transaction that failed.\n */\n callData: Hex | undefined;\n\n /**\n * The block number of the transaction that failed.\n */\n blockNumber: bigint | null = null;\n\n /**\n * The input of the transaction that failed.\n */\n input: object;\n\n /**\n * The function name of the transaction that failed.\n */\n functionName: string | undefined;\n\n constructor(\n args: IBeraErrorArgs & {\n txHash?: string;\n receipt?: TransactionReceipt;\n to?: Address;\n blockNumber?: bigint;\n functionName?: string;\n input: object;\n },\n ) {\n super(args);\n this.name = \"TransactionFailedError\";\n this.txHash = args.txHash || null;\n this.receipt = args.receipt || null;\n this.to = args.to;\n this.functionName = args.functionName;\n this.blockNumber = args.blockNumber ?? null;\n this.input = args.input;\n\n if (this.receipt) {\n // If we have a receipt, transaction reverted on chain\n this.message = `Transaction reverted on chain for reason: ${this.reason}`;\n } else if (this.txHash) {\n // If we have a tx hash, transaction reverted after being broadcasted but we never got a receipt\n // Might happen for network reasons\n this.message = `Transaction reverted after being broadcasted for reason: ${this.reason}`;\n } else {\n this.message = `${this.reason}: ${this.message}`;\n }\n\n this.tags = {\n ...this.tags,\n \"operation.txn.status\": args.txHash ? \"execution\" : \"simulation\",\n ...args.tags,\n };\n\n if (this.to) {\n this.tags[\"operation.txn.to\"] = this.to;\n }\n\n if (this.functionName) {\n this.tags[\"operation.txn.functionName\"] = this.functionName;\n }\n }\n}\n"]}