@canton-network/wallet-gateway-remote 0.10.0 → 0.11.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.
Files changed (38) hide show
  1. package/dist/config/Config.test.js +3 -3
  2. package/dist/dapp-api/controller.d.ts.map +1 -1
  3. package/dist/dapp-api/controller.js +4 -0
  4. package/dist/dapp-api/server.d.ts.map +1 -1
  5. package/dist/dapp-api/server.js +29 -29
  6. package/dist/dapp-api/server.test.js +3 -8
  7. package/dist/init.d.ts.map +1 -1
  8. package/dist/init.js +7 -23
  9. package/dist/middleware/sessionHandler.d.ts +13 -0
  10. package/dist/middleware/sessionHandler.d.ts.map +1 -0
  11. package/dist/middleware/sessionHandler.js +37 -0
  12. package/dist/notification/NotificationService.d.ts +8 -1
  13. package/dist/notification/NotificationService.d.ts.map +1 -1
  14. package/dist/notification/NotificationService.js +22 -1
  15. package/dist/user-api/controller.d.ts.map +1 -1
  16. package/dist/user-api/controller.js +7 -0
  17. package/dist/user-api/rpc-gen/typings.d.ts +2 -0
  18. package/dist/user-api/rpc-gen/typings.d.ts.map +1 -1
  19. package/dist/user-api/server.test.js +5 -9
  20. package/dist/web/frontend/404/index.html +2 -2
  21. package/dist/web/frontend/approve/index.html +3 -3
  22. package/dist/web/frontend/assets/{404-D9f6dBKB.js → 404-m2H-YHg-.js} +1 -1
  23. package/dist/web/frontend/assets/{approve-CvvaOTF9.js → approve-D-yQkaxd.js} +1 -1
  24. package/dist/web/frontend/assets/callback-Da6RLMl5.js +1 -0
  25. package/dist/web/frontend/assets/index-DWw9PrWk.js +1011 -0
  26. package/dist/web/frontend/assets/login-DeTFkeYw.js +186 -0
  27. package/dist/web/frontend/assets/{settings-DI34Qjg8.js → settings-DdQ6zt_Y.js} +1 -1
  28. package/dist/web/frontend/assets/{state-DxRr-Cgg.js → state-Wv0NKnXW.js} +1 -1
  29. package/dist/web/frontend/assets/{wallets-CMKMTBj2.js → wallets-ySaBy7V_.js} +1 -1
  30. package/dist/web/frontend/callback/index.html +2 -2
  31. package/dist/web/frontend/index.html +1 -1
  32. package/dist/web/frontend/login/index.html +3 -3
  33. package/dist/web/frontend/settings/index.html +3 -3
  34. package/dist/web/frontend/wallets/index.html +3 -3
  35. package/package.json +17 -17
  36. package/dist/web/frontend/assets/callback-C2tlJhDI.js +0 -1
  37. package/dist/web/frontend/assets/index-ChQxMkmX.js +0 -1011
  38. package/dist/web/frontend/assets/login-295tArUb.js +0 -186
@@ -9,8 +9,8 @@ test('config from json file', async () => {
9
9
  expect(resp.store.networks[0].auth.clientId).toBe('operator');
10
10
  expect(resp.store.networks[0].auth.scope).toBe('openid daml_ledger_api offline_access');
11
11
  expect(resp.store.networks[0].auth.method).toBe('authorization_code');
12
- expect(resp.store.networks[1].auth.method).toBe('client_credentials');
13
- if (resp.store.networks[1].auth.method === 'client_credentials') {
14
- expect(resp.store.networks[1].auth.audience).toBe('https://daml.com/jwt/aud/participant/participant1::1220d44fc1c3ba0b5bdf7b956ee71bc94ebe2d23258dc268fdf0824fbaeff2c61424');
12
+ expect(resp.store.networks[2].auth.method).toBe('client_credentials');
13
+ if (resp.store.networks[2].auth.method === 'client_credentials') {
14
+ expect(resp.store.networks[2].auth.audience).toBe('https://daml.com/jwt/aud/participant/participant1::1220d44fc1c3ba0b5bdf7b956ee71bc94ebe2d23258dc268fdf0824fbaeff2c61424');
15
15
  }
16
16
  });
@@ -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;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"}
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;;;;;;;;;;;;;CAuOxB,CAAA"}
@@ -19,6 +19,7 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
19
19
  userUrl: `${userUrl}/login/`,
20
20
  };
21
21
  }
22
+ const session = await store.getSession();
22
23
  const network = await store.getCurrentNetwork();
23
24
  const ledgerClient = new LedgerClient({
24
25
  baseUrl: new URL(network.ledgerApi.baseUrl),
@@ -39,6 +40,7 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
39
40
  },
40
41
  },
41
42
  session: {
43
+ id: session?.id,
42
44
  accessToken: context.accessToken,
43
45
  userId: context.userId,
44
46
  },
@@ -151,6 +153,7 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
151
153
  networkReason: 'Unauthenticated',
152
154
  };
153
155
  }
156
+ const session = await store.getSession();
154
157
  const network = await store.getCurrentNetwork();
155
158
  const ledgerClient = new LedgerClient({
156
159
  baseUrl: new URL(network.ledgerApi.baseUrl),
@@ -171,6 +174,7 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
171
174
  },
172
175
  },
173
176
  session: {
177
+ id: session?.id,
174
178
  accessToken: context.accessToken,
175
179
  userId: context.userId,
176
180
  },
@@ -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,wFAgFlC,CAAA"}
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,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAC5E,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,wFAsFlC,CAAA"}
@@ -21,43 +21,43 @@ export const dapp = (route, app, logger, server, kernelInfo, dappUrl, userUrl, s
21
21
  methods: ['GET', 'POST'],
22
22
  },
23
23
  });
24
- io.on('connection', (socket) => {
25
- logger.info('Socket.io client connected');
26
- let notifier = undefined;
27
- const onAccountsChanged = (...event) => {
28
- io.emit('accountsChanged', ...event);
29
- };
30
- const onStatusChanged = (...event) => {
31
- io.emit('statusChanged', ...event);
32
- };
33
- const onConnected = (...event) => {
34
- io.emit('onConnected', ...event);
35
- };
36
- const onTxChanged = (...event) => {
37
- io.emit('txChanged', ...event);
38
- };
39
- authService
40
- .verifyToken(socket.handshake.auth.token)
41
- .then((authContext) => {
42
- const userId = authContext?.userId;
43
- if (!userId) {
44
- return;
45
- }
46
- notifier = notificationService.getNotifier(userId);
24
+ io.on('connection', async (socket) => {
25
+ let sessionId = undefined;
26
+ const context = await authService.verifyToken(socket.handshake.auth.token);
27
+ if (context !== undefined) {
28
+ const newStore = store.withAuthContext(context);
29
+ const session = await newStore.getSession();
30
+ sessionId = session?.id;
31
+ }
32
+ if (context && sessionId) {
33
+ socket.join(sessionId);
34
+ logger.debug(`Socket.io connected for user: ${context.userId} with session ID: ${sessionId}`);
35
+ const notifier = notificationService.getNotifier(context.userId);
36
+ const onAccountsChanged = (...event) => {
37
+ io.to(sessionId).emit('accountsChanged', ...event);
38
+ };
39
+ const onStatusChanged = (...event) => {
40
+ logger.debug({ sessionId }, 'Emitting statusChanged event via Socket.io');
41
+ io.to(sessionId).emit('statusChanged', ...event);
42
+ };
43
+ const onConnected = (...event) => {
44
+ io.to(sessionId).emit('onConnected', ...event);
45
+ };
46
+ const onTxChanged = (...event) => {
47
+ io.to(sessionId).emit('txChanged', ...event);
48
+ };
47
49
  notifier.on('accountsChanged', onAccountsChanged);
48
50
  notifier.on('onConnected', onConnected);
49
51
  notifier.on('statusChanged', onStatusChanged);
50
52
  notifier.on('txChanged', onTxChanged);
51
- });
52
- socket.on('disconnect', () => {
53
- logger.info('Socket.io client disconnected');
54
- if (notifier) {
53
+ socket.on('disconnect', () => {
54
+ logger.debug('Socket.io client disconnected');
55
55
  notifier.removeListener('accountsChanged', onAccountsChanged);
56
56
  notifier.removeListener('onConnected', onConnected);
57
57
  notifier.removeListener('statusChanged', onStatusChanged);
58
58
  notifier.removeListener('txChanged', onTxChanged);
59
- }
60
- });
59
+ });
60
+ }
61
61
  });
62
62
  return server;
63
63
  };
@@ -1,12 +1,13 @@
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 { expect, test, jest } from '@jest/globals';
3
+ import { expect, test } from '@jest/globals';
4
4
  import cors from 'cors';
5
5
  import request from 'supertest';
6
6
  import express from 'express';
7
7
  import { dapp } from './server.js';
8
8
  import { StoreInternal } from '@canton-network/core-wallet-store-inmemory';
9
9
  import { ConfigUtils, deriveKernelUrls } from '../config/ConfigUtils.js';
10
+ import { NotificationService } from '../notification/NotificationService.js';
10
11
  import { pino } from 'pino';
11
12
  import { sink } from 'pino-test';
12
13
  import { createServer } from 'http';
@@ -18,13 +19,7 @@ const authService = {
18
19
  const configPath = '../test/config.json';
19
20
  const config = ConfigUtils.loadConfigFile(configPath);
20
21
  const store = new StoreInternal(config.store, pino(sink()));
21
- const notificationService = {
22
- getNotifier: jest.fn().mockReturnValue({
23
- on: jest.fn(),
24
- emit: jest.fn(),
25
- removeListener: jest.fn(),
26
- }),
27
- };
22
+ const notificationService = new NotificationService(pino(sink()));
28
23
  test('call connect rpc', async () => {
29
24
  const app = express();
30
25
  app.use(cors());
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAsB7B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AA4GvC,wBAAsB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iBAqIhE"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAoB7B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAmFvC,wBAAsB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iBAkJhE"}
package/dist/init.js CHANGED
@@ -6,7 +6,6 @@ import { web } from './web/server.js';
6
6
  import { StoreSql, bootstrap, connection, migrator, } from '@canton-network/core-wallet-store-sql';
7
7
  import { StoreSql as SigningStoreSql, bootstrap as signingBootstrap, connection as signingConnection, migrator as signingMigrator, } from '@canton-network/core-signing-store-sql';
8
8
  import { ConfigUtils } from './config/ConfigUtils.js';
9
- import EventEmitter from 'events';
10
9
  import { SigningProvider } from '@canton-network/core-signing-lib';
11
10
  import { ParticipantSigningDriver } from '@canton-network/core-signing-participant';
12
11
  import { InternalSigningDriver } from '@canton-network/core-signing-internal';
@@ -19,28 +18,9 @@ import { deriveKernelUrls } from './config/ConfigUtils.js';
19
18
  import { existsSync, readFileSync } from 'fs';
20
19
  import path from 'path';
21
20
  import { GATEWAY_VERSION } from './version.js';
21
+ import { sessionHandler } from './middleware/sessionHandler.js';
22
+ import { NotificationService } from './notification/NotificationService.js';
22
23
  let isReady = false;
23
- class NotificationService {
24
- constructor(logger) {
25
- this.logger = logger;
26
- this.notifiers = new Map();
27
- }
28
- getNotifier(notifierId) {
29
- const logger = this.logger;
30
- let notifier = this.notifiers.get(notifierId);
31
- if (!notifier) {
32
- notifier = new EventEmitter();
33
- // Wrap all events to log with pino
34
- const originalEmit = notifier.emit;
35
- notifier.emit = function (event, ...args) {
36
- logger.debug({ event, args }, `Notifier emitted event: ${event}`);
37
- return originalEmit.apply(this, [event, ...args]);
38
- };
39
- this.notifiers.set(notifierId, notifier);
40
- }
41
- return notifier;
42
- }
43
- }
44
24
  async function initializeDatabase(config, logger) {
45
25
  logger.info('Checking for database migrations...');
46
26
  let exists = true;
@@ -143,9 +123,13 @@ export async function initialize(opts, logger) {
143
123
  userApiKeys,
144
124
  }),
145
125
  };
126
+ const allowedPaths = {
127
+ [config.server.dappPath]: ['*'],
128
+ [config.server.userPath]: ['addSession', 'listNetworks', 'listIdps'],
129
+ };
146
130
  app.use('/api/*splat', express.json());
147
131
  app.use('/api/*splat', rpcRateLimit);
148
- app.use('/api/*splat', jwtAuth(authService, logger));
132
+ app.use('/api/*splat', jwtAuth(authService, logger.child({ component: 'JwtHandler' })), sessionHandler(store, allowedPaths, logger.child({ component: 'SessionHandler' })));
149
133
  // Override config port with CLI parameter port if provided, then derive URLs
150
134
  const serverConfigWithOverride = {
151
135
  ...config.server,
@@ -0,0 +1,13 @@
1
+ import type { Request, Response, NextFunction } from 'express';
2
+ import { AuthAware } from '@canton-network/core-wallet-auth';
3
+ import { Logger } from 'pino';
4
+ import { Store } from '@canton-network/core-wallet-store';
5
+ /**
6
+ * Middleware to handle session validation based on user sessions.
7
+ * @param store needs to be AuthAware
8
+ * @param allowedPaths a record of path -> list of methods which do not require authentication
9
+ * @param logger
10
+ * @returns
11
+ */
12
+ export declare function sessionHandler(store: Store & AuthAware<Store>, allowedPaths: Record<string, string[]>, logger: Logger): (req: Request, res: Response, next: NextFunction) => Promise<void>;
13
+ //# sourceMappingURL=sessionHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionHandler.d.ts","sourceRoot":"","sources":["../../src/middleware/sessionHandler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAA;AAEzD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC1B,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,EAC/B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACtC,MAAM,EAAE,MAAM,IAEA,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBA6BhE"}
@@ -0,0 +1,37 @@
1
+ // Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ // middleware/jwtAuth.ts
4
+ /**
5
+ * Middleware to handle session validation based on user sessions.
6
+ * @param store needs to be AuthAware
7
+ * @param allowedPaths a record of path -> list of methods which do not require authentication
8
+ * @param logger
9
+ * @returns
10
+ */
11
+ export function sessionHandler(store, allowedPaths, logger) {
12
+ return async (req, res, next) => {
13
+ const context = req.authContext;
14
+ const allowedMethods = allowedPaths[req.baseUrl];
15
+ if (req.method !== 'POST') {
16
+ logger.debug('Skipping authentication for OPTIONS request to ' + req.baseUrl);
17
+ next();
18
+ }
19
+ else if (allowedMethods &&
20
+ (allowedMethods.includes(req.body.method) ||
21
+ allowedMethods.includes('*'))) {
22
+ logger.debug(`Allowing unauthenticated access to ${req.baseUrl} for method ${req.body.method}`);
23
+ next();
24
+ }
25
+ else {
26
+ logger.debug('Checking for active session for ' + context?.userId);
27
+ const session = await store.withAuthContext(context).getSession();
28
+ if (!session) {
29
+ logger.debug('No active session found for ' + context?.userId);
30
+ res.status(401).json({ error: 'No active session found' });
31
+ }
32
+ else {
33
+ next();
34
+ }
35
+ }
36
+ };
37
+ }
@@ -1,10 +1,17 @@
1
+ import { Logger } from 'pino';
1
2
  type EventListener = (...args: unknown[]) => void;
2
3
  export interface Notifier {
3
4
  on(event: string, listener: EventListener): void;
4
5
  emit(event: string, ...args: unknown[]): boolean;
5
6
  removeListener(event: string, listenerToRemove: EventListener): void;
6
7
  }
7
- export interface NotificationService {
8
+ interface INotificationService {
9
+ getNotifier(notifierId: string): Notifier;
10
+ }
11
+ export declare class NotificationService implements INotificationService {
12
+ private logger;
13
+ private notifiers;
14
+ constructor(logger: Logger);
8
15
  getNotifier(notifierId: string): Notifier;
9
16
  }
10
17
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationService.d.ts","sourceRoot":"","sources":["../../src/notification/NotificationService.ts"],"names":[],"mappings":"AAKA,KAAK,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;AACjD,MAAM,WAAW,QAAQ;IACrB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAA;IAEhD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IAEhD,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,GAAG,IAAI,CAAA;CACvE;AAED,MAAM,WAAW,mBAAmB;IAChC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAA;CAC5C"}
1
+ {"version":3,"file":"NotificationService.d.ts","sourceRoot":"","sources":["../../src/notification/NotificationService.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAE7B,KAAK,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;AACjD,MAAM,WAAW,QAAQ;IACrB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAA;IAEhD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IAEhD,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,GAAG,IAAI,CAAA;CACvE;AAED,UAAU,oBAAoB;IAC1B,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAA;CAC5C;AAED,qBAAa,mBAAoB,YAAW,oBAAoB;IAGhD,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,SAAS,CAAmC;gBAEhC,MAAM,EAAE,MAAM;IAElC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ;CAoB5C"}
@@ -2,4 +2,25 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  // TODO: make events type-of dApp methods (perhaps just )
4
4
  // Support event-driven notifications. We represent a notifier with a generic interface to support node and browser implementations.
5
- export {};
5
+ import EventEmitter from 'events';
6
+ export class NotificationService {
7
+ constructor(logger) {
8
+ this.logger = logger;
9
+ this.notifiers = new Map();
10
+ }
11
+ getNotifier(notifierId) {
12
+ const logger = this.logger;
13
+ let notifier = this.notifiers.get(notifierId);
14
+ if (!notifier) {
15
+ notifier = new EventEmitter();
16
+ // Wrap all events to log with pino
17
+ const originalEmit = notifier.emit;
18
+ notifier.emit = function (event, ...args) {
19
+ logger.debug({ event, args }, `Notifier emitted event: ${event} for ${notifierId}`);
20
+ return originalEmit.apply(this, [event, ...args]);
21
+ };
22
+ this.notifiers.set(notifierId, notifier);
23
+ }
24
+ return notifier;
25
+ }
26
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/user-api/controller.ts"],"names":[],"mappings":"AAyBA,OAAO,EACH,KAAK,EAIR,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAC5E,OAAO,EAGH,WAAW,EAId,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EACH,sBAAsB,EACtB,eAAe,EAClB,MAAM,kCAAkC,CAAA;AAazC,KAAK,uBAAuB,GAAG,OAAO,CAClC,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAClD,CAAA;AAED,eAAO,MAAM,cAAc,GACvB,YAAY,UAAU,EACtB,SAAS,MAAM,EACf,OAAO,KAAK,EACZ,qBAAqB,mBAAmB,EACxC,aAAa,WAAW,GAAG,SAAS,EACpC,SAAS,uBAAuB,EAChC,SAAS,MAAM;;;;;;;;;;;;;;;;;;;CAyqBlB,CAAA"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/user-api/controller.ts"],"names":[],"mappings":"AAyBA,OAAO,EACH,KAAK,EAIR,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAC5E,OAAO,EAGH,WAAW,EAId,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EACH,sBAAsB,EACtB,eAAe,EAClB,MAAM,kCAAkC,CAAA;AAczC,KAAK,uBAAuB,GAAG,OAAO,CAClC,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAClD,CAAA;AAED,eAAO,MAAM,cAAc,GACvB,YAAY,UAAU,EACtB,SAAS,MAAM,EACf,OAAO,KAAK,EACZ,qBAAqB,mBAAmB,EACxC,aAAa,WAAW,GAAG,SAAS,EACpC,SAAS,uBAAuB,EAChC,SAAS,MAAM;;;;;;;;;;;;;;;;;;;CAorBlB,CAAA"}
@@ -9,6 +9,7 @@ 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';
11
11
  import { networkStatus, ledgerPrepareParams, } from '../utils.js';
12
+ import { v4 } from 'uuid';
12
13
  export const userController = (kernelInfo, userUrl, store, notificationService, authContext, drivers, _logger) => {
13
14
  const logger = _logger.child({ component: 'user-controller' });
14
15
  return buildController({
@@ -364,7 +365,10 @@ export const userController = (kernelInfo, userUrl, store, notificationService,
364
365
  },
365
366
  addSession: async function (params) {
366
367
  try {
368
+ const newSessionId = v4();
369
+ logger.info(`Adding session with ID ${newSessionId} for network ${params.networkId}`);
367
370
  await store.setSession({
371
+ id: newSessionId,
368
372
  network: params.networkId,
369
373
  accessToken: authContext?.accessToken || '',
370
374
  });
@@ -394,11 +398,13 @@ export const userController = (kernelInfo, userUrl, store, notificationService,
394
398
  },
395
399
  },
396
400
  session: {
401
+ id: newSessionId,
397
402
  accessToken: accessToken,
398
403
  userId: userId,
399
404
  },
400
405
  });
401
406
  return Promise.resolve({
407
+ id: newSessionId,
402
408
  accessToken,
403
409
  network,
404
410
  idp,
@@ -441,6 +447,7 @@ export const userController = (kernelInfo, userUrl, store, notificationService,
441
447
  return {
442
448
  sessions: [
443
449
  {
450
+ id: session.id,
444
451
  network,
445
452
  idp: idp,
446
453
  accessToken: authContext.accessToken,
@@ -263,6 +263,7 @@ export type Reason = string;
263
263
  *
264
264
  */
265
265
  export interface Session {
266
+ id: Id;
266
267
  network: Network;
267
268
  idp: Idp;
268
269
  accessToken: AccessToken;
@@ -402,6 +403,7 @@ export interface ExecuteResult {
402
403
  *
403
404
  */
404
405
  export interface AddSessionResult {
406
+ id: Id;
405
407
  network: Network;
406
408
  idp: Idp;
407
409
  accessToken: AccessToken;
@@ -1 +1 @@
1
- {"version":3,"file":"typings.d.ts","sourceRoot":"","sources":["../../../src/user-api/rpc-gen/typings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typings.d.ts","sourceRoot":"","sources":["../../../src/user-api/rpc-gen/typings.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,19 @@
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 { expect, jest, test } from '@jest/globals';
3
+ import { expect, test } from '@jest/globals';
4
4
  import cors from 'cors';
5
5
  import express from 'express';
6
6
  import request from 'supertest';
7
7
  import { user } from './server.js';
8
8
  import { StoreInternal } from '@canton-network/core-wallet-store-inmemory';
9
9
  import { ConfigUtils, deriveKernelUrls } from '../config/ConfigUtils.js';
10
+ import { NotificationService } from '../notification/NotificationService.js';
10
11
  import { pino } from 'pino';
11
12
  import { sink } from 'pino-test';
12
13
  const configPath = '../test/config.json';
13
14
  const config = ConfigUtils.loadConfigFile(configPath);
14
15
  const store = new StoreInternal(config.store, pino(sink()));
15
- const notificationService = {
16
- getNotifier: jest.fn().mockReturnValue({
17
- on: jest.fn(),
18
- emit: jest.fn(),
19
- removeListener: jest.fn(),
20
- }),
21
- };
16
+ const notificationService = new NotificationService(pino(sink()));
22
17
  test('call listNetworks rpc', async () => {
23
18
  const drivers = {};
24
19
  const app = express();
@@ -31,9 +26,10 @@ test('call listNetworks rpc', async () => {
31
26
  .set('Accept', 'application/json');
32
27
  const json = await response.body.result;
33
28
  expect(response.statusCode).toBe(200);
34
- expect(json.networks.length).toBe(5);
29
+ expect(json.networks.length).toBe(6);
35
30
  expect(json.networks.map((n) => n.name)).toStrictEqual([
36
31
  'Local (OAuth IDP)',
32
+ 'Local (OAuth IDP - 2)',
37
33
  'Local (OAuth IDP - Client Credentials)',
38
34
  'Local (Self signed)',
39
35
  'Devnet (Auth0)',
@@ -3,8 +3,8 @@
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-D9f6dBKB.js"></script>
7
- <link rel="modulepreload" crossorigin href="/assets/index-ChQxMkmX.js">
6
+ <script type="module" crossorigin src="/assets/404-m2H-YHg-.js"></script>
7
+ <link rel="modulepreload" crossorigin href="/assets/index-DWw9PrWk.js">
8
8
  <link rel="stylesheet" crossorigin href="/assets/index-CgbJtyud.css">
9
9
  </head>
10
10
 
@@ -3,9 +3,9 @@
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-CvvaOTF9.js"></script>
7
- <link rel="modulepreload" crossorigin href="/assets/index-ChQxMkmX.js">
8
- <link rel="modulepreload" crossorigin href="/assets/state-DxRr-Cgg.js">
6
+ <script type="module" crossorigin src="/assets/approve-D-yQkaxd.js"></script>
7
+ <link rel="modulepreload" crossorigin href="/assets/index-DWw9PrWk.js">
8
+ <link rel="modulepreload" crossorigin href="/assets/state-Wv0NKnXW.js">
9
9
  <link rel="stylesheet" crossorigin href="/assets/index-CgbJtyud.css">
10
10
  </head>
11
11
 
@@ -1,4 +1,4 @@
1
- import{i as k,a as z,x as O,t as P}from"./index-ChQxMkmX.js";var C=Object.create,s=Object.defineProperty,E=Object.getOwnPropertyDescriptor,x=(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?.[x("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,n,t)=>({kind:D[r],name:e,metadata:n,addInitializer:o=>a._?h("Already initialized"):t.push(w(o||null))}),M=(r,e)=>I(e,x("metadata"),r[3]),N=(r,e,a,n)=>{for(var t=0,o=r[e>>1],i=o&&o.length;t<i;t++)o[t].call(a);return n},T=(r,e,a,n,t,o)=>{var i,u,f,l=e&7,b=!1,m=0,g=r[m]||(r[m]=[]),c=l&&(t=t.prototype,l<5&&(l>3||!b)&&E(t,a));j(t,a);for(var _=n.length-1;_>=0;_--)f=F(l,a,u={},r[3],g),i=(0,n[_])(t,f),u._=1,w(i)&&(t=i);return M(r,t),c&&s(t,a,c),b?l^4?o:c:t},y,v,S;y=[P("user-ui-404")];const p=class p extends(S=k){connectedCallback(){super.connectedCallback()}render(){return O`
1
+ import{i as k,a as z,x as O,t as P}from"./index-DWw9PrWk.js";var C=Object.create,s=Object.defineProperty,E=Object.getOwnPropertyDescriptor,x=(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?.[x("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,n,t)=>({kind:D[r],name:e,metadata:n,addInitializer:o=>a._?h("Already initialized"):t.push(w(o||null))}),M=(r,e)=>I(e,x("metadata"),r[3]),N=(r,e,a,n)=>{for(var t=0,o=r[e>>1],i=o&&o.length;t<i;t++)o[t].call(a);return n},T=(r,e,a,n,t,o)=>{var i,u,f,l=e&7,b=!1,m=0,g=r[m]||(r[m]=[]),c=l&&(t=t.prototype,l<5&&(l>3||!b)&&E(t,a));j(t,a);for(var _=n.length-1;_>=0;_--)f=F(l,a,u={},r[3],g),i=(0,n[_])(t,f),u._=1,w(i)&&(t=i);return M(r,t),c&&s(t,a,c),b?l^4?o:c: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 href="/"></not-found>
4
4
  </div>