@layerzerolabs/common-canton 1.2.8 → 1.2.9
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/.turbo/turbo-build.log +639 -639
- package/.turbo/turbo-test.log +50 -15
- package/dist/3K5JL2TP.js +71 -0
- package/dist/3K5JL2TP.js.map +1 -0
- package/dist/{SLTAV2JF.js → ANKLDEGA.js} +3 -3
- package/dist/{SLTAV2JF.js.map → ANKLDEGA.js.map} +1 -1
- package/dist/{NRSV2VHQ.js → AWR6H7TM.js} +3 -3
- package/dist/{NRSV2VHQ.js.map → AWR6H7TM.js.map} +1 -1
- package/dist/{ESNOKXKB.js → DGVHAULK.js} +4 -4
- package/dist/{ESNOKXKB.js.map → DGVHAULK.js.map} +1 -1
- package/dist/{4G6A7TFX.js → DSYVONFP.js} +3 -3
- package/dist/{4G6A7TFX.js.map → DSYVONFP.js.map} +1 -1
- package/dist/{ST5U5WZ4.js → FFZGONTK.js} +4 -4
- package/dist/{ST5U5WZ4.js.map → FFZGONTK.js.map} +1 -1
- package/dist/{3ZCDWNJG.js → HTVAEYFB.js} +72 -128
- package/dist/HTVAEYFB.js.map +1 -0
- package/dist/client/amulet.js +2 -2
- package/dist/client/canton-client.d.ts +1 -1
- package/dist/client/canton-client.d.ts.map +1 -1
- package/dist/client/canton-client.js +3 -3
- package/dist/client/grpc.js +2 -2
- package/dist/client/index.js +4 -4
- package/dist/errors.d.ts +21 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +1 -1
- package/dist/index.js +10 -10
- package/dist/provider.js +5 -5
- package/dist/refresh/index.js +5 -5
- package/dist/refresh/resolve.js +4 -4
- package/dist/sdk/canton-sdk.js +2 -2
- package/dist/sdk/index.js +2 -2
- package/package.json +10 -10
- package/src/client/canton-client.ts +110 -131
- package/src/errors.ts +51 -0
- package/dist/3ZCDWNJG.js.map +0 -1
- package/dist/A7Z5O57E.js +0 -34
- package/dist/A7Z5O57E.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client/amulet.ts"],"names":["AMULET_INSTRUMENT_ID","CONTEXT_PROBE_EXECUTE_BEFORE_WINDOW_MS","fetchAmuletContext","walletUrl","token","instrumentId","now","Date","later","getTime","response","fetch","URL","method","headers","Authorization","body","JSON","stringify","choiceArguments","expectedAdmin","admin","transfer","sender","receiver","amount","requestedAt","toISOString","executeBefore","inputHoldingCids","meta","values","extraArgs","context","ok","text","CantonProtocolError","status","data","json","disclosedContracts","choiceContextData","amuletContext","choiceContext","injectExternalPartyAmuletRules","externalRulesContract","find","contract","templateId","includes","NonRetryableError","tag","value","contractId","externalPartyAmuletRulesCid","fetchDsoParty","dso_party_id"],"mappings":"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","file":"
|
|
1
|
+
{"version":3,"sources":["../src/client/amulet.ts"],"names":["AMULET_INSTRUMENT_ID","CONTEXT_PROBE_EXECUTE_BEFORE_WINDOW_MS","fetchAmuletContext","walletUrl","token","instrumentId","now","Date","later","getTime","response","fetch","URL","method","headers","Authorization","body","JSON","stringify","choiceArguments","expectedAdmin","admin","transfer","sender","receiver","amount","requestedAt","toISOString","executeBefore","inputHoldingCids","meta","values","extraArgs","context","ok","text","CantonProtocolError","status","data","json","disclosedContracts","choiceContextData","amuletContext","choiceContext","injectExternalPartyAmuletRules","externalRulesContract","find","contract","templateId","includes","NonRetryableError","tag","value","contractId","externalPartyAmuletRulesCid","fetchDsoParty","dso_party_id"],"mappings":"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","file":"DSYVONFP.js","sourcesContent":["import { NonRetryableError } from '@layerzerolabs/common-error-utils';\n\nimport type { TokenProvider } from '../auth/token-provider';\nimport { CantonProtocolError } from '../errors';\nimport type { DisclosedContract } from '../open-api/models';\n\n/** Validator-wallet access a {@link CantonClient} needs to serve amulet endpoints. */\nexport type CantonClientWalletConfig = {\n /** Validator wallet URL for scan-proxy CIP-56 endpoints. */\n walletUrl: string;\n /** Bearer-token source for wallet requests. */\n tokenProvider: TokenProvider;\n};\n\n/** The single Amulet instrument id used across Canton Network fee flows. */\nexport const AMULET_INSTRUMENT_ID = 'Amulet';\n\n/** Instrument identifier for an amulet context probe. */\nexport type InstrumentId = { admin: string; id: string };\n\n/** DAML ChoiceContext — a bag of named AnyValues passed to fee-bearing choices. */\nexport type ChoiceContext = { values: Record<string, unknown> };\n\nexport type AmuletContextResult = {\n amuletContext: ChoiceContext;\n disclosedContracts: DisclosedContract[];\n externalPartyAmuletRulesCid: string;\n};\n\n// The probe (amount 0, sender = receiver = admin) never executes — it only fetches context; 1-hour window is ample.\nconst CONTEXT_PROBE_EXECUTE_BEFORE_WINDOW_MS = 60 * 60 * 1000;\n\ntype AmuletContextResponse = {\n choiceContext: {\n disclosedContracts: DisclosedContract[];\n choiceContextData: ChoiceContext;\n };\n};\n\n/** Amulet ChoiceContext from the validator scan-proxy — same call for all fee-bearing choices. */\nexport const fetchAmuletContext = async (\n walletUrl: string,\n token: string,\n instrumentId: InstrumentId,\n): Promise<{ amuletContext: ChoiceContext; disclosedContracts: DisclosedContract[] }> => {\n const now = new Date();\n const later = new Date(now.getTime() + CONTEXT_PROBE_EXECUTE_BEFORE_WINDOW_MS);\n\n const response = await fetch(\n new URL(\n '/api/validator/v0/scan-proxy/registry/transfer-instruction/v1/transfer-factory',\n walletUrl,\n ),\n {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n choiceArguments: {\n expectedAdmin: instrumentId.admin,\n transfer: {\n sender: instrumentId.admin,\n receiver: instrumentId.admin,\n amount: '0',\n instrumentId,\n requestedAt: now.toISOString(),\n executeBefore: later.toISOString(),\n inputHoldingCids: [],\n meta: { values: {} },\n },\n extraArgs: { context: { values: {} }, meta: { values: {} } },\n },\n }),\n },\n );\n\n if (!response.ok) {\n const text = await response.text();\n throw new CantonProtocolError(`Failed to get amulet context: ${response.status} ${text}`);\n }\n\n const data = (await response.json()) as AmuletContextResponse;\n const { disclosedContracts, choiceContextData: amuletContext } = data.choiceContext;\n\n return { amuletContext, disclosedContracts };\n};\n\n/** Injects ExternalPartyAmuletRules cid into the ChoiceContext — required by every flow hitting FeeUtils.validateContext. */\nexport const injectExternalPartyAmuletRules = (\n amuletContext: ChoiceContext,\n disclosedContracts: DisclosedContract[],\n): { amuletContext: ChoiceContext; externalPartyAmuletRulesCid: string } => {\n const externalRulesContract = disclosedContracts.find((contract) =>\n contract.templateId?.includes('ExternalPartyAmuletRules'),\n );\n\n if (!externalRulesContract) {\n throw new NonRetryableError(\n 'ExternalPartyAmuletRules not found in disclosed contracts from amulet context',\n );\n }\n\n return {\n amuletContext: {\n values: {\n ...amuletContext.values,\n 'external-party-amulet-rules': {\n tag: 'AV_ContractId',\n value: externalRulesContract.contractId,\n },\n },\n },\n externalPartyAmuletRulesCid: externalRulesContract.contractId,\n };\n};\n\n/** Fetch the DSO party id from the validator scan-proxy API. */\nexport const fetchDsoParty = async (walletUrl: string, token: string): Promise<string> => {\n const response = await fetch(new URL('/api/validator/v0/scan-proxy/dso-party-id', walletUrl), {\n headers: { Authorization: `Bearer ${token}` },\n });\n if (!response.ok) {\n throw new CantonProtocolError(`Failed to get DSO party: ${response.status}`);\n }\n const data = (await response.json()) as { dso_party_id: string };\n return data.dso_party_id;\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { createContractAddressResolver } from './VAFLUPQJ.js';
|
|
2
1
|
import { substituteRefsToCids } from './57KDDFEU.js';
|
|
3
|
-
import {
|
|
2
|
+
import { createContractAddressResolver } from './VAFLUPQJ.js';
|
|
3
|
+
import { AMULET_INSTRUMENT_ID } from './DSYVONFP.js';
|
|
4
4
|
import { __name } from './VUOMXK5T.js';
|
|
5
5
|
|
|
6
6
|
// src/refresh/resolve.ts
|
|
@@ -67,5 +67,5 @@ var resolveCantonTransaction = /* @__PURE__ */ __name(async ({ unresolvedCommand
|
|
|
67
67
|
}, "resolveCantonTransaction");
|
|
68
68
|
|
|
69
69
|
export { resolveCantonTransaction };
|
|
70
|
-
//# sourceMappingURL=
|
|
71
|
-
//# sourceMappingURL=
|
|
70
|
+
//# sourceMappingURL=FFZGONTK.js.map
|
|
71
|
+
//# sourceMappingURL=FFZGONTK.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/refresh/resolve.ts"],"names":["resolveCantonTransaction","unresolvedCommands","unresolvedDisclosedContracts","senderParty","signingParties","client","nextDisclosed","disclosedContractIds","Set","map","contractId","appendDisclosures","disclosures","disclosure","has","add","push","resolveActiveContractId","resolveActiveContractIds","requireSenderParty","createContractAddressResolver","amuletBundlePromise","getAmuletBundle","dsoParty","getDsoParty","amuletContext","disclosedContracts","bundle","externalPartyAmuletRulesCid","getAmuletContextWithExternalRules","admin","id","AMULET_INSTRUMENT_ID","resolveRef","ref","type","resolvedCommands","substituteRefsToCids","resolvedDisclosedContracts","index","length","commands"],"mappings":"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","file":"
|
|
1
|
+
{"version":3,"sources":["../src/refresh/resolve.ts"],"names":["resolveCantonTransaction","unresolvedCommands","unresolvedDisclosedContracts","senderParty","signingParties","client","nextDisclosed","disclosedContractIds","Set","map","contractId","appendDisclosures","disclosures","disclosure","has","add","push","resolveActiveContractId","resolveActiveContractIds","requireSenderParty","createContractAddressResolver","amuletBundlePromise","getAmuletBundle","dsoParty","getDsoParty","amuletContext","disclosedContracts","bundle","externalPartyAmuletRulesCid","getAmuletContextWithExternalRules","admin","id","AMULET_INSTRUMENT_ID","resolveRef","ref","type","resolvedCommands","substituteRefsToCids","resolvedDisclosedContracts","index","length","commands"],"mappings":"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","file":"FFZGONTK.js","sourcesContent":["import { AMULET_INSTRUMENT_ID, type ChoiceContext } from '../client/amulet';\nimport type { ICantonClient } from '../client/interface';\nimport type { CantonDeferredValue } from '../deferredValue';\nimport type { CantonCommands, CantonDisclosedContracts } from '../transaction';\nimport { createContractAddressResolver } from './address-resolver';\nimport { substituteRefsToCids } from './reverse-substitute';\n\nexport interface ResolveCantonAddressParams {\n unresolvedCommands: CantonCommands;\n unresolvedDisclosedContracts: CantonDisclosedContracts;\n senderParty?: string;\n /** A contract is only disclosed when none of these parties is already a stakeholder on it. */\n signingParties: string[];\n client: ICantonClient;\n}\n\nexport const resolveCantonTransaction = async ({\n unresolvedCommands,\n unresolvedDisclosedContracts,\n senderParty,\n signingParties,\n client,\n}: ResolveCantonAddressParams): Promise<{\n commands: CantonCommands;\n disclosedContracts: CantonDisclosedContracts;\n}> => {\n const nextDisclosed = [...unresolvedDisclosedContracts];\n const disclosedContractIds = new Set(\n unresolvedDisclosedContracts.map(({ contractId }) => contractId),\n );\n const appendDisclosures = (disclosures: CantonDisclosedContracts): void => {\n for (const disclosure of disclosures) {\n if (!disclosedContractIds.has(disclosure.contractId)) {\n disclosedContractIds.add(disclosure.contractId);\n nextDisclosed.push(disclosure);\n }\n }\n };\n\n const { resolveActiveContractId, resolveActiveContractIds, requireSenderParty } =\n createContractAddressResolver({\n client,\n senderParty,\n signingParties,\n appendDisclosures,\n });\n\n let amuletBundlePromise:\n | Promise<{\n amuletContext: ChoiceContext;\n externalPartyAmuletRulesCid: string;\n }>\n | undefined;\n\n const getAmuletBundle = async () => {\n if (!amuletBundlePromise) {\n amuletBundlePromise = (async () => {\n const dsoParty = await client.getDsoParty();\n const {\n amuletContext,\n disclosedContracts: bundle,\n externalPartyAmuletRulesCid,\n } = await client.getAmuletContextWithExternalRules({\n admin: dsoParty,\n id: AMULET_INSTRUMENT_ID,\n });\n appendDisclosures(bundle);\n return { amuletContext, externalPartyAmuletRulesCid };\n })();\n }\n return amuletBundlePromise;\n };\n\n const resolveRef = async (ref: CantonDeferredValue): Promise<unknown> => {\n switch (ref.type) {\n case 'senderParty':\n return requireSenderParty(ref.type);\n case 'activeContractId':\n return resolveActiveContractId(ref);\n case 'activeContractIds':\n return resolveActiveContractIds(ref);\n case 'amuletRulesCid':\n return (await getAmuletBundle()).externalPartyAmuletRulesCid;\n case 'amuletContext':\n return (await getAmuletBundle()).amuletContext;\n }\n };\n\n const resolvedCommands = await substituteRefsToCids(unresolvedCommands, resolveRef);\n const resolvedDisclosedContracts: CantonDisclosedContracts = [];\n for (let index = 0; index < nextDisclosed.length; index++) {\n resolvedDisclosedContracts.push(\n await substituteRefsToCids(nextDisclosed[index]!, resolveRef),\n );\n }\n\n return {\n commands: resolvedCommands,\n disclosedContracts: resolvedDisclosedContracts,\n };\n};\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { DefaultApi } from './TZTIULG5.js';
|
|
2
2
|
import { JsActiveContractFromJSON } from './NIN7X4D3.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { ResponseError } from './KBNUN3MF.js';
|
|
4
|
+
import { fetchDsoParty, fetchAmuletContext, injectExternalPartyAmuletRules } from './DSYVONFP.js';
|
|
5
|
+
import { CantonProtocolError, cantonApiErrorFromResponse, CantonTransportError, CantonApiError } from './3K5JL2TP.js';
|
|
5
6
|
import { __name } from './VUOMXK5T.js';
|
|
6
7
|
import { once } from 'es-toolkit';
|
|
7
8
|
import { randomUUID } from 'crypto';
|
|
@@ -53,32 +54,18 @@ var CantonClient = class {
|
|
|
53
54
|
return obj[pascal] ?? obj[camel];
|
|
54
55
|
}
|
|
55
56
|
/**
|
|
56
|
-
*
|
|
57
|
-
*
|
|
57
|
+
* Run an API call, normalizing a thrown `ResponseError` into a `CantonApiError`
|
|
58
|
+
* that carries `errorCategory` (for retry classification). Other errors pass through.
|
|
58
59
|
*/
|
|
59
|
-
async #
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
async #invoke(call) {
|
|
61
|
+
try {
|
|
62
|
+
return await call();
|
|
63
|
+
} catch (err) {
|
|
64
|
+
if (err instanceof ResponseError) {
|
|
65
|
+
throw await cantonApiErrorFromResponse(err.response);
|
|
64
66
|
}
|
|
67
|
+
throw err;
|
|
65
68
|
}
|
|
66
|
-
return null;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Throw a CantonProtocolError with extracted error details from API response.
|
|
70
|
-
* Handles the common pattern of extracting JSON error details from failed requests.
|
|
71
|
-
*
|
|
72
|
-
* @param err - The caught error
|
|
73
|
-
* @param context - Description of the operation (e.g., "DAR upload", "Party allocation")
|
|
74
|
-
* @throws CantonProtocolError with extracted error details, or re-throws original error
|
|
75
|
-
*/
|
|
76
|
-
async #throwApiError(err, context) {
|
|
77
|
-
const body = await this.#extractErrorBody(err);
|
|
78
|
-
if (body) {
|
|
79
|
-
throw new CantonProtocolError(`${context} failed: ${JSON.stringify(body)}`);
|
|
80
|
-
}
|
|
81
|
-
throw err;
|
|
82
69
|
}
|
|
83
70
|
/**
|
|
84
71
|
* Build party-based filter object for event queries.
|
|
@@ -152,7 +139,7 @@ var CantonClient = class {
|
|
|
152
139
|
* Returns all connected synchronizer IDs.
|
|
153
140
|
*/
|
|
154
141
|
async connectedSynchronizers() {
|
|
155
|
-
const response = await this.#api.getV2StateConnectedSynchronizers();
|
|
142
|
+
const response = await this.#invoke(() => this.#api.getV2StateConnectedSynchronizers());
|
|
156
143
|
const synchronizers = response.connectedSynchronizers ?? [];
|
|
157
144
|
return synchronizers.map((s) => s.synchronizerId).filter((id) => !!id);
|
|
158
145
|
}
|
|
@@ -191,22 +178,16 @@ var CantonClient = class {
|
|
|
191
178
|
synchronizerId
|
|
192
179
|
};
|
|
193
180
|
try {
|
|
194
|
-
return await this.#api.postV2Dars(request);
|
|
181
|
+
return await this.#invoke(() => this.#api.postV2Dars(request));
|
|
195
182
|
} catch (err) {
|
|
196
|
-
if (opts.skipIfVetted) {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
reason: "already_vetted",
|
|
203
|
-
details: body2
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
throw new CantonProtocolError(`DAR upload failed: ${JSON.stringify(body2)}`);
|
|
207
|
-
}
|
|
183
|
+
if (opts.skipIfVetted && err instanceof CantonApiError && err.code === "KNOWN_PACKAGE_VERSION") {
|
|
184
|
+
return {
|
|
185
|
+
skipped: true,
|
|
186
|
+
reason: "already_vetted",
|
|
187
|
+
details: err.body
|
|
188
|
+
};
|
|
208
189
|
}
|
|
209
|
-
throw
|
|
190
|
+
throw err;
|
|
210
191
|
}
|
|
211
192
|
}
|
|
212
193
|
/**
|
|
@@ -227,12 +208,12 @@ var CantonClient = class {
|
|
|
227
208
|
synchronizerId: opts.synchronizerId
|
|
228
209
|
};
|
|
229
210
|
if (!request.synchronizerId) {
|
|
230
|
-
return this.#ensureSynchronizerId().then((synchronizerId) => this.#api.postV2DarsValidate({
|
|
211
|
+
return this.#ensureSynchronizerId().then((synchronizerId) => this.#invoke(() => this.#api.postV2DarsValidate({
|
|
231
212
|
...request,
|
|
232
213
|
synchronizerId
|
|
233
|
-
}));
|
|
214
|
+
})));
|
|
234
215
|
}
|
|
235
|
-
return this.#api.postV2DarsValidate(request);
|
|
216
|
+
return this.#invoke(() => this.#api.postV2DarsValidate(request));
|
|
236
217
|
}
|
|
237
218
|
// ─────────────────────────────────────────────────────────────────────────
|
|
238
219
|
// Party Management
|
|
@@ -245,10 +226,10 @@ var CantonClient = class {
|
|
|
245
226
|
* @returns Array of party IDs and pagination token
|
|
246
227
|
*/
|
|
247
228
|
async listParties(opts = {}) {
|
|
248
|
-
const response = await this.#api.getV2Parties({
|
|
229
|
+
const response = await this.#invoke(() => this.#api.getV2Parties({
|
|
249
230
|
pageSize: opts.pageSize,
|
|
250
231
|
pageToken: opts.pageToken
|
|
251
|
-
});
|
|
232
|
+
}));
|
|
252
233
|
return {
|
|
253
234
|
parties: response.partyDetails?.map((p) => p.party) ?? [],
|
|
254
235
|
nextPageToken: response.nextPageToken
|
|
@@ -264,9 +245,9 @@ var CantonClient = class {
|
|
|
264
245
|
* ourselves to preserve the actual variant payload.
|
|
265
246
|
*/
|
|
266
247
|
async listUserRights() {
|
|
267
|
-
const apiResponse = await this.#api.getV2UsersUserIdRightsRaw({
|
|
248
|
+
const apiResponse = await this.#invoke(() => this.#api.getV2UsersUserIdRightsRaw({
|
|
268
249
|
userId: this.#userId
|
|
269
|
-
});
|
|
250
|
+
}));
|
|
270
251
|
const raw = await apiResponse.raw.json();
|
|
271
252
|
return raw.rights ?? [];
|
|
272
253
|
}
|
|
@@ -305,19 +286,14 @@ var CantonClient = class {
|
|
|
305
286
|
*/
|
|
306
287
|
async allocateParty(partyIdHint, opts = {}) {
|
|
307
288
|
const synchronizerId = opts.synchronizerId ?? await this.#ensureSynchronizerId();
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
}
|
|
317
|
-
});
|
|
318
|
-
} catch (err) {
|
|
319
|
-
throw await this.#throwApiError(err, "Party allocation");
|
|
320
|
-
}
|
|
289
|
+
const response = await this.#invoke(() => this.#api.postV2Parties({
|
|
290
|
+
allocatePartyRequest: {
|
|
291
|
+
partyIdHint,
|
|
292
|
+
synchronizerId,
|
|
293
|
+
userId: opts.userId ?? "",
|
|
294
|
+
identityProviderId: opts.identityProviderId ?? ""
|
|
295
|
+
}
|
|
296
|
+
}));
|
|
321
297
|
const party = response.partyDetails?.party;
|
|
322
298
|
if (!party) {
|
|
323
299
|
throw new CantonProtocolError("Party allocation response missing party ID");
|
|
@@ -340,12 +316,7 @@ var CantonClient = class {
|
|
|
340
316
|
confirmationThreshold: args.confirmationThreshold
|
|
341
317
|
}
|
|
342
318
|
};
|
|
343
|
-
|
|
344
|
-
try {
|
|
345
|
-
response = await this.#api.postV2PartiesExternalGenerateTopology(request);
|
|
346
|
-
} catch (err) {
|
|
347
|
-
throw await this.#throwApiError(err, "External party topology generation");
|
|
348
|
-
}
|
|
319
|
+
const response = await this.#invoke(() => this.#api.postV2PartiesExternalGenerateTopology(request));
|
|
349
320
|
if (!response.partyId || !response.multiHash) {
|
|
350
321
|
throw new CantonProtocolError("generateExternalPartyTopology response missing partyId or multiHash");
|
|
351
322
|
}
|
|
@@ -375,12 +346,7 @@ var CantonClient = class {
|
|
|
375
346
|
identityProviderId: ""
|
|
376
347
|
}
|
|
377
348
|
};
|
|
378
|
-
|
|
379
|
-
try {
|
|
380
|
-
response = await this.#api.postV2PartiesExternalAllocate(request);
|
|
381
|
-
} catch (err) {
|
|
382
|
-
throw await this.#throwApiError(err, "External party allocation");
|
|
383
|
-
}
|
|
349
|
+
const response = await this.#invoke(() => this.#api.postV2PartiesExternalAllocate(request));
|
|
384
350
|
if (!response.partyId) {
|
|
385
351
|
throw new CantonProtocolError("allocateExternalParty response missing partyId");
|
|
386
352
|
}
|
|
@@ -393,28 +359,24 @@ var CantonClient = class {
|
|
|
393
359
|
* POST /v2/users/{userId}/rights
|
|
394
360
|
*/
|
|
395
361
|
async grantCanActAs(partyId) {
|
|
396
|
-
|
|
397
|
-
|
|
362
|
+
await this.#invoke(() => this.#api.postV2UsersUserIdRights({
|
|
363
|
+
userId: this.#userId,
|
|
364
|
+
grantUserRightsRequest: {
|
|
398
365
|
userId: this.#userId,
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
value: {
|
|
406
|
-
party: partyId
|
|
407
|
-
}
|
|
366
|
+
rights: [
|
|
367
|
+
{
|
|
368
|
+
kind: {
|
|
369
|
+
canActAs: {
|
|
370
|
+
value: {
|
|
371
|
+
party: partyId
|
|
408
372
|
}
|
|
409
373
|
}
|
|
410
374
|
}
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
throw await this.#throwApiError(err, `Grant canActAs for party ${partyId}`);
|
|
417
|
-
}
|
|
375
|
+
}
|
|
376
|
+
],
|
|
377
|
+
identityProviderId: ""
|
|
378
|
+
}
|
|
379
|
+
}));
|
|
418
380
|
}
|
|
419
381
|
/**
|
|
420
382
|
* Get the package ID for a package by name.
|
|
@@ -437,12 +399,7 @@ var CantonClient = class {
|
|
|
437
399
|
synchronizerId
|
|
438
400
|
}
|
|
439
401
|
};
|
|
440
|
-
|
|
441
|
-
try {
|
|
442
|
-
response = await this.#api.postV2InteractiveSubmissionPreferredPackages(request);
|
|
443
|
-
} catch (err) {
|
|
444
|
-
throw await this.#throwApiError(err, "Package lookup");
|
|
445
|
-
}
|
|
402
|
+
const response = await this.#invoke(() => this.#api.postV2InteractiveSubmissionPreferredPackages(request));
|
|
446
403
|
const packageRef = response.packageReferences?.find((ref) => ref.packageName === packageName);
|
|
447
404
|
if (!packageRef?.packageId) {
|
|
448
405
|
throw new CantonProtocolError(`Package "${packageName}" not found or not vetted for parties`);
|
|
@@ -460,7 +417,7 @@ var CantonClient = class {
|
|
|
460
417
|
async submit(actors, commands, opts = {}) {
|
|
461
418
|
const synchronizerId = await this.#ensureSynchronizerId();
|
|
462
419
|
const commandId = opts.commandId ?? randomUUID();
|
|
463
|
-
const ledgerEndResponse = await this.#api.getV2StateLedgerEnd();
|
|
420
|
+
const ledgerEndResponse = await this.#invoke(() => this.#api.getV2StateLedgerEnd());
|
|
464
421
|
const completionOffset = ledgerEndResponse.offset;
|
|
465
422
|
const request = {
|
|
466
423
|
jsCommands: {
|
|
@@ -473,11 +430,7 @@ var CantonClient = class {
|
|
|
473
430
|
disclosedContracts: opts.disclosedContracts
|
|
474
431
|
}
|
|
475
432
|
};
|
|
476
|
-
|
|
477
|
-
await this.#api.postV2CommandsAsyncSubmit(request);
|
|
478
|
-
} catch (err) {
|
|
479
|
-
throw await this.#throwApiError(err, "Command submission");
|
|
480
|
-
}
|
|
433
|
+
await this.#invoke(() => this.#api.postV2CommandsAsyncSubmit(request));
|
|
481
434
|
return {
|
|
482
435
|
commandId,
|
|
483
436
|
completionOffset
|
|
@@ -510,7 +463,7 @@ var CantonClient = class {
|
|
|
510
463
|
limit,
|
|
511
464
|
streamIdleTimeoutMs
|
|
512
465
|
};
|
|
513
|
-
const rawResponse = await this.#api.postV2CommandsCompletionsRaw(request);
|
|
466
|
+
const rawResponse = await this.#invoke(() => this.#api.postV2CommandsCompletionsRaw(request));
|
|
514
467
|
const responseText = await rawResponse.raw.text();
|
|
515
468
|
const completions = JSON.parse(responseText);
|
|
516
469
|
for (const item of completions) {
|
|
@@ -587,7 +540,7 @@ var CantonClient = class {
|
|
|
587
540
|
}
|
|
588
541
|
}
|
|
589
542
|
};
|
|
590
|
-
const response = await this.#api.postV2EventsEventsByContractId(request);
|
|
543
|
+
const response = await this.#invoke(() => this.#api.postV2EventsEventsByContractId(request));
|
|
591
544
|
if (response.archived) return void 0;
|
|
592
545
|
return response.created?.createdEvent;
|
|
593
546
|
}
|
|
@@ -635,7 +588,7 @@ var CantonClient = class {
|
|
|
635
588
|
}
|
|
636
589
|
}
|
|
637
590
|
};
|
|
638
|
-
const response = await this.#api.postV2EventsEventsByContractId(request);
|
|
591
|
+
const response = await this.#invoke(() => this.#api.postV2EventsEventsByContractId(request));
|
|
639
592
|
return {
|
|
640
593
|
created: response.created?.createdEvent,
|
|
641
594
|
archived: response.archived?.archivedEvent
|
|
@@ -648,12 +601,12 @@ var CantonClient = class {
|
|
|
648
601
|
* @returns The full update response
|
|
649
602
|
*/
|
|
650
603
|
async fetchTransactionByUpdateId(updateId, parties) {
|
|
651
|
-
const response = await this.#api.postV2UpdatesUpdateByIdRaw({
|
|
604
|
+
const response = await this.#invoke(() => this.#api.postV2UpdatesUpdateByIdRaw({
|
|
652
605
|
getUpdateByIdRequest: {
|
|
653
606
|
updateId,
|
|
654
607
|
updateFormat: this.#buildUpdateFormat(parties)
|
|
655
608
|
}
|
|
656
|
-
});
|
|
609
|
+
}));
|
|
657
610
|
const updateResponse = await response.raw.json();
|
|
658
611
|
return this.#parseTransactionFromUpdate(updateResponse, `Update ${updateId} is not a transaction`);
|
|
659
612
|
}
|
|
@@ -664,12 +617,12 @@ var CantonClient = class {
|
|
|
664
617
|
* @returns The full transaction including recordTime
|
|
665
618
|
*/
|
|
666
619
|
async fetchTransactionByOffset(offset, parties) {
|
|
667
|
-
const response = await this.#api.postV2UpdatesUpdateByOffsetRaw({
|
|
620
|
+
const response = await this.#invoke(() => this.#api.postV2UpdatesUpdateByOffsetRaw({
|
|
668
621
|
getUpdateByOffsetRequest: {
|
|
669
622
|
offset,
|
|
670
623
|
updateFormat: this.#buildUpdateFormat(parties)
|
|
671
624
|
}
|
|
672
|
-
});
|
|
625
|
+
}));
|
|
673
626
|
const updateResponse = await response.raw.json();
|
|
674
627
|
return this.#parseTransactionFromUpdate(updateResponse, `Update at offset ${offset} is not a transaction`);
|
|
675
628
|
}
|
|
@@ -707,12 +660,7 @@ var CantonClient = class {
|
|
|
707
660
|
packageIdSelectionPreference: []
|
|
708
661
|
}
|
|
709
662
|
};
|
|
710
|
-
|
|
711
|
-
try {
|
|
712
|
-
response = await this.#api.postV2InteractiveSubmissionPrepare(request);
|
|
713
|
-
} catch (error) {
|
|
714
|
-
throw await this.#throwApiError(error, "Interactive submission prepare");
|
|
715
|
-
}
|
|
663
|
+
const response = await this.#invoke(() => this.#api.postV2InteractiveSubmissionPrepare(request));
|
|
716
664
|
const validated = this.#validatePrepareResponse(response);
|
|
717
665
|
return {
|
|
718
666
|
...validated,
|
|
@@ -726,7 +674,7 @@ var CantonClient = class {
|
|
|
726
674
|
* The generic type T flows from prepareForSigning() for type documentation.
|
|
727
675
|
*/
|
|
728
676
|
async submitSigned(prepared, signatures) {
|
|
729
|
-
const ledgerEndResponse = await this.#api.getV2StateLedgerEnd();
|
|
677
|
+
const ledgerEndResponse = await this.#invoke(() => this.#api.getV2StateLedgerEnd());
|
|
730
678
|
const completionOffset = ledgerEndResponse.offset;
|
|
731
679
|
const request = {
|
|
732
680
|
jsExecuteSubmissionRequest: {
|
|
@@ -758,11 +706,7 @@ var CantonClient = class {
|
|
|
758
706
|
hashingSchemeVersion: prepared.hashingSchemeVersion
|
|
759
707
|
}
|
|
760
708
|
};
|
|
761
|
-
|
|
762
|
-
await this.#api.postV2InteractiveSubmissionExecute(request);
|
|
763
|
-
} catch (error) {
|
|
764
|
-
throw await this.#throwApiError(error, "Interactive submission execute");
|
|
765
|
-
}
|
|
709
|
+
await this.#invoke(() => this.#api.postV2InteractiveSubmissionExecute(request));
|
|
766
710
|
return {
|
|
767
711
|
commandId: prepared.commandId,
|
|
768
712
|
completionOffset
|
|
@@ -775,7 +719,7 @@ var CantonClient = class {
|
|
|
775
719
|
* Get the current ledger end offset.
|
|
776
720
|
*/
|
|
777
721
|
async getLedgerEndOffset() {
|
|
778
|
-
const response = await this.#api.getV2StateLedgerEnd();
|
|
722
|
+
const response = await this.#invoke(() => this.#api.getV2StateLedgerEnd());
|
|
779
723
|
return response.offset;
|
|
780
724
|
}
|
|
781
725
|
/**
|
|
@@ -825,7 +769,7 @@ var CantonClient = class {
|
|
|
825
769
|
cumulative: cumulativeFilter
|
|
826
770
|
}
|
|
827
771
|
]));
|
|
828
|
-
const rawResponse = await this.#api.postV2StateActiveContractsRaw({
|
|
772
|
+
const rawResponse = await this.#invoke(() => this.#api.postV2StateActiveContractsRaw({
|
|
829
773
|
getActiveContractsRequest: {
|
|
830
774
|
filter: {
|
|
831
775
|
filtersByParty
|
|
@@ -834,7 +778,7 @@ var CantonClient = class {
|
|
|
834
778
|
activeAtOffset: offset
|
|
835
779
|
},
|
|
836
780
|
limit: opts?.limit
|
|
837
|
-
});
|
|
781
|
+
}));
|
|
838
782
|
const rawJson = await rawResponse.raw.json();
|
|
839
783
|
return rawJson.map((item) => item.contractEntry?.JsActiveContract).filter((contract) => contract != null).map((contract) => JsActiveContractFromJSON(contract));
|
|
840
784
|
}
|
|
@@ -862,7 +806,7 @@ var CantonClient = class {
|
|
|
862
806
|
},
|
|
863
807
|
verbose: false
|
|
864
808
|
};
|
|
865
|
-
const rawResponse = await this.#api.postV2UpdatesRaw({
|
|
809
|
+
const rawResponse = await this.#invoke(() => this.#api.postV2UpdatesRaw({
|
|
866
810
|
getUpdatesRequest: {
|
|
867
811
|
beginExclusive,
|
|
868
812
|
endInclusive,
|
|
@@ -875,7 +819,7 @@ var CantonClient = class {
|
|
|
875
819
|
}
|
|
876
820
|
},
|
|
877
821
|
limit: opts?.limit
|
|
878
|
-
});
|
|
822
|
+
}));
|
|
879
823
|
const updateResponses = await rawResponse.raw.json();
|
|
880
824
|
return updateResponses.map((response) => response.update);
|
|
881
825
|
}
|
|
@@ -965,5 +909,5 @@ var CantonClient = class {
|
|
|
965
909
|
};
|
|
966
910
|
|
|
967
911
|
export { CantonClient };
|
|
968
|
-
//# sourceMappingURL=
|
|
969
|
-
//# sourceMappingURL=
|
|
912
|
+
//# sourceMappingURL=HTVAEYFB.js.map
|
|
913
|
+
//# sourceMappingURL=HTVAEYFB.js.map
|