@canton-network/wallet-gateway-remote 0.9.2 → 0.10.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/dapp-api/controller.d.ts +1 -1
- package/dist/dapp-api/controller.d.ts.map +1 -1
- package/dist/dapp-api/controller.js +35 -19
- package/dist/dapp-api/rpc-gen/typings.d.ts +68 -25
- 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 +7 -4
- package/dist/dapp-api/server.test.js +7 -10
- package/dist/ledger/party-allocation-service.d.ts +7 -0
- package/dist/ledger/party-allocation-service.d.ts.map +1 -1
- package/dist/ledger/party-allocation-service.js +37 -1
- package/dist/ledger/party-allocation-service.test.js +3 -1
- package/dist/ledger/wallet-sync-service.d.ts +11 -1
- package/dist/ledger/wallet-sync-service.d.ts.map +1 -1
- package/dist/ledger/wallet-sync-service.js +121 -10
- package/dist/ledger/wallet-sync-service.test.d.ts +2 -0
- package/dist/ledger/wallet-sync-service.test.d.ts.map +1 -0
- package/dist/ledger/wallet-sync-service.test.js +163 -0
- package/dist/middleware/jsonRpcHandler.d.ts.map +1 -1
- package/dist/middleware/jsonRpcHandler.js +8 -0
- package/dist/user-api/controller.d.ts.map +1 -1
- package/dist/user-api/controller.js +33 -9
- package/dist/user-api/rpc-gen/typings.d.ts +8 -0
- package/dist/user-api/rpc-gen/typings.d.ts.map +1 -1
- package/dist/web/frontend/404/index.html +2 -2
- package/dist/web/frontend/approve/index.html +3 -3
- package/dist/web/frontend/assets/{404-Dget2-k2.js → 404-D9f6dBKB.js} +1 -1
- package/dist/web/frontend/assets/{approve-ChuS996j.js → approve-CvvaOTF9.js} +13 -11
- package/dist/web/frontend/assets/{callback-2I6lJV7y.js → callback-C2tlJhDI.js} +1 -1
- package/dist/web/frontend/assets/{index-DyLgNi-5.js → index-ChQxMkmX.js} +25 -25
- package/dist/web/frontend/assets/{login-DvWCqhsk.js → login-295tArUb.js} +1 -1
- package/dist/web/frontend/assets/{settings-DTCtvDW7.js → settings-DI34Qjg8.js} +1 -1
- package/dist/web/frontend/assets/{state-Ck_F88ae.js → state-DxRr-Cgg.js} +1 -1
- package/dist/web/frontend/assets/{wallets-DcuGVzJf.js → wallets-CMKMTBj2.js} +1 -1
- package/dist/web/frontend/callback/index.html +2 -2
- package/dist/web/frontend/index.html +1 -1
- package/dist/web/frontend/login/index.html +3 -3
- package/dist/web/frontend/settings/index.html +3 -3
- package/dist/web/frontend/wallets/index.html +3 -3
- package/package.json +17 -17
package/README.md
CHANGED
|
@@ -50,4 +50,4 @@ The JSON-RPC API specs from `api-specs/` are generated into strongly-typed metho
|
|
|
50
50
|
|
|
51
51
|
2. Place the `fireblocks_secret.key` file at the path `/splice-wallet-kernel/wallet-gateway/remote`
|
|
52
52
|
|
|
53
|
-
3. Create a file named `fireblocks_api.key` at the path `/splice-wallet-kernel/wallet-gateway/remote` and insert your Fireblocks API key into it
|
|
53
|
+
3. Create a file named `fireblocks_api.key` at the path `/splice-wallet-kernel/wallet-gateway/remote` and insert your Fireblocks API key into it (get it from `API User (ID)` column in fireblocks api users table). Make sure file doesn't end with new line character.
|
|
@@ -3,7 +3,7 @@ import { Store } from '@canton-network/core-wallet-store';
|
|
|
3
3
|
import { NotificationService } from '../notification/NotificationService.js';
|
|
4
4
|
import { KernelInfo as KernelInfoConfig } from '../config/Config.js';
|
|
5
5
|
import { Logger } from 'pino';
|
|
6
|
-
export declare const dappController: (kernelInfo: KernelInfoConfig, dappUrl: string, userUrl: string, store: Store, notificationService: NotificationService, _logger: Logger, context?: AuthContext) => {
|
|
6
|
+
export declare const dappController: (kernelInfo: KernelInfoConfig, dappUrl: string, userUrl: string, store: Store, notificationService: NotificationService, _logger: Logger, origin: string | null, context?: AuthContext) => {
|
|
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;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/dapp-api/controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAAmB,WAAW,EAAE,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/dapp-api/controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAAmB,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAS/E,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;AAG7B,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;;;;;;;;;;;;;CAmOxB,CAAA"}
|
|
@@ -6,20 +6,17 @@ import buildController from './rpc-gen/index.js';
|
|
|
6
6
|
import { LedgerClient, } from '@canton-network/core-ledger-client';
|
|
7
7
|
import { v4 } from 'uuid';
|
|
8
8
|
import { networkStatus, ledgerPrepareParams } from '../utils.js';
|
|
9
|
-
export const dappController = (kernelInfo, dappUrl, userUrl, store, notificationService, _logger, context) => {
|
|
9
|
+
export const dappController = (kernelInfo, dappUrl, userUrl, store, notificationService, _logger, origin, context) => {
|
|
10
10
|
const logger = _logger.child({ component: 'dapp-controller' });
|
|
11
11
|
return buildController({
|
|
12
12
|
connect: async () => {
|
|
13
13
|
if (!context || !(await store.getSession())) {
|
|
14
14
|
return {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
networkReason: 'Unauthenticated',
|
|
21
|
-
userUrl: `${userUrl}/login/`,
|
|
22
|
-
},
|
|
15
|
+
kernel: kernelInfo,
|
|
16
|
+
isConnected: false,
|
|
17
|
+
isNetworkConnected: false,
|
|
18
|
+
networkReason: 'Unauthenticated',
|
|
19
|
+
userUrl: `${userUrl}/login/`,
|
|
23
20
|
};
|
|
24
21
|
}
|
|
25
22
|
const network = await store.getCurrentNetwork();
|
|
@@ -31,14 +28,21 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
|
|
|
31
28
|
});
|
|
32
29
|
const status = await networkStatus(ledgerClient);
|
|
33
30
|
return {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
31
|
+
kernel: kernelInfo,
|
|
32
|
+
isConnected: true,
|
|
33
|
+
isNetworkConnected: status.isConnected,
|
|
34
|
+
networkReason: status.reason ? status.reason : 'OK',
|
|
35
|
+
network: {
|
|
36
|
+
networkId: network.id,
|
|
37
|
+
ledgerApi: {
|
|
38
|
+
baseUrl: network.ledgerApi.baseUrl,
|
|
39
|
+
},
|
|
41
40
|
},
|
|
41
|
+
session: {
|
|
42
|
+
accessToken: context.accessToken,
|
|
43
|
+
userId: context.userId,
|
|
44
|
+
},
|
|
45
|
+
userUrl: `${userUrl}/login/`,
|
|
42
46
|
};
|
|
43
47
|
},
|
|
44
48
|
disconnect: async () => {
|
|
@@ -107,14 +111,16 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
|
|
|
107
111
|
const synchronizerId = network.synchronizerId ??
|
|
108
112
|
(await ledgerClient.getSynchronizerId());
|
|
109
113
|
const { preparedTransactionHash, preparedTransaction = '' } = await prepareSubmission(context.userId, wallet.partyId, synchronizerId, params, ledgerClient);
|
|
110
|
-
|
|
114
|
+
const transaction = {
|
|
111
115
|
commandId,
|
|
112
116
|
status: 'pending',
|
|
113
117
|
preparedTransaction,
|
|
114
118
|
preparedTransactionHash,
|
|
115
119
|
payload: params,
|
|
120
|
+
origin: origin || null,
|
|
116
121
|
createdAt: new Date(),
|
|
117
|
-
}
|
|
122
|
+
};
|
|
123
|
+
store.setTransaction(transaction);
|
|
118
124
|
return {
|
|
119
125
|
userUrl: `${userUrl}/approve/index.html?commandId=${commandId}`,
|
|
120
126
|
};
|
|
@@ -158,7 +164,17 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
|
|
|
158
164
|
isConnected: true,
|
|
159
165
|
isNetworkConnected: status.isConnected,
|
|
160
166
|
networkReason: status.reason ? status.reason : 'OK',
|
|
161
|
-
|
|
167
|
+
network: {
|
|
168
|
+
networkId: network.id,
|
|
169
|
+
ledgerApi: {
|
|
170
|
+
baseUrl: network.ledgerApi.baseUrl,
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
session: {
|
|
174
|
+
accessToken: context.accessToken,
|
|
175
|
+
userId: context.userId,
|
|
176
|
+
},
|
|
177
|
+
userUrl: `${userUrl}/login/`,
|
|
162
178
|
};
|
|
163
179
|
},
|
|
164
180
|
onConnected: async () => {
|
|
@@ -100,6 +100,12 @@ export type ClientType = 'browser' | 'desktop' | 'mobile' | 'remote';
|
|
|
100
100
|
*
|
|
101
101
|
*/
|
|
102
102
|
export type Url = string;
|
|
103
|
+
/**
|
|
104
|
+
*
|
|
105
|
+
* A URL that points to a user interface.
|
|
106
|
+
*
|
|
107
|
+
*/
|
|
108
|
+
export type UserUrl = string;
|
|
103
109
|
/**
|
|
104
110
|
*
|
|
105
111
|
* Represents a Wallet Gateway.
|
|
@@ -109,6 +115,7 @@ export interface KernelInfo {
|
|
|
109
115
|
id: Id;
|
|
110
116
|
clientType: ClientType;
|
|
111
117
|
url?: Url;
|
|
118
|
+
userUrl?: UserUrl;
|
|
112
119
|
[k: string]: any;
|
|
113
120
|
}
|
|
114
121
|
/**
|
|
@@ -135,20 +142,66 @@ export type NetworkReason = string;
|
|
|
135
142
|
*
|
|
136
143
|
*/
|
|
137
144
|
export type NetworkId = string;
|
|
145
|
+
/**
|
|
146
|
+
*
|
|
147
|
+
* The base URL of the ledger API.
|
|
148
|
+
*
|
|
149
|
+
*/
|
|
150
|
+
export type BaseUrl = string;
|
|
151
|
+
/**
|
|
152
|
+
*
|
|
153
|
+
* Ledger API configuration.
|
|
154
|
+
*
|
|
155
|
+
*/
|
|
156
|
+
export interface LedgerApiConfig {
|
|
157
|
+
baseUrl: BaseUrl;
|
|
158
|
+
[k: string]: any;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
*
|
|
162
|
+
* Network information, if connected to a network.
|
|
163
|
+
*
|
|
164
|
+
*/
|
|
165
|
+
export interface Network {
|
|
166
|
+
networkId: NetworkId;
|
|
167
|
+
ledgerApi?: LedgerApiConfig;
|
|
168
|
+
[k: string]: any;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
*
|
|
172
|
+
* JWT authentication token.
|
|
173
|
+
*
|
|
174
|
+
*/
|
|
175
|
+
export type AccessToken = string;
|
|
176
|
+
/**
|
|
177
|
+
*
|
|
178
|
+
* The user identifier.
|
|
179
|
+
*
|
|
180
|
+
*/
|
|
181
|
+
export type UserId = string;
|
|
182
|
+
/**
|
|
183
|
+
*
|
|
184
|
+
* Session information, if authenticated.
|
|
185
|
+
*
|
|
186
|
+
*/
|
|
187
|
+
export interface Session {
|
|
188
|
+
accessToken: AccessToken;
|
|
189
|
+
userId: UserId;
|
|
190
|
+
[k: string]: any;
|
|
191
|
+
}
|
|
138
192
|
export interface StatusEvent {
|
|
139
193
|
kernel: KernelInfo;
|
|
140
194
|
isConnected: IsConnected;
|
|
141
195
|
isNetworkConnected: IsNetworkConnected;
|
|
142
196
|
networkReason?: NetworkReason;
|
|
143
|
-
|
|
197
|
+
network?: Network;
|
|
198
|
+
session?: Session;
|
|
199
|
+
[k: string]: any;
|
|
200
|
+
}
|
|
201
|
+
export interface ObjectOfUserUrlMkZ1IR2Z {
|
|
202
|
+
userUrl: UserUrl;
|
|
144
203
|
[k: string]: any;
|
|
145
204
|
}
|
|
146
|
-
/**
|
|
147
|
-
*
|
|
148
|
-
* JWT authentication token (if applicable).
|
|
149
|
-
*
|
|
150
|
-
*/
|
|
151
|
-
export type SessionToken = string;
|
|
152
205
|
export type Dar = string;
|
|
153
206
|
export type Dars = Dar[];
|
|
154
207
|
/**
|
|
@@ -173,12 +226,6 @@ export interface JsPrepareSubmissionResponse {
|
|
|
173
226
|
preparedTransactionHash?: PreparedTransactionHash;
|
|
174
227
|
[k: string]: any;
|
|
175
228
|
}
|
|
176
|
-
/**
|
|
177
|
-
*
|
|
178
|
-
* A URL that points to a user interface.
|
|
179
|
-
*
|
|
180
|
-
*/
|
|
181
|
-
export type UserUrl = string;
|
|
182
229
|
export type Response = string;
|
|
183
230
|
/**
|
|
184
231
|
*
|
|
@@ -382,17 +429,18 @@ export interface PrepareExecuteParams {
|
|
|
382
429
|
packageIdSelectionPreference?: PackageIdSelectionPreference;
|
|
383
430
|
[k: string]: any;
|
|
384
431
|
}
|
|
432
|
+
/**
|
|
433
|
+
*
|
|
434
|
+
* Ledger API request structure
|
|
435
|
+
*
|
|
436
|
+
*/
|
|
385
437
|
export interface LedgerApiParams {
|
|
386
438
|
requestMethod: RequestMethod;
|
|
387
439
|
resource: Resource;
|
|
388
440
|
body?: Body;
|
|
389
441
|
[k: string]: any;
|
|
390
442
|
}
|
|
391
|
-
export
|
|
392
|
-
status: StatusEvent;
|
|
393
|
-
sessionToken: SessionToken;
|
|
394
|
-
[k: string]: any;
|
|
395
|
-
}
|
|
443
|
+
export type StatusEventAsync = StatusEvent & ObjectOfUserUrlMkZ1IR2Z;
|
|
396
444
|
/**
|
|
397
445
|
*
|
|
398
446
|
* Represents a null value, used in responses where no data is returned.
|
|
@@ -417,11 +465,6 @@ export interface LedgerApiResult {
|
|
|
417
465
|
response: Response;
|
|
418
466
|
[k: string]: any;
|
|
419
467
|
}
|
|
420
|
-
export interface OnConnectedEvent {
|
|
421
|
-
status: StatusEvent;
|
|
422
|
-
sessionToken?: SessionToken;
|
|
423
|
-
[k: string]: any;
|
|
424
|
-
}
|
|
425
468
|
/**
|
|
426
469
|
*
|
|
427
470
|
* Event emitted when the user's accounts change.
|
|
@@ -446,13 +489,13 @@ export type TxChangedEvent = TxChangedPendingEvent | TxChangedSignedEvent | TxCh
|
|
|
446
489
|
*
|
|
447
490
|
*/
|
|
448
491
|
export type Status = () => Promise<StatusEvent>;
|
|
449
|
-
export type Connect = () => Promise<
|
|
492
|
+
export type Connect = () => Promise<StatusEventAsync>;
|
|
450
493
|
export type Disconnect = () => Promise<Null>;
|
|
451
494
|
export type DarsAvailable = () => Promise<DarsAvailableResult>;
|
|
452
495
|
export type PrepareReturn = (params: PrepareReturnParams) => Promise<PrepareReturnResult>;
|
|
453
496
|
export type PrepareExecute = (params: PrepareExecuteParams) => Promise<PrepareExecuteResult>;
|
|
454
497
|
export type LedgerApi = (params: LedgerApiParams) => Promise<LedgerApiResult>;
|
|
455
|
-
export type OnConnected = () => Promise<
|
|
498
|
+
export type OnConnected = () => Promise<StatusEvent>;
|
|
456
499
|
export type OnStatusChanged = () => Promise<StatusEvent>;
|
|
457
500
|
export type OnAccountsChanged = () => Promise<AccountsChangedEvent>;
|
|
458
501
|
export type RequestAccounts = () => Promise<RequestAccountsResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typings.d.ts","sourceRoot":"","sources":["../../../src/dapp-api/rpc-gen/typings.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAC9B;;;;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;IAC/B,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;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,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;AAC7D,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAA;AAC7B,MAAM,MAAM,IAAI,GAAG,MAAM,CAAA;AACzB;;;;GAIG;AACH,MAAM,MAAM,EAAE,GAAG,MAAM,CAAA;AACvB;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAA;AACpE;;;;GAIG;AACH,MAAM,MAAM,GAAG,GAAG,MAAM,CAAA;AACxB;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,EAAE,CAAA;IACN,UAAU,EAAE,UAAU,CAAA;IACtB,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AACD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,CAAA;AACjC;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAA;AACxC;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAA;AAClC;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAC9B,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,UAAU,CAAA;IAClB,WAAW,EAAE,WAAW,CAAA;IACxB,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,
|
|
1
|
+
{"version":3,"file":"typings.d.ts","sourceRoot":"","sources":["../../../src/dapp-api/rpc-gen/typings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/dapp-api/server.ts"],"names":[],"mappings":"AAGA,OAAO,OAAO,MAAM,SAAS,CAAA;AAG7B,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAG7B,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAE7B,OAAO,EACH,mBAAmB,EAEtB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAE9D,eAAO,MAAM,IAAI,GACb,OAAO,MAAM,EACb,KAAK,OAAO,CAAC,OAAO,EACpB,QAAQ,MAAM,EACd,QAAQ,MAAM,EACd,YAAY,UAAU,EACtB,SAAS,MAAM,EACf,SAAS,MAAM,EACf,cAAc,YAAY,EAC1B,qBAAqB,mBAAmB,EACxC,aAAa,WAAW,EACxB,OAAO,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/dapp-api/server.ts"],"names":[],"mappings":"AAGA,OAAO,OAAO,MAAM,SAAS,CAAA;AAG7B,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAG7B,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAE7B,OAAO,EACH,mBAAmB,EAEtB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAE9D,eAAO,MAAM,IAAI,GACb,OAAO,MAAM,EACb,KAAK,OAAO,CAAC,OAAO,EACpB,QAAQ,MAAM,EACd,QAAQ,MAAM,EACd,YAAY,UAAU,EACtB,SAAS,MAAM,EACf,SAAS,MAAM,EACf,cAAc,YAAY,EAC1B,qBAAqB,mBAAmB,EACxC,aAAa,WAAW,EACxB,OAAO,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,wFAgFlC,CAAA"}
|
package/dist/dapp-api/server.js
CHANGED
|
@@ -8,10 +8,13 @@ export const dapp = (route, app, logger, server, kernelInfo, dappUrl, userUrl, s
|
|
|
8
8
|
app.use(cors({
|
|
9
9
|
origin: serverConfig.allowedOrigins,
|
|
10
10
|
}));
|
|
11
|
-
app.use(route, (req, res, next) =>
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
app.use(route, (req, res, next) => {
|
|
12
|
+
const origin = req.headers.origin ?? null;
|
|
13
|
+
jsonRpcHandler({
|
|
14
|
+
controller: dappController(kernelInfo, dappUrl, userUrl, store.withAuthContext(req.authContext), notificationService, logger, origin, req.authContext),
|
|
15
|
+
logger,
|
|
16
|
+
})(req, res, next);
|
|
17
|
+
});
|
|
15
18
|
const io = new SocketIoServer(server, {
|
|
16
19
|
cors: {
|
|
17
20
|
origin: serverConfig.allowedOrigins,
|
|
@@ -40,17 +40,14 @@ test('call connect rpc', async () => {
|
|
|
40
40
|
id: 0,
|
|
41
41
|
jsonrpc: '2.0',
|
|
42
42
|
result: {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
id: 'remote-da',
|
|
47
|
-
clientType: 'remote',
|
|
48
|
-
},
|
|
49
|
-
isConnected: false,
|
|
50
|
-
isNetworkConnected: false,
|
|
51
|
-
networkReason: 'Unauthenticated',
|
|
52
|
-
userUrl: 'http://localhost:3030/login/',
|
|
43
|
+
kernel: {
|
|
44
|
+
id: 'remote-da',
|
|
45
|
+
clientType: 'remote',
|
|
53
46
|
},
|
|
47
|
+
isConnected: false,
|
|
48
|
+
isNetworkConnected: false,
|
|
49
|
+
networkReason: 'Unauthenticated',
|
|
50
|
+
userUrl: 'http://localhost:3030/login/',
|
|
54
51
|
},
|
|
55
52
|
});
|
|
56
53
|
});
|
|
@@ -40,6 +40,13 @@ export declare class PartyAllocationService {
|
|
|
40
40
|
* @param publicKey The public key of the user.
|
|
41
41
|
*/
|
|
42
42
|
createFingerprintFromKey(publicKey: string): string;
|
|
43
|
+
/**
|
|
44
|
+
* Normalizes a public key to base64 format.
|
|
45
|
+
* Converts hex format (Fireblocks) to base64, or returns base64 as-is.
|
|
46
|
+
* @param publicKey Public key in hex or base64 format
|
|
47
|
+
* @returns Public key in base64 format, or null if conversion fails
|
|
48
|
+
*/
|
|
49
|
+
normalizePublicKeyToBase64(publicKey: string): string | null;
|
|
43
50
|
/**
|
|
44
51
|
* Generate topology transactions
|
|
45
52
|
* @param hint A hint for the party ID.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"party-allocation-service.d.ts","sourceRoot":"","sources":["../../src/ledger/party-allocation-service.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,2BAA2B,EAE9B,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAE7B,MAAM,MAAM,cAAc,GAAG;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,KAAK,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAEpD;;GAEG;AACH,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,cAAc,CAAoB;gBAE9B,EACR,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,MAAM,EACN,WAAW,GACd,EAAE;QACC,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,mBAAmB,EAAE,mBAAmB,CAAA;QACxC,aAAa,EAAE,MAAM,CAAA;QACrB,MAAM,EAAE,MAAM,CAAA;QACd,WAAW,CAAC,EAAE,MAAM,CAAA;KACvB;IAYD;;;;OAIG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAE1E;;;;;;OAMG;IACG,aAAa,CACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,WAAW,GAC7B,OAAO,CAAC,cAAc,CAAC;IAoB1B;;;OAGG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAenD;;;;OAIG;IACG,4BAA4B,CAC9B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,2BAA2B,CAAC;IAevC;;;;;;OAMG;IACG,+BAA+B,CACjC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;YAgCJ,qBAAqB;
|
|
1
|
+
{"version":3,"file":"party-allocation-service.d.ts","sourceRoot":"","sources":["../../src/ledger/party-allocation-service.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,2BAA2B,EAE9B,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAE7B,MAAM,MAAM,cAAc,GAAG;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,KAAK,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAEpD;;GAEG;AACH,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,cAAc,CAAoB;gBAE9B,EACR,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,MAAM,EACN,WAAW,GACd,EAAE;QACC,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,mBAAmB,EAAE,mBAAmB,CAAA;QACxC,aAAa,EAAE,MAAM,CAAA;QACrB,MAAM,EAAE,MAAM,CAAA;QACd,WAAW,CAAC,EAAE,MAAM,CAAA;KACvB;IAYD;;;;OAIG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAE1E;;;;;;OAMG;IACG,aAAa,CACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,WAAW,GAC7B,OAAO,CAAC,cAAc,CAAC;IAoB1B;;;OAGG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAenD;;;;;OAKG;IACH,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAsB5D;;;;OAIG;IACG,4BAA4B,CAC9B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,2BAA2B,CAAC;IAevC;;;;;;OAMG;IACG,+BAA+B,CACjC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;YAgCJ,qBAAqB;YAgCrB,qBAAqB;CAsCtC"}
|
|
@@ -37,6 +37,36 @@ export class PartyAllocationService {
|
|
|
37
37
|
const multiprefix = Buffer.from([0x12, 0x20]);
|
|
38
38
|
return Buffer.concat([multiprefix, hash]).toString('hex');
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Normalizes a public key to base64 format.
|
|
42
|
+
* Converts hex format (Fireblocks) to base64, or returns base64 as-is.
|
|
43
|
+
* @param publicKey Public key in hex or base64 format
|
|
44
|
+
* @returns Public key in base64 format, or null if conversion fails
|
|
45
|
+
*/
|
|
46
|
+
normalizePublicKeyToBase64(publicKey) {
|
|
47
|
+
try {
|
|
48
|
+
// Try hex first (Fireblocks format), fallback to base64 (internal format)
|
|
49
|
+
try {
|
|
50
|
+
const hexKey = Buffer.from(publicKey, 'hex');
|
|
51
|
+
// If it's valid hex and produces 32 bytes, convert to base64
|
|
52
|
+
if (hexKey.length === 32) {
|
|
53
|
+
return hexKey.toString('base64');
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
// Invalid hex length, treat as base64
|
|
57
|
+
return publicKey;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// Not valid hex, treat as base64
|
|
62
|
+
return publicKey;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// If any conversion fails, return null
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
40
70
|
async generateTopologyTransactions(hint, publicKey) {
|
|
41
71
|
const synchronizerId = this.synchronizerId ?? (await this.ledgerClient.getSynchronizerId());
|
|
42
72
|
return this.ledgerClient.generateTopology(synchronizerId, publicKey, hint);
|
|
@@ -57,7 +87,13 @@ export class PartyAllocationService {
|
|
|
57
87
|
return res.partyId;
|
|
58
88
|
}
|
|
59
89
|
async allocateInternalParty(userId, hint) {
|
|
60
|
-
const { participantId
|
|
90
|
+
const { participantId } = await this.ledgerClient.getWithRetry('/v2/parties/participant-id');
|
|
91
|
+
// Extract the namespace part from participantId
|
|
92
|
+
// Format is hint::namespace
|
|
93
|
+
const [, namespace] = participantId.split('::');
|
|
94
|
+
if (!namespace) {
|
|
95
|
+
throw new Error(`Invalid participantId format: expected "hint::namespace", got "${participantId}"`);
|
|
96
|
+
}
|
|
61
97
|
const res = await this.ledgerClient.postWithRetry('/v2/parties', {
|
|
62
98
|
partyIdHint: hint,
|
|
63
99
|
identityProviderId: '',
|
|
@@ -77,7 +77,9 @@ describe('PartyAllocationService', () => {
|
|
|
77
77
|
});
|
|
78
78
|
afterEach(() => jest.restoreAllMocks());
|
|
79
79
|
it('allocates an internal party', async () => {
|
|
80
|
-
mockLedgerGet.mockResolvedValueOnce({
|
|
80
|
+
mockLedgerGet.mockResolvedValueOnce({
|
|
81
|
+
participantId: 'participant1::participantid',
|
|
82
|
+
});
|
|
81
83
|
mockLedgerPost.mockResolvedValueOnce({
|
|
82
84
|
partyDetails: { party: 'party1::participantid' },
|
|
83
85
|
});
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { LedgerClient } from '@canton-network/core-ledger-client';
|
|
2
2
|
import { AuthContext } from '@canton-network/core-wallet-auth';
|
|
3
3
|
import { Store, Wallet } from '@canton-network/core-wallet-store';
|
|
4
|
+
import { SigningDriverInterface, SigningProvider } from '@canton-network/core-signing-lib';
|
|
4
5
|
import { Logger } from 'pino';
|
|
6
|
+
import { PartyAllocationService } from './party-allocation-service.js';
|
|
5
7
|
export type WalletSyncReport = {
|
|
6
8
|
added: Wallet[];
|
|
7
9
|
removed: Wallet[];
|
|
@@ -11,8 +13,16 @@ export declare class WalletSyncService {
|
|
|
11
13
|
private ledgerClient;
|
|
12
14
|
private authContext;
|
|
13
15
|
private logger;
|
|
14
|
-
|
|
16
|
+
private signingDrivers;
|
|
17
|
+
private partyAllocator;
|
|
18
|
+
constructor(store: Store, ledgerClient: LedgerClient, authContext: AuthContext, logger: Logger, signingDrivers: Partial<Record<SigningProvider, SigningDriverInterface>> | undefined, partyAllocator: PartyAllocationService);
|
|
15
19
|
run(timeoutMs: number): Promise<void>;
|
|
20
|
+
protected resolveSigningProvider(namespace: string): Promise<{
|
|
21
|
+
signingProviderId: SigningProvider.PARTICIPANT;
|
|
22
|
+
} | {
|
|
23
|
+
signingProviderId: Exclude<SigningProvider, SigningProvider.PARTICIPANT>;
|
|
24
|
+
publicKey: string;
|
|
25
|
+
} | null>;
|
|
16
26
|
syncWallets(): Promise<WalletSyncReport>;
|
|
17
27
|
}
|
|
18
28
|
//# sourceMappingURL=wallet-sync-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-sync-service.d.ts","sourceRoot":"","sources":["../../src/ledger/wallet-sync-service.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,YAAY,EAEf,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAA;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"wallet-sync-service.d.ts","sourceRoot":"","sources":["../../src/ledger/wallet-sync-service.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,YAAY,EAEf,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAA;AACjE,OAAO,EACH,sBAAsB,EACtB,eAAe,EAClB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAEtE,MAAM,MAAM,gBAAgB,GAAG;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;CACpB,CAAA;AACD,qBAAa,iBAAiB;IAEtB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;IAGtB,OAAO,CAAC,cAAc;gBAPd,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,OAAO,CAC3B,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAClD,YAAK,EACE,cAAc,EAAE,sBAAsB;IAG5C,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAU3B,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAC5D;QAAE,iBAAiB,EAAE,eAAe,CAAC,WAAW,CAAA;KAAE,GAClD;QACI,iBAAiB,EAAE,OAAO,CACtB,eAAe,EACf,eAAe,CAAC,WAAW,CAC9B,CAAA;QACD,SAAS,EAAE,MAAM,CAAA;KACpB,GACD,IAAI,CACT;IAiHK,WAAW,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAkJjD"}
|