@aztec/foundation 0.62.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.
- package/dest/abi/abi.d.ts +708 -228
- package/dest/abi/abi.d.ts.map +1 -1
- package/dest/abi/abi.js +92 -8
- package/dest/abi/encoder.d.ts.map +1 -1
- package/dest/abi/encoder.js +4 -1
- package/dest/abi/event_selector.d.ts +4 -0
- package/dest/abi/event_selector.d.ts.map +1 -1
- package/dest/abi/event_selector.js +7 -1
- package/dest/aztec-address/index.d.ts +19 -3
- package/dest/aztec-address/index.d.ts.map +1 -1
- package/dest/aztec-address/index.js +43 -14
- package/dest/buffer/buffer32.d.ts +1 -0
- package/dest/buffer/buffer32.d.ts.map +1 -1
- package/dest/buffer/buffer32.js +4 -1
- package/dest/config/env_var.d.ts +1 -1
- package/dest/config/env_var.d.ts.map +1 -1
- package/dest/crypto/index.d.ts +1 -0
- package/dest/crypto/index.d.ts.map +1 -1
- package/dest/crypto/index.js +2 -1
- package/dest/crypto/keys/index.d.ts +5 -0
- package/dest/crypto/keys/index.d.ts.map +1 -0
- package/dest/crypto/keys/index.js +8 -0
- package/dest/eth-address/index.d.ts +2 -6
- package/dest/eth-address/index.d.ts.map +1 -1
- package/dest/eth-address/index.js +3 -7
- package/dest/eth-signature/eth_signature.d.ts +2 -0
- package/dest/eth-signature/eth_signature.d.ts.map +1 -1
- package/dest/eth-signature/eth_signature.js +7 -1
- package/dest/fields/fields.d.ts +1 -3
- package/dest/fields/fields.d.ts.map +1 -1
- package/dest/fields/fields.js +2 -1
- package/dest/json-rpc/client/fetch.d.ts +21 -0
- package/dest/json-rpc/client/fetch.d.ts.map +1 -0
- package/dest/json-rpc/client/fetch.js +66 -0
- package/dest/json-rpc/client/index.d.ts +2 -1
- package/dest/json-rpc/client/index.d.ts.map +1 -1
- package/dest/json-rpc/client/index.js +3 -2
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts +13 -0
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -0
- package/dest/json-rpc/client/safe_json_rpc_client.js +45 -0
- package/dest/json-rpc/convert.d.ts +11 -19
- package/dest/json-rpc/convert.d.ts.map +1 -1
- package/dest/json-rpc/convert.js +30 -123
- package/dest/json-rpc/fixtures/test_state.d.ts +45 -3
- package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
- package/dest/json-rpc/fixtures/test_state.js +58 -2
- package/dest/json-rpc/index.d.ts +1 -2
- package/dest/json-rpc/index.d.ts.map +1 -1
- package/dest/json-rpc/index.js +2 -3
- package/dest/json-rpc/js_utils.d.ts.map +1 -1
- package/dest/json-rpc/js_utils.js +2 -1
- package/dest/json-rpc/server/index.d.ts +1 -2
- package/dest/json-rpc/server/index.d.ts.map +1 -1
- package/dest/json-rpc/server/index.js +2 -3
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts +112 -0
- package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -0
- package/dest/json-rpc/server/safe_json_rpc_server.js +275 -0
- package/dest/json-rpc/test/index.d.ts +2 -0
- package/dest/json-rpc/test/index.d.ts.map +1 -0
- package/dest/json-rpc/test/index.js +2 -0
- package/dest/json-rpc/test/integration.d.ts +13 -0
- package/dest/json-rpc/test/integration.d.ts.map +1 -0
- package/dest/json-rpc/test/integration.js +12 -0
- package/dest/log/logger.d.ts.map +1 -1
- package/dest/log/logger.js +2 -2
- package/dest/schemas/api.d.ts +21 -0
- package/dest/schemas/api.d.ts.map +1 -0
- package/dest/schemas/api.js +8 -0
- package/dest/schemas/index.d.ts +6 -0
- package/dest/schemas/index.d.ts.map +1 -0
- package/dest/schemas/index.js +6 -0
- package/dest/schemas/parse.d.ts +9 -0
- package/dest/schemas/parse.d.ts.map +1 -0
- package/dest/schemas/parse.js +26 -0
- package/dest/schemas/schemas.d.ts +79 -0
- package/dest/schemas/schemas.d.ts.map +1 -0
- package/dest/schemas/schemas.js +87 -0
- package/dest/schemas/types.d.ts +3 -0
- package/dest/schemas/types.d.ts.map +1 -0
- package/dest/schemas/types.js +2 -0
- package/dest/schemas/utils.d.ts +40 -0
- package/dest/schemas/utils.d.ts.map +1 -0
- package/dest/schemas/utils.js +56 -0
- package/dest/string/index.d.ts +7 -0
- package/dest/string/index.d.ts.map +1 -0
- package/dest/string/index.js +13 -0
- package/dest/types/index.d.ts +2 -0
- package/dest/types/index.d.ts.map +1 -1
- package/dest/validation/index.d.ts +6 -0
- package/dest/validation/index.d.ts.map +1 -1
- package/dest/validation/index.js +11 -1
- package/package.json +7 -4
- package/src/abi/abi.ts +203 -233
- package/src/abi/encoder.ts +2 -0
- package/src/abi/event_selector.ts +7 -0
- package/src/aztec-address/index.ts +64 -18
- package/src/buffer/buffer32.ts +5 -0
- package/src/config/env_var.ts +18 -8
- package/src/crypto/index.ts +1 -0
- package/src/crypto/keys/index.ts +9 -0
- package/src/eth-address/index.ts +2 -6
- package/src/eth-signature/eth_signature.ts +8 -0
- package/src/fields/fields.ts +2 -3
- package/src/json-rpc/client/fetch.ts +81 -0
- package/src/json-rpc/client/index.ts +2 -1
- package/src/json-rpc/client/safe_json_rpc_client.ts +61 -0
- package/src/json-rpc/convert.ts +29 -142
- package/src/json-rpc/fixtures/test_state.ts +87 -3
- package/src/json-rpc/index.ts +1 -8
- package/src/json-rpc/js_utils.ts +1 -0
- package/src/json-rpc/server/index.ts +1 -2
- package/src/json-rpc/server/safe_json_rpc_server.ts +336 -0
- package/src/json-rpc/test/index.ts +1 -0
- package/src/json-rpc/test/integration.ts +24 -0
- package/src/log/logger.ts +2 -1
- package/src/schemas/api.ts +47 -0
- package/src/schemas/index.ts +5 -0
- package/src/schemas/parse.ts +29 -0
- package/src/schemas/schemas.ts +111 -0
- package/src/schemas/types.ts +3 -0
- package/src/schemas/utils.ts +85 -0
- package/src/string/index.ts +15 -0
- package/src/types/index.ts +3 -0
- package/src/validation/index.ts +11 -0
- package/dest/json-rpc/class_converter.d.ts +0 -144
- package/dest/json-rpc/class_converter.d.ts.map +0 -1
- package/dest/json-rpc/class_converter.js +0 -102
- package/dest/json-rpc/client/json_rpc_client.d.ts +0 -35
- package/dest/json-rpc/client/json_rpc_client.d.ts.map +0 -1
- package/dest/json-rpc/client/json_rpc_client.js +0 -117
- package/dest/json-rpc/server/json_proxy.d.ts +0 -30
- package/dest/json-rpc/server/json_proxy.d.ts.map +0 -1
- package/dest/json-rpc/server/json_proxy.js +0 -46
- package/dest/json-rpc/server/json_rpc_server.d.ts +0 -102
- package/dest/json-rpc/server/json_rpc_server.d.ts.map +0 -1
- package/dest/json-rpc/server/json_rpc_server.js +0 -265
- package/src/json-rpc/class_converter.ts +0 -213
- package/src/json-rpc/client/json_rpc_client.ts +0 -148
- package/src/json-rpc/server/json_proxy.ts +0 -60
- package/src/json-rpc/server/json_rpc_server.ts +0 -332
package/dest/json-rpc/convert.js
CHANGED
|
@@ -1,140 +1,47 @@
|
|
|
1
1
|
import { Buffer } from 'buffer';
|
|
2
|
-
import cloneDeepWith from 'lodash.clonedeepwith';
|
|
3
2
|
/**
|
|
4
|
-
*
|
|
5
|
-
* @param
|
|
6
|
-
* @
|
|
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
|
|
9
|
-
|
|
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
|
-
*
|
|
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
|
|
43
|
-
return JSON.stringify(obj, (
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
21
|
+
else if (typeof value === 'object' && Buffer.isBuffer(value)) {
|
|
22
|
+
return value.toString('base64');
|
|
77
23
|
}
|
|
78
|
-
|
|
79
|
-
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
-
*
|
|
96
|
-
*
|
|
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
|
|
101
|
-
|
|
102
|
-
|
|
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
|
-
|
|
109
|
-
return
|
|
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,
|
|
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
|
-
|
|
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":"
|
|
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
|
-
|
|
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=
|
package/dest/json-rpc/index.d.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export {
|
|
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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/json-rpc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
package/dest/json-rpc/index.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export {
|
|
2
|
-
|
|
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":"
|
|
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,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNfdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvanNvbi1ycGMvanNfdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNENBQTRDO0FBQzVDLGdDQUFnQztBQUVoQzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBUSxFQUFFLFlBQW9CLEVBQUUsRUFBRSxDQUMvRCxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBRTFEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFDLENBQU0sRUFBRSxHQUFXO0lBQ3hDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNQLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztBQUNILENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/server/index.ts"],"names":[],"mappings":"AAAA,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 './
|
|
2
|
-
|
|
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":";AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,OAAO,MAAM,MAAM,YAAY,CAAC;AAOhC,OAAO,EAAkB,KAAK,YAAY,EAAuC,MAAM,wBAAwB,CAAC;AAIhH,qBAAa,iBAAiB;IAQ1B,gDAAgD;IAChD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,4BAA4B;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,aAAa;IACb,OAAO,CAAC,GAAG;IAZb;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAC,CAAc;;IAG/B,gDAAgD;IAC/B,KAAK,EAAE,KAAK;IAC7B,4BAA4B;IACX,WAAW,GAAE,aAA0B;IACxD,aAAa;IACL,GAAG,uCAAuC;IAG7C,SAAS,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9C;;;;OAIG;IACI,MAAM,CAAC,MAAM,SAAK;IAmDzB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAmBjB;;;;OAIG;IACI,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,IAAI;IAS7C;;OAEG;IACI,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B;;;;;OAKG;IACU,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,GAAE,GAAG,EAAO;CAG7D;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAE7D,UAAU,KAAK;IACb,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IACvC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CAC5D;AAED;;;GAGG;AACH,qBAAa,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,GAAG,CAAE,YAAW,KAAK;IAIrD,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,GAAG,CAAuC;IAClD,OAAO,CAAC,MAAM,CAAY;gBAEN,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAIvD;;;;;OAKG;IACU,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,GAAE,GAAG,EAAO;IAarD,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;CAG9C;AA0BD,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAE/D,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;AAEtF,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAEhG;AAqBD;;;;GAIG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,qBAAqB,EAC/B,GAAG,uCAAuC,GACzC,iBAAiB,CAInB;AAED,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,MAAM,GAAG,GAAG,EAC5D,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EACvB,WAAW,CAAC,EAAE,aAAa,qBAI5B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,gBAAgB,EAAE,aAAa,EAAE,SAAS,SAAK,mBAajF;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,GAAG,WAAW,CAAC,EAC1D,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CACb,GACL,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAsBzC"}
|