@aztec/foundation 0.61.0 → 0.63.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/dest/abi/abi.d.ts +708 -228
  2. package/dest/abi/abi.d.ts.map +1 -1
  3. package/dest/abi/abi.js +92 -8
  4. package/dest/abi/decoder.d.ts.map +1 -1
  5. package/dest/abi/decoder.js +8 -6
  6. package/dest/abi/encoder.d.ts.map +1 -1
  7. package/dest/abi/encoder.js +4 -1
  8. package/dest/abi/event_selector.d.ts +4 -0
  9. package/dest/abi/event_selector.d.ts.map +1 -1
  10. package/dest/abi/event_selector.js +7 -1
  11. package/dest/abi/utils.d.ts +8 -0
  12. package/dest/abi/utils.d.ts.map +1 -1
  13. package/dest/abi/utils.js +23 -1
  14. package/dest/aztec-address/index.d.ts +19 -3
  15. package/dest/aztec-address/index.d.ts.map +1 -1
  16. package/dest/aztec-address/index.js +43 -14
  17. package/dest/buffer/buffer32.d.ts +1 -0
  18. package/dest/buffer/buffer32.d.ts.map +1 -1
  19. package/dest/buffer/buffer32.js +4 -1
  20. package/dest/config/env_var.d.ts +1 -1
  21. package/dest/config/env_var.d.ts.map +1 -1
  22. package/dest/crypto/index.d.ts +1 -0
  23. package/dest/crypto/index.d.ts.map +1 -1
  24. package/dest/crypto/index.js +2 -1
  25. package/dest/crypto/keys/index.d.ts +5 -0
  26. package/dest/crypto/keys/index.d.ts.map +1 -0
  27. package/dest/crypto/keys/index.js +8 -0
  28. package/dest/eth-address/index.d.ts +2 -6
  29. package/dest/eth-address/index.d.ts.map +1 -1
  30. package/dest/eth-address/index.js +3 -7
  31. package/dest/eth-signature/eth_signature.d.ts +2 -0
  32. package/dest/eth-signature/eth_signature.d.ts.map +1 -1
  33. package/dest/eth-signature/eth_signature.js +7 -1
  34. package/dest/fields/fields.d.ts +1 -3
  35. package/dest/fields/fields.d.ts.map +1 -1
  36. package/dest/fields/fields.js +2 -1
  37. package/dest/json-rpc/client/fetch.d.ts +21 -0
  38. package/dest/json-rpc/client/fetch.d.ts.map +1 -0
  39. package/dest/json-rpc/client/fetch.js +66 -0
  40. package/dest/json-rpc/client/index.d.ts +2 -1
  41. package/dest/json-rpc/client/index.d.ts.map +1 -1
  42. package/dest/json-rpc/client/index.js +3 -2
  43. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +13 -0
  44. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -0
  45. package/dest/json-rpc/client/safe_json_rpc_client.js +45 -0
  46. package/dest/json-rpc/convert.d.ts +11 -19
  47. package/dest/json-rpc/convert.d.ts.map +1 -1
  48. package/dest/json-rpc/convert.js +30 -123
  49. package/dest/json-rpc/fixtures/test_state.d.ts +45 -3
  50. package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
  51. package/dest/json-rpc/fixtures/test_state.js +58 -2
  52. package/dest/json-rpc/index.d.ts +1 -2
  53. package/dest/json-rpc/index.d.ts.map +1 -1
  54. package/dest/json-rpc/index.js +2 -3
  55. package/dest/json-rpc/js_utils.d.ts.map +1 -1
  56. package/dest/json-rpc/js_utils.js +2 -1
  57. package/dest/json-rpc/server/index.d.ts +1 -2
  58. package/dest/json-rpc/server/index.d.ts.map +1 -1
  59. package/dest/json-rpc/server/index.js +2 -3
  60. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +112 -0
  61. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -0
  62. package/dest/json-rpc/server/safe_json_rpc_server.js +275 -0
  63. package/dest/json-rpc/test/index.d.ts +2 -0
  64. package/dest/json-rpc/test/index.d.ts.map +1 -0
  65. package/dest/json-rpc/test/index.js +2 -0
  66. package/dest/json-rpc/test/integration.d.ts +13 -0
  67. package/dest/json-rpc/test/integration.d.ts.map +1 -0
  68. package/dest/json-rpc/test/integration.js +12 -0
  69. package/dest/log/logger.d.ts +10 -2
  70. package/dest/log/logger.d.ts.map +1 -1
  71. package/dest/log/logger.js +55 -12
  72. package/dest/schemas/api.d.ts +21 -0
  73. package/dest/schemas/api.d.ts.map +1 -0
  74. package/dest/schemas/api.js +8 -0
  75. package/dest/schemas/index.d.ts +6 -0
  76. package/dest/schemas/index.d.ts.map +1 -0
  77. package/dest/schemas/index.js +6 -0
  78. package/dest/schemas/parse.d.ts +9 -0
  79. package/dest/schemas/parse.d.ts.map +1 -0
  80. package/dest/schemas/parse.js +26 -0
  81. package/dest/schemas/schemas.d.ts +79 -0
  82. package/dest/schemas/schemas.d.ts.map +1 -0
  83. package/dest/schemas/schemas.js +87 -0
  84. package/dest/schemas/types.d.ts +3 -0
  85. package/dest/schemas/types.d.ts.map +1 -0
  86. package/dest/schemas/types.js +2 -0
  87. package/dest/schemas/utils.d.ts +40 -0
  88. package/dest/schemas/utils.d.ts.map +1 -0
  89. package/dest/schemas/utils.js +56 -0
  90. package/dest/string/index.d.ts +7 -0
  91. package/dest/string/index.d.ts.map +1 -0
  92. package/dest/string/index.js +13 -0
  93. package/dest/types/index.d.ts +2 -0
  94. package/dest/types/index.d.ts.map +1 -1
  95. package/dest/validation/index.d.ts +6 -0
  96. package/dest/validation/index.d.ts.map +1 -1
  97. package/dest/validation/index.js +11 -1
  98. package/dest/wasm/wasm_module.js +1 -1
  99. package/package.json +7 -4
  100. package/src/abi/abi.ts +203 -233
  101. package/src/abi/decoder.ts +9 -5
  102. package/src/abi/encoder.ts +2 -0
  103. package/src/abi/event_selector.ts +7 -0
  104. package/src/abi/utils.ts +28 -0
  105. package/src/aztec-address/index.ts +64 -18
  106. package/src/buffer/buffer32.ts +5 -0
  107. package/src/config/env_var.ts +22 -8
  108. package/src/crypto/index.ts +1 -0
  109. package/src/crypto/keys/index.ts +9 -0
  110. package/src/eth-address/index.ts +2 -6
  111. package/src/eth-signature/eth_signature.ts +8 -0
  112. package/src/fields/fields.ts +2 -3
  113. package/src/json-rpc/client/fetch.ts +81 -0
  114. package/src/json-rpc/client/index.ts +2 -1
  115. package/src/json-rpc/client/safe_json_rpc_client.ts +61 -0
  116. package/src/json-rpc/convert.ts +29 -142
  117. package/src/json-rpc/fixtures/test_state.ts +87 -3
  118. package/src/json-rpc/index.ts +1 -8
  119. package/src/json-rpc/js_utils.ts +1 -0
  120. package/src/json-rpc/server/index.ts +1 -2
  121. package/src/json-rpc/server/safe_json_rpc_server.ts +336 -0
  122. package/src/json-rpc/test/index.ts +1 -0
  123. package/src/json-rpc/test/integration.ts +24 -0
  124. package/src/log/logger.ts +59 -15
  125. package/src/schemas/api.ts +47 -0
  126. package/src/schemas/index.ts +5 -0
  127. package/src/schemas/parse.ts +29 -0
  128. package/src/schemas/schemas.ts +111 -0
  129. package/src/schemas/types.ts +3 -0
  130. package/src/schemas/utils.ts +85 -0
  131. package/src/string/index.ts +15 -0
  132. package/src/types/index.ts +3 -0
  133. package/src/validation/index.ts +11 -0
  134. package/src/wasm/wasm_module.ts +1 -1
  135. package/dest/json-rpc/class_converter.d.ts +0 -144
  136. package/dest/json-rpc/class_converter.d.ts.map +0 -1
  137. package/dest/json-rpc/class_converter.js +0 -102
  138. package/dest/json-rpc/client/json_rpc_client.d.ts +0 -35
  139. package/dest/json-rpc/client/json_rpc_client.d.ts.map +0 -1
  140. package/dest/json-rpc/client/json_rpc_client.js +0 -117
  141. package/dest/json-rpc/server/json_proxy.d.ts +0 -30
  142. package/dest/json-rpc/server/json_proxy.d.ts.map +0 -1
  143. package/dest/json-rpc/server/json_proxy.js +0 -46
  144. package/dest/json-rpc/server/json_rpc_server.d.ts +0 -98
  145. package/dest/json-rpc/server/json_rpc_server.d.ts.map +0 -1
  146. package/dest/json-rpc/server/json_rpc_server.js +0 -248
  147. package/src/json-rpc/class_converter.ts +0 -213
  148. package/src/json-rpc/client/json_rpc_client.ts +0 -148
  149. package/src/json-rpc/server/json_proxy.ts +0 -60
  150. package/src/json-rpc/server/json_rpc_server.ts +0 -300
@@ -1,140 +1,47 @@
1
1
  import { Buffer } from 'buffer';
2
- import cloneDeepWith from 'lodash.clonedeepwith';
3
2
  /**
4
- * Check prototype chain to determine if an object is 'plain' (not a class instance).
5
- * @param obj - The object to check.
6
- * @returns True if the object is 'plain'.
3
+ * Parses a json string and then feeds it to a zod schema.
4
+ * @param json - JSON string.
5
+ * @param schema - Zod schema.
6
+ * @returns Result of parsing json with schema.
7
7
  */
8
- function isPlainObject(obj) {
9
- if (obj === null) {
10
- return false;
11
- }
12
- let proto = obj;
13
- let counter = 0;
14
- const MAX_PROTOTYPE_CHAIN_LENGTH = 1000; // Adjust as needed
15
- while (Object.getPrototypeOf(proto) !== null) {
16
- if (counter >= MAX_PROTOTYPE_CHAIN_LENGTH) {
17
- // This is a failsafe in case circular prototype chain has been created. It should not be hit
18
- return false;
19
- }
20
- proto = Object.getPrototypeOf(proto);
21
- counter++;
22
- }
23
- return Object.getPrototypeOf(obj) === proto;
8
+ export function jsonParseWithSchema(json, schema) {
9
+ return schema.parse(JSON.parse(json));
24
10
  }
25
11
  /**
26
- * Recursively looks through an object for bigints and converts them to object format.
27
- * @param obj - The object to convert.
28
- * @returns The converted object with stringified bigints.
29
- */
30
- export const convertBigintsInObj = (obj) => {
31
- return cloneDeepWith(obj, (value) => {
32
- if (typeof value === 'bigint') {
33
- return { type: 'bigint', data: value.toString() };
34
- }
35
- });
36
- };
37
- /**
38
- * JSON.stringify helper that handles bigints.
12
+ * JSON.stringify helper that stringifies bigints, buffers, maps, and sets.
39
13
  * @param obj - The object to be stringified.
40
14
  * @returns The resulting string.
41
15
  */
42
- export function JsonStringify(obj, prettify) {
43
- return JSON.stringify(obj, (key, value) => typeof value === 'bigint'
44
- ? JSON.stringify({
45
- type: 'bigint',
46
- data: value.toString(),
47
- })
48
- : value, prettify ? 2 : 0);
49
- }
50
- /**
51
- * Convert a JSON-friendly object, which may encode a class object.
52
- * @param cc - The class converter.
53
- * @param obj - The encoded object.
54
- * @returns The decoded object.
55
- */
56
- export function convertFromJsonObj(cc, obj) {
57
- if (obj === null) {
58
- return undefined; // `null` doesn't work with default args.
59
- }
60
- if (!obj) {
61
- return obj; // Primitive type
62
- }
63
- // Is this a serialized Node buffer?
64
- if (obj.type === 'Buffer' && typeof obj.data === 'string') {
65
- return Buffer.from(obj.data, 'base64');
66
- }
67
- if (obj.type === 'bigint' && typeof obj.data === 'string') {
68
- return BigInt(obj.data);
69
- }
70
- // Is this a convertible type?
71
- if (typeof obj.type === 'string') {
72
- if (cc.isRegisteredClassName(obj.type)) {
73
- return cc.toClassObj(obj);
16
+ export function jsonStringify(obj, prettify) {
17
+ return JSON.stringify(obj, (_key, value) => {
18
+ if (typeof value === 'bigint') {
19
+ return value.toString();
74
20
  }
75
- else {
76
- throw new Error(`Object ${obj.type} not registered for serialization FROM JSON`);
21
+ else if (typeof value === 'object' && Buffer.isBuffer(value)) {
22
+ return value.toString('base64');
77
23
  }
78
- }
79
- // Is this an array?
80
- if (Array.isArray(obj)) {
81
- return obj.map((x) => convertFromJsonObj(cc, x));
82
- }
83
- // Is this a dictionary?
84
- if (typeof obj === 'object') {
85
- const newObj = {};
86
- for (const key of Object.keys(obj)) {
87
- newObj[key] = convertFromJsonObj(cc, obj[key]);
24
+ else if (typeof value === 'object' && value instanceof Map) {
25
+ return Array.from(value.entries());
88
26
  }
89
- return newObj;
90
- }
91
- // Leave alone, assume JSON primitive
92
- return obj;
27
+ else if (typeof value === 'object' && value instanceof Set) {
28
+ return Array.from(value.values());
29
+ }
30
+ else {
31
+ return value;
32
+ }
33
+ }, prettify ? 2 : 0);
93
34
  }
94
35
  /**
95
- * Convert objects or classes to a JSON-friendly object.
96
- * @param cc - The class converter.
97
- * @param obj - The object.
98
- * @returns The encoded object.
36
+ * Calls jsonStringify but swallows errors.
37
+ * Use for logging, when you don't want to potentially introduce another thing that throws.
99
38
  */
100
- export function convertToJsonObj(cc, obj) {
101
- // Bigint is a primitive type that needs special handling since it's not serializable
102
- if (typeof obj === 'bigint') {
103
- return {
104
- type: 'bigint',
105
- data: obj.toString(),
106
- };
39
+ export function tryJsonStringify(obj, prettify) {
40
+ try {
41
+ return jsonStringify(obj, prettify);
107
42
  }
108
- if (!obj) {
109
- return obj; // Primitive type
110
- }
111
- // Is this a Node buffer?
112
- if (Buffer.isBuffer(obj)) {
113
- return { type: 'Buffer', data: obj.toString('base64') };
114
- }
115
- // Is this a convertible type?
116
- if (cc.isRegisteredClass(obj.constructor)) {
117
- return cc.toJsonObj(obj);
118
- }
119
- // Is this an array?
120
- if (Array.isArray(obj)) {
121
- return obj.map((x) => convertToJsonObj(cc, x));
122
- }
123
- if (typeof obj === 'object') {
124
- // Is this a dictionary?
125
- if (isPlainObject(obj)) {
126
- const newObj = {};
127
- for (const key of Object.keys(obj)) {
128
- newObj[key] = convertToJsonObj(cc, obj[key]);
129
- }
130
- return newObj;
131
- }
132
- else {
133
- // Throw if this is a non-primitive class that was not registered
134
- throw new Error(`Object ${obj.constructor.name} not registered for serialization TO JSON`);
135
- }
43
+ catch (e) {
44
+ return undefined;
136
45
  }
137
- // Leave alone, assume JSON primitive
138
- return obj;
139
46
  }
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qc29uLXJwYy9jb252ZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxhQUFhLE1BQU0sc0JBQXNCLENBQUM7QUFJakQ7Ozs7R0FJRztBQUNILFNBQVMsYUFBYSxDQUFDLEdBQVE7SUFDN0IsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDakIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ2hCLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNoQixNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQyxDQUFDLG1CQUFtQjtJQUM1RCxPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDN0MsSUFBSSxPQUFPLElBQUksMEJBQTBCLEVBQUUsQ0FBQztZQUMxQyw2RkFBNkY7WUFDN0YsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsS0FBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssQ0FBQztBQUM5QyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsR0FBUSxFQUFFLEVBQUU7SUFDOUMsT0FBTyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUU7UUFDdkMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxD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
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qc29uLXJwYy9jb252ZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFJaEM7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUksSUFBWSxFQUFFLE1BQWlCO0lBQ3BFLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQVcsRUFBRSxRQUFrQjtJQUMzRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQ25CLEdBQUcsRUFDSCxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNkLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUIsQ0FBQzthQUFNLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMvRCxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsQ0FBQzthQUFNLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUM3RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDckMsQ0FBQzthQUFNLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUM3RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDcEMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDLEVBQ0QsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDakIsQ0FBQztBQUNKLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsR0FBUSxFQUFFLFFBQWtCO0lBQzNELElBQUksQ0FBQztRQUNILE9BQU8sYUFBYSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDIn0=
@@ -1,9 +1,23 @@
1
+ import { z } from 'zod';
2
+ import { type ApiSchemaFor } from '../../schemas/index.js';
1
3
  /**
2
4
  * Contrived example for JSON RPC tests.
3
5
  */
4
6
  export declare class TestNote {
5
7
  private data;
6
8
  constructor(data: string);
9
+ static get schema(): z.ZodEffects<z.ZodObject<{
10
+ data: z.ZodString;
11
+ }, "strip", z.ZodTypeAny, {
12
+ data: string;
13
+ }, {
14
+ data: string;
15
+ }>, TestNote, {
16
+ data: string;
17
+ }>;
18
+ toJSON(): {
19
+ data: string;
20
+ };
7
21
  /**
8
22
  * Create a string representation of this class.
9
23
  * @returns The string representation.
@@ -16,13 +30,28 @@ export declare class TestNote {
16
30
  */
17
31
  static fromString(data: string): TestNote;
18
32
  }
33
+ export interface TestStateApi {
34
+ getNote: (index: number) => Promise<TestNote | undefined>;
35
+ getNotes: (limit?: number) => Promise<TestNote[]>;
36
+ getNotes2: (limit: bigint | undefined) => Promise<TestNote[]>;
37
+ getNotes3: (limit?: number) => Promise<TestNote[]>;
38
+ clear: () => Promise<void>;
39
+ addNotes: (notes: TestNote[]) => Promise<TestNote[]>;
40
+ fail: () => Promise<void>;
41
+ count: () => Promise<number>;
42
+ getStatus: () => Promise<{
43
+ status: string;
44
+ count: bigint;
45
+ }>;
46
+ getTuple(): Promise<[string, string | undefined, number]>;
47
+ }
19
48
  /**
20
49
  * Represents a simple state management for TestNote instances.
21
50
  * Provides functionality to get a note by index and add notes asynchronously.
22
51
  * Primarily used for testing JSON RPC-related functionalities.
23
52
  */
24
- export declare class TestState {
25
- private notes;
53
+ export declare class TestState implements TestStateApi {
54
+ notes: TestNote[];
26
55
  constructor(notes: TestNote[]);
27
56
  /**
28
57
  * Retrieve the TestNote instance at the specified index from the notes array.
@@ -32,7 +61,13 @@ export declare class TestState {
32
61
  * @param index - The index of the TestNote to be retrieved from the notes array.
33
62
  * @returns The TestNote instance corresponding to the given index.
34
63
  */
35
- getNote(index: number): TestNote;
64
+ getNote(index: number): Promise<TestNote>;
65
+ fail(): Promise<void>;
66
+ count(): Promise<number>;
67
+ getNotes(limit?: number): Promise<TestNote[]>;
68
+ getNotes2(limit: bigint | undefined): Promise<TestNote[]>;
69
+ getNotes3(limit?: number): Promise<TestNote[]>;
70
+ clear(): Promise<void>;
36
71
  /**
37
72
  * Add an array of TestNote instances to the current TestState's notes.
38
73
  * This function simulates asynchronous behavior by waiting for a duration
@@ -43,5 +78,12 @@ export declare class TestState {
43
78
  * @returns A Promise that resolves to an array of TestNote instances, including the newly added notes.
44
79
  */
45
80
  addNotes(notes: TestNote[]): Promise<TestNote[]>;
81
+ forceClear(): Promise<void>;
82
+ getStatus(): Promise<{
83
+ status: string;
84
+ count: bigint;
85
+ }>;
86
+ getTuple(): Promise<[string, string | undefined, number]>;
46
87
  }
88
+ export declare const TestStateSchema: ApiSchemaFor<TestStateApi>;
47
89
  //# sourceMappingURL=test_state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test_state.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/fixtures/test_state.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,QAAQ;IACP,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,MAAM;IAChC;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAGlB;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;CAG1C;AAED;;;;GAIG;AACH,qBAAa,SAAS;IACR,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,QAAQ,EAAE;IACrC;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAGhC;;;;;;;;OAQG;IACG,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAOvD"}
1
+ {"version":3,"file":"test_state.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/fixtures/test_state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,wBAAwB,CAAC;AAG9E;;GAEG;AACH,qBAAa,QAAQ;IACP,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,MAAM;IAEhC,MAAM,KAAK,MAAM;;;;;;;;OAEhB;IAED,MAAM;;;IAIN;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAGlB;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;CAG1C;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;IAC1D,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9D,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrD,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,SAAS,EAAE,MAAM,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5D,QAAQ,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;CAC3D;AAED;;;;GAIG;AACH,qBAAa,SAAU,YAAW,YAAY;IACzB,KAAK,EAAE,QAAQ,EAAE;gBAAjB,KAAK,EAAE,QAAQ,EAAE;IACpC;;;;;;;OAOG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAK/C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIf,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAKxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAK7C,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAKzD,SAAS,CAAC,KAAK,SAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAKzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;;;;;;;OAQG;IACG,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAQhD,UAAU;IAKV,SAAS,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAKvD,QAAQ,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC;CAIhE;AAED,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,YAAY,CAWtD,CAAC"}
@@ -1,3 +1,5 @@
1
+ import { z } from 'zod';
2
+ import { optional, schemas } from '../../schemas/index.js';
1
3
  import { sleep } from '../../sleep/index.js';
2
4
  /**
3
5
  * Contrived example for JSON RPC tests.
@@ -6,6 +8,12 @@ export class TestNote {
6
8
  constructor(data) {
7
9
  this.data = data;
8
10
  }
11
+ static get schema() {
12
+ return z.object({ data: z.string() }).transform(({ data }) => new TestNote(data));
13
+ }
14
+ toJSON() {
15
+ return { data: this.data };
16
+ }
9
17
  /**
10
18
  * Create a string representation of this class.
11
19
  * @returns The string representation.
@@ -39,9 +47,33 @@ export class TestState {
39
47
  * @param index - The index of the TestNote to be retrieved from the notes array.
40
48
  * @returns The TestNote instance corresponding to the given index.
41
49
  */
42
- getNote(index) {
50
+ async getNote(index) {
51
+ await sleep(0.1);
43
52
  return this.notes[index];
44
53
  }
54
+ fail() {
55
+ throw new Error('Test state failed');
56
+ }
57
+ async count() {
58
+ await sleep(0.1);
59
+ return this.notes.length;
60
+ }
61
+ async getNotes(limit) {
62
+ await sleep(0.1);
63
+ return limit ? this.notes.slice(0, limit) : this.notes;
64
+ }
65
+ async getNotes2(limit) {
66
+ await sleep(0.1);
67
+ return limit ? this.notes.slice(0, Number(limit)) : this.notes;
68
+ }
69
+ async getNotes3(limit = 1) {
70
+ await sleep(0.1);
71
+ return limit ? this.notes.slice(0, Number(limit)) : this.notes;
72
+ }
73
+ async clear() {
74
+ await sleep(0.1);
75
+ this.notes = [];
76
+ }
45
77
  /**
46
78
  * Add an array of TestNote instances to the current TestState's notes.
47
79
  * This function simulates asynchronous behavior by waiting for a duration
@@ -58,5 +90,29 @@ export class TestState {
58
90
  await sleep(notes.length);
59
91
  return this.notes;
60
92
  }
93
+ async forceClear() {
94
+ await sleep(0.1);
95
+ this.notes = [];
96
+ }
97
+ async getStatus() {
98
+ await sleep(0.1);
99
+ return { status: 'ok', count: BigInt(this.notes.length) };
100
+ }
101
+ async getTuple() {
102
+ await sleep(0.1);
103
+ return ['a', undefined, 1];
104
+ }
61
105
  }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uLXJwYy9maXh0dXJlcy90ZXN0X3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxRQUFRO0lBQ25CLFlBQW9CLElBQVk7UUFBWixTQUFJLEdBQUosSUFBSSxDQUFRO0lBQUcsQ0FBQztJQUNwQzs7O09BR0c7SUFDSCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFZO1FBQzVCLE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNGO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBQ3BCLFlBQW9CLEtBQWlCO1FBQWpCLFVBQUssR0FBTCxLQUFLLENBQVk7SUFBRyxDQUFDO0lBQ3pDOzs7Ozs7O09BT0c7SUFDSCxPQUFPLENBQUMsS0FBYTtRQUNuQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNEOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFpQjtRQUM5QixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUM7UUFDRCxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7Q0FDRiJ9
106
+ export const TestStateSchema = {
107
+ getNote: z.function().args(z.number()).returns(TestNote.schema.optional()),
108
+ getNotes: z.function().args(optional(schemas.Integer)).returns(z.array(TestNote.schema)),
109
+ getNotes2: z.function().args(optional(schemas.BigInt)).returns(z.array(TestNote.schema)),
110
+ getNotes3: z.function().args(optional(schemas.Integer)).returns(z.array(TestNote.schema)),
111
+ clear: z.function().returns(z.void()),
112
+ addNotes: z.function().args(z.array(TestNote.schema)).returns(z.array(TestNote.schema)),
113
+ fail: z.function().returns(z.void()),
114
+ count: z.function().returns(z.number()),
115
+ getStatus: z.function().returns(z.object({ status: z.string(), count: schemas.BigInt })),
116
+ getTuple: z.function().returns(z.tuple([z.string(), optional(z.string()), z.number()])),
117
+ };
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uLXJwYy9maXh0dXJlcy90ZXN0X3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsT0FBTyxFQUFxQixRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTdDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFDbkIsWUFBb0IsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7SUFBRyxDQUFDO0lBRXBDLE1BQU0sS0FBSyxNQUFNO1FBQ2YsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFZO1FBQzVCLE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNGO0FBZUQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBQ3BCLFlBQW1CLEtBQWlCO1FBQWpCLFVBQUssR0FBTCxLQUFLLENBQVk7SUFBRyxDQUFDO0lBQ3hDOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMs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QyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hGLFNBQVMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEYsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RixLQUFLLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckMsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkYsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BDLEtBQUssRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN2QyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDeEYsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztDQUN4RixDQUFDIn0=
@@ -1,3 +1,2 @@
1
- export { StringClassConverterInput, JsonClassConverterInput as ObjClassConverterInput, JsonEncodedClass, ClassConverter, } from './class_converter.js';
2
- export { JsonStringify } from './convert.js';
1
+ export { jsonStringify } from './convert.js';
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/json-rpc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,uBAAuB,IAAI,sBAAsB,EACjD,gBAAgB,EAChB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/json-rpc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -1,3 +1,2 @@
1
- export { ClassConverter, } from './class_converter.js';
2
- export { JsonStringify } from './convert.js';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvanNvbi1ycGMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLGNBQWMsR0FDZixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUMifQ==
1
+ export { jsonStringify } from './convert.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvanNvbi1ycGMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"js_utils.d.ts","sourceRoot":"","sources":["../../src/json-rpc/js_utils.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,cAAc,QAAS,GAAG,gBAAgB,MAAM,YACJ,CAAC;AAE1D;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAIrD"}
1
+ {"version":3,"file":"js_utils.d.ts","sourceRoot":"","sources":["../../src/json-rpc/js_utils.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,eAAO,MAAM,cAAc,QAAS,GAAG,gBAAgB,MAAM,YACJ,CAAC;AAE1D;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAIrD"}
@@ -1,4 +1,5 @@
1
1
  // Make sure this property was not inherited
2
+ // TODO(palla): Delete this file
2
3
  /**
3
4
  * Does this own the property?
4
5
  * @param obj - An object.
@@ -15,4 +16,4 @@ export function assert(x, err) {
15
16
  throw new Error(err);
16
17
  }
17
18
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNfdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvanNvbi1ycGMvanNfdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNENBQTRDO0FBRTVDOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFRLEVBQUUsWUFBb0IsRUFBRSxFQUFFLENBQy9ELE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFFMUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQUMsQ0FBTSxFQUFFLEdBQVc7SUFDeEMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1AsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0FBQ0gsQ0FBQyJ9
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNfdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvanNvbi1ycGMvanNfdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNENBQTRDO0FBQzVDLGdDQUFnQztBQUVoQzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBUSxFQUFFLFlBQW9CLEVBQUUsRUFBRSxDQUMvRCxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBRTFEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFDLENBQU0sRUFBRSxHQUFXO0lBQ3hDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNQLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztBQUNILENBQUMifQ==
@@ -1,3 +1,2 @@
1
- export * from './json_rpc_server.js';
2
- export { JsonProxy } from './json_proxy.js';
1
+ export * from './safe_json_rpc_server.js';
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC"}
@@ -1,3 +1,2 @@
1
- export * from './json_rpc_server.js';
2
- export { JsonProxy } from './json_proxy.js';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvanNvbi1ycGMvc2VydmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDIn0=
1
+ export * from './safe_json_rpc_server.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvanNvbi1ycGMvc2VydmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkJBQTJCLENBQUMifQ==
@@ -0,0 +1,112 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import http from 'http';
3
+ import Koa from 'koa';
4
+ import Router from 'koa-router';
5
+ import { type ApiSchemaFor } from '../../schemas/index.js';
6
+ export declare class SafeJsonRpcServer {
7
+ /** The proxy object to delegate requests to. */
8
+ private readonly proxy;
9
+ /** Health check function */
10
+ private readonly healthCheck;
11
+ /** Logger */
12
+ private log;
13
+ /**
14
+ * The HTTP server accepting remote requests.
15
+ * This member field is initialized when the server is started.
16
+ */
17
+ private httpServer?;
18
+ constructor(
19
+ /** The proxy object to delegate requests to. */
20
+ proxy: Proxy,
21
+ /** Health check function */
22
+ healthCheck?: StatusCheckFn,
23
+ /** Logger */
24
+ log?: import("../../log/logger.js").Logger);
25
+ isHealthy(): boolean | Promise<boolean>;
26
+ /**
27
+ * Get an express app object.
28
+ * @param prefix - Our server prefix.
29
+ * @returns The app object.
30
+ */
31
+ getApp(prefix?: string): Koa<Koa.DefaultState, Koa.DefaultContext>;
32
+ /**
33
+ * Get a router object wrapping our RPC class.
34
+ * @param prefix - The server prefix.
35
+ * @returns The router object.
36
+ */
37
+ private getRouter;
38
+ /**
39
+ * Start this server with koa.
40
+ * @param port - Port number.
41
+ * @param prefix - Prefix string.
42
+ */
43
+ start(port: number, prefix?: string): void;
44
+ /**
45
+ * Stops the HTTP server
46
+ */
47
+ stop(): Promise<void>;
48
+ /**
49
+ * Explicitly calls an RPC method.
50
+ * @param methodName - The RPC method.
51
+ * @param jsonParams - The RPC parameters.
52
+ * @returns The remote result.
53
+ */
54
+ call(methodName: string, jsonParams?: any[]): Promise<any>;
55
+ }
56
+ export type StatusCheckFn = () => boolean | Promise<boolean>;
57
+ interface Proxy {
58
+ hasMethod(methodName: string): boolean;
59
+ call(methodName: string, jsonParams?: any[]): Promise<any>;
60
+ }
61
+ /**
62
+ * Forwards calls to a handler. Relies on a schema definition to validate and convert inputs
63
+ * before forwarding calls, and then converts outputs into JSON using default conversions.
64
+ */
65
+ export declare class SafeJsonProxy<T extends object = any> implements Proxy {
66
+ private handler;
67
+ private log;
68
+ private schema;
69
+ constructor(handler: T, schema: ApiSchemaFor<T>);
70
+ /**
71
+ * Call an RPC method.
72
+ * @param methodName - The RPC method.
73
+ * @param jsonParams - The RPC parameters.
74
+ * @returns The remote result.
75
+ */
76
+ call(methodName: string, jsonParams?: any[]): Promise<any>;
77
+ hasMethod(methodName: string): boolean;
78
+ }
79
+ export type NamespacedApiHandlers = Record<string, ApiHandler>;
80
+ export type ApiHandler<T extends object = any> = [T, ApiSchemaFor<T>, StatusCheckFn?];
81
+ export declare function makeHandler<T extends object>(handler: T, schema: ApiSchemaFor<T>): ApiHandler<T>;
82
+ /**
83
+ * Creates a single SafeJsonRpcServer from multiple handlers.
84
+ * @param servers - List of handlers to be combined.
85
+ * @returns A single JsonRpcServer with namespaced methods.
86
+ */
87
+ export declare function createNamespacedSafeJsonRpcServer(handlers: NamespacedApiHandlers, log?: import("../../log/logger.js").Logger): SafeJsonRpcServer;
88
+ export declare function createSafeJsonRpcServer<T extends object = any>(handler: T, schema: ApiSchemaFor<T>, healthCheck?: StatusCheckFn): SafeJsonRpcServer;
89
+ /**
90
+ * Creates a router for handling a plain status request that will return 200 status when running.
91
+ * @param getCurrentStatus - List of health check functions to run.
92
+ * @param apiPrefix - The prefix to use for all api requests
93
+ * @returns - The router for handling status requests.
94
+ */
95
+ export declare function createStatusRouter(getCurrentStatus: StatusCheckFn, apiPrefix?: string): Router<any, {}>;
96
+ /**
97
+ * Wraps a JsonRpcServer in a nodejs http server and starts it.
98
+ * Installs a status router that calls to the isHealthy method to the server.
99
+ * Returns once starts listening unless noWait is set.
100
+ * @returns A running http server.
101
+ */
102
+ export declare function startHttpRpcServer(rpcServer: Pick<SafeJsonRpcServer, 'getApp' | 'isHealthy'>, options?: {
103
+ host?: string;
104
+ port?: number | string;
105
+ apiPrefix?: string;
106
+ timeoutMs?: number;
107
+ noWait?: boolean;
108
+ }): Promise<http.Server & {
109
+ port: number;
110
+ }>;
111
+ export {};
112
+ //# sourceMappingURL=safe_json_rpc_server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe_json_rpc_server.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/server/safe_json_rpc_server.ts"],"names":[],"mappings":"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"}