@distrohelena/canton-typescript-sdk 0.1.32 → 0.1.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +220 -9
- package/dist/cjs/client/external-party-activation-client.js +20 -10
- package/dist/cjs/core/errors/active-contracts-traversal-error.js +12 -0
- package/dist/cjs/core/polling/poll-until-async.js +26 -0
- package/dist/cjs/core/types/active-contracts-traversal-options.js +26 -0
- package/dist/cjs/core/types/command-deduplication-period.js +2 -0
- package/dist/cjs/core/types/operation-deadline.js +42 -0
- package/dist/cjs/core/types/requests/allocate-party-request.js +2 -0
- package/dist/cjs/core/types/requests/finalize-decentralized-party-request.js +6 -0
- package/dist/cjs/core/types/requests/submit-command-request.js +43 -0
- package/dist/cjs/core/types/requests/wait-for-party-hosting-request.js +40 -0
- package/dist/cjs/index.js +13 -27
- package/dist/cjs/query/grpc/grpc-contract-query-client.js +33 -16
- package/dist/cjs/services/party-management/decentralized-party-lifecycle.js +28 -3
- package/dist/cjs/services/party-management/party-management-service-client.js +3 -0
- package/dist/cjs/services/state/state-service-client.js +1 -1
- package/dist/cjs/services/topology-aggregation/topology-aggregation-service-client.js +36 -0
- package/dist/cjs/transports/grpc/grpc-channel-factory.js +5 -7
- package/dist/cjs/transports/grpc/grpc-transport.js +31 -15
- package/dist/cjs/transports/grpc/mappers/command-deduplication-mapper.js +22 -0
- package/dist/cjs/transports/grpc/mappers/commands-mapper.js +3 -4
- package/dist/cjs/transports/grpc/mappers/interactive-command-mapper.js +5 -3
- package/dist/cjs/transports/grpc/mappers/parties-mapper.js +1 -12
- package/dist/cjs/transports/json/mappers/commands-mapper.js +5 -1
- package/dist/cjs/transports/json/mappers/parties-mapper.js +1 -0
- package/dist/client/external-party-activation-client.js +20 -10
- package/dist/client/external-party-activation-response.d.ts +1 -1
- package/dist/core/errors/active-contracts-traversal-error.d.ts +5 -0
- package/dist/core/errors/active-contracts-traversal-error.js +8 -0
- package/dist/core/polling/poll-until-async.d.ts +10 -0
- package/dist/core/polling/poll-until-async.js +23 -0
- package/dist/core/transports/transport.interface.d.ts +11 -3
- package/dist/core/types/active-contracts-traversal-options.d.ts +11 -0
- package/dist/core/types/active-contracts-traversal-options.js +22 -0
- package/dist/core/types/command-deduplication-period.d.ts +7 -0
- package/dist/core/types/command-deduplication-period.js +1 -0
- package/dist/core/types/operation-deadline.d.ts +13 -0
- package/dist/core/types/operation-deadline.js +38 -0
- package/dist/core/types/requests/allocate-party-request.d.ts +2 -0
- package/dist/core/types/requests/allocate-party-request.js +2 -0
- package/dist/core/types/requests/finalize-decentralized-party-request.d.ts +6 -0
- package/dist/core/types/requests/finalize-decentralized-party-request.js +6 -0
- package/dist/core/types/requests/submit-command-request.d.ts +5 -0
- package/dist/core/types/requests/submit-command-request.js +43 -0
- package/dist/core/types/requests/wait-for-party-hosting-request.d.ts +14 -0
- package/dist/core/types/requests/wait-for-party-hosting-request.js +36 -0
- package/dist/index.d.ts +5 -11
- package/dist/index.js +4 -11
- package/dist/query/grpc/grpc-contract-query-client.js +33 -16
- package/dist/services/party-management/decentralized-party-lifecycle.d.ts +1 -1
- package/dist/services/party-management/decentralized-party-lifecycle.js +28 -3
- package/dist/services/party-management/party-management-service-client.js +3 -0
- package/dist/services/state/state-service-client.d.ts +1 -1
- package/dist/services/state/state-service-client.js +1 -1
- package/dist/services/topology-aggregation/topology-aggregation-service-client.d.ts +4 -1
- package/dist/services/topology-aggregation/topology-aggregation-service-client.js +36 -0
- package/dist/services/topology-manager-read/topology-manager-read-service-client.d.ts +3 -1
- package/dist/services/user-management/user-management-service-client.d.ts +7 -1
- package/dist/transports/grpc/grpc-channel-factory.d.ts +0 -1
- package/dist/transports/grpc/grpc-channel-factory.js +5 -7
- package/dist/transports/grpc/grpc-transport.d.ts +10 -3
- package/dist/transports/grpc/grpc-transport.js +31 -15
- package/dist/transports/grpc/mappers/command-deduplication-mapper.d.ts +5 -0
- package/dist/transports/grpc/mappers/command-deduplication-mapper.js +19 -0
- package/dist/transports/grpc/mappers/commands-mapper.js +3 -4
- package/dist/transports/grpc/mappers/interactive-command-mapper.js +5 -3
- package/dist/transports/grpc/mappers/parties-mapper.d.ts +3 -7
- package/dist/transports/grpc/mappers/parties-mapper.js +1 -10
- package/dist/transports/json/json-transport.d.ts +10 -5
- package/dist/transports/json/mappers/commands-mapper.js +5 -1
- package/dist/transports/json/mappers/parties-mapper.d.ts +1 -0
- package/dist/transports/json/mappers/parties-mapper.js +1 -0
- package/node/participant-358-synchronizer.mjs +174 -0
- package/node/start-local-participant-358.sh +214 -0
- package/node/stop-local-participant-358.sh +18 -0
- package/node/test-participant-358-sidecar-smoke.sh +19 -0
- package/node/test-participant-358-sidecar.sh +113 -0
- package/package.json +18 -2
- package/dist/cjs/core/types/health-check-status.js +0 -10
- package/dist/cjs/core/types/requests/get-ledger-api-version-request.js +0 -6
- package/dist/cjs/core/types/requests/get-package-references-request.js +0 -10
- package/dist/cjs/core/types/requests/get-participant-id-request.js +0 -7
- package/dist/cjs/core/types/requests/get-participant-status-request.js +0 -6
- package/dist/cjs/core/types/requests/health-check-request.js +0 -10
- package/dist/cjs/core/types/responses/get-ledger-api-version-response.js +0 -12
- package/dist/cjs/core/types/responses/get-package-references-response.js +0 -10
- package/dist/cjs/core/types/responses/get-participant-id-response.js +0 -10
- package/dist/cjs/core/types/responses/get-participant-status-response.js +0 -12
- package/dist/cjs/core/types/responses/health-check-response.js +0 -10
- package/dist/cjs/transports/grpc/mappers/health-mapper.js +0 -24
- package/dist/cjs/transports/grpc/mappers/participant-status-mapper.js +0 -58
- package/dist/core/types/health-check-status.d.ts +0 -6
- package/dist/core/types/health-check-status.js +0 -7
- package/dist/core/types/requests/get-ledger-api-version-request.d.ts +0 -2
- package/dist/core/types/requests/get-ledger-api-version-request.js +0 -2
- package/dist/core/types/requests/get-package-references-request.d.ts +0 -6
- package/dist/core/types/requests/get-package-references-request.js +0 -6
- package/dist/core/types/requests/get-participant-id-request.d.ts +0 -3
- package/dist/core/types/requests/get-participant-id-request.js +0 -3
- package/dist/core/types/requests/get-participant-status-request.d.ts +0 -2
- package/dist/core/types/requests/get-participant-status-request.js +0 -2
- package/dist/core/types/requests/health-check-request.d.ts +0 -6
- package/dist/core/types/requests/health-check-request.js +0 -6
- package/dist/core/types/responses/get-ledger-api-version-response.d.ts +0 -8
- package/dist/core/types/responses/get-ledger-api-version-response.js +0 -8
- package/dist/core/types/responses/get-package-references-response.d.ts +0 -7
- package/dist/core/types/responses/get-package-references-response.js +0 -6
- package/dist/core/types/responses/get-participant-id-response.d.ts +0 -6
- package/dist/core/types/responses/get-participant-id-response.js +0 -6
- package/dist/core/types/responses/get-participant-status-response.d.ts +0 -10
- package/dist/core/types/responses/get-participant-status-response.js +0 -8
- package/dist/core/types/responses/health-check-response.d.ts +0 -7
- package/dist/core/types/responses/health-check-response.js +0 -6
- package/dist/transports/grpc/mappers/health-mapper.d.ts +0 -5
- package/dist/transports/grpc/mappers/health-mapper.js +0 -21
- package/dist/transports/grpc/mappers/participant-status-mapper.d.ts +0 -5
- package/dist/transports/grpc/mappers/participant-status-mapper.js +0 -54
- package/node/.generated/start-local/additional-config.extra-participants.conf +0 -72
- package/node/.generated/start-local/additional-config.extra-validators.conf +0 -105
- package/node/.generated/start-local/compose-extra-participants.yaml +0 -366
- package/node/.generated/start-local/extra-participants.env +0 -88
package/dist/index.js
CHANGED
|
@@ -85,7 +85,6 @@ export { OffsetCheckpoint } from "./core/types/offset-checkpoint.js";
|
|
|
85
85
|
export { PackageFormat } from "./core/types/package-format.js";
|
|
86
86
|
export { HashFunction } from "./core/types/hash-function.js";
|
|
87
87
|
export { CantonHashPurpose } from "./core/types/canton-hash-purpose.js";
|
|
88
|
-
export { HealthCheckStatus } from "./core/types/health-check-status.js";
|
|
89
88
|
export { PackageStatus } from "./core/types/package-status.js";
|
|
90
89
|
export { PendingOperationMetadata } from "./core/types/pending-operation-metadata.js";
|
|
91
90
|
export { ParticipantPruningSchedule } from "./core/types/participant-pruning-schedule.js";
|
|
@@ -94,6 +93,8 @@ export { ReceivedAcsCommitment } from "./core/types/received-acs-commitment.js";
|
|
|
94
93
|
export { ReceivedAcsCommitmentPerSynchronizer } from "./core/types/received-acs-commitment-per-synchronizer.js";
|
|
95
94
|
export { ReceivedAcsCommitmentState } from "./core/types/received-acs-commitment-state.js";
|
|
96
95
|
export { RequestOptions } from "./core/types/request-options.js";
|
|
96
|
+
export { OperationDeadline } from "./core/types/operation-deadline.js";
|
|
97
|
+
export { ActiveContractsTraversalOptions } from "./core/types/active-contracts-traversal-options.js";
|
|
97
98
|
export { PackageMetadataFilter } from "./core/types/package-metadata-filter.js";
|
|
98
99
|
export { PackageReference } from "./core/types/package-reference.js";
|
|
99
100
|
export { ParticipantDarDescription } from "./core/types/participant-dar-description.js";
|
|
@@ -186,17 +187,12 @@ export { GetDarRequest } from "./core/types/requests/get-dar-request.js";
|
|
|
186
187
|
export { GetActiveContractsPageRequest } from "./core/types/requests/get-active-contracts-page-request.js";
|
|
187
188
|
export { GetActiveContractsRequest } from "./core/types/requests/get-active-contracts-request.js";
|
|
188
189
|
export { GetCommandStatusRequest } from "./core/types/requests/get-command-status-request.js";
|
|
189
|
-
export { HealthCheckRequest } from "./core/types/requests/health-check-request.js";
|
|
190
190
|
export { ListPackagesRequest } from "./core/types/requests/list-packages-request.js";
|
|
191
191
|
export { ListAllRequest } from "./core/types/requests/list-all-request.js";
|
|
192
192
|
export { ListDecentralizedNamespaceDefinitionRequest } from "./core/types/requests/list-decentralized-namespace-definition-request.js";
|
|
193
|
-
export { GetLedgerApiVersionRequest } from "./core/types/requests/get-ledger-api-version-request.js";
|
|
194
193
|
export { GetIdentityProviderConfigRequest } from "./core/types/requests/get-identity-provider-config-request.js";
|
|
195
|
-
export { GetParticipantStatusRequest } from "./core/types/requests/get-participant-status-request.js";
|
|
196
194
|
export { GetPackageRequest } from "./core/types/requests/get-package-request.js";
|
|
197
|
-
export { GetPackageReferencesRequest } from "./core/types/requests/get-package-references-request.js";
|
|
198
195
|
export { GetPackageStatusRequest } from "./core/types/requests/get-package-status-request.js";
|
|
199
|
-
export { GetParticipantIdRequest } from "./core/types/requests/get-participant-id-request.js";
|
|
200
196
|
export { GetConnectedSynchronizersRequest } from "./core/types/requests/get-connected-synchronizers-request.js";
|
|
201
197
|
export { GetLatestPrunedOffsetsRequest } from "./core/types/requests/get-latest-pruned-offsets-request.js";
|
|
202
198
|
export { GetLedgerEndRequest } from "./core/types/requests/get-ledger-end-request.js";
|
|
@@ -226,6 +222,7 @@ export { ListUserRightsRequest } from "./core/types/requests/list-user-rights-re
|
|
|
226
222
|
export { ListUsersRequest } from "./core/types/requests/list-users-request.js";
|
|
227
223
|
export { SubmitCommandRequest } from "./core/types/requests/submit-command-request.js";
|
|
228
224
|
export { TopologyListPartiesRequest } from "./core/types/requests/topology-list-parties-request.js";
|
|
225
|
+
export { WaitForPartyHostingRequest } from "./core/types/requests/wait-for-party-hosting-request.js";
|
|
229
226
|
export { GrantUserRightsRequest } from "./core/types/requests/grant-user-rights-request.js";
|
|
230
227
|
export { UploadDarFileRequest } from "./core/types/requests/upload-dar-file-request.js";
|
|
231
228
|
export { AllocatePartyResponse } from "./core/types/responses/allocate-party-response.js";
|
|
@@ -234,15 +231,10 @@ export { GetDarResponse } from "./core/types/responses/get-dar-response.js";
|
|
|
234
231
|
export { GetActiveContractsPageResponse } from "./core/types/responses/get-active-contracts-page-response.js";
|
|
235
232
|
export { GetConnectedSynchronizersResponse } from "./core/types/responses/get-connected-synchronizers-response.js";
|
|
236
233
|
export { GetCommandStatusResponse } from "./core/types/responses/get-command-status-response.js";
|
|
237
|
-
export { HealthCheckResponse } from "./core/types/responses/health-check-response.js";
|
|
238
|
-
export { GetLedgerApiVersionResponse } from "./core/types/responses/get-ledger-api-version-response.js";
|
|
239
234
|
export { GetIdentityProviderConfigResponse } from "./core/types/responses/get-identity-provider-config-response.js";
|
|
240
235
|
export { GetLatestPrunedOffsetsResponse } from "./core/types/responses/get-latest-pruned-offsets-response.js";
|
|
241
236
|
export { GetLedgerEndResponse } from "./core/types/responses/get-ledger-end-response.js";
|
|
242
|
-
export { GetParticipantStatusResponse } from "./core/types/responses/get-participant-status-response.js";
|
|
243
|
-
export { GetParticipantIdResponse } from "./core/types/responses/get-participant-id-response.js";
|
|
244
237
|
export { GetPackageResponse } from "./core/types/responses/get-package-response.js";
|
|
245
|
-
export { GetPackageReferencesResponse } from "./core/types/responses/get-package-references-response.js";
|
|
246
238
|
export { GetPackageStatusResponse } from "./core/types/responses/get-package-status-response.js";
|
|
247
239
|
export { GetPartiesResponse } from "./core/types/responses/get-parties-response.js";
|
|
248
240
|
export { GetUserResponse } from "./core/types/responses/get-user-response.js";
|
|
@@ -280,6 +272,7 @@ export { ParticipantNodeStatus } from "./core/types/participant-node-status.js";
|
|
|
280
272
|
export { SynchronizerTime } from "./core/types/synchronizer-time.js";
|
|
281
273
|
export { CantonError } from "./core/errors/canton-error.js";
|
|
282
274
|
export { ValidationError } from "./core/errors/validation-error.js";
|
|
275
|
+
export { ActiveContractsTraversalError } from "./core/errors/active-contracts-traversal-error.js";
|
|
283
276
|
export { AuthenticationError } from "./core/errors/authentication-error.js";
|
|
284
277
|
export { AuthorizationError } from "./core/errors/authorization-error.js";
|
|
285
278
|
export { TransportError } from "./core/errors/transport-error.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { mapGrpcQueryContractsRequest } from "../../transports/grpc/mappers/contracts-mapper.js";
|
|
2
2
|
import { QueryCapabilityError } from "../errors/query-capability-error.js";
|
|
3
3
|
import { QuerySource } from "../query-source.js";
|
|
4
4
|
export class GrpcContractQueryClient {
|
|
@@ -58,8 +58,9 @@ export class GrpcContractQueryClient {
|
|
|
58
58
|
let rows = snapshot.filter((row) => args.where?.contractId?.equals === undefined
|
|
59
59
|
? true
|
|
60
60
|
: row.contractId === args.where.contractId.equals);
|
|
61
|
-
if (args.where?.payload !== undefined)
|
|
61
|
+
if (args.where?.payload !== undefined) {
|
|
62
62
|
rows = rows.filter((row) => matchesPayload(row.payload, args.where.payload));
|
|
63
|
+
}
|
|
63
64
|
return rows;
|
|
64
65
|
}
|
|
65
66
|
unsupported(operation) {
|
|
@@ -91,7 +92,7 @@ export class GrpcContractQueryClient {
|
|
|
91
92
|
let pageToken;
|
|
92
93
|
let activeAtOffset;
|
|
93
94
|
do {
|
|
94
|
-
const response = await this.stateService.getActiveContractsPageAsync(
|
|
95
|
+
const response = await this.stateService.getActiveContractsPageAsync(mapGrpcQueryContractsRequest(parties === undefined
|
|
95
96
|
? { allParties: true, activeAtOffset, pageToken }
|
|
96
97
|
: { parties, activeAtOffset, pageToken }));
|
|
97
98
|
activeAtOffset ??= response.activeAtOffset;
|
|
@@ -107,14 +108,17 @@ export class GrpcContractQueryClient {
|
|
|
107
108
|
}
|
|
108
109
|
}
|
|
109
110
|
function hasUnsupportedFilter(where) {
|
|
110
|
-
if (where === undefined)
|
|
111
|
+
if (where === undefined) {
|
|
111
112
|
return false;
|
|
112
|
-
|
|
113
|
+
}
|
|
114
|
+
else if ("and" in where || "or" in where || "not" in where || "createdEventOffset" in where || "createdAt" in where || "archivedEventOffset" in where || "archivedAt" in where) {
|
|
113
115
|
return true;
|
|
116
|
+
}
|
|
114
117
|
for (const field of ["contractId", "templateId"]) {
|
|
115
118
|
const filter = where[field];
|
|
116
|
-
if (filter !== undefined && Object.keys(filter).some((key) => key !== "equals"))
|
|
119
|
+
if (filter !== undefined && Object.keys(filter).some((key) => key !== "equals")) {
|
|
117
120
|
return true;
|
|
121
|
+
}
|
|
118
122
|
}
|
|
119
123
|
return false;
|
|
120
124
|
}
|
|
@@ -136,22 +140,35 @@ function mapGrpcContract(value) {
|
|
|
136
140
|
}
|
|
137
141
|
function matchesPayload(value, filter) {
|
|
138
142
|
const match = filter.match;
|
|
139
|
-
if (match === undefined)
|
|
143
|
+
if (match === undefined) {
|
|
140
144
|
return false;
|
|
145
|
+
}
|
|
141
146
|
const visit = (current, node) => Object.entries(node).every(([key, child]) => {
|
|
142
147
|
const next = current !== null && typeof current === "object" ? current[key] : undefined;
|
|
143
148
|
const predicate = child;
|
|
144
|
-
if (Object.keys(predicate).some((name) => ["equals", "lt", "lte", "gt", "gte", "like", "ilike"].includes(name)))
|
|
149
|
+
if (Object.keys(predicate).some((name) => ["equals", "lt", "lte", "gt", "gte", "like", "ilike"].includes(name))) {
|
|
145
150
|
return compare(String(next ?? ""), predicate);
|
|
151
|
+
}
|
|
146
152
|
return visit(next, predicate);
|
|
147
153
|
});
|
|
148
154
|
return visit(value, match);
|
|
149
155
|
}
|
|
150
|
-
function compare(value, filter) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
156
|
+
function compare(value, filter) {
|
|
157
|
+
if (filter.equals !== undefined) {
|
|
158
|
+
return value === filter.equals;
|
|
159
|
+
}
|
|
160
|
+
else if (filter.like !== undefined || filter.ilike !== undefined) {
|
|
161
|
+
const pattern = String(filter.like ?? filter.ilike).replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replaceAll("%", ".*").replaceAll("_", ".");
|
|
162
|
+
return new RegExp(`^${pattern}$`, filter.ilike === undefined ? "" : "i").test(value);
|
|
163
|
+
}
|
|
164
|
+
else if (filter.lt !== undefined) {
|
|
165
|
+
return value < String(filter.lt);
|
|
166
|
+
}
|
|
167
|
+
else if (filter.lte !== undefined) {
|
|
168
|
+
return value <= String(filter.lte);
|
|
169
|
+
}
|
|
170
|
+
else if (filter.gt !== undefined) {
|
|
171
|
+
return value > String(filter.gt);
|
|
172
|
+
}
|
|
173
|
+
return value >= String(filter.gte);
|
|
174
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CreateDecentralizedPartyRequest } from "../../core/types/requests/create-decentralized-party-request.js";
|
|
2
2
|
import { PreparedDecentralizedParty } from "../../core/types/requests/finalize-decentralized-party-request.js";
|
|
3
|
-
import { GetParticipantIdResponse } from "../../core/types/responses/get-participant-id-response.js";
|
|
4
3
|
import { RequestOptions } from "../../core/types/request-options.js";
|
|
4
|
+
import type { GetParticipantIdResponse } from "../../transports/grpc/generated/canton/com/daml/ledger/api/v2/admin/party_management_service.js";
|
|
5
5
|
import { TopologyManagerWriteServiceClient } from "../topology-manager-write/topology-manager-write-service-client.js";
|
|
6
6
|
export declare function prepareDecentralizedPartyAsync(request: CreateDecentralizedPartyRequest, localParticipant: GetParticipantIdResponse, topologyWriter: TopologyManagerWriteServiceClient, options?: RequestOptions): Promise<PreparedDecentralizedParty>;
|
|
@@ -12,6 +12,17 @@ export async function prepareDecentralizedPartyAsync(request, localParticipant,
|
|
|
12
12
|
const partyId = `${request.partyHint}::${decentralizedNamespace}`;
|
|
13
13
|
const owners = request.owners.map(toTopologyKey);
|
|
14
14
|
const partyKeys = request.partySigningKeys.map(toTopologyKey);
|
|
15
|
+
const store = {
|
|
16
|
+
store: {
|
|
17
|
+
oneofKind: "synchronizer",
|
|
18
|
+
synchronizer: {
|
|
19
|
+
kind: {
|
|
20
|
+
oneofKind: "id",
|
|
21
|
+
id: request.synchronizer,
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
};
|
|
15
26
|
const participants = [
|
|
16
27
|
{
|
|
17
28
|
participantUid: localParticipant.participantId,
|
|
@@ -27,6 +38,7 @@ export async function prepareDecentralizedPartyAsync(request, localParticipant,
|
|
|
27
38
|
{
|
|
28
39
|
operation: Enums_TopologyChangeOp.ADD_REPLACE,
|
|
29
40
|
serial: 1,
|
|
41
|
+
store,
|
|
30
42
|
mapping: {
|
|
31
43
|
mapping: {
|
|
32
44
|
oneofKind: "decentralizedNamespaceDefinition",
|
|
@@ -38,14 +50,15 @@ export async function prepareDecentralizedPartyAsync(request, localParticipant,
|
|
|
38
50
|
},
|
|
39
51
|
},
|
|
40
52
|
},
|
|
41
|
-
...owners.map((targetKey) => ({
|
|
53
|
+
...owners.map((targetKey, index) => ({
|
|
42
54
|
operation: Enums_TopologyChangeOp.ADD_REPLACE,
|
|
43
55
|
serial: 1,
|
|
56
|
+
store,
|
|
44
57
|
mapping: {
|
|
45
58
|
mapping: {
|
|
46
59
|
oneofKind: "namespaceDelegation",
|
|
47
60
|
namespaceDelegation: {
|
|
48
|
-
namespace:
|
|
61
|
+
namespace: ownerFingerprints[index],
|
|
49
62
|
targetKey,
|
|
50
63
|
isRootDelegation: true,
|
|
51
64
|
restriction: { oneofKind: undefined },
|
|
@@ -56,6 +69,7 @@ export async function prepareDecentralizedPartyAsync(request, localParticipant,
|
|
|
56
69
|
{
|
|
57
70
|
operation: Enums_TopologyChangeOp.ADD_REPLACE,
|
|
58
71
|
serial: 1,
|
|
72
|
+
store,
|
|
59
73
|
mapping: {
|
|
60
74
|
mapping: {
|
|
61
75
|
oneofKind: "partyToParticipant",
|
|
@@ -98,7 +112,18 @@ export async function prepareDecentralizedPartyAsync(request, localParticipant,
|
|
|
98
112
|
}))]
|
|
99
113
|
: ownerRequests;
|
|
100
114
|
});
|
|
101
|
-
return new PreparedDecentralizedParty({
|
|
115
|
+
return new PreparedDecentralizedParty({
|
|
116
|
+
synchronizer: request.synchronizer,
|
|
117
|
+
partyId,
|
|
118
|
+
decentralizedNamespace,
|
|
119
|
+
ownerThreshold: request.ownerThreshold,
|
|
120
|
+
partySigningThreshold: request.partySigningThreshold,
|
|
121
|
+
identityProviderId: request.identityProviderId,
|
|
122
|
+
waitForAllocation: request.waitForAllocation,
|
|
123
|
+
userId: request.userId,
|
|
124
|
+
transactions,
|
|
125
|
+
signingRequests,
|
|
126
|
+
});
|
|
102
127
|
}
|
|
103
128
|
function fingerprintFor(value) {
|
|
104
129
|
const fingerprint = computeCantonPublicKeyFingerprint(value.publicKey.keyData, value.publicKey.format);
|
|
@@ -67,6 +67,9 @@ export class PartyManagementServiceClient {
|
|
|
67
67
|
signatures: (signaturesByHash.get(toHex(transaction.transactionHash)) ?? []).map(toGeneratedSignature),
|
|
68
68
|
})),
|
|
69
69
|
multiHashSignatures: [],
|
|
70
|
+
identityProviderId: prepared.identityProviderId,
|
|
71
|
+
waitForAllocation: prepared.waitForAllocation,
|
|
72
|
+
userId: prepared.userId,
|
|
70
73
|
}), _options);
|
|
71
74
|
}
|
|
72
75
|
/** Creates a decentralized party using the per-key callbacks in the request. */
|
|
@@ -6,7 +6,7 @@ import { ContractObserver } from "../contracts/contract-observer.interface.js";
|
|
|
6
6
|
export declare class StateServiceClient {
|
|
7
7
|
private readonly transport;
|
|
8
8
|
constructor(transport: ITransport);
|
|
9
|
-
/** Reads a page of active contracts.
|
|
9
|
+
/** Reads a page of active contracts. Supported on gRPC; JSON rejects it. */
|
|
10
10
|
getActiveContractsPageAsync(request: GetActiveContractsPageRequest, options?: RequestOptions): Promise<GetActiveContractsPageResponse>;
|
|
11
11
|
/** Reads active contracts as a stream. JSON-backed; gRPC currently rejects it. */
|
|
12
12
|
getActiveContractsAsync(request: GetActiveContractsRequest, observer: ContractObserver, options?: RequestOptions): Promise<void>;
|
|
@@ -4,7 +4,7 @@ export class StateServiceClient {
|
|
|
4
4
|
this.transport = transport;
|
|
5
5
|
void this.transport;
|
|
6
6
|
}
|
|
7
|
-
/** Reads a page of active contracts.
|
|
7
|
+
/** Reads a page of active contracts. Supported on gRPC; JSON rejects it. */
|
|
8
8
|
getActiveContractsPageAsync(request, options) {
|
|
9
9
|
return this.transport.getActiveContractsPageAsync(request, options);
|
|
10
10
|
}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { ITransport } from "../../core/transports/transport.interface.js";
|
|
2
2
|
import { RequestOptions } from "../../core/types/request-options.js";
|
|
3
|
+
import { WaitForPartyHostingRequest } from "../../core/types/requests/wait-for-party-hosting-request.js";
|
|
3
4
|
import type { ListKeyOwnersRequest, ListKeyOwnersResponse } from "../../transports/grpc/generated/canton/com/digitalasset/canton/topology/admin/v30/topology_aggregation_service.js";
|
|
4
|
-
import
|
|
5
|
+
import { ListPartiesRequest as TopologyListPartiesRequest, ListPartiesResponse as TopologyListPartiesResponse, ListPartiesResponse_Result as TopologyListPartiesResult } from "../../transports/grpc/generated/canton/com/digitalasset/canton/topology/admin/v30/topology_aggregation_service.js";
|
|
5
6
|
export declare class TopologyAggregationServiceClient {
|
|
6
7
|
private readonly transport;
|
|
7
8
|
constructor(transport: ITransport);
|
|
8
9
|
/** Lists aggregated party hosting information. Supported on gRPC; JSON rejects it. */
|
|
9
10
|
listPartiesAsync(request: TopologyListPartiesRequest, options?: RequestOptions): Promise<TopologyListPartiesResponse>;
|
|
11
|
+
/** Waits for exact aggregated party hosting information. Supported on gRPC; JSON rejects it. */
|
|
12
|
+
waitForPartyHostingAsync(request: WaitForPartyHostingRequest, options?: RequestOptions): Promise<TopologyListPartiesResult>;
|
|
10
13
|
/** Lists aggregated key owner information. Supported on gRPC; JSON rejects it. */
|
|
11
14
|
listKeyOwnersAsync(request: ListKeyOwnersRequest, options?: RequestOptions): Promise<ListKeyOwnersResponse>;
|
|
12
15
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { pollUntilAsync } from "../../core/polling/poll-until-async.js";
|
|
2
|
+
import { ListPartiesRequest as TopologyListPartiesRequest, } from "../../transports/grpc/generated/canton/com/digitalasset/canton/topology/admin/v30/topology_aggregation_service.js";
|
|
1
3
|
export class TopologyAggregationServiceClient {
|
|
2
4
|
transport;
|
|
3
5
|
constructor(transport) {
|
|
@@ -8,8 +10,42 @@ export class TopologyAggregationServiceClient {
|
|
|
8
10
|
listPartiesAsync(request, options) {
|
|
9
11
|
return this.transport.topologyListPartiesAsync(request, options);
|
|
10
12
|
}
|
|
13
|
+
/** Waits for exact aggregated party hosting information. Supported on gRPC; JSON rejects it. */
|
|
14
|
+
async waitForPartyHostingAsync(request, options) {
|
|
15
|
+
const response = await pollUntilAsync({
|
|
16
|
+
timeoutMs: request.timeoutMs,
|
|
17
|
+
pollIntervalMs: request.pollIntervalMs,
|
|
18
|
+
readAsync: () => this.listPartiesAsync(TopologyListPartiesRequest.create({
|
|
19
|
+
limit: 1,
|
|
20
|
+
synchronizerIds: [request.synchronizerId],
|
|
21
|
+
filterParty: request.partyId,
|
|
22
|
+
filterParticipant: request.participantId,
|
|
23
|
+
}), options),
|
|
24
|
+
match: value => findPartyHosting(value.results, request) !== undefined,
|
|
25
|
+
createTimeoutError: lastObserved => new Error(`Timed out waiting for party hosting for '${request.partyId}'; expected participant '${request.participantId}' on synchronizer '${request.synchronizerId}'; last observed hosting: ${formatHosting(lastObserved?.results ?? [])}.`),
|
|
26
|
+
});
|
|
27
|
+
const result = findPartyHosting(response.results, request);
|
|
28
|
+
if (result === undefined) {
|
|
29
|
+
throw new Error("Party hosting wait completed without a matching result.");
|
|
30
|
+
}
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
11
33
|
/** Lists aggregated key owner information. Supported on gRPC; JSON rejects it. */
|
|
12
34
|
listKeyOwnersAsync(request, options) {
|
|
13
35
|
return this.transport.listKeyOwnersAsync(request, options);
|
|
14
36
|
}
|
|
15
37
|
}
|
|
38
|
+
function findPartyHosting(results, request) {
|
|
39
|
+
return results.find(result => result.party === request.partyId &&
|
|
40
|
+
result.participants.some(participant => participant.participantUid === request.participantId &&
|
|
41
|
+
participant.synchronizers.some(permission => permission.synchronizerId === request.synchronizerId)));
|
|
42
|
+
}
|
|
43
|
+
function formatHosting(results) {
|
|
44
|
+
if (results.length === 0) {
|
|
45
|
+
return "none";
|
|
46
|
+
}
|
|
47
|
+
return results.slice(0, 5).map(result => {
|
|
48
|
+
const participants = result.participants.slice(0, 5).flatMap(participant => participant.synchronizers.slice(0, 5).map(synchronizer => `${participant.participantUid}@${synchronizer.synchronizerId}`));
|
|
49
|
+
return `party='${result.party}', participants=[${participants.join(", ")}]`;
|
|
50
|
+
}).join("; ");
|
|
51
|
+
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { ITransport } from "../../core/transports/transport.interface.js";
|
|
2
2
|
import { RequestOptions } from "../../core/types/request-options.js";
|
|
3
|
-
import
|
|
3
|
+
import { ListPartyToParticipantRequest } from "../../core/types/requests/list-party-to-participant-request.js";
|
|
4
|
+
import { ListPartyToParticipantResponse } from "../../core/types/responses/list-party-to-participant-response.js";
|
|
5
|
+
import type { ListAllV2Request, ListAllV2Response, ListAllRequest, ListAllResponse, ListAvailableStoresRequest, ListAvailableStoresResponse, ListLsuAnnouncementRequest, ListLsuAnnouncementResponse, ListLsuSequencerConnectionSuccessorRequest, ListLsuSequencerConnectionSuccessorResponse, ListMediatorSynchronizerStateRequest, ListMediatorSynchronizerStateResponse, ListSequencingParametersStateRequest, ListSequencingParametersStateResponse, ListSynchronizerParametersStateRequest, ListSynchronizerParametersStateResponse, ListVettedPackagesRequest as TopologyListVettedPackagesRequest, ListVettedPackagesResponse as TopologyListVettedPackagesResponse, ListPartyHostingLimitsRequest, ListPartyHostingLimitsResponse, ListParticipantSynchronizerPermissionRequest, ListParticipantSynchronizerPermissionResponse, ListSynchronizerTrustCertificateRequest, ListSynchronizerTrustCertificateResponse, ListPartyToKeyMappingRequest, ListPartyToKeyMappingResponse, ListOwnerToKeyMappingRequest, ListOwnerToKeyMappingResponse, ListDecentralizedNamespaceDefinitionRequest, ListDecentralizedNamespaceDefinitionResponse, ListNamespaceDelegationRequest, ListNamespaceDelegationResponse, ListSequencerSynchronizerStateRequest, ListSequencerSynchronizerStateResponse } from "../../transports/grpc/generated/canton/com/digitalasset/canton/topology/admin/v30/topology_manager_read_service.js";
|
|
4
6
|
export declare class TopologyManagerReadServiceClient {
|
|
5
7
|
private readonly transport;
|
|
6
8
|
constructor(transport: ITransport);
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { ITransport } from "../../core/transports/transport.interface.js";
|
|
2
2
|
import { RequestOptions } from "../../core/types/request-options.js";
|
|
3
|
-
import
|
|
3
|
+
import { GetUserRequest } from "../../core/types/requests/get-user-request.js";
|
|
4
|
+
import { ListUserRightsRequest } from "../../core/types/requests/list-user-rights-request.js";
|
|
5
|
+
import { ListUsersRequest } from "../../core/types/requests/list-users-request.js";
|
|
6
|
+
import { GetUserResponse } from "../../core/types/responses/get-user-response.js";
|
|
7
|
+
import { ListUserRightsResponse } from "../../core/types/responses/list-user-rights-response.js";
|
|
8
|
+
import { ListUsersResponse } from "../../core/types/responses/list-users-response.js";
|
|
9
|
+
import type { GrantUserRightsRequest, GrantUserRightsResponse } from "../../transports/grpc/generated/canton/com/daml/ledger/api/v2/admin/user_management_service.js";
|
|
4
10
|
export declare class UserManagementServiceClient {
|
|
5
11
|
private readonly transport;
|
|
6
12
|
constructor(transport: ITransport);
|
|
@@ -117,7 +117,6 @@ export interface GrpcOperations {
|
|
|
117
117
|
getContractAsync?(request: GrpcGetContractRequest, options?: RequestOptions): Promise<GrpcGetContractResponse>;
|
|
118
118
|
getEventsByContractIdAsync?(request: GrpcGetEventsByContractIdRequest, options?: RequestOptions): Promise<GrpcGetEventsByContractIdResponse>;
|
|
119
119
|
queryContractsAsync(request: unknown, options?: RequestOptions): Promise<unknown>;
|
|
120
|
-
getActiveContractsPageAsync?(request: unknown, options?: RequestOptions): Promise<unknown>;
|
|
121
120
|
getConnectedSynchronizersAsync?(request: unknown, options?: RequestOptions): Promise<unknown>;
|
|
122
121
|
getLedgerEndAsync?(request: unknown, options?: RequestOptions): Promise<unknown>;
|
|
123
122
|
getLatestPrunedOffsetsAsync?(request: unknown, options?: RequestOptions): Promise<unknown>;
|
|
@@ -423,10 +423,6 @@ export function createGrpcOperations(options, endpoint, grpcChannelSecurity, dep
|
|
|
423
423
|
const callOptions = await buildCallOptionsForLedgerSurfaceAsync(options, requestOptions);
|
|
424
424
|
return await unwrapUnaryResponse(stateServiceClient.getActiveContractsPage(request, callOptions));
|
|
425
425
|
},
|
|
426
|
-
async getActiveContractsPageAsync(request, requestOptions) {
|
|
427
|
-
const callOptions = await buildCallOptionsForLedgerSurfaceAsync(options, requestOptions);
|
|
428
|
-
return await unwrapUnaryResponse(stateServiceClient.getActiveContractsPage(request, callOptions));
|
|
429
|
-
},
|
|
430
426
|
async getConnectedSynchronizersAsync(request, requestOptions) {
|
|
431
427
|
const callOptions = await buildCallOptionsForLedgerSurfaceAsync(options, requestOptions);
|
|
432
428
|
return await unwrapUnaryResponse(stateServiceClient.getConnectedSynchronizers(request, callOptions));
|
|
@@ -506,7 +502,7 @@ function wrapGrpcOperations(operations, onGrpcError) {
|
|
|
506
502
|
if (typeof operation !== "function") {
|
|
507
503
|
return operation;
|
|
508
504
|
}
|
|
509
|
-
if (property === "getUpdatesAsync" || property === "getCompletionsAsync") {
|
|
505
|
+
else if (property === "getUpdatesAsync" || property === "getCompletionsAsync") {
|
|
510
506
|
return (...args) => wrapGrpcStream(() => operation.apply(target, args), onGrpcError);
|
|
511
507
|
}
|
|
512
508
|
return async (...args) => {
|
|
@@ -542,8 +538,9 @@ async function* wrapGrpcStream(createStream, onGrpcError) {
|
|
|
542
538
|
}
|
|
543
539
|
function notifyGrpcError(error, onGrpcError) {
|
|
544
540
|
const parsedError = GrpcTransportError.fromUnknown(error);
|
|
545
|
-
if (parsedError === undefined)
|
|
541
|
+
if (parsedError === undefined) {
|
|
546
542
|
return error;
|
|
543
|
+
}
|
|
547
544
|
try {
|
|
548
545
|
onGrpcError?.(parsedError);
|
|
549
546
|
}
|
|
@@ -576,8 +573,9 @@ async function* streamServerResponsesAsync(createCall) {
|
|
|
576
573
|
iterator = responseIterator;
|
|
577
574
|
while (true) {
|
|
578
575
|
const next = await responseIterator.next();
|
|
579
|
-
if (next.done)
|
|
576
|
+
if (next.done) {
|
|
580
577
|
break;
|
|
578
|
+
}
|
|
581
579
|
yield next.value;
|
|
582
580
|
}
|
|
583
581
|
exhausted = true;
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
import { CantonClientOptions } from "../../client/canton-client-options.js";
|
|
2
2
|
import { AllocatePartyRequest } from "../../core/types/requests/allocate-party-request.js";
|
|
3
3
|
import { GetActiveContractsRequest } from "../../core/types/requests/get-active-contracts-request.js";
|
|
4
|
+
import { GetUserRequest } from "../../core/types/requests/get-user-request.js";
|
|
4
5
|
import { ListKnownPartiesRequest } from "../../core/types/requests/list-known-parties-request.js";
|
|
6
|
+
import { ListPartyToParticipantRequest } from "../../core/types/requests/list-party-to-participant-request.js";
|
|
7
|
+
import { ListUserRightsRequest } from "../../core/types/requests/list-user-rights-request.js";
|
|
8
|
+
import { ListUsersRequest } from "../../core/types/requests/list-users-request.js";
|
|
5
9
|
import { SubmitCommandRequest } from "../../core/types/requests/submit-command-request.js";
|
|
6
10
|
import { CommandSigners, ICommandSigner } from "../../core/signing/command-signer.interface.js";
|
|
7
11
|
import { SignCommandResult } from "../../core/signing/sign-command-result.js";
|
|
8
12
|
import { PreparedCommandSubmission } from "../../core/types/prepared-command-submission.js";
|
|
9
13
|
import { AllocatePartyResponse as SdkAllocatePartyResponse } from "../../core/types/responses/allocate-party-response.js";
|
|
14
|
+
import { GetUserResponse } from "../../core/types/responses/get-user-response.js";
|
|
10
15
|
import { ListKnownPartiesResponse as SdkListKnownPartiesResponse } from "../../core/types/responses/list-known-parties-response.js";
|
|
16
|
+
import { ListPartyToParticipantResponse } from "../../core/types/responses/list-party-to-participant-response.js";
|
|
17
|
+
import { ListUserRightsResponse } from "../../core/types/responses/list-user-rights-response.js";
|
|
18
|
+
import { ListUsersResponse } from "../../core/types/responses/list-users-response.js";
|
|
11
19
|
import { SubmitCommandResponse } from "../../core/types/responses/submit-command-response.js";
|
|
12
20
|
import { ITransport } from "../../core/transports/transport.interface.js";
|
|
13
21
|
import { RequestOptions } from "../../core/types/request-options.js";
|
|
@@ -23,7 +31,6 @@ import type { ListKnownPackagesRequest, ListKnownPackagesResponse, UploadDarFile
|
|
|
23
31
|
import { GetPackageRequest, GetPackageResponse, GetPackageStatusRequest, GetPackageStatusResponse, ListPackagesRequest, ListPackagesResponse, ListVettedPackagesRequest, ListVettedPackagesResponse } from "./generated/canton/com/daml/ledger/api/v2/package_service.js";
|
|
24
32
|
import { AllocateExternalPartyRequest as ProtobufAllocateExternalPartyRequest, AllocateExternalPartyResponse as ProtobufAllocateExternalPartyResponse, GenerateExternalPartyTopologyRequest as ProtobufGenerateExternalPartyTopologyRequest, GenerateExternalPartyTopologyResponse as ProtobufGenerateExternalPartyTopologyResponse } from "./generated/canton/com/daml/ledger/api/v2/admin/party_management_service.js";
|
|
25
33
|
import { GrantUserRightsResponse as ProtobufGrantUserRightsResponse } from "./generated/canton/com/daml/ledger/api/v2/admin/user_management_service.js";
|
|
26
|
-
import type { GetUserRequest, GetUserResponse, ListUserRightsRequest, ListUserRightsResponse, ListUsersRequest, ListUsersResponse } from "./generated/canton/com/daml/ledger/api/v2/admin/user_management_service.js";
|
|
27
34
|
import { GetLedgerApiVersionRequest, GetLedgerApiVersionResponse } from "./generated/canton/com/daml/ledger/api/v2/version_service.js";
|
|
28
35
|
import type { GetContractRequest, GetContractResponse } from "./generated/canton/com/daml/ledger/api/v2/contract_service.js";
|
|
29
36
|
import { CompletionStreamResponse as ProtobufCompletionStreamResponse, GetCompletionsRequest } from "./generated/canton/com/daml/ledger/api/v2/command_completion_service.js";
|
|
@@ -43,7 +50,7 @@ import type { TrafficControlStateRequest, TrafficControlStateResponse } from "./
|
|
|
43
50
|
import { ParticipantStatusRequest, ParticipantStatusResponse as ProtobufParticipantStatusResponse } from "./generated/canton/com/digitalasset/canton/admin/participant/v30/participant_status_service.js";
|
|
44
51
|
import { ListKeyOwnersRequest as ProtobufListKeyOwnersRequest, ListKeyOwnersResponse as ProtobufListKeyOwnersResponse, ListPartiesRequest as ProtobufTopologyListPartiesRequest, ListPartiesResponse as ProtobufTopologyListPartiesResponse } from "./generated/canton/com/digitalasset/canton/topology/admin/v30/topology_aggregation_service.js";
|
|
45
52
|
import type { AddTransactionsRequest as ProtobufAddTransactionsRequest, AddTransactionsResponse as ProtobufAddTransactionsResponse, AuthorizeRequest as ProtobufAuthorizeRequest, AuthorizeResponse as ProtobufAuthorizeResponse, CreateTemporaryTopologyStoreRequest as ProtobufCreateTemporaryTopologyStoreRequest, CreateTemporaryTopologyStoreResponse as ProtobufCreateTemporaryTopologyStoreResponse, DropTemporaryTopologyStoreRequest as ProtobufDropTemporaryTopologyStoreRequest, DropTemporaryTopologyStoreResponse as ProtobufDropTemporaryTopologyStoreResponse, GenerateTransactionsRequest as ProtobufGenerateTransactionsRequest, GenerateTransactionsResponse as ProtobufGenerateTransactionsResponse, ImportTopologySnapshotRequest as ProtobufImportTopologySnapshotRequest, ImportTopologySnapshotResponse as ProtobufImportTopologySnapshotResponse, ImportTopologySnapshotV2Request as ProtobufImportTopologySnapshotV2Request, ImportTopologySnapshotV2Response as ProtobufImportTopologySnapshotV2Response, SignTransactionsRequest as ProtobufSignTransactionsRequest, SignTransactionsResponse as ProtobufSignTransactionsResponse } from "./generated/canton/com/digitalasset/canton/topology/admin/v30/topology_manager_write_service.js";
|
|
46
|
-
import { ListAllRequest as ProtobufTopologyListAllRequest, ListAllResponse as ProtobufTopologyListAllResponse, ListAllV2Request as ProtobufTopologyListAllV2Request, ListAllV2Response as ProtobufTopologyListAllV2Response, ListAvailableStoresRequest as ProtobufListAvailableStoresRequest, ListAvailableStoresResponse as ProtobufListAvailableStoresResponse, ListDecentralizedNamespaceDefinitionRequest as ProtobufListDecentralizedNamespaceDefinitionRequest, ListDecentralizedNamespaceDefinitionResponse as ProtobufListDecentralizedNamespaceDefinitionResponse, ListLsuAnnouncementRequest as ProtobufListLsuAnnouncementRequest, ListLsuAnnouncementResponse as ProtobufListLsuAnnouncementResponse, ListLsuSequencerConnectionSuccessorRequest as ProtobufListLsuSequencerConnectionSuccessorRequest, ListLsuSequencerConnectionSuccessorResponse as ProtobufListLsuSequencerConnectionSuccessorResponse, ListMediatorSynchronizerStateRequest as ProtobufListMediatorSynchronizerStateRequest, ListMediatorSynchronizerStateResponse as ProtobufListMediatorSynchronizerStateResponse, ListNamespaceDelegationRequest as ProtobufListNamespaceDelegationRequest, ListNamespaceDelegationResponse as ProtobufListNamespaceDelegationResponse, ListOwnerToKeyMappingRequest as ProtobufListOwnerToKeyMappingRequest, ListOwnerToKeyMappingResponse as ProtobufListOwnerToKeyMappingResponse, ListParticipantSynchronizerPermissionRequest as ProtobufListParticipantSynchronizerPermissionRequest, ListParticipantSynchronizerPermissionResponse as ProtobufListParticipantSynchronizerPermissionResponse, ListPartyHostingLimitsRequest as ProtobufListPartyHostingLimitsRequest, ListPartyHostingLimitsResponse as ProtobufListPartyHostingLimitsResponse, ListPartyToKeyMappingRequest as ProtobufListPartyToKeyMappingRequest, ListPartyToKeyMappingResponse as ProtobufListPartyToKeyMappingResponse,
|
|
53
|
+
import { ListAllRequest as ProtobufTopologyListAllRequest, ListAllResponse as ProtobufTopologyListAllResponse, ListAllV2Request as ProtobufTopologyListAllV2Request, ListAllV2Response as ProtobufTopologyListAllV2Response, ListAvailableStoresRequest as ProtobufListAvailableStoresRequest, ListAvailableStoresResponse as ProtobufListAvailableStoresResponse, ListDecentralizedNamespaceDefinitionRequest as ProtobufListDecentralizedNamespaceDefinitionRequest, ListDecentralizedNamespaceDefinitionResponse as ProtobufListDecentralizedNamespaceDefinitionResponse, ListLsuAnnouncementRequest as ProtobufListLsuAnnouncementRequest, ListLsuAnnouncementResponse as ProtobufListLsuAnnouncementResponse, ListLsuSequencerConnectionSuccessorRequest as ProtobufListLsuSequencerConnectionSuccessorRequest, ListLsuSequencerConnectionSuccessorResponse as ProtobufListLsuSequencerConnectionSuccessorResponse, ListMediatorSynchronizerStateRequest as ProtobufListMediatorSynchronizerStateRequest, ListMediatorSynchronizerStateResponse as ProtobufListMediatorSynchronizerStateResponse, ListNamespaceDelegationRequest as ProtobufListNamespaceDelegationRequest, ListNamespaceDelegationResponse as ProtobufListNamespaceDelegationResponse, ListOwnerToKeyMappingRequest as ProtobufListOwnerToKeyMappingRequest, ListOwnerToKeyMappingResponse as ProtobufListOwnerToKeyMappingResponse, ListParticipantSynchronizerPermissionRequest as ProtobufListParticipantSynchronizerPermissionRequest, ListParticipantSynchronizerPermissionResponse as ProtobufListParticipantSynchronizerPermissionResponse, ListPartyHostingLimitsRequest as ProtobufListPartyHostingLimitsRequest, ListPartyHostingLimitsResponse as ProtobufListPartyHostingLimitsResponse, ListPartyToKeyMappingRequest as ProtobufListPartyToKeyMappingRequest, ListPartyToKeyMappingResponse as ProtobufListPartyToKeyMappingResponse, ListSequencerSynchronizerStateRequest as ProtobufListSequencerSynchronizerStateRequest, ListSequencerSynchronizerStateResponse as ProtobufListSequencerSynchronizerStateResponse, ListSequencingParametersStateRequest as ProtobufListSequencingParametersStateRequest, ListSequencingParametersStateResponse as ProtobufListSequencingParametersStateResponse, ListSynchronizerParametersStateRequest as ProtobufListSynchronizerParametersStateRequest, ListSynchronizerParametersStateResponse as ProtobufListSynchronizerParametersStateResponse, ListSynchronizerTrustCertificateRequest as ProtobufListSynchronizerTrustCertificateRequest, ListSynchronizerTrustCertificateResponse as ProtobufListSynchronizerTrustCertificateResponse, ListVettedPackagesRequest as ProtobufTopologyListVettedPackagesRequest, ListVettedPackagesResponse as ProtobufTopologyListVettedPackagesResponse } from "./generated/canton/com/digitalasset/canton/topology/admin/v30/topology_manager_read_service.js";
|
|
47
54
|
export declare class GrpcTransport implements ITransport {
|
|
48
55
|
private readonly operations;
|
|
49
56
|
private disposed;
|
|
@@ -121,7 +128,7 @@ export declare class GrpcTransport implements ITransport {
|
|
|
121
128
|
dropTemporaryTopologyStoreAsync(request: ProtobufDropTemporaryTopologyStoreRequest, options?: RequestOptions): Promise<ProtobufDropTemporaryTopologyStoreResponse>;
|
|
122
129
|
listPartyHostingLimitsAsync(request: ProtobufListPartyHostingLimitsRequest, options?: RequestOptions): Promise<ProtobufListPartyHostingLimitsResponse>;
|
|
123
130
|
topologyListVettedPackagesAsync(request: ProtobufTopologyListVettedPackagesRequest, options?: RequestOptions): Promise<ProtobufTopologyListVettedPackagesResponse>;
|
|
124
|
-
listPartyToParticipantAsync(request:
|
|
131
|
+
listPartyToParticipantAsync(request: ListPartyToParticipantRequest, options?: RequestOptions): Promise<ListPartyToParticipantResponse>;
|
|
125
132
|
listSynchronizerParametersStateAsync(request: ProtobufListSynchronizerParametersStateRequest, options?: RequestOptions): Promise<ProtobufListSynchronizerParametersStateResponse>;
|
|
126
133
|
listSequencingParametersStateAsync(request: ProtobufListSequencingParametersStateRequest, options?: RequestOptions): Promise<ProtobufListSequencingParametersStateResponse>;
|
|
127
134
|
listMediatorSynchronizerStateAsync(request: ProtobufListMediatorSynchronizerStateRequest, options?: RequestOptions): Promise<ProtobufListMediatorSynchronizerStateResponse>;
|
|
@@ -10,6 +10,8 @@ import { createGrpcOperations, } from "./grpc-channel-factory.js";
|
|
|
10
10
|
import { mapGrpcSubmitCommand, mapGrpcSubmitCommandForTransactionRequest, mapGrpcSubmitCommandTransaction, mapGrpcSubmitCommandRequest, } from "./mappers/commands-mapper.js";
|
|
11
11
|
import { mapGrpcExecuteSubmissionAndWaitRequest, mapGrpcInteractiveSubmitCommand, mapGrpcPrepareSubmissionRequest, } from "./mappers/interactive-command-mapper.js";
|
|
12
12
|
import { mapGrpcCreateParty, mapGrpcCreatePartyRequest, mapGrpcListParties, mapGrpcListPartiesRequest } from "./mappers/parties-mapper.js";
|
|
13
|
+
import { mapGrpcListPartyToParticipantRequest, mapGrpcListPartyToParticipantResponse, } from "./mappers/topology-manager-read-mapper.js";
|
|
14
|
+
import { mapGrpcGetUser, mapGrpcGetUserRequest, mapGrpcListUserRights, mapGrpcListUserRightsRequest, mapGrpcListUsers, mapGrpcListUsersRequest, } from "./mappers/users-mapper.js";
|
|
13
15
|
import { ObjectDisposedError } from "../../core/errors/object-disposed-error.js";
|
|
14
16
|
export class GrpcTransport {
|
|
15
17
|
operations;
|
|
@@ -84,15 +86,18 @@ export class GrpcTransport {
|
|
|
84
86
|
}
|
|
85
87
|
async getUserAsync(request, options) {
|
|
86
88
|
this.throwIfDisposed();
|
|
87
|
-
|
|
89
|
+
const payload = await this.operations.getUserAsync(mapGrpcGetUserRequest(request), options);
|
|
90
|
+
return mapGrpcGetUser(payload);
|
|
88
91
|
}
|
|
89
92
|
async listUsersAsync(request, options) {
|
|
90
93
|
this.throwIfDisposed();
|
|
91
|
-
|
|
94
|
+
const payload = await this.operations.listUsersAsync(mapGrpcListUsersRequest(request), options);
|
|
95
|
+
return mapGrpcListUsers(payload);
|
|
92
96
|
}
|
|
93
97
|
async listUserRightsAsync(request, options) {
|
|
94
98
|
this.throwIfDisposed();
|
|
95
|
-
|
|
99
|
+
const payload = await this.operations.listUserRightsAsync(mapGrpcListUserRightsRequest(request), options);
|
|
100
|
+
return mapGrpcListUserRights(payload);
|
|
96
101
|
}
|
|
97
102
|
async uploadDarFileAsync(request, options) {
|
|
98
103
|
this.throwIfDisposed();
|
|
@@ -373,12 +378,12 @@ export class GrpcTransport {
|
|
|
373
378
|
this.throwIfDisposed();
|
|
374
379
|
let payload;
|
|
375
380
|
try {
|
|
376
|
-
payload = await this.operations.listPartyToParticipantAsync(request, options);
|
|
381
|
+
payload = await this.operations.listPartyToParticipantAsync(mapGrpcListPartyToParticipantRequest(request), options);
|
|
377
382
|
}
|
|
378
383
|
catch (error) {
|
|
379
384
|
this.throwPartyTopologyReadCompatibilityError(error, "topologyManagerReadService.listPartyToParticipantAsync");
|
|
380
385
|
}
|
|
381
|
-
return payload;
|
|
386
|
+
return mapGrpcListPartyToParticipantResponse(payload);
|
|
382
387
|
}
|
|
383
388
|
async listSynchronizerParametersStateAsync(request, options) {
|
|
384
389
|
this.throwIfDisposed();
|
|
@@ -437,7 +442,7 @@ export class GrpcTransport {
|
|
|
437
442
|
}
|
|
438
443
|
async getActiveContractsPageAsync(request, options) {
|
|
439
444
|
this.throwIfDisposed();
|
|
440
|
-
return (await this.operations.
|
|
445
|
+
return (await this.operations.queryContractsAsync(request, options));
|
|
441
446
|
}
|
|
442
447
|
async getConnectedSynchronizersAsync(request, options) {
|
|
443
448
|
this.throwIfDisposed();
|
|
@@ -494,7 +499,7 @@ export class GrpcTransport {
|
|
|
494
499
|
else if (!this.operations.executeSubmissionAndWaitAsync) {
|
|
495
500
|
throw new NotSupportedError("interactive gRPC command signing is not available on this transport");
|
|
496
501
|
}
|
|
497
|
-
const commandId = randomUUID();
|
|
502
|
+
const commandId = request.commandId ?? randomUUID();
|
|
498
503
|
const submissionId = randomUUID();
|
|
499
504
|
const prepared = await this.operations.prepareSubmissionAsync(mapGrpcPrepareSubmissionRequest(request, commandId), options);
|
|
500
505
|
if (!prepared.preparedTransaction) {
|
|
@@ -505,8 +510,9 @@ export class GrpcTransport {
|
|
|
505
510
|
}
|
|
506
511
|
const signerResults = await Promise.all(request.actAs.map(async (party) => {
|
|
507
512
|
const partySigner = "signAsync" in signer ? signer : signer[party];
|
|
508
|
-
if (partySigner === undefined)
|
|
513
|
+
if (partySigner === undefined) {
|
|
509
514
|
throw new ValidationError(`interactive command signing requires a signer for ${party}`);
|
|
515
|
+
}
|
|
510
516
|
return { party, result: await partySigner.signAsync(new SignCommandRequest({ payload: prepared.preparedTransactionHash, party, algorithmHint: "ed25519" })) };
|
|
511
517
|
}));
|
|
512
518
|
const executed = await this.operations.executeSubmissionAndWaitAsync(mapGrpcExecuteSubmissionAndWaitRequest({
|
|
@@ -520,23 +526,33 @@ export class GrpcTransport {
|
|
|
520
526
|
}
|
|
521
527
|
async submitCommandForTransactionAsync(request, options) {
|
|
522
528
|
this.throwIfDisposed();
|
|
523
|
-
if (!this.operations.submitCommandForTransactionAsync)
|
|
529
|
+
if (!this.operations.submitCommandForTransactionAsync) {
|
|
524
530
|
throw new NotSupportedError("transaction-returning command submission is not available on this transport");
|
|
531
|
+
}
|
|
525
532
|
return mapGrpcSubmitCommandTransaction(await this.operations.submitCommandForTransactionAsync(mapGrpcSubmitCommandForTransactionRequest(request), options));
|
|
526
533
|
}
|
|
527
534
|
async prepareCommandAsync(request, options) {
|
|
528
|
-
if (!this.operations.prepareSubmissionAsync)
|
|
535
|
+
if (!this.operations.prepareSubmissionAsync) {
|
|
529
536
|
throw new NotSupportedError("interactive gRPC command signing is not available on this transport");
|
|
530
|
-
|
|
531
|
-
|
|
537
|
+
}
|
|
538
|
+
const commandId = request.commandId ?? randomUUID();
|
|
539
|
+
const prepared = await this.operations.prepareSubmissionAsync(mapGrpcPrepareSubmissionRequest(request, commandId), options);
|
|
540
|
+
if (!prepared.preparedTransaction || prepared.preparedTransactionHash.length === 0) {
|
|
532
541
|
throw new ValidationError("interactive prepare submission returned an incomplete result");
|
|
542
|
+
}
|
|
533
543
|
return new PreparedCommandSubmission(request, prepared.preparedTransaction, prepared.preparedTransactionHash, prepared.hashingSchemeVersion);
|
|
534
544
|
}
|
|
535
545
|
async executePreparedCommandAndWaitAsync(prepared, signatures, options) {
|
|
536
|
-
if (!this.operations.executeSubmissionAndWaitAsync)
|
|
546
|
+
if (!this.operations.executeSubmissionAndWaitAsync) {
|
|
537
547
|
throw new NotSupportedError("interactive gRPC command signing is not available on this transport");
|
|
538
|
-
|
|
539
|
-
|
|
548
|
+
}
|
|
549
|
+
const signerResults = prepared.request.actAs.map((party) => {
|
|
550
|
+
const result = signatures[party];
|
|
551
|
+
if (!result) {
|
|
552
|
+
throw new ValidationError(`interactive command signing requires a signature for ${party}`);
|
|
553
|
+
}
|
|
554
|
+
return { party, result };
|
|
555
|
+
});
|
|
540
556
|
const result = await this.operations.executeSubmissionAndWaitAsync(mapGrpcExecuteSubmissionAndWaitRequest({ request: prepared.request, preparedTransaction: prepared.transaction, hashingSchemeVersion: prepared.hashingSchemeVersion, submissionId: randomUUID(), signerResults }), options);
|
|
541
557
|
return mapGrpcInteractiveSubmitCommand(result);
|
|
542
558
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { CommandDeduplicationPeriod } from "../../../core/types/command-deduplication-period.js";
|
|
2
|
+
import { Commands } from "../generated/canton/com/daml/ledger/api/v2/commands.js";
|
|
3
|
+
export declare function mapGrpcDeduplicationPeriod(period: CommandDeduplicationPeriod | undefined, options: {
|
|
4
|
+
readonly allowParticipantBegin: boolean;
|
|
5
|
+
}): Commands["deduplicationPeriod"];
|