@distrohelena/canton-explorer 0.1.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/.env.example +9 -0
- package/LICENSE +184 -0
- package/README.md +63 -0
- package/bin/canton-explorer.js +68 -0
- package/config/nodes.example.json +35 -0
- package/dist/public/assets/index-NfJYgVwb.css +1 -0
- package/dist/public/assets/index-ybPCCjei.js +1 -0
- package/dist/public/cantonexplorer.png +0 -0
- package/dist/public/favicon.svg +1 -0
- package/dist/public/icons.svg +24 -0
- package/dist/public/index.html +14 -0
- package/dist/scripts/list-local-parties.d.ts +1 -0
- package/dist/scripts/list-local-parties.js +64 -0
- package/dist/scripts/list-local-parties.js.map +1 -0
- package/dist/src/api/nodes.controller.d.ts +181 -0
- package/dist/src/api/nodes.controller.js +873 -0
- package/dist/src/api/nodes.controller.js.map +1 -0
- package/dist/src/app-bootstrap.d.ts +22 -0
- package/dist/src/app-bootstrap.js +52 -0
- package/dist/src/app-bootstrap.js.map +1 -0
- package/dist/src/app.module.d.ts +2 -0
- package/dist/src/app.module.js +48 -0
- package/dist/src/app.module.js.map +1 -0
- package/dist/src/cache/node-cache.service.d.ts +54 -0
- package/dist/src/cache/node-cache.service.js +154 -0
- package/dist/src/cache/node-cache.service.js.map +1 -0
- package/dist/src/config/node-config.schema.d.ts +100 -0
- package/dist/src/config/node-config.schema.js +83 -0
- package/dist/src/config/node-config.schema.js.map +1 -0
- package/dist/src/config/node-config.service.d.ts +7 -0
- package/dist/src/config/node-config.service.js +36 -0
- package/dist/src/config/node-config.service.js.map +1 -0
- package/dist/src/domain/node-health.d.ts +9 -0
- package/dist/src/domain/node-health.js +16 -0
- package/dist/src/domain/node-health.js.map +1 -0
- package/dist/src/domain/node.types.d.ts +563 -0
- package/dist/src/domain/node.types.js +3 -0
- package/dist/src/domain/node.types.js.map +1 -0
- package/dist/src/grpc/grpc-client.factory.d.ts +297 -0
- package/dist/src/grpc/grpc-client.factory.js +67 -0
- package/dist/src/grpc/grpc-client.factory.js.map +1 -0
- package/dist/src/grpc/grpc-error.util.d.ts +7 -0
- package/dist/src/grpc/grpc-error.util.js +31 -0
- package/dist/src/grpc/grpc-error.util.js.map +1 -0
- package/dist/src/grpc/grpc-operations.service.d.ts +96 -0
- package/dist/src/grpc/grpc-operations.service.js +844 -0
- package/dist/src/grpc/grpc-operations.service.js.map +1 -0
- package/dist/src/grpc/shared-secret-jwt.d.ts +6 -0
- package/dist/src/grpc/shared-secret-jwt.js +22 -0
- package/dist/src/grpc/shared-secret-jwt.js.map +1 -0
- package/dist/src/main.d.ts +1 -0
- package/dist/src/main.js +6 -0
- package/dist/src/main.js.map +1 -0
- package/dist/src/namespaces/namespace-fingerprint.service.d.ts +22 -0
- package/dist/src/namespaces/namespace-fingerprint.service.js +125 -0
- package/dist/src/namespaces/namespace-fingerprint.service.js.map +1 -0
- package/dist/src/orchestrator/node-poller.service.d.ts +26 -0
- package/dist/src/orchestrator/node-poller.service.js +224 -0
- package/dist/src/orchestrator/node-poller.service.js.map +1 -0
- package/dist/src/packages/daml-decoder.types.d.ts +69 -0
- package/dist/src/packages/daml-decoder.types.js +3 -0
- package/dist/src/packages/daml-decoder.types.js.map +1 -0
- package/dist/src/packages/daml-lf-archive-v2.descriptor.pb +0 -0
- package/dist/src/packages/daml-lf-archive.descriptor.pb +0 -0
- package/dist/src/packages/daml-lf-loader.d.ts +3 -0
- package/dist/src/packages/daml-lf-loader.js +51 -0
- package/dist/src/packages/daml-lf-loader.js.map +1 -0
- package/dist/src/packages/daml-lf-raw.util.d.ts +12 -0
- package/dist/src/packages/daml-lf-raw.util.js +117 -0
- package/dist/src/packages/daml-lf-raw.util.js.map +1 -0
- package/dist/src/packages/daml-lf-value.descriptor.pb +0 -0
- package/dist/src/packages/daml-value-decoder.service.d.ts +39 -0
- package/dist/src/packages/daml-value-decoder.service.js +463 -0
- package/dist/src/packages/daml-value-decoder.service.js.map +1 -0
- package/dist/src/packages/package-cache.service.d.ts +53 -0
- package/dist/src/packages/package-cache.service.js +288 -0
- package/dist/src/packages/package-cache.service.js.map +1 -0
- package/dist/src/packages/package-registry.service.d.ts +44 -0
- package/dist/src/packages/package-registry.service.js +625 -0
- package/dist/src/packages/package-registry.service.js.map +1 -0
- package/dist/src/packages/package-sync.service.d.ts +22 -0
- package/dist/src/packages/package-sync.service.js +129 -0
- package/dist/src/packages/package-sync.service.js.map +1 -0
- package/dist/src/packages/pqs-package.service.d.ts +9 -0
- package/dist/src/packages/pqs-package.service.js +118 -0
- package/dist/src/packages/pqs-package.service.js.map +1 -0
- package/dist/src/pqs/pqs-client.factory.d.ts +7 -0
- package/dist/src/pqs/pqs-client.factory.js +37 -0
- package/dist/src/pqs/pqs-client.factory.js.map +1 -0
- package/dist/src/pqs/pqs-summary.service.d.ts +229 -0
- package/dist/src/pqs/pqs-summary.service.js +4652 -0
- package/dist/src/pqs/pqs-summary.service.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +97 -0
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import type { NodeConfig } from '../config/node-config.schema';
|
|
2
|
+
type LedgerHealthResponse = {
|
|
3
|
+
status?: unknown;
|
|
4
|
+
};
|
|
5
|
+
type LedgerPartyDetail = {
|
|
6
|
+
party: string;
|
|
7
|
+
isLocal: boolean;
|
|
8
|
+
};
|
|
9
|
+
type ParticipantPackageDescription = {
|
|
10
|
+
packageId: string;
|
|
11
|
+
name?: string;
|
|
12
|
+
version?: string;
|
|
13
|
+
uploadedAt?: Date;
|
|
14
|
+
size?: number;
|
|
15
|
+
};
|
|
16
|
+
type TopologyMappingContext = {
|
|
17
|
+
signedByFingerprints?: string[];
|
|
18
|
+
};
|
|
19
|
+
type TopologyStoreSynchronizer = {
|
|
20
|
+
id?: string;
|
|
21
|
+
physicalId?: string;
|
|
22
|
+
};
|
|
23
|
+
type TopologyStoreId = {
|
|
24
|
+
kind?: 'authorized' | 'synchronizer' | 'temporary';
|
|
25
|
+
synchronizer?: TopologyStoreSynchronizer;
|
|
26
|
+
};
|
|
27
|
+
type TopologyParticipant = {
|
|
28
|
+
participantUid?: string;
|
|
29
|
+
permission?: unknown;
|
|
30
|
+
};
|
|
31
|
+
type TopologySigningPublicKey = {
|
|
32
|
+
format?: string;
|
|
33
|
+
publicKey?: Uint8Array;
|
|
34
|
+
scheme?: string;
|
|
35
|
+
usage?: string[];
|
|
36
|
+
keySpec?: string;
|
|
37
|
+
};
|
|
38
|
+
type TopologySigningKeysWithThreshold = {
|
|
39
|
+
threshold?: number;
|
|
40
|
+
keys?: TopologySigningPublicKey[];
|
|
41
|
+
};
|
|
42
|
+
type TopologyPartyToParticipantItem = {
|
|
43
|
+
party?: string;
|
|
44
|
+
threshold?: number;
|
|
45
|
+
participants?: TopologyParticipant[];
|
|
46
|
+
partySigningKeys?: TopologySigningKeysWithThreshold;
|
|
47
|
+
};
|
|
48
|
+
type TopologySigningKey = {
|
|
49
|
+
format?: string;
|
|
50
|
+
usage?: string[];
|
|
51
|
+
scheme?: string;
|
|
52
|
+
keySpec?: string;
|
|
53
|
+
};
|
|
54
|
+
type TopologyPartyToKeyMappingItem = {
|
|
55
|
+
party?: string;
|
|
56
|
+
signingKeys?: TopologySigningKey[];
|
|
57
|
+
};
|
|
58
|
+
type AggregatedTopologyPartySynchronizer = {
|
|
59
|
+
synchronizerId?: string;
|
|
60
|
+
permission?: unknown;
|
|
61
|
+
physicalSynchronizerId?: string;
|
|
62
|
+
};
|
|
63
|
+
type AggregatedTopologyPartyParticipant = {
|
|
64
|
+
participantUid?: string;
|
|
65
|
+
synchronizers?: AggregatedTopologyPartySynchronizer[];
|
|
66
|
+
};
|
|
67
|
+
type AggregatedTopologyPartyResult = {
|
|
68
|
+
party?: string;
|
|
69
|
+
participants?: AggregatedTopologyPartyParticipant[];
|
|
70
|
+
};
|
|
71
|
+
type AggregatedTopologySigningKey = {
|
|
72
|
+
fingerprint?: string;
|
|
73
|
+
format?: string;
|
|
74
|
+
usage?: string[];
|
|
75
|
+
scheme?: string;
|
|
76
|
+
keySpec?: string;
|
|
77
|
+
publicKey?: Uint8Array;
|
|
78
|
+
};
|
|
79
|
+
type AggregatedTopologyEncryptionKey = {
|
|
80
|
+
fingerprint?: string;
|
|
81
|
+
format?: string;
|
|
82
|
+
scheme?: string;
|
|
83
|
+
keySpec?: string;
|
|
84
|
+
publicKey?: Uint8Array;
|
|
85
|
+
};
|
|
86
|
+
type AggregatedTopologyKeyOwnerResult = {
|
|
87
|
+
keyOwner?: string;
|
|
88
|
+
synchronizerId?: string;
|
|
89
|
+
physicalSynchronizerId?: string;
|
|
90
|
+
signingKeys?: AggregatedTopologySigningKey[];
|
|
91
|
+
encryptionKeys?: AggregatedTopologyEncryptionKey[];
|
|
92
|
+
};
|
|
93
|
+
type LedgerPackageResponse = {
|
|
94
|
+
archivePayload: Uint8Array;
|
|
95
|
+
};
|
|
96
|
+
type LedgerIdentifier = {
|
|
97
|
+
packageId?: string;
|
|
98
|
+
moduleName?: string;
|
|
99
|
+
entityName?: string;
|
|
100
|
+
};
|
|
101
|
+
type LedgerValue = {
|
|
102
|
+
sum?: {
|
|
103
|
+
oneofKind?: string;
|
|
104
|
+
unit?: unknown;
|
|
105
|
+
bool?: boolean;
|
|
106
|
+
int64?: string;
|
|
107
|
+
numeric?: string;
|
|
108
|
+
party?: string;
|
|
109
|
+
text?: string;
|
|
110
|
+
contractId?: string;
|
|
111
|
+
optional?: {
|
|
112
|
+
value?: LedgerValue;
|
|
113
|
+
};
|
|
114
|
+
list?: {
|
|
115
|
+
elements?: LedgerValue[];
|
|
116
|
+
};
|
|
117
|
+
textMap?: {
|
|
118
|
+
entries?: Array<{
|
|
119
|
+
key?: string;
|
|
120
|
+
value?: LedgerValue;
|
|
121
|
+
}>;
|
|
122
|
+
};
|
|
123
|
+
genMap?: {
|
|
124
|
+
entries?: Array<{
|
|
125
|
+
key?: LedgerValue;
|
|
126
|
+
value?: LedgerValue;
|
|
127
|
+
}>;
|
|
128
|
+
};
|
|
129
|
+
record?: LedgerRecord;
|
|
130
|
+
variant?: {
|
|
131
|
+
constructor?: string;
|
|
132
|
+
value?: LedgerValue;
|
|
133
|
+
};
|
|
134
|
+
enum?: {
|
|
135
|
+
constructor?: string;
|
|
136
|
+
};
|
|
137
|
+
};
|
|
138
|
+
};
|
|
139
|
+
type LedgerRecordField = {
|
|
140
|
+
label?: string;
|
|
141
|
+
value?: LedgerValue;
|
|
142
|
+
};
|
|
143
|
+
type LedgerRecord = {
|
|
144
|
+
fields?: LedgerRecordField[];
|
|
145
|
+
};
|
|
146
|
+
type LedgerInterfaceView = {
|
|
147
|
+
interfaceId?: LedgerIdentifier;
|
|
148
|
+
viewStatus?: {
|
|
149
|
+
code?: number;
|
|
150
|
+
message?: string;
|
|
151
|
+
};
|
|
152
|
+
viewValue?: LedgerRecord;
|
|
153
|
+
implementationPackageId?: string;
|
|
154
|
+
};
|
|
155
|
+
type LedgerCreatedEvent = {
|
|
156
|
+
contractId?: string;
|
|
157
|
+
interfaceViews?: LedgerInterfaceView[];
|
|
158
|
+
};
|
|
159
|
+
type LedgerActiveContract = {
|
|
160
|
+
createdEvent?: LedgerCreatedEvent;
|
|
161
|
+
synchronizerId?: string;
|
|
162
|
+
};
|
|
163
|
+
type SdkCantonClient = {
|
|
164
|
+
hashing: {
|
|
165
|
+
computePublicKeyFingerprint(publicKey: Uint8Array, format?: string): string;
|
|
166
|
+
};
|
|
167
|
+
healthService: {
|
|
168
|
+
checkAsync(input: {
|
|
169
|
+
service?: string;
|
|
170
|
+
}): Promise<LedgerHealthResponse>;
|
|
171
|
+
};
|
|
172
|
+
partyManagementService: {
|
|
173
|
+
listKnownPartiesAsync(input: {
|
|
174
|
+
pageSize: number;
|
|
175
|
+
pageToken?: string;
|
|
176
|
+
}): Promise<{
|
|
177
|
+
partyDetails?: LedgerPartyDetail[];
|
|
178
|
+
nextPageToken?: string;
|
|
179
|
+
}>;
|
|
180
|
+
};
|
|
181
|
+
participantPackageService: {
|
|
182
|
+
listPackagesAsync(input: Record<string, never>): Promise<{
|
|
183
|
+
packageDescriptions?: ParticipantPackageDescription[];
|
|
184
|
+
}>;
|
|
185
|
+
};
|
|
186
|
+
participantStatusService: {
|
|
187
|
+
getParticipantStatusAsync(input: Record<string, never>): Promise<{
|
|
188
|
+
status?: {
|
|
189
|
+
uid: string;
|
|
190
|
+
uptime?: {
|
|
191
|
+
seconds: string;
|
|
192
|
+
nanos: number;
|
|
193
|
+
};
|
|
194
|
+
ports: Record<string, number>;
|
|
195
|
+
active: boolean;
|
|
196
|
+
topologyQueues?: {
|
|
197
|
+
manager: number;
|
|
198
|
+
dispatcher: number;
|
|
199
|
+
clients: number;
|
|
200
|
+
};
|
|
201
|
+
components: Array<{
|
|
202
|
+
name: string;
|
|
203
|
+
kind: 'unknown' | 'ok' | 'degraded' | 'failed' | 'fatal';
|
|
204
|
+
description?: string;
|
|
205
|
+
}>;
|
|
206
|
+
version: string;
|
|
207
|
+
connectedSynchronizers: Array<{
|
|
208
|
+
physicalSynchronizerId: string;
|
|
209
|
+
health: 'unspecified' | 'healthy' | 'unhealthy';
|
|
210
|
+
}>;
|
|
211
|
+
supportedProtocolVersions: number[];
|
|
212
|
+
};
|
|
213
|
+
notInitialized?: {
|
|
214
|
+
active: boolean;
|
|
215
|
+
waitingForExternalInput: 'unspecified' | 'id' | 'nodeTopology' | 'initialization';
|
|
216
|
+
version: string;
|
|
217
|
+
};
|
|
218
|
+
}>;
|
|
219
|
+
};
|
|
220
|
+
packageService: {
|
|
221
|
+
listPackagesAsync(input: Record<string, never>): Promise<{
|
|
222
|
+
packageIds?: string[];
|
|
223
|
+
}>;
|
|
224
|
+
getPackageAsync(input: {
|
|
225
|
+
packageId: string;
|
|
226
|
+
}): Promise<LedgerPackageResponse>;
|
|
227
|
+
};
|
|
228
|
+
stateService: {
|
|
229
|
+
getActiveContractsPageAsync(input: {
|
|
230
|
+
party: string;
|
|
231
|
+
templateId?: string;
|
|
232
|
+
interfaceId?: string;
|
|
233
|
+
includeInterfaceView?: boolean;
|
|
234
|
+
includeCreatedEventBlob?: boolean;
|
|
235
|
+
activeAtOffset?: string;
|
|
236
|
+
maxPageSize?: number;
|
|
237
|
+
pageToken?: Uint8Array;
|
|
238
|
+
}): Promise<{
|
|
239
|
+
contracts?: LedgerActiveContract[];
|
|
240
|
+
activeAtOffset?: string;
|
|
241
|
+
nextPageToken?: Uint8Array;
|
|
242
|
+
}>;
|
|
243
|
+
};
|
|
244
|
+
topologyManagerReadService?: {
|
|
245
|
+
listAvailableStoresAsync(input: Record<string, never>): Promise<{
|
|
246
|
+
storeIds?: TopologyStoreId[];
|
|
247
|
+
}>;
|
|
248
|
+
listPartyToParticipantAsync(input: {
|
|
249
|
+
baseQuery?: {
|
|
250
|
+
storeId?: TopologyStoreId;
|
|
251
|
+
headState?: boolean;
|
|
252
|
+
};
|
|
253
|
+
filterParty?: string;
|
|
254
|
+
filterParticipant?: string;
|
|
255
|
+
}): Promise<{
|
|
256
|
+
results?: Array<{
|
|
257
|
+
context?: TopologyMappingContext;
|
|
258
|
+
item?: TopologyPartyToParticipantItem;
|
|
259
|
+
}>;
|
|
260
|
+
}>;
|
|
261
|
+
listPartyToKeyMappingAsync(input: {
|
|
262
|
+
filterParty?: string;
|
|
263
|
+
}): Promise<{
|
|
264
|
+
results?: Array<{
|
|
265
|
+
context?: TopologyMappingContext;
|
|
266
|
+
item?: TopologyPartyToKeyMappingItem;
|
|
267
|
+
}>;
|
|
268
|
+
}>;
|
|
269
|
+
};
|
|
270
|
+
topologyAggregationService: {
|
|
271
|
+
listPartiesAsync(input: {
|
|
272
|
+
asOf?: Date;
|
|
273
|
+
limit?: number;
|
|
274
|
+
synchronizerIds: string[];
|
|
275
|
+
filterParty?: string;
|
|
276
|
+
filterParticipant?: string;
|
|
277
|
+
}): Promise<{
|
|
278
|
+
results?: AggregatedTopologyPartyResult[];
|
|
279
|
+
}>;
|
|
280
|
+
listKeyOwnersAsync(input: {
|
|
281
|
+
asOf?: Date;
|
|
282
|
+
limit?: number;
|
|
283
|
+
synchronizerIds: string[];
|
|
284
|
+
filterKeyOwnerType?: string;
|
|
285
|
+
filterKeyOwnerUid?: string;
|
|
286
|
+
}): Promise<{
|
|
287
|
+
results?: AggregatedTopologyKeyOwnerResult[];
|
|
288
|
+
}>;
|
|
289
|
+
};
|
|
290
|
+
disposeAsync?(): Promise<void>;
|
|
291
|
+
};
|
|
292
|
+
export declare class GrpcClientFactory {
|
|
293
|
+
create(node: NodeConfig): Promise<SdkCantonClient>;
|
|
294
|
+
private loadSdk;
|
|
295
|
+
private createAuthProvider;
|
|
296
|
+
}
|
|
297
|
+
export {};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.GrpcClientFactory = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const shared_secret_jwt_1 = require("./shared-secret-jwt");
|
|
12
|
+
let GrpcClientFactory = class GrpcClientFactory {
|
|
13
|
+
async create(node) {
|
|
14
|
+
if (node.mode !== 'pqs_with_grpc') {
|
|
15
|
+
throw new Error(`Node ${node.id} does not define grpc settings`);
|
|
16
|
+
}
|
|
17
|
+
const sdk = await this.loadSdk();
|
|
18
|
+
const authProvider = this.createAuthProvider(node, sdk);
|
|
19
|
+
return new sdk.CantonClient(new sdk.CantonClientOptions({
|
|
20
|
+
transportKind: sdk.TransportKind.grpc,
|
|
21
|
+
ledgerEndpoint: node.grpc.ledgerTarget,
|
|
22
|
+
ledgerAdminEndpoint: node.grpc.ledgerAdminTarget,
|
|
23
|
+
participantAdminEndpoint: node.grpc.participantAdminTarget,
|
|
24
|
+
defaultRequestTimeoutMs: node.grpc.connectTimeoutMs,
|
|
25
|
+
grpcConnectTimeoutMs: node.grpc.connectTimeoutMs,
|
|
26
|
+
grpcChannelSecurity: node.grpc.useTls
|
|
27
|
+
? sdk.GrpcChannelSecurity.tls
|
|
28
|
+
: sdk.GrpcChannelSecurity.insecure,
|
|
29
|
+
ledgerGrpcChannelSecurity: node.grpc.useTls
|
|
30
|
+
? sdk.GrpcChannelSecurity.tls
|
|
31
|
+
: sdk.GrpcChannelSecurity.insecure,
|
|
32
|
+
ledgerAdminGrpcChannelSecurity: node.grpc.useTls
|
|
33
|
+
? sdk.GrpcChannelSecurity.tls
|
|
34
|
+
: sdk.GrpcChannelSecurity.insecure,
|
|
35
|
+
participantAdminGrpcChannelSecurity: node.grpc.useTls
|
|
36
|
+
? sdk.GrpcChannelSecurity.tls
|
|
37
|
+
: sdk.GrpcChannelSecurity.insecure,
|
|
38
|
+
ledgerAuthProvider: authProvider,
|
|
39
|
+
ledgerAdminAuthProvider: authProvider,
|
|
40
|
+
participantAdminAuthProvider: authProvider,
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
async loadSdk() {
|
|
44
|
+
const sdkModulePath = '@distrohelena/canton-typescript-sdk';
|
|
45
|
+
return import(sdkModulePath);
|
|
46
|
+
}
|
|
47
|
+
createAuthProvider(node, sdk) {
|
|
48
|
+
if (!node.grpc.auth) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
switch (node.grpc.auth.kind) {
|
|
52
|
+
case 'shared_secret_jwt':
|
|
53
|
+
return new sdk.BearerTokenAuthProvider((0, shared_secret_jwt_1.createSharedSecretJwt)({
|
|
54
|
+
user: node.grpc.auth.user,
|
|
55
|
+
audience: node.grpc.auth.audience,
|
|
56
|
+
secret: node.grpc.auth.secret,
|
|
57
|
+
}));
|
|
58
|
+
default:
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
exports.GrpcClientFactory = GrpcClientFactory;
|
|
64
|
+
exports.GrpcClientFactory = GrpcClientFactory = __decorate([
|
|
65
|
+
(0, common_1.Injectable)()
|
|
66
|
+
], GrpcClientFactory);
|
|
67
|
+
//# sourceMappingURL=grpc-client.factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grpc-client.factory.js","sourceRoot":"","sources":["../../../src/grpc/grpc-client.factory.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAE5C,2DAA4D;AAqRrD,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC5B,KAAK,CAAC,MAAM,CAAC,IAAgB;QAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,gCAAgC,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAExD,OAAO,IAAI,GAAG,CAAC,YAAY,CACzB,IAAI,GAAG,CAAC,mBAAmB,CAAC;YAC1B,aAAa,EAAE,GAAG,CAAC,aAAa,CAAC,IAAI;YACrC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;YACtC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAChD,wBAAwB,EAAE,IAAI,CAAC,IAAI,CAAC,sBAAsB;YAC1D,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB;YACnD,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAChD,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;gBACnC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG;gBAC7B,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,QAAQ;YACpC,yBAAyB,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;gBACzC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG;gBAC7B,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,QAAQ;YACpC,8BAA8B,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;gBAC9C,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG;gBAC7B,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,QAAQ;YACpC,mCAAmC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;gBACnD,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG;gBAC7B,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,QAAQ;YACpC,kBAAkB,EAAE,YAAY;YAChC,uBAAuB,EAAE,YAAY;YACrC,4BAA4B,EAAE,YAAY;SAC3C,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,MAAM,aAAa,GAAG,qCAAqC,CAAC;QAC5D,OAAO,MAAM,CAAC,aAAa,CAAuB,CAAC;IACrD,CAAC;IAEO,kBAAkB,CACxB,IAAoD,EACpD,GAA+C;QAE/C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,KAAK,mBAAmB;gBACtB,OAAO,IAAI,GAAG,CAAC,uBAAuB,CACpC,IAAA,yCAAqB,EAAC;oBACpB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;oBACzB,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;oBACjC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;iBAC9B,CAAC,CACH,CAAC;YACJ;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;CACF,CAAA;AA9DY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;GACA,iBAAiB,CA8D7B"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.describeGrpcError = describeGrpcError;
|
|
4
|
+
function describeGrpcError(error) {
|
|
5
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
6
|
+
const candidate = error;
|
|
7
|
+
const details = typeof candidate?.details === 'string' && candidate.details.length > 0
|
|
8
|
+
? candidate.details
|
|
9
|
+
: message || null;
|
|
10
|
+
const tidSource = details ?? message;
|
|
11
|
+
return {
|
|
12
|
+
message,
|
|
13
|
+
code: normalizeCode(candidate?.code),
|
|
14
|
+
details,
|
|
15
|
+
tid: extractTid(tidSource),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function normalizeCode(code) {
|
|
19
|
+
if (typeof code === 'number' || typeof code === 'string') {
|
|
20
|
+
return String(code);
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
function extractTid(value) {
|
|
25
|
+
if (!value) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
const match = value.match(/\btid\s+([A-Za-z0-9-]+)/i);
|
|
29
|
+
return match?.[1] ?? null;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=grpc-error.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grpc-error.util.js","sourceRoot":"","sources":["../../../src/grpc/grpc-error.util.ts"],"names":[],"mappings":";;AAOA,8CAkBC;AAlBD,SAAgB,iBAAiB,CAAC,KAAc;IAC9C,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,KAGV,CAAC;IACT,MAAM,OAAO,GACX,OAAO,SAAS,EAAE,OAAO,KAAK,QAAQ,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QACpE,CAAC,CAAC,SAAS,CAAC,OAAO;QACnB,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC;IACtB,MAAM,SAAS,GAAG,OAAO,IAAI,OAAO,CAAC;IAErC,OAAO;QACL,OAAO;QACP,IAAI,EAAE,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC;QACpC,OAAO;QACP,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC;KAC3B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAa;IAClC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACzD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,KAAoB;IACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACtD,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { NodeConfigService } from '../config/node-config.service';
|
|
2
|
+
import type { NodeConfig } from '../config/node-config.schema';
|
|
3
|
+
import type { NodeParticipantNotInitializedSummary, NodeParticipantStatusSummary, ServiceInfo, TokenSummary } from '../domain/node.types';
|
|
4
|
+
import type { CachedPackageBlob, CachedPackageRef } from '../packages/package-cache.service';
|
|
5
|
+
import { GrpcClientFactory } from './grpc-client.factory';
|
|
6
|
+
export interface GrpcPartyTopologyParticipantMapping {
|
|
7
|
+
participantId: string | null;
|
|
8
|
+
participantUid: string | null;
|
|
9
|
+
permission: string | null;
|
|
10
|
+
threshold: number | null;
|
|
11
|
+
synchronizerIds: string[];
|
|
12
|
+
}
|
|
13
|
+
export interface GrpcPartyTopologyKeyMapping {
|
|
14
|
+
keyFingerprint: string | null;
|
|
15
|
+
publicKey: string | null;
|
|
16
|
+
purpose: string | null;
|
|
17
|
+
keyType: string | null;
|
|
18
|
+
keyFormat: string | null;
|
|
19
|
+
keySpec: string | null;
|
|
20
|
+
threshold: number | null;
|
|
21
|
+
synchronizerIds: string[];
|
|
22
|
+
}
|
|
23
|
+
export type GrpcPartyTopologyStatus = 'ok' | 'grpc_not_configured' | 'grpc_error';
|
|
24
|
+
export interface GrpcPartyTopologyNodeEntry {
|
|
25
|
+
nodeId: string;
|
|
26
|
+
label: string;
|
|
27
|
+
status: GrpcPartyTopologyStatus;
|
|
28
|
+
errorMessage: string | null;
|
|
29
|
+
isLocalParty?: boolean | null;
|
|
30
|
+
partyToParticipants: GrpcPartyTopologyParticipantMapping[];
|
|
31
|
+
partyToKeyMappings: GrpcPartyTopologyKeyMapping[];
|
|
32
|
+
}
|
|
33
|
+
export interface GrpcTokenHolderObservation {
|
|
34
|
+
contractId: string | null;
|
|
35
|
+
nodeId: string;
|
|
36
|
+
label: string;
|
|
37
|
+
tokenId: string;
|
|
38
|
+
partyId: string;
|
|
39
|
+
amount: string | null;
|
|
40
|
+
}
|
|
41
|
+
export declare class GrpcOperationsService {
|
|
42
|
+
private readonly clientFactory;
|
|
43
|
+
private readonly nodeConfigService?;
|
|
44
|
+
private topologySdkPromise?;
|
|
45
|
+
constructor(clientFactory: GrpcClientFactory, nodeConfigService?: NodeConfigService | undefined);
|
|
46
|
+
fetchOperationalInfo(node: NodeConfig): Promise<ServiceInfo>;
|
|
47
|
+
listLocalParties(node: NodeConfig): Promise<string[]>;
|
|
48
|
+
listKnownPartyFingerprints(node: NodeConfig): Promise<string[]>;
|
|
49
|
+
fetchHoldingV2Tokens(node: NodeConfig): Promise<TokenSummary[]>;
|
|
50
|
+
fetchHoldingV2TokenHolders(node: NodeConfig): Promise<GrpcTokenHolderObservation[]>;
|
|
51
|
+
fetchPartyTopology(node: NodeConfig, partyId: string): Promise<GrpcPartyTopologyNodeEntry>;
|
|
52
|
+
fetchParticipantStatus(node: NodeConfig): Promise<{
|
|
53
|
+
participantStatus: NodeParticipantStatusSummary;
|
|
54
|
+
notInitialized: null;
|
|
55
|
+
} | {
|
|
56
|
+
participantStatus: null;
|
|
57
|
+
notInitialized: NodeParticipantNotInitializedSummary;
|
|
58
|
+
}>;
|
|
59
|
+
fetchPackageRefs(node: NodeConfig): Promise<CachedPackageRef[]>;
|
|
60
|
+
fetchPackagesByRefs(node: NodeConfig, packageRefs: CachedPackageRef[]): Promise<CachedPackageBlob[]>;
|
|
61
|
+
private mapHealthStatus;
|
|
62
|
+
private shouldFallbackToLedgerPackageListing;
|
|
63
|
+
private loadTopologySdk;
|
|
64
|
+
private buildTopologyStoreId;
|
|
65
|
+
private fetchHoldingV2ActiveContracts;
|
|
66
|
+
private extractHoldingV2TokenSummary;
|
|
67
|
+
private extractHoldingV2TokenHolder;
|
|
68
|
+
private findHoldingV2View;
|
|
69
|
+
private findLedgerField;
|
|
70
|
+
private isLedgerRecordValue;
|
|
71
|
+
private readLedgerScalar;
|
|
72
|
+
private readLedgerScalarField;
|
|
73
|
+
private readLedgerNestedScalarField;
|
|
74
|
+
private readLedgerTextMapEntryField;
|
|
75
|
+
private readConfiguredLedgerTokenMetadata;
|
|
76
|
+
private getTokenMetadataConfig;
|
|
77
|
+
private getLedgerFieldValueAtPath;
|
|
78
|
+
private nullIfEmptyString;
|
|
79
|
+
private tryListRawPartyToParticipant;
|
|
80
|
+
private uniqueNonEmptyStrings;
|
|
81
|
+
private joinDistinctValues;
|
|
82
|
+
private mergePartyTopologyParticipants;
|
|
83
|
+
private mergePartyTopologyKeyMappings;
|
|
84
|
+
private bytesToHex;
|
|
85
|
+
private computePublicKeyFingerprint;
|
|
86
|
+
private extractParticipantId;
|
|
87
|
+
private listLocalPartiesWithClient;
|
|
88
|
+
private extractPartyFingerprint;
|
|
89
|
+
private extractRawTopologySynchronizerId;
|
|
90
|
+
private formatDuration;
|
|
91
|
+
private mapComponentStatus;
|
|
92
|
+
private mapSynchronizerHealth;
|
|
93
|
+
private mapWaitingForExternalInput;
|
|
94
|
+
private decodePackageArchiveMetadata;
|
|
95
|
+
private withClient;
|
|
96
|
+
}
|