@canton-network/wallet-gateway-remote 0.12.0 → 0.14.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/dist/auth/jwt-auth-service.js +1 -1
- package/dist/auth/jwt-unsafe-auth-service.js +1 -1
- package/dist/config/Config.d.ts +6 -4
- package/dist/config/Config.d.ts.map +1 -1
- package/dist/config/Config.js +29 -7
- package/dist/config/Config.test.js +1 -1
- package/dist/config/ConfigUtils.d.ts +9 -5
- package/dist/config/ConfigUtils.d.ts.map +1 -1
- package/dist/config/ConfigUtils.js +11 -9
- package/dist/dapp-api/controller.d.ts.map +1 -1
- package/dist/dapp-api/controller.js +1 -2
- package/dist/dapp-api/rpc-gen/index.js +1 -1
- package/dist/dapp-api/rpc-gen/typings.d.ts +2 -2
- package/dist/dapp-api/rpc-gen/typings.d.ts.map +1 -1
- package/dist/dapp-api/rpc-gen/typings.js +1 -1
- package/dist/dapp-api/server.js +1 -1
- package/dist/dapp-api/server.test.js +4 -4
- package/dist/example-config.d.ts +0 -2
- package/dist/example-config.d.ts.map +1 -1
- package/dist/example-config.js +1 -3
- package/dist/index.js +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +10 -24
- package/dist/ledger/party-allocation-service.js +1 -1
- package/dist/ledger/party-allocation-service.test.js +1 -1
- package/dist/ledger/wallet-sync-service.js +1 -1
- package/dist/ledger/wallet-sync-service.test.js +1 -1
- package/dist/middleware/jsonRpcHandler.js +3 -2
- package/dist/middleware/jwtAuth.d.ts.map +1 -1
- package/dist/middleware/jwtAuth.js +1 -2
- package/dist/middleware/rateLimit.js +1 -1
- package/dist/middleware/sessionHandler.d.ts.map +1 -1
- package/dist/middleware/sessionHandler.js +1 -2
- package/dist/notification/NotificationService.d.ts.map +1 -1
- package/dist/notification/NotificationService.js +1 -1
- package/dist/user-api/controller.d.ts.map +1 -1
- package/dist/user-api/controller.js +16 -6
- package/dist/user-api/rpc-gen/index.js +1 -1
- package/dist/user-api/rpc-gen/typings.js +1 -1
- package/dist/user-api/server.js +1 -1
- package/dist/user-api/server.test.js +4 -4
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +1 -2
- package/dist/version.js +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-DOEElx02.js → 404-CEh-3dY6.js} +1 -1
- package/dist/web/frontend/assets/{approve-D15QJVvX.js → approve--NuXcJ99.js} +1 -1
- package/dist/web/frontend/assets/callback-ndmFyMKj.js +1 -0
- package/dist/web/frontend/assets/index-BP37qEsG.js +1084 -0
- package/dist/web/frontend/assets/login-DVLQad-p.js +186 -0
- package/dist/web/frontend/assets/{settings-DgcggvCV.js → settings-Ckt3-4No.js} +1 -1
- package/dist/web/frontend/assets/{state-DcvVyWZr.js → state-rLl_1YqS.js} +1 -1
- package/dist/web/frontend/assets/{transactions-C-931My3.js → transactions--x1IsjM5.js} +1 -1
- package/dist/web/frontend/assets/{wallets-CWsA4fnj.js → wallets-BhRCCHdz.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 +3 -3
- package/dist/web/frontend/wallets/index.html +3 -3
- package/dist/web/server.js +1 -1
- package/package.json +32 -31
- package/dist/web/frontend/assets/callback-D0wYdJFr.js +0 -1
- package/dist/web/frontend/assets/index-EdAN1_qe.js +0 -1011
- package/dist/web/frontend/assets/login-CqVgGYZA.js +0 -186
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { createRemoteJWKSet, decodeJwt, jwtVerify } from 'jose';
|
|
4
4
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { decodeJwt } from 'jose';
|
|
4
4
|
/**
|
package/dist/config/Config.d.ts
CHANGED
|
@@ -1,28 +1,30 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const kernelInfoSchema: z.ZodObject<{
|
|
3
3
|
id: z.ZodString;
|
|
4
|
+
publicUrl: z.ZodOptional<z.ZodString>;
|
|
4
5
|
clientType: z.ZodUnion<readonly [z.ZodLiteral<"browser">, z.ZodLiteral<"desktop">, z.ZodLiteral<"mobile">, z.ZodLiteral<"remote">]>;
|
|
5
6
|
}, z.core.$strip>;
|
|
6
7
|
export declare const serverConfigSchema: z.ZodObject<{
|
|
7
|
-
host: z.ZodDefault<z.ZodString>;
|
|
8
8
|
port: z.ZodDefault<z.ZodNumber>;
|
|
9
|
-
tls: z.ZodDefault<z.ZodBoolean>;
|
|
10
9
|
dappPath: z.ZodDefault<z.ZodString>;
|
|
11
10
|
userPath: z.ZodDefault<z.ZodString>;
|
|
12
11
|
allowedOrigins: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<"*">, z.ZodArray<z.ZodString>]>>;
|
|
12
|
+
host: z.ZodOptional<z.ZodString>;
|
|
13
|
+
tls: z.ZodOptional<z.ZodBoolean>;
|
|
13
14
|
}, z.core.$strip>;
|
|
14
15
|
export declare const configSchema: z.ZodObject<{
|
|
15
16
|
kernel: z.ZodObject<{
|
|
16
17
|
id: z.ZodString;
|
|
18
|
+
publicUrl: z.ZodOptional<z.ZodString>;
|
|
17
19
|
clientType: z.ZodUnion<readonly [z.ZodLiteral<"browser">, z.ZodLiteral<"desktop">, z.ZodLiteral<"mobile">, z.ZodLiteral<"remote">]>;
|
|
18
20
|
}, z.core.$strip>;
|
|
19
21
|
server: z.ZodPipe<z.ZodTransform<{}, unknown>, z.ZodObject<{
|
|
20
|
-
host: z.ZodDefault<z.ZodString>;
|
|
21
22
|
port: z.ZodDefault<z.ZodNumber>;
|
|
22
|
-
tls: z.ZodDefault<z.ZodBoolean>;
|
|
23
23
|
dappPath: z.ZodDefault<z.ZodString>;
|
|
24
24
|
userPath: z.ZodDefault<z.ZodString>;
|
|
25
25
|
allowedOrigins: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<"*">, z.ZodArray<z.ZodString>]>>;
|
|
26
|
+
host: z.ZodOptional<z.ZodString>;
|
|
27
|
+
tls: z.ZodOptional<z.ZodBoolean>;
|
|
26
28
|
}, z.core.$strip>>;
|
|
27
29
|
store: z.ZodObject<{
|
|
28
30
|
connection: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/config/Config.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/config/Config.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,gBAAgB;;;;iBAY3B,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;;iBA+B7B,CAAA;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAKvB,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AACzD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAC7D,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA"}
|
package/dist/config/Config.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { storeConfigSchema } from '@canton-network/core-wallet-store';
|
|
4
4
|
import { storeConfigSchema as signingStoreConfigSchema } from '@canton-network/core-signing-store-sql';
|
|
5
5
|
import { z } from 'zod';
|
|
6
6
|
export const kernelInfoSchema = z.object({
|
|
7
7
|
id: z.string(),
|
|
8
|
+
publicUrl: z.string().optional().meta({
|
|
9
|
+
description: 'The public base URL of the gateway, if available (e.g. https://wallet.example.com). This determines what browsers will try to use to connect, and is useful when using reverse proxies. If omitted, this will be derived from the server configuration.',
|
|
10
|
+
}),
|
|
8
11
|
clientType: z.union([
|
|
9
12
|
z.literal('browser'),
|
|
10
13
|
z.literal('desktop'),
|
|
@@ -13,12 +16,31 @@ export const kernelInfoSchema = z.object({
|
|
|
13
16
|
]),
|
|
14
17
|
});
|
|
15
18
|
export const serverConfigSchema = z.object({
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
dappPath: z.string().default('/api/v0/dapp')
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
port: z.number().default(3030).meta({
|
|
20
|
+
description: 'The port on which the NodeJS service will listen. Defaults to 3030.',
|
|
21
|
+
}),
|
|
22
|
+
dappPath: z.string().default('/api/v0/dapp').meta({
|
|
23
|
+
description: 'The path serving the dapp API. Defaults /api/v0/dapp',
|
|
24
|
+
}),
|
|
25
|
+
userPath: z.string().default('/api/v0/user').meta({
|
|
26
|
+
description: 'The path serving the user API. Defaults /api/v0/user',
|
|
27
|
+
}),
|
|
28
|
+
allowedOrigins: z
|
|
29
|
+
.union([z.literal('*'), z.array(z.string())])
|
|
30
|
+
.default('*')
|
|
31
|
+
.meta({
|
|
32
|
+
description: 'Allowed CORS origins, typically corresponding to which external dApps are allowed to connect. Use "*" to allow all origins, or set an array of origin strings.',
|
|
33
|
+
}),
|
|
34
|
+
// @deprecated, the NodeJS server always binds to the localhost interface
|
|
35
|
+
host: z.string().optional().meta({
|
|
36
|
+
deprecated: true,
|
|
37
|
+
description: 'The host interface the server binds to. Deprecated as the service always binds to the local machine network interface. Will be removed in a future release.',
|
|
38
|
+
}),
|
|
39
|
+
// @deprecated since this field does not actually control TLS termination
|
|
40
|
+
tls: z.boolean().optional().meta({
|
|
41
|
+
deprecated: true,
|
|
42
|
+
description: 'Deprecated, this option no longer has any effect. Will be removed in a future release.',
|
|
43
|
+
}),
|
|
22
44
|
});
|
|
23
45
|
export const configSchema = z.object({
|
|
24
46
|
kernel: kernelInfoSchema,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { expect, test } from '@jest/globals';
|
|
4
4
|
import { ConfigUtils } from './ConfigUtils.js';
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { Config
|
|
1
|
+
import { Config } from './Config.js';
|
|
2
2
|
export declare class ConfigUtils {
|
|
3
3
|
static loadConfigFile(filePath: string): Config;
|
|
4
4
|
}
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
interface Urls {
|
|
6
|
+
serviceUrl: string;
|
|
7
|
+
publicUrl: string;
|
|
8
|
+
dappApiUrl: string;
|
|
9
|
+
userApiUrl: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const deriveUrls: (config: Config, port?: number) => Urls;
|
|
12
|
+
export {};
|
|
9
13
|
//# sourceMappingURL=ConfigUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigUtils.d.ts","sourceRoot":"","sources":["../../src/config/ConfigUtils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAgB,
|
|
1
|
+
{"version":3,"file":"ConfigUtils.d.ts","sourceRoot":"","sources":["../../src/config/ConfigUtils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAgB,MAAM,aAAa,CAAA;AAElD,qBAAa,WAAW;IACpB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CAoDlD;AAgDD,UAAU,IAAI;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACrB;AAOD,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,IAa1D,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { readFileSync, existsSync } from 'fs';
|
|
4
4
|
import { configSchema } from './Config.js';
|
|
@@ -70,12 +70,14 @@ function validateNetworkAuthMethods(config) {
|
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
const
|
|
80
|
-
|
|
73
|
+
// Strips duplicate slashes from a URL, except for the protocol part (e.g., "http://")
|
|
74
|
+
function stripDuplicateSlashes(path) {
|
|
75
|
+
return path.replace(/(https?:\/\/)|(\/)+/g, '$1$2');
|
|
76
|
+
}
|
|
77
|
+
export const deriveUrls = (config, port) => {
|
|
78
|
+
const serviceUrl = `http://localhost:${port || config.server.port}`;
|
|
79
|
+
const publicUrl = config.kernel.publicUrl || serviceUrl;
|
|
80
|
+
const dappApiUrl = stripDuplicateSlashes(`${publicUrl}/${config.server.dappPath}`);
|
|
81
|
+
const userApiUrl = stripDuplicateSlashes(`${publicUrl}/${config.server.userPath}`);
|
|
82
|
+
return { dappApiUrl, userApiUrl, publicUrl, serviceUrl };
|
|
81
83
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/dapp-api/controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/dapp-api/controller.ts"],"names":[],"mappings":"AAGA,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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
// Disabled unused vars rule to allow for future implementations
|
|
4
3
|
import { assertConnected } from '@canton-network/core-wallet-auth';
|
|
5
4
|
import buildController from './rpc-gen/index.js';
|
|
6
5
|
import { LedgerClient, } from '@canton-network/core-ledger-client';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
function buildController(methods) {
|
|
4
4
|
return {
|
|
@@ -198,7 +198,7 @@ export interface StatusEvent {
|
|
|
198
198
|
session?: Session;
|
|
199
199
|
[k: string]: any;
|
|
200
200
|
}
|
|
201
|
-
export interface
|
|
201
|
+
export interface ConnectResult {
|
|
202
202
|
userUrl: UserUrl;
|
|
203
203
|
[k: string]: any;
|
|
204
204
|
}
|
|
@@ -440,7 +440,7 @@ export interface LedgerApiParams {
|
|
|
440
440
|
body?: Body;
|
|
441
441
|
[k: string]: any;
|
|
442
442
|
}
|
|
443
|
-
export type StatusEventAsync = StatusEvent &
|
|
443
|
+
export type StatusEventAsync = StatusEvent & ConnectResult;
|
|
444
444
|
/**
|
|
445
445
|
*
|
|
446
446
|
* Represents a null value, used in responses where no data is returned.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typings.d.ts","sourceRoot":"","sources":["../../../src/dapp-api/rpc-gen/typings.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"typings.d.ts","sourceRoot":"","sources":["../../../src/dapp-api/rpc-gen/typings.ts"],"names":[],"mappings":"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"}
|
package/dist/dapp-api/server.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import cors from 'cors';
|
|
4
4
|
import { dappController } from './controller.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { expect, test } from '@jest/globals';
|
|
4
4
|
import cors from 'cors';
|
|
@@ -6,7 +6,7 @@ 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
|
-
import { ConfigUtils,
|
|
9
|
+
import { ConfigUtils, deriveUrls } from '../config/ConfigUtils.js';
|
|
10
10
|
import { NotificationService } from '../notification/NotificationService.js';
|
|
11
11
|
import { pino } from 'pino';
|
|
12
12
|
import { sink } from 'pino-test';
|
|
@@ -25,8 +25,8 @@ test('call connect rpc', async () => {
|
|
|
25
25
|
app.use(cors());
|
|
26
26
|
app.use(express.json());
|
|
27
27
|
const server = createServer(app);
|
|
28
|
-
const {
|
|
29
|
-
const response = await request(dapp('/api/v0/dapp', app, pino(sink()), server, config.kernel,
|
|
28
|
+
const { dappApiUrl, publicUrl } = deriveUrls(config);
|
|
29
|
+
const response = await request(dapp('/api/v0/dapp', app, pino(sink()), server, config.kernel, dappApiUrl, publicUrl, config.server, notificationService, authService, store))
|
|
30
30
|
.post('/api/v0/dapp')
|
|
31
31
|
.send({ jsonrpc: '2.0', id: 0, method: 'connect', params: [] })
|
|
32
32
|
.set('Accept', 'application/json');
|
package/dist/example-config.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"example-config.d.ts","sourceRoot":"","sources":["../src/example-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"example-config.d.ts","sourceRoot":"","sources":["../src/example-config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,wBAwFkB"}
|
package/dist/example-config.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
export default {
|
|
4
4
|
kernel: {
|
|
@@ -6,9 +6,7 @@ export default {
|
|
|
6
6
|
clientType: 'remote',
|
|
7
7
|
},
|
|
8
8
|
server: {
|
|
9
|
-
host: 'localhost',
|
|
10
9
|
port: 3030,
|
|
11
|
-
tls: false,
|
|
12
10
|
dappPath: '/api/v0/dapp',
|
|
13
11
|
userPath: '/api/v0/user',
|
|
14
12
|
allowedOrigins: '*',
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
import { Option, Command } from '@commander-js/extra-typings';
|
|
5
5
|
import { initialize } from './init.js';
|
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;AAqB7B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAmFvC,wBAAsB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAqB7B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAmFvC,wBAAsB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iBA8HhE"}
|
package/dist/init.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { dapp } from './dapp-api/server.js';
|
|
4
4
|
import { user } from './user-api/server.js';
|
|
@@ -15,7 +15,7 @@ import { jwtAuthService } from './auth/jwt-auth-service.js';
|
|
|
15
15
|
import express from 'express';
|
|
16
16
|
import { jwtAuth } from './middleware/jwtAuth.js';
|
|
17
17
|
import { rpcRateLimit } from './middleware/rateLimit.js';
|
|
18
|
-
import {
|
|
18
|
+
import { deriveUrls } from './config/ConfigUtils.js';
|
|
19
19
|
import { existsSync, readFileSync } from 'fs';
|
|
20
20
|
import path from 'path';
|
|
21
21
|
import { GATEWAY_VERSION } from './version.js';
|
|
@@ -74,11 +74,10 @@ export async function initialize(opts, logger) {
|
|
|
74
74
|
const config = ConfigUtils.loadConfigFile(opts.config);
|
|
75
75
|
// Use CLI port override or config port
|
|
76
76
|
const port = opts.port ? Number(opts.port) : config.server.port;
|
|
77
|
-
const
|
|
78
|
-
const protocol = config.server.tls ? 'https' : 'http';
|
|
77
|
+
const { serviceUrl, publicUrl, dappApiUrl, userApiUrl } = deriveUrls(config, port);
|
|
79
78
|
const app = express();
|
|
80
79
|
const server = app.listen(port, () => {
|
|
81
|
-
logger.info(`Remote Wallet Gateway starting on ${
|
|
80
|
+
logger.info(`Remote Wallet Gateway starting on ${serviceUrl})`);
|
|
82
81
|
});
|
|
83
82
|
app.use('/healthz', rpcRateLimit, (_req, res) => res.status(200).send('OK'));
|
|
84
83
|
app.use('/readyz', rpcRateLimit, (_req, res) => {
|
|
@@ -131,29 +130,16 @@ export async function initialize(opts, logger) {
|
|
|
131
130
|
app.use('/api/*splat', express.json());
|
|
132
131
|
app.use('/api/*splat', rpcRateLimit);
|
|
133
132
|
app.use('/api/*splat', jwtAuth(authService, logger.child({ component: 'JwtHandler' })), sessionHandler(store, allowedPaths, logger.child({ component: 'SessionHandler' })));
|
|
134
|
-
|
|
135
|
-
const serverConfigWithOverride = {
|
|
136
|
-
...config.server,
|
|
137
|
-
port, // Use the actual port we're listening on
|
|
138
|
-
};
|
|
139
|
-
const { dappUrl, userUrl } = deriveKernelUrls(serverConfigWithOverride);
|
|
140
|
-
logger.info({
|
|
141
|
-
host: serverConfigWithOverride.host,
|
|
142
|
-
port: serverConfigWithOverride.port,
|
|
143
|
-
tls: serverConfigWithOverride.tls,
|
|
144
|
-
dappPath: serverConfigWithOverride.dappPath,
|
|
145
|
-
userPath: serverConfigWithOverride.userPath,
|
|
146
|
-
allowedOrigins: serverConfigWithOverride.allowedOrigins,
|
|
147
|
-
dappUrl,
|
|
148
|
-
userUrl,
|
|
149
|
-
}, 'Server configuration');
|
|
133
|
+
logger.info({ ...config.server, port }, 'Server configuration');
|
|
150
134
|
const kernelInfo = config.kernel;
|
|
151
135
|
// register dapp API handlers
|
|
152
|
-
dapp(config.server.dappPath, app, logger, server, kernelInfo,
|
|
136
|
+
dapp(config.server.dappPath, app, logger, server, kernelInfo, dappApiUrl, publicUrl, config.server, notificationService, authService, store);
|
|
153
137
|
// register user API handlers
|
|
154
|
-
user(config.server.userPath, app, logger, kernelInfo,
|
|
138
|
+
user(config.server.userPath, app, logger, kernelInfo, publicUrl, notificationService, drivers, store);
|
|
155
139
|
// register web handler
|
|
156
|
-
web(app, server,
|
|
140
|
+
web(app, server, userApiUrl);
|
|
157
141
|
isReady = true;
|
|
158
142
|
logger.info(`Wallet Gateway (version: ${GATEWAY_VERSION}) initialization complete`);
|
|
143
|
+
logger.info(`Wallet Gateway UI available on ${publicUrl}`);
|
|
144
|
+
logger.info(`dApp API available on ${dappApiUrl}`);
|
|
159
145
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { LedgerClient, } from '@canton-network/core-ledger-client';
|
|
4
4
|
import { createHash } from 'node:crypto';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { jest } from '@jest/globals';
|
|
4
4
|
import { pino } from 'pino';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { defaultRetryableOptions, } from '@canton-network/core-ledger-client';
|
|
4
4
|
import { SigningProvider, } from '@canton-network/core-signing-lib';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { jest, describe, it, expect, beforeEach, afterEach, } from '@jest/globals';
|
|
4
4
|
import { pino } from 'pino';
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { JsonRpcError, rpcErrors, toHttpErrorCode, } from '@canton-network/core-rpc-errors';
|
|
4
|
-
import { ErrorResponse, JsonRpcRequest,
|
|
4
|
+
import { ErrorResponse, JsonRpcRequest, } from '@canton-network/core-types';
|
|
5
|
+
import { jsonRpcResponse } from '@canton-network/core-rpc-transport';
|
|
5
6
|
import { isJsCantonError } from '@canton-network/core-ledger-client';
|
|
6
7
|
/**
|
|
7
8
|
* Handles JSON-RPC errors and maps them to HTTP responses.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwtAuth.d.ts","sourceRoot":"","sources":["../../src/middleware/jwtAuth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"jwtAuth.d.ts","sourceRoot":"","sources":["../../src/middleware/jwtAuth.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAE7B,wBAAgB,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,IAC9C,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAehE"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
// middleware/jwtAuth.ts
|
|
4
3
|
export function jwtAuth(authService, logger) {
|
|
5
4
|
return async (req, res, next) => {
|
|
6
5
|
const authHeader = req.headers.authorization;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import rateLimit from 'express-rate-limit';
|
|
4
4
|
export const rpcRateLimit = rateLimit({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionHandler.d.ts","sourceRoot":"","sources":["../../src/middleware/sessionHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sessionHandler.d.ts","sourceRoot":"","sources":["../../src/middleware/sessionHandler.ts"],"names":[],"mappings":"AAGA,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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
// middleware/jwtAuth.ts
|
|
4
3
|
/**
|
|
5
4
|
* Middleware to handle session validation based on user sessions.
|
|
6
5
|
* @param store needs to be AuthAware
|
|
@@ -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":"AAOA,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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
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.
|
|
@@ -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;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;;;;;;;;;;;;;;;;;;;
|
|
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;;;;;;;;;;;;;;;;;;;CAu3BlB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
// Disabled unused vars rule to allow for future implementations
|
|
4
4
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
@@ -103,7 +103,9 @@ export const userController = (kernelInfo, userUrl, store, notificationService,
|
|
|
103
103
|
const { signature } = await driver.signTransaction({
|
|
104
104
|
tx: '',
|
|
105
105
|
txHash: hash,
|
|
106
|
-
|
|
106
|
+
keyIdentifier: {
|
|
107
|
+
publicKey: key.publicKey,
|
|
108
|
+
},
|
|
107
109
|
});
|
|
108
110
|
return signature;
|
|
109
111
|
});
|
|
@@ -153,7 +155,9 @@ export const userController = (kernelInfo, userUrl, store, notificationService,
|
|
|
153
155
|
const { status, txId: id } = await driver.signTransaction({
|
|
154
156
|
tx: Buffer.from(txPayload).toString('base64'),
|
|
155
157
|
txHash: transactions.multiHash,
|
|
156
|
-
|
|
158
|
+
keyIdentifier: {
|
|
159
|
+
publicKey: key.publicKey,
|
|
160
|
+
},
|
|
157
161
|
internalTxId,
|
|
158
162
|
});
|
|
159
163
|
if (status === 'signed') {
|
|
@@ -211,7 +215,9 @@ export const userController = (kernelInfo, userUrl, store, notificationService,
|
|
|
211
215
|
const { status, txId: id } = await driver.signTransaction({
|
|
212
216
|
tx: '',
|
|
213
217
|
txHash: Buffer.from(transactions.multiHash, 'base64').toString('hex'),
|
|
214
|
-
|
|
218
|
+
keyIdentifier: {
|
|
219
|
+
publicKey: key.publicKey,
|
|
220
|
+
},
|
|
215
221
|
});
|
|
216
222
|
if (status === 'signed') {
|
|
217
223
|
const { signature } = await driver.getTransaction({
|
|
@@ -306,7 +312,9 @@ export const userController = (kernelInfo, userUrl, store, notificationService,
|
|
|
306
312
|
const signature = await driver.signTransaction({
|
|
307
313
|
tx: preparedTransaction,
|
|
308
314
|
txHash: preparedTransactionHash,
|
|
309
|
-
|
|
315
|
+
keyIdentifier: {
|
|
316
|
+
publicKey: wallet.publicKey,
|
|
317
|
+
},
|
|
310
318
|
});
|
|
311
319
|
if (!signature.signature) {
|
|
312
320
|
throw new Error('Failed to sign transaction: ' +
|
|
@@ -342,7 +350,9 @@ export const userController = (kernelInfo, userUrl, store, notificationService,
|
|
|
342
350
|
let result = await driver.signTransaction({
|
|
343
351
|
tx: preparedTransaction,
|
|
344
352
|
txHash: preparedTransactionHash,
|
|
345
|
-
|
|
353
|
+
keyIdentifier: {
|
|
354
|
+
publicKey: wallet.publicKey,
|
|
355
|
+
},
|
|
346
356
|
internalTxId,
|
|
347
357
|
});
|
|
348
358
|
if (result.status === 'pending' && result.txId) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
function buildController(methods) {
|
|
4
4
|
return {
|
package/dist/user-api/server.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { jsonRpcHandler } from '../middleware/jsonRpcHandler.js';
|
|
4
4
|
import { userController } from './controller.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { expect, test } from '@jest/globals';
|
|
4
4
|
import cors from 'cors';
|
|
@@ -6,7 +6,7 @@ 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
|
-
import { ConfigUtils,
|
|
9
|
+
import { ConfigUtils, deriveUrls } from '../config/ConfigUtils.js';
|
|
10
10
|
import { NotificationService } from '../notification/NotificationService.js';
|
|
11
11
|
import { pino } from 'pino';
|
|
12
12
|
import { sink } from 'pino-test';
|
|
@@ -19,8 +19,8 @@ test('call listNetworks rpc', async () => {
|
|
|
19
19
|
const app = express();
|
|
20
20
|
app.use(cors());
|
|
21
21
|
app.use(express.json());
|
|
22
|
-
const {
|
|
23
|
-
const response = await request(user('/api/v0/user', app, pino(sink()), config.kernel,
|
|
22
|
+
const { publicUrl } = deriveUrls(config);
|
|
23
|
+
const response = await request(user('/api/v0/user', app, pino(sink()), config.kernel, publicUrl, notificationService, drivers, store))
|
|
24
24
|
.post('/api/v0/user')
|
|
25
25
|
.send({ jsonrpc: '2.0', id: 0, method: 'listNetworks', params: [] })
|
|
26
26
|
.set('Accept', 'application/json');
|