@distrohelena/canton-typescript-sdk 0.1.33 → 0.1.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/README.md +211 -18
  2. package/dist/cjs/client/external-party-activation-client.js +20 -10
  3. package/dist/cjs/core/errors/active-contracts-traversal-error.js +12 -0
  4. package/dist/cjs/core/polling/poll-until-async.js +26 -0
  5. package/dist/cjs/core/types/active-contracts-traversal-options.js +26 -0
  6. package/dist/cjs/core/types/command-deduplication-period.js +2 -0
  7. package/dist/cjs/core/types/operation-deadline.js +42 -0
  8. package/dist/cjs/core/types/requests/allocate-party-request.js +2 -0
  9. package/dist/cjs/core/types/requests/finalize-decentralized-party-request.js +6 -0
  10. package/dist/cjs/core/types/requests/submit-command-request.js +43 -0
  11. package/dist/cjs/core/types/requests/wait-for-party-hosting-request.js +40 -0
  12. package/dist/cjs/index.js +13 -27
  13. package/dist/cjs/query/grpc/grpc-contract-query-client.js +33 -16
  14. package/dist/cjs/services/party-management/decentralized-party-lifecycle.js +12 -1
  15. package/dist/cjs/services/party-management/party-management-service-client.js +3 -0
  16. package/dist/cjs/services/state/state-service-client.js +57 -1
  17. package/dist/cjs/services/topology-aggregation/topology-aggregation-service-client.js +36 -0
  18. package/dist/cjs/transports/grpc/grpc-channel-factory.js +5 -7
  19. package/dist/cjs/transports/grpc/grpc-transport.js +31 -15
  20. package/dist/cjs/transports/grpc/mappers/command-deduplication-mapper.js +22 -0
  21. package/dist/cjs/transports/grpc/mappers/commands-mapper.js +3 -4
  22. package/dist/cjs/transports/grpc/mappers/interactive-command-mapper.js +5 -3
  23. package/dist/cjs/transports/grpc/mappers/parties-mapper.js +1 -12
  24. package/dist/cjs/transports/json/mappers/commands-mapper.js +5 -1
  25. package/dist/cjs/transports/json/mappers/parties-mapper.js +1 -0
  26. package/dist/client/external-party-activation-client.js +20 -10
  27. package/dist/client/external-party-activation-response.d.ts +1 -1
  28. package/dist/core/errors/active-contracts-traversal-error.d.ts +5 -0
  29. package/dist/core/errors/active-contracts-traversal-error.js +8 -0
  30. package/dist/core/polling/poll-until-async.d.ts +10 -0
  31. package/dist/core/polling/poll-until-async.js +23 -0
  32. package/dist/core/transports/transport.interface.d.ts +11 -3
  33. package/dist/core/types/active-contracts-traversal-options.d.ts +11 -0
  34. package/dist/core/types/active-contracts-traversal-options.js +22 -0
  35. package/dist/core/types/command-deduplication-period.d.ts +7 -0
  36. package/dist/core/types/command-deduplication-period.js +1 -0
  37. package/dist/core/types/operation-deadline.d.ts +13 -0
  38. package/dist/core/types/operation-deadline.js +38 -0
  39. package/dist/core/types/requests/allocate-party-request.d.ts +2 -0
  40. package/dist/core/types/requests/allocate-party-request.js +2 -0
  41. package/dist/core/types/requests/finalize-decentralized-party-request.d.ts +6 -0
  42. package/dist/core/types/requests/finalize-decentralized-party-request.js +6 -0
  43. package/dist/core/types/requests/submit-command-request.d.ts +5 -0
  44. package/dist/core/types/requests/submit-command-request.js +43 -0
  45. package/dist/core/types/requests/wait-for-party-hosting-request.d.ts +14 -0
  46. package/dist/core/types/requests/wait-for-party-hosting-request.js +36 -0
  47. package/dist/index.d.ts +5 -11
  48. package/dist/index.js +4 -11
  49. package/dist/query/grpc/grpc-contract-query-client.js +33 -16
  50. package/dist/services/party-management/decentralized-party-lifecycle.d.ts +1 -1
  51. package/dist/services/party-management/decentralized-party-lifecycle.js +12 -1
  52. package/dist/services/party-management/party-management-service-client.js +3 -0
  53. package/dist/services/state/state-service-client.d.ts +5 -1
  54. package/dist/services/state/state-service-client.js +57 -1
  55. package/dist/services/topology-aggregation/topology-aggregation-service-client.d.ts +4 -1
  56. package/dist/services/topology-aggregation/topology-aggregation-service-client.js +36 -0
  57. package/dist/services/topology-manager-read/topology-manager-read-service-client.d.ts +3 -1
  58. package/dist/services/user-management/user-management-service-client.d.ts +7 -1
  59. package/dist/transports/grpc/grpc-channel-factory.d.ts +0 -1
  60. package/dist/transports/grpc/grpc-channel-factory.js +5 -7
  61. package/dist/transports/grpc/grpc-transport.d.ts +10 -3
  62. package/dist/transports/grpc/grpc-transport.js +31 -15
  63. package/dist/transports/grpc/mappers/command-deduplication-mapper.d.ts +5 -0
  64. package/dist/transports/grpc/mappers/command-deduplication-mapper.js +19 -0
  65. package/dist/transports/grpc/mappers/commands-mapper.js +3 -4
  66. package/dist/transports/grpc/mappers/interactive-command-mapper.js +5 -3
  67. package/dist/transports/grpc/mappers/parties-mapper.d.ts +3 -7
  68. package/dist/transports/grpc/mappers/parties-mapper.js +1 -10
  69. package/dist/transports/json/json-transport.d.ts +10 -5
  70. package/dist/transports/json/mappers/commands-mapper.js +5 -1
  71. package/dist/transports/json/mappers/parties-mapper.d.ts +1 -0
  72. package/dist/transports/json/mappers/parties-mapper.js +1 -0
  73. package/node/participant-358-synchronizer.mjs +33 -1
  74. package/node/start-local-participant-358.sh +33 -3
  75. package/node/test-participant-358-sidecar.sh +31 -1
  76. package/package.json +15 -1
  77. package/dist/cjs/core/types/health-check-status.js +0 -10
  78. package/dist/cjs/core/types/requests/get-ledger-api-version-request.js +0 -6
  79. package/dist/cjs/core/types/requests/get-package-references-request.js +0 -10
  80. package/dist/cjs/core/types/requests/get-participant-id-request.js +0 -7
  81. package/dist/cjs/core/types/requests/get-participant-status-request.js +0 -6
  82. package/dist/cjs/core/types/requests/health-check-request.js +0 -10
  83. package/dist/cjs/core/types/responses/get-ledger-api-version-response.js +0 -12
  84. package/dist/cjs/core/types/responses/get-package-references-response.js +0 -10
  85. package/dist/cjs/core/types/responses/get-participant-id-response.js +0 -10
  86. package/dist/cjs/core/types/responses/get-participant-status-response.js +0 -12
  87. package/dist/cjs/core/types/responses/health-check-response.js +0 -10
  88. package/dist/cjs/transports/grpc/mappers/health-mapper.js +0 -24
  89. package/dist/cjs/transports/grpc/mappers/participant-status-mapper.js +0 -58
  90. package/dist/core/types/health-check-status.d.ts +0 -6
  91. package/dist/core/types/health-check-status.js +0 -7
  92. package/dist/core/types/requests/get-ledger-api-version-request.d.ts +0 -2
  93. package/dist/core/types/requests/get-ledger-api-version-request.js +0 -2
  94. package/dist/core/types/requests/get-package-references-request.d.ts +0 -6
  95. package/dist/core/types/requests/get-package-references-request.js +0 -6
  96. package/dist/core/types/requests/get-participant-id-request.d.ts +0 -3
  97. package/dist/core/types/requests/get-participant-id-request.js +0 -3
  98. package/dist/core/types/requests/get-participant-status-request.d.ts +0 -2
  99. package/dist/core/types/requests/get-participant-status-request.js +0 -2
  100. package/dist/core/types/requests/health-check-request.d.ts +0 -6
  101. package/dist/core/types/requests/health-check-request.js +0 -6
  102. package/dist/core/types/responses/get-ledger-api-version-response.d.ts +0 -8
  103. package/dist/core/types/responses/get-ledger-api-version-response.js +0 -8
  104. package/dist/core/types/responses/get-package-references-response.d.ts +0 -7
  105. package/dist/core/types/responses/get-package-references-response.js +0 -6
  106. package/dist/core/types/responses/get-participant-id-response.d.ts +0 -6
  107. package/dist/core/types/responses/get-participant-id-response.js +0 -6
  108. package/dist/core/types/responses/get-participant-status-response.d.ts +0 -10
  109. package/dist/core/types/responses/get-participant-status-response.js +0 -8
  110. package/dist/core/types/responses/health-check-response.d.ts +0 -7
  111. package/dist/core/types/responses/health-check-response.js +0 -6
  112. package/dist/transports/grpc/mappers/health-mapper.d.ts +0 -5
  113. package/dist/transports/grpc/mappers/health-mapper.js +0 -21
  114. package/dist/transports/grpc/mappers/participant-status-mapper.d.ts +0 -5
  115. package/dist/transports/grpc/mappers/participant-status-mapper.js +0 -54
@@ -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
- return (await this.operations.getUserAsync(request, options));
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
- return (await this.operations.listUsersAsync(request, options));
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
- return (await this.operations.listUserRightsAsync(request, options));
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.getActiveContractsPageAsync(request, options));
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
- const prepared = await this.operations.prepareSubmissionAsync(mapGrpcPrepareSubmissionRequest(request, randomUUID()), options);
531
- if (!prepared.preparedTransaction || prepared.preparedTransactionHash.length === 0)
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
- const signerResults = prepared.request.actAs.map((party) => { const result = signatures[party]; if (!result)
539
- throw new ValidationError(`interactive command signing requires a signature for ${party}`); return { party, result }; });
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"];
@@ -0,0 +1,19 @@
1
+ import { ValidationError } from "../../../core/errors/validation-error.js";
2
+ export function mapGrpcDeduplicationPeriod(period, options) {
3
+ if (period === undefined) {
4
+ return { oneofKind: undefined };
5
+ }
6
+ else if (period.kind === "duration") {
7
+ return {
8
+ oneofKind: "deduplicationDuration",
9
+ deduplicationDuration: { seconds: String(period.seconds), nanos: 0 },
10
+ };
11
+ }
12
+ else if (!options.allowParticipantBegin && period.offset === "0") {
13
+ throw new ValidationError("interactive command deduplication offsets must be positive");
14
+ }
15
+ return {
16
+ oneofKind: "deduplicationOffset",
17
+ deduplicationOffset: period.offset,
18
+ };
19
+ }
@@ -10,16 +10,15 @@ import { ExerciseByKeyCommand } from "../../../core/types/commands/exercise-by-k
10
10
  import { ExerciseCommand } from "../../../core/types/commands/exercise-command.js";
11
11
  import { SubmitCommandResponse } from "../../../core/types/responses/submit-command-response.js";
12
12
  import { SubmitCommandTransactionResponse } from "../../../core/types/responses/submit-command-transaction-response.js";
13
+ import { mapGrpcDeduplicationPeriod } from "./command-deduplication-mapper.js";
13
14
  export function mapGrpcSubmitCommandRequest(request) {
14
15
  return {
15
16
  commands: {
16
17
  workflowId: "",
17
18
  userId: request.userId ?? "",
18
- commandId: randomUUID(),
19
+ commandId: request.commandId ?? randomUUID(),
19
20
  commands: [mapGrpcLedgerCommand(request.command)],
20
- deduplicationPeriod: {
21
- oneofKind: undefined,
22
- },
21
+ deduplicationPeriod: mapGrpcDeduplicationPeriod(request.deduplicationPeriod, { allowParticipantBegin: true }),
23
22
  actAs: [...request.actAs],
24
23
  readAs: [...request.readAs],
25
24
  submissionId: "",
@@ -1,8 +1,12 @@
1
1
  import { ValidationError } from "../../../core/errors/validation-error.js";
2
2
  import { SubmitCommandResponse } from "../../../core/types/responses/submit-command-response.js";
3
3
  import { SignatureFormat, SigningAlgorithmSpec, } from "../generated/canton/com/daml/ledger/api/v2/crypto.js";
4
+ import { mapGrpcDeduplicationPeriod } from "./command-deduplication-mapper.js";
4
5
  import { mapGrpcLedgerCommand } from "./commands-mapper.js";
5
6
  export function mapGrpcPrepareSubmissionRequest(request, commandId) {
7
+ mapGrpcDeduplicationPeriod(request.deduplicationPeriod, {
8
+ allowParticipantBegin: false,
9
+ });
6
10
  return {
7
11
  userId: request.userId ?? "",
8
12
  commandId,
@@ -22,9 +26,7 @@ export function mapGrpcExecuteSubmissionAndWaitRequest(init) {
22
26
  partySignatures: {
23
27
  signatures: init.signerResults.map(({ party, result }) => ({ party, signatures: [mapGrpcSignature(result)] })),
24
28
  },
25
- deduplicationPeriod: {
26
- oneofKind: undefined,
27
- },
29
+ deduplicationPeriod: mapGrpcDeduplicationPeriod(init.request.deduplicationPeriod, { allowParticipantBegin: false }),
28
30
  submissionId: init.submissionId,
29
31
  userId: init.request.userId ?? "",
30
32
  hashingSchemeVersion: init.hashingSchemeVersion,
@@ -1,13 +1,11 @@
1
- import { GetParticipantIdRequest } from "../../../core/types/requests/get-participant-id-request.js";
2
1
  import { GetPartiesRequest } from "../../../core/types/requests/get-parties-request.js";
3
- import { CreatePartyRequest } from "../../../core/types/requests/create-party-request.js";
2
+ import { AllocatePartyRequest as SdkAllocatePartyRequest } from "../../../core/types/requests/allocate-party-request.js";
4
3
  import { ListPartiesRequest } from "../../../core/types/requests/list-parties-request.js";
5
4
  import { CreatePartyResponse } from "../../../core/types/responses/create-party-response.js";
6
- import { GetParticipantIdResponse as SdkGetParticipantIdResponse } from "../../../core/types/responses/get-participant-id-response.js";
7
5
  import { GetPartiesResponse as SdkGetPartiesResponse } from "../../../core/types/responses/get-parties-response.js";
8
6
  import { ListPartiesResponse } from "../../../core/types/responses/list-parties-response.js";
9
- import { AllocatePartyRequest, AllocatePartyResponse, GetParticipantIdResponse, GetPartiesResponse, ListKnownPartiesRequest, ListKnownPartiesResponse } from "../generated/canton/com/daml/ledger/api/v2/admin/party_management_service.js";
10
- export declare function mapGrpcCreatePartyRequest(request: CreatePartyRequest): AllocatePartyRequest;
7
+ import { AllocatePartyRequest, AllocatePartyResponse, GetPartiesResponse, ListKnownPartiesRequest, ListKnownPartiesResponse } from "../generated/canton/com/daml/ledger/api/v2/admin/party_management_service.js";
8
+ export declare function mapGrpcCreatePartyRequest(request: SdkAllocatePartyRequest): AllocatePartyRequest;
11
9
  export declare function mapGrpcCreateParty(payload: {
12
10
  identifier?: string;
13
11
  partyDetails?: {
@@ -16,8 +14,6 @@ export declare function mapGrpcCreateParty(payload: {
16
14
  } | AllocatePartyResponse): CreatePartyResponse;
17
15
  export declare function mapGrpcListPartiesRequest(request: ListPartiesRequest): ListKnownPartiesRequest;
18
16
  export declare function mapGrpcListParties(payload: ListKnownPartiesResponse): ListPartiesResponse;
19
- export declare function mapGrpcGetParticipantIdRequest(_request: GetParticipantIdRequest): Record<string, never>;
20
- export declare function mapGrpcGetParticipantId(payload: Partial<GetParticipantIdResponse>): SdkGetParticipantIdResponse;
21
17
  export declare function mapGrpcGetPartiesRequest(request: GetPartiesRequest): {
22
18
  parties: string[];
23
19
  identityProviderId: string;
@@ -1,6 +1,5 @@
1
1
  import { PartyDetails as SdkPartyDetails } from "../../../core/types/party-details.js";
2
2
  import { CreatePartyResponse } from "../../../core/types/responses/create-party-response.js";
3
- import { GetParticipantIdResponse as SdkGetParticipantIdResponse } from "../../../core/types/responses/get-participant-id-response.js";
4
3
  import { GetPartiesResponse as SdkGetPartiesResponse } from "../../../core/types/responses/get-parties-response.js";
5
4
  import { ListPartiesResponse } from "../../../core/types/responses/list-parties-response.js";
6
5
  export function mapGrpcCreatePartyRequest(request) {
@@ -8,7 +7,7 @@ export function mapGrpcCreatePartyRequest(request) {
8
7
  partyIdHint: request.partyIdHint ?? "",
9
8
  identityProviderId: "",
10
9
  synchronizerId: "",
11
- userId: "",
10
+ userId: request.userId ?? "",
12
11
  };
13
12
  }
14
13
  export function mapGrpcCreateParty(payload) {
@@ -37,14 +36,6 @@ export function mapGrpcListParties(payload) {
37
36
  nextPageToken: payload.nextPageToken || undefined,
38
37
  });
39
38
  }
40
- export function mapGrpcGetParticipantIdRequest(_request) {
41
- return {};
42
- }
43
- export function mapGrpcGetParticipantId(payload) {
44
- return new SdkGetParticipantIdResponse({
45
- participantId: payload.participantId ?? "",
46
- });
47
- }
48
39
  export function mapGrpcGetPartiesRequest(request) {
49
40
  return {
50
41
  parties: [...request.parties],
@@ -1,18 +1,24 @@
1
1
  import { AllocatePartyRequest } from "../../core/types/requests/allocate-party-request.js";
2
2
  import { GetActiveContractsRequest } from "../../core/types/requests/get-active-contracts-request.js";
3
- import { GetParticipantIdRequest } from "../../core/types/requests/get-participant-id-request.js";
3
+ import { GetUserRequest } from "../../core/types/requests/get-user-request.js";
4
4
  import { ListKnownPartiesRequest } from "../../core/types/requests/list-known-parties-request.js";
5
+ import { ListPartyToParticipantRequest } from "../../core/types/requests/list-party-to-participant-request.js";
6
+ import { ListUserRightsRequest } from "../../core/types/requests/list-user-rights-request.js";
7
+ import { ListUsersRequest } from "../../core/types/requests/list-users-request.js";
5
8
  import { SubmitCommandRequest } from "../../core/types/requests/submit-command-request.js";
6
9
  import { AllocatePartyResponse } from "../../core/types/responses/allocate-party-response.js";
10
+ import { GetUserResponse } from "../../core/types/responses/get-user-response.js";
11
+ import { ListPartyToParticipantResponse } from "../../core/types/responses/list-party-to-participant-response.js";
12
+ import { ListUserRightsResponse } from "../../core/types/responses/list-user-rights-response.js";
13
+ import { ListUsersResponse } from "../../core/types/responses/list-users-response.js";
7
14
  import type { ListPartiesRequest as TopologyListPartiesRequest, ListPartiesResponse as TopologyListPartiesResponse, ListKeyOwnersRequest, ListKeyOwnersResponse } from "../grpc/generated/canton/com/digitalasset/canton/topology/admin/v30/topology_aggregation_service.js";
8
15
  import type { AddTransactionsRequest, AddTransactionsResponse, AuthorizeRequest, AuthorizeResponse, CreateTemporaryTopologyStoreRequest, CreateTemporaryTopologyStoreResponse, DropTemporaryTopologyStoreRequest, DropTemporaryTopologyStoreResponse, GenerateTransactionsRequest, GenerateTransactionsResponse, ImportTopologySnapshotRequest, ImportTopologySnapshotResponse, ImportTopologySnapshotV2Request, ImportTopologySnapshotV2Response, SignTransactionsRequest, SignTransactionsResponse } from "../grpc/generated/canton/com/digitalasset/canton/topology/admin/v30/topology_manager_write_service.js";
9
16
  import type { GetContractRequest, GetContractResponse } from "../grpc/generated/canton/com/daml/ledger/api/v2/contract_service.js";
10
17
  import type { AddPartyAsyncRequest, AddPartyAsyncResponse, ClearPartyOnboardingFlagRequest, ClearPartyOnboardingFlagResponse, GetHighestOffsetByTimestampRequest, GetHighestOffsetByTimestampResponse } from "../grpc/generated/canton/com/digitalasset/canton/admin/participant/v30/party_management_service.js";
11
18
  import type { GetEventsByContractIdRequest, GetEventsByContractIdResponse } from "../grpc/generated/canton/com/daml/ledger/api/v2/event_query_service.js";
12
19
  import type { CurrentTimeRequest, CurrentTimeResponse, GetIdRequest, GetIdResponse } from "../grpc/generated/canton/com/digitalasset/canton/topology/admin/v30/initialization_service.js";
13
- import type { ListAllRequest, ListAllResponse, ListLsuAnnouncementRequest, ListLsuAnnouncementResponse, ListLsuSequencerConnectionSuccessorRequest, ListLsuSequencerConnectionSuccessorResponse, ListMediatorSynchronizerStateRequest, ListMediatorSynchronizerStateResponse, ListSequencingParametersStateRequest, ListSequencingParametersStateResponse, ListSynchronizerParametersStateRequest, ListSynchronizerParametersStateResponse, ListPartyToParticipantRequest, ListPartyToParticipantResponse, ListVettedPackagesRequest as TopologyListVettedPackagesRequest, ListVettedPackagesResponse as TopologyListVettedPackagesResponse, ListPartyHostingLimitsRequest, ListPartyHostingLimitsResponse, ListParticipantSynchronizerPermissionRequest, ListParticipantSynchronizerPermissionResponse, ListSynchronizerTrustCertificateRequest, ListSynchronizerTrustCertificateResponse, ListPartyToKeyMappingRequest, ListPartyToKeyMappingResponse, ListOwnerToKeyMappingRequest, ListOwnerToKeyMappingResponse, ListDecentralizedNamespaceDefinitionRequest, ListDecentralizedNamespaceDefinitionResponse, ListNamespaceDelegationRequest, ListNamespaceDelegationResponse, ListSequencerSynchronizerStateRequest, ListSequencerSynchronizerStateResponse } from "../grpc/generated/canton/com/digitalasset/canton/topology/admin/v30/topology_manager_read_service.js";
14
- import { GetParticipantIdResponse } from "../../core/types/responses/get-participant-id-response.js";
15
- import type { GetPartiesRequest, GetPartiesResponse } from "../grpc/generated/canton/com/daml/ledger/api/v2/admin/party_management_service.js";
20
+ import type { ListAllRequest, ListAllResponse, 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 "../grpc/generated/canton/com/digitalasset/canton/topology/admin/v30/topology_manager_read_service.js";
21
+ import type { GetParticipantIdRequest, GetParticipantIdResponse, GetPartiesRequest, GetPartiesResponse } from "../grpc/generated/canton/com/daml/ledger/api/v2/admin/party_management_service.js";
16
22
  import type { GetResourceLimitsRequest, GetResourceLimitsResponse } from "../grpc/generated/canton/com/digitalasset/canton/admin/participant/v30/resource_management_service.js";
17
23
  import type { GetNoWaitCommitmentsFromRequest, GetNoWaitCommitmentsFromResponse, GetParticipantScheduleRequest as GetParticipantPruningScheduleRequest, GetParticipantScheduleResponse as GetParticipantPruningScheduleResponse, GetScheduleRequest as GetPruningScheduleRequest, GetScheduleResponse as GetPruningScheduleResponse } from "../grpc/generated/canton/com/digitalasset/canton/admin/pruning/v30/pruning.js";
18
24
  import type { AllocateExternalPartyRequest, AllocateExternalPartyResponse, GenerateExternalPartyTopologyRequest, GenerateExternalPartyTopologyResponse } from "../grpc/generated/canton/com/daml/ledger/api/v2/admin/party_management_service.js";
@@ -36,7 +42,6 @@ import { ICommandSigner } from "../../core/signing/command-signer.interface.js";
36
42
  import { RequestOptions } from "../../core/types/request-options.js";
37
43
  import type { ListKnownPackagesRequest, ListKnownPackagesResponse, UploadDarFileRequest } from "../grpc/generated/canton/com/daml/ledger/api/v2/admin/package_management_service.js";
38
44
  import { UploadDarFileResponse } from "../grpc/generated/canton/com/daml/ledger/api/v2/admin/package_management_service.js";
39
- import type { GetUserRequest, GetUserResponse, ListUserRightsRequest, ListUserRightsResponse, ListUsersRequest, ListUsersResponse } from "../grpc/generated/canton/com/daml/ledger/api/v2/admin/user_management_service.js";
40
45
  import type { GetCommandStatusRequest, GetCommandStatusResponse } from "../grpc/generated/canton/com/daml/ledger/api/v2/admin/command_inspection_service.js";
41
46
  import type { GetActiveContractsPageRequest, GetActiveContractsPageResponse, GetConnectedSynchronizersRequest, GetConnectedSynchronizersResponse, GetLedgerEndRequest, GetLedgerEndResponse, GetLatestPrunedOffsetsRequest, GetLatestPrunedOffsetsResponse } from "../grpc/generated/canton/com/daml/ledger/api/v2/state_service.js";
42
47
  import { GetPackageRequest, GetPackageResponse, GetPackageStatusRequest, GetPackageStatusResponse, ListPackagesRequest, ListPackagesResponse, ListVettedPackagesRequest, ListVettedPackagesResponse } from "../grpc/generated/canton/com/daml/ledger/api/v2/package_service.js";
@@ -1,4 +1,5 @@
1
1
  import { randomUUID } from "node:crypto";
2
+ import { TransportError } from "../../../core/errors/transport-error.js";
2
3
  import { ValidationError } from "../../../core/errors/validation-error.js";
3
4
  import { CreateAndExerciseCommand } from "../../../core/types/commands/create-and-exercise-command.js";
4
5
  import { CreateCommand } from "../../../core/types/commands/create-command.js";
@@ -9,8 +10,11 @@ import { ExerciseByKeyCommand } from "../../../core/types/commands/exercise-by-k
9
10
  import { ExerciseCommand } from "../../../core/types/commands/exercise-command.js";
10
11
  import { SubmitCommandResponse } from "../../../core/types/responses/submit-command-response.js";
11
12
  export function mapJsonSubmitCommandRequest(request) {
13
+ if (request.deduplicationPeriod !== undefined) {
14
+ throw new TransportError("command deduplication periods are not supported by the JSON transport");
15
+ }
12
16
  return {
13
- commandId: randomUUID(),
17
+ commandId: request.commandId ?? randomUUID(),
14
18
  actAs: request.actAs,
15
19
  readAs: request.readAs,
16
20
  commands: [mapJsonCommand(request.command)],
@@ -13,6 +13,7 @@ export declare function mapJsonCreateParty(payload: {
13
13
  }): CreatePartyResponse;
14
14
  export declare function mapJsonAllocatePartyRequest(request: AllocatePartyRequest): {
15
15
  partyIdHint?: string;
16
+ userId?: string;
16
17
  localMetadata?: {
17
18
  attributes: Record<string, string>;
18
19
  };
@@ -11,6 +11,7 @@ export function mapJsonCreateParty(payload) {
11
11
  export function mapJsonAllocatePartyRequest(request) {
12
12
  return {
13
13
  partyIdHint: request.partyIdHint,
14
+ userId: request.userId,
14
15
  localMetadata: request.displayName === undefined
15
16
  ? undefined
16
17
  : {
@@ -6,6 +6,12 @@ import { SynchronizerConnectivityServiceClient } from "../dist/transports/grpc/g
6
6
  import { ListRegisteredSynchronizersResponse_Status } from "../dist/transports/grpc/generated/canton/com/digitalasset/canton/admin/participant/v30/synchronizer_connectivity_service.js";
7
7
  import { SequencerConnectionValidation } from "../dist/transports/grpc/generated/canton/com/digitalasset/canton/admin/sequencer/v30/sequencer_connection.js";
8
8
  import { VersionServiceClient } from "../dist/transports/grpc/generated/canton/com/daml/ledger/api/v2/version_service.client.js";
9
+ import { UserManagementServiceClient } from "../dist/transports/grpc/generated/canton/com/daml/ledger/api/v2/admin/user_management_service.client.js";
10
+ import {
11
+ GrantUserRightsRequest,
12
+ Right,
13
+ Right_CanReadAsAnyParty,
14
+ } from "../dist/transports/grpc/generated/canton/com/daml/ledger/api/v2/admin/user_management_service.js";
9
15
 
10
16
  function getRequiredEnvironment(name) {
11
17
  const value = process.env[name];
@@ -128,6 +134,30 @@ async function readLedgerApiVersion() {
128
134
  }
129
135
  }
130
136
 
137
+ async function ensureLedgerUserReadRights() {
138
+ const endpoint = getRequiredEnvironment("PARTICIPANT_358_LEDGER_ENDPOINT");
139
+ const token = process.env.PARTICIPANT_358_LEDGER_BEARER_TOKEN ?? createSharedSecretToken();
140
+ const userId = process.env.PARTICIPANT_358_LEDGER_USER_ID ?? "ledger-api-user";
141
+ const { options, transport } = createClient(endpoint, token);
142
+
143
+ try {
144
+ const request = GrantUserRightsRequest.create({
145
+ userId,
146
+ rights: [Right.create({
147
+ kind: {
148
+ oneofKind: "canReadAsAnyParty",
149
+ canReadAsAnyParty: Right_CanReadAsAnyParty.create(),
150
+ },
151
+ })],
152
+ });
153
+
154
+ await new UserManagementServiceClient(transport)
155
+ .grantUserRights(request, options).response;
156
+ } finally {
157
+ transport.close();
158
+ }
159
+ }
160
+
131
161
  const command = process.argv[2];
132
162
  if (command === "export") {
133
163
  await exportSynchronizerConfig();
@@ -137,6 +167,8 @@ if (command === "export") {
137
167
  await readLedgerApiVersion();
138
168
  } else if (command === "mint-ledger-token") {
139
169
  await writeLedgerToken();
170
+ } else if (command === "ensure-ledger-user-read-rights") {
171
+ await ensureLedgerUserReadRights();
140
172
  } else {
141
- throw new Error("Expected 'export', 'connect', 'ledger-api-version', or 'mint-ledger-token'.");
173
+ throw new Error("Expected 'export', 'connect', 'ledger-api-version', 'mint-ledger-token', or 'ensure-ledger-user-read-rights'.");
142
174
  }
@@ -12,8 +12,35 @@ LEDGER_PORT="${PARTICIPANT_358_LEDGER_PORT:-8901}"
12
12
  ADMIN_PORT="${PARTICIPANT_358_ADMIN_PORT:-8902}"
13
13
  JSON_PORT="${PARTICIPANT_358_JSON_PORT:-8975}"
14
14
  SOURCE_ADMIN_ENDPOINT="${PARTICIPANT_358_SOURCE_ADMIN_ENDPOINT:-localhost:3902}"
15
+ SYNCHRONIZER_CONFIG="$RUNTIME_DIR/registered-synchronizer.json"
16
+ LEDGER_TOKEN_FILE="$RUNTIME_DIR/ledger-api-user.token"
15
17
  DOCKER_COMPOSE_CMD=()
16
18
 
19
+ print_bearer_token_exports() {
20
+ local escaped_token_file
21
+ printf -v escaped_token_file '%q' "$LEDGER_TOKEN_FILE"
22
+ printf 'export SDK_TEST_LEDGER_BEARER_TOKEN="$(cat %s)"\n' "$escaped_token_file"
23
+ printf 'export SDK_TEST_LEDGER_ADMIN_BEARER_TOKEN="$(cat %s)"\n' "$escaped_token_file"
24
+ printf 'export SDK_TEST_PARTICIPANT_ADMIN_BEARER_TOKEN="$(cat %s)"\n' "$escaped_token_file"
25
+ printf 'export SDK_EXAMPLE_BEARER_TOKEN="$(cat %s)"\n' "$escaped_token_file"
26
+ }
27
+
28
+ if (( $# > 0 )); then
29
+ if [[ "$1" != "--refresh-token" || $# -ne 1 ]]; then
30
+ echo "Usage: $(basename "$0") [--refresh-token]" >&2
31
+ exit 1
32
+ elif [[ ! -d "$RUNTIME_DIR" || ! -f "$LEDGER_TOKEN_FILE" ]]; then
33
+ echo "Participant 3.5.8 runtime token does not exist at $LEDGER_TOKEN_FILE. Start the sidecar first." >&2
34
+ exit 1
35
+ fi
36
+
37
+ PARTICIPANT_358_LEDGER_TOKEN_FILE="$LEDGER_TOKEN_FILE" \
38
+ node "$SCRIPT_DIR/participant-358-synchronizer.mjs" mint-ledger-token
39
+ chmod 600 "$LEDGER_TOKEN_FILE"
40
+ print_bearer_token_exports
41
+ exit 0
42
+ fi
43
+
17
44
  resolve_docker_compose_cmd() {
18
45
  if docker compose version >/dev/null 2>&1; then DOCKER_COMPOSE_CMD=(docker compose); return; fi
19
46
  if docker-compose version >/dev/null 2>&1; then DOCKER_COMPOSE_CMD=(docker-compose); return; fi
@@ -49,10 +76,9 @@ for port in "$LEDGER_PORT" "$ADMIN_PORT" "$JSON_PORT"; do assert_host_port_avail
49
76
 
50
77
  mkdir -p "$RUNTIME_DIR"
51
78
  chmod 700 "$RUNTIME_DIR"
52
- SYNCHRONIZER_CONFIG="$RUNTIME_DIR/registered-synchronizer.json"
53
- LEDGER_TOKEN_FILE="$RUNTIME_DIR/ledger-api-user.token"
54
79
  PARTICIPANT_358_LEDGER_TOKEN_FILE="$LEDGER_TOKEN_FILE" \
55
80
  node "$SCRIPT_DIR/participant-358-synchronizer.mjs" mint-ledger-token
81
+ chmod 600 "$LEDGER_TOKEN_FILE"
56
82
  cat > "$RUNTIME_DIR/participant-358.env" <<EOF
57
83
  PARTICIPANT_358_SYNCHRONIZER_CONFIG=$SYNCHRONIZER_CONFIG
58
84
  PARTICIPANT_358_SOURCE_ADMIN_ENDPOINT=$SOURCE_ADMIN_ENDPOINT
@@ -170,6 +196,10 @@ if [[ "${PARTICIPANT_358_SKIP_SYNCHRONIZER_CONNECT:-0}" != "1" ]]; then
170
196
  fi
171
197
  sleep 2
172
198
  done
199
+
200
+ PARTICIPANT_358_LEDGER_ENDPOINT="localhost:$LEDGER_PORT" \
201
+ PARTICIPANT_358_LEDGER_BEARER_TOKEN="$(cat "$LEDGER_TOKEN_FILE")" \
202
+ node "$SCRIPT_DIR/participant-358-synchronizer.mjs" ensure-ledger-user-read-rights
173
203
  fi
174
204
 
175
205
  cat <<EOF
@@ -180,5 +210,5 @@ export SDK_TEST_PARTICIPANT_ADMIN_ENDPOINT=localhost:$ADMIN_PORT
180
210
  export SDK_EXAMPLE_LEDGER_ENDPOINT=localhost:$LEDGER_PORT
181
211
  export SDK_EXAMPLE_LEDGER_ADMIN_ENDPOINT=localhost:$LEDGER_PORT
182
212
  export SDK_EXAMPLE_PARTICIPANT_ADMIN_ENDPOINT=localhost:$ADMIN_PORT
183
- export SDK_EXAMPLE_BEARER_TOKEN="\$(cat $LEDGER_TOKEN_FILE)"
184
213
  EOF
214
+ print_bearer_token_exports
@@ -10,6 +10,8 @@ STOP_SCRIPT="$REPO_ROOT/node/stop-local-participant-358.sh"
10
10
  grep -Fq 'export SDK_EXAMPLE_LEDGER_ENDPOINT=localhost:$LEDGER_PORT' "$START_SCRIPT"
11
11
  grep -Fq 'export SDK_EXAMPLE_LEDGER_ADMIN_ENDPOINT=localhost:$LEDGER_PORT' "$START_SCRIPT"
12
12
  grep -Fq 'export SDK_EXAMPLE_PARTICIPANT_ADMIN_ENDPOINT=localhost:$ADMIN_PORT' "$START_SCRIPT"
13
+ grep -Fq 'ensure-ledger-user-read-rights' "$START_SCRIPT"
14
+ grep -Fq 'canReadAsAnyParty' "$REPO_ROOT/node/participant-358-synchronizer.mjs"
13
15
 
14
16
  tmpdir="$(mktemp -d)"
15
17
  trap 'rm -rf "$tmpdir"' EXIT
@@ -28,9 +30,15 @@ chmod +x "$stubbin/docker"
28
30
 
29
31
  runtime_dir="$tmpdir/runtime"
30
32
  docker_log="$tmpdir/docker.log"
33
+ test_ledger_port=18901
34
+ test_admin_port=18902
35
+ test_json_port=18975
31
36
  PATH="$stubbin:$PATH" \
32
37
  DOCKER_LOG="$docker_log" \
33
38
  PARTICIPANT_358_RUNTIME_DIR="$runtime_dir" \
39
+ PARTICIPANT_358_LEDGER_PORT="$test_ledger_port" \
40
+ PARTICIPANT_358_ADMIN_PORT="$test_admin_port" \
41
+ PARTICIPANT_358_JSON_PORT="$test_json_port" \
34
42
  PARTICIPANT_358_SKIP_SYNCHRONIZER_CONNECT=1 \
35
43
  "$START_SCRIPT"
36
44
 
@@ -48,7 +56,9 @@ grep -Fqx ' databaseName = participant358' "$runtime_dir/canton.conf"
48
56
  grep -Fqx ' admin-api {' "$runtime_dir/canton.conf"
49
57
  grep -Fqx ' address = "0.0.0.0"' "$runtime_dir/canton.conf"
50
58
  grep -Fqx ' port = 5002' "$runtime_dir/canton.conf"
51
- grep -Fqx ' - "127.0.0.1:8901:5001"' "$runtime_dir/compose.yaml"
59
+ grep -Fqx " - \"127.0.0.1:$test_ledger_port:5001\"" "$runtime_dir/compose.yaml"
60
+ grep -Fqx " - \"127.0.0.1:$test_admin_port:5002\"" "$runtime_dir/compose.yaml"
61
+ grep -Fqx " - \"127.0.0.1:$test_json_port:7575\"" "$runtime_dir/compose.yaml"
52
62
  grep -Fqx ' port = 5002' "$runtime_dir/canton.conf"
53
63
  grep -Fqx ' port = 7575' "$runtime_dir/canton.conf"
54
64
  grep -Fq 'PARTICIPANT_358_SYNCHRONIZER_CONFIG=' "$runtime_dir/participant-358.env"
@@ -66,6 +76,26 @@ if (payload.exp - payload.iat !== 300) throw new Error("token lifetime must be 3
66
76
  grep -F -- '--project-name canton-participant-358' "$docker_log"
67
77
  grep -Fqx ' name: quickstart' "$runtime_dir/compose.yaml"
68
78
 
79
+ docker_calls_before_refresh="$(wc -l < "$docker_log")"
80
+ refresh_output="$(
81
+ PATH="$stubbin:$PATH" \
82
+ DOCKER_LOG="$docker_log" \
83
+ PARTICIPANT_358_RUNTIME_DIR="$runtime_dir" \
84
+ "$START_SCRIPT" --refresh-token
85
+ )"
86
+ [[ "$(wc -l < "$docker_log")" == "$docker_calls_before_refresh" ]]
87
+ [[ "$(stat -c '%a' "$runtime_dir/ledger-api-user.token")" == 600 ]]
88
+ grep -Fqx "export SDK_TEST_LEDGER_BEARER_TOKEN=\"\$(cat $runtime_dir/ledger-api-user.token)\"" <<<"$refresh_output"
89
+ grep -Fqx "export SDK_TEST_LEDGER_ADMIN_BEARER_TOKEN=\"\$(cat $runtime_dir/ledger-api-user.token)\"" <<<"$refresh_output"
90
+ grep -Fqx "export SDK_TEST_PARTICIPANT_ADMIN_BEARER_TOKEN=\"\$(cat $runtime_dir/ledger-api-user.token)\"" <<<"$refresh_output"
91
+ grep -Fqx "export SDK_EXAMPLE_BEARER_TOKEN=\"\$(cat $runtime_dir/ledger-api-user.token)\"" <<<"$refresh_output"
92
+ [[ "$(wc -l <<<"$refresh_output")" == 4 ]]
93
+
94
+ if "$START_SCRIPT" --unknown >/dev/null 2>&1; then
95
+ echo 'sidecar launcher accepted an unknown argument' >&2
96
+ exit 1
97
+ fi
98
+
69
99
  if PATH="$stubbin:$PATH" PARTICIPANT_358_LEDGER_PORT=3901 "$START_SCRIPT" >/dev/null 2>&1; then
70
100
  echo 'sidecar launcher accepted a CN Quickstart Ledger port' >&2
71
101
  exit 1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@distrohelena/canton-typescript-sdk",
3
- "version": "0.1.33",
3
+ "version": "0.1.36",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -88,6 +88,20 @@
88
88
  "example:party:hosted": "npm run build && node --loader ts-node/esm examples/10-hosted-party.ts",
89
89
  "example:party:external": "npm run build && node --loader ts-node/esm examples/20-external-party-ed25519.ts",
90
90
  "example:party:decentralized": "npm run build && node --loader ts-node/esm examples/30-decentralized-party-ed25519.ts",
91
+ "example:dar:upload": "npm run build && node --loader ts-node/esm examples/40-dar-upload.ts",
92
+ "example:contract:create-exercise": "npm run build && node --loader ts-node/esm examples/50-create-and-exercise.ts",
93
+ "example:contract:query": "npm run build && node --loader ts-node/esm examples/60-query-active-contracts.ts",
94
+ "example:updates:stream": "npm run build && node --loader ts-node/esm examples/61-stream-updates.ts",
95
+ "example:user:rights": "npm run build && node --loader ts-node/esm examples/70-user-rights.ts",
96
+ "example:topology:party-hosting": "npm run build && node --loader ts-node/esm examples/80-topology-inspection.ts",
97
+ "example:workflow:atomic": "npm run build && node --loader ts-node/esm examples/90-atomic-create-and-exercise.ts",
98
+ "example:workflow:retry": "npm run build && node --loader ts-node/esm examples/91-idempotent-command-retry.ts",
99
+ "example:workflow:resume": "npm run build && node --loader ts-node/esm examples/92-resume-update-stream.ts",
100
+ "example:workflow:stale-contract": "npm run build && node --loader ts-node/esm examples/93-archive-and-stale-contract.ts",
101
+ "example:workflow:command-completion": "npm run build && node --loader ts-node/esm examples/94-command-completion-correlation.ts",
102
+ "example:workflow:contract-lifecycle-audit": "npm run build && node --loader ts-node/esm examples/95-contract-lifecycle-audit.ts",
103
+ "example:workflow:update-lookup-reconciliation": "npm run build && node --loader ts-node/esm examples/96-update-lookup-reconciliation.ts",
104
+ "example:workflow:pruning-preflight": "npm run build && node --loader ts-node/esm examples/97-pruning-preflight.ts",
91
105
  "lint": "eslint . --max-warnings=0",
92
106
  "lint:fix": "eslint . --fix --max-warnings=0",
93
107
  "start:local-ledger": "bash node/start-local.sh",
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HealthCheckStatus = void 0;
4
- var HealthCheckStatus;
5
- (function (HealthCheckStatus) {
6
- HealthCheckStatus["unknown"] = "unknown";
7
- HealthCheckStatus["serving"] = "serving";
8
- HealthCheckStatus["notServing"] = "notServing";
9
- HealthCheckStatus["serviceUnknown"] = "serviceUnknown";
10
- })(HealthCheckStatus || (exports.HealthCheckStatus = HealthCheckStatus = {}));
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GetLedgerApiVersionRequest = void 0;
4
- class GetLedgerApiVersionRequest {
5
- }
6
- exports.GetLedgerApiVersionRequest = GetLedgerApiVersionRequest;
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GetPackageReferencesRequest = void 0;
4
- class GetPackageReferencesRequest {
5
- packageId;
6
- constructor(init) {
7
- this.packageId = init.packageId;
8
- }
9
- }
10
- exports.GetPackageReferencesRequest = GetPackageReferencesRequest;
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GetParticipantIdRequest = void 0;
4
- class GetParticipantIdRequest {
5
- constructor() { }
6
- }
7
- exports.GetParticipantIdRequest = GetParticipantIdRequest;
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GetParticipantStatusRequest = void 0;
4
- class GetParticipantStatusRequest {
5
- }
6
- exports.GetParticipantStatusRequest = GetParticipantStatusRequest;
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HealthCheckRequest = void 0;
4
- class HealthCheckRequest {
5
- service;
6
- constructor(init = {}) {
7
- this.service = init.service;
8
- }
9
- }
10
- exports.HealthCheckRequest = HealthCheckRequest;
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GetLedgerApiVersionResponse = void 0;
4
- class GetLedgerApiVersionResponse {
5
- version;
6
- features;
7
- constructor(init) {
8
- this.version = init.version;
9
- this.features = init.features;
10
- }
11
- }
12
- exports.GetLedgerApiVersionResponse = GetLedgerApiVersionResponse;