@canton-network/wallet-gateway-remote 1.3.0 → 1.5.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/README.md +1 -1
- package/dist/auth/jwt-auth-service.d.ts.map +1 -1
- package/dist/auth/jwt-auth-service.js +6 -5
- package/dist/auth/jwt-auth-service.test.d.ts +2 -0
- package/dist/auth/jwt-auth-service.test.d.ts.map +1 -0
- package/dist/auth/jwt-auth-service.test.js +259 -0
- package/dist/auth/jwt-unsafe-auth-service.test.d.ts +2 -0
- package/dist/auth/jwt-unsafe-auth-service.test.d.ts.map +1 -0
- package/dist/auth/jwt-unsafe-auth-service.test.js +120 -0
- package/dist/config/Config.d.ts +64 -8
- package/dist/config/Config.d.ts.map +1 -1
- package/dist/config/Config.js +1 -0
- package/dist/config/ConfigUtils.d.ts.map +1 -1
- package/dist/config/ConfigUtils.js +3 -0
- 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 +87 -26
- package/dist/dapp-api/controller.test.d.ts +2 -0
- package/dist/dapp-api/controller.test.d.ts.map +1 -0
- package/dist/dapp-api/controller.test.js +516 -0
- 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 +99 -14
- package/dist/dapp-api/rpc-gen/typings.d.ts.map +1 -1
- package/dist/dapp-api/server.d.ts.map +1 -1
- package/dist/dapp-api/server.js +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +4 -6
- package/dist/ledger/transaction-service.d.ts +14 -11
- package/dist/ledger/transaction-service.d.ts.map +1 -1
- package/dist/ledger/transaction-service.js +95 -8
- package/dist/ledger/transaction-service.test.d.ts +2 -0
- package/dist/ledger/transaction-service.test.d.ts.map +1 -0
- package/dist/ledger/transaction-service.test.js +356 -0
- package/dist/ledger/wallet-allocation/signing-providers/fireblocks-wallet-allocator.d.ts +5 -2
- package/dist/ledger/wallet-allocation/signing-providers/fireblocks-wallet-allocator.d.ts.map +1 -1
- package/dist/ledger/wallet-allocation/signing-providers/fireblocks-wallet-allocator.js +7 -6
- package/dist/ledger/wallet-allocation/wallet-allocation-service.d.ts +11 -5
- package/dist/ledger/wallet-allocation/wallet-allocation-service.d.ts.map +1 -1
- package/dist/ledger/wallet-allocation/wallet-allocation-service.js +28 -14
- package/dist/ledger/wallet-allocation/wallet-allocation-service.test.js +550 -19
- package/dist/ledger/wallet-sync-service.js +3 -3
- package/dist/middleware/apiKeyAuth.d.ts +6 -0
- package/dist/middleware/apiKeyAuth.d.ts.map +1 -0
- package/dist/middleware/apiKeyAuth.js +88 -0
- package/dist/middleware/apiKeyAuth.test.d.ts +2 -0
- package/dist/middleware/apiKeyAuth.test.d.ts.map +1 -0
- package/dist/middleware/apiKeyAuth.test.js +126 -0
- package/dist/middleware/jsonRpcHandler.d.ts +11 -1
- package/dist/middleware/jsonRpcHandler.d.ts.map +1 -1
- package/dist/middleware/jsonRpcHandler.js +14 -15
- package/dist/middleware/jsonRpcHandler.test.d.ts +2 -0
- package/dist/middleware/jsonRpcHandler.test.d.ts.map +1 -0
- package/dist/middleware/jsonRpcHandler.test.js +254 -0
- package/dist/middleware/jwtAuth.d.ts.map +1 -1
- package/dist/middleware/jwtAuth.js +4 -0
- package/dist/middleware/jwtAuth.test.d.ts +2 -0
- package/dist/middleware/jwtAuth.test.d.ts.map +1 -0
- package/dist/middleware/jwtAuth.test.js +93 -0
- package/dist/middleware/rateLimit.js +2 -2
- package/dist/middleware/rateLimit.test.js +26 -0
- package/dist/middleware/sessionHandler.js +1 -1
- package/dist/middleware/sessionHandler.test.d.ts +2 -0
- package/dist/middleware/sessionHandler.test.d.ts.map +1 -0
- package/dist/middleware/sessionHandler.test.js +121 -0
- package/dist/notification/NotificationService.test.d.ts +2 -0
- package/dist/notification/NotificationService.test.d.ts.map +1 -0
- package/dist/notification/NotificationService.test.js +110 -0
- package/dist/signing/signing-drivers.d.ts +7 -0
- package/dist/signing/signing-drivers.d.ts.map +1 -0
- package/dist/signing/signing-drivers.js +3 -0
- package/dist/user-api/controller.d.ts +12 -4
- package/dist/user-api/controller.d.ts.map +1 -1
- package/dist/user-api/controller.js +330 -95
- package/dist/user-api/controller.test.d.ts +2 -0
- package/dist/user-api/controller.test.d.ts.map +1 -0
- package/dist/user-api/controller.test.js +862 -0
- package/dist/user-api/rpc-gen/index.d.ts +30 -0
- package/dist/user-api/rpc-gen/index.d.ts.map +1 -1
- package/dist/user-api/rpc-gen/index.js +10 -0
- package/dist/user-api/rpc-gen/typings.d.ts +170 -25
- package/dist/user-api/rpc-gen/typings.d.ts.map +1 -1
- package/dist/user-api/server.test.js +53 -0
- package/dist/utils.d.ts +19 -5
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +53 -2
- package/dist/utils.test.d.ts +2 -0
- package/dist/utils.test.d.ts.map +1 -0
- package/dist/utils.test.js +24 -0
- 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 +4 -5
- package/dist/web/frontend/assets/404-MVLWUPwN.js +5 -0
- package/dist/web/frontend/assets/activities-DaWkmGqA.js +61 -0
- package/dist/web/frontend/assets/addIdentityProvider--rBb0ihb.js +28 -0
- package/dist/web/frontend/assets/addNetwork-C6UDsRkU.js +38 -0
- package/dist/web/frontend/assets/addParty-B3fFD1eM.js +45 -0
- package/dist/web/frontend/assets/approve-WbGL4E82.js +21 -0
- package/dist/web/frontend/assets/callback--tihEryB.js +1 -0
- package/dist/web/frontend/assets/identityProviders-Dra4qG6t.js +71 -0
- package/dist/web/frontend/assets/index-Bm76pXA_.js +91 -0
- package/dist/web/frontend/assets/index-D1dC4Cl9.js +4477 -0
- package/dist/web/frontend/assets/login-BC8a-kD_.js +10 -0
- package/dist/web/frontend/assets/networks-B3ztsogL.js +73 -0
- package/dist/web/frontend/assets/reviewIdentityProvider-Co420Dbk.js +43 -0
- package/dist/web/frontend/assets/reviewNetwork-B-Sh8pCH.js +43 -0
- package/dist/web/frontend/assets/{settings-B1ga2TK0.js → settings-DvyUjqLl.js} +1 -1
- package/dist/web/frontend/assets/state-Bq65GwdF.js +1 -0
- package/dist/web/frontend/assets/{utils-CT9Hzi7v.js → utils-B2iziW8V.js} +1 -1
- 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 +3 -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 -5
- package/dist/web/frontend/parties/index.html +4 -4
- package/dist/web/frontend/settings/index.html +3 -3
- package/package.json +40 -33
- package/dist/web/frontend/assets/404-B-o9ppJB.js +0 -5
- package/dist/web/frontend/assets/activities-CGjCIjUH.js +0 -61
- package/dist/web/frontend/assets/addIdentityProvider-CR4Wm9Tl.js +0 -28
- package/dist/web/frontend/assets/addNetwork-Dx0-SN4j.js +0 -38
- package/dist/web/frontend/assets/addParty-COhk_rFn.js +0 -41
- package/dist/web/frontend/assets/approve-B2w66l0J.js +0 -21
- package/dist/web/frontend/assets/callback-BTVon_yQ.js +0 -1
- package/dist/web/frontend/assets/identityProviders-CK8zSrd3.js +0 -71
- package/dist/web/frontend/assets/index-CF4BKzgl.js +0 -91
- package/dist/web/frontend/assets/index-DWz_3f3y.js +0 -1
- package/dist/web/frontend/assets/index-_pMHlJoE.js +0 -4042
- package/dist/web/frontend/assets/login-CVoPNVDw.js +0 -10
- package/dist/web/frontend/assets/networks-D1nPvUzM.js +0 -73
- package/dist/web/frontend/assets/reviewIdentityProvider-CNSf2qQv.js +0 -43
- package/dist/web/frontend/assets/reviewNetwork-DGLK-Ume.js +0 -43
- package/dist/web/frontend/assets/state-B2k3ak7d.js +0 -1
|
@@ -4,7 +4,8 @@ import { assertConnected, AuthTokenProvider, } from '@canton-network/core-wallet
|
|
|
4
4
|
import buildController from './rpc-gen/index.js';
|
|
5
5
|
import { LedgerClient, } from '@canton-network/core-ledger-client';
|
|
6
6
|
import { v4 } from 'uuid';
|
|
7
|
-
import { networkStatus, ledgerPrepareParams } from '../utils.js';
|
|
7
|
+
import { networkStatus, ledgerPrepareParams, logDynamically } from '../utils.js';
|
|
8
|
+
import { rpcErrors } from '@canton-network/core-rpc-errors';
|
|
8
9
|
export const dappController = (kernelInfo, dappUrl, userUrl, store, notificationService, _logger, origin, context) => {
|
|
9
10
|
const logger = _logger.child({ component: 'dapp-controller' });
|
|
10
11
|
return buildController({
|
|
@@ -127,6 +128,7 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
|
|
|
127
128
|
},
|
|
128
129
|
prepareExecute: async (params) => {
|
|
129
130
|
const wallet = await store.getPrimaryWallet();
|
|
131
|
+
const wallets = await store.getWallets();
|
|
130
132
|
const network = await store.getCurrentNetwork();
|
|
131
133
|
if (context === undefined) {
|
|
132
134
|
throw new Error('Unauthenticated context');
|
|
@@ -134,26 +136,54 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
|
|
|
134
136
|
if (wallet === undefined) {
|
|
135
137
|
throw new Error('No primary wallet found');
|
|
136
138
|
}
|
|
139
|
+
let userId = context.userId;
|
|
140
|
+
const accessTokenProvider = AuthTokenProvider.fromToken(context.accessToken, logger);
|
|
141
|
+
if (context?.isApiKey) {
|
|
142
|
+
logger.info('Authenticated with API Key, fetching m2m token for ledger access');
|
|
143
|
+
userId = context.ledgerUserId;
|
|
144
|
+
}
|
|
137
145
|
const ledgerClient = new LedgerClient({
|
|
138
146
|
baseUrl: new URL(network.ledgerApi.baseUrl),
|
|
139
147
|
logger,
|
|
140
|
-
accessTokenProvider
|
|
148
|
+
accessTokenProvider,
|
|
141
149
|
});
|
|
142
|
-
const userId = context.userId;
|
|
143
150
|
const notifier = notificationService.getNotifier(userId);
|
|
144
|
-
|
|
145
|
-
const commandId = params.commandId;
|
|
151
|
+
const commandId = params.commandId || v4();
|
|
146
152
|
const transactionId = v4();
|
|
147
153
|
notifier.emit('txChanged', { status: 'pending', commandId });
|
|
148
154
|
const synchronizerId = network.synchronizerId ??
|
|
149
155
|
(await ledgerClient.getSynchronizerId());
|
|
150
|
-
|
|
156
|
+
let actAs = [wallet.partyId];
|
|
157
|
+
if (params.actAs && params.actAs.length > 0) {
|
|
158
|
+
actAs = params.actAs;
|
|
159
|
+
for (const actingParty of actAs) {
|
|
160
|
+
if (wallets.find((w) => w.partyId === actingParty) ===
|
|
161
|
+
undefined) {
|
|
162
|
+
throw rpcErrors.invalidRequest(`Acting party ${actingParty} does not belong to user`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
logDynamically(logger, 'prepareExecute: Submitting request to ledger', {
|
|
167
|
+
info: { transactionId },
|
|
168
|
+
debug: { commandId, userId, actAs },
|
|
169
|
+
});
|
|
170
|
+
const actAsParty = params.actAs || [wallet.partyId];
|
|
171
|
+
const prepared = await prepareSubmission(context.userId, actAsParty, synchronizerId, params, ledgerClient);
|
|
172
|
+
logDynamically(logger, 'prepareExecute: Received response from ledger', {
|
|
173
|
+
info: { transactionId },
|
|
174
|
+
debug: {
|
|
175
|
+
commandId,
|
|
176
|
+
userId,
|
|
177
|
+
partyId: actAsParty,
|
|
178
|
+
prepared,
|
|
179
|
+
},
|
|
180
|
+
});
|
|
151
181
|
const transaction = {
|
|
152
182
|
id: transactionId,
|
|
153
183
|
commandId,
|
|
154
184
|
status: 'pending',
|
|
155
|
-
preparedTransaction:
|
|
156
|
-
preparedTransactionHash:
|
|
185
|
+
preparedTransaction: prepared.preparedTransaction,
|
|
186
|
+
preparedTransactionHash: prepared.preparedTransactionHash,
|
|
157
187
|
payload: params,
|
|
158
188
|
origin: origin || null,
|
|
159
189
|
createdAt: new Date(),
|
|
@@ -161,10 +191,10 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
|
|
|
161
191
|
logger.info({
|
|
162
192
|
actAs: params.actAs || [wallet.partyId],
|
|
163
193
|
readAs: params.readAs || [],
|
|
164
|
-
userId
|
|
194
|
+
userId,
|
|
165
195
|
commandId,
|
|
166
196
|
commands: params.commands?.[0],
|
|
167
|
-
confirmationRequestTrafficCostEstimation:
|
|
197
|
+
confirmationRequestTrafficCostEstimation: prepared.costEstimation
|
|
168
198
|
?.confirmationRequestTrafficCostEstimation,
|
|
169
199
|
}, 'prepared transaction traffic estimation');
|
|
170
200
|
await store.setTransaction(transaction);
|
|
@@ -221,21 +251,9 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
|
|
|
221
251
|
userUrl: `${userUrl}/login/`,
|
|
222
252
|
};
|
|
223
253
|
},
|
|
224
|
-
connected: async () => {
|
|
225
|
-
throw new Error('Only for events.');
|
|
226
|
-
},
|
|
227
|
-
onStatusChanged: async () => {
|
|
228
|
-
throw new Error('Only for events.');
|
|
229
|
-
},
|
|
230
|
-
accountsChanged: async () => {
|
|
231
|
-
throw new Error('Only for events.');
|
|
232
|
-
},
|
|
233
254
|
listAccounts: async () => {
|
|
234
255
|
return await store.getWallets();
|
|
235
256
|
},
|
|
236
|
-
txChanged: async () => {
|
|
237
|
-
throw new Error('Only for events.');
|
|
238
|
-
},
|
|
239
257
|
getActiveNetwork: async () => {
|
|
240
258
|
const network = await store.getCurrentNetwork();
|
|
241
259
|
return {
|
|
@@ -246,8 +264,36 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
|
|
|
246
264
|
: {}),
|
|
247
265
|
};
|
|
248
266
|
},
|
|
249
|
-
signMessage:
|
|
250
|
-
|
|
267
|
+
signMessage: async (params) => {
|
|
268
|
+
if (!params?.message)
|
|
269
|
+
throw new Error('Message is required');
|
|
270
|
+
const wallet = await store.getPrimaryWallet();
|
|
271
|
+
if (context === undefined) {
|
|
272
|
+
throw new Error('Unauthenticated context');
|
|
273
|
+
}
|
|
274
|
+
if (wallet === undefined) {
|
|
275
|
+
throw new Error('No primary wallet found');
|
|
276
|
+
}
|
|
277
|
+
const notifier = notificationService.getNotifier(context.userId);
|
|
278
|
+
const messageId = v4();
|
|
279
|
+
await store.setMessageRaw({
|
|
280
|
+
id: messageId,
|
|
281
|
+
status: 'pending',
|
|
282
|
+
userId: context.userId,
|
|
283
|
+
partyId: wallet.partyId,
|
|
284
|
+
publicKey: wallet.publicKey,
|
|
285
|
+
message: params.message,
|
|
286
|
+
origin: origin || null,
|
|
287
|
+
createdAt: new Date(),
|
|
288
|
+
});
|
|
289
|
+
notifier.emit('messageSignature', {
|
|
290
|
+
status: 'pending',
|
|
291
|
+
messageId,
|
|
292
|
+
});
|
|
293
|
+
return {
|
|
294
|
+
messageId,
|
|
295
|
+
userUrl: `${userUrl}/sign-message/index.html?messageId=${messageId}&closeafteraction`,
|
|
296
|
+
};
|
|
251
297
|
},
|
|
252
298
|
getPrimaryAccount: async function () {
|
|
253
299
|
const wallet = await store.getPrimaryWallet();
|
|
@@ -256,8 +302,23 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
|
|
|
256
302
|
}
|
|
257
303
|
return wallet;
|
|
258
304
|
},
|
|
305
|
+
connected: async () => {
|
|
306
|
+
throw new Error('Only for events.');
|
|
307
|
+
},
|
|
308
|
+
onStatusChanged: async () => {
|
|
309
|
+
throw new Error('Only for events.');
|
|
310
|
+
},
|
|
311
|
+
accountsChanged: async () => {
|
|
312
|
+
throw new Error('Only for events.');
|
|
313
|
+
},
|
|
314
|
+
txChanged: async () => {
|
|
315
|
+
throw new Error('Only for events.');
|
|
316
|
+
},
|
|
317
|
+
messageSignature: function () {
|
|
318
|
+
throw new Error('Only for events.');
|
|
319
|
+
},
|
|
259
320
|
});
|
|
260
321
|
};
|
|
261
|
-
async function prepareSubmission(userId,
|
|
262
|
-
return await ledgerClient.postWithRetry('/v2/interactive-submission/prepare', ledgerPrepareParams(userId,
|
|
322
|
+
async function prepareSubmission(userId, partyIds, synchronizerId, params, ledgerClient) {
|
|
323
|
+
return await ledgerClient.postWithRetry('/v2/interactive-submission/prepare', ledgerPrepareParams(userId, partyIds, synchronizerId, params));
|
|
263
324
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.test.d.ts","sourceRoot":"","sources":["../../src/dapp-api/controller.test.ts"],"names":[],"mappings":""}
|