@aztec/foundation 0.62.0 → 0.63.1
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
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import cors from '@koa/cors';
|
|
2
|
+
import http from 'http';
|
|
3
|
+
import Koa from 'koa';
|
|
4
|
+
import bodyParser from 'koa-bodyparser';
|
|
5
|
+
import compress from 'koa-compress';
|
|
6
|
+
import Router from 'koa-router';
|
|
7
|
+
import { format, inspect } from 'util';
|
|
8
|
+
import { ZodError } from 'zod';
|
|
9
|
+
import { createDebugLogger } from '../../log/index.js';
|
|
10
|
+
import { promiseWithResolvers } from '../../promise/utils.js';
|
|
11
|
+
import { parseWithOptionals, schemaHasMethod } from '../../schemas/index.js';
|
|
12
|
+
import { jsonStringify } from '../convert.js';
|
|
13
|
+
import { assert } from '../js_utils.js';
|
|
14
|
+
export class SafeJsonRpcServer {
|
|
15
|
+
constructor(
|
|
16
|
+
/** The proxy object to delegate requests to. */
|
|
17
|
+
proxy,
|
|
18
|
+
/** Health check function */
|
|
19
|
+
healthCheck = () => true,
|
|
20
|
+
/** Logger */
|
|
21
|
+
log = createDebugLogger('json-rpc:server')) {
|
|
22
|
+
this.proxy = proxy;
|
|
23
|
+
this.healthCheck = healthCheck;
|
|
24
|
+
this.log = log;
|
|
25
|
+
}
|
|
26
|
+
isHealthy() {
|
|
27
|
+
return this.healthCheck();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get an express app object.
|
|
31
|
+
* @param prefix - Our server prefix.
|
|
32
|
+
* @returns The app object.
|
|
33
|
+
*/
|
|
34
|
+
getApp(prefix = '') {
|
|
35
|
+
const router = this.getRouter(prefix);
|
|
36
|
+
const exceptionHandler = async (ctx, next) => {
|
|
37
|
+
try {
|
|
38
|
+
await next();
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
const method = ctx.request.body?.method ?? 'unknown';
|
|
42
|
+
this.log.warn(`Error in JSON RPC server call ${method}: ${inspect(err)}`);
|
|
43
|
+
if (err instanceof SyntaxError) {
|
|
44
|
+
ctx.status = 400;
|
|
45
|
+
ctx.body = { jsonrpc: '2.0', id: null, error: { code: -32700, message: `Parse error: ${err.message}` } };
|
|
46
|
+
}
|
|
47
|
+
else if (err instanceof ZodError) {
|
|
48
|
+
const message = err.issues.map(e => `${e.message} (${e.path.join('.')})`).join('. ') || 'Validation error';
|
|
49
|
+
ctx.status = 400;
|
|
50
|
+
ctx.body = { jsonrpc: '2.0', id: null, error: { code: -32701, message } };
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
ctx.status = 500;
|
|
54
|
+
ctx.body = { jsonrpc: '2.0', id: null, error: { code: -32600, message: err.message ?? 'Internal error' } };
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const jsonResponse = async (ctx, next) => {
|
|
59
|
+
try {
|
|
60
|
+
await next();
|
|
61
|
+
if (ctx.body && typeof ctx.body === 'object') {
|
|
62
|
+
ctx.body = jsonStringify(ctx.body);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
ctx.status = 500;
|
|
67
|
+
ctx.body = { jsonrpc: '2.0', error: { code: -32700, message: `Unable to serialize response: ${err.message}` } };
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
const app = new Koa();
|
|
71
|
+
app.on('error', error => {
|
|
72
|
+
this.log.error(`Error on API handler: ${error}`);
|
|
73
|
+
});
|
|
74
|
+
app.use(compress({ br: false }));
|
|
75
|
+
app.use(jsonResponse);
|
|
76
|
+
app.use(exceptionHandler);
|
|
77
|
+
app.use(bodyParser({ jsonLimit: '50mb', enableTypes: ['json'], detectJSON: () => true }));
|
|
78
|
+
app.use(cors());
|
|
79
|
+
app.use(router.routes());
|
|
80
|
+
app.use(router.allowedMethods());
|
|
81
|
+
return app;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get a router object wrapping our RPC class.
|
|
85
|
+
* @param prefix - The server prefix.
|
|
86
|
+
* @returns The router object.
|
|
87
|
+
*/
|
|
88
|
+
getRouter(prefix) {
|
|
89
|
+
const router = new Router({ prefix });
|
|
90
|
+
// "JSON RPC mode" where a single endpoint is used and the method is given in the request body
|
|
91
|
+
router.post('/', async (ctx) => {
|
|
92
|
+
const { params = [], jsonrpc, id, method } = ctx.request.body;
|
|
93
|
+
// Fail if not a registered function in the proxy
|
|
94
|
+
if (typeof method !== 'string' || method === 'constructor' || !this.proxy.hasMethod(method)) {
|
|
95
|
+
ctx.status = 400;
|
|
96
|
+
ctx.body = { jsonrpc, id, error: { code: -32601, message: `Method not found: ${method}` } };
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
const result = await this.proxy.call(method, params);
|
|
100
|
+
ctx.body = { jsonrpc, id, result };
|
|
101
|
+
ctx.status = 200;
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
return router;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Start this server with koa.
|
|
108
|
+
* @param port - Port number.
|
|
109
|
+
* @param prefix - Prefix string.
|
|
110
|
+
*/
|
|
111
|
+
start(port, prefix = '') {
|
|
112
|
+
if (this.httpServer) {
|
|
113
|
+
throw new Error('Server is already listening');
|
|
114
|
+
}
|
|
115
|
+
this.httpServer = http.createServer(this.getApp(prefix).callback());
|
|
116
|
+
this.httpServer.listen(port);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Stops the HTTP server
|
|
120
|
+
*/
|
|
121
|
+
stop() {
|
|
122
|
+
if (!this.httpServer) {
|
|
123
|
+
return Promise.resolve();
|
|
124
|
+
}
|
|
125
|
+
const { promise, resolve, reject } = promiseWithResolvers();
|
|
126
|
+
this.httpServer.close(err => {
|
|
127
|
+
if (err) {
|
|
128
|
+
reject(err);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
resolve();
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
return promise;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Explicitly calls an RPC method.
|
|
138
|
+
* @param methodName - The RPC method.
|
|
139
|
+
* @param jsonParams - The RPC parameters.
|
|
140
|
+
* @returns The remote result.
|
|
141
|
+
*/
|
|
142
|
+
async call(methodName, jsonParams = []) {
|
|
143
|
+
return await this.proxy.call(methodName, jsonParams);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Forwards calls to a handler. Relies on a schema definition to validate and convert inputs
|
|
148
|
+
* before forwarding calls, and then converts outputs into JSON using default conversions.
|
|
149
|
+
*/
|
|
150
|
+
export class SafeJsonProxy {
|
|
151
|
+
constructor(handler, schema) {
|
|
152
|
+
this.handler = handler;
|
|
153
|
+
this.log = createDebugLogger('json-rpc:proxy');
|
|
154
|
+
this.schema = schema;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Call an RPC method.
|
|
158
|
+
* @param methodName - The RPC method.
|
|
159
|
+
* @param jsonParams - The RPC parameters.
|
|
160
|
+
* @returns The remote result.
|
|
161
|
+
*/
|
|
162
|
+
async call(methodName, jsonParams = []) {
|
|
163
|
+
this.log.debug(format(`request`, methodName, jsonParams));
|
|
164
|
+
assert(Array.isArray(jsonParams), `Params to ${methodName} is not an array: ${jsonParams}`);
|
|
165
|
+
assert(schemaHasMethod(this.schema, methodName), `Method ${methodName} not found in schema`);
|
|
166
|
+
const method = this.handler[methodName];
|
|
167
|
+
assert(typeof method === 'function', `Method ${methodName} is not a function`);
|
|
168
|
+
const args = parseWithOptionals(jsonParams, this.schema[methodName].parameters());
|
|
169
|
+
const ret = await method.apply(this.handler, args);
|
|
170
|
+
this.log.debug(format('response', methodName, ret));
|
|
171
|
+
return ret;
|
|
172
|
+
}
|
|
173
|
+
hasMethod(methodName) {
|
|
174
|
+
return schemaHasMethod(this.schema, methodName) && typeof this.handler[methodName] === 'function';
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
class NamespacedSafeJsonProxy {
|
|
178
|
+
constructor(handlers) {
|
|
179
|
+
this.proxies = {};
|
|
180
|
+
for (const [namespace, [handler, schema]] of Object.entries(handlers)) {
|
|
181
|
+
this.proxies[namespace] = new SafeJsonProxy(handler, schema);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
call(namespacedMethodName, jsonParams = []) {
|
|
185
|
+
const [namespace, methodName] = namespacedMethodName.split('_', 2);
|
|
186
|
+
assert(namespace && methodName, `Invalid namespaced method name: ${namespacedMethodName}`);
|
|
187
|
+
const handler = this.proxies[namespace];
|
|
188
|
+
assert(handler, `Namespace not found: ${namespace}`);
|
|
189
|
+
return handler.call(methodName, jsonParams);
|
|
190
|
+
}
|
|
191
|
+
hasMethod(namespacedMethodName) {
|
|
192
|
+
const [namespace, methodName] = namespacedMethodName.split('_', 2);
|
|
193
|
+
const handler = this.proxies[namespace];
|
|
194
|
+
return handler?.hasMethod(methodName);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
export function makeHandler(handler, schema) {
|
|
198
|
+
return [handler, schema];
|
|
199
|
+
}
|
|
200
|
+
function makeAggregateHealthcheck(namedHandlers, log) {
|
|
201
|
+
return async () => {
|
|
202
|
+
try {
|
|
203
|
+
const results = await Promise.all(Object.entries(namedHandlers).map(([name, [, , healthCheck]]) => [name, healthCheck ? healthCheck() : true]));
|
|
204
|
+
const failed = results.filter(([_, result]) => !result);
|
|
205
|
+
if (failed.length > 0) {
|
|
206
|
+
log?.warn(`Health check failed for ${failed.map(([name]) => name).join(', ')}`);
|
|
207
|
+
return false;
|
|
208
|
+
}
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
212
|
+
log?.error(`Error during health check`, err);
|
|
213
|
+
return false;
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Creates a single SafeJsonRpcServer from multiple handlers.
|
|
219
|
+
* @param servers - List of handlers to be combined.
|
|
220
|
+
* @returns A single JsonRpcServer with namespaced methods.
|
|
221
|
+
*/
|
|
222
|
+
export function createNamespacedSafeJsonRpcServer(handlers, log = createDebugLogger('json-rpc:server')) {
|
|
223
|
+
const proxy = new NamespacedSafeJsonProxy(handlers);
|
|
224
|
+
const healthCheck = makeAggregateHealthcheck(handlers, log);
|
|
225
|
+
return new SafeJsonRpcServer(proxy, healthCheck, log);
|
|
226
|
+
}
|
|
227
|
+
export function createSafeJsonRpcServer(handler, schema, healthCheck) {
|
|
228
|
+
const proxy = new SafeJsonProxy(handler, schema);
|
|
229
|
+
return new SafeJsonRpcServer(proxy, healthCheck);
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Creates a router for handling a plain status request that will return 200 status when running.
|
|
233
|
+
* @param getCurrentStatus - List of health check functions to run.
|
|
234
|
+
* @param apiPrefix - The prefix to use for all api requests
|
|
235
|
+
* @returns - The router for handling status requests.
|
|
236
|
+
*/
|
|
237
|
+
export function createStatusRouter(getCurrentStatus, apiPrefix = '') {
|
|
238
|
+
const router = new Router({ prefix: `${apiPrefix}` });
|
|
239
|
+
router.get('/status', async (ctx) => {
|
|
240
|
+
let ok;
|
|
241
|
+
try {
|
|
242
|
+
ok = (await getCurrentStatus()) === true;
|
|
243
|
+
}
|
|
244
|
+
catch (err) {
|
|
245
|
+
ok = false;
|
|
246
|
+
}
|
|
247
|
+
ctx.status = ok ? 200 : 500;
|
|
248
|
+
});
|
|
249
|
+
return router;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Wraps a JsonRpcServer in a nodejs http server and starts it.
|
|
253
|
+
* Installs a status router that calls to the isHealthy method to the server.
|
|
254
|
+
* Returns once starts listening unless noWait is set.
|
|
255
|
+
* @returns A running http server.
|
|
256
|
+
*/
|
|
257
|
+
export async function startHttpRpcServer(rpcServer, options = {}) {
|
|
258
|
+
const app = rpcServer.getApp(options.apiPrefix);
|
|
259
|
+
const statusRouter = createStatusRouter(rpcServer.isHealthy.bind(rpcServer), options.apiPrefix);
|
|
260
|
+
app.use(statusRouter.routes()).use(statusRouter.allowedMethods());
|
|
261
|
+
const httpServer = http.createServer(app.callback());
|
|
262
|
+
if (options.timeoutMs) {
|
|
263
|
+
httpServer.timeout = options.timeoutMs;
|
|
264
|
+
}
|
|
265
|
+
const { promise, resolve } = promiseWithResolvers();
|
|
266
|
+
const listenPort = options.port ? (typeof options.port === 'string' ? parseInt(options.port) : options.port) : 0;
|
|
267
|
+
httpServer.listen(listenPort, options.host, () => resolve());
|
|
268
|
+
// Wait until listen callback is called
|
|
269
|
+
if (!options.noWait) {
|
|
270
|
+
await promise;
|
|
271
|
+
}
|
|
272
|
+
const port = httpServer.address().port;
|
|
273
|
+
return Object.assign(httpServer, { port });
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZV9qc29uX3JwY19zZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvanNvbi1ycGMvc2VydmVyL3NhZmVfanNvbl9ycGNfc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQ3RCLE9BQU8sVUFBVSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sUUFBUSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLE1BQU0sTUFBTSxZQUFZLENBQUM7QUFFaEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUUvQixPQUFPLEVBQW9CLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFxQyxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxNQUFNLE9BQU8saUJBQWlCO0lBTzVCO0lBQ0UsZ0RBQWdEO0lBQy9CLEtBQVk7SUFDN0IsNEJBQTRCO0lBQ1gsY0FBNkIsR0FBRyxFQUFFLENBQUMsSUFBSTtJQUN4RCxhQUFhO0lBQ0wsTUFBTSxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQztRQUpqQyxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBRVosZ0JBQVcsR0FBWCxXQUFXLENBQTRCO1FBRWhELFFBQUcsR0FBSCxHQUFHLENBQXVDO0lBQ2pELENBQUM7SUFFRyxT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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { createJsonRpcTestSetup } from './integration.js';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvanNvbi1ycGMvdGVzdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQTJCLE1BQU0sa0JBQWtCLENBQUMifQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import type http from 'http';
|
|
3
|
+
import { type ApiSchemaFor } from '../../schemas/api.js';
|
|
4
|
+
import { type SafeJsonRpcServer } from '../server/safe_json_rpc_server.js';
|
|
5
|
+
export type JsonRpcTestContext<T extends object> = {
|
|
6
|
+
server: SafeJsonRpcServer;
|
|
7
|
+
client: T;
|
|
8
|
+
httpServer: http.Server & {
|
|
9
|
+
port: number;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
export declare function createJsonRpcTestSetup<T extends object>(handler: T, schema: ApiSchemaFor<T>): Promise<JsonRpcTestContext<T>>;
|
|
13
|
+
//# sourceMappingURL=integration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/test/integration.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD,OAAO,EAAE,KAAK,iBAAiB,EAA2B,MAAM,mCAAmC,CAAC;AAEpG,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,IAAI;IACjD,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,CAAC,CAAC;IACV,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C,CAAC;AAEF,wBAAsB,sBAAsB,CAAC,CAAC,SAAS,MAAM,EAC3D,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GACtB,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAMhC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { makeFetch } from '../client/fetch.js';
|
|
2
|
+
import { createSafeJsonRpcClient } from '../client/safe_json_rpc_client.js';
|
|
3
|
+
import { startHttpRpcServer } from '../server/safe_json_rpc_server.js';
|
|
4
|
+
import { createSafeJsonRpcServer } from '../server/safe_json_rpc_server.js';
|
|
5
|
+
export async function createJsonRpcTestSetup(handler, schema) {
|
|
6
|
+
const server = createSafeJsonRpcServer(handler, schema);
|
|
7
|
+
const httpServer = await startHttpRpcServer(server, { host: '127.0.0.1' });
|
|
8
|
+
const noRetryFetch = makeFetch([], true);
|
|
9
|
+
const client = createSafeJsonRpcClient(`http://127.0.0.1:${httpServer.port}`, schema, false, false, noRetryFetch);
|
|
10
|
+
return { server, client, httpServer };
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvanNvbi1ycGMvdGVzdC9pbnRlZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUEwQix1QkFBdUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBUXBHLE1BQU0sQ0FBQyxLQUFLLFVBQVUsc0JBQXNCLENBQzFDLE9BQVUsRUFDVixNQUF1QjtJQUV2QixNQUFNLE1BQU0sR0FBRyx1QkFBdUIsQ0FBSSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMzRSxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sTUFBTSxHQUFHLHVCQUF1QixDQUFJLG9CQUFvQixVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDckgsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUM7QUFDeEMsQ0FBQyJ9
|
package/dest/log/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/log/logger.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEvD,QAAA,MAAM,SAAS,kEAAmE,CAAC;AAEnF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/log/logger.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEvD,QAAA,MAAM,SAAS,kEAAmE,CAAC;AAEnF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAUlD,eAAO,IAAI,YAAY,4DAAgB,CAAC;AAqBxC,oDAAoD;AACpD,KAAK,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AAE/E;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;KAAG,CAAC,IAAI,QAAQ,GAAG,KAAK;CAAE,GAAG;IAA4B,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC;AAElG;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC;;;;;;;;;GASG;AAEH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAqB3D;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,GAAG,WAAW,CActG;AAED,sCAAsC;AACtC,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AAInG;;;GAGG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,UAAU,QAExC;AAED,mCAAmC;AACnC,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,QAEvC;AA6BD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAIjD"}
|
package/dest/log/logger.js
CHANGED
|
@@ -3,7 +3,7 @@ import { inspect } from 'util';
|
|
|
3
3
|
const LogLevels = ['silent', 'error', 'warn', 'info', 'verbose', 'debug'];
|
|
4
4
|
function getLogLevel() {
|
|
5
5
|
const envLogLevel = process.env.LOG_LEVEL?.toLowerCase();
|
|
6
|
-
const defaultNonTestLogLevel = process.env.DEBUG === undefined ? 'info' : 'debug';
|
|
6
|
+
const defaultNonTestLogLevel = process.env.DEBUG === undefined || process.env.DEBUG === '' ? 'info' : 'debug';
|
|
7
7
|
const defaultLogLevel = process.env.NODE_ENV === 'test' ? 'silent' : defaultNonTestLogLevel;
|
|
8
8
|
return LogLevels.includes(envLogLevel) ? envLogLevel : defaultLogLevel;
|
|
9
9
|
}
|
|
@@ -121,4 +121,4 @@ export function fmtLogData(data) {
|
|
|
121
121
|
.map(([key, value]) => `${key}=${typeof value === 'object' && 'toString' in value ? value.toString() : value}`)
|
|
122
122
|
.join(' ');
|
|
123
123
|
}
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvZy9sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJL0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBVSxDQUFDO0FBT25GLFNBQVMsV0FBVztJQUNsQixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQWMsQ0FBQztJQUNyRSxNQUFNLHNCQUFzQixHQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBRSxNQUFnQixDQUFDLENBQUMsQ0FBRSxPQUFpQixDQUFDO0lBQ3ZHLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUUsUUFBa0IsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUM7SUFDdkcsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztBQUN6RSxDQUFDO0FBRUQsTUFBTSxDQUFDLElBQUksWUFBWSxHQUFHLFdBQVcsRUFBRSxDQUFDO0FBRXhDLFNBQVMsc0JBQXNCLENBQUMsV0FBbUI7SUFDakQsT0FBTyxXQUFXO1NBQ2YsS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUNWLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMvQixJQUFJ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
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type z } from 'zod';
|
|
2
|
+
import { type ZodNullableOptional } from './utils.js';
|
|
3
|
+
type ZodParameterTypeFor<T> = undefined extends T ? ZodNullableOptional<z.ZodType<T, z.ZodTypeDef, any>> : z.ZodType<T, z.ZodTypeDef, any>;
|
|
4
|
+
type ZodReturnTypeFor<T> = z.ZodType<T, z.ZodTypeDef, any>;
|
|
5
|
+
type ZodMapParameterTypes<T> = T extends [] ? [] : T extends [item: infer Head, ...infer Rest] ? [ZodParameterTypeFor<Head>, ...{
|
|
6
|
+
[K in keyof Rest]: ZodParameterTypeFor<Rest[K]>;
|
|
7
|
+
}] : T extends [item?: infer Head, ...infer Rest] ? [ZodNullableOptional<ZodParameterTypeFor<Head>>, ...{
|
|
8
|
+
[K in keyof Rest]: ZodParameterTypeFor<Rest[K]>;
|
|
9
|
+
}] : never;
|
|
10
|
+
/** Maps all functions in an interface to their schema representation. */
|
|
11
|
+
export type ApiSchemaFor<T> = {
|
|
12
|
+
[K in keyof T]: T[K] extends (...args: infer Args) => Promise<infer Ret> ? z.ZodFunction<z.ZodTuple<ZodMapParameterTypes<Args>, z.ZodUnknown>, ZodReturnTypeFor<Ret>> : never;
|
|
13
|
+
};
|
|
14
|
+
/** Generic Api schema not bounded to a specific implementation. */
|
|
15
|
+
export type ApiSchema = {
|
|
16
|
+
[key: string]: z.ZodFunction<z.ZodTuple<any, any>, z.ZodTypeAny>;
|
|
17
|
+
};
|
|
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;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/schemas/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,EAAE,KAAK,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,GAC3C,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,GAC5C,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;AAEV,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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Return whether an API schema defines a valid function schema for a given method name. */
|
|
2
|
+
export function schemaHasMethod(schema, methodName) {
|
|
3
|
+
return (typeof methodName === 'string' &&
|
|
4
|
+
Object.hasOwn(schema, methodName) &&
|
|
5
|
+
typeof schema[methodName].parameters === 'function' &&
|
|
6
|
+
typeof schema[methodName].returnType === 'function');
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjaGVtYXMvYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNDQSw0RkFBNEY7QUFDNUYsTUFBTSxVQUFVLGVBQWUsQ0FBQyxNQUFpQixFQUFFLFVBQWtCO0lBQ25FLE9BQU8sQ0FDTCxPQUFPLFVBQVUsS0FBSyxRQUFRO1FBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQztRQUNqQyxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxVQUFVLEtBQUssVUFBVTtRQUNuRCxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxVQUFVLEtBQUssVUFBVSxDQUNwRCxDQUFDO0FBQ0osQ0FBQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './api.js';
|
|
2
|
+
export * from './parse.js';
|
|
3
|
+
export * from './schemas.js';
|
|
4
|
+
export * from './utils.js';
|
|
5
|
+
export * from './types.js';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NoZW1hcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFlBQVksQ0FBQyJ9
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/** Parses the given arguments using a tuple from the provided schemas. */
|
|
3
|
+
export declare function parse<T extends [] | [z.ZodTypeAny, ...z.ZodTypeAny[]]>(args: IArguments, ...schemas: T): z.AssertArray<{ [k in keyof T]: T[k] extends z.ZodType<any, any, any> ? T[k]["_output"] : never; }>;
|
|
4
|
+
/**
|
|
5
|
+
* Parses the given arguments against a tuple, allowing empty for optional items.
|
|
6
|
+
* @dev Zod doesn't like tuplues with optional items. See https://github.com/colinhacks/zod/discussions/949.
|
|
7
|
+
*/
|
|
8
|
+
export declare function parseWithOptionals<T extends z.AnyZodTuple>(args: any[], schema: T): T['_output'];
|
|
9
|
+
//# sourceMappingURL=parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/schemas/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,0EAA0E;AAC1E,wBAAgB,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,CAAC,uGAEtG;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAMhG"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { times } from '../collection/array.js';
|
|
3
|
+
/** Parses the given arguments using a tuple from the provided schemas. */
|
|
4
|
+
export function parse(args, ...schemas) {
|
|
5
|
+
return z.tuple(schemas).parse(args);
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Parses the given arguments against a tuple, allowing empty for optional items.
|
|
9
|
+
* @dev Zod doesn't like tuplues with optional items. See https://github.com/colinhacks/zod/discussions/949.
|
|
10
|
+
*/
|
|
11
|
+
export function parseWithOptionals(args, schema) {
|
|
12
|
+
const missingCount = schema.items.length - args.length;
|
|
13
|
+
const optionalCount = schema.items.filter(isOptional).length;
|
|
14
|
+
const toParse = missingCount > 0 && missingCount <= optionalCount ? args.concat(times(missingCount, () => undefined)) : args;
|
|
15
|
+
return schema.parse(toParse);
|
|
16
|
+
}
|
|
17
|
+
function isOptional(schema) {
|
|
18
|
+
try {
|
|
19
|
+
return schema.isOptional();
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
// See https://github.com/colinhacks/zod/issues/1911
|
|
23
|
+
return schema._def.typeName === 'ZodOptional';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NoZW1hcy9wYXJzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUvQywwRUFBMEU7QUFDMUUsTUFBTSxVQUFVLEtBQUssQ0FBbUQsSUFBZ0IsRUFBRSxHQUFHLE9BQVU7SUFDckcsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUEwQixJQUFXLEVBQUUsTUFBUztJQUNoRixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM3RCxNQUFNLE9BQU8sR0FDWCxZQUFZLEdBQUcsQ0FBQyxJQUFJLFlBQVksSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDL0csT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxNQUFvQjtJQUN0QyxJQUFJLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLG9EQUFvRDtRQUNwRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLGFBQWEsQ0FBQztJQUNoRCxDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { type AbiDecoded } from '../abi/decoder.js';
|
|
5
|
+
import { EventSelector } from '../abi/event_selector.js';
|
|
6
|
+
import { FunctionSelector } from '../abi/function_selector.js';
|
|
7
|
+
import { NoteSelector } from '../abi/note_selector.js';
|
|
8
|
+
import { AztecAddress } from '../aztec-address/index.js';
|
|
9
|
+
import { Buffer32 } from '../buffer/buffer32.js';
|
|
10
|
+
import { EthAddress } from '../eth-address/index.js';
|
|
11
|
+
import { Signature } from '../eth-signature/eth_signature.js';
|
|
12
|
+
import { Fq, Fr } from '../fields/fields.js';
|
|
13
|
+
import { Point } from '../fields/point.js';
|
|
14
|
+
import { type ZodFor } from './types.js';
|
|
15
|
+
/** Validation schemas for common types. Every schema must match its toJSON. */
|
|
16
|
+
export declare const schemas: {
|
|
17
|
+
/** Accepts both a 0x string and a structured `{ type: EthAddress, value: '0x...' }` */
|
|
18
|
+
EthAddress: ZodFor<EthAddress>;
|
|
19
|
+
/** Accepts both a 0x string and a structured `{ type: AztecAddress, value: '0x...' }` */
|
|
20
|
+
AztecAddress: ZodFor<AztecAddress>;
|
|
21
|
+
/** Accepts both a 0x string and a structured type. */
|
|
22
|
+
FunctionSelector: ZodFor<FunctionSelector>;
|
|
23
|
+
/** Accepts both a 0x string and a structured type. */
|
|
24
|
+
NoteSelector: ZodFor<NoteSelector>;
|
|
25
|
+
/** Accepts both a 0x string and a structured type. */
|
|
26
|
+
EventSelector: ZodFor<EventSelector>;
|
|
27
|
+
/** Field element. Accepts a 0x prefixed hex string or a structured type. */
|
|
28
|
+
Fr: ZodFor<Fr>;
|
|
29
|
+
/** Field element. Accepts a 0x prefixed hex string or a structured type. */
|
|
30
|
+
Fq: ZodFor<Fq>;
|
|
31
|
+
/** Point. Serialized as 0x prefixed string or a type. */
|
|
32
|
+
Point: z.ZodEffects<z.ZodUnion<[z.ZodObject<{
|
|
33
|
+
x: ZodFor<Fr>;
|
|
34
|
+
y: ZodFor<Fr>;
|
|
35
|
+
isInfinite: z.ZodOptional<z.ZodBoolean>;
|
|
36
|
+
}, "strip", z.ZodTypeAny, {
|
|
37
|
+
x: Fr;
|
|
38
|
+
y: Fr;
|
|
39
|
+
isInfinite?: boolean | undefined;
|
|
40
|
+
}, {
|
|
41
|
+
x?: any;
|
|
42
|
+
y?: any;
|
|
43
|
+
isInfinite?: boolean | undefined;
|
|
44
|
+
}>, z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>]>, Point, string | {
|
|
45
|
+
x?: any;
|
|
46
|
+
y?: any;
|
|
47
|
+
isInfinite?: boolean | undefined;
|
|
48
|
+
}>;
|
|
49
|
+
/** Accepts a 0x string */
|
|
50
|
+
Signature: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, `0x${string}`, string>, `0x${string}`, string>, Signature, string>;
|
|
51
|
+
/** Coerces any input to bigint */
|
|
52
|
+
BigInt: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodBigInt>;
|
|
53
|
+
/** Coerces any input to integer number */
|
|
54
|
+
Integer: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodNumber>;
|
|
55
|
+
/** Coerces input to UInt32 */
|
|
56
|
+
UInt32: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodNumber>;
|
|
57
|
+
/** Accepts a hex string as a Buffer32 type */
|
|
58
|
+
Buffer32: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, Buffer32, string>;
|
|
59
|
+
/** Accepts a base64 string or a structured `{ type: 'Buffer', data: [byte, byte...] }` as a buffer */
|
|
60
|
+
BufferB64: z.ZodUnion<[z.ZodEffects<z.ZodString, Buffer, string>, z.ZodEffects<z.ZodObject<{
|
|
61
|
+
type: z.ZodLiteral<"Buffer">;
|
|
62
|
+
data: z.ZodArray<z.ZodNumber, "many">;
|
|
63
|
+
}, "strip", z.ZodTypeAny, {
|
|
64
|
+
type: "Buffer";
|
|
65
|
+
data: number[];
|
|
66
|
+
}, {
|
|
67
|
+
type: "Buffer";
|
|
68
|
+
data: number[];
|
|
69
|
+
}>, Buffer, {
|
|
70
|
+
type: "Buffer";
|
|
71
|
+
data: number[];
|
|
72
|
+
}>]>;
|
|
73
|
+
/** Accepts a hex string with optional 0x prefix as a buffer */
|
|
74
|
+
BufferHex: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, Buffer, string>;
|
|
75
|
+
/** Hex string with an optional 0x prefix, which gets removed as part of the parsing */
|
|
76
|
+
HexString: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
|
|
77
|
+
};
|
|
78
|
+
export declare const AbiDecodedSchema: ZodFor<AbiDecoded>;
|
|
79
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/schemas/schemas.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAMzC,+EAA+E;AAC/E,eAAO,MAAM,OAAO;IAClB,uFAAuF;;IAGvF,yFAAyF;;IAGzF,sDAAsD;;IAGtD,sDAAsD;;IAGtD,sDAAsD;;IAGtD,4EAA4E;;IAG5E,4EAA4E;;IAG5E,yDAAyD;;;;;;;;;;;;;;;;;;IAYzD,0BAA0B;;IAO1B,kCAAkC;;IAGlC,0CAA0C;;IAG1C,8BAA8B;;IAS9B,8CAA8C;;IAG9C,sGAAsG;;;;;;;;;;;;;;IActG,+DAA+D;;IAO/D,uFAAuF;;CAExF,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAM9C,CAAC"}
|