@layerzerolabs/common-canton 1.2.6 → 1.2.7
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 +642 -638
- package/.turbo/turbo-test.log +15 -49
- package/dist/{333Q6X6C.js → ST5U5WZ4.js} +3 -3
- package/dist/{333Q6X6C.js.map → ST5U5WZ4.js.map} +1 -1
- package/dist/{QRFMJ32P.js → VAFLUPQJ.js} +5 -5
- package/dist/VAFLUPQJ.js.map +1 -0
- package/dist/index.js +5 -5
- package/dist/refresh/address-resolver.d.ts +7 -0
- package/dist/refresh/address-resolver.d.ts.map +1 -1
- package/dist/refresh/address-resolver.js +1 -1
- package/dist/refresh/index.js +3 -3
- package/dist/refresh/resolve.js +2 -2
- package/package.json +11 -10
- package/src/refresh/address-resolver.ts +12 -2
- package/dist/QRFMJ32P.js.map +0 -1
package/.turbo/turbo-test.log
CHANGED
|
@@ -8,56 +8,22 @@
|
|
|
8
8
|
|
|
9
9
|
✅ dpm-3.4.8-openapi-generator-7.21.0
|
|
10
10
|
🔧 openapi-generator version: 7.21.0
|
|
11
|
-
📦 Using scoped workspace: /tmp/lz-scoped-workspace-
|
|
11
|
+
📦 Using scoped workspace: /tmp/lz-scoped-workspace-qabI51
|
|
12
12
|
📦 Copied 13 workspace package source(s)
|
|
13
13
|
📦 No scoped-workspace pruner configured; using unpruned package-level source copy fallback.
|
|
14
|
-
(node:
|
|
14
|
+
(node:109778) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///home/runner/work/monorepo-internal/monorepo-internal/configs/vm-tooling/values/docker-image-repo.ts is not specified and it doesn't parse as CommonJS.
|
|
15
15
|
Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
|
|
16
16
|
To eliminate this warning, add "type": "module" to /home/runner/work/monorepo-internal/monorepo-internal/package.json.
|
|
17
17
|
(Use `node --trace-warnings ...` to show where the warning was created)
|
|
18
18
|
📦 Docker volumes:
|
|
19
|
-
-v /tmp/lz-scoped-workspace-
|
|
19
|
+
-v /tmp/lz-scoped-workspace-qabI51:/workspace
|
|
20
20
|
-v /home/runner/work/monorepo-internal/monorepo-internal/packages/vms/canton/common:/workspace/packages/vms/canton/common
|
|
21
21
|
-v /home/runner/work/monorepo-internal/monorepo-internal/node_modules/.pnpm:/workspace/node_modules/.pnpm:ro
|
|
22
22
|
$ docker image inspect --format {{.Architecture}} 438003944538.dkr.ecr.us-east-1.amazonaws.com/layerzerolabs/canton-openapi-tooling:openapi-generator-7.21.0-patch-2
|
|
23
|
-
|
|
24
|
-
📥 Pulling Docker image from: 438003944538.dkr.ecr.us-east-1.amazonaws.com/layerzerolabs/canton-openapi-tooling:openapi-generator-7.21.0-patch-2
|
|
25
|
-
$ docker pull 438003944538.dkr.ecr.us-east-1.amazonaws.com/layerzerolabs/canton-openapi-tooling:openapi-generator-7.21.0-patch-2
|
|
26
|
-
openapi-generator-7.21.0-patch-2: Pulling from layerzerolabs/canton-openapi-tooling
|
|
27
|
-
17639c486e57: Pulling fs layer
|
|
28
|
-
051d551be118: Pulling fs layer
|
|
29
|
-
18a60288e8be: Pulling fs layer
|
|
30
|
-
dfe8d6e6f390: Pulling fs layer
|
|
31
|
-
e41c3f01e557: Pulling fs layer
|
|
32
|
-
fe131d3b296c: Pulling fs layer
|
|
33
|
-
dfe8d6e6f390: Waiting
|
|
34
|
-
e41c3f01e557: Waiting
|
|
35
|
-
fe131d3b296c: Waiting
|
|
36
|
-
18a60288e8be: Verifying Checksum
|
|
37
|
-
18a60288e8be: Download complete
|
|
38
|
-
17639c486e57: Verifying Checksum
|
|
39
|
-
17639c486e57: Download complete
|
|
40
|
-
e41c3f01e557: Verifying Checksum
|
|
41
|
-
e41c3f01e557: Download complete
|
|
42
|
-
dfe8d6e6f390: Verifying Checksum
|
|
43
|
-
dfe8d6e6f390: Download complete
|
|
44
|
-
fe131d3b296c: Verifying Checksum
|
|
45
|
-
fe131d3b296c: Download complete
|
|
46
|
-
051d551be118: Verifying Checksum
|
|
47
|
-
051d551be118: Download complete
|
|
48
|
-
17639c486e57: Pull complete
|
|
49
|
-
051d551be118: Pull complete
|
|
50
|
-
18a60288e8be: Pull complete
|
|
51
|
-
dfe8d6e6f390: Pull complete
|
|
52
|
-
e41c3f01e557: Pull complete
|
|
53
|
-
fe131d3b296c: Pull complete
|
|
54
|
-
Digest: sha256:9f4b76e7e635939d8107dbe5cf56b881ece20ecb08873f25e5e9d66b2955b5cb
|
|
55
|
-
Status: Downloaded newer image for 438003944538.dkr.ecr.us-east-1.amazonaws.com/layerzerolabs/canton-openapi-tooling:openapi-generator-7.21.0-patch-2
|
|
56
|
-
438003944538.dkr.ecr.us-east-1.amazonaws.com/layerzerolabs/canton-openapi-tooling:openapi-generator-7.21.0-patch-2
|
|
57
|
-
✅ Successfully pulled: 438003944538.dkr.ecr.us-east-1.amazonaws.com/layerzerolabs/canton-openapi-tooling:openapi-generator-7.21.0-patch-2
|
|
23
|
+
✅ Using cached Docker image: 438003944538.dkr.ecr.us-east-1.amazonaws.com/layerzerolabs/canton-openapi-tooling:openapi-generator-7.21.0-patch-2 (amd64)
|
|
58
24
|
👤 Running container as UID:GID 1001:1001
|
|
59
25
|
📜 Executing custom script: set -euo pipefail && rm -rf "src/open-api" && canton-openapi-generator generate -g typescript-fetch -o "src/open-api" --additional-properties=importFileExtension=.js
|
|
60
|
-
$ docker run --rm --add-host=host.docker.internal:host-gateway -e LOCAL_UID=1001 -e LOCAL_GID=1001 -v /tmp/lz-scoped-workspace-
|
|
26
|
+
$ docker run --rm --add-host=host.docker.internal:host-gateway -e LOCAL_UID=1001 -e LOCAL_GID=1001 -v /tmp/lz-scoped-workspace-qabI51:/workspace -v /home/runner/work/monorepo-internal/monorepo-internal/packages/vms/canton/common:/workspace/packages/vms/canton/common -v /home/runner/work/monorepo-internal/monorepo-internal/node_modules/.pnpm:/workspace/node_modules/.pnpm:ro -w /workspace/packages/vms/canton/common 438003944538.dkr.ecr.us-east-1.amazonaws.com/layerzerolabs/canton-openapi-tooling:openapi-generator-7.21.0-patch-2 bash -c $'set -euo pipefail && rm -rf "src/open-api" && canton-openapi-generator generate -g typescript-fetch -o "src/open-api" --additional-properties=importFileExtension=.js'
|
|
61
27
|
[main] INFO o.o.codegen.DefaultGenerator - Generating with dryRun=false
|
|
62
28
|
[main] INFO o.o.c.ignore.CodegenIgnoreProcessor - Output directory (/workspace/packages/vms/canton/common/src/open-api) does not exist, or is inaccessible. No file (.openapi-generator-ignore) will be evaluated.
|
|
63
29
|
[main] INFO o.o.codegen.DefaultGenerator - OpenAPI Generator: typescript-fetch (client)
|
|
@@ -736,25 +702,25 @@ $ docker run --rm --add-host=host.docker.internal:host-gateway -e LOCAL_UID=1001
|
|
|
736
702
|
# We appreciate your support! Please consider donation to help us maintain this project. #
|
|
737
703
|
# https://opencollective.com/openapi_generator/donate #
|
|
738
704
|
############################################################################################
|
|
739
|
-
⏳ bash -c set -euo pipefail && rm -rf "src/open-api" && canton-openapi-generator generate -g typescript-fetch -o "src/open-api" --additional-properties=importFileExtension=.js:
|
|
705
|
+
⏳ bash -c set -euo pipefail && rm -rf "src/open-api" && canton-openapi-generator generate -g typescript-fetch -o "src/open-api" --additional-properties=importFileExtension=.js: 3.397s
|
|
740
706
|
[33mTesting types with tsc and vue-tsc is an experimental feature.
|
|
741
707
|
Breaking changes might not follow SemVer, please pin Vitest's version when using it.[39m
|
|
742
708
|
|
|
743
709
|
[1m[46m RUN [49m[22m [36mv3.2.6 [39m[90m/home/runner/work/monorepo-internal/monorepo-internal/packages/vms/canton/common[39m
|
|
744
710
|
|
|
745
|
-
[32m✓[39m test/provider.test.ts [2m([22m[
|
|
746
|
-
[32m✓[39m test/
|
|
747
|
-
[32m✓[39m test/auth/
|
|
748
|
-
[32m✓[39m test/crypto.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m
|
|
749
|
-
[32m✓[39m test/client/amulet.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m
|
|
750
|
-
[32m✓[39m test/daml-serde.test.ts [2m([22m[2m19 tests[22m[2m)[22m[32m
|
|
711
|
+
[32m✓[39m test/auth/local-token-provider.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 11[2mms[22m[39m
|
|
712
|
+
[32m✓[39m test/provider.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 24[2mms[22m[39m
|
|
713
|
+
[32m✓[39m test/auth/client-credentials-token-provider.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 17[2mms[22m[39m
|
|
714
|
+
[32m✓[39m test/crypto.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 7[2mms[22m[39m
|
|
715
|
+
[32m✓[39m test/client/amulet.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 7[2mms[22m[39m
|
|
716
|
+
[32m✓[39m test/daml-serde.test.ts [2m([22m[2m19 tests[22m[2m)[22m[32m 17[2mms[22m[39m
|
|
751
717
|
[90mstderr[2m | test/sdk.test.ts[2m > [22m[2mError Handling (Unhappy Paths)[2m > [22m[2mshould handle double archive error
|
|
752
718
|
[22m[39mMock miss: GET /v2/state/connected-synchronizers
|
|
753
719
|
|
|
754
720
|
[90mstderr[2m | test/sdk.test.ts[2m > [22m[2mError Handling (Unhappy Paths)[2m > [22m[2mshould handle unauthorized party error
|
|
755
721
|
[22m[39mMock miss: GET /v2/state/connected-synchronizers
|
|
756
722
|
|
|
757
|
-
[32m✓[39m test/sdk.test.ts [2m([22m[2m18 tests[22m[2m)[22m[32m
|
|
723
|
+
[32m✓[39m test/sdk.test.ts [2m([22m[2m18 tests[22m[2m)[22m[32m 28[2mms[22m[39m
|
|
758
724
|
[32m✓[39m [44m[1m TS [22m[49m test/sdk.test.ts [2m([22m[2m18 tests[22m[2m)[22m
|
|
759
725
|
[32m✓[39m [44m[1m TS [22m[49m test/auth/client-credentials-token-provider.test.ts [2m([22m[2m7 tests[22m[2m)[22m
|
|
760
726
|
[32m✓[39m [44m[1m TS [22m[49m test/daml-serde.test.ts [2m([22m[2m19 tests[22m[2m)[22m
|
|
@@ -766,6 +732,6 @@ Breaking changes might not follow SemVer, please pin Vitest's version when using
|
|
|
766
732
|
[2m Test Files [22m [1m[32m14 passed[39m[22m[90m (14)[39m
|
|
767
733
|
[2m Tests [22m [1m[32m132 passed[39m[22m[90m (132)[39m
|
|
768
734
|
[2mType Errors [22m [2mno errors[22m
|
|
769
|
-
[2m Start at [22m
|
|
770
|
-
[2m Duration [22m
|
|
735
|
+
[2m Start at [22m 22:07:22
|
|
736
|
+
[2m Duration [22m 4.02s[2m (transform 1.09s, setup 0ms, collect 1.84s, tests 112ms, environment 1ms, prepare 1.39s, typecheck 3.63s)[22m
|
|
771
737
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { createContractAddressResolver } from './VAFLUPQJ.js';
|
|
1
2
|
import { substituteRefsToCids } from './57KDDFEU.js';
|
|
2
|
-
import { createContractAddressResolver } from './QRFMJ32P.js';
|
|
3
3
|
import { AMULET_INSTRUMENT_ID } from './4G6A7TFX.js';
|
|
4
4
|
import { __name } from './VUOMXK5T.js';
|
|
5
5
|
|
|
@@ -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=ST5U5WZ4.js.map
|
|
71
|
+
//# sourceMappingURL=ST5U5WZ4.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":"ST5U5WZ4.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,14 +1,14 @@
|
|
|
1
1
|
import { __name } from './VUOMXK5T.js';
|
|
2
2
|
import { NonRetryableError } from '@layerzerolabs/common-error-utils';
|
|
3
3
|
|
|
4
|
+
var isConcreteActiveContractRef = /* @__PURE__ */ __name((ref) => (ref.type === "activeContractId" || ref.type === "activeContractIds") && ref.partyToFilter !== "sender", "isConcreteActiveContractRef");
|
|
4
5
|
var matchesContractStateFilter = /* @__PURE__ */ __name((contract, contractStateFilter) => {
|
|
5
6
|
if (!contractStateFilter) return true;
|
|
6
7
|
const createArgument = contract.createdEvent.createArgument;
|
|
7
8
|
return Object.entries(contractStateFilter).every(([key, value]) => JSON.stringify(createArgument[key]) === JSON.stringify(value));
|
|
8
9
|
}, "matchesContractStateFilter");
|
|
9
10
|
var isRefAlive = /* @__PURE__ */ __name(async (client, ref) => {
|
|
10
|
-
if (ref
|
|
11
|
-
if (ref.partyToFilter === "sender") return false;
|
|
11
|
+
if (!isConcreteActiveContractRef(ref)) return false;
|
|
12
12
|
const contracts = await queryLiveContractsForRef(client, ref.partyToFilter.party, ref);
|
|
13
13
|
return ref.type === "activeContractId" ? contracts.length === 1 : contracts.length > 0;
|
|
14
14
|
}, "isRefAlive");
|
|
@@ -98,6 +98,6 @@ var createContractAddressResolver = /* @__PURE__ */ __name((deps) => {
|
|
|
98
98
|
};
|
|
99
99
|
}, "createContractAddressResolver");
|
|
100
100
|
|
|
101
|
-
export { createContractAddressResolver, isRefAlive, matchesContractStateFilter, queryLiveContractIdsForRef, queryLiveContractsForRef };
|
|
102
|
-
//# sourceMappingURL=
|
|
103
|
-
//# sourceMappingURL=
|
|
101
|
+
export { createContractAddressResolver, isConcreteActiveContractRef, isRefAlive, matchesContractStateFilter, queryLiveContractIdsForRef, queryLiveContractsForRef };
|
|
102
|
+
//# sourceMappingURL=VAFLUPQJ.js.map
|
|
103
|
+
//# sourceMappingURL=VAFLUPQJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/refresh/address-resolver.ts"],"names":["isConcreteActiveContractRef","ref","type","partyToFilter","matchesContractStateFilter","contract","contractStateFilter","createArgument","createdEvent","Object","entries","every","key","value","JSON","stringify","isRefAlive","client","contracts","queryLiveContractsForRef","party","length","offset","getLedgerEndOffset","queryActiveContracts","templateIds","templateId","filter","queryLiveContractIdsForRef","senderParty","map","c","contractId","createContractAddressResolver","deps","signingParties","appendDisclosures","requireSender","NonRetryableError","resolveQueryParty","queryCache","Map","queryAsParty","cacheKey","cached","get","query","set","needsDisclosure","stakeholders","Set","signatories","observers","some","has","discloseContracts","toDisclose","disclosures","Promise","all","disclosure","createDisclosure","resolveActiveContractId","resolveActiveContractIds","requireSenderParty"],"mappings":";;;AAmBO,IAAMA,2BAAAA,mBAA8B,MAAA,CAAA,CACvCC,GAAAA,KAAAA,CAECA,GAAAA,CAAIC,IAAAA,KAAS,kBAAA,IAAsBD,GAAAA,CAAIC,IAAAA,KAAS,mBAAA,KACjDD,GAAAA,CAAIE,aAAAA,KAAkB,QAAA,EAJiB,6BAAA;AAcpC,IAAMC,0BAAAA,mBAA6B,MAAA,CAAA,CACtCC,QAAAA,EACAC,mBAAAA,KAAAA;AAEA,EAAA,IAAI,CAACA,qBAAqB,OAAO,IAAA;AACjC,EAAA,MAAMC,cAAAA,GAAiBF,SAASG,YAAAA,CAAaD,cAAAA;AAC7C,EAAA,OAAOE,OAAOC,OAAAA,CAAQJ,mBAAAA,EAAqBK,KAAAA,CACvC,CAAC,CAACC,GAAAA,EAAKC,KAAAA,MAAWC,IAAAA,CAAKC,SAAAA,CAAUR,eAAeK,GAAAA,CAAI,MAAME,IAAAA,CAAKC,SAAAA,CAAUF,KAAAA,CAAAA,CAAAA;AAEjF,CAAA,EAT0C,4BAAA;AAWnC,IAAMG,UAAAA,mBAAa,MAAA,CAAA,OACtBC,MAAAA,EACAhB,GAAAA,KAAAA;AAEA,EAAA,IAAI,CAACD,2BAAAA,CAA4BC,GAAAA,CAAAA,EAAM,OAAO,KAAA;AAC9C,EAAA,MAAMiB,YAAY,MAAMC,wBAAAA,CAAyBF,QAAQhB,GAAAA,CAAIE,aAAAA,CAAciB,OAAOnB,GAAAA,CAAAA;AAClF,EAAA,OAAOA,IAAIC,IAAAA,KAAS,kBAAA,GAAqBgB,UAAUG,MAAAA,KAAW,CAAA,GAAIH,UAAUG,MAAAA,GAAS,CAAA;AACzF,CAAA,EAP0B,YAAA;AAUnB,IAAMF,wBAAAA,mBAA2B,MAAA,CAAA,OACpCF,MAAAA,EACAG,KAAAA,EACAnB,GAAAA,KAAAA;AAEA,EAAA,MAAMqB,MAAAA,GAAS,MAAML,MAAAA,CAAOM,kBAAAA,EAAkB;AAC9C,EAAA,OAAA,CACI,MAAMN,MAAAA,CAAOO,oBAAAA,CAAqBJ,KAAAA,EAAOE,MAAAA,EAAQ;IAAEG,WAAAA,EAAa;MAACxB,GAAAA,CAAIyB;;GAAY,CAAA,EACnFC,OAAO,CAACtB,QAAAA,KAAaD,2BAA2BC,QAAAA,EAAUJ,GAAAA,CAAIK,mBAAmB,CAAA,CAAA;AACvF,CAAA,EATwC,0BAAA;AAejC,IAAMsB,0BAAAA,mBAA6B,MAAA,CAAA,OACtCX,MAAAA,EACAhB,GAAAA,EACA4B,WAAAA,KAAAA;AAEA,EAAA,IAAI5B,IAAIC,IAAAA,KAAS,kBAAA,IAAsBD,IAAIC,IAAAA,KAAS,mBAAA,SAA4B,EAAA;AAChF,EAAA,MAAMkB,QAAQnB,GAAAA,CAAIE,aAAAA,KAAkB,QAAA,GAAW0B,WAAAA,GAAc5B,IAAIE,aAAAA,CAAciB,KAAAA;AAC/E,EAAA,IAAI,CAACA,KAAAA,EAAO,OAAO,EAAA;AACnB,EAAA,MAAMF,SAAAA,GAAY,MAAMC,wBAAAA,CAAyBF,MAAAA,EAAQG,OAAOnB,GAAAA,CAAAA;AAChE,EAAA,OAAOiB,UAAUY,GAAAA,CAAI,CAACC,CAAAA,KAAMA,CAAAA,CAAEvB,aAAawB,UAAU,CAAA;AACzD,CAAA,EAV0C,4BAAA;AAYnC,IAAMC,6BAAAA,2BAAiCC,IAAAA,KAAAA;AAC1C,EAAA,MAAM,EAAEjB,MAAAA,EAAQY,WAAAA,EAAaM,cAAAA,EAAgBC,mBAAiB,GAAKF,IAAAA;AAEnE,EAAA,MAAMG,aAAAA,2BAAiBX,UAAAA,KAAAA;AACnB,IAAA,IAAI,CAACG,WAAAA,EAAa;AACd,MAAA,MAAM,IAAIS,iBAAAA,CACN,CAAA,kBAAA,EAAqBZ,UAAAA,CAAAA,qDAAAA,CAAiE,CAAA;AAE9F,IAAA;AACA,IAAA,OAAOG,WAAAA;EACX,CAAA,EAPsB,eAAA,CAAA;AAStB,EAAA,MAAMU,iBAAAA,mBAAoB,MAAA,CAAA,CAAC,EAAEpC,aAAAA,EAAeuB,UAAAA,EAAU,KAClDvB,aAAAA,KAAkB,QAAA,GAAWkC,aAAAA,CAAcX,UAAAA,CAAAA,GAAcvB,aAAAA,CAAciB,KAAAA,EADjD,mBAAA,CAAA;AAG1B,EAAA,MAAMoB,UAAAA,uBAAiBC,GAAAA,EAAAA;AACvB,EAAA,MAAMC,YAAAA,iCAAsBzC,GAAAA,KAAAA;AACxB,IAAA,MAAMmB,KAAAA,GAAQmB,kBAAkBtC,GAAAA,CAAAA;AAChC,IAAA,MAAM0C,QAAAA,GAAW7B,KAAKC,SAAAA,CAAU;MAAE,GAAGd,GAAAA;AAAKmB,MAAAA;KAAM,CAAA;AAChD,IAAA,MAAMwB,MAAAA,GAASJ,UAAAA,CAAWK,GAAAA,CAAIF,QAAAA,CAAAA;AAC9B,IAAA,IAAIC,QAAQ,OAAOA,MAAAA;AAEnB,IAAA,MAAME,SAAS,YAAA;AACX,MAAA,MAAM5B,SAAAA,GAAY,MAAMC,wBAAAA,CAAyBF,MAAAA,EAAQG,OAAOnB,GAAAA,CAAAA;AAChE,MAAA,IAAIiB,SAAAA,CAAUG,WAAW,CAAA,EAAG;AACxB,QAAA,MAAM,IAAIiB,iBAAAA,CACN,CAAA,MAAA,EAASlB,KAAAA,CAAAA,qCAAAA,EAA6CnB,GAAAA,CAAIyB,UAAU,CAAA,CAAE,CAAA;AAE9E,MAAA;AACA,MAAA,OAAOR,SAAAA;IACX,CAAA,GAAA;AACAsB,IAAAA,UAAAA,CAAWO,GAAAA,CAAIJ,UAAUG,KAAAA,CAAAA;AACzB,IAAA,OAAOA,KAAAA;EACX,CAAA,EAjBqB,cAAA,CAAA;AAqBrB,EAAA,MAAME,eAAAA,2BAAmB3C,QAAAA,KAAAA;AACrB,IAAA,MAAM4C,YAAAA,uBAAmBC,GAAAA,CAAI;SACrB7C,QAAAA,CAASG,YAAAA,CAAa2C,eAAe,EAAA;SACrC9C,QAAAA,CAASG,YAAAA,CAAa4C,aAAa;AAC1C,KAAA,CAAA;AACD,IAAA,OAAO,CAACjB,eAAekB,IAAAA,CAAK,CAACjC,UAAU6B,YAAAA,CAAaK,GAAAA,CAAIlC,KAAAA,CAAAA,CAAAA;EAC5D,CAAA,EANwB,iBAAA,CAAA;AAQxB,EAAA,MAAMmC,iBAAAA,mBAAoB,MAAA,CAAA,OACtBtD,GAAAA,EACAiB,SAAAA,KAAAA;AAEA,IAAA,MAAMsC,UAAAA,GAAatC,SAAAA,CAAUS,MAAAA,CAAOqB,eAAAA,CAAAA;AACpC,IAAA,IAAIQ,UAAAA,CAAWnC,WAAW,CAAA,EAAG;AAE7B,IAAA,MAAMD,KAAAA,GAAQmB,kBAAkBtC,GAAAA,CAAAA;AAChC,IAAA,MAAMwD,cAAc,MAAMC,OAAAA,CAAQC,IAC9BH,UAAAA,CAAW1B,GAAAA,CAAI,OAAOzB,QAAAA,KAAAA;AAClB,MAAA,MAAM2B,UAAAA,GAAa3B,SAASG,YAAAA,CAAawB,UAAAA;AACzC,MAAA,MAAM4B,UAAAA,GAAa,MAAM3C,MAAAA,CAAO4C,gBAAAA,CAC5B7B,UAAAA,EACA;AAACZ,QAAAA;AAAM,OAAA,CAAA;AAEX,MAAA,IAAI,CAACwC,UAAAA,EAAY;AACb,QAAA,MAAM,IAAItB,iBAAAA,CACN,CAAA,mBAAA,EAAsBN,UAAAA,CAAAA,WAAAA,EAAwB/B,GAAAA,CAAIyB,UAAU,CAAA,yBAAA,CAAsB,CAAA;AAE1F,MAAA;AACA,MAAA,OAAOkC,UAAAA;AACX,IAAA,CAAA,CAAA,CAAA;AAEJxB,IAAAA,iBAAAA,CAAkBqB,WAAAA,CAAAA;EACtB,CAAA,EAxB0B,mBAAA,CAAA;AA0B1B,EAAA,MAAMK,uBAAAA,iCAAiC7D,GAAAA,KAAAA;AACnC,IAAA,MAAMiB,SAAAA,GAAY,MAAMwB,YAAAA,CAAazC,GAAAA,CAAAA;AACrC,IAAA,IAAIiB,SAAAA,CAAUG,WAAW,CAAA,EAAG;AACxB,MAAA,MAAM,IAAIiB,kBACN,CAAA,YAAA,EAAerC,GAAAA,CAAIyB,UAAU,CAAA,SAAA,EAAYR,SAAAA,CAAUG,MAAM,CAAA,gDAAA,CAAkD,CAAA;AAEnH,IAAA;AACA,IAAA,MAAMkC,iBAAAA,CAAkBtD,KAAKiB,SAAAA,CAAAA;AAC7B,IAAA,OAAOA,SAAAA,CAAU,CAAA,CAAA,CAAIV,YAAAA,CAAawB,UAAAA;EACtC,CAAA,EATgC,yBAAA,CAAA;AAWhC,EAAA,MAAM+B,wBAAAA,iCAAkC9D,GAAAA,KAAAA;AACpC,IAAA,MAAMiB,SAAAA,GAAY,MAAMwB,YAAAA,CAAazC,GAAAA,CAAAA;AACrC,IAAA,MAAMsD,iBAAAA,CAAkBtD,KAAKiB,SAAAA,CAAAA;AAC7B,IAAA,OAAOA,UAAUY,GAAAA,CAAI,CAACzB,QAAAA,KAAaA,QAAAA,CAASG,aAAawB,UAAU,CAAA;EACvE,CAAA,EAJiC,0BAAA,CAAA;AAMjC,EAAA,OAAO;AAAE8B,IAAAA,uBAAAA;AAAyBC,IAAAA,wBAAAA;IAA0BC,kBAAAA,EAAoB3B;AAAc,GAAA;AAClG,CAAA,EAzF6C,+BAAA","file":"VAFLUPQJ.js","sourcesContent":["import type { ContractId } from '@daml/types';\n\nimport { NonRetryableError } from '@layerzerolabs/common-error-utils';\n\nimport type { ICantonClient } from '../client/interface';\nimport type { CantonDeferredValue } from '../deferredValue';\nimport type { JsActiveContract } from '../open-api/models';\nimport type { CantonDisclosedContracts } from '../transaction';\n\nexport type ActiveContractRef = Extract<\n CantonDeferredValue,\n { type: 'activeContractId' | 'activeContractIds' }\n>;\n\n/** Active-contract ref whose handler party is concrete (not the `'sender'` sentinel). */\nexport type ConcreteActiveContractRef = ActiveContractRef & {\n partyToFilter: { party: string };\n};\n\nexport const isConcreteActiveContractRef = (\n ref: CantonDeferredValue,\n): ref is ConcreteActiveContractRef =>\n (ref.type === 'activeContractId' || ref.type === 'activeContractIds') &&\n ref.partyToFilter !== 'sender';\n\nexport interface ContractAddressResolverDeps {\n client: ICantonClient;\n senderParty?: string;\n /** A contract is only disclosed when none of these parties is already a stakeholder on it. */\n signingParties: string[];\n appendDisclosures: (disclosures: CantonDisclosedContracts) => void;\n}\n\nexport const matchesContractStateFilter = (\n contract: JsActiveContract,\n contractStateFilter: ActiveContractRef['contractStateFilter'],\n): boolean => {\n if (!contractStateFilter) return true;\n const createArgument = contract.createdEvent.createArgument as Record<string, unknown>;\n return Object.entries(contractStateFilter).every(\n ([key, value]) => JSON.stringify(createArgument[key]) === JSON.stringify(value),\n );\n};\n\nexport const isRefAlive = async (\n client: ICantonClient,\n ref: CantonDeferredValue,\n): Promise<boolean> => {\n if (!isConcreteActiveContractRef(ref)) return false;\n const contracts = await queryLiveContractsForRef(client, ref.partyToFilter.party, ref);\n return ref.type === 'activeContractId' ? contracts.length === 1 : contracts.length > 0;\n};\n\n/** partyToFilter: 'sender' is resolved per-caller — this function takes an already-resolved party string. */\nexport const queryLiveContractsForRef = async (\n client: ICantonClient,\n party: string,\n ref: ActiveContractRef,\n): Promise<JsActiveContract[]> => {\n const offset = await client.getLedgerEndOffset();\n return (\n await client.queryActiveContracts(party, offset, { templateIds: [ref.templateId] })\n ).filter((contract) => matchesContractStateFilter(contract, ref.contractStateFilter));\n};\n\n/**\n * Returns the contractIds of all live contracts matching ref.\n * Resolves 'sender' to senderParty when provided; returns [] if unresolvable.\n */\nexport const queryLiveContractIdsForRef = async (\n client: ICantonClient,\n ref: CantonDeferredValue,\n senderParty?: string,\n): Promise<string[]> => {\n if (ref.type !== 'activeContractId' && ref.type !== 'activeContractIds') return [];\n const party = ref.partyToFilter === 'sender' ? senderParty : ref.partyToFilter.party;\n if (!party) return [];\n const contracts = await queryLiveContractsForRef(client, party, ref);\n return contracts.map((c) => c.createdEvent.contractId);\n};\n\nexport const createContractAddressResolver = (deps: ContractAddressResolverDeps) => {\n const { client, senderParty, signingParties, appendDisclosures } = deps;\n\n const requireSender = (templateId: string): string => {\n if (!senderParty) {\n throw new NonRetryableError(\n `Refresh entry for ${templateId} needs a resolved sender party, but none was provided`,\n );\n }\n return senderParty;\n };\n\n const resolveQueryParty = ({ partyToFilter, templateId }: ActiveContractRef): string =>\n partyToFilter === 'sender' ? requireSender(templateId) : partyToFilter.party;\n\n const queryCache = new Map<string, Promise<JsActiveContract[]>>();\n const queryAsParty = async (ref: ActiveContractRef): Promise<JsActiveContract[]> => {\n const party = resolveQueryParty(ref);\n const cacheKey = JSON.stringify({ ...ref, party });\n const cached = queryCache.get(cacheKey);\n if (cached) return cached;\n\n const query = (async () => {\n const contracts = await queryLiveContractsForRef(client, party, ref);\n if (contracts.length === 0) {\n throw new NonRetryableError(\n `Party ${party} has no matching active contracts of ${ref.templateId}`,\n );\n }\n return contracts;\n })();\n queryCache.set(cacheKey, query);\n return query;\n };\n\n // A signing party that is already a stakeholder can see the contract on its\n // own stream, so only disclose to parties that aren't signatories/observers.\n const needsDisclosure = (contract: JsActiveContract): boolean => {\n const stakeholders = new Set([\n ...(contract.createdEvent.signatories ?? []),\n ...(contract.createdEvent.observers ?? []),\n ]);\n return !signingParties.some((party) => stakeholders.has(party));\n };\n\n const discloseContracts = async (\n ref: ActiveContractRef,\n contracts: JsActiveContract[],\n ): Promise<void> => {\n const toDisclose = contracts.filter(needsDisclosure);\n if (toDisclose.length === 0) return;\n\n const party = resolveQueryParty(ref);\n const disclosures = await Promise.all(\n toDisclose.map(async (contract) => {\n const contractId = contract.createdEvent.contractId;\n const disclosure = await client.createDisclosure(\n contractId as ContractId<unknown>,\n [party],\n );\n if (!disclosure) {\n throw new NonRetryableError(\n `Could not disclose ${contractId} (template ${ref.templateId}) — no longer active`,\n );\n }\n return disclosure;\n }),\n );\n appendDisclosures(disclosures);\n };\n\n const resolveActiveContractId = async (ref: ActiveContractRef): Promise<string> => {\n const contracts = await queryAsParty(ref);\n if (contracts.length !== 1) {\n throw new NonRetryableError(\n `Refresh for ${ref.templateId} matched ${contracts.length} contracts, but a scalar ref expects exactly one`,\n );\n }\n await discloseContracts(ref, contracts);\n return contracts[0]!.createdEvent.contractId;\n };\n\n const resolveActiveContractIds = async (ref: ActiveContractRef): Promise<string[]> => {\n const contracts = await queryAsParty(ref);\n await discloseContracts(ref, contracts);\n return contracts.map((contract) => contract.createdEvent.contractId);\n };\n\n return { resolveActiveContractId, resolveActiveContractIds, requireSenderParty: requireSender };\n};\n"]}
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import './AQJMQQ4W.js';
|
|
2
|
-
export {
|
|
2
|
+
export { buildCantonDeployedContractAddressRef, qualifiedTemplateName } from './I6Z5XG3N.js';
|
|
3
|
+
export { resolveCantonTransaction } from './ST5U5WZ4.js';
|
|
4
|
+
export { createContractAddressResolver, isConcreteActiveContractRef, isRefAlive, matchesContractStateFilter, queryLiveContractIdsForRef, queryLiveContractsForRef } from './VAFLUPQJ.js';
|
|
3
5
|
export { wrapLzSdk } from './RJSKBZMO.js';
|
|
4
6
|
export { substituteCidsToRefs, substituteRefsToCids } from './57KDDFEU.js';
|
|
5
|
-
import './5GUYLHA7.js';
|
|
6
|
-
export { CantonSdk } from './SLTAV2JF.js';
|
|
7
7
|
import './7JX6NIYS.js';
|
|
8
8
|
export { buildMultiTransactionSignatures, buildSignedTransaction } from './WKC6X2E3.js';
|
|
9
9
|
import './IIWYAFUO.js';
|
|
10
|
-
|
|
11
|
-
export {
|
|
10
|
+
import './5GUYLHA7.js';
|
|
11
|
+
export { CantonSdk } from './SLTAV2JF.js';
|
|
12
12
|
export { parseMinFeeValue } from './M3GPMXME.js';
|
|
13
13
|
export { createCantonChainProvider, parseCantonChainUri } from './ESNOKXKB.js';
|
|
14
14
|
export { CantonClient } from './3ZCDWNJG.js';
|
|
@@ -5,6 +5,13 @@ import type { CantonDisclosedContracts } from '../transaction';
|
|
|
5
5
|
export type ActiveContractRef = Extract<CantonDeferredValue, {
|
|
6
6
|
type: 'activeContractId' | 'activeContractIds';
|
|
7
7
|
}>;
|
|
8
|
+
/** Active-contract ref whose handler party is concrete (not the `'sender'` sentinel). */
|
|
9
|
+
export type ConcreteActiveContractRef = ActiveContractRef & {
|
|
10
|
+
partyToFilter: {
|
|
11
|
+
party: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export declare const isConcreteActiveContractRef: (ref: CantonDeferredValue) => ref is ConcreteActiveContractRef;
|
|
8
15
|
export interface ContractAddressResolverDeps {
|
|
9
16
|
client: ICantonClient;
|
|
10
17
|
senderParty?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address-resolver.d.ts","sourceRoot":"","sources":["../../src/refresh/address-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE/D,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACnC,mBAAmB,EACnB;IAAE,IAAI,EAAE,kBAAkB,GAAG,mBAAmB,CAAA;CAAE,CACrD,CAAC;AAEF,MAAM,WAAW,2BAA2B;IACxC,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8FAA8F;IAC9F,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,iBAAiB,EAAE,CAAC,WAAW,EAAE,wBAAwB,KAAK,IAAI,CAAC;CACtE;AAED,eAAO,MAAM,0BAA0B,GACnC,UAAU,gBAAgB,EAC1B,qBAAqB,iBAAiB,CAAC,qBAAqB,CAAC,KAC9D,OAMF,CAAC;AAEF,eAAO,MAAM,UAAU,GACnB,QAAQ,aAAa,EACrB,KAAK,mBAAmB,KACzB,OAAO,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"address-resolver.d.ts","sourceRoot":"","sources":["../../src/refresh/address-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE/D,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACnC,mBAAmB,EACnB;IAAE,IAAI,EAAE,kBAAkB,GAAG,mBAAmB,CAAA;CAAE,CACrD,CAAC;AAEF,yFAAyF;AACzF,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,GAAG;IACxD,aAAa,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACpC,KAAK,mBAAmB,KACzB,GAAG,IAAI,yBAEwB,CAAC;AAEnC,MAAM,WAAW,2BAA2B;IACxC,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8FAA8F;IAC9F,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,iBAAiB,EAAE,CAAC,WAAW,EAAE,wBAAwB,KAAK,IAAI,CAAC;CACtE;AAED,eAAO,MAAM,0BAA0B,GACnC,UAAU,gBAAgB,EAC1B,qBAAqB,iBAAiB,CAAC,qBAAqB,CAAC,KAC9D,OAMF,CAAC;AAEF,eAAO,MAAM,UAAU,GACnB,QAAQ,aAAa,EACrB,KAAK,mBAAmB,KACzB,OAAO,CAAC,OAAO,CAIjB,CAAC;AAEF,6GAA6G;AAC7G,eAAO,MAAM,wBAAwB,GACjC,QAAQ,aAAa,EACrB,OAAO,MAAM,EACb,KAAK,iBAAiB,KACvB,OAAO,CAAC,gBAAgB,EAAE,CAK5B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GACnC,QAAQ,aAAa,EACrB,KAAK,mBAAmB,EACxB,cAAc,MAAM,KACrB,OAAO,CAAC,MAAM,EAAE,CAMlB,CAAC;AAEF,eAAO,MAAM,6BAA6B,GAAI,MAAM,2BAA2B;mCAuE/B,iBAAiB,KAAG,OAAO,CAAC,MAAM,CAAC;oCAWlC,iBAAiB,KAAG,OAAO,CAAC,MAAM,EAAE,CAAC;qCA/E/C,MAAM,KAAG,MAAM;CAsFrD,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { createContractAddressResolver, isRefAlive, matchesContractStateFilter, queryLiveContractIdsForRef, queryLiveContractsForRef } from '../
|
|
1
|
+
export { createContractAddressResolver, isConcreteActiveContractRef, isRefAlive, matchesContractStateFilter, queryLiveContractIdsForRef, queryLiveContractsForRef } from '../VAFLUPQJ.js';
|
|
2
2
|
import '../VUOMXK5T.js';
|
|
3
3
|
//# sourceMappingURL=address-resolver.js.map
|
|
4
4
|
//# sourceMappingURL=address-resolver.js.map
|
package/dist/refresh/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import '../AQJMQQ4W.js';
|
|
2
|
-
export {
|
|
2
|
+
export { buildCantonDeployedContractAddressRef, qualifiedTemplateName } from '../I6Z5XG3N.js';
|
|
3
|
+
export { resolveCantonTransaction } from '../ST5U5WZ4.js';
|
|
4
|
+
export { createContractAddressResolver, isConcreteActiveContractRef, isRefAlive, matchesContractStateFilter, queryLiveContractIdsForRef, queryLiveContractsForRef } from '../VAFLUPQJ.js';
|
|
3
5
|
export { wrapLzSdk } from '../RJSKBZMO.js';
|
|
4
6
|
export { substituteCidsToRefs, substituteRefsToCids } from '../57KDDFEU.js';
|
|
5
|
-
export { createContractAddressResolver, isRefAlive, matchesContractStateFilter, queryLiveContractIdsForRef, queryLiveContractsForRef } from '../QRFMJ32P.js';
|
|
6
|
-
export { buildCantonDeployedContractAddressRef, qualifiedTemplateName } from '../I6Z5XG3N.js';
|
|
7
7
|
import '../4G6A7TFX.js';
|
|
8
8
|
import '../Z35TKEFU.js';
|
|
9
9
|
import '../A7Z5O57E.js';
|
package/dist/refresh/resolve.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { resolveCantonTransaction } from '../
|
|
1
|
+
export { resolveCantonTransaction } from '../ST5U5WZ4.js';
|
|
2
|
+
import '../VAFLUPQJ.js';
|
|
2
3
|
import '../57KDDFEU.js';
|
|
3
|
-
import '../QRFMJ32P.js';
|
|
4
4
|
import '../4G6A7TFX.js';
|
|
5
5
|
import '../Z35TKEFU.js';
|
|
6
6
|
import '../A7Z5O57E.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@layerzerolabs/common-canton",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.7",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Canton VM client and utilities",
|
|
6
6
|
"license": "MIT",
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
"@protobuf-ts/runtime-rpc": "^2.11.1",
|
|
33
33
|
"es-toolkit": "^1.39.10",
|
|
34
34
|
"zod": "4.3.5",
|
|
35
|
-
"@layerzerolabs/common-chain-model": "1.2.
|
|
36
|
-
"@layerzerolabs/common-
|
|
37
|
-
"@layerzerolabs/typescript-utils": "1.2.
|
|
38
|
-
"@layerzerolabs/common-
|
|
35
|
+
"@layerzerolabs/common-chain-model": "1.2.7",
|
|
36
|
+
"@layerzerolabs/common-encoding-utils": "1.2.7",
|
|
37
|
+
"@layerzerolabs/typescript-utils": "1.2.7",
|
|
38
|
+
"@layerzerolabs/common-error-utils": "1.2.7"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@types/node": "^22.18.6",
|
|
@@ -44,11 +44,11 @@
|
|
|
44
44
|
"tsup": "^8.4.0",
|
|
45
45
|
"typescript": "^5.8.2",
|
|
46
46
|
"vitest": "^3.2.6",
|
|
47
|
-
"@layerzerolabs/eslint-configuration": "^1.2.
|
|
48
|
-
"@layerzerolabs/tsup-configuration": "1.2.
|
|
49
|
-
"@layerzerolabs/typescript-configuration": "1.2.
|
|
50
|
-
"@layerzerolabs/
|
|
51
|
-
"@layerzerolabs/
|
|
47
|
+
"@layerzerolabs/eslint-configuration": "^1.2.7",
|
|
48
|
+
"@layerzerolabs/tsup-configuration": "1.2.7",
|
|
49
|
+
"@layerzerolabs/typescript-configuration": "1.2.7",
|
|
50
|
+
"@layerzerolabs/vm-tooling-canton": "1.2.7",
|
|
51
|
+
"@layerzerolabs/vitest-configuration": "1.2.7"
|
|
52
52
|
},
|
|
53
53
|
"publishConfig": {
|
|
54
54
|
"access": "public",
|
|
@@ -58,6 +58,7 @@
|
|
|
58
58
|
"targets": [
|
|
59
59
|
"audit-external",
|
|
60
60
|
"console-pen-test",
|
|
61
|
+
"gasolina-audit",
|
|
61
62
|
"layerzero-ver"
|
|
62
63
|
]
|
|
63
64
|
},
|
|
@@ -12,6 +12,17 @@ export type ActiveContractRef = Extract<
|
|
|
12
12
|
{ type: 'activeContractId' | 'activeContractIds' }
|
|
13
13
|
>;
|
|
14
14
|
|
|
15
|
+
/** Active-contract ref whose handler party is concrete (not the `'sender'` sentinel). */
|
|
16
|
+
export type ConcreteActiveContractRef = ActiveContractRef & {
|
|
17
|
+
partyToFilter: { party: string };
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const isConcreteActiveContractRef = (
|
|
21
|
+
ref: CantonDeferredValue,
|
|
22
|
+
): ref is ConcreteActiveContractRef =>
|
|
23
|
+
(ref.type === 'activeContractId' || ref.type === 'activeContractIds') &&
|
|
24
|
+
ref.partyToFilter !== 'sender';
|
|
25
|
+
|
|
15
26
|
export interface ContractAddressResolverDeps {
|
|
16
27
|
client: ICantonClient;
|
|
17
28
|
senderParty?: string;
|
|
@@ -35,8 +46,7 @@ export const isRefAlive = async (
|
|
|
35
46
|
client: ICantonClient,
|
|
36
47
|
ref: CantonDeferredValue,
|
|
37
48
|
): Promise<boolean> => {
|
|
38
|
-
if (ref
|
|
39
|
-
if (ref.partyToFilter === 'sender') return false;
|
|
49
|
+
if (!isConcreteActiveContractRef(ref)) return false;
|
|
40
50
|
const contracts = await queryLiveContractsForRef(client, ref.partyToFilter.party, ref);
|
|
41
51
|
return ref.type === 'activeContractId' ? contracts.length === 1 : contracts.length > 0;
|
|
42
52
|
};
|
package/dist/QRFMJ32P.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/refresh/address-resolver.ts"],"names":["matchesContractStateFilter","contract","contractStateFilter","createArgument","createdEvent","Object","entries","every","key","value","JSON","stringify","isRefAlive","client","ref","type","partyToFilter","contracts","queryLiveContractsForRef","party","length","offset","getLedgerEndOffset","queryActiveContracts","templateIds","templateId","filter","queryLiveContractIdsForRef","senderParty","map","c","contractId","createContractAddressResolver","deps","signingParties","appendDisclosures","requireSender","NonRetryableError","resolveQueryParty","queryCache","Map","queryAsParty","cacheKey","cached","get","query","set","needsDisclosure","stakeholders","Set","signatories","observers","some","has","discloseContracts","toDisclose","disclosures","Promise","all","disclosure","createDisclosure","resolveActiveContractId","resolveActiveContractIds","requireSenderParty"],"mappings":"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","file":"QRFMJ32P.js","sourcesContent":["import type { ContractId } from '@daml/types';\n\nimport { NonRetryableError } from '@layerzerolabs/common-error-utils';\n\nimport type { ICantonClient } from '../client/interface';\nimport type { CantonDeferredValue } from '../deferredValue';\nimport type { JsActiveContract } from '../open-api/models';\nimport type { CantonDisclosedContracts } from '../transaction';\n\nexport type ActiveContractRef = Extract<\n CantonDeferredValue,\n { type: 'activeContractId' | 'activeContractIds' }\n>;\n\nexport interface ContractAddressResolverDeps {\n client: ICantonClient;\n senderParty?: string;\n /** A contract is only disclosed when none of these parties is already a stakeholder on it. */\n signingParties: string[];\n appendDisclosures: (disclosures: CantonDisclosedContracts) => void;\n}\n\nexport const matchesContractStateFilter = (\n contract: JsActiveContract,\n contractStateFilter: ActiveContractRef['contractStateFilter'],\n): boolean => {\n if (!contractStateFilter) return true;\n const createArgument = contract.createdEvent.createArgument as Record<string, unknown>;\n return Object.entries(contractStateFilter).every(\n ([key, value]) => JSON.stringify(createArgument[key]) === JSON.stringify(value),\n );\n};\n\nexport const isRefAlive = async (\n client: ICantonClient,\n ref: CantonDeferredValue,\n): Promise<boolean> => {\n if (ref.type !== 'activeContractId' && ref.type !== 'activeContractIds') return false;\n if (ref.partyToFilter === 'sender') return false;\n const contracts = await queryLiveContractsForRef(client, ref.partyToFilter.party, ref);\n return ref.type === 'activeContractId' ? contracts.length === 1 : contracts.length > 0;\n};\n\n/** partyToFilter: 'sender' is resolved per-caller — this function takes an already-resolved party string. */\nexport const queryLiveContractsForRef = async (\n client: ICantonClient,\n party: string,\n ref: ActiveContractRef,\n): Promise<JsActiveContract[]> => {\n const offset = await client.getLedgerEndOffset();\n return (\n await client.queryActiveContracts(party, offset, { templateIds: [ref.templateId] })\n ).filter((contract) => matchesContractStateFilter(contract, ref.contractStateFilter));\n};\n\n/**\n * Returns the contractIds of all live contracts matching ref.\n * Resolves 'sender' to senderParty when provided; returns [] if unresolvable.\n */\nexport const queryLiveContractIdsForRef = async (\n client: ICantonClient,\n ref: CantonDeferredValue,\n senderParty?: string,\n): Promise<string[]> => {\n if (ref.type !== 'activeContractId' && ref.type !== 'activeContractIds') return [];\n const party = ref.partyToFilter === 'sender' ? senderParty : ref.partyToFilter.party;\n if (!party) return [];\n const contracts = await queryLiveContractsForRef(client, party, ref);\n return contracts.map((c) => c.createdEvent.contractId);\n};\n\nexport const createContractAddressResolver = (deps: ContractAddressResolverDeps) => {\n const { client, senderParty, signingParties, appendDisclosures } = deps;\n\n const requireSender = (templateId: string): string => {\n if (!senderParty) {\n throw new NonRetryableError(\n `Refresh entry for ${templateId} needs a resolved sender party, but none was provided`,\n );\n }\n return senderParty;\n };\n\n const resolveQueryParty = ({ partyToFilter, templateId }: ActiveContractRef): string =>\n partyToFilter === 'sender' ? requireSender(templateId) : partyToFilter.party;\n\n const queryCache = new Map<string, Promise<JsActiveContract[]>>();\n const queryAsParty = async (ref: ActiveContractRef): Promise<JsActiveContract[]> => {\n const party = resolveQueryParty(ref);\n const cacheKey = JSON.stringify({ ...ref, party });\n const cached = queryCache.get(cacheKey);\n if (cached) return cached;\n\n const query = (async () => {\n const contracts = await queryLiveContractsForRef(client, party, ref);\n if (contracts.length === 0) {\n throw new NonRetryableError(\n `Party ${party} has no matching active contracts of ${ref.templateId}`,\n );\n }\n return contracts;\n })();\n queryCache.set(cacheKey, query);\n return query;\n };\n\n // A signing party that is already a stakeholder can see the contract on its\n // own stream, so only disclose to parties that aren't signatories/observers.\n const needsDisclosure = (contract: JsActiveContract): boolean => {\n const stakeholders = new Set([\n ...(contract.createdEvent.signatories ?? []),\n ...(contract.createdEvent.observers ?? []),\n ]);\n return !signingParties.some((party) => stakeholders.has(party));\n };\n\n const discloseContracts = async (\n ref: ActiveContractRef,\n contracts: JsActiveContract[],\n ): Promise<void> => {\n const toDisclose = contracts.filter(needsDisclosure);\n if (toDisclose.length === 0) return;\n\n const party = resolveQueryParty(ref);\n const disclosures = await Promise.all(\n toDisclose.map(async (contract) => {\n const contractId = contract.createdEvent.contractId;\n const disclosure = await client.createDisclosure(\n contractId as ContractId<unknown>,\n [party],\n );\n if (!disclosure) {\n throw new NonRetryableError(\n `Could not disclose ${contractId} (template ${ref.templateId}) — no longer active`,\n );\n }\n return disclosure;\n }),\n );\n appendDisclosures(disclosures);\n };\n\n const resolveActiveContractId = async (ref: ActiveContractRef): Promise<string> => {\n const contracts = await queryAsParty(ref);\n if (contracts.length !== 1) {\n throw new NonRetryableError(\n `Refresh for ${ref.templateId} matched ${contracts.length} contracts, but a scalar ref expects exactly one`,\n );\n }\n await discloseContracts(ref, contracts);\n return contracts[0]!.createdEvent.contractId;\n };\n\n const resolveActiveContractIds = async (ref: ActiveContractRef): Promise<string[]> => {\n const contracts = await queryAsParty(ref);\n await discloseContracts(ref, contracts);\n return contracts.map((contract) => contract.createdEvent.contractId);\n };\n\n return { resolveActiveContractId, resolveActiveContractIds, requireSenderParty: requireSender };\n};\n"]}
|