@canton-network/wallet-gateway-remote 0.10.0 → 0.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/Config.test.js +3 -3
- package/dist/dapp-api/controller.d.ts.map +1 -1
- package/dist/dapp-api/controller.js +4 -0
- package/dist/dapp-api/server.d.ts.map +1 -1
- package/dist/dapp-api/server.js +29 -29
- package/dist/dapp-api/server.test.js +3 -8
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +7 -23
- package/dist/ledger/wallet-sync-service.d.ts +2 -1
- package/dist/ledger/wallet-sync-service.d.ts.map +1 -1
- package/dist/ledger/wallet-sync-service.js +3 -2
- package/dist/ledger/wallet-sync-service.test.js +2 -2
- package/dist/middleware/sessionHandler.d.ts +13 -0
- package/dist/middleware/sessionHandler.d.ts.map +1 -0
- package/dist/middleware/sessionHandler.js +37 -0
- package/dist/notification/NotificationService.d.ts +8 -1
- package/dist/notification/NotificationService.d.ts.map +1 -1
- package/dist/notification/NotificationService.js +22 -1
- package/dist/user-api/controller.d.ts.map +1 -1
- package/dist/user-api/controller.js +19 -3
- package/dist/user-api/rpc-gen/typings.d.ts +2 -0
- package/dist/user-api/rpc-gen/typings.d.ts.map +1 -1
- package/dist/user-api/server.test.js +5 -9
- package/dist/web/frontend/404/index.html +2 -2
- package/dist/web/frontend/approve/index.html +4 -3
- package/dist/web/frontend/assets/{404-D9f6dBKB.js → 404-DOEElx02.js} +1 -1
- package/dist/web/frontend/assets/approve-D15QJVvX.js +185 -0
- package/dist/web/frontend/assets/callback-D0wYdJFr.js +1 -0
- package/dist/web/frontend/assets/decode-CLJkuAIr.js +2 -0
- package/dist/web/frontend/assets/index-EdAN1_qe.js +1011 -0
- package/dist/web/frontend/assets/login-CqVgGYZA.js +186 -0
- package/dist/web/frontend/assets/{settings-DI34Qjg8.js → settings-DgcggvCV.js} +1 -1
- package/dist/web/frontend/assets/{state-DxRr-Cgg.js → state-DcvVyWZr.js} +1 -1
- package/dist/web/frontend/assets/transactions-C-931My3.js +140 -0
- package/dist/web/frontend/assets/{wallets-CMKMTBj2.js → wallets-Cf2MBnzs.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/transactions/index.html +17 -0
- package/dist/web/frontend/wallets/index.html +3 -3
- package/package.json +17 -17
- package/dist/web/frontend/assets/approve-CvvaOTF9.js +0 -182
- package/dist/web/frontend/assets/callback-C2tlJhDI.js +0 -1
- package/dist/web/frontend/assets/index-ChQxMkmX.js +0 -1011
- 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[
|
|
13
|
-
if (resp.store.networks[
|
|
14
|
-
expect(resp.store.networks[
|
|
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;;;;;;;;;;;;;
|
|
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,
|
|
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"}
|
package/dist/dapp-api/server.js
CHANGED
|
@@ -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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
|
|
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
|
-
|
|
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
|
|
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());
|
package/dist/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;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,
|
|
@@ -11,11 +11,12 @@ export type WalletSyncReport = {
|
|
|
11
11
|
export declare class WalletSyncService {
|
|
12
12
|
private store;
|
|
13
13
|
private ledgerClient;
|
|
14
|
+
private adminLedgerClient;
|
|
14
15
|
private authContext;
|
|
15
16
|
private logger;
|
|
16
17
|
private signingDrivers;
|
|
17
18
|
private partyAllocator;
|
|
18
|
-
constructor(store: Store, ledgerClient: LedgerClient, authContext: AuthContext, logger: Logger, signingDrivers: Partial<Record<SigningProvider, SigningDriverInterface>> | undefined, partyAllocator: PartyAllocationService);
|
|
19
|
+
constructor(store: Store, ledgerClient: LedgerClient, adminLedgerClient: LedgerClient, authContext: AuthContext, logger: Logger, signingDrivers: Partial<Record<SigningProvider, SigningDriverInterface>> | undefined, partyAllocator: PartyAllocationService);
|
|
19
20
|
run(timeoutMs: number): Promise<void>;
|
|
20
21
|
protected resolveSigningProvider(namespace: string): Promise<{
|
|
21
22
|
signingProviderId: SigningProvider.PARTICIPANT;
|
|
@@ -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,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;
|
|
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,iBAAiB;IACzB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;IAGtB,OAAO,CAAC,cAAc;gBARd,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,YAAY,EAC/B,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;IAkHK,WAAW,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAkJjD"}
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
import { defaultRetryableOptions, } from '@canton-network/core-ledger-client';
|
|
4
4
|
import { SigningProvider, } from '@canton-network/core-signing-lib';
|
|
5
5
|
export class WalletSyncService {
|
|
6
|
-
constructor(store, ledgerClient, authContext, logger, signingDrivers = {}, partyAllocator) {
|
|
6
|
+
constructor(store, ledgerClient, adminLedgerClient, authContext, logger, signingDrivers = {}, partyAllocator) {
|
|
7
7
|
this.store = store;
|
|
8
8
|
this.ledgerClient = ledgerClient;
|
|
9
|
+
this.adminLedgerClient = adminLedgerClient;
|
|
9
10
|
this.authContext = authContext;
|
|
10
11
|
this.logger = logger;
|
|
11
12
|
this.signingDrivers = signingDrivers;
|
|
@@ -24,7 +25,7 @@ export class WalletSyncService {
|
|
|
24
25
|
// (participant parties have namespace === participantId's namespace)
|
|
25
26
|
let participantNamespace;
|
|
26
27
|
try {
|
|
27
|
-
const { participantId } = await this.
|
|
28
|
+
const { participantId } = await this.adminLedgerClient.getWithRetry('/v2/parties/participant-id', defaultRetryableOptions);
|
|
28
29
|
// Extract the namespace part from participantId
|
|
29
30
|
// Format is hint::namespace
|
|
30
31
|
const [, extractedNamespace] = participantId.split('::');
|
|
@@ -74,7 +74,7 @@ describe('WalletSyncService - resolveSigningProvider', () => {
|
|
|
74
74
|
},
|
|
75
75
|
});
|
|
76
76
|
// Create service with real drivers
|
|
77
|
-
service = new TestableWalletSyncService(store, ledgerClient, authContext, mockLogger, {
|
|
77
|
+
service = new TestableWalletSyncService(store, ledgerClient, ledgerClient, authContext, mockLogger, {
|
|
78
78
|
[SigningProvider.WALLET_KERNEL]: internalDriver,
|
|
79
79
|
[SigningProvider.PARTICIPANT]: new ParticipantSigningDriver(),
|
|
80
80
|
}, partyAllocator);
|
|
@@ -137,7 +137,7 @@ describe('WalletSyncService - resolveSigningProvider', () => {
|
|
|
137
137
|
partyMode: 'EXTERNAL',
|
|
138
138
|
signingProvider: SigningProvider.FIREBLOCKS,
|
|
139
139
|
};
|
|
140
|
-
const serviceWithFireblocks = new TestableWalletSyncService(store, ledgerClient, authContext, mockLogger, {
|
|
140
|
+
const serviceWithFireblocks = new TestableWalletSyncService(store, ledgerClient, ledgerClient, authContext, mockLogger, {
|
|
141
141
|
[SigningProvider.FIREBLOCKS]: mockFireblocksDriver,
|
|
142
142
|
}, partyAllocator);
|
|
143
143
|
mockLedgerGet.mockResolvedValueOnce({
|
|
@@ -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
|
-
|
|
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":"
|
|
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
|
-
|
|
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;
|
|
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;;;;;;;;;;;;;;;;;;;CAssBlB,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,
|
|
@@ -459,17 +466,26 @@ export const userController = (kernelInfo, userUrl, store, notificationService,
|
|
|
459
466
|
getUserAccessToken: async () => authContext.accessToken,
|
|
460
467
|
getAdminAccessToken: async () => authContext.accessToken,
|
|
461
468
|
};
|
|
469
|
+
const idp = await store.getIdp(network.identityProviderId);
|
|
470
|
+
const adminAccessTokenProvider = new AuthTokenProvider(idp, network.auth, network.adminAuth, logger);
|
|
462
471
|
const partyAllocator = new PartyAllocationService({
|
|
463
472
|
synchronizerId: network.synchronizerId,
|
|
464
|
-
accessTokenProvider:
|
|
473
|
+
accessTokenProvider: adminAccessTokenProvider,
|
|
465
474
|
httpLedgerUrl: network.ledgerApi.baseUrl,
|
|
466
475
|
logger,
|
|
467
476
|
});
|
|
468
|
-
const
|
|
477
|
+
const userLedger = new LedgerClient({
|
|
469
478
|
baseUrl: new URL(network.ledgerApi.baseUrl),
|
|
470
479
|
logger,
|
|
471
480
|
accessTokenProvider: userAccessTokenProvider,
|
|
472
|
-
})
|
|
481
|
+
});
|
|
482
|
+
const adminLedger = new LedgerClient({
|
|
483
|
+
baseUrl: new URL(network.ledgerApi.baseUrl),
|
|
484
|
+
logger,
|
|
485
|
+
isAdmin: true,
|
|
486
|
+
accessTokenProvider: adminAccessTokenProvider,
|
|
487
|
+
});
|
|
488
|
+
const service = new WalletSyncService(store, userLedger, adminLedger, authContext, logger, drivers, partyAllocator);
|
|
473
489
|
const result = await service.syncWallets();
|
|
474
490
|
if (result.added.length === 0 && result.removed.length === 0) {
|
|
475
491
|
return result;
|
|
@@ -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,
|
|
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(
|
|
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-
|
|
7
|
-
<link rel="modulepreload" crossorigin href="/assets/index-
|
|
6
|
+
<script type="module" crossorigin src="/assets/404-DOEElx02.js"></script>
|
|
7
|
+
<link rel="modulepreload" crossorigin href="/assets/index-EdAN1_qe.js">
|
|
8
8
|
<link rel="stylesheet" crossorigin href="/assets/index-CgbJtyud.css">
|
|
9
9
|
</head>
|
|
10
10
|
|
|
@@ -3,9 +3,10 @@
|
|
|
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/index-
|
|
8
|
-
<link rel="modulepreload" crossorigin href="/assets/state-
|
|
6
|
+
<script type="module" crossorigin src="/assets/approve-D15QJVvX.js"></script>
|
|
7
|
+
<link rel="modulepreload" crossorigin href="/assets/index-EdAN1_qe.js">
|
|
8
|
+
<link rel="modulepreload" crossorigin href="/assets/state-DcvVyWZr.js">
|
|
9
|
+
<link rel="modulepreload" crossorigin href="/assets/decode-CLJkuAIr.js">
|
|
9
10
|
<link rel="stylesheet" crossorigin href="/assets/index-CgbJtyud.css">
|
|
10
11
|
</head>
|
|
11
12
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as k,a as z,x as O,t as P}from"./index-
|
|
1
|
+
import{i as k,a as z,x as O,t as P}from"./index-EdAN1_qe.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>
|