@sphereon/ssi-sdk-web3.headless-provider 0.32.1-next.54 → 0.33.1-feature.jose.vcdm.55

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 (41) hide show
  1. package/dist/index.cjs +652 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +220 -0
  4. package/dist/index.d.ts +218 -9
  5. package/dist/index.js +619 -25
  6. package/dist/index.js.map +1 -1
  7. package/package.json +26 -16
  8. package/src/ethers-kms-signer.ts +4 -3
  9. package/dist/errors.d.ts +0 -11
  10. package/dist/errors.d.ts.map +0 -1
  11. package/dist/errors.js +0 -24
  12. package/dist/errors.js.map +0 -1
  13. package/dist/ethers-headless-provider.d.ts +0 -73
  14. package/dist/ethers-headless-provider.d.ts.map +0 -1
  15. package/dist/ethers-headless-provider.js +0 -276
  16. package/dist/ethers-headless-provider.js.map +0 -1
  17. package/dist/ethers-kms-signer.d.ts +0 -37
  18. package/dist/ethers-kms-signer.d.ts.map +0 -1
  19. package/dist/ethers-kms-signer.js +0 -183
  20. package/dist/ethers-kms-signer.js.map +0 -1
  21. package/dist/event-emitter.d.ts +0 -8
  22. package/dist/event-emitter.d.ts.map +0 -1
  23. package/dist/event-emitter.js +0 -44
  24. package/dist/event-emitter.js.map +0 -1
  25. package/dist/factory.d.ts +0 -6
  26. package/dist/factory.d.ts.map +0 -1
  27. package/dist/factory.js +0 -30
  28. package/dist/factory.js.map +0 -1
  29. package/dist/functions.d.ts +0 -5
  30. package/dist/functions.d.ts.map +0 -1
  31. package/dist/functions.js +0 -33
  32. package/dist/functions.js.map +0 -1
  33. package/dist/index.d.ts.map +0 -1
  34. package/dist/rpc-server.d.ts +0 -8
  35. package/dist/rpc-server.d.ts.map +0 -1
  36. package/dist/rpc-server.js +0 -99
  37. package/dist/rpc-server.js.map +0 -1
  38. package/dist/types.d.ts +0 -90
  39. package/dist/types.d.ts.map +0 -1
  40. package/dist/types.js +0 -25
  41. package/dist/types.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,27 +1,621 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ // src/types.ts
5
+ var Web3Method = /* @__PURE__ */ function(Web3Method2) {
6
+ Web3Method2["RequestAccounts"] = "eth_requestAccounts";
7
+ Web3Method2["Accounts"] = "eth_accounts";
8
+ Web3Method2["SendTransaction"] = "eth_sendTransaction";
9
+ Web3Method2["SwitchEthereumChain"] = "wallet_switchEthereumChain";
10
+ Web3Method2["AddEthereumChain"] = "wallet_addEthereumChain";
11
+ Web3Method2["SignMessage"] = "personal_sign";
12
+ Web3Method2["SignTypedData"] = "eth_signTypedData";
13
+ Web3Method2["SignTypedDataV1"] = "eth_signTypedData_v1";
14
+ Web3Method2["SignTypedDataV3"] = "eth_signTypedData_v3";
15
+ Web3Method2["SignTypedDataV4"] = "eth_signTypedData_v4";
16
+ return Web3Method2;
17
+ }({});
18
+ function without(list, item) {
19
+ const idx = list.indexOf(item);
20
+ if (idx >= 0) {
21
+ return list.slice(0, idx).concat(list.slice(idx + 1));
22
+ }
23
+ return list;
24
+ }
25
+ __name(without, "without");
26
+
27
+ // src/ethers-headless-provider.ts
28
+ import { toUtf8String } from "@ethersproject/strings";
29
+ import { signTypedData, SignTypedDataVersion } from "@metamask/eth-sig-util";
30
+ import assert from "assert/strict";
31
+ import { ethers } from "ethers";
32
+ import { BehaviorSubject, filter, first, firstValueFrom, from, switchMap, tap } from "rxjs";
33
+
34
+ // src/errors.ts
35
+ var ErrorWithCode = class extends Error {
36
+ static {
37
+ __name(this, "ErrorWithCode");
38
+ }
39
+ code;
40
+ constructor(message, code) {
41
+ super(message), this.code = code;
42
+ return this;
43
+ }
44
+ };
45
+ var Deny = /* @__PURE__ */ __name(() => new ErrorWithCode("The user rejected the request.", 4001), "Deny");
46
+ var Unauthorized = /* @__PURE__ */ __name(() => new ErrorWithCode("The requested method and/or account has not been authorized by the user.", 4100), "Unauthorized");
47
+ var Disconnected = /* @__PURE__ */ __name(() => new ErrorWithCode("The Provider is disconnected from all chains.", 4900), "Disconnected");
48
+ var UnrecognizedChainID = /* @__PURE__ */ __name(() => new ErrorWithCode("Unrecognized chain ID. Try adding the chain using `wallet_addEthereumChain` first.", 4902), "UnrecognizedChainID");
49
+
50
+ // src/event-emitter.ts
51
+ var EventEmitter = class {
52
+ static {
53
+ __name(this, "EventEmitter");
54
+ }
55
+ listeners = /* @__PURE__ */ Object.create(null);
56
+ emit(eventName, ...args) {
57
+ this.listeners[eventName]?.forEach((listener) => {
58
+ listener(...args);
59
+ });
60
+ return true;
61
+ }
62
+ on(eventName, listener) {
63
+ this.listeners[eventName] ??= [];
64
+ this.listeners[eventName]?.push(listener);
65
+ return this;
66
+ }
67
+ off(eventName, listener) {
68
+ const listeners = this.listeners[eventName] ?? [];
69
+ for (const [i, listener_] of listeners.entries()) {
70
+ if (listener === listener_) {
71
+ listeners.splice(i, 1);
72
+ break;
73
+ }
74
+ }
75
+ return this;
76
+ }
77
+ once(eventName, listener) {
78
+ const cb = /* @__PURE__ */ __name((...args) => {
79
+ this.off(eventName, cb);
80
+ listener(...args);
81
+ }, "cb");
82
+ return this.on(eventName, cb);
83
+ }
84
+ };
85
+
86
+ // src/ethers-headless-provider.ts
87
+ var EthersHeadlessProvider = class extends EventEmitter {
88
+ static {
89
+ __name(this, "EthersHeadlessProvider");
90
+ }
91
+ chains;
92
+ _pendingRequests;
93
+ _signers;
94
+ _activeChainId;
95
+ _rpc;
96
+ _config;
97
+ _authorizedRequests;
98
+ constructor(signers, chains, config = {}) {
99
+ super(), this.chains = chains, this._pendingRequests = new BehaviorSubject([]), this._signers = [], this._rpc = {}, this._authorizedRequests = {};
100
+ this._signers = signers;
101
+ this._activeChainId = chains[0].chainId;
102
+ this._config = Object.assign({
103
+ debug: true,
104
+ logger: console.log
105
+ }, config);
106
+ }
107
+ async request({ method, params }) {
108
+ if (this._config.debug) {
109
+ this._config.logger(JSON.stringify({
110
+ method,
111
+ params
112
+ }));
113
+ }
114
+ switch (method) {
115
+ case "eth_call":
116
+ case "eth_getBalance":
117
+ case "eth_estimateGas":
118
+ case "eth_blockNumber":
119
+ case "eth_getBlockByNumber":
120
+ case "eth_getTransactionByHash":
121
+ case "eth_getTransactionReceipt":
122
+ case "eth_feeHistory":
123
+ return this.getRpc().send(method, params);
124
+ case "eth_requestAccounts":
125
+ case "eth_accounts":
126
+ return this.waitAuthorization({
127
+ method,
128
+ params
129
+ }, async () => {
130
+ const { chainId } = this.getCurrentChain();
131
+ this.emit("connect", {
132
+ chainId
133
+ });
134
+ return Promise.all(this._signers.map((wallet) => wallet.getAddress()));
135
+ }, true, "eth_requestAccounts");
136
+ case "eth_chainId": {
137
+ const { chainId } = this.getCurrentChain();
138
+ return "0x" + chainId.toString(16);
139
+ }
140
+ case "net_version": {
141
+ const { chainId } = this.getCurrentChain();
142
+ return "" + chainId;
143
+ }
144
+ case "eth_sendTransaction": {
145
+ return this.waitAuthorization({
146
+ method,
147
+ params
148
+ }, async () => {
149
+ const wallet = this.getCurrentWallet();
150
+ const rpc = this.getRpc();
151
+ const { gas, from: from2, ...txRequest } = params[0];
152
+ const tx = await wallet.connect(rpc).sendTransaction(txRequest);
153
+ return tx.hash;
154
+ });
155
+ }
156
+ case "eth_sign": {
157
+ return this.waitAuthorization({
158
+ method,
159
+ params
160
+ }, async () => {
161
+ const wallet = this.getCurrentWallet();
162
+ const rpc = this.getRpc();
163
+ const message = params[1];
164
+ return await wallet.connect(rpc).signMessage(message);
165
+ });
166
+ }
167
+ case "wallet_addEthereumChain": {
168
+ return this.waitAuthorization({
169
+ method,
170
+ params
171
+ }, async () => {
172
+ const chainId = Number(params[0].chainId);
173
+ const { rpcUrl } = params[0];
174
+ this.addNetwork(chainId, rpcUrl);
175
+ return null;
176
+ });
177
+ }
178
+ case "wallet_switchEthereumChain": {
179
+ if (this._activeChainId === Number(params[0].chainId)) {
180
+ return null;
181
+ }
182
+ return this.waitAuthorization({
183
+ method,
184
+ params
185
+ }, async () => {
186
+ const chainId = Number(params[0].chainId);
187
+ this.switchNetwork(chainId);
188
+ return null;
189
+ });
190
+ }
191
+ case "personal_sign": {
192
+ return this.waitAuthorization({
193
+ method,
194
+ params
195
+ }, async () => {
196
+ const wallet = this.getCurrentWallet();
197
+ const address = await wallet.getAddress();
198
+ assert.equal(address, ethers.utils.getAddress(params[1]));
199
+ const message = toUtf8String(params[0]);
200
+ const signature = await wallet.signMessage(message);
201
+ if (this._config.debug) {
202
+ this._config.logger("personal_sign", {
203
+ message,
204
+ signature
205
+ });
206
+ }
207
+ return signature;
208
+ });
209
+ }
210
+ case "eth_signTypedData":
211
+ case "eth_signTypedData_v1": {
212
+ return this.waitAuthorization({
213
+ method,
214
+ params
215
+ }, async () => {
216
+ const wallet = this.getCurrentWallet();
217
+ const address = await wallet.getAddress();
218
+ assert.equal(address, ethers.utils.getAddress(params[1]));
219
+ const msgParams = params[0];
220
+ return signTypedData({
221
+ privateKey: Buffer.from(wallet.privateKey.slice(2), "hex"),
222
+ data: msgParams,
223
+ version: SignTypedDataVersion.V1
224
+ });
225
+ });
226
+ }
227
+ case "eth_signTypedData_v3":
228
+ case "eth_signTypedData_v4": {
229
+ return this.waitAuthorization({
230
+ method,
231
+ params
232
+ }, async () => {
233
+ const wallet = this.getCurrentWallet();
234
+ const address = await wallet.getAddress();
235
+ assert.equal(address, ethers.utils.getAddress(params[0]));
236
+ const msgParams = JSON.parse(params[1]);
237
+ return signTypedData({
238
+ privateKey: Buffer.from(wallet.privateKey.slice(2), "hex"),
239
+ data: msgParams,
240
+ version: method === "eth_signTypedData_v4" ? SignTypedDataVersion.V4 : SignTypedDataVersion.V3
241
+ });
242
+ });
243
+ }
244
+ default:
245
+ return this.getRpc().send(method, params);
246
+ }
247
+ }
248
+ getCurrentWallet() {
249
+ const wallet = this._signers[0];
250
+ if (!wallet) {
251
+ throw Unauthorized();
252
+ }
253
+ return wallet;
254
+ }
255
+ waitAuthorization(requestInfo, task, permanentPermission = false, methodOverride) {
256
+ const method = methodOverride ?? requestInfo.method;
257
+ if (this._authorizedRequests[method]) {
258
+ return task();
259
+ }
260
+ return new Promise((resolve, reject) => {
261
+ const pendingRequest = {
262
+ requestInfo,
263
+ authorize: /* @__PURE__ */ __name(async () => {
264
+ if (permanentPermission) {
265
+ this._authorizedRequests[method] = true;
266
+ }
267
+ resolve(await task());
268
+ }, "authorize"),
269
+ reject(err) {
270
+ reject(err);
271
+ }
272
+ };
273
+ this._pendingRequests.next(this._pendingRequests.getValue().concat(pendingRequest));
274
+ });
275
+ }
276
+ consumeRequest(requestKind) {
277
+ return firstValueFrom(this._pendingRequests.pipe(switchMap((a) => from(a)), filter((request) => {
278
+ return request.requestInfo.method === requestKind;
279
+ }), first(), tap((item) => {
280
+ this._pendingRequests.next(without(this._pendingRequests.getValue(), item));
281
+ })));
282
+ }
283
+ consumeAllRequests() {
284
+ const pendingRequests = this._pendingRequests.getValue();
285
+ this._pendingRequests.next([]);
286
+ return pendingRequests;
287
+ }
288
+ getPendingRequests() {
289
+ return this._pendingRequests.getValue().map((pendingRequest) => pendingRequest.requestInfo);
290
+ }
291
+ getPendingRequestCount(requestKind) {
292
+ const pendingRequests = this._pendingRequests.getValue();
293
+ if (!requestKind) {
294
+ return pendingRequests.length;
295
+ }
296
+ return pendingRequests.filter((pendingRequest) => pendingRequest.requestInfo.method === requestKind).length;
297
+ }
298
+ async authorize(requestKind) {
299
+ const pendingRequest = await this.consumeRequest(requestKind);
300
+ return pendingRequest.authorize();
301
+ }
302
+ async reject(requestKind, reason = Deny()) {
303
+ const pendingRequest = await this.consumeRequest(requestKind);
304
+ return pendingRequest.reject(reason);
305
+ }
306
+ authorizeAll() {
307
+ this.consumeAllRequests().forEach((request) => request.authorize());
308
+ }
309
+ rejectAll(reason = Deny()) {
310
+ this.consumeAllRequests().forEach((request) => request.reject(reason));
311
+ }
312
+ async changeAccounts(signers) {
313
+ this._signers = signers;
314
+ this.emit("accountsChanged", await Promise.all(this._signers.map((signer) => signer.getAddress())));
315
+ }
316
+ getCurrentChain() {
317
+ const chainConn = this.chains.find((chainConn2) => chainConn2.chainId === this._activeChainId);
318
+ if (!chainConn) {
319
+ throw Disconnected();
320
+ }
321
+ return chainConn;
322
+ }
323
+ getRpc() {
324
+ const chainConn = this.getCurrentChain();
325
+ let rpc = this._rpc[chainConn.chainId];
326
+ if (!rpc) {
327
+ rpc = new ethers.providers.JsonRpcProvider(chainConn.rpcUrl, chainConn.chainId);
328
+ this._rpc[chainConn.chainId] = rpc;
329
+ }
330
+ return rpc;
331
+ }
332
+ getNetwork() {
333
+ return this.getCurrentChain();
334
+ }
335
+ getNetworks() {
336
+ return this.chains;
337
+ }
338
+ addNetwork(chainId, rpcUrl) {
339
+ this.chains.push({
340
+ chainId,
341
+ rpcUrl
342
+ });
343
+ }
344
+ switchNetwork(chainId) {
345
+ const idx = this.chains.findIndex((connection) => connection.chainId === chainId);
346
+ if (idx < 0) {
347
+ throw UnrecognizedChainID();
348
+ }
349
+ if (chainId !== this._activeChainId) {
350
+ this._activeChainId = chainId;
351
+ this.emit("chainChanged", chainId);
352
+ }
353
+ }
354
+ };
355
+
356
+ // src/ethers-kms-signer.ts
357
+ import { serialize } from "@ethersproject/transactions";
358
+ import { Signer } from "ethers";
359
+ import { arrayify, defineReadOnly } from "ethers/lib/utils";
360
+ import { fromString } from "uint8arrays/from-string";
361
+
362
+ // src/functions.ts
363
+ import { ethers as ethers2 } from "ethers";
364
+ async function getAddressFromAgent(context, keyRef) {
365
+ const publicKeyHex = await getKey(context, keyRef).then((key) => key?.publicKeyHex);
366
+ if (!publicKeyHex) {
367
+ throw Error(`Could not retrieve public hex key for ${keyRef}`);
368
+ }
369
+ const address = ethers2.utils.computeAddress(`${publicKeyHex.startsWith("0x") ? "" : "0x"}${publicKeyHex}`);
370
+ if (!address || !address.startsWith("0x")) {
371
+ throw Error(`Invalid address ${address} public key for key ${publicKeyHex}`);
372
+ }
373
+ return address;
374
+ }
375
+ __name(getAddressFromAgent, "getAddressFromAgent");
376
+ async function getKey(context, keyRef) {
377
+ return await context.agent.keyManagerGet({
378
+ kid: keyRef.kid
379
+ });
380
+ }
381
+ __name(getKey, "getKey");
382
+
383
+ // src/ethers-kms-signer.ts
384
+ var EthersKMSSignerBuilder = class {
385
+ static {
386
+ __name(this, "EthersKMSSignerBuilder");
387
+ }
388
+ context;
389
+ keyRef;
390
+ provider;
391
+ withContext(context) {
392
+ this.context = context;
393
+ return this;
394
+ }
395
+ withKid(kid) {
396
+ this.keyRef = {
397
+ kid
398
+ };
399
+ return this;
400
+ }
401
+ withKeyRef(keyRef) {
402
+ if (typeof keyRef === "string") {
403
+ return this.withKid(keyRef);
404
+ }
405
+ this.keyRef = keyRef;
406
+ return this;
407
+ }
408
+ withProvider(provider) {
409
+ this.provider = provider;
410
+ return this;
411
+ }
412
+ build() {
413
+ if (!this.context) {
414
+ throw Error("Agent context needs to be provided");
415
+ }
416
+ if (!this.keyRef) {
417
+ throw Error("Keyref needs to be provided");
418
+ }
419
+ return new EthersKMSSigner({
420
+ context: this.context,
421
+ keyRef: this.keyRef,
422
+ provider: this.provider
423
+ });
424
+ }
425
+ };
426
+ var EthersKMSSigner = class _EthersKMSSigner extends Signer {
427
+ static {
428
+ __name(this, "EthersKMSSigner");
429
+ }
430
+ context;
431
+ keyRef;
432
+ constructor({ provider, context, keyRef }) {
433
+ super();
434
+ defineReadOnly(this, "provider", provider || void 0);
435
+ this.context = context;
436
+ this.keyRef = keyRef;
437
+ }
438
+ async getAddress() {
439
+ return await getAddressFromAgent(this.context, this.keyRef);
440
+ }
441
+ async signTransaction(transaction) {
442
+ const { from: from2, ...tx } = await transaction;
443
+ return this.context.agent.keyManagerSign({
444
+ algorithm: "eth_signTransaction",
445
+ keyRef: this.keyRef.kid,
446
+ // keyRef: this.keyRef,
447
+ // @ts-ignore
448
+ data: arrayify(serialize(tx))
449
+ });
450
+ }
451
+ async signRaw(message) {
452
+ return await this.context.agent.keyManagerSign({
453
+ algorithm: "eth_rawSign",
454
+ keyRef: this.keyRef.kid,
455
+ encoding: "base16",
456
+ // @ts-ignore // KMS accepts uint8arrays but interface does not expose it
457
+ data: message
458
+ });
459
+ }
460
+ async signMessage(message) {
461
+ return await this.context.agent.keyManagerSign({
462
+ algorithm: "eth_signMessage",
463
+ keyRef: this.keyRef.kid,
464
+ encoding: "base16",
465
+ // @ts-ignore // KMS accepts uint8arrays but interface does not expose it
466
+ data: message
467
+ });
468
+ }
469
+ async _signTypedData(domain, types, value) {
470
+ const jsonData = {
471
+ domain,
472
+ types,
473
+ message: value
474
+ };
475
+ return this.context.agent.keyManagerSign({
476
+ algorithm: "eth_signTypedData",
477
+ keyRef: this.keyRef.kid,
478
+ // @ts-ignore // KMS accepts uint8arrays but interface does not expose it
479
+ data: fromString(JSON.stringify(jsonData))
480
+ });
481
+ }
482
+ connect(provider) {
483
+ return new _EthersKMSSigner({
484
+ provider,
485
+ context: this.context,
486
+ keyRef: this.keyRef
487
+ });
488
+ }
489
+ };
490
+
491
+ // src/factory.ts
492
+ function relayEvents(eventEmitter, execute) {
493
+ const emit_ = eventEmitter.emit;
494
+ eventEmitter.emit = (eventName, ...args) => {
495
+ void execute("emit", eventName, ...args);
496
+ return emit_.apply(eventEmitter, [
497
+ eventName,
498
+ ...args
499
+ ]);
500
+ };
501
+ }
502
+ __name(relayEvents, "relayEvents");
503
+ function createWeb3Provider(signers, chainId, rpcUrl, evaluate = async () => {
504
+ }, config) {
505
+ const chainIds = Array.isArray(chainId) ? chainId : [
506
+ chainId
507
+ ];
508
+ const chains = chainIds.map((chainId2) => {
509
+ return {
510
+ chainId: chainId2,
511
+ rpcUrl
512
+ };
513
+ });
514
+ const web3Provider = new EthersHeadlessProvider(signers, chains, config);
515
+ relayEvents(web3Provider, evaluate);
516
+ return web3Provider;
517
+ }
518
+ __name(createWeb3Provider, "createWeb3Provider");
519
+
520
+ // src/rpc-server.ts
521
+ import { sendErrorResponse } from "@sphereon/ssi-express-support";
522
+ import { Router } from "express";
523
+ function createRpcServer(provider, expressSupport, opts) {
524
+ const express = expressSupport.express;
525
+ const router = Router();
526
+ const path = opts?.path ?? "/web3/rpc";
527
+ console.log(`RPC server will use basePath ${opts?.basePath ?? "/"} and path ${path}`);
528
+ router.post(path, (req, res, next) => {
529
+ console.log(`REQ ${req.body?.method}:\r
530
+ ${JSON.stringify(req.body, null, 2)}\r
531
+ ===`);
532
+ next();
533
+ }, async (req, res, next) => {
534
+ try {
535
+ const method = req.body.method;
536
+ const params = req.body.params;
537
+ const id = req.body.id;
538
+ if (req.body.jsonrpc !== "2.0") {
539
+ console.log("No valid JSON RPC call received", JSON.stringify(req.body));
540
+ return sendErrorResponse(res, 200, {
541
+ id: req.body.id,
542
+ jsonrpc: "2.0",
543
+ error: "No valid JSON RPC call received. No jsonrp version supplied",
544
+ code: -32600
545
+ });
546
+ } else if (!id || !method) {
547
+ console.log("No valid JSON RPC call received", JSON.stringify(req.body));
548
+ return sendErrorResponse(res, 200, {
549
+ id: req.body.id,
550
+ jsonrpc: "2.0",
551
+ error: "No valid JSON RPC call received",
552
+ code: -32600
553
+ });
554
+ }
555
+ const result = provider.request({
556
+ method,
557
+ params
558
+ });
559
+ provider.authorizeAll();
560
+ const respBody = {
561
+ id,
562
+ jsonrpc: "2.0",
563
+ result: await result
564
+ };
565
+ res.json(respBody);
566
+ console.log(`RESPONSE for ${method}:\r
567
+ ${JSON.stringify(respBody, null, 2)}`);
568
+ } catch (error) {
569
+ console.log(error.message);
570
+ let msg = error.message;
571
+ if (`body` in error) {
572
+ msg = error.body;
573
+ return sendErrorResponse(res, 200, msg);
574
+ } else {
575
+ return sendErrorResponse(res, 200, {
576
+ id: req.body.id,
577
+ jsonrpc: "2.0",
578
+ error: msg,
579
+ code: error.code ?? -32e3
580
+ });
581
+ }
582
+ }
583
+ return next();
584
+ });
585
+ express.use(opts?.basePath ?? "", router);
586
+ }
587
+ __name(createRpcServer, "createRpcServer");
588
+ function createServiceMethod(method, service, provider) {
589
+ service[method] = async (params) => {
590
+ const result = provider.request({
591
+ method,
592
+ params
593
+ });
594
+ provider.authorizeAll();
595
+ return await result;
596
+ };
597
+ }
598
+ __name(createServiceMethod, "createServiceMethod");
599
+ function createService(provider) {
600
+ const service = {};
601
+ for (const method of Object.values(Web3Method)) {
602
+ createServiceMethod(method, service, provider);
603
+ }
604
+ return service;
605
+ }
606
+ __name(createService, "createService");
607
+ export {
608
+ EthersHeadlessProvider,
609
+ EthersKMSSigner,
610
+ EthersKMSSignerBuilder,
611
+ EventEmitter,
612
+ Web3Method,
613
+ createRpcServer,
614
+ createService,
615
+ createServiceMethod,
616
+ createWeb3Provider,
617
+ getAddressFromAgent,
618
+ getKey,
619
+ without
15
620
  };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./types"), exports);
18
- __exportStar(require("./ethers-headless-provider"), exports);
19
- __exportStar(require("./ethers-kms-signer"), exports);
20
- __exportStar(require("./factory"), exports);
21
- __exportStar(require("./event-emitter"), exports);
22
- __exportStar(require("./functions"), exports);
23
- __exportStar(require("./rpc-server"), exports);
24
- /**
25
- * 8f2695a99c416ab9241fc75ae53f90b083aecff9e4463e046a1527f456b502c6
26
- */
27
621
  //# sourceMappingURL=index.js.map