@aztec/foundation 0.0.1-commit.54489865 → 0.0.1-commit.5914bae

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 (109) hide show
  1. package/dest/array/sorted_array.d.ts +6 -1
  2. package/dest/array/sorted_array.d.ts.map +1 -1
  3. package/dest/array/sorted_array.js +18 -15
  4. package/dest/branded-types/slot.d.ts +4 -1
  5. package/dest/branded-types/slot.d.ts.map +1 -1
  6. package/dest/branded-types/slot.js +3 -0
  7. package/dest/buffer/index.d.ts +2 -1
  8. package/dest/buffer/index.d.ts.map +1 -1
  9. package/dest/buffer/index.js +1 -0
  10. package/dest/buffer/utils.d.ts +3 -0
  11. package/dest/buffer/utils.d.ts.map +1 -0
  12. package/dest/buffer/utils.js +7 -0
  13. package/dest/collection/array.d.ts +3 -1
  14. package/dest/collection/array.d.ts.map +1 -1
  15. package/dest/collection/array.js +15 -0
  16. package/dest/config/env_var.d.ts +2 -2
  17. package/dest/config/env_var.d.ts.map +1 -1
  18. package/dest/config/index.d.ts +1 -1
  19. package/dest/config/index.d.ts.map +1 -1
  20. package/dest/config/index.js +15 -0
  21. package/dest/config/network_config.d.ts +19 -1
  22. package/dest/config/network_config.d.ts.map +1 -1
  23. package/dest/config/network_config.js +4 -1
  24. package/dest/crypto/poseidon/index.d.ts +1 -1
  25. package/dest/crypto/poseidon/index.d.ts.map +1 -1
  26. package/dest/crypto/poseidon/index.js +40 -33
  27. package/dest/crypto/secp256k1-signer/utils.d.ts +12 -1
  28. package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
  29. package/dest/crypto/secp256k1-signer/utils.js +26 -0
  30. package/dest/curves/bn254/field.d.ts +2 -1
  31. package/dest/curves/bn254/field.d.ts.map +1 -1
  32. package/dest/curves/bn254/field.js +5 -2
  33. package/dest/curves/grumpkin/point.d.ts +4 -4
  34. package/dest/curves/grumpkin/point.d.ts.map +1 -1
  35. package/dest/curves/grumpkin/point.js +7 -4
  36. package/dest/eth-signature/eth_signature.d.ts +2 -1
  37. package/dest/eth-signature/eth_signature.d.ts.map +1 -1
  38. package/dest/eth-signature/eth_signature.js +7 -2
  39. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +2 -1
  40. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
  41. package/dest/json-rpc/client/safe_json_rpc_client.js +1 -1
  42. package/dest/json-rpc/server/api_key_auth.d.ts +19 -0
  43. package/dest/json-rpc/server/api_key_auth.d.ts.map +1 -0
  44. package/dest/json-rpc/server/api_key_auth.js +57 -0
  45. package/dest/json-rpc/server/index.d.ts +2 -1
  46. package/dest/json-rpc/server/index.d.ts.map +1 -1
  47. package/dest/json-rpc/server/index.js +1 -0
  48. package/dest/log/bigint-utils.d.ts +5 -0
  49. package/dest/log/bigint-utils.d.ts.map +1 -0
  50. package/dest/log/bigint-utils.js +21 -0
  51. package/dest/log/gcloud-logger-config.d.ts +1 -1
  52. package/dest/log/gcloud-logger-config.d.ts.map +1 -1
  53. package/dest/log/gcloud-logger-config.js +3 -0
  54. package/dest/log/log-filters.d.ts +17 -4
  55. package/dest/log/log-filters.d.ts.map +1 -1
  56. package/dest/log/log-filters.js +26 -12
  57. package/dest/log/pino-logger.d.ts +1 -1
  58. package/dest/log/pino-logger.d.ts.map +1 -1
  59. package/dest/log/pino-logger.js +6 -2
  60. package/dest/queue/base_memory_queue.d.ts +2 -2
  61. package/dest/queue/base_memory_queue.d.ts.map +1 -1
  62. package/dest/schemas/api.d.ts +2 -2
  63. package/dest/schemas/api.d.ts.map +1 -1
  64. package/dest/serialize/buffer_reader.d.ts +27 -7
  65. package/dest/serialize/buffer_reader.d.ts.map +1 -1
  66. package/dest/serialize/buffer_reader.js +31 -5
  67. package/dest/serialize/field_reader.d.ts +13 -5
  68. package/dest/serialize/field_reader.d.ts.map +1 -1
  69. package/dest/serialize/field_reader.js +13 -0
  70. package/dest/serialize/serialize.d.ts +19 -1
  71. package/dest/serialize/serialize.d.ts.map +1 -1
  72. package/dest/serialize/serialize.js +31 -0
  73. package/dest/timer/date.d.ts +23 -1
  74. package/dest/timer/date.d.ts.map +1 -1
  75. package/dest/timer/date.js +29 -0
  76. package/dest/transport/transport_client.js +2 -2
  77. package/dest/types/index.d.ts +3 -1
  78. package/dest/types/index.d.ts.map +1 -1
  79. package/dest/types/index.js +3 -0
  80. package/package.json +22 -2
  81. package/src/array/sorted_array.ts +22 -17
  82. package/src/branded-types/slot.ts +5 -0
  83. package/src/buffer/index.ts +1 -0
  84. package/src/buffer/utils.ts +8 -0
  85. package/src/collection/array.ts +14 -0
  86. package/src/config/env_var.ts +45 -6
  87. package/src/config/index.ts +15 -0
  88. package/src/config/network_config.ts +3 -0
  89. package/src/crypto/poseidon/index.ts +42 -34
  90. package/src/crypto/secp256k1-signer/utils.ts +32 -0
  91. package/src/curves/bn254/field.ts +6 -2
  92. package/src/curves/grumpkin/point.ts +6 -3
  93. package/src/eth-signature/eth_signature.ts +7 -1
  94. package/src/json-rpc/client/safe_json_rpc_client.ts +2 -0
  95. package/src/json-rpc/server/api_key_auth.ts +63 -0
  96. package/src/json-rpc/server/index.ts +1 -0
  97. package/src/log/bigint-utils.ts +25 -0
  98. package/src/log/gcloud-logger-config.ts +5 -0
  99. package/src/log/log-filters.ts +29 -11
  100. package/src/log/pino-logger.ts +6 -2
  101. package/src/queue/base_memory_queue.ts +1 -1
  102. package/src/schemas/api.ts +4 -1
  103. package/src/serialize/buffer_reader.ts +44 -6
  104. package/src/serialize/field_reader.ts +22 -4
  105. package/src/serialize/serialize.ts +32 -0
  106. package/src/timer/date.ts +42 -0
  107. package/src/transport/transport_client.ts +2 -2
  108. package/src/trees/membership_witness.ts +2 -2
  109. package/src/types/index.ts +5 -0
@@ -15,26 +15,40 @@ export function getLogLevelFromFilters(filters, module) {
15
15
  }
16
16
  return undefined;
17
17
  }
18
- export function assertLogLevel(level) {
19
- if (!LogLevels.includes(level)) {
20
- throw new Error(`Invalid log level: ${level}`);
21
- }
22
- }
23
- export function parseEnv(env, defaultLevel) {
24
- if (!env) {
18
+ /**
19
+ * Parses the LOG_LEVEL env string into a default level and per-module filter overrides.
20
+ *
21
+ * Format: `<default_level>;<level>:<module1>,<module2>;<level>:<module3>;...`
22
+ * - First segment (before the first `;`) is the default log level for all modules.
23
+ * - Remaining segments are `level:module` pairs: apply the given level to the listed modules (comma-separated).
24
+ * - Later filters override earlier ones for overlapping module matches.
25
+ * - The `aztec:` prefix is stripped from module names; spaces are trimmed.
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * parseLogLevel('debug;warn:module1,module2;error:module3', 'info')
30
+ * // => ['debug', [['module3', 'error'], ['module2', 'warn'], ['module1', 'warn']]]
31
+ * ```
32
+ */ export function parseLogLevelEnvVar(logLevelEnvVar, defaultLevel) {
33
+ if (!logLevelEnvVar) {
25
34
  return [
26
35
  defaultLevel,
27
36
  []
28
37
  ];
29
38
  }
30
- const [level] = env.split(';', 1);
31
- assertLogLevel(level);
39
+ const [level] = logLevelEnvVar.split(';', 1);
40
+ assertValidLogLevel(level);
32
41
  return [
33
42
  level,
34
- parseFilters(env.slice(level.length + 1))
43
+ parseFilters(logLevelEnvVar.slice(level.length + 1))
35
44
  ];
36
45
  }
37
- export function parseFilters(definition) {
46
+ function assertValidLogLevel(level) {
47
+ if (!LogLevels.includes(level)) {
48
+ throw new Error(`Invalid log level: ${level}`);
49
+ }
50
+ }
51
+ function parseFilters(definition) {
38
52
  if (!definition) {
39
53
  return [];
40
54
  }
@@ -47,7 +61,7 @@ export function parseFilters(definition) {
47
61
  throw new Error(`Invalid log filter statement: ${statement}`);
48
62
  }
49
63
  const sanitizedLevel = level.trim().toLowerCase();
50
- assertLogLevel(sanitizedLevel);
64
+ assertValidLogLevel(sanitizedLevel);
51
65
  for (const module of modules.split(',')){
52
66
  filters.push([
53
67
  module.trim().toLowerCase().replace(/^aztec:/, ''),
@@ -83,4 +83,4 @@ export type Logger = {
83
83
  getBindings: () => LoggerBindings;
84
84
  };
85
85
  export {};
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluby1sb2dnZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2cvcGluby1sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssS0FBSyxFQUFrQyxNQUFNLFdBQVcsQ0FBQztBQUd2RSxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFRdkMsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVsRCx3RUFBd0U7QUFDeEUsTUFBTSxNQUFNLGNBQWMsR0FBRztJQUMzQiwrREFBK0Q7SUFDL0QsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2YsdUZBQXVGO0lBQ3ZGLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUNyQixDQUFDO0FBSUYsS0FBSyxrQkFBa0IsR0FBRyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7QUFHM0Qsd0JBQWdCLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxrQkFBa0IsR0FBRyxJQUFJLENBRXZFO0FBRUQsd0JBQWdCLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxrQkFBa0IsUUFLbkU7QUFZRCx3QkFBZ0IsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsY0FBYyxHQUFHLE1BQU0sQ0E2QzlFO0FBRUQ7OztHQUdHO0FBQ0gsd0JBQWdCLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixDQUFDLEVBQUUsTUFBTSxHQUFHLGNBQWMsR0FBRyxNQUFNLENBS2hHO0FBSUQsS0FBSyxjQUFjLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxLQUFLLE9BQU8sQ0FBQztBQUdqRCx3QkFBZ0IsaUJBQWlCLENBQUMsT0FBTyxFQUFFLGNBQWMsR0FBRyxJQUFJLENBRS9EO0FBZUQsZUFBTyxNQUFPLFFBQVEsa0ZBQUUsVUFBVSx1Q0FBb0QsQ0FBQztBQTBDdkYsZUFBTyxNQUFNLE1BQU07Ozs7O0NBR2xCLENBQUM7QUFlRiwyRkFBMkY7QUFDM0Ysd0JBQWdCLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLEtBQUssQ0FRbEQ7QUFFRCw2REFBNkQ7QUFDN0Qsd0JBQWdCLGdCQUFnQixJQUFJLElBQUksQ0FHdkM7QUFNRCxLQUFLLFNBQVMsR0FBRztJQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtDQUFFLENBQUM7QUFFeEYseUdBQXlHO0FBQ3pHLHdCQUFnQixnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQWtCM0U7QUFjRDs7O0dBR0c7QUFDSCxlQUFPLE1BQU0sY0FBYzs7Ozs7Ozs7OztDQUcxQixDQUFDO0FBMERGLGVBQU8sTUFBTSxNQUFNLDJDQUFlLENBQUM7QUFhbkM7OztHQUdHO0FBQ0gsd0JBQWdCLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxRQUFRLEdBQUcsSUFBSSxDQUU3RDtBQUVEOzs7R0FHRztBQUNILHdCQUFnQixxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsUUFBUSxHQUFHLElBQUksQ0FlNUQ7QUFFRCxvREFBb0Q7QUFDcEQsS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxPQUFPLEtBQUssSUFBSSxDQUFDO0FBRXZFOztHQUVHO0FBQ0gsTUFBTSxNQUFNLE1BQU0sR0FBRztLQUFHLENBQUMsSUFBSSxRQUFRLEdBQUcsS0FBSztDQUFFLEdBQUc7SUFBNEIsS0FBSyxFQUFFLFVBQVUsQ0FBQTtDQUFFLEdBQUc7SUFDbEcsS0FBSyxFQUFFLFFBQVEsQ0FBQztJQUNoQixjQUFjLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxLQUFLLE9BQU8sQ0FBQztJQUM3QyxNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsV0FBVyxFQUFFLENBQUMsV0FBVyxFQUFFLE1BQU0sS0FBSyxNQUFNLENBQUM7SUFDN0MsZ0VBQWdFO0lBQ2hFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztDQUNuQyxDQUFDIn0=
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluby1sb2dnZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2cvcGluby1sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssS0FBSyxFQUFrQyxNQUFNLFdBQVcsQ0FBQztBQUd2RSxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFTdkMsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVsRCx3RUFBd0U7QUFDeEUsTUFBTSxNQUFNLGNBQWMsR0FBRztJQUMzQiwrREFBK0Q7SUFDL0QsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2YsdUZBQXVGO0lBQ3ZGLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUNyQixDQUFDO0FBSUYsS0FBSyxrQkFBa0IsR0FBRyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7QUFHM0Qsd0JBQWdCLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxrQkFBa0IsR0FBRyxJQUFJLENBRXZFO0FBRUQsd0JBQWdCLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxrQkFBa0IsUUFLbkU7QUFZRCx3QkFBZ0IsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsY0FBYyxHQUFHLE1BQU0sQ0E2QzlFO0FBRUQ7OztHQUdHO0FBQ0gsd0JBQWdCLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixDQUFDLEVBQUUsTUFBTSxHQUFHLGNBQWMsR0FBRyxNQUFNLENBS2hHO0FBSUQsS0FBSyxjQUFjLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxLQUFLLE9BQU8sQ0FBQztBQUdqRCx3QkFBZ0IsaUJBQWlCLENBQUMsT0FBTyxFQUFFLGNBQWMsR0FBRyxJQUFJLENBRS9EO0FBZUQsZUFBTyxNQUFPLFFBQVEsa0ZBQUUsVUFBVSx1Q0FBK0QsQ0FBQztBQTZDbEcsZUFBTyxNQUFNLE1BQU07Ozs7O0NBR2xCLENBQUM7QUFlRiwyRkFBMkY7QUFDM0Ysd0JBQWdCLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLEtBQUssQ0FRbEQ7QUFFRCw2REFBNkQ7QUFDN0Qsd0JBQWdCLGdCQUFnQixJQUFJLElBQUksQ0FHdkM7QUFNRCxLQUFLLFNBQVMsR0FBRztJQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtDQUFFLENBQUM7QUFFeEYseUdBQXlHO0FBQ3pHLHdCQUFnQixnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQWtCM0U7QUFjRDs7O0dBR0c7QUFDSCxlQUFPLE1BQU0sY0FBYzs7Ozs7Ozs7OztDQUcxQixDQUFDO0FBMERGLGVBQU8sTUFBTSxNQUFNLDJDQUFlLENBQUM7QUFhbkM7OztHQUdHO0FBQ0gsd0JBQWdCLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxRQUFRLEdBQUcsSUFBSSxDQUU3RDtBQUVEOzs7R0FHRztBQUNILHdCQUFnQixxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsUUFBUSxHQUFHLElBQUksQ0FlNUQ7QUFFRCxvREFBb0Q7QUFDcEQsS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxPQUFPLEtBQUssSUFBSSxDQUFDO0FBRXZFOztHQUVHO0FBQ0gsTUFBTSxNQUFNLE1BQU0sR0FBRztLQUFHLENBQUMsSUFBSSxRQUFRLEdBQUcsS0FBSztDQUFFLEdBQUc7SUFBNEIsS0FBSyxFQUFFLFVBQVUsQ0FBQTtDQUFFLEdBQUc7SUFDbEcsS0FBSyxFQUFFLFFBQVEsQ0FBQztJQUNoQixjQUFjLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxLQUFLLE9BQU8sQ0FBQztJQUM3QyxNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsV0FBVyxFQUFFLENBQUMsV0FBVyxFQUFFLE1BQU0sS0FBSyxNQUFNLENBQUM7SUFDN0MsZ0VBQWdFO0lBQ2hFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztDQUNuQyxDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"pino-logger.d.ts","sourceRoot":"","sources":["../../src/log/pino-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAkC,MAAM,WAAW,CAAC;AAGvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAQvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAElD,wEAAwE;AACxE,MAAM,MAAM,cAAc,GAAG;IAC3B,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAIF,KAAK,kBAAkB,GAAG,MAAM,cAAc,GAAG,SAAS,CAAC;AAG3D,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAEvE;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,QAKnE;AAYD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,MAAM,CA6C9E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,MAAM,CAKhG;AAID,KAAK,cAAc,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;AAGjD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAE/D;AAeD,eAAO,MAAO,QAAQ,kFAAE,UAAU,uCAAoD,CAAC;AA0CvF,eAAO,MAAM,MAAM;;;;;CAGlB,CAAC;AAeF,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAQlD;AAED,6DAA6D;AAC7D,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAMD,KAAK,SAAS,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExF,yGAAyG;AACzG,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAkB3E;AAcD;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;CAG1B,CAAC;AA0DF,eAAO,MAAM,MAAM,2CAAe,CAAC;AAanC;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAE7D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAe5D;AAED,oDAAoD;AACpD,KAAK,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;KAAG,CAAC,IAAI,QAAQ,GAAG,KAAK;CAAE,GAAG;IAA4B,KAAK,EAAE,UAAU,CAAA;CAAE,GAAG;IAClG,KAAK,EAAE,QAAQ,CAAC;IAChB,cAAc,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,gEAAgE;IAChE,WAAW,EAAE,MAAM,cAAc,CAAC;CACnC,CAAC"}
1
+ {"version":3,"file":"pino-logger.d.ts","sourceRoot":"","sources":["../../src/log/pino-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAkC,MAAM,WAAW,CAAC;AAGvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AASvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAElD,wEAAwE;AACxE,MAAM,MAAM,cAAc,GAAG;IAC3B,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAIF,KAAK,kBAAkB,GAAG,MAAM,cAAc,GAAG,SAAS,CAAC;AAG3D,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAEvE;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,QAKnE;AAYD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,MAAM,CA6C9E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,MAAM,CAKhG;AAID,KAAK,cAAc,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;AAGjD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAE/D;AAeD,eAAO,MAAO,QAAQ,kFAAE,UAAU,uCAA+D,CAAC;AA6ClG,eAAO,MAAM,MAAM;;;;;CAGlB,CAAC;AAeF,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAQlD;AAED,6DAA6D;AAC7D,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAMD,KAAK,SAAS,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExF,yGAAyG;AACzG,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAkB3E;AAcD;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;CAG1B,CAAC;AA0DF,eAAO,MAAM,MAAM,2CAAe,CAAC;AAanC;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAE7D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAe5D;AAED,oDAAoD;AACpD,KAAK,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;KAAG,CAAC,IAAI,QAAQ,GAAG,KAAK;CAAE,GAAG;IAA4B,KAAK,EAAE,UAAU,CAAA;CAAE,GAAG;IAClG,KAAK,EAAE,QAAQ,CAAC;IAChB,cAAc,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,gEAAgE;IAChE,WAAW,EAAE,MAAM,cAAc,CAAC;CACnC,CAAC"}
@@ -4,8 +4,9 @@ import { pino, symbols } from 'pino';
4
4
  import { inspect } from 'util';
5
5
  import { compactArray } from '../collection/array.js';
6
6
  import { parseBooleanEnv } from '../config/parse-env.js';
7
+ import { convertBigintsToStrings } from './bigint-utils.js';
7
8
  import { GoogleCloudLoggerConfig } from './gcloud-logger-config.js';
8
- import { getLogLevelFromFilters, parseEnv } from './log-filters.js';
9
+ import { getLogLevelFromFilters, parseLogLevelEnvVar } from './log-filters.js';
9
10
  const logBindingsHandlers = [];
10
11
  export function addLogBindingsHandler(handler) {
11
12
  logBindingsHandlers.push(handler);
@@ -92,7 +93,7 @@ function isLevelEnabled(logger, level) {
92
93
  }
93
94
  // Load log levels from environment variables.
94
95
  const defaultLogLevel = process.env.NODE_ENV === 'test' ? 'silent' : 'info';
95
- export const [logLevel, logFilters] = parseEnv(process.env.LOG_LEVEL, defaultLogLevel);
96
+ export const [logLevel, logFilters] = parseLogLevelEnvVar(process.env.LOG_LEVEL, defaultLogLevel);
96
97
  // Define custom logging levels for pino.
97
98
  const customLevels = {
98
99
  verbose: 25
@@ -129,6 +130,9 @@ const pinoOpts = {
129
130
  ...redactedPaths.map((p)=>`opts.${p}`)
130
131
  ]
131
132
  },
133
+ formatters: {
134
+ log: (obj)=>convertBigintsToStrings(obj)
135
+ },
132
136
  ...useGcloudLogging ? GoogleCloudLoggerConfig : {}
133
137
  };
134
138
  export const levels = {
@@ -60,6 +60,6 @@ export declare abstract class BaseMemoryQueue<T> {
60
60
  * @param handler - A function that takes an item of type T and returns a Promise<void> after processing the item.
61
61
  * @returns A Promise<void> that resolves when the queue is finished processing.
62
62
  */
63
- process(handler: (item: T) => Promise<void>): Promise<void>;
63
+ process(handler: (item: T) => Promise<void> | void): Promise<void>;
64
64
  }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9tZW1vcnlfcXVldWUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWV1ZS9iYXNlX21lbW9yeV9xdWV1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSw4QkFBc0IsZUFBZSxDQUFDLENBQUM7SUFJekIsT0FBTyxDQUFDLEdBQUc7SUFIdkIsT0FBTyxDQUFDLE9BQU8sQ0FBb0M7SUFDbkQsT0FBTyxDQUFDLFFBQVEsQ0FBUztJQUV6QixZQUFvQixHQUFHLHlDQUF5QyxFQUFJO0lBRXBFLFNBQVMsQ0FBQyxRQUFRLEtBQUssS0FBSyxJQUFJO1FBQzlCLE1BQU0sRUFBRSxNQUFNLENBQUM7UUFDZixHQUFHLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUNyQixHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDbkIsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0tBQ25CLENBQUM7SUFFRjs7Ozs7T0FLRztJQUNJLE1BQU0sV0FFWjtJQUVEOzs7T0FHRztJQUNJLFlBQVksSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUVuQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBNkJqRDtJQUVEOzs7O09BSUc7SUFDSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxPQUFPLENBVzNCO0lBRUQ7Ozs7T0FJRztJQUNJLEdBQUcsU0FHVDtJQUVEOzs7O09BSUc7SUFDSSxNQUFNLFNBSVo7SUFFRDs7Ozs7Ozs7T0FRRztJQUNVLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBWXZEO0NBQ0YifQ==
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9tZW1vcnlfcXVldWUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWV1ZS9iYXNlX21lbW9yeV9xdWV1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSw4QkFBc0IsZUFBZSxDQUFDLENBQUM7SUFJekIsT0FBTyxDQUFDLEdBQUc7SUFIdkIsT0FBTyxDQUFDLE9BQU8sQ0FBb0M7SUFDbkQsT0FBTyxDQUFDLFFBQVEsQ0FBUztJQUV6QixZQUFvQixHQUFHLHlDQUF5QyxFQUFJO0lBRXBFLFNBQVMsQ0FBQyxRQUFRLEtBQUssS0FBSyxJQUFJO1FBQzlCLE1BQU0sRUFBRSxNQUFNLENBQUM7UUFDZixHQUFHLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUNyQixHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDbkIsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0tBQ25CLENBQUM7SUFFRjs7Ozs7T0FLRztJQUNJLE1BQU0sV0FFWjtJQUVEOzs7T0FHRztJQUNJLFlBQVksSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUVuQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBNkJqRDtJQUVEOzs7O09BSUc7SUFDSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxPQUFPLENBVzNCO0lBRUQ7Ozs7T0FJRztJQUNJLEdBQUcsU0FHVDtJQUVEOzs7O09BSUc7SUFDSSxNQUFNLFNBSVo7SUFFRDs7Ozs7Ozs7T0FRRztJQUNVLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLGlCQVk5RDtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"base_memory_queue.d.ts","sourceRoot":"","sources":["../../src/queue/base_memory_queue.ts"],"names":[],"mappings":"AAGA,8BAAsB,eAAe,CAAC,CAAC;IAIzB,OAAO,CAAC,GAAG;IAHvB,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,QAAQ,CAAS;IAEzB,YAAoB,GAAG,yCAAyC,EAAI;IAEpE,SAAS,CAAC,QAAQ,KAAK,KAAK,IAAI;QAC9B,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;QACrB,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QACnB,KAAK,EAAE,MAAM,IAAI,CAAC;KACnB,CAAC;IAEF;;;;;OAKG;IACI,MAAM,WAEZ;IAED;;;OAGG;IACI,YAAY,IAAI,CAAC,GAAG,SAAS,CAEnC;IAED;;;;;;;;;;OAUG;IACI,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CA6BjD;IAED;;;;OAIG;IACI,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAW3B;IAED;;;;OAIG;IACI,GAAG,SAGT;IAED;;;;OAIG;IACI,MAAM,SAIZ;IAED;;;;;;;;OAQG;IACU,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,iBAYvD;CACF"}
1
+ {"version":3,"file":"base_memory_queue.d.ts","sourceRoot":"","sources":["../../src/queue/base_memory_queue.ts"],"names":[],"mappings":"AAGA,8BAAsB,eAAe,CAAC,CAAC;IAIzB,OAAO,CAAC,GAAG;IAHvB,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,QAAQ,CAAS;IAEzB,YAAoB,GAAG,yCAAyC,EAAI;IAEpE,SAAS,CAAC,QAAQ,KAAK,KAAK,IAAI;QAC9B,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;QACrB,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QACnB,KAAK,EAAE,MAAM,IAAI,CAAC;KACnB,CAAC;IAEF;;;;;OAKG;IACI,MAAM,WAEZ;IAED;;;OAGG;IACI,YAAY,IAAI,CAAC,GAAG,SAAS,CAEnC;IAED;;;;;;;;;;OAUG;IACI,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CA6BjD;IAED;;;;OAIG;IACI,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAW3B;IAED;;;;OAIG;IACI,GAAG,SAGT;IAED;;;;OAIG;IACI,MAAM,SAIZ;IAED;;;;;;;;OAQG;IACU,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,iBAY9D;CACF"}
@@ -16,6 +16,6 @@ export type ApiSchema = {
16
16
  [key: string]: z.ZodFunction<z.ZodTuple<any, any>, z.ZodTypeAny>;
17
17
  };
18
18
  /** Return whether an API schema defines a valid function schema for a given method name. */
19
- export declare function schemaHasMethod(schema: ApiSchema, methodName: string): boolean;
19
+ export declare function schemaHasMethod<T extends ApiSchema>(schema: T, methodName: string): methodName is Extract<keyof T, string>;
20
20
  export {};
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NoZW1hcy9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRTdCLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBR3RELEtBQUssbUJBQW1CLENBQUMsQ0FBQyxJQUFJLFNBQVMsU0FBUyxDQUFDLEdBQzdDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FDcEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUVwQyxLQUFLLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBUzNELEtBQUssb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQ3ZDLEVBQUUsR0FDRixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUN6QyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUc7S0FBRyxDQUFDLElBQUksTUFBTSxJQUFJLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQUUsQ0FBQyxHQUNuRixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQzFDLENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHO0tBQUcsQ0FBQyxJQUFJLE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUFFLENBQUMsR0FDeEcsS0FBSyxDQUFDO0FBRWQseUVBQXlFO0FBQ3pFLE1BQU0sTUFBTSxZQUFZLENBQUMsQ0FBQyxJQUFJO0tBQzNCLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksRUFBRSxNQUFNLElBQUksS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsR0FDcEUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUMxRixLQUFLO0NBQ1YsQ0FBQztBQUVGLG1FQUFtRTtBQUNuRSxNQUFNLE1BQU0sU0FBUyxHQUFHO0lBQ3RCLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztDQUNsRSxDQUFDO0FBRUYsNEZBQTRGO0FBQzVGLHdCQUFnQixlQUFlLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxXQU9wRSJ9
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NoZW1hcy9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRTdCLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBR3RELEtBQUssbUJBQW1CLENBQUMsQ0FBQyxJQUFJLFNBQVMsU0FBUyxDQUFDLEdBQzdDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FDcEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUVwQyxLQUFLLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBUzNELEtBQUssb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQ3ZDLEVBQUUsR0FDRixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUN6QyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUc7S0FBRyxDQUFDLElBQUksTUFBTSxJQUFJLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQUUsQ0FBQyxHQUNuRixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQzFDLENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHO0tBQUcsQ0FBQyxJQUFJLE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUFFLENBQUMsR0FDeEcsS0FBSyxDQUFDO0FBRWQseUVBQXlFO0FBQ3pFLE1BQU0sTUFBTSxZQUFZLENBQUMsQ0FBQyxJQUFJO0tBQzNCLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksRUFBRSxNQUFNLElBQUksS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsR0FDcEUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUMxRixLQUFLO0NBQ1YsQ0FBQztBQUVGLG1FQUFtRTtBQUNuRSxNQUFNLE1BQU0sU0FBUyxHQUFHO0lBQ3RCLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztDQUNsRSxDQUFDO0FBRUYsNEZBQTRGO0FBQzVGLHdCQUFnQixlQUFlLENBQUMsQ0FBQyxTQUFTLFNBQVMsRUFDakQsTUFBTSxFQUFFLENBQUMsRUFDVCxVQUFVLEVBQUUsTUFBTSxHQUNqQixVQUFVLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQU94QyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/schemas/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGtD,KAAK,mBAAmB,CAAC,CAAC,IAAI,SAAS,SAAS,CAAC,GAC7C,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,GACpD,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAEpC,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAS3D,KAAK,oBAAoB,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,GACvC,EAAE,GACF,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GACzC,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,GAAG;KAAG,CAAC,IAAI,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,GACnF,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GAC1C,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG;KAAG,CAAC,IAAI,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,GACxG,KAAK,CAAC;AAEd,yEAAyE;AACzE,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;KAC3B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,IAAI,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,GACpE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAC1F,KAAK;CACV,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;CAClE,CAAC;AAEF,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAOpE"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/schemas/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGtD,KAAK,mBAAmB,CAAC,CAAC,IAAI,SAAS,SAAS,CAAC,GAC7C,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,GACpD,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAEpC,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAS3D,KAAK,oBAAoB,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,GACvC,EAAE,GACF,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GACzC,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,GAAG;KAAG,CAAC,IAAI,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,GACnF,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GAC1C,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG;KAAG,CAAC,IAAI,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,GACxG,KAAK,CAAC;AAEd,yEAAyE;AACzE,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;KAC3B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,IAAI,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,GACpE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAC1F,KAAK;CACV,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;CAClE,CAAC;AAEF,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,CAAC,SAAS,SAAS,EACjD,MAAM,EAAE,CAAC,EACT,UAAU,EAAE,MAAM,GACjB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAOxC"}
@@ -72,6 +72,13 @@ export declare class BufferReader {
72
72
  * @returns The read 256 bit value as a bigint.
73
73
  */
74
74
  readUInt256(): bigint;
75
+ /**
76
+ * Reads a 256-bit signed integer (two's complement) from the buffer at the current index position.
77
+ * Updates the index position by 32 bytes after reading the number.
78
+ *
79
+ * @returns The read 256 bit signed value as a bigint.
80
+ */
81
+ readInt256(): bigint;
75
82
  /** Alias for readUInt256 */
76
83
  readBigInt(): bigint;
77
84
  /**
@@ -153,16 +160,29 @@ export declare class BufferReader {
153
160
  fromBuffer: (reader: BufferReader) => T;
154
161
  }): T[];
155
162
  /**
156
- * Read an array of a fixed size with elements of type T from the buffer.
157
- * The 'itemDeserializer' object should have a 'fromBuffer' method that takes a BufferReader instance as input,
158
- * and returns an instance of the desired deserialized data type T.
159
- * This method will call the 'fromBuffer' method for each element in the array and return the resulting array.
163
+ * Read an array from the buffer using lazy allocation (new Array + loop).
164
+ * Safe for use with untrusted sizes does not pre-allocate memory proportional to size.
160
165
  *
161
- * @param size - The fixed number of elements in the array.
166
+ * @param size - The number of elements to read.
162
167
  * @param itemDeserializer - An object with a 'fromBuffer' method to deserialize individual elements of type T.
163
168
  * @returns An array of instances of type T.
164
169
  */
165
- readArray<T, N extends number>(size: N, itemDeserializer: {
170
+ readArray<T>(size: number, itemDeserializer: {
171
+ /**
172
+ * A function for deserializing data from a BufferReader instance.
173
+ */
174
+ fromBuffer: (reader: BufferReader) => T;
175
+ }): T[];
176
+ /**
177
+ * Read a fixed-size tuple from the buffer using dense allocation (Array.from).
178
+ * Only use with compile-time constant sizes — the size parameter MUST NOT come from untrusted input
179
+ * as Array.from pre-allocates memory proportional to size.
180
+ *
181
+ * @param size - The fixed number of elements (must be a compile-time constant).
182
+ * @param itemDeserializer - An object with a 'fromBuffer' method to deserialize individual elements of type T.
183
+ * @returns A densely-allocated tuple of instances of type T.
184
+ */
185
+ readTuple<T, N extends number>(size: N, itemDeserializer: {
166
186
  /**
167
187
  * A function for deserializing data from a BufferReader instance.
168
188
  */
@@ -264,4 +284,4 @@ export interface FromBuffer<T> {
264
284
  */
265
285
  fromBuffer(buffer: Buffer): T;
266
286
  }
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyX3JlYWRlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcmlhbGl6ZS9idWZmZXJfcmVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV4Qzs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILHFCQUFhLFlBQVk7O0lBR3JCLE9BQU8sQ0FBQyxNQUFNO0lBRmhCLE9BQU8sQ0FBQyxLQUFLLENBQVM7SUFDdEIsWUFDVSxNQUFNLEVBQUUsTUFBTSxFQUN0QixNQUFNLFNBQUksRUFHWDtJQUVEOzs7Ozs7O09BT0c7SUFDSCxPQUFjLFFBQVEsQ0FBQyxjQUFjLEVBQUUsVUFBVSxHQUFHLE1BQU0sR0FBRyxZQUFZLEdBQUcsWUFBWSxDQVV2RjtJQUVELDBFQUEwRTtJQUNuRSxPQUFPLElBQUksT0FBTyxDQUV4QjtJQUVEOzs7OztPQUtHO0lBQ0ksVUFBVSxJQUFJLE1BQU0sQ0FJMUI7SUFFRDs7OztPQUlHO0lBQ0ksV0FBVyxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUcvRDtJQUVEOzs7Ozs7O09BT0c7SUFDSSxVQUFVLElBQUksTUFBTSxDQU8xQjtJQUVEOzs7Ozs7O09BT0c7SUFDSSxXQUFXLElBQUksTUFBTSxDQVUzQjtJQUVEOzs7Ozs7O09BT0c7SUFDSSxXQUFXLElBQUksTUFBTSxDQVUzQjtJQUVELDRCQUE0QjtJQUNyQixVQUFVLElBQUksTUFBTSxDQUUxQjtJQUVEOzs7OztPQUtHO0lBQ0ksVUFBVSxJQUFJLE1BQU0sQ0FJMUI7SUFFRDs7Ozs7T0FLRztJQUNJLFNBQVMsSUFBSSxNQUFNLENBSXpCO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksV0FBVyxJQUFJLE9BQU8sQ0FJNUI7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUlsQztJQUVELHlDQUF5QztJQUNsQyxTQUFTLElBQUksTUFBTSxDQUl6QjtJQUVEOzs7OztPQUtHO0lBQ0ksZ0JBQWdCLElBQUksTUFBTSxFQUFFLENBSWxDO0lBRUQ7Ozs7O09BS0c7SUFDSSxpQkFBaUIsSUFBSSxNQUFNLEVBQUUsQ0FJbkM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxVQUFVLENBQUMsQ0FBQyxFQUNqQixnQkFBZ0IsRUFBRTtRQUNoQjs7V0FFRztRQUNILFVBQVUsRUFBRSxDQUFDLE1BQU0sRUFBRSxZQUFZLEtBQUssQ0FBQyxDQUFDO0tBQ3pDLEVBQ0QsT0FBTyxDQUFDLEVBQUUsTUFBTSxHQUNmLENBQUMsRUFBRSxDQVVMO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUU7UUFDaEQ7O1dBRUc7UUFDSCxVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxLQUFLLENBQUMsQ0FBQztLQUN6QyxHQUFHLENBQUMsRUFBRSxDQU9OO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsTUFBTSxFQUNsQyxJQUFJLEVBQUUsQ0FBQyxFQUNQLGdCQUFnQixFQUFFO1FBQ2hCOztXQUVHO1FBQ0gsVUFBVSxFQUFFLENBQUMsTUFBTSxFQUFFLFlBQVksS0FBSyxDQUFDLENBQUM7S0FDekMsR0FDQSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUdiO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLGVBQWUsQ0FBQyxJQUFJLFNBQUssR0FBRyxNQUFNLEVBQUUsQ0FlMUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxVQUFVLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRTtRQUNqQzs7V0FFRztRQUNILFVBQVUsRUFBRSxDQUFDLE1BQU0sRUFBRSxZQUFZLEtBQUssQ0FBQyxDQUFDO0tBQ3pDLEdBQUcsQ0FBQyxDQUVKO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBR25DO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUUxQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBTzFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLGNBQWMsSUFBSSxVQUFVLENBSWxDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxPQUFPLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRTtRQUM5Qjs7V0FFRztRQUNILFVBQVUsRUFBRSxDQUFDLE1BQU0sRUFBRSxZQUFZLEtBQUssQ0FBQyxDQUFDO0tBQ3pDLEdBQUc7UUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFBO0tBQUUsQ0FTdkI7SUFFRDs7O09BR0c7SUFDSSxTQUFTLElBQUksTUFBTSxDQUV6QjtJQUVEOzs7T0FHRztJQUNJLGNBQWMsSUFBSSxNQUFNLENBRTlCO0NBU0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sV0FBVyxVQUFVLENBQUMsQ0FBQztJQUMzQjs7O09BR0c7SUFDSCxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7Q0FDL0IifQ==
287
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyX3JlYWRlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcmlhbGl6ZS9idWZmZXJfcmVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV4Qzs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILHFCQUFhLFlBQVk7O0lBR3JCLE9BQU8sQ0FBQyxNQUFNO0lBRmhCLE9BQU8sQ0FBQyxLQUFLLENBQVM7SUFDdEIsWUFDVSxNQUFNLEVBQUUsTUFBTSxFQUN0QixNQUFNLFNBQUksRUFHWDtJQUVEOzs7Ozs7O09BT0c7SUFDSCxPQUFjLFFBQVEsQ0FBQyxjQUFjLEVBQUUsVUFBVSxHQUFHLE1BQU0sR0FBRyxZQUFZLEdBQUcsWUFBWSxDQVV2RjtJQUVELDBFQUEwRTtJQUNuRSxPQUFPLElBQUksT0FBTyxDQUV4QjtJQUVEOzs7OztPQUtHO0lBQ0ksVUFBVSxJQUFJLE1BQU0sQ0FJMUI7SUFFRDs7OztPQUlHO0lBQ0ksV0FBVyxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUcvRDtJQUVEOzs7Ozs7O09BT0c7SUFDSSxVQUFVLElBQUksTUFBTSxDQU8xQjtJQUVEOzs7Ozs7O09BT0c7SUFDSSxXQUFXLElBQUksTUFBTSxDQVUzQjtJQUVEOzs7Ozs7O09BT0c7SUFDSSxXQUFXLElBQUksTUFBTSxDQVUzQjtJQUVEOzs7OztPQUtHO0lBQ0ksVUFBVSxJQUFJLE1BQU0sQ0FNMUI7SUFFRCw0QkFBNEI7SUFDckIsVUFBVSxJQUFJLE1BQU0sQ0FFMUI7SUFFRDs7Ozs7T0FLRztJQUNJLFVBQVUsSUFBSSxNQUFNLENBSTFCO0lBRUQ7Ozs7O09BS0c7SUFDSSxTQUFTLElBQUksTUFBTSxDQUl6QjtJQUVEOzs7Ozs7T0FNRztJQUNJLFdBQVcsSUFBSSxP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
@@ -1 +1 @@
1
- {"version":3,"file":"buffer_reader.d.ts","sourceRoot":"","sources":["../../src/serialize/buffer_reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buffer_reader.d.ts","sourceRoot":"","sources":["../../src/serialize/buffer_reader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,YAAY;;IAGrB,OAAO,CAAC,MAAM;IAFhB,OAAO,CAAC,KAAK,CAAS;IACtB,YACU,MAAM,EAAE,MAAM,EACtB,MAAM,SAAI,EAGX;IAED;;;;;;;OAOG;IACH,OAAc,QAAQ,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,YAAY,CAUvF;IAED,0EAA0E;IACnE,OAAO,IAAI,OAAO,CAExB;IAED;;;;;OAKG;IACI,UAAU,IAAI,MAAM,CAI1B;IAED;;;;OAIG;IACI,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAG/D;IAED;;;;;;;OAOG;IACI,UAAU,IAAI,MAAM,CAO1B;IAED;;;;;;;OAOG;IACI,WAAW,IAAI,MAAM,CAU3B;IAED;;;;;;;OAOG;IACI,WAAW,IAAI,MAAM,CAU3B;IAED;;;;;OAKG;IACI,UAAU,IAAI,MAAM,CAM1B;IAED,4BAA4B;IACrB,UAAU,IAAI,MAAM,CAE1B;IAED;;;;;OAKG;IACI,UAAU,IAAI,MAAM,CAI1B;IAED;;;;;OAKG;IACI,SAAS,IAAI,MAAM,CAIzB;IAED;;;;;;OAMG;IACI,WAAW,IAAI,OAAO,CAI5B;IAED;;;;;;;OAOG;IACI,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAIlC;IAED,yCAAyC;IAClC,SAAS,IAAI,MAAM,CAIzB;IAED;;;;;OAKG;IACI,gBAAgB,IAAI,MAAM,EAAE,CAIlC;IAED;;;;;OAKG;IACI,iBAAiB,IAAI,MAAM,EAAE,CAInC;IAED;;;;;;;;;OASG;IACI,UAAU,CAAC,CAAC,EACjB,gBAAgB,EAAE;QAChB;;WAEG;QACH,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,CAAC,CAAC;KACzC,EACD,OAAO,CAAC,EAAE,MAAM,GACf,CAAC,EAAE,CAUL;IAED;;;;;;;;OAQG;IACI,qBAAqB,CAAC,CAAC,EAAE,gBAAgB,EAAE;QAChD;;WAEG;QACH,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,CAAC,CAAC;KACzC,GAAG,CAAC,EAAE,CAON;IAED;;;;;;;OAOG;IACI,SAAS,CAAC,CAAC,EAChB,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE;QAChB;;WAEG;QACH,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,CAAC,CAAC;KACzC,GACA,CAAC,EAAE,CAML;IAED;;;;;;;;OAQG;IACI,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAClC,IAAI,EAAE,CAAC,EACP,gBAAgB,EAAE;QAChB;;WAEG;QACH,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,CAAC,CAAC;KACzC,GACA,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAGb;IAED;;;;;;;OAOG;IACI,eAAe,CAAC,IAAI,SAAK,GAAG,MAAM,EAAE,CAe1C;IAED;;;;;;OAMG;IACI,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE;QACjC;;WAEG;QACH,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,CAAC,CAAC;KACzC,GAAG,CAAC,CAEJ;IAED;;;;;;OAMG;IACI,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGnC;IAED;;;;;;;OAOG;IACI,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1C;IAED;;;;;;;;OAQG;IACI,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAO1C;IAED;;;;;;;OAOG;IACI,cAAc,IAAI,UAAU,CAIlC;IAED;;;;;;;;OAQG;IACI,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE;QAC9B;;WAEG;QACH,UAAU,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,CAAC,CAAC;KACzC,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE,CASvB;IAED;;;OAGG;IACI,SAAS,IAAI,MAAM,CAEzB;IAED;;;OAGG;IACI,cAAc,IAAI,MAAM,CAE9B;CASF;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;CAC/B"}
@@ -1,3 +1,4 @@
1
+ import { toBigIntBE } from '../bigint-buffer/index.js';
1
2
  /**
2
3
  * The BufferReader class provides a utility for reading various data types from a buffer.
3
4
  * It supports reading numbers, booleans, byte arrays, Fr and Fq field elements,
@@ -103,6 +104,18 @@
103
104
  this.index += 32;
104
105
  return result;
105
106
  }
107
+ /**
108
+ * Reads a 256-bit signed integer (two's complement) from the buffer at the current index position.
109
+ * Updates the index position by 32 bytes after reading the number.
110
+ *
111
+ * @returns The read 256 bit signed value as a bigint.
112
+ */ readInt256() {
113
+ this.#rangeCheck(32);
114
+ const unsigned = toBigIntBE(this.buffer.subarray(this.index, this.index + 32));
115
+ this.index += 32;
116
+ const signBit = 1n << 255n;
117
+ return unsigned >= signBit ? unsigned - (1n << 256n) : unsigned;
118
+ }
106
119
  /** Alias for readUInt256 */ readBigInt() {
107
120
  return this.readUInt256();
108
121
  }
@@ -211,15 +224,28 @@
211
224
  return result;
212
225
  }
213
226
  /**
214
- * Read an array of a fixed size with elements of type T from the buffer.
215
- * The 'itemDeserializer' object should have a 'fromBuffer' method that takes a BufferReader instance as input,
216
- * and returns an instance of the desired deserialized data type T.
217
- * This method will call the 'fromBuffer' method for each element in the array and return the resulting array.
227
+ * Read an array from the buffer using lazy allocation (new Array + loop).
228
+ * Safe for use with untrusted sizes does not pre-allocate memory proportional to size.
218
229
  *
219
- * @param size - The fixed number of elements in the array.
230
+ * @param size - The number of elements to read.
220
231
  * @param itemDeserializer - An object with a 'fromBuffer' method to deserialize individual elements of type T.
221
232
  * @returns An array of instances of type T.
222
233
  */ readArray(size, itemDeserializer) {
234
+ const result = new Array(size);
235
+ for(let i = 0; i < size; i++){
236
+ result[i] = itemDeserializer.fromBuffer(this);
237
+ }
238
+ return result;
239
+ }
240
+ /**
241
+ * Read a fixed-size tuple from the buffer using dense allocation (Array.from).
242
+ * Only use with compile-time constant sizes — the size parameter MUST NOT come from untrusted input
243
+ * as Array.from pre-allocates memory proportional to size.
244
+ *
245
+ * @param size - The fixed number of elements (must be a compile-time constant).
246
+ * @param itemDeserializer - An object with a 'fromBuffer' method to deserialize individual elements of type T.
247
+ * @returns A densely-allocated tuple of instances of type T.
248
+ */ readTuple(size, itemDeserializer) {
223
249
  const result = Array.from({
224
250
  length: size
225
251
  }, ()=>itemDeserializer.fromBuffer(this));
@@ -93,10 +93,18 @@ export declare class FieldReader {
93
93
  * @param itemDeserializer - An object with a 'fromFields' method to deserialize individual elements of type T.
94
94
  * @returns An array of instances of type T.
95
95
  */
96
- readArray<T, N extends number>(size: N, itemDeserializer: {
97
- /**
98
- * A function for deserializing data from a FieldReader instance.
99
- */
96
+ /**
97
+ * Read an array from the field array using lazy allocation (new Array + loop).
98
+ * Safe for use with untrusted sizes.
99
+ */
100
+ readArray<T>(size: number, itemDeserializer: {
101
+ fromFields: (reader: FieldReader) => T;
102
+ }): T[];
103
+ /**
104
+ * Read a fixed-size tuple from the field array using dense allocation (Array.from).
105
+ * Only use with compile-time constant sizes — the size parameter MUST NOT come from untrusted input.
106
+ */
107
+ readTuple<T, N extends number>(size: N, itemDeserializer: {
100
108
  fromFields: (reader: FieldReader) => T;
101
109
  }): Tuple<T, N>;
102
110
  /**
@@ -118,4 +126,4 @@ export declare class FieldReader {
118
126
  */
119
127
  isFinished(): boolean;
120
128
  }
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRfcmVhZGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXplL2ZpZWxkX3JlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXhDOzs7Ozs7O0dBT0c7QUFDSCxxQkFBYSxXQUFXO0lBS3BCLE9BQU8sQ0FBQyxNQUFNO0lBSmhCLE9BQU8sQ0FBQyxLQUFLLENBQVM7SUFDdEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQVM7SUFFaEMsWUFDVSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQ3BCLE1BQU0sU0FBSSxFQU9YO0lBRUQ7Ozs7O09BS0c7SUFDSCxPQUFjLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsV0FBVyxHQUFHLFdBQVcsQ0FNOUQ7SUFFRDs7OztPQUlHO0lBQ0gsSUFBVyxNQUFNLFdBRWhCO0lBRU0sZUFBZSxJQUFJLE1BQU0sQ0FFL0I7SUFFRDs7OztPQUlHO0lBQ0ksSUFBSSxDQUFDLENBQUMsRUFBRSxNQUFNLFFBS3BCO0lBRUQ7Ozs7T0FJRztJQUNJLFNBQVMsSUFBSSxFQUFFLENBS3JCO0lBRUQ7Ozs7T0FJRztJQUNJLFNBQVMsSUFBSSxFQUFFLENBS3JCO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sSUFBSSxFQUFFLENBRWxCO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLFdBQVcsSUFBSSxPQUFPLENBTzVCO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksT0FBTyxJQUFJLE1BQU0sQ0FPdkI7SUFFRDs7Ozs7O09BTUc7SUFDSSxPQUFPLElBQUksTUFBTSxDQU92QjtJQUVEOzs7OztPQUtHO0lBQ0ksY0FBYyxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQU03RDtJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLE1BQU0sRUFDbEMsSUFBSSxFQUFFLENBQUMsRUFDUCxnQkFBZ0IsRUFBRTtRQUNoQjs7V0FFRztRQUNILFVBQVUsRUFBRSxDQUFDLE1BQU0sRUFBRSxXQUFXLEtBQUssQ0FBQyxDQUFDO0tBQ3hDLEdBQ0EsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FHYjtJQUVEOzs7Ozs7T0FNRztJQUNJLFVBQVUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFO1FBQ2pDOztXQUVHO1FBQ0gsVUFBVSxFQUFFLENBQUMsTUFBTSxFQUFFLFdBQVcsS0FBSyxDQUFDLENBQUM7S0FDeEMsR0FBRyxDQUFDLENBRUo7SUFFRDs7O09BR0c7SUFDSSxVQUFVLElBQUksT0FBTyxDQUUzQjtDQUNGIn0=
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRfcmVhZGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXplL2ZpZWxkX3JlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXhDOzs7Ozs7O0dBT0c7QUFDSCxxQkFBYSxXQUFXO0lBS3BCLE9BQU8sQ0FBQyxNQUFNO0lBSmhCLE9BQU8sQ0FBQyxLQUFLLENBQVM7SUFDdEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQVM7SUFFaEMsWUFDVSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQ3BCLE1BQU0sU0FBSSxFQU9YO0lBRUQ7Ozs7O09BS0c7SUFDSCxPQUFjLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsV0FBVyxHQUFHLFdBQVcsQ0FNOUQ7SUFFRDs7OztPQUlHO0lBQ0gsSUFBVyxNQUFNLFdBRWhCO0lBRU0sZUFBZSxJQUFJLE1BQU0sQ0FFL0I7SUFFRDs7OztPQUlHO0lBQ0ksSUFBSSxDQUFDLENBQUMsRUFBRSxNQUFNLFFBS3BCO0lBRUQ7Ozs7T0FJRztJQUNJLFNBQVMsSUFBSSxFQUFFLENBS3JCO0lBRUQ7Ozs7T0FJRztJQUNJLFNBQVMsSUFBSSxFQUFFLENBS3JCO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sSUFBSSxFQUFFLENBRWxCO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLFdBQVcsSUFBSSxPQUFPLENBTzVCO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksT0FBTyxJQUFJLE1BQU0sQ0FPdkI7SUFFRDs7Ozs7O09BTUc7SUFDSSxPQUFPLElBQUksTUFBTSxDQU92QjtJQUVEOzs7OztPQUtHO0lBQ0ksY0FBYyxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQU03RDtJQUVEOzs7Ozs7Ozs7T0FTRztJQUNIOzs7T0FHRztJQUNJLFNBQVMsQ0FBQyxDQUFDLEVBQ2hCLElBQUksRUFBRSxNQUFNLEVBQ1osZ0JBQWdCLEVBQUU7UUFDaEIsVUFBVSxFQUFFLENBQUMsTUFBTSxFQUFFLFdBQVcsS0FBSyxDQUFDLENBQUM7S0FDeEMsR0FDQSxDQUFDLEVBQUUsQ0FNTDtJQUVEOzs7T0FHRztJQUNJLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLE1BQU0sRUFDbEMsSUFBSSxFQUFFLENBQUMsRUFDUCxnQkFBZ0IsRUFBRTtRQUNoQixVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxLQUFLLENBQUMsQ0FBQztLQUN4QyxHQUNBLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBR2I7SUFFRDs7Ozs7O09BTUc7SUFDSSxVQUFVLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRTtRQUNqQzs7V0FFRztRQUNILFVBQVUsRUFBRSxDQUFDLE1BQU0sRUFBRSxXQUFXLEtBQUssQ0FBQyxDQUFDO0tBQ3hDLEdBQUcsQ0FBQyxDQUVKO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVSxJQUFJLE9BQU8sQ0FFM0I7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"field_reader.d.ts","sourceRoot":"","sources":["../../src/serialize/field_reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;;;;;GAOG;AACH,qBAAa,WAAW;IAKpB,OAAO,CAAC,MAAM;IAJhB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,YACU,MAAM,EAAE,EAAE,EAAE,EACpB,MAAM,SAAI,EAOX;IAED;;;;;OAKG;IACH,OAAc,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,GAAG,WAAW,CAM9D;IAED;;;;OAIG;IACH,IAAW,MAAM,WAEhB;IAEM,eAAe,IAAI,MAAM,CAE/B;IAED;;;;OAIG;IACI,IAAI,CAAC,CAAC,EAAE,MAAM,QAKpB;IAED;;;;OAIG;IACI,SAAS,IAAI,EAAE,CAKrB;IAED;;;;OAIG;IACI,SAAS,IAAI,EAAE,CAKrB;IAED;;;;OAIG;IACI,MAAM,IAAI,EAAE,CAElB;IAED;;;;;;;OAOG;IACI,WAAW,IAAI,OAAO,CAO5B;IAED;;;;;;OAMG;IACI,OAAO,IAAI,MAAM,CAOvB;IAED;;;;;;OAMG;IACI,OAAO,IAAI,MAAM,CAOvB;IAED;;;;;OAKG;IACI,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAM7D;IAED;;;;;;;;;OASG;IACI,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAClC,IAAI,EAAE,CAAC,EACP,gBAAgB,EAAE;QAChB;;WAEG;QACH,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,CAAC,CAAC;KACxC,GACA,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAGb;IAED;;;;;;OAMG;IACI,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE;QACjC;;WAEG;QACH,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,CAAC,CAAC;KACxC,GAAG,CAAC,CAEJ;IAED;;;OAGG;IACI,UAAU,IAAI,OAAO,CAE3B;CACF"}
1
+ {"version":3,"file":"field_reader.d.ts","sourceRoot":"","sources":["../../src/serialize/field_reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;;;;;GAOG;AACH,qBAAa,WAAW;IAKpB,OAAO,CAAC,MAAM;IAJhB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,YACU,MAAM,EAAE,EAAE,EAAE,EACpB,MAAM,SAAI,EAOX;IAED;;;;;OAKG;IACH,OAAc,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,GAAG,WAAW,CAM9D;IAED;;;;OAIG;IACH,IAAW,MAAM,WAEhB;IAEM,eAAe,IAAI,MAAM,CAE/B;IAED;;;;OAIG;IACI,IAAI,CAAC,CAAC,EAAE,MAAM,QAKpB;IAED;;;;OAIG;IACI,SAAS,IAAI,EAAE,CAKrB;IAED;;;;OAIG;IACI,SAAS,IAAI,EAAE,CAKrB;IAED;;;;OAIG;IACI,MAAM,IAAI,EAAE,CAElB;IAED;;;;;;;OAOG;IACI,WAAW,IAAI,OAAO,CAO5B;IAED;;;;;;OAMG;IACI,OAAO,IAAI,MAAM,CAOvB;IAED;;;;;;OAMG;IACI,OAAO,IAAI,MAAM,CAOvB;IAED;;;;;OAKG;IACI,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAM7D;IAED;;;;;;;;;OASG;IACH;;;OAGG;IACI,SAAS,CAAC,CAAC,EAChB,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE;QAChB,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,CAAC,CAAC;KACxC,GACA,CAAC,EAAE,CAML;IAED;;;OAGG;IACI,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAClC,IAAI,EAAE,CAAC,EACP,gBAAgB,EAAE;QAChB,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,CAAC,CAAC;KACxC,GACA,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAGb;IAED;;;;;;OAMG;IACI,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE;QACjC;;WAEG;QACH,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,CAAC,CAAC;KACxC,GAAG,CAAC,CAEJ;IAED;;;OAGG;IACI,UAAU,IAAI,OAAO,CAE3B;CACF"}
@@ -140,7 +140,20 @@ import { Fq } from '../curves/bn254/field.js';
140
140
  * @param size - The fixed number of elements in the array.
141
141
  * @param itemDeserializer - An object with a 'fromFields' method to deserialize individual elements of type T.
142
142
  * @returns An array of instances of type T.
143
+ */ /**
144
+ * Read an array from the field array using lazy allocation (new Array + loop).
145
+ * Safe for use with untrusted sizes.
143
146
  */ readArray(size, itemDeserializer) {
147
+ const result = new Array(size);
148
+ for(let i = 0; i < size; i++){
149
+ result[i] = itemDeserializer.fromFields(this);
150
+ }
151
+ return result;
152
+ }
153
+ /**
154
+ * Read a fixed-size tuple from the field array using dense allocation (Array.from).
155
+ * Only use with compile-time constant sizes — the size parameter MUST NOT come from untrusted input.
156
+ */ readTuple(size, itemDeserializer) {
144
157
  const result = Array.from({
145
158
  length: size
146
159
  }, ()=>itemDeserializer.fromFields(this));
@@ -115,6 +115,13 @@ export declare function toFriendlyJSON(obj: object): string;
115
115
  * @returns A Buffer containing the serialized BigInt value in big-endian format.
116
116
  */
117
117
  export declare function serializeBigInt(n: bigint, width?: number): Buffer<ArrayBufferLike>;
118
+ /**
119
+ * Serialize a signed BigInt value into a Buffer of specified width using two's complement.
120
+ * @param n - The signed BigInt value to be serialized.
121
+ * @param width - The width (in bytes) of the output Buffer, optional with default value 32.
122
+ * @returns A Buffer containing the serialized signed BigInt value in big-endian format.
123
+ */
124
+ export declare function serializeSignedBigInt(n: bigint, width?: number): Buffer<ArrayBufferLike>;
118
125
  /**
119
126
  * Deserialize a big integer from a buffer, given an offset and width.
120
127
  * Reads the specified number of bytes from the buffer starting at the offset, converts it to a big integer, and returns the deserialized result along with the number of bytes read (advanced).
@@ -128,6 +135,17 @@ export declare function deserializeBigInt(buf: Buffer, offset?: number, width?:
128
135
  elem: bigint;
129
136
  adv: number;
130
137
  };
138
+ /**
139
+ * Deserialize a signed BigInt from a buffer (two's complement).
140
+ * @param buf - The buffer containing the signed big integer to be deserialized.
141
+ * @param offset - The position in the buffer where the integer starts. Defaults to 0.
142
+ * @param width - The number of bytes to read from the buffer for the integer. Defaults to 32.
143
+ * @returns An object containing the deserialized signed bigint value ('elem') and bytes advanced ('adv').
144
+ */
145
+ export declare function deserializeSignedBigInt(buf: Buffer, offset?: number, width?: number): {
146
+ elem: bigint;
147
+ adv: number;
148
+ };
131
149
  /**
132
150
  * Serializes a Date object into a Buffer containing its timestamp as a big integer value.
133
151
  * The resulting Buffer has a fixed width of 8 bytes, representing a 64-bit big-endian integer.
@@ -178,4 +196,4 @@ export declare function deserializeInt32(buf: Buffer, offset?: number): {
178
196
  adv: number;
179
197
  };
180
198
  export {};
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXplL3NlcmlhbGl6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHOUM7Ozs7O0dBS0c7QUFDSCx3QkFBZ0Isa0NBQWtDLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLFlBQVksU0FBSSxHQUFHLE1BQU0sQ0FhL0Y7QUFFRDs7R0FFRztBQUNILEtBQUssYUFBYSxDQUFDLENBQUMsSUFBSSxDQUN0QixHQUFHLEVBQUUsTUFBTSxFQUNYLE1BQU0sRUFBRSxNQUFNLEtBQ1g7SUFDSDs7T0FFRztJQUNILElBQUksRUFBRSxDQUFDLENBQUM7SUFDUjs7T0FFRztJQUNILEdBQUcsRUFBRSxNQUFNLENBQUM7Q0FDYixDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsd0JBQWdCLDBCQUEwQixDQUFDLENBQUMsRUFDMUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDN0IsTUFBTSxFQUFFLE1BQU0sRUFDZCxNQUFNLFNBQUksR0FDVDtJQUNEOztPQUVHO0lBQ0gsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ1Y7O09BRUc7SUFDSCxHQUFHLEVBQUUsTUFBTSxDQUFDO0NBQ2IsQ0FXQTtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBZ0IsZUFBZSxDQUFDLEtBQUssRUFBRSxVQUFVLEdBQUcsTUFBTSxDQUd6RDtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBZ0IsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxTQUFJLEdBQUcsTUFBTSxDQUluRTtBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQWdCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFJOzs7RUFHdkQ7QUFFRCw4Q0FBOEM7QUFDOUMsTUFBTSxNQUFNLFVBQVUsR0FDbEIsT0FBTyxHQUNQLE1BQU0sR0FDTixVQUFVLEdBQ1YsTUFBTSxHQUNOLE1BQU0sR0FDTixNQUFNLEdBQ047SUFDRTs7T0FFRztJQUNILFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztDQUN4QixHQUNELFVBQVUsRUFBRSxDQUFDO0FBRWpCLGdFQUFnRTtBQUNoRSxNQUFNLE1BQU0sU0FBUyxHQUNqQixFQUFFLEdBQ0YsT0FBTyxHQUNQLE1BQU0sR0FDTixNQUFNLEdBQ04sTUFBTSxHQUNOO0lBQ0U7OztPQUdHO0lBQ0gsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0NBQ2hCLEdBQ0Q7SUFDRSw0QkFBNEI7SUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0NBQ25CLEdBQ0Q7SUFDRSx1Q0FBdUM7SUFDdkMsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUM7Q0FDdEIsR0FDRCxTQUFTLEVBQUUsQ0FBQztBQUVoQixNQUFNLE1BQU0sWUFBWSxHQUFHLFVBQVUsR0FBRyxTQUFTLENBQUM7QUFFbEQ7Ozs7R0FJRztBQUNILHdCQUFnQixzQkFBc0IsQ0FBQyxHQUFHLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0E0QnRFO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFnQixpQkFBaUIsQ0FBQyxHQUFHLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FzQjVEO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFnQixpQkFBaUIsQ0FBQyxHQUFHLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLENBRS9EO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFnQixjQUFjLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBNEJsRDtBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILHdCQUFnQixlQUFlLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLFNBQUssMkJBRXBEO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCx3QkFBZ0IsaUJBQWlCLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQUksRUFBRSxLQUFLLFNBQUs7OztFQUVwRTtBQUVEOzs7Ozs7O0dBT0c7QUFDSCx3QkFBZ0IsYUFBYSxDQUFDLElBQUksRUFBRSxJQUFJLDJCQUV2QztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQWdCLGVBQWUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBSTs7O0VBR3REO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCx3QkFBZ0IsaUJBQWlCLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQUk7OztFQUd4RDtBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILHdCQUFnQixnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBSTs7O0VBR3ZEIn0=
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXplL3NlcmlhbGl6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHOUM7Ozs7O0dBS0c7QUFDSCx3QkFBZ0Isa0NBQWtDLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLFlBQVksU0FBSSxHQUFHLE1BQU0sQ0FhL0Y7QUFFRDs7R0FFRztBQUNILEtBQUssYUFBYSxDQUFDLENBQUMsSUFBSSxDQUN0QixHQUFHLEVBQUUsTUFBTSxFQUNYLE1BQU0sRUFBRSxNQUFNLEtBQ1g7SUFDSDs7T0FFRztJQUNILElBQUksRUFBRSxDQUFDLENBQUM7SUFDUjs7T0FFRztJQUNILEdBQUcsRUFBRSxNQUFNLENBQUM7Q0FDYixDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsd0JBQWdCLDBCQUEwQixDQUFDLENBQUMsRUFDMUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDN0IsTUFBTSxFQUFFLE1BQU0sRUFDZCxNQUFNLFNBQUksR0FDVDtJQUNEOztPQUVHO0lBQ0gsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ1Y7O09BRUc7SUFDSCxHQUFHLEVBQUUsTUFBTSxDQUFDO0NBQ2IsQ0FXQTtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBZ0IsZUFBZSxDQUFDLEtBQUssRUFBRSxVQUFVLEdBQUcsTUFBTSxDQUd6RDtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBZ0IsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxTQUFJLEdBQUcsTUFBTSxDQUluRTtBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQWdCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFJOzs7RUFHdkQ7QUFFRCw4Q0FBOEM7QUFDOUMsTUFBTSxNQUFNLFVBQVUsR0FDbEIsT0FBTyxHQUNQLE1BQU0sR0FDTixVQUFVLEdBQ1YsTUFBTSxHQUNOLE1BQU0sR0FDTixNQUFNLEdBQ047SUFDRTs7T0FFRztJQUNILFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztDQUN4QixHQUNELFVBQVUsRUFBRSxDQUFDO0FBRWpCLGdFQUFnRTtBQUNoRSxNQUFNLE1BQU0sU0FBUyxHQUNqQixFQUFFLEdBQ0YsT0FBTyxHQUNQLE1BQU0sR0FDTixNQUFNLEdBQ04sTUFBTSxHQUNOO0lBQ0U7OztPQUdHO0lBQ0gsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0NBQ2hCLEdBQ0Q7SUFDRSw0QkFBNEI7SUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0NBQ25CLEdBQ0Q7SUFDRSx1Q0FBdUM7SUFDdkMsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUM7Q0FDdEIsR0FDRCxTQUFTLEVBQUUsQ0FBQztBQUVoQixNQUFNLE1BQU0sWUFBWSxHQUFHLFVBQVUsR0FBRyxTQUFTLENBQUM7QUFFbEQ7Ozs7R0FJRztBQUNILHdCQUFnQixzQkFBc0IsQ0FBQyxHQUFHLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0E0QnRFO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFnQixpQkFBaUIsQ0FBQyxHQUFHLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FzQjVEO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFnQixpQkFBaUIsQ0FBQyxHQUFHLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLENBRS9EO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFnQixjQUFjLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBNEJsRDtBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILHdCQUFnQixlQUFlLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLFNBQUssMkJBRXBEO0FBRUQ7Ozs7O0dBS0c7QUFDSCx3QkFBZ0IscUJBQXFCLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLFNBQUssMkJBUTFEO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCx3QkFBZ0IsaUJBQWlCLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQUksRUFBRSxLQUFLLFNBQUs7OztFQUVwRTtBQUVEOzs7Ozs7R0FNRztBQUNILHdCQUFnQix1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBSSxFQUFFLEtBQUssU0FBSzs7O0VBTzFFO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILHdCQUFnQixhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksMkJBRXZDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCx3QkFBZ0IsZUFBZSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFJOzs7RUFHdEQ7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILHdCQUFnQixpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBSTs7O0VBR3hEO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsd0JBQWdCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFJOzs7RUFHdkQifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/serialize/serialize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,YAAY,SAAI,GAAG,MAAM,CAa/F;AAED;;GAEG;AACH,KAAK,aAAa,CAAC,CAAC,IAAI,CACtB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,KACX;IACH;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC;IACR;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,EAC1C,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,EAC7B,MAAM,EAAE,MAAM,EACd,MAAM,SAAI,GACT;IACD;;OAEG;IACH,IAAI,EAAE,CAAC,EAAE,CAAC;IACV;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACb,CAWA;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAGzD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,SAAI,GAAG,MAAM,CAInE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI;;;EAGvD;AAED,8CAA8C;AAC9C,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,MAAM,GACN,UAAU,GACV,MAAM,GACN,MAAM,GACN,MAAM,GACN;IACE;;OAEG;IACH,QAAQ,EAAE,MAAM,MAAM,CAAC;CACxB,GACD,UAAU,EAAE,CAAC;AAEjB,gEAAgE;AAChE,MAAM,MAAM,SAAS,GACjB,EAAE,GACF,OAAO,GACP,MAAM,GACN,MAAM,GACN,MAAM,GACN;IACE;;;OAGG;IACH,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,GACD;IACE,4BAA4B;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,GACD;IACE,uCAAuC;IACvC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;CACtB,GACD,SAAS,EAAE,CAAC;AAEhB,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC;AAElD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,CA4BtE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,CAsB5D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA4BlD;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,2BAEpD;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,EAAE,KAAK,SAAK;;;EAEpE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,2BAEvC;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI;;;EAGtD;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI;;;EAGxD;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI;;;EAGvD"}
1
+ {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/serialize/serialize.ts"],"names":[],"mappings":"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"}
@@ -176,6 +176,20 @@ import { numToUInt32BE } from './free_funcs.js';
176
176
  */ export function serializeBigInt(n, width = 32) {
177
177
  return toBufferBE(n, width);
178
178
  }
179
+ /**
180
+ * Serialize a signed BigInt value into a Buffer of specified width using two's complement.
181
+ * @param n - The signed BigInt value to be serialized.
182
+ * @param width - The width (in bytes) of the output Buffer, optional with default value 32.
183
+ * @returns A Buffer containing the serialized signed BigInt value in big-endian format.
184
+ */ export function serializeSignedBigInt(n, width = 32) {
185
+ const widthBits = BigInt(width * 8);
186
+ const max = 1n << widthBits - 1n;
187
+ if (n < -max || n >= max) {
188
+ throw new Error(`Signed BigInt ${n.toString()} does not fit into ${width} bytes`);
189
+ }
190
+ const unsigned = n < 0n ? (1n << widthBits) + n : n;
191
+ return toBufferBE(unsigned, width);
192
+ }
179
193
  /**
180
194
  * Deserialize a big integer from a buffer, given an offset and width.
181
195
  * Reads the specified number of bytes from the buffer starting at the offset, converts it to a big integer, and returns the deserialized result along with the number of bytes read (advanced).
@@ -190,6 +204,23 @@ import { numToUInt32BE } from './free_funcs.js';
190
204
  adv: width
191
205
  };
192
206
  }
207
+ /**
208
+ * Deserialize a signed BigInt from a buffer (two's complement).
209
+ * @param buf - The buffer containing the signed big integer to be deserialized.
210
+ * @param offset - The position in the buffer where the integer starts. Defaults to 0.
211
+ * @param width - The number of bytes to read from the buffer for the integer. Defaults to 32.
212
+ * @returns An object containing the deserialized signed bigint value ('elem') and bytes advanced ('adv').
213
+ */ export function deserializeSignedBigInt(buf, offset = 0, width = 32) {
214
+ const { elem, adv } = deserializeBigInt(buf, offset, width);
215
+ const widthBits = BigInt(width * 8);
216
+ const signBit = 1n << widthBits - 1n;
217
+ const fullRange = 1n << widthBits;
218
+ const signed = elem >= signBit ? elem - fullRange : elem;
219
+ return {
220
+ elem: signed,
221
+ adv
222
+ };
223
+ }
193
224
  /**
194
225
  * Serializes a Date object into a Buffer containing its timestamp as a big integer value.
195
226
  * The resulting Buffer has a fixed width of 8 bytes, representing a 64-bit big-endian integer.
@@ -11,5 +11,27 @@ export declare class TestDateProvider extends DateProvider {
11
11
  constructor(logger?: import("../log/pino-logger.js").Logger);
12
12
  now(): number;
13
13
  setTime(timeMs: number): void;
14
+ /** Advances the time by the given number of seconds. */
15
+ advanceTime(seconds: number): void;
14
16
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RpbWVyL2RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsZ0NBQWdDO0FBQ2hDLHFCQUFhLFlBQVk7SUFDaEIsR0FBRyxJQUFJLE1BQU0sQ0FFbkI7SUFFTSxZQUFZLElBQUksTUFBTSxDQUU1QjtJQUVNLFNBQVMsSUFBSSxJQUFJLENBRXZCO0NBQ0Y7QUFFRCwwREFBMEQ7QUFDMUQscUJBQWEsZ0JBQWlCLFNBQVEsWUFBWTtJQUdwQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU07SUFGbkMsT0FBTyxDQUFDLE1BQU0sQ0FBSztJQUVuQixZQUE2QixNQUFNLHlDQUFnRCxFQUVsRjtJQUVlLEdBQUcsSUFBSSxNQUFNLENBRTVCO0lBRU0sT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLFFBRzVCO0NBQ0YifQ==
17
+ /**
18
+ * A date provider for tests that only advances time via explicit advanceTime() calls.
19
+ * Unlike TestDateProvider, this does NOT track real time progression - time is completely
20
+ * frozen until explicitly advanced. This eliminates flakiness from tests taking
21
+ * varying amounts of real time to execute.
22
+ */
23
+ export declare class ManualDateProvider extends DateProvider {
24
+ private currentTimeMs;
25
+ /**
26
+ * @param initialTimeMs - Initial time in milliseconds. Defaults to a round timestamp for easy visualization.
27
+ */
28
+ constructor(initialTimeMs?: number);
29
+ now(): number;
30
+ /** Sets the current time to the given timestamp in milliseconds. */
31
+ setTime(timeMs: number): void;
32
+ /** Advances the time by the given number of seconds. */
33
+ advanceTime(seconds: number): void;
34
+ /** Advances the time by the given number of milliseconds. */
35
+ advanceTimeMs(ms: number): void;
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RpbWVyL2RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsZ0NBQWdDO0FBQ2hDLHFCQUFhLFlBQVk7SUFDaEIsR0FBRyxJQUFJLE1BQU0sQ0FFbkI7SUFFTSxZQUFZLElBQUksTUFBTSxDQUU1QjtJQUVNLFNBQVMsSUFBSSxJQUFJLENBRXZCO0NBQ0Y7QUFFRCwwREFBMEQ7QUFDMUQscUJBQWEsZ0JBQWlCLFNBQVEsWUFBWTtJQUdwQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU07SUFGbkMsT0FBTyxDQUFDLE1BQU0sQ0FBSztJQUVuQixZQUE2QixNQUFNLHlDQUFnRCxFQUVsRjtJQUVlLEdBQUcsSUFBSSxNQUFNLENBRTVCO0lBRU0sT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLFFBRzVCO0lBRUQsd0RBQXdEO0lBQ2pELFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxRQUVqQztDQUNGO0FBRUQ7Ozs7O0dBS0c7QUFDSCxxQkFBYSxrQkFBbUIsU0FBUSxZQUFZO0lBQ2xELE9BQU8sQ0FBQyxhQUFhLENBQVM7SUFFOUI7O09BRUc7SUFDSCxZQUFZLGFBQWEsR0FBRSxNQUFzQyxFQUdoRTtJQUVlLEdBQUcsSUFBSSxNQUFNLENBRTVCO0lBRUQsb0VBQW9FO0lBQzdELE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxRQUU1QjtJQUVELHdEQUF3RDtJQUNqRCxXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU0sUUFFakM7SUFFRCw2REFBNkQ7SUFDdEQsYUFBYSxDQUFDLEVBQUUsRUFBRSxNQUFNLFFBRTlCO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/timer/date.ts"],"names":[],"mappings":"AAEA,gCAAgC;AAChC,qBAAa,YAAY;IAChB,GAAG,IAAI,MAAM,CAEnB;IAEM,YAAY,IAAI,MAAM,CAE5B;IAEM,SAAS,IAAI,IAAI,CAEvB;CACF;AAED,0DAA0D;AAC1D,qBAAa,gBAAiB,SAAQ,YAAY;IAGpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,MAAM,CAAK;IAEnB,YAA6B,MAAM,yCAAgD,EAElF;IAEe,GAAG,IAAI,MAAM,CAE5B;IAEM,OAAO,CAAC,MAAM,EAAE,MAAM,QAG5B;CACF"}
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/timer/date.ts"],"names":[],"mappings":"AAEA,gCAAgC;AAChC,qBAAa,YAAY;IAChB,GAAG,IAAI,MAAM,CAEnB;IAEM,YAAY,IAAI,MAAM,CAE5B;IAEM,SAAS,IAAI,IAAI,CAEvB;CACF;AAED,0DAA0D;AAC1D,qBAAa,gBAAiB,SAAQ,YAAY;IAGpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,MAAM,CAAK;IAEnB,YAA6B,MAAM,yCAAgD,EAElF;IAEe,GAAG,IAAI,MAAM,CAE5B;IAEM,OAAO,CAAC,MAAM,EAAE,MAAM,QAG5B;IAED,wDAAwD;IACjD,WAAW,CAAC,OAAO,EAAE,MAAM,QAEjC;CACF;AAED;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,aAAa,CAAS;IAE9B;;OAEG;IACH,YAAY,aAAa,GAAE,MAAsC,EAGhE;IAEe,GAAG,IAAI,MAAM,CAE5B;IAED,oEAAoE;IAC7D,OAAO,CAAC,MAAM,EAAE,MAAM,QAE5B;IAED,wDAAwD;IACjD,WAAW,CAAC,OAAO,EAAE,MAAM,QAEjC;IAED,6DAA6D;IACtD,aAAa,CAAC,EAAE,EAAE,MAAM,QAE9B;CACF"}
@@ -26,4 +26,33 @@ import { createLogger } from '../log/pino-logger.js';
26
26
  timeMs
27
27
  });
28
28
  }
29
+ /** Advances the time by the given number of seconds. */ advanceTime(seconds) {
30
+ this.offset += seconds * 1000;
31
+ }
32
+ }
33
+ /**
34
+ * A date provider for tests that only advances time via explicit advanceTime() calls.
35
+ * Unlike TestDateProvider, this does NOT track real time progression - time is completely
36
+ * frozen until explicitly advanced. This eliminates flakiness from tests taking
37
+ * varying amounts of real time to execute.
38
+ */ export class ManualDateProvider extends DateProvider {
39
+ currentTimeMs;
40
+ /**
41
+ * @param initialTimeMs - Initial time in milliseconds. Defaults to a round timestamp for easy visualization.
42
+ */ constructor(initialTimeMs = Date.UTC(2025, 0, 1, 0, 0, 0)){
43
+ super();
44
+ this.currentTimeMs = initialTimeMs;
45
+ }
46
+ now() {
47
+ return this.currentTimeMs;
48
+ }
49
+ /** Sets the current time to the given timestamp in milliseconds. */ setTime(timeMs) {
50
+ this.currentTimeMs = timeMs;
51
+ }
52
+ /** Advances the time by the given number of seconds. */ advanceTime(seconds) {
53
+ this.currentTimeMs += seconds * 1000;
54
+ }
55
+ /** Advances the time by the given number of milliseconds. */ advanceTimeMs(ms) {
56
+ this.currentTimeMs += ms;
57
+ }
29
58
  }
@@ -55,7 +55,7 @@ const log = createLogger('foundation:transport_client');
55
55
  msgId,
56
56
  payload
57
57
  };
58
- log.debug(format(`->`, msg));
58
+ log.trace(format(`->`, msg));
59
59
  return new Promise((resolve, reject)=>{
60
60
  this.pendingRequests.push({
61
61
  resolve,
@@ -77,7 +77,7 @@ const log = createLogger('foundation:transport_client');
77
77
  this.close();
78
78
  return;
79
79
  }
80
- log.debug(format(`<-`, msg));
80
+ log.trace(format(`<-`, msg));
81
81
  if (isEventMessage(msg)) {
82
82
  this.emit('event_msg', msg.payload);
83
83
  return;
@@ -16,6 +16,8 @@ export type Writeable<T> = {
16
16
  export declare function unfreeze<T>(obj: T): Writeable<T>;
17
17
  /** Is defined type guard */
18
18
  export declare function isDefined<T>(value: T | undefined): value is T;
19
+ /** Type guard for error classes */
20
+ export declare function isErrorClass<T extends Error>(value: unknown, errorClass: new (...args: any[]) => T): value is T;
19
21
  /** Resolves a record-like type. Lifted from viem. */
20
22
  export type Prettify<T> = {
21
23
  [K in keyof T]: T[K];
@@ -41,4 +43,4 @@ export interface TypedEventEmitter<TEventMap extends {
41
43
  removeListener<K extends keyof TEventMap>(event: K, listener: TEventMap[K]): this;
42
44
  removeAllListeners<K extends keyof TEventMap>(event: K): this;
43
45
  }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FBZ0M7QUFDaEMsTUFBTSxNQUFNLFFBQVEsQ0FBQyxDQUFDLElBQUk7S0FDdkIsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxRQUFRLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzFELENBQUM7QUFFRixrQ0FBa0M7QUFDbEMsTUFBTSxNQUFNLFdBQVcsQ0FBQyxDQUFDLElBQUk7S0FDMUIsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxRQUFRLEdBQUcsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzFELENBQUM7QUFFRix1REFBdUQ7QUFDdkQsTUFBTSxNQUFNLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUUvRSw2Q0FBNkM7QUFDN0MsTUFBTSxNQUFNLFNBQVMsQ0FBQyxDQUFDLElBQUk7SUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FBRSxDQUFDO0FBRTlELGdEQUFnRDtBQUNoRCx3QkFBZ0IsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FFaEQ7QUFFRCw0QkFBNEI7QUFDNUIsd0JBQWdCLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxTQUFTLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FFN0Q7QUFFRCxxREFBcUQ7QUFDckQsTUFBTSxNQUFNLFFBQVEsQ0FBQyxDQUFDLElBQUk7S0FDdkIsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDckIsR0FBRyxFQUFFLENBQUM7QUFFUDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxXQUFXLGlCQUFpQixDQUFDLFNBQVMsU0FBUztLQUFHLEdBQUcsSUFBSSxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLElBQUk7Q0FBRTtJQUN6RyxJQUFJLENBQUMsQ0FBQyxTQUFTLE1BQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDeEUsRUFBRSxDQUFDLENBQUMsU0FBUyxNQUFNLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3RFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsTUFBTSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUN2RSxJQUFJLENBQUMsQ0FBQyxTQUFTLE1BQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUN0RixjQUFjLENBQUMsQ0FBQyxTQUFTLE1BQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDbEYsa0JBQWtCLENBQUMsQ0FBQyxTQUFTLE1BQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0NBRS9EIn0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FBZ0M7QUFDaEMsTUFBTSxNQUFNLFFBQVEsQ0FBQyxDQUFDLElBQUk7S0FDdkIsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxRQUFRLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzFELENBQUM7QUFFRixrQ0FBa0M7QUFDbEMsTUFBTSxNQUFNLFdBQVcsQ0FBQyxDQUFDLElBQUk7S0FDMUIsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxRQUFRLEdBQUcsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzFELENBQUM7QUFFRix1REFBdUQ7QUFDdkQsTUFBTSxNQUFNLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUUvRSw2Q0FBNkM7QUFDN0MsTUFBTSxNQUFNLFNBQVMsQ0FBQyxDQUFDLElBQUk7SUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FBRSxDQUFDO0FBRTlELGdEQUFnRDtBQUNoRCx3QkFBZ0IsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FFaEQ7QUFFRCw0QkFBNEI7QUFDNUIsd0JBQWdCLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxTQUFTLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FFN0Q7QUFFRCxtQ0FBbUM7QUFDbkMsd0JBQWdCLFlBQVksQ0FBQyxDQUFDLFNBQVMsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBRS9HO0FBRUQscURBQXFEO0FBQ3JELE1BQU0sTUFBTSxRQUFRLENBQUMsQ0FBQyxJQUFJO0tBQ3ZCLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3JCLEdBQUcsRUFBRSxDQUFDO0FBRVA7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sV0FBVyxpQkFBaUIsQ0FBQyxTQUFTLFNBQVM7S0FBRyxHQUFHLElBQUksTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxJQUFJO0NBQUU7SUFDekcsSUFBSSxDQUFDLENBQUMsU0FBUyxNQUFNLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3hFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsTUFBTSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUN0RSxHQUFHLENBQUMsQ0FBQyxTQUFTLE1BQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDdkUsSUFBSSxDQUFDLENBQUMsU0FBUyxNQUFNLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUM7SUFDdEYsY0FBYyxDQUFDLENBQUMsU0FBUyxNQUFNLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2xGLGtCQUFrQixDQUFDLENBQUMsU0FBUyxNQUFNLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztDQUUvRCJ9