@canton-network/wallet-gateway-remote 0.25.0 → 0.27.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/dist/auth/jwt-auth-service.d.ts.map +1 -1
- package/dist/auth/jwt-auth-service.js +25 -0
- package/dist/config/Config.d.ts +5 -2
- package/dist/config/Config.d.ts.map +1 -1
- package/dist/config/Config.js +6 -0
- package/dist/config/Config.test.js +1 -1
- package/dist/dapp-api/controller.d.ts +1 -0
- package/dist/dapp-api/controller.d.ts.map +1 -1
- package/dist/dapp-api/controller.js +29 -2
- package/dist/dapp-api/rpc-gen/index.d.ts +3 -0
- package/dist/dapp-api/rpc-gen/index.d.ts.map +1 -1
- package/dist/dapp-api/rpc-gen/index.js +1 -0
- package/dist/dapp-api/rpc-gen/typings.d.ts +3 -2
- package/dist/dapp-api/rpc-gen/typings.d.ts.map +1 -1
- package/dist/dapp-api/server.test.js +1 -1
- package/dist/env.d.ts +1 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +1 -0
- package/dist/example-config.d.ts +1 -0
- package/dist/example-config.d.ts.map +1 -1
- package/dist/example-config.js +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +9 -4
- package/dist/ledger/party-allocation-service.test.js +19 -17
- package/dist/ledger/transaction-service.d.ts +1 -0
- package/dist/ledger/transaction-service.d.ts.map +1 -1
- package/dist/ledger/transaction-service.js +77 -56
- package/dist/ledger/wallet-allocation/signing-providers/blockdaemon-wallet-allocator.d.ts.map +1 -1
- package/dist/ledger/wallet-allocation/signing-providers/blockdaemon-wallet-allocator.js +2 -1
- package/dist/ledger/wallet-allocation/wallet-allocation-service.test.js +22 -22
- package/dist/ledger/wallet-sync-service.js +1 -1
- package/dist/ledger/wallet-sync-service.test.js +15 -13
- package/dist/middleware/rateLimit.d.ts +5 -0
- package/dist/middleware/rateLimit.d.ts.map +1 -1
- package/dist/middleware/rateLimit.js +40 -0
- package/dist/middleware/rateLimit.test.d.ts +2 -0
- package/dist/middleware/rateLimit.test.d.ts.map +1 -0
- package/dist/middleware/rateLimit.test.js +30 -0
- package/dist/user-api/controller.d.ts.map +1 -1
- package/dist/user-api/controller.js +16 -12
- package/dist/user-api/rpc-gen/typings.d.ts +26 -20
- package/dist/user-api/rpc-gen/typings.d.ts.map +1 -1
- package/dist/user-api/server.test.js +1 -1
- package/dist/web/frontend/404/index.html +2 -2
- package/dist/web/frontend/activities/index.html +3 -3
- package/dist/web/frontend/approve/index.html +5 -4
- package/dist/web/frontend/assets/404-CEXKCUlr.js +5 -0
- package/dist/web/frontend/assets/{activities-Da48Liee.js → activities-CPXS4OC3.js} +5 -3
- package/dist/web/frontend/assets/addIdentityProvider-BJjhu--M.js +28 -0
- package/dist/web/frontend/assets/{addNetwork-Dr3W42IN.js → addNetwork-B0olMmyv.js} +3 -3
- package/dist/web/frontend/assets/addParty-PUjps7Ie.js +38 -0
- package/dist/web/frontend/assets/approve-CARzty9R.js +21 -0
- package/dist/web/frontend/assets/{callback-OyzKCduG.js → callback-BqE26RlP.js} +1 -1
- package/dist/web/frontend/assets/{identityProviders-CNGCwCMd.js → identityProviders-Cnx8VIsD.js} +2 -2
- package/dist/web/frontend/assets/{index-CH8oXI5W.js → index-CgsIALyR.js} +1 -1
- package/dist/web/frontend/assets/index-UdyYJ_nU.js +4011 -0
- package/dist/web/frontend/assets/index-nOmkqkbK.js +91 -0
- package/dist/web/frontend/assets/{login-DcYD5VED.js → login-CkpIib74.js} +2 -2
- package/dist/web/frontend/assets/{networks--1UXXt0J.js → networks-D7iP_lGh.js} +2 -2
- package/dist/web/frontend/assets/reviewIdentityProvider-BRb38sGH.js +43 -0
- package/dist/web/frontend/assets/{reviewNetwork-CGV3UYev.js → reviewNetwork-BVdYGugz.js} +3 -3
- package/dist/web/frontend/assets/{settings-DnbEcRUK.js → settings-CxEU64oG.js} +2 -2
- package/dist/web/frontend/assets/{state-Da4wx0rb.js → state-CypMU0cY.js} +1 -1
- package/dist/web/frontend/assets/utils-V1qa66Nv.js +1 -0
- package/dist/web/frontend/callback/index.html +2 -2
- package/dist/web/frontend/identity-providers/add/index.html +3 -3
- package/dist/web/frontend/identity-providers/index.html +3 -3
- package/dist/web/frontend/identity-providers/review/index.html +3 -3
- package/dist/web/frontend/index.html +1 -1
- package/dist/web/frontend/login/index.html +4 -4
- package/dist/web/frontend/networks/add/index.html +3 -3
- package/dist/web/frontend/networks/index.html +3 -3
- package/dist/web/frontend/networks/review/index.html +3 -3
- package/dist/web/frontend/parties/add/index.html +5 -3
- package/dist/web/frontend/parties/index.html +4 -3
- package/dist/web/frontend/settings/index.html +3 -3
- package/package.json +25 -28
- package/dist/web/frontend/assets/404-F1JWultf.js +0 -5
- package/dist/web/frontend/assets/addIdentityProvider-DC3NxrKJ.js +0 -35
- package/dist/web/frontend/assets/addParty-C6FKG-e0.js +0 -38
- package/dist/web/frontend/assets/approve-BcD3DHcB.js +0 -21
- package/dist/web/frontend/assets/index-6feHRhfj.js +0 -3901
- package/dist/web/frontend/assets/parties-CjUMJ1Qt.js +0 -91
- package/dist/web/frontend/assets/reviewIdentityProvider-BT1CChnu.js +0 -43
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt-auth-service.d.ts","sourceRoot":"","sources":["../../src/auth/jwt-auth-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAA;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAE7B;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,KAAK,EAAE,QAAQ,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"jwt-auth-service.d.ts","sourceRoot":"","sources":["../../src/auth/jwt-auth-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAA;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAE7B;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,KAAK,EAAE,QAAQ,MAAM,KAAG,WA+H5D,CAAA"}
|
|
@@ -62,6 +62,31 @@ export const jwtAuthService = (store, logger) => ({
|
|
|
62
62
|
if (!payload.sub) {
|
|
63
63
|
return undefined;
|
|
64
64
|
}
|
|
65
|
+
const networks = await store.listNetworks();
|
|
66
|
+
const networksForIdp = networks.filter((n) => n.identityProviderId === idp.id);
|
|
67
|
+
const expectedAudiences = networksForIdp
|
|
68
|
+
.map((n) => n.auth.audience)
|
|
69
|
+
.filter((aud) => aud !== undefined && aud !== '');
|
|
70
|
+
if (expectedAudiences.length === 0) {
|
|
71
|
+
logger.warn(`No networks configured for IDP ${idp.id}, cannot validate audience`);
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
const tokenAudience = payload.aud;
|
|
75
|
+
if (!tokenAudience) {
|
|
76
|
+
logger.warn('JWT does not contain an audience claim');
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
const tokenAudiences = Array.isArray(tokenAudience)
|
|
80
|
+
? tokenAudience
|
|
81
|
+
: [tokenAudience];
|
|
82
|
+
const audMatch = tokenAudiences.some((aud) => expectedAudiences.includes(aud));
|
|
83
|
+
if (!audMatch) {
|
|
84
|
+
logger.warn({
|
|
85
|
+
tokenAudiences,
|
|
86
|
+
expectedAudiences,
|
|
87
|
+
}, 'JWT audience does not match any configured network');
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
65
90
|
logger.debug({
|
|
66
91
|
userId: payload.sub,
|
|
67
92
|
accessToken: jwt,
|
package/dist/config/Config.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export declare const serverConfigSchema: z.ZodObject<{
|
|
|
13
13
|
tls: z.ZodOptional<z.ZodBoolean>;
|
|
14
14
|
requestSizeLimit: z.ZodDefault<z.ZodString>;
|
|
15
15
|
requestRateLimit: z.ZodDefault<z.ZodNumber>;
|
|
16
|
+
trustProxy: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber, z.ZodString]>>;
|
|
16
17
|
admin: z.ZodOptional<z.ZodString>;
|
|
17
18
|
}, z.core.$strip>;
|
|
18
19
|
export declare const rawConfigSchema: z.ZodObject<{
|
|
@@ -30,15 +31,16 @@ export declare const rawConfigSchema: z.ZodObject<{
|
|
|
30
31
|
tls: z.ZodOptional<z.ZodBoolean>;
|
|
31
32
|
requestSizeLimit: z.ZodDefault<z.ZodString>;
|
|
32
33
|
requestRateLimit: z.ZodDefault<z.ZodNumber>;
|
|
34
|
+
trustProxy: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber, z.ZodString]>>;
|
|
33
35
|
admin: z.ZodOptional<z.ZodString>;
|
|
34
36
|
}, z.core.$strip>>;
|
|
35
37
|
logging: z.ZodOptional<z.ZodPipe<z.ZodTransform<{}, unknown>, z.ZodObject<{
|
|
36
38
|
level: z.ZodOptional<z.ZodEnum<{
|
|
39
|
+
error: "error";
|
|
37
40
|
trace: "trace";
|
|
38
41
|
debug: "debug";
|
|
39
42
|
info: "info";
|
|
40
43
|
warn: "warn";
|
|
41
|
-
error: "error";
|
|
42
44
|
fatal: "fatal";
|
|
43
45
|
}>>;
|
|
44
46
|
format: z.ZodOptional<z.ZodEnum<{
|
|
@@ -188,15 +190,16 @@ export declare const configSchema: z.ZodObject<{
|
|
|
188
190
|
tls: z.ZodOptional<z.ZodBoolean>;
|
|
189
191
|
requestSizeLimit: z.ZodDefault<z.ZodString>;
|
|
190
192
|
requestRateLimit: z.ZodDefault<z.ZodNumber>;
|
|
193
|
+
trustProxy: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber, z.ZodString]>>;
|
|
191
194
|
admin: z.ZodOptional<z.ZodString>;
|
|
192
195
|
}, z.core.$strip>>;
|
|
193
196
|
logging: z.ZodOptional<z.ZodPipe<z.ZodTransform<{}, unknown>, z.ZodObject<{
|
|
194
197
|
level: z.ZodOptional<z.ZodEnum<{
|
|
198
|
+
error: "error";
|
|
195
199
|
trace: "trace";
|
|
196
200
|
debug: "debug";
|
|
197
201
|
info: "info";
|
|
198
202
|
warn: "warn";
|
|
199
|
-
error: "error";
|
|
200
203
|
fatal: "fatal";
|
|
201
204
|
}>>;
|
|
202
205
|
format: z.ZodOptional<z.ZodEnum<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/config/Config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AASvB,eAAO,MAAM,gBAAgB;;;;iBAY3B,CAAA;AAEF,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/config/Config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AASvB,eAAO,MAAM,gBAAgB;;;;iBAY3B,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;iBAiD7B,CAAA;AAiCF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAO1B,CAAA;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOvB,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AACzD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAC7D,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AACvD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA"}
|
package/dist/config/Config.js
CHANGED
|
@@ -48,6 +48,12 @@ export const serverConfigSchema = z.object({
|
|
|
48
48
|
requestRateLimit: z.number().default(10000).meta({
|
|
49
49
|
description: 'The maximum number of requests per minute from a single IP address. Defaults to 10000.',
|
|
50
50
|
}),
|
|
51
|
+
trustProxy: z
|
|
52
|
+
.union([z.boolean(), z.number().int().min(0), z.string()])
|
|
53
|
+
.default(false)
|
|
54
|
+
.meta({
|
|
55
|
+
description: 'Express trust proxy setting used to resolve client IP addresses when running behind reverse proxies/load balancers. Set this correctly in production (for example 1 for a single trusted proxy hop). Defaults to false.',
|
|
56
|
+
}),
|
|
51
57
|
admin: z.string().optional().meta({
|
|
52
58
|
description: 'The JWT claim (e.g. "sub") identifying the admin user. If set, requests with a matching claim will be granted admin privileges.',
|
|
53
59
|
}),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { expect, test } from '
|
|
3
|
+
import { expect, test } from 'vitest';
|
|
4
4
|
import { ConfigUtils } from './ConfigUtils.js';
|
|
5
5
|
test('config from json file', async () => {
|
|
6
6
|
const resp = ConfigUtils.loadConfigFile('../test/config.json');
|
|
@@ -7,6 +7,7 @@ export declare const dappController: (kernelInfo: KernelInfoConfig, dappUrl: str
|
|
|
7
7
|
status: import("./rpc-gen/typings.js").Status;
|
|
8
8
|
connect: import("./rpc-gen/typings.js").Connect;
|
|
9
9
|
disconnect: import("./rpc-gen/typings.js").Disconnect;
|
|
10
|
+
isConnected: import("./rpc-gen/typings.js").IsConnected;
|
|
10
11
|
getActiveNetwork: import("./rpc-gen/typings.js").GetActiveNetwork;
|
|
11
12
|
prepareExecute: import("./rpc-gen/typings.js").PrepareExecute;
|
|
12
13
|
signMessage: import("./rpc-gen/typings.js").SignMessage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/dapp-api/controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAEH,WAAW,EAEd,MAAM,kCAAkC,CAAA;AAYzC,OAAO,EAAE,KAAK,EAAe,MAAM,mCAAmC,CAAA;AAQtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAC5E,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAI7B,eAAO,MAAM,cAAc,GACvB,YAAY,gBAAgB,EAC5B,SAAS,MAAM,EACf,SAAS,MAAM,EACf,OAAO,KAAK,EACZ,qBAAqB,mBAAmB,EACxC,SAAS,MAAM,EACf,QAAQ,MAAM,GAAG,IAAI,EACrB,UAAU,WAAW
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/dapp-api/controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAEH,WAAW,EAEd,MAAM,kCAAkC,CAAA;AAYzC,OAAO,EAAE,KAAK,EAAe,MAAM,mCAAmC,CAAA;AAQtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAC5E,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAI7B,eAAO,MAAM,cAAc,GACvB,YAAY,gBAAgB,EAC5B,SAAS,MAAM,EACf,SAAS,MAAM,EACf,OAAO,KAAK,EACZ,qBAAqB,mBAAmB,EACxC,SAAS,MAAM,EACf,QAAQ,MAAM,GAAG,IAAI,EACrB,UAAU,WAAW;;;;;;;;;;;;;;;CAmTxB,CAAA"}
|
|
@@ -54,6 +54,7 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
|
|
|
54
54
|
},
|
|
55
55
|
};
|
|
56
56
|
notifier.emit('statusChanged', statusEvent);
|
|
57
|
+
notifier.emit('connected', statusEvent);
|
|
57
58
|
return connection;
|
|
58
59
|
},
|
|
59
60
|
disconnect: async () => {
|
|
@@ -80,6 +81,30 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
|
|
|
80
81
|
}
|
|
81
82
|
return null;
|
|
82
83
|
},
|
|
84
|
+
isConnected: async () => {
|
|
85
|
+
if (!context || !(await store.getSession())) {
|
|
86
|
+
return {
|
|
87
|
+
isConnected: false,
|
|
88
|
+
isNetworkConnected: false,
|
|
89
|
+
networkReason: 'Unauthenticated',
|
|
90
|
+
userUrl: `${userUrl}/login/`,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
const network = await store.getCurrentNetwork();
|
|
94
|
+
const ledgerClient = new LedgerClient({
|
|
95
|
+
baseUrl: new URL(network.ledgerApi.baseUrl),
|
|
96
|
+
logger,
|
|
97
|
+
accessTokenProvider: AuthTokenProvider.fromToken(context.accessToken, logger),
|
|
98
|
+
});
|
|
99
|
+
const status = await networkStatus(ledgerClient);
|
|
100
|
+
return {
|
|
101
|
+
isConnected: true,
|
|
102
|
+
reason: 'OK',
|
|
103
|
+
isNetworkConnected: status.isConnected,
|
|
104
|
+
networkReason: status.reason ? status.reason : 'OK',
|
|
105
|
+
userUrl: `${userUrl}/login/`,
|
|
106
|
+
};
|
|
107
|
+
},
|
|
83
108
|
ledgerApi: async (params) => {
|
|
84
109
|
const network = await store.getCurrentNetwork();
|
|
85
110
|
const ledgerClient = new LedgerClient({
|
|
@@ -118,11 +143,13 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
|
|
|
118
143
|
const notifier = notificationService.getNotifier(userId);
|
|
119
144
|
params.commandId = params.commandId || v4();
|
|
120
145
|
const commandId = params.commandId;
|
|
146
|
+
const transactionId = v4();
|
|
121
147
|
notifier.emit('txChanged', { status: 'pending', commandId });
|
|
122
148
|
const synchronizerId = network.synchronizerId ??
|
|
123
149
|
(await ledgerClient.getSynchronizerId());
|
|
124
150
|
const response = await prepareSubmission(context.userId, wallet.partyId, synchronizerId, params, ledgerClient);
|
|
125
151
|
const transaction = {
|
|
152
|
+
id: transactionId,
|
|
126
153
|
commandId,
|
|
127
154
|
status: 'pending',
|
|
128
155
|
preparedTransaction: response.preparedTransaction,
|
|
@@ -140,10 +167,10 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
|
|
|
140
167
|
confirmationRequestTrafficCostEstimation: response.costEstimation
|
|
141
168
|
?.confirmationRequestTrafficCostEstimation,
|
|
142
169
|
}, 'prepared transaction traffic estimation');
|
|
143
|
-
store.setTransaction(transaction);
|
|
170
|
+
await store.setTransaction(transaction);
|
|
144
171
|
return {
|
|
145
172
|
// closeafteraction query param flag makes approving or deleting tx close the popup
|
|
146
|
-
userUrl: `${userUrl}/approve/index.html?commandId=${commandId}&closeafteraction`,
|
|
173
|
+
userUrl: `${userUrl}/approve/index.html?transactionId=${transactionId}&commandId=${commandId}&closeafteraction`,
|
|
147
174
|
};
|
|
148
175
|
},
|
|
149
176
|
status: async () => {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Status } from './typings.js';
|
|
2
2
|
import { Connect } from './typings.js';
|
|
3
3
|
import { Disconnect } from './typings.js';
|
|
4
|
+
import { IsConnected } from './typings.js';
|
|
4
5
|
import { GetActiveNetwork } from './typings.js';
|
|
5
6
|
import { PrepareExecute } from './typings.js';
|
|
6
7
|
import { SignMessage } from './typings.js';
|
|
@@ -15,6 +16,7 @@ export type Methods = {
|
|
|
15
16
|
status: Status;
|
|
16
17
|
connect: Connect;
|
|
17
18
|
disconnect: Disconnect;
|
|
19
|
+
isConnected: IsConnected;
|
|
18
20
|
getActiveNetwork: GetActiveNetwork;
|
|
19
21
|
prepareExecute: PrepareExecute;
|
|
20
22
|
signMessage: SignMessage;
|
|
@@ -30,6 +32,7 @@ declare function buildController(methods: Methods): {
|
|
|
30
32
|
status: Status;
|
|
31
33
|
connect: Connect;
|
|
32
34
|
disconnect: Disconnect;
|
|
35
|
+
isConnected: IsConnected;
|
|
33
36
|
getActiveNetwork: GetActiveNetwork;
|
|
34
37
|
prepareExecute: PrepareExecute;
|
|
35
38
|
signMessage: SignMessage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dapp-api/rpc-gen/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,MAAM,MAAM,OAAO,GAAG;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,UAAU,CAAA;IACtB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,cAAc,EAAE,cAAc,CAAA;IAC9B,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,eAAe,EAAE,eAAe,CAAA;IAChC,eAAe,EAAE,eAAe,CAAA;IAChC,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,YAAY,EAAE,YAAY,CAAA;IAC1B,SAAS,EAAE,SAAS,CAAA;CACvB,CAAA;AAED,iBAAS,eAAe,CAAC,OAAO,EAAE,OAAO
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dapp-api/rpc-gen/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,MAAM,MAAM,OAAO,GAAG;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,UAAU,CAAA;IACtB,WAAW,EAAE,WAAW,CAAA;IACxB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,cAAc,EAAE,cAAc,CAAA;IAC9B,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,eAAe,EAAE,eAAe,CAAA;IAChC,eAAe,EAAE,eAAe,CAAA;IAChC,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,YAAY,EAAE,YAAY,CAAA;IAC1B,SAAS,EAAE,SAAS,CAAA;CACvB,CAAA;AAED,iBAAS,eAAe,CAAC,OAAO,EAAE,OAAO;;;;;;;;;;;;;;;EAiBxC;AAED,eAAe,eAAe,CAAA"}
|
|
@@ -5,6 +5,7 @@ function buildController(methods) {
|
|
|
5
5
|
status: methods.status,
|
|
6
6
|
connect: methods.connect,
|
|
7
7
|
disconnect: methods.disconnect,
|
|
8
|
+
isConnected: methods.isConnected,
|
|
8
9
|
getActiveNetwork: methods.getActiveNetwork,
|
|
9
10
|
prepareExecute: methods.prepareExecute,
|
|
10
11
|
signMessage: methods.signMessage,
|
|
@@ -152,7 +152,7 @@ export interface Provider {
|
|
|
152
152
|
* Whether or not the user is authenticated with the Wallet.
|
|
153
153
|
*
|
|
154
154
|
*/
|
|
155
|
-
export type
|
|
155
|
+
export type IsConnectedValue = boolean;
|
|
156
156
|
/**
|
|
157
157
|
*
|
|
158
158
|
* Reason for the wallet state, e.g., 'no signing provider matched'.
|
|
@@ -172,7 +172,7 @@ export type IsNetworkConnected = boolean;
|
|
|
172
172
|
*/
|
|
173
173
|
export type NetworkReason = string;
|
|
174
174
|
export interface ConnectResult {
|
|
175
|
-
isConnected:
|
|
175
|
+
isConnected: IsConnectedValue;
|
|
176
176
|
reason?: Reason;
|
|
177
177
|
isNetworkConnected: IsNetworkConnected;
|
|
178
178
|
networkReason?: NetworkReason;
|
|
@@ -499,6 +499,7 @@ export type TxChangedEvent = TxChangedPendingEvent | TxChangedSignedEvent | TxCh
|
|
|
499
499
|
export type Status = () => Promise<StatusEvent>;
|
|
500
500
|
export type Connect = () => Promise<ConnectResult>;
|
|
501
501
|
export type Disconnect = () => Promise<Null>;
|
|
502
|
+
export type IsConnected = () => Promise<ConnectResult>;
|
|
502
503
|
export type GetActiveNetwork = () => Promise<Network>;
|
|
503
504
|
export type PrepareExecute = (params: PrepareExecuteParams) => Promise<PrepareExecuteResult>;
|
|
504
505
|
export type SignMessage = (params: SignMessageParams) => Promise<SignMessageResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typings.d.ts","sourceRoot":"","sources":["../../../src/dapp-api/rpc-gen/typings.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAE9B;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACrB;AACD;;;;GAIG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,CAAA;AAC1B;;;;GAIG;AACH,MAAM,MAAM,KAAK,GAAG,KAAK,EAAE,CAAA;AAC3B;;;;GAIG;AACH,MAAM,MAAM,MAAM,GAAG,KAAK,EAAE,CAAA;AAC5B;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAA;AAC/B;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAA;AAC/B;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAA;AACrC;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAA;AACnC;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAC9B,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,cAAc,CAAC,EAAE,cAAc,CAAA;CAClC;AACD;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,EAAE,CAAA;AACpD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAC9B;;;;GAIG;AACH,MAAM,MAAM,4BAA4B,GAAG,SAAS,EAAE,CAAA;AACtD;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAA;AAC5B,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAA;AACvE,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAA;AAC7B,MAAM,WAAW,IAAI;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACrB;AACD;;;;GAIG;AACH,MAAM,WAAW,KAAK;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACrB;AACD;;;;GAIG;AACH,MAAM,WAAW,IAAI;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACrB;AACD;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAA;AAC/B;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAA;AAC5B;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAA;AACtE;;;;GAIG;AACH,MAAM,MAAM,GAAG,GAAG,MAAM,CAAA;AACxB;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAA;AAC5B;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,UAAU,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,OAAO,CAAC,EAAE,OAAO,CAAA;CACpB;AACD;;;;GAIG;AACH,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"typings.d.ts","sourceRoot":"","sources":["../../../src/dapp-api/rpc-gen/typings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { expect, test } from '
|
|
3
|
+
import { expect, test } from 'vitest';
|
|
4
4
|
import cors from 'cors';
|
|
5
5
|
import request from 'supertest';
|
|
6
6
|
import express from 'express';
|
package/dist/env.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export declare class Env {
|
|
|
3
3
|
static FIREBLOCKS_SECRET: () => string | undefined;
|
|
4
4
|
static BLOCKDAEMON_API_URL: (fallback: string) => string;
|
|
5
5
|
static BLOCKDAEMON_API_KEY: (fallback: string) => string;
|
|
6
|
+
static BLOCKDAEMON_CAIP2: (fallback: string) => string;
|
|
6
7
|
static get(key: string, options: {
|
|
7
8
|
required?: boolean;
|
|
8
9
|
fallback: string;
|
package/dist/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAGA,qBAAa,GAAG;IACZ,MAAM,CAAC,kBAAkB,2BAAsC;IAC/D,MAAM,CAAC,iBAAiB,2BAAqC;IAC7D,MAAM,CAAC,mBAAmB,GAAI,UAAU,MAAM,YACE;IAChD,MAAM,CAAC,mBAAmB,GAAI,UAAU,MAAM,YACE;
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAGA,qBAAa,GAAG;IACZ,MAAM,CAAC,kBAAkB,2BAAsC;IAC/D,MAAM,CAAC,iBAAiB,2BAAqC;IAC7D,MAAM,CAAC,mBAAmB,GAAI,UAAU,MAAM,YACE;IAChD,MAAM,CAAC,mBAAmB,GAAI,UAAU,MAAM,YACE;IAChD,MAAM,CAAC,iBAAiB,GAAI,UAAU,MAAM,YACE;IAE9C,MAAM,CAAC,GAAG,CACN,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAClD,MAAM;IACT,MAAM,CAAC,GAAG,CACN,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;QAAE,QAAQ,EAAE,IAAI,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/C,MAAM;IACT,MAAM,CAAC,GAAG,CACN,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,GAChE,MAAM,GAAG,SAAS;CAcxB"}
|
package/dist/env.js
CHANGED
|
@@ -5,6 +5,7 @@ export class Env {
|
|
|
5
5
|
static { this.FIREBLOCKS_SECRET = () => Env.get('FIREBLOCKS_SECRET'); }
|
|
6
6
|
static { this.BLOCKDAEMON_API_URL = (fallback) => Env.get('BLOCKDAEMON_API_URL', { fallback }); }
|
|
7
7
|
static { this.BLOCKDAEMON_API_KEY = (fallback) => Env.get('BLOCKDAEMON_API_KEY', { fallback }); }
|
|
8
|
+
static { this.BLOCKDAEMON_CAIP2 = (fallback) => Env.get('BLOCKDAEMON_CAIP2', { fallback }); }
|
|
8
9
|
static get(key, options) {
|
|
9
10
|
const { fallback, required } = options || {};
|
|
10
11
|
const value = process.env[key]?.trim() || fallback?.trim();
|
package/dist/example-config.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"example-config.d.ts","sourceRoot":"","sources":["../src/example-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"example-config.d.ts","sourceRoot":"","sources":["../src/example-config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,wBAkGqB"}
|
package/dist/example-config.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ declare const options: {
|
|
|
5
5
|
configExample: boolean;
|
|
6
6
|
port?: string | true;
|
|
7
7
|
logFormat?: "json" | "pretty";
|
|
8
|
-
logLevel?: "
|
|
8
|
+
logLevel?: "error" | "trace" | "debug" | "info" | "warn" | "fatal";
|
|
9
9
|
};
|
|
10
10
|
export type CliOptions = typeof options;
|
|
11
11
|
export {};
|
package/dist/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAuB7B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AA6IvC,wBAAsB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iBA4IhE"}
|
package/dist/init.js
CHANGED
|
@@ -14,7 +14,7 @@ import BlockdaemonSigningProvider from '@canton-network/core-signing-blockdaemon
|
|
|
14
14
|
import { jwtAuthService } from './auth/jwt-auth-service.js';
|
|
15
15
|
import express from 'express';
|
|
16
16
|
import { jwtAuth } from './middleware/jwtAuth.js';
|
|
17
|
-
import { rateLimiter } from './middleware/rateLimit.js';
|
|
17
|
+
import { authenticatedRateLimiter, preAuthIpRateLimiter, rateLimiter, } from './middleware/rateLimit.js';
|
|
18
18
|
import { deriveUrls } from './config/ConfigUtils.js';
|
|
19
19
|
import { existsSync } from 'fs';
|
|
20
20
|
import { GATEWAY_VERSION } from './version.js';
|
|
@@ -118,11 +118,13 @@ export async function initialize(opts, logger) {
|
|
|
118
118
|
const port = opts.port ? Number(opts.port) : config.server.port;
|
|
119
119
|
const { serviceUrl, publicUrl, dappApiUrl, userApiUrl } = deriveUrls(config, port);
|
|
120
120
|
const app = express();
|
|
121
|
+
app.set('trust proxy', config.server.trustProxy);
|
|
121
122
|
const server = app.listen(port, () => {
|
|
122
123
|
logger.info(`Remote Wallet Gateway starting on ${serviceUrl})`);
|
|
123
124
|
});
|
|
124
125
|
app.use(express.json({ limit: config.server.requestSizeLimit }));
|
|
125
|
-
const
|
|
126
|
+
const preAuthRateLimit = preAuthIpRateLimiter(config.server.requestRateLimit);
|
|
127
|
+
const postAuthRateLimit = authenticatedRateLimiter(config.server.requestRateLimit);
|
|
126
128
|
const healthCheckRateLimit = rateLimiter(1000); // Allow more requests for health checks
|
|
127
129
|
app.use('/healthz', healthCheckRateLimit, (_req, res) => res.status(200).send('OK'));
|
|
128
130
|
app.use('/readyz', healthCheckRateLimit, (_req, res) => {
|
|
@@ -156,6 +158,7 @@ export async function initialize(opts, logger) {
|
|
|
156
158
|
[SigningProvider.BLOCKDAEMON]: new BlockdaemonSigningProvider({
|
|
157
159
|
baseUrl: Env.BLOCKDAEMON_API_URL('http://localhost:5080/api/cwp/canton'),
|
|
158
160
|
apiKey: Env.BLOCKDAEMON_API_KEY(''),
|
|
161
|
+
caip2: Env.BLOCKDAEMON_CAIP2('canton:testnet'),
|
|
159
162
|
}),
|
|
160
163
|
};
|
|
161
164
|
const allowedPaths = {
|
|
@@ -168,8 +171,10 @@ export async function initialize(opts, logger) {
|
|
|
168
171
|
],
|
|
169
172
|
};
|
|
170
173
|
app.use('/api/*splat', express.json());
|
|
171
|
-
app.use('/api/*splat',
|
|
172
|
-
app.use('/api/*splat', jwtAuth(authService, logger.child({ component: 'JwtHandler' }))
|
|
174
|
+
app.use('/api/*splat', preAuthRateLimit);
|
|
175
|
+
app.use('/api/*splat', jwtAuth(authService, logger.child({ component: 'JwtHandler' })));
|
|
176
|
+
app.use('/api/*splat', postAuthRateLimit);
|
|
177
|
+
app.use('/api/*splat', sessionHandler(store, allowedPaths, logger.child({ component: 'SessionHandler' })));
|
|
173
178
|
logger.info({ ...config.server, port }, 'Server configuration');
|
|
174
179
|
const kernelInfo = config.kernel;
|
|
175
180
|
// register dapp API handlers
|
|
@@ -1,29 +1,31 @@
|
|
|
1
1
|
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import {
|
|
3
|
+
import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
4
4
|
import { pino } from 'pino';
|
|
5
5
|
import { sink } from 'pino-test';
|
|
6
|
-
const mockLedgerGet =
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
6
|
+
const { mockLedgerGet, mockLedgerPost, mockLedgerGrantUserRights } = vi.hoisted(() => ({
|
|
7
|
+
mockLedgerGet: vi.fn(),
|
|
8
|
+
mockLedgerPost: vi.fn(),
|
|
9
|
+
mockLedgerGrantUserRights: vi.fn(),
|
|
10
|
+
}));
|
|
11
|
+
vi.mock('@canton-network/core-ledger-client', () => ({
|
|
12
|
+
Signature: vi.fn(),
|
|
13
|
+
SignatureFormat: vi.fn(),
|
|
14
|
+
SigningAlgorithmSpec: vi.fn(),
|
|
15
|
+
MultiTransactionSignatures: vi.fn(),
|
|
16
|
+
SignedTopologyTransaction: vi.fn(),
|
|
17
|
+
LedgerClient: vi.fn(function LedgerClientMock() {
|
|
16
18
|
return {
|
|
17
19
|
getWithRetry: mockLedgerGet,
|
|
18
20
|
postWithRetry: mockLedgerPost,
|
|
19
21
|
waitForPartyAndGrantUserRights: mockLedgerGrantUserRights,
|
|
20
|
-
generateTopology:
|
|
22
|
+
generateTopology: vi.fn().mockResolvedValue({
|
|
21
23
|
partyId: 'party2::mypublickey',
|
|
22
24
|
publicKeyFingerprint: 'mypublickey',
|
|
23
25
|
topologyTransactions: ['tx1'],
|
|
24
26
|
multiHash: 'combinedHash',
|
|
25
27
|
}),
|
|
26
|
-
allocateExternalParty:
|
|
28
|
+
allocateExternalParty: vi
|
|
27
29
|
.fn()
|
|
28
30
|
.mockResolvedValue({ partyId: 'party2::mypublickey' }),
|
|
29
31
|
};
|
|
@@ -60,10 +62,10 @@ describe('PartyAllocationService', () => {
|
|
|
60
62
|
const pas = await import('./party-allocation-service.js');
|
|
61
63
|
// Mock AccessTokenProvider
|
|
62
64
|
const mockAccessTokenProvider = {
|
|
63
|
-
getAccessToken:
|
|
65
|
+
getAccessToken: vi
|
|
64
66
|
.fn()
|
|
65
67
|
.mockResolvedValue('admin.jwt'),
|
|
66
|
-
getAuthContext:
|
|
68
|
+
getAuthContext: vi
|
|
67
69
|
.fn()
|
|
68
70
|
.mockResolvedValue({
|
|
69
71
|
userId: 'admin',
|
|
@@ -76,9 +78,9 @@ describe('PartyAllocationService', () => {
|
|
|
76
78
|
httpLedgerUrl: network.ledgerApi.baseUrl,
|
|
77
79
|
logger: mockLogger,
|
|
78
80
|
});
|
|
79
|
-
|
|
81
|
+
vi.spyOn(service, 'createFingerprintFromKey').mockReturnValue('mypublickey');
|
|
80
82
|
});
|
|
81
|
-
afterEach(() =>
|
|
83
|
+
afterEach(() => vi.restoreAllMocks());
|
|
82
84
|
it('allocates an internal party', async () => {
|
|
83
85
|
mockLedgerGet.mockResolvedValueOnce({
|
|
84
86
|
participantId: 'participant1::participantid',
|
|
@@ -12,6 +12,7 @@ export declare class TransactionService {
|
|
|
12
12
|
private signingDrivers;
|
|
13
13
|
private notifier;
|
|
14
14
|
constructor(store: Store, logger: Logger, signingDrivers: Partial<Record<SigningProvider, SigningDriverInterface>> | undefined, notifier: Notifier);
|
|
15
|
+
private loadPreparedTransactionForSigning;
|
|
15
16
|
signWithParticipant(wallet: Wallet): SignResultSigned;
|
|
16
17
|
signWithWalletKernel(userId: UserId, wallet: Wallet, signParams: SignParams): Promise<SignResultSigned>;
|
|
17
18
|
signWithBlockdaemon(userId: UserId, wallet: Wallet, signParams: SignParams): Promise<SignResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-service.d.ts","sourceRoot":"","sources":["../../src/ledger/transaction-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AACjE,OAAO,EACH,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACV,MAAM,mCAAmC,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAGH,sBAAsB,EACtB,eAAe,EAElB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACH,aAAa,EACb,aAAa,EACb,UAAU,EACV,gBAAgB,EACnB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAA;AAYjE,qBAAa,kBAAkB;IAEvB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;IAGtB,OAAO,CAAC,QAAQ;gBALR,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,OAAO,CAC3B,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAClD,YAAK,EACE,QAAQ,EAAE,QAAQ;
|
|
1
|
+
{"version":3,"file":"transaction-service.d.ts","sourceRoot":"","sources":["../../src/ledger/transaction-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AACjE,OAAO,EACH,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACV,MAAM,mCAAmC,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAGH,sBAAsB,EACtB,eAAe,EAElB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACH,aAAa,EACb,aAAa,EACb,UAAU,EACV,gBAAgB,EACnB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAA;AAYjE,qBAAa,kBAAkB;IAEvB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;IAGtB,OAAO,CAAC,QAAQ;gBALR,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,OAAO,CAC3B,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAClD,YAAK,EACE,QAAQ,EAAE,QAAQ;YAGhB,iCAAiC;IAWxC,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB;IAS/C,oBAAoB,CAC7B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,GACvB,OAAO,CAAC,gBAAgB,CAAC;IAqDf,mBAAmB,CAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,GACvB,OAAO,CAAC,UAAU,CAAC;IAwGT,kBAAkB,CAC3B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,GACvB,OAAO,CAAC,UAAU,CAAC;IA4GT,sBAAsB,CAC/B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,OAAO,GACjB,OAAO,CAAC,aAAa,CAAC;IAyCZ,mBAAmB,CAC5B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,GAC3B,OAAO,CAAC,aAAa,CAAC;CAuD5B"}
|