@canton-network/wallet-gateway-remote 0.4.0 → 0.5.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/README.md +0 -12
- package/dist/auth/jwt-auth-service.d.ts +1 -1
- package/dist/auth/jwt-auth-service.d.ts.map +1 -1
- package/dist/auth/jwt-auth-service.js +11 -1
- package/dist/auth/jwt-unsafe-auth-service.d.ts +11 -0
- package/dist/auth/jwt-unsafe-auth-service.d.ts.map +1 -0
- package/dist/auth/jwt-unsafe-auth-service.js +50 -0
- package/dist/config/Config.d.ts +151 -37
- package/dist/config/Config.d.ts.map +1 -1
- package/dist/dapp-api/controller.d.ts +2 -0
- package/dist/dapp-api/controller.d.ts.map +1 -1
- package/dist/dapp-api/controller.js +28 -7
- package/dist/dapp-api/rpc-gen/index.d.ts +6 -0
- package/dist/dapp-api/rpc-gen/index.d.ts.map +1 -1
- package/dist/dapp-api/rpc-gen/index.js +2 -0
- package/dist/dapp-api/rpc-gen/typings.d.ts +26 -20
- package/dist/dapp-api/rpc-gen/typings.d.ts.map +1 -1
- package/dist/dapp-api/server.d.ts +2 -1
- package/dist/dapp-api/server.d.ts.map +1 -1
- package/dist/dapp-api/server.js +8 -3
- package/dist/dapp-api/server.test.js +11 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -1
- package/dist/init.d.ts +2 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +46 -23
- package/dist/ledger/party-allocation-service.d.ts +2 -1
- package/dist/ledger/party-allocation-service.d.ts.map +1 -1
- package/dist/ledger/party-allocation-service.js +4 -4
- package/dist/ledger/party-allocation-service.test.js +12 -3
- package/dist/ledger/wallet-sync-service.d.ts.map +1 -1
- package/dist/ledger/wallet-sync-service.js +2 -2
- package/dist/user-api/controller.d.ts.map +1 -1
- package/dist/user-api/controller.js +64 -33
- package/dist/user-api/rpc-gen/typings.d.ts +22 -12
- package/dist/user-api/rpc-gen/typings.d.ts.map +1 -1
- package/dist/user-api/server.d.ts +6 -5
- package/dist/user-api/server.d.ts.map +1 -1
- package/dist/user-api/server.js +2 -4
- package/dist/user-api/server.test.js +4 -3
- package/dist/web/frontend/404/index.html +3 -6
- package/dist/web/frontend/approve/index.html +5 -9
- package/dist/web/frontend/assets/{404-FxmR286l.js → 404-C4ltj2Y3.js} +3 -3
- package/dist/web/frontend/assets/approve-Drc1zW1z.js +157 -0
- package/dist/web/frontend/assets/callback-BBgKxZBh.js +1 -0
- package/dist/web/frontend/assets/handle-errors-C_r_-A1k.js +1 -0
- package/dist/web/frontend/assets/{index-BknZMPaI.css → index-HEe9--Xd.css} +1 -1
- package/dist/web/frontend/assets/{index-VtAAU1cN.js → index-_AVK9fEz.js} +67 -54
- package/dist/web/frontend/assets/login-x46HxVRr.js +159 -0
- package/dist/web/frontend/assets/{networks-CZV8G3N2.js → networks-DSlcKT60.js} +9 -9
- package/dist/web/frontend/assets/{state-DKGJ6EmM.js → state-BahUv9dS.js} +2 -2
- package/dist/web/frontend/assets/{wallets-DwPVJP85.js → wallets-BXR4V066.js} +6 -6
- package/dist/web/frontend/callback/index.html +3 -3
- package/dist/web/frontend/index.html +2 -5
- package/dist/web/frontend/login/index.html +5 -8
- package/dist/web/frontend/networks/index.html +6 -8
- package/dist/web/frontend/wallets/index.html +5 -9
- package/package.json +17 -17
- package/dist/web/frontend/assets/approve-BHHuvE3i.js +0 -157
- package/dist/web/frontend/assets/callback-D9y0DRns.js +0 -1
- package/dist/web/frontend/assets/handle-errors-BM-xvD4v.js +0 -1
- package/dist/web/frontend/assets/index-BPTkodPz.js +0 -1
- package/dist/web/frontend/assets/index-TZrNw7dA.css +0 -1
- package/dist/web/frontend/assets/login-DJofeRCg.js +0 -159
- package/dist/web/frontend/assets/rpc-client-TGo-LOnR.js +0 -1
- package/dist/web/frontend/assets/state-manager-BNW0y5PZ.js +0 -23
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
5
5
|
import { LedgerClient } from '@canton-network/core-ledger-client';
|
|
6
6
|
import buildController from './rpc-gen/index.js';
|
|
7
|
-
import { assertConnected,
|
|
7
|
+
import { assertConnected, AuthTokenProvider, } from '@canton-network/core-wallet-auth';
|
|
8
8
|
import { SigningProvider, } from '@canton-network/core-signing-lib';
|
|
9
9
|
import { PartyAllocationService, } from '../ledger/party-allocation-service.js';
|
|
10
10
|
import { WalletSyncService } from '../ledger/wallet-sync-service.js';
|
|
@@ -26,9 +26,13 @@ export const userController = (kernelInfo, store, notificationService, authConte
|
|
|
26
26
|
audience: network.auth.audience ?? '',
|
|
27
27
|
scope: network.auth.scope ?? '',
|
|
28
28
|
clientId: network.auth.clientId ?? '',
|
|
29
|
+
admin: {
|
|
30
|
+
clientId: network.auth.admin?.clientId ?? '',
|
|
31
|
+
clientSecret: network.auth.admin?.clientSecret ?? '',
|
|
32
|
+
},
|
|
29
33
|
};
|
|
30
34
|
}
|
|
31
|
-
else {
|
|
35
|
+
else if (network.auth.type === 'password') {
|
|
32
36
|
auth = {
|
|
33
37
|
type: 'password',
|
|
34
38
|
identityProviderId: network.auth.identityProviderId,
|
|
@@ -39,11 +43,49 @@ export const userController = (kernelInfo, store, notificationService, authConte
|
|
|
39
43
|
scope: network.auth.scope ?? '',
|
|
40
44
|
clientId: network.auth.clientId ?? '',
|
|
41
45
|
audience: network.auth.audience ?? '',
|
|
46
|
+
admin: {
|
|
47
|
+
clientId: network.auth.admin?.clientId ?? '',
|
|
48
|
+
clientSecret: network.auth.admin?.clientSecret ?? '',
|
|
49
|
+
},
|
|
42
50
|
};
|
|
43
51
|
}
|
|
52
|
+
else if (network.auth.type === 'client_credentials') {
|
|
53
|
+
auth = {
|
|
54
|
+
type: 'client_credentials',
|
|
55
|
+
identityProviderId: network.auth.identityProviderId,
|
|
56
|
+
issuer: network.auth.issuer ?? '',
|
|
57
|
+
configUrl: network.auth.configUrl ?? '',
|
|
58
|
+
audience: network.auth.audience ?? '',
|
|
59
|
+
scope: network.auth.scope ?? '',
|
|
60
|
+
clientId: network.auth.clientId ?? '',
|
|
61
|
+
clientSecret: network.auth.clientSecret ?? '',
|
|
62
|
+
admin: {
|
|
63
|
+
clientId: network.auth.admin?.clientId ?? '',
|
|
64
|
+
clientSecret: network.auth.admin?.clientSecret ?? '',
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
else if (network.auth.type === 'self_signed') {
|
|
69
|
+
auth = {
|
|
70
|
+
type: 'self_signed',
|
|
71
|
+
identityProviderId: network.auth.identityProviderId,
|
|
72
|
+
issuer: network.auth.issuer ?? '',
|
|
73
|
+
audience: network.auth.audience ?? '',
|
|
74
|
+
scope: network.auth.scope ?? '',
|
|
75
|
+
clientId: network.auth.clientId ?? '',
|
|
76
|
+
clientSecret: network.auth.clientSecret ?? '',
|
|
77
|
+
admin: {
|
|
78
|
+
clientId: network.auth.admin?.clientId ?? '',
|
|
79
|
+
clientSecret: network.auth.admin?.clientSecret ?? '',
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
throw new Error(`Unsupported auth type: ${network.auth.type}`);
|
|
85
|
+
}
|
|
44
86
|
const newNetwork = {
|
|
45
87
|
name: network.name,
|
|
46
|
-
|
|
88
|
+
id: network.id,
|
|
47
89
|
description: network.description,
|
|
48
90
|
synchronizerId: network.synchronizerId,
|
|
49
91
|
auth,
|
|
@@ -51,7 +93,7 @@ export const userController = (kernelInfo, store, notificationService, authConte
|
|
|
51
93
|
};
|
|
52
94
|
// TODO: Add an explicit updateNetwork method to the User API spec and controller
|
|
53
95
|
const existingNetworks = await store.listNetworks();
|
|
54
|
-
if (existingNetworks.find((n) => n.
|
|
96
|
+
if (existingNetworks.find((n) => n.id === newNetwork.id)) {
|
|
55
97
|
await store.updateNetwork(newNetwork);
|
|
56
98
|
}
|
|
57
99
|
else {
|
|
@@ -71,14 +113,8 @@ export const userController = (kernelInfo, store, notificationService, authConte
|
|
|
71
113
|
if (network === undefined) {
|
|
72
114
|
throw new Error('No network session found');
|
|
73
115
|
}
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
clientSecret: network.auth.admin.clientSecret,
|
|
77
|
-
scope: network.auth.scope,
|
|
78
|
-
audience: network.auth.audience,
|
|
79
|
-
});
|
|
80
|
-
logger.debug({ adminToken }, 'Fetched admin token for party allocation');
|
|
81
|
-
const partyAllocator = new PartyAllocationService(network.synchronizerId, adminToken, network.ledgerApi.baseUrl, logger);
|
|
116
|
+
const tokenProvider = new AuthTokenProvider(network.auth, logger);
|
|
117
|
+
const partyAllocator = new PartyAllocationService(network.synchronizerId, tokenProvider, network.ledgerApi.baseUrl, logger);
|
|
82
118
|
const driver = drivers[params.signingProviderId]?.controller(userId);
|
|
83
119
|
if (!driver) {
|
|
84
120
|
throw new Error(`Signing provider ${params.signingProviderId} not supported`);
|
|
@@ -110,7 +146,7 @@ export const userController = (kernelInfo, store, notificationService, authConte
|
|
|
110
146
|
}
|
|
111
147
|
const wallet = {
|
|
112
148
|
signingProviderId: params.signingProviderId,
|
|
113
|
-
|
|
149
|
+
networkId: params.networkId,
|
|
114
150
|
primary: params.primary ?? false,
|
|
115
151
|
publicKey: publicKey || party.namespace,
|
|
116
152
|
...party,
|
|
@@ -201,7 +237,12 @@ export const userController = (kernelInfo, store, notificationService, authConte
|
|
|
201
237
|
throw new Error('No network session found');
|
|
202
238
|
}
|
|
203
239
|
const notifier = notificationService.getNotifier(userId);
|
|
204
|
-
|
|
240
|
+
// Create AccessTokenProvider for user token
|
|
241
|
+
const userAccessTokenProvider = {
|
|
242
|
+
getUserAccessToken: async () => authContext.accessToken,
|
|
243
|
+
getAdminAccessToken: async () => authContext.accessToken,
|
|
244
|
+
};
|
|
245
|
+
const ledgerClient = new LedgerClient(new URL(network.ledgerApi.baseUrl), logger, false, undefined, userAccessTokenProvider);
|
|
205
246
|
switch (wallet.signingProviderId) {
|
|
206
247
|
case SigningProvider.PARTICIPANT: {
|
|
207
248
|
// Participant signing provider specific logic can be added here
|
|
@@ -273,7 +314,7 @@ export const userController = (kernelInfo, store, notificationService, authConte
|
|
|
273
314
|
addSession: async function (params) {
|
|
274
315
|
try {
|
|
275
316
|
await store.setSession({
|
|
276
|
-
network: params.
|
|
317
|
+
network: params.networkId,
|
|
277
318
|
accessToken: authContext?.accessToken || '',
|
|
278
319
|
});
|
|
279
320
|
const network = await store.getCurrentNetwork();
|
|
@@ -283,19 +324,12 @@ export const userController = (kernelInfo, store, notificationService, authConte
|
|
|
283
324
|
notifier.emit('onConnected', {
|
|
284
325
|
kernel: kernelInfo,
|
|
285
326
|
sessionToken: accessToken,
|
|
286
|
-
|
|
327
|
+
networkId: network.id,
|
|
287
328
|
});
|
|
288
329
|
return Promise.resolve({
|
|
289
330
|
accessToken,
|
|
331
|
+
network,
|
|
290
332
|
status: 'connected',
|
|
291
|
-
network: {
|
|
292
|
-
name: network.name,
|
|
293
|
-
chainId: network.chainId,
|
|
294
|
-
synchronizerId: network.synchronizerId,
|
|
295
|
-
description: network.description,
|
|
296
|
-
ledgerApi: network.ledgerApi,
|
|
297
|
-
auth: network.auth,
|
|
298
|
-
},
|
|
299
333
|
});
|
|
300
334
|
}
|
|
301
335
|
catch (error) {
|
|
@@ -312,16 +346,9 @@ export const userController = (kernelInfo, store, notificationService, authConte
|
|
|
312
346
|
return {
|
|
313
347
|
sessions: [
|
|
314
348
|
{
|
|
349
|
+
network,
|
|
315
350
|
accessToken: authContext.accessToken,
|
|
316
351
|
status: 'connected',
|
|
317
|
-
network: {
|
|
318
|
-
name: network.name,
|
|
319
|
-
chainId: network.chainId,
|
|
320
|
-
synchronizerId: network.synchronizerId,
|
|
321
|
-
description: network.description,
|
|
322
|
-
ledgerApi: network.ledgerApi,
|
|
323
|
-
auth: network.auth,
|
|
324
|
-
},
|
|
325
352
|
},
|
|
326
353
|
],
|
|
327
354
|
};
|
|
@@ -329,7 +356,11 @@ export const userController = (kernelInfo, store, notificationService, authConte
|
|
|
329
356
|
syncWallets: async function () {
|
|
330
357
|
const network = await store.getCurrentNetwork();
|
|
331
358
|
assertConnected(authContext);
|
|
332
|
-
const
|
|
359
|
+
const userAccessTokenProvider = {
|
|
360
|
+
getUserAccessToken: async () => authContext.accessToken,
|
|
361
|
+
getAdminAccessToken: async () => authContext.accessToken,
|
|
362
|
+
};
|
|
363
|
+
const service = new WalletSyncService(store, new LedgerClient(new URL(network.ledgerApi.baseUrl), logger, false, undefined, userAccessTokenProvider), authContext, logger);
|
|
333
364
|
return await service.syncWallets();
|
|
334
365
|
},
|
|
335
366
|
});
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* Network ID
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
export type NetworkId = string;
|
|
1
7
|
/**
|
|
2
8
|
*
|
|
3
9
|
* Name of network
|
|
@@ -16,20 +22,21 @@ export type Description = string;
|
|
|
16
22
|
*
|
|
17
23
|
*/
|
|
18
24
|
export type SynchronizerId = string;
|
|
19
|
-
/**
|
|
20
|
-
*
|
|
21
|
-
* Network Id
|
|
22
|
-
*
|
|
23
|
-
*/
|
|
24
|
-
export type ChainId = string;
|
|
25
25
|
export type Type = string;
|
|
26
|
+
export type IdentityProviderId = string;
|
|
26
27
|
export type TokenUrl = string;
|
|
27
28
|
export type GrantType = string;
|
|
28
29
|
export type Scope = string;
|
|
29
30
|
export type ClientId = string;
|
|
31
|
+
export type ClientSecret = string;
|
|
30
32
|
export type Issuer = string;
|
|
31
33
|
export type ConfigUrl = string;
|
|
32
34
|
export type Audience = string;
|
|
35
|
+
export interface Admin {
|
|
36
|
+
clientId: ClientId;
|
|
37
|
+
clientSecret: ClientSecret;
|
|
38
|
+
[k: string]: any;
|
|
39
|
+
}
|
|
33
40
|
/**
|
|
34
41
|
*
|
|
35
42
|
* Represents the type of auth (implicit or password) for a specified network
|
|
@@ -37,13 +44,16 @@ export type Audience = string;
|
|
|
37
44
|
*/
|
|
38
45
|
export interface Auth {
|
|
39
46
|
authType?: Type;
|
|
47
|
+
identityProviderId: IdentityProviderId;
|
|
40
48
|
tokenUrl?: TokenUrl;
|
|
41
49
|
grantType?: GrantType;
|
|
42
50
|
scope?: Scope;
|
|
43
51
|
clientId?: ClientId;
|
|
52
|
+
clientSecret?: ClientSecret;
|
|
44
53
|
issuer: Issuer;
|
|
45
54
|
configUrl: ConfigUrl;
|
|
46
55
|
audience?: Audience;
|
|
56
|
+
admin?: Admin;
|
|
47
57
|
[k: string]: any;
|
|
48
58
|
}
|
|
49
59
|
/**
|
|
@@ -58,10 +68,10 @@ export type LedgerApi = string;
|
|
|
58
68
|
*
|
|
59
69
|
*/
|
|
60
70
|
export interface Network {
|
|
71
|
+
id: NetworkId;
|
|
61
72
|
name: Name;
|
|
62
73
|
description: Description;
|
|
63
74
|
synchronizerId: SynchronizerId;
|
|
64
|
-
chainId: ChainId;
|
|
65
75
|
auth: Auth;
|
|
66
76
|
ledgerApi: LedgerApi;
|
|
67
77
|
}
|
|
@@ -95,7 +105,7 @@ export type PartyId = string;
|
|
|
95
105
|
* Filter wallets by network IDs.
|
|
96
106
|
*
|
|
97
107
|
*/
|
|
98
|
-
export type
|
|
108
|
+
export type NetworkIds = NetworkId[];
|
|
99
109
|
/**
|
|
100
110
|
*
|
|
101
111
|
* Filter wallets by signing provider IDs.
|
|
@@ -108,7 +118,7 @@ export type SigningProviderIds = SigningProviderId[];
|
|
|
108
118
|
*
|
|
109
119
|
*/
|
|
110
120
|
export interface WalletFilter {
|
|
111
|
-
|
|
121
|
+
networkIds?: NetworkIds;
|
|
112
122
|
signingProviderIds?: SigningProviderIds;
|
|
113
123
|
[k: string]: any;
|
|
114
124
|
}
|
|
@@ -151,7 +161,7 @@ export interface Wallet {
|
|
|
151
161
|
hint: Hint;
|
|
152
162
|
publicKey: PublicKey;
|
|
153
163
|
namespace: Namespace;
|
|
154
|
-
|
|
164
|
+
networkId: NetworkId;
|
|
155
165
|
signingProviderId: SigningProviderId;
|
|
156
166
|
[k: string]: any;
|
|
157
167
|
}
|
|
@@ -187,7 +197,7 @@ export interface RemoveNetworkParams {
|
|
|
187
197
|
export interface CreateWalletParams {
|
|
188
198
|
primary?: Primary;
|
|
189
199
|
partyHint: PartyHint;
|
|
190
|
-
|
|
200
|
+
networkId: NetworkId;
|
|
191
201
|
signingProviderId: SigningProviderId;
|
|
192
202
|
[k: string]: any;
|
|
193
203
|
}
|
|
@@ -218,7 +228,7 @@ export interface ExecuteParams {
|
|
|
218
228
|
[k: string]: any;
|
|
219
229
|
}
|
|
220
230
|
export interface AddSessionParams {
|
|
221
|
-
|
|
231
|
+
networkId: NetworkId;
|
|
222
232
|
[k: string]: any;
|
|
223
233
|
}
|
|
224
234
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typings.d.ts","sourceRoot":"","sources":["../../../src/user-api/rpc-gen/typings.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"typings.d.ts","sourceRoot":"","sources":["../../../src/user-api/rpc-gen/typings.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAC9B;;;;GAIG;AACH,MAAM,MAAM,IAAI,GAAG,MAAM,CAAA;AACzB;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAChC;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAA;AACnC,MAAM,MAAM,IAAI,GAAG,MAAM,CAAA;AACzB,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAA;AACvC,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAA;AAC7B,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAC9B,MAAM,MAAM,KAAK,GAAG,MAAM,CAAA;AAC1B,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAA;AAC7B,MAAM,MAAM,YAAY,GAAG,MAAM,CAAA;AACjC,MAAM,MAAM,MAAM,GAAG,MAAM,CAAA;AAC3B,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAC9B,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAA;AAC7B,MAAM,WAAW,KAAK;IAClB,QAAQ,EAAE,QAAQ,CAAA;IAClB,YAAY,EAAE,YAAY,CAAA;IAC1B,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AACD;;;;GAIG;AACH,MAAM,WAAW,IAAI;IACjB,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AACD;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAC9B;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACpB,EAAE,EAAE,SAAS,CAAA;IACb,IAAI,EAAE,IAAI,CAAA;IACV,WAAW,EAAE,WAAW,CAAA;IACxB,cAAc,EAAE,cAAc,CAAA;IAC9B,IAAI,EAAE,IAAI,CAAA;IACV,SAAS,EAAE,SAAS,CAAA;CACvB;AACD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAChC;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,CAAA;AAC7B;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAC9B;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAA;AACtC,MAAM,MAAM,OAAO,GAAG,MAAM,CAAA;AAC5B;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,EAAE,CAAA;AACpC;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,EAAE,CAAA;AACpD;;;;GAIG;AACH,MAAM,WAAW,YAAY;IACzB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AACD,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAA;AACxC,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAA;AAC5C;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAC9B,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAC9B,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAA;AAC7B;;;;GAIG;AACH,MAAM,MAAM,IAAI,GAAG,MAAM,CAAA;AACzB;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAC9B;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAC9B;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,IAAI,CAAA;IACV,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AACD,MAAM,MAAM,KAAK,GAAG,MAAM,EAAE,CAAA;AAC5B,MAAM,MAAM,OAAO,GAAG,MAAM,EAAE,CAAA;AAC9B,MAAM,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAA;AAChC;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAChC,MAAM,MAAM,MAAM,GAAG,WAAW,GAAG,cAAc,CAAA;AACjD;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,WAAW,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;CACjB;AACD,MAAM,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAA;AAChC,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AACD,MAAM,WAAW,mBAAmB;IAChC,WAAW,EAAE,WAAW,CAAA;IACxB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AACD,MAAM,WAAW,kBAAkB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AACD,MAAM,WAAW,sBAAsB;IACnC,OAAO,EAAE,OAAO,CAAA;IAChB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AACD,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AACD,MAAM,WAAW,iBAAiB;IAC9B,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AACD,MAAM,WAAW,UAAU;IACvB,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,uBAAuB,EAAE,uBAAuB,CAAA;IAChD,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AACD,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,QAAQ,CAAA;IAClB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AACD,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,SAAS,CAAA;IACpB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AACD;;;;GAIG;AACH,MAAM,MAAM,IAAI,GAAG,IAAI,CAAA;AACvB,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AACD,MAAM,WAAW,iBAAiB;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACrB;AACD;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,EAAE,CAAA;AACxC;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,KAAK,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AACD,MAAM,WAAW,UAAU;IACvB,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,QAAQ,CAAA;IAClB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AACD,MAAM,WAAW,aAAa;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACrB;AACD,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,EAAE,QAAQ,CAAA;IAClB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AACD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,WAAW,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;CACjB;AACD,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,EAAE,QAAQ,CAAA;IAClB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AACD;;;;GAIG;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AACpE,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAC1E,MAAM,MAAM,YAAY,GAAG,CACvB,MAAM,EAAE,kBAAkB,KACzB,OAAO,CAAC,kBAAkB,CAAC,CAAA;AAChC,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAChF,MAAM,MAAM,YAAY,GAAG,CACvB,MAAM,EAAE,kBAAkB,KACzB,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAC/B,MAAM,MAAM,WAAW,GAAG,CACtB,MAAM,EAAE,iBAAiB,KACxB,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAC/B,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAC1D,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;AAC9D,MAAM,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;AACvE,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAA;AAC5D,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAChF,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAA"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Store } from '@canton-network/core-wallet-store';
|
|
1
|
+
import { SigningDriverInterface, SigningProvider } from '@canton-network/core-signing-lib';
|
|
3
2
|
import { AuthAware } from '@canton-network/core-wallet-auth';
|
|
4
|
-
import {
|
|
3
|
+
import { Store } from '@canton-network/core-wallet-store';
|
|
4
|
+
import express from 'express';
|
|
5
|
+
import { Logger } from 'pino';
|
|
5
6
|
import { KernelInfo } from '../config/Config.js';
|
|
6
|
-
import {
|
|
7
|
-
export declare const user: (route: string, app: express.Express, kernelInfo: KernelInfo, notificationService: NotificationService, drivers: Partial<Record<SigningProvider, SigningDriverInterface>>, store: Store & AuthAware<Store>) => express.Express;
|
|
7
|
+
import { NotificationService } from '../notification/NotificationService.js';
|
|
8
|
+
export declare const user: (route: string, app: express.Express, logger: Logger, kernelInfo: KernelInfo, notificationService: NotificationService, drivers: Partial<Record<SigningProvider, SigningDriverInterface>>, store: Store & AuthAware<Store>) => express.Express;
|
|
8
9
|
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/user-api/server.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/user-api/server.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,sBAAsB,EACtB,eAAe,EAClB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAA;AACzD,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAI5E,eAAO,MAAM,IAAI,GACb,OAAO,MAAM,EACb,KAAK,OAAO,CAAC,OAAO,EACpB,QAAQ,MAAM,EACd,YAAY,UAAU,EACtB,qBAAqB,mBAAmB,EACxC,SAAS,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAAC,EACjE,OAAO,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,oBAiBlC,CAAA"}
|
package/dist/user-api/server.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { userController } from './controller.js';
|
|
4
|
-
import { pino } from 'pino';
|
|
5
3
|
import { jsonRpcHandler } from '../middleware/jsonRpcHandler.js';
|
|
6
|
-
|
|
7
|
-
export const user = (route, app, kernelInfo, notificationService, drivers, store) => {
|
|
4
|
+
import { userController } from './controller.js';
|
|
5
|
+
export const user = (route, app, logger, kernelInfo, notificationService, drivers, store) => {
|
|
8
6
|
app.use(route, (req, res, next) => jsonRpcHandler({
|
|
9
7
|
controller: userController(kernelInfo, store.withAuthContext(req.authContext), notificationService, req.authContext, drivers, logger),
|
|
10
8
|
logger,
|
|
@@ -24,15 +24,16 @@ test('call listNetworks rpc', async () => {
|
|
|
24
24
|
const app = express();
|
|
25
25
|
app.use(cors());
|
|
26
26
|
app.use(express.json());
|
|
27
|
-
const response = await request(user('/api/v0/user', app, config.kernel, notificationService, drivers, store))
|
|
27
|
+
const response = await request(user('/api/v0/user', app, pino(sink()), config.kernel, notificationService, drivers, store))
|
|
28
28
|
.post('/api/v0/user')
|
|
29
29
|
.send({ jsonrpc: '2.0', id: 0, method: 'listNetworks', params: [] })
|
|
30
30
|
.set('Accept', 'application/json');
|
|
31
31
|
const json = await response.body.result;
|
|
32
32
|
expect(response.statusCode).toBe(200);
|
|
33
|
-
expect(json.networks.length).toBe(
|
|
33
|
+
expect(json.networks.length).toBe(5);
|
|
34
34
|
expect(json.networks[0].name).toBe('Local (password IDP)');
|
|
35
35
|
expect(json.networks[1].name).toBe('Local (OAuth IDP)');
|
|
36
36
|
expect(json.networks[2].name).toBe('Local (OAuth IDP - Client Credentials)');
|
|
37
|
-
expect(json.networks[3].name).toBe('
|
|
37
|
+
expect(json.networks[3].name).toBe('Local (Self signed)');
|
|
38
|
+
expect(json.networks[4].name).toBe('Devnet (Auth0)');
|
|
38
39
|
});
|
|
@@ -3,12 +3,9 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<title>Wallet Kernel - Not found</title>
|
|
6
|
-
<script type="module" crossorigin src="/assets/404-
|
|
7
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
8
|
-
<link rel="
|
|
9
|
-
<link rel="modulepreload" crossorigin href="/assets/index-BPTkodPz.js">
|
|
10
|
-
<link rel="stylesheet" crossorigin href="/assets/index-TZrNw7dA.css">
|
|
11
|
-
<link rel="stylesheet" crossorigin href="/assets/index-BknZMPaI.css">
|
|
6
|
+
<script type="module" crossorigin src="/assets/404-C4ltj2Y3.js"></script>
|
|
7
|
+
<link rel="modulepreload" crossorigin href="/assets/index-_AVK9fEz.js">
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-HEe9--Xd.css">
|
|
12
9
|
</head>
|
|
13
10
|
|
|
14
11
|
<body>
|
|
@@ -3,15 +3,11 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<title>Wallet Kernel - Approve Write Request</title>
|
|
6
|
-
<script type="module" crossorigin src="/assets/approve-
|
|
7
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
8
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
9
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
10
|
-
<link rel="
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/rpc-client-TGo-LOnR.js">
|
|
12
|
-
<link rel="modulepreload" crossorigin href="/assets/handle-errors-BM-xvD4v.js">
|
|
13
|
-
<link rel="stylesheet" crossorigin href="/assets/index-TZrNw7dA.css">
|
|
14
|
-
<link rel="stylesheet" crossorigin href="/assets/index-BknZMPaI.css">
|
|
6
|
+
<script type="module" crossorigin src="/assets/approve-Drc1zW1z.js"></script>
|
|
7
|
+
<link rel="modulepreload" crossorigin href="/assets/index-_AVK9fEz.js">
|
|
8
|
+
<link rel="modulepreload" crossorigin href="/assets/state-BahUv9dS.js">
|
|
9
|
+
<link rel="modulepreload" crossorigin href="/assets/handle-errors-C_r_-A1k.js">
|
|
10
|
+
<link rel="stylesheet" crossorigin href="/assets/index-HEe9--Xd.css">
|
|
15
11
|
</head>
|
|
16
12
|
|
|
17
13
|
<body>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import{i as k,a as z,x as O,t as P}from"./
|
|
1
|
+
import{i as k,a as z,x as O,t as P}from"./index-_AVK9fEz.js";var C=Object.create,s=Object.defineProperty,E=Object.getOwnPropertyDescriptor,b=(r,e)=>(e=Symbol[r])?e:Symbol.for("Symbol."+r),h=r=>{throw TypeError(r)},I=(r,e,a)=>e in r?s(r,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):r[e]=a,j=(r,e)=>s(r,"name",{value:e,configurable:!0}),A=r=>[,,,C((r==null?void 0:r[b("metadata")])??null)],D=["class","method","getter","setter","accessor","field","value","get","set"],w=r=>r!==void 0&&typeof r!="function"?h("Function expected"):r,F=(r,e,a,i,t)=>({kind:D[r],name:e,metadata:i,addInitializer:o=>a._?h("Already initialized"):t.push(w(o||null))}),M=(r,e)=>I(e,b("metadata"),r[3]),N=(r,e,a,i)=>{for(var t=0,o=r[e>>1],n=o&&o.length;t<n;t++)o[t].call(a);return i},T=(r,e,a,i,t,o)=>{var n,u,f,l=e&7,m=!1,x=0,g=r[x]||(r[x]=[]),d=l&&(t=t.prototype,l<5&&(l>3||!m)&&E(t,a));j(t,a);for(var _=i.length-1;_>=0;_--)f=F(l,a,u={},r[3],g),n=(0,i[_])(t,f),u._=1,w(n)&&(t=n);return M(r,t),d&&s(t,a,d),m?l^4?o:d:t},y,v,S;y=[P("user-ui-404")];const p=class p extends(S=k){connectedCallback(){super.connectedCallback()}render(){return O`
|
|
2
2
|
<div class="wrapper">
|
|
3
3
|
<not-found />
|
|
4
4
|
</div>
|
|
5
|
-
`}};
|
|
5
|
+
`}};p.styles=z`
|
|
6
6
|
:host {
|
|
7
7
|
display: block;
|
|
8
8
|
box-sizing: border-box;
|
|
@@ -13,4 +13,4 @@ import{i as k,a as z,x as O,t as P}from"./state-manager-BNW0y5PZ.js";import"./in
|
|
|
13
13
|
color: var(--text-color, #222);
|
|
14
14
|
padding: 20px;
|
|
15
15
|
}
|
|
16
|
-
`;let c=v
|
|
16
|
+
`;let c=p;v=A(S);c=T(v,0,"ApproveUi",y,c);N(v,1,c);
|