@layerzerolabs/gated-transaction 0.0.34 → 0.0.39
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 +37 -37
- package/.turbo/turbo-checkdeps.log +1 -1
- package/.turbo/turbo-test.log +27 -3
- package/dist/{TYY6L3E5.cjs → 5JUAD4GY.cjs} +21 -19
- package/dist/5JUAD4GY.cjs.map +1 -0
- package/dist/{GP6ZA65F.js → 7GRIENQP.js} +3 -3
- package/dist/7GRIENQP.js.map +1 -0
- package/dist/{BNWOHVIN.cjs → I7JOK2BP.cjs} +5 -5
- package/dist/I7JOK2BP.cjs.map +1 -0
- package/dist/{3SOQJCDG.cjs → J2MWXBSK.cjs} +2 -2
- package/dist/J2MWXBSK.cjs.map +1 -0
- package/dist/{PGJAXI5M.js → L6WLN6U3.js} +14 -3
- package/dist/L6WLN6U3.js.map +1 -0
- package/dist/{BCFOKBQQ.js → UR6B6V6H.js} +7 -5
- package/dist/UR6B6V6H.js.map +1 -0
- package/dist/{WWHK47IY.js → VJKKTCPP.js} +2 -2
- package/dist/VJKKTCPP.js.map +1 -0
- package/dist/{4ND4S3IS.cjs → ZKCNP42T.cjs} +14 -2
- package/dist/ZKCNP42T.cjs.map +1 -0
- package/dist/gatedTransactionSignalLock.cjs +5 -5
- package/dist/gatedTransactionSignalLock.d.ts +1 -1
- package/dist/gatedTransactionSignalLock.d.ts.map +1 -1
- package/dist/gatedTransactionSignalLock.js +2 -2
- package/dist/gatedTx.cjs +4 -4
- package/dist/gatedTx.d.ts +13 -1
- package/dist/gatedTx.d.ts.map +1 -1
- package/dist/gatedTx.js +1 -1
- package/dist/index.cjs +22 -18
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/resolver.cjs +5 -5
- package/dist/resolver.d.ts +1 -1
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +3 -3
- package/dist/schemata.cjs +37 -0
- package/dist/schemata.cjs.map +1 -0
- package/dist/{types.d.ts → schemata.d.ts} +15 -2
- package/dist/schemata.d.ts.map +1 -0
- package/dist/schemata.js +4 -0
- package/dist/schemata.js.map +1 -0
- package/package.json +9 -9
- package/src/gatedTransactionSignalLock.ts +1 -1
- package/src/gatedTx.ts +13 -1
- package/src/index.ts +1 -1
- package/src/resolver.ts +4 -2
- package/src/{types.ts → schemata.ts} +37 -2
- package/test/resolver.test.ts +2 -2
- package/dist/3SOQJCDG.cjs.map +0 -1
- package/dist/4ND4S3IS.cjs.map +0 -1
- package/dist/BCFOKBQQ.js.map +0 -1
- package/dist/BNWOHVIN.cjs.map +0 -1
- package/dist/GP6ZA65F.js.map +0 -1
- package/dist/PGJAXI5M.js.map +0 -1
- package/dist/TYY6L3E5.cjs.map +0 -1
- package/dist/WWHK47IY.js.map +0 -1
- package/dist/types.cjs +0 -33
- package/dist/types.cjs.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -4
- package/dist/types.js.map +0 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
> @layerzerolabs/gated-transaction@0.0.0 build /home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction
|
|
3
3
|
> tsup
|
|
4
4
|
|
|
5
|
-
[34mCLI[39m Building entry: src/gatedTransactionSignalLock.ts, src/gatedTx.ts, src/index.ts, src/resolver.ts, src/
|
|
5
|
+
[34mCLI[39m Building entry: src/gatedTransactionSignalLock.ts, src/gatedTx.ts, src/index.ts, src/resolver.ts, src/schemata.ts
|
|
6
6
|
[34mCLI[39m Using tsconfig: tsconfig.json
|
|
7
7
|
[34mCLI[39m tsup v8.4.0
|
|
8
8
|
[34mCLI[39m Using tsup config: /home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/tsup.config.ts
|
|
@@ -10,45 +10,45 @@
|
|
|
10
10
|
[34mCLI[39m Cleaning output folder
|
|
11
11
|
[34mCJS[39m Build start
|
|
12
12
|
[34mESM[39m Build start
|
|
13
|
-
[32mCJS[39m [1mdist/gatedTransactionSignalLock.cjs [22m[32m697.00 B[39m
|
|
14
|
-
[32mCJS[39m [1mdist/index.cjs [22m[32m2.49 KB[39m
|
|
15
|
-
[32mCJS[39m [1mdist/BNWOHVIN.cjs [22m[32m3.70 KB[39m
|
|
16
|
-
[32mCJS[39m [1mdist/3SOQJCDG.cjs [22m[32m1.08 KB[39m
|
|
17
|
-
[32mCJS[39m [1mdist/resolver.cjs [22m[32m546.00 B[39m
|
|
18
|
-
[32mCJS[39m [1mdist/types.cjs [22m[32m1.10 KB[39m
|
|
19
|
-
[32mCJS[39m [1mdist/TYY6L3E5.cjs [22m[32m8.88 KB[39m
|
|
20
|
-
[32mCJS[39m [1mdist/YJF4D23A.cjs [22m[32m245.00 B[39m
|
|
21
|
-
[32mCJS[39m [1mdist/4ND4S3IS.cjs [22m[32m3.31 KB[39m
|
|
22
|
-
[32mCJS[39m [1mdist/gatedTx.cjs [22m[32m656.00 B[39m
|
|
23
|
-
[32mCJS[39m [1mdist/gatedTransactionSignalLock.cjs.map [22m[32m91.00 B[39m
|
|
24
|
-
[32mCJS[39m [1mdist/index.cjs.map [22m[32m70.00 B[39m
|
|
25
|
-
[32mCJS[39m [1mdist/BNWOHVIN.cjs.map [22m[32m8.61 KB[39m
|
|
26
|
-
[32mCJS[39m [1mdist/3SOQJCDG.cjs.map [22m[32m3.78 KB[39m
|
|
27
|
-
[32mCJS[39m [1mdist/resolver.cjs.map [22m[32m73.00 B[39m
|
|
28
|
-
[32mCJS[39m [1mdist/types.cjs.map [22m[32m70.00 B[39m
|
|
29
|
-
[32mCJS[39m [1mdist/YJF4D23A.cjs.map [22m[32m73.00 B[39m
|
|
30
|
-
[32mCJS[39m [1mdist/4ND4S3IS.cjs.map [22m[32m12.45 KB[39m
|
|
31
|
-
[32mCJS[39m [1mdist/TYY6L3E5.cjs.map [22m[32m22.60 KB[39m
|
|
32
|
-
[32mCJS[39m [1mdist/gatedTx.cjs.map [22m[32m72.00 B[39m
|
|
33
|
-
[32mCJS[39m ⚡️ Build success in 194ms
|
|
34
|
-
[32mESM[39m [1mdist/gatedTx.js [22m[32m218.00 B[39m
|
|
35
13
|
[32mESM[39m [1mdist/gatedTransactionSignalLock.js [22m[32m270.00 B[39m
|
|
36
|
-
[32mESM[39m [1mdist/index.js [22m[
|
|
37
|
-
[32mESM[39m [1mdist/GP6ZA65F.js [22m[32m3.47 KB[39m
|
|
14
|
+
[32mESM[39m [1mdist/index.js [22m[32m658.00 B[39m
|
|
38
15
|
[32mESM[39m [1mdist/resolver.js [22m[32m238.00 B[39m
|
|
39
|
-
[32mESM[39m [1mdist/
|
|
40
|
-
[32mESM[39m [1mdist/
|
|
41
|
-
[32mESM[39m [1mdist/
|
|
42
|
-
[32mESM[39m [1mdist/
|
|
16
|
+
[32mESM[39m [1mdist/gatedTx.js [22m[32m218.00 B[39m
|
|
17
|
+
[32mESM[39m [1mdist/VJKKTCPP.js [22m[32m935.00 B[39m
|
|
18
|
+
[32mESM[39m [1mdist/7GRIENQP.js [22m[32m3.47 KB[39m
|
|
19
|
+
[32mESM[39m [1mdist/schemata.js [22m[32m335.00 B[39m
|
|
43
20
|
[32mESM[39m [1mdist/VUOMXK5T.js [22m[32m222.00 B[39m
|
|
44
|
-
[32mESM[39m [1mdist/
|
|
21
|
+
[32mESM[39m [1mdist/L6WLN6U3.js [22m[32m2.93 KB[39m
|
|
22
|
+
[32mESM[39m [1mdist/UR6B6V6H.js [22m[32m8.42 KB[39m
|
|
45
23
|
[32mESM[39m [1mdist/gatedTransactionSignalLock.js.map [22m[32m90.00 B[39m
|
|
46
|
-
[32mESM[39m [1mdist/index.js.map [22m[32m69.00 B[39m
|
|
47
24
|
[32mESM[39m [1mdist/resolver.js.map [22m[32m72.00 B[39m
|
|
48
|
-
[32mESM[39m [1mdist/
|
|
49
|
-
[32mESM[39m [1mdist/
|
|
50
|
-
[32mESM[39m [1mdist/
|
|
51
|
-
[32mESM[39m [1mdist/
|
|
52
|
-
[32mESM[39m [1mdist/
|
|
25
|
+
[32mESM[39m [1mdist/gatedTx.js.map [22m[32m71.00 B[39m
|
|
26
|
+
[32mESM[39m [1mdist/VJKKTCPP.js.map [22m[32m4.04 KB[39m
|
|
27
|
+
[32mESM[39m [1mdist/7GRIENQP.js.map [22m[32m8.59 KB[39m
|
|
28
|
+
[32mESM[39m [1mdist/schemata.js.map [22m[32m72.00 B[39m
|
|
29
|
+
[32mESM[39m [1mdist/L6WLN6U3.js.map [22m[32m13.94 KB[39m
|
|
30
|
+
[32mESM[39m [1mdist/index.js.map [22m[32m69.00 B[39m
|
|
53
31
|
[32mESM[39m [1mdist/VUOMXK5T.js.map [22m[32m72.00 B[39m
|
|
54
|
-
[32mESM[39m
|
|
32
|
+
[32mESM[39m [1mdist/UR6B6V6H.js.map [22m[32m22.78 KB[39m
|
|
33
|
+
[32mESM[39m ⚡️ Build success in 201ms
|
|
34
|
+
[32mCJS[39m [1mdist/gatedTransactionSignalLock.cjs [22m[32m697.00 B[39m
|
|
35
|
+
[32mCJS[39m [1mdist/gatedTx.cjs [22m[32m652.00 B[39m
|
|
36
|
+
[32mCJS[39m [1mdist/index.cjs [22m[32m2.65 KB[39m
|
|
37
|
+
[32mCJS[39m [1mdist/I7JOK2BP.cjs [22m[32m3.69 KB[39m
|
|
38
|
+
[32mCJS[39m [1mdist/resolver.cjs [22m[32m549.00 B[39m
|
|
39
|
+
[32mCJS[39m [1mdist/J2MWXBSK.cjs [22m[32m1.08 KB[39m
|
|
40
|
+
[32mCJS[39m [1mdist/YJF4D23A.cjs [22m[32m245.00 B[39m
|
|
41
|
+
[32mCJS[39m [1mdist/schemata.cjs [22m[32m1.26 KB[39m
|
|
42
|
+
[32mCJS[39m [1mdist/ZKCNP42T.cjs [22m[32m3.91 KB[39m
|
|
43
|
+
[32mCJS[39m [1mdist/5JUAD4GY.cjs [22m[32m8.95 KB[39m
|
|
44
|
+
[32mCJS[39m [1mdist/gatedTx.cjs.map [22m[32m72.00 B[39m
|
|
45
|
+
[32mCJS[39m [1mdist/index.cjs.map [22m[32m70.00 B[39m
|
|
46
|
+
[32mCJS[39m [1mdist/I7JOK2BP.cjs.map [22m[32m8.61 KB[39m
|
|
47
|
+
[32mCJS[39m [1mdist/resolver.cjs.map [22m[32m73.00 B[39m
|
|
48
|
+
[32mCJS[39m [1mdist/J2MWXBSK.cjs.map [22m[32m4.04 KB[39m
|
|
49
|
+
[32mCJS[39m [1mdist/gatedTransactionSignalLock.cjs.map [22m[32m91.00 B[39m
|
|
50
|
+
[32mCJS[39m [1mdist/schemata.cjs.map [22m[32m73.00 B[39m
|
|
51
|
+
[32mCJS[39m [1mdist/ZKCNP42T.cjs.map [22m[32m14.00 KB[39m
|
|
52
|
+
[32mCJS[39m [1mdist/YJF4D23A.cjs.map [22m[32m73.00 B[39m
|
|
53
|
+
[32mCJS[39m [1mdist/5JUAD4GY.cjs.map [22m[32m22.81 KB[39m
|
|
54
|
+
[32mCJS[39m ⚡️ Build success in 203ms
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
> @layerzerolabs/depcheck@1.0.1 depcheck /home/runner/work/monorepo-internal/monorepo-internal/tools/repo/depcheck
|
|
7
|
-
> tsx ./src/index.ts
|
|
7
|
+
> tsx ./src/index.ts validate --catalog --missing-dependencies --only @layerzerolabs/gated-transaction
|
|
8
8
|
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -5,10 +5,34 @@
|
|
|
5
5
|
|
|
6
6
|
[1m[46m RUN [49m[22m [36mv3.2.3 [39m[90m/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction[39m
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
[90mstderr[2m | test/resolver.test.ts[2m > [22m[2mresolveGatedTransactions - dependency and edge cases[2m > [22m[2minternal dependency TRANSACTION_FAILED causes dependent DEPENDENCY_FAILED
|
|
9
|
+
[22m[39mGated transaction failed Error: failed to submit
|
|
10
|
+
at [90m/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/[39mtest/resolver.test.ts:121:19
|
|
11
|
+
at mockCall (file:///home/runner/work/monorepo-internal/monorepo-internal/node_modules/[4m.pnpm[24m/@vitest+spy@3.2.3/node_modules/[4m@vitest[24m/spy/dist/index.js:89:15)
|
|
12
|
+
at spy (file:///home/runner/work/monorepo-internal/monorepo-internal/node_modules/[4m.pnpm[24m/tinyspy@4.0.3/node_modules/[4mtinyspy[24m/dist/index.js:47:103)
|
|
13
|
+
at resolveGatedTransaction [90m(/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/[39msrc/resolver.ts:231:37[90m)[39m
|
|
14
|
+
at [90m/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/[39msrc/resolver.ts:344:63
|
|
15
|
+
at async Promise.all (index 0)
|
|
16
|
+
at resolveGatedTransactions [90m(/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/[39msrc/resolver.ts:375:12[90m)[39m
|
|
17
|
+
at [90m/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/[39mtest/resolver.test.ts:127:30
|
|
18
|
+
at file:///home/runner/work/monorepo-internal/monorepo-internal/node_modules/[4m.pnpm[24m/@vitest+runner@3.2.3/node_modules/[4m@vitest[24m/runner/dist/chunk-hooks.js:752:20
|
|
19
|
+
|
|
20
|
+
[90mstderr[2m | test/resolver.test.ts[2m > [22m[2mresolveGatedTransactions - functional transactions[2m > [22m[2mfunctional getTransactionPointer error yields TRANSACTION_FAILED
|
|
21
|
+
[22m[39mGated transaction failed Error: build failed
|
|
22
|
+
at Object.final [90m(/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/[39mtest/resolver.test.ts:362:27[90m)[39m
|
|
23
|
+
at Object.callByPointer [90m(/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/[39mtest/resolver.test.ts:25:41[90m)[39m
|
|
24
|
+
at extractGatedTransactionUnderlyingTransaction [90m(/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/[39msrc/resolver.ts:118:31[90m)[39m
|
|
25
|
+
at resolveGatedTransaction [90m(/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/[39msrc/resolver.ts:226:34[90m)[39m
|
|
26
|
+
at [90m/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/[39msrc/resolver.ts:344:63
|
|
27
|
+
at async Promise.all (index 0)
|
|
28
|
+
at resolveGatedTransactions [90m(/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/[39msrc/resolver.ts:375:12[90m)[39m
|
|
29
|
+
at [90m/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/[39mtest/resolver.test.ts:385:23
|
|
30
|
+
at file:///home/runner/work/monorepo-internal/monorepo-internal/node_modules/[4m.pnpm[24m/@vitest+runner@3.2.3/node_modules/[4m@vitest[24m/runner/dist/chunk-hooks.js:752:20
|
|
31
|
+
|
|
32
|
+
[32m✓[39m test/resolver.test.ts [2m([22m[2m10 tests[22m[2m)[22m[33m 426[2mms[22m[39m
|
|
9
33
|
|
|
10
34
|
[2m Test Files [22m [1m[32m1 passed[39m[22m[90m (1)[39m
|
|
11
35
|
[2m Tests [22m [1m[32m10 passed[39m[22m[90m (10)[39m
|
|
12
|
-
[2m Start at [22m 00:
|
|
13
|
-
[2m Duration [22m
|
|
36
|
+
[2m Start at [22m 23:00:08
|
|
37
|
+
[2m Duration [22m 1.06s[2m (transform 165ms, setup 0ms, collect 251ms, tests 426ms, environment 0ms, prepare 135ms)[22m
|
|
14
38
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var J2MWXBSK_cjs = require('./J2MWXBSK.cjs');
|
|
4
|
+
var ZKCNP42T_cjs = require('./ZKCNP42T.cjs');
|
|
5
5
|
var YJF4D23A_cjs = require('./YJF4D23A.cjs');
|
|
6
6
|
var isEqual = require('lodash.isequal');
|
|
7
7
|
|
|
@@ -68,9 +68,10 @@ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activ
|
|
|
68
68
|
check: gatedTx.check,
|
|
69
69
|
dependencies: gatedTx.dependencies,
|
|
70
70
|
cacheable: gatedTx.cacheable,
|
|
71
|
-
uniqueIdKeys: gatedTx.uniqueIdKeys
|
|
71
|
+
uniqueIdKeys: gatedTx.uniqueIdKeys,
|
|
72
|
+
metadata: gatedTx.metadata
|
|
72
73
|
};
|
|
73
|
-
const dependencyIds = (gatedTx.dependencies ?? []).map((tx) =>
|
|
74
|
+
const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => J2MWXBSK_cjs.getIdForGatedTransaction(tx));
|
|
74
75
|
const dependenciesAreAllProcessed = /* @__PURE__ */ YJF4D23A_cjs.__name(() => dependencyIds.every((id) => getTransactionResult(id)), "dependenciesAreAllProcessed");
|
|
75
76
|
await fn.condition(dependenciesAreAllProcessed);
|
|
76
77
|
const dependenciesWereSuccessful = dependencyIds.every((id) => getTransactionResult(id)?.checkResult.expectationMet);
|
|
@@ -79,7 +80,7 @@ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activ
|
|
|
79
80
|
resolvedGatedTransaction: {
|
|
80
81
|
...baseGatedTx,
|
|
81
82
|
result: {
|
|
82
|
-
status:
|
|
83
|
+
status: ZKCNP42T_cjs.GatedTransactionStatus.DEPENDENCY_FAILED
|
|
83
84
|
}
|
|
84
85
|
},
|
|
85
86
|
lastCheckResult: null
|
|
@@ -96,7 +97,7 @@ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activ
|
|
|
96
97
|
resolvedGatedTransaction: {
|
|
97
98
|
...baseGatedTx,
|
|
98
99
|
result: {
|
|
99
|
-
status:
|
|
100
|
+
status: ZKCNP42T_cjs.GatedTransactionStatus.NO_OP
|
|
100
101
|
}
|
|
101
102
|
},
|
|
102
103
|
lastCheckResult: initialCheckResult
|
|
@@ -108,14 +109,14 @@ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activ
|
|
|
108
109
|
resolvedGatedTransaction: {
|
|
109
110
|
...baseGatedTx,
|
|
110
111
|
result: {
|
|
111
|
-
status:
|
|
112
|
+
status: ZKCNP42T_cjs.GatedTransactionStatus.DENIED
|
|
112
113
|
}
|
|
113
114
|
},
|
|
114
115
|
lastCheckResult: initialCheckResult
|
|
115
116
|
};
|
|
116
117
|
}
|
|
117
118
|
try {
|
|
118
|
-
const depsResults = gatedTx.dependencies.map((dep) => getTransactionResult(
|
|
119
|
+
const depsResults = gatedTx.dependencies.map((dep) => getTransactionResult(J2MWXBSK_cjs.getIdForGatedTransaction(dep)).resolved);
|
|
119
120
|
const underlying = await extractGatedTransactionUnderlyingTransaction({
|
|
120
121
|
registry: activityRegistry,
|
|
121
122
|
gatedTransaction: gatedTx,
|
|
@@ -137,7 +138,7 @@ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activ
|
|
|
137
138
|
resolvedGatedTransaction: {
|
|
138
139
|
...baseGatedTx,
|
|
139
140
|
result: {
|
|
140
|
-
status:
|
|
141
|
+
status: ZKCNP42T_cjs.GatedTransactionStatus.SUCCESS,
|
|
141
142
|
submittedTransaction
|
|
142
143
|
}
|
|
143
144
|
},
|
|
@@ -152,7 +153,7 @@ ${stringify(finalCheckResult.onChainData)}`);
|
|
|
152
153
|
resolvedGatedTransaction: {
|
|
153
154
|
...baseGatedTx,
|
|
154
155
|
result: {
|
|
155
|
-
status:
|
|
156
|
+
status: ZKCNP42T_cjs.GatedTransactionStatus.FINAL_CHECK_FAILED,
|
|
156
157
|
submittedTransaction,
|
|
157
158
|
finalOnChainState: finalCheckResult.onChainData
|
|
158
159
|
}
|
|
@@ -161,11 +162,12 @@ ${stringify(finalCheckResult.onChainData)}`);
|
|
|
161
162
|
};
|
|
162
163
|
}
|
|
163
164
|
} catch (e) {
|
|
165
|
+
console.error("Gated transaction failed", e);
|
|
164
166
|
return {
|
|
165
167
|
resolvedGatedTransaction: {
|
|
166
168
|
...baseGatedTx,
|
|
167
169
|
result: {
|
|
168
|
-
status:
|
|
170
|
+
status: ZKCNP42T_cjs.GatedTransactionStatus.TRANSACTION_FAILED,
|
|
169
171
|
transactionError: e
|
|
170
172
|
}
|
|
171
173
|
},
|
|
@@ -174,9 +176,9 @@ ${stringify(finalCheckResult.onChainData)}`);
|
|
|
174
176
|
}
|
|
175
177
|
}, "resolveGatedTransaction");
|
|
176
178
|
var resolveGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activityRegistry, gatedTxes, processTx, fn, cache, userInteractionCallbacks }) => {
|
|
177
|
-
const allInternalIds = gatedTxes.map((tx) =>
|
|
179
|
+
const allInternalIds = gatedTxes.map((tx) => J2MWXBSK_cjs.getIdForGatedTransaction(tx));
|
|
178
180
|
const allDeps = gatedTxes.flatMap((tx) => tx.dependencies ?? []);
|
|
179
|
-
const allExternalDeps = allDeps.filter((tx) => !allInternalIds.includes(
|
|
181
|
+
const allExternalDeps = allDeps.filter((tx) => !allInternalIds.includes(J2MWXBSK_cjs.getIdForGatedTransaction(tx)));
|
|
180
182
|
const results = Object.fromEntries(await Promise.all(allExternalDeps.map(async (tx) => {
|
|
181
183
|
const checkResult = await checkGatedTransaction({
|
|
182
184
|
gatedTransaction: tx,
|
|
@@ -184,7 +186,7 @@ var resolveGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ acti
|
|
|
184
186
|
cachedCheckResult: await cache?.getCachedTxCheckData?.(tx)
|
|
185
187
|
});
|
|
186
188
|
return [
|
|
187
|
-
|
|
189
|
+
J2MWXBSK_cjs.getIdForGatedTransaction(tx),
|
|
188
190
|
{
|
|
189
191
|
checkResult
|
|
190
192
|
}
|
|
@@ -201,13 +203,13 @@ var resolveGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ acti
|
|
|
201
203
|
fn,
|
|
202
204
|
cache
|
|
203
205
|
});
|
|
204
|
-
const resId =
|
|
206
|
+
const resId = J2MWXBSK_cjs.getIdForGatedTransaction(resolvedGatedTransaction);
|
|
205
207
|
results[resId] = {
|
|
206
208
|
resolved: resolvedGatedTransaction,
|
|
207
209
|
checkResult: {
|
|
208
210
|
expectationMet: [
|
|
209
|
-
|
|
210
|
-
|
|
211
|
+
ZKCNP42T_cjs.GatedTransactionStatus.SUCCESS,
|
|
212
|
+
ZKCNP42T_cjs.GatedTransactionStatus.NO_OP
|
|
211
213
|
].includes(resolvedGatedTransaction.result.status),
|
|
212
214
|
onChainData: lastCheckResult?.onChainData ?? void 0
|
|
213
215
|
}
|
|
@@ -235,5 +237,5 @@ var resolveSequencedGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(asyn
|
|
|
235
237
|
|
|
236
238
|
exports.resolveGatedTransactions = resolveGatedTransactions;
|
|
237
239
|
exports.resolveSequencedGatedTransactions = resolveSequencedGatedTransactions;
|
|
238
|
-
//# sourceMappingURL=
|
|
239
|
-
//# sourceMappingURL=
|
|
240
|
+
//# sourceMappingURL=5JUAD4GY.cjs.map
|
|
241
|
+
//# sourceMappingURL=5JUAD4GY.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resolver.ts"],"names":["checkGatedTransaction","__name","registry","gatedTransaction","cachedCheckResult","submittedTransaction","onChainData","undefined","params","check","callByPointer","functionPointer","expectationMet","expectedResult","operator","isEqual","comparisonValue","Error","extractGatedTransactionUnderlyingTransaction","deps","transactionType","transaction","getTransactionPointer","resolveGatedTransaction","activityRegistry","gatedTx","getTransactionResult","processTx","confirmationCallback","fn","cache","baseGatedTx","name","chainName","bundleName","dependencies","cacheable","uniqueIdKeys","metadata","dependencyIds","map","tx","getIdForGatedTransaction","dependenciesAreAllProcessed","every","id","condition","dependenciesWereSuccessful","checkResult","resolvedGatedTransaction","result","status","GatedTransactionStatus","DEPENDENCY_FAILED","lastCheckResult","initialCheckResult","getCachedTxCheckData","cacheSuccessfulTxCheckData","NO_OP","confirmation","DENIED","depsResults","dep","resolved","underlying","processResult","finalCheckResult","SUCCESS","stringify","o","JSON","_","v","toString","console","error","FINAL_CHECK_FAILED","finalOnChainState","e","TRANSACTION_FAILED","transactionError","resolveGatedTransactions","gatedTxes","userInteractionCallbacks","allInternalIds","allDeps","flatMap","allExternalDeps","filter","includes","results","Object","fromEntries","Promise","all","gtxId","txFunctions","resId","onResultCallback","func","resolveSequencedGatedTransactions","seq","push"],"mappings":"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","file":"5JUAD4GY.cjs","sourcesContent":["import isEqual from 'lodash.isequal';\n\nimport type { ActivityRegistry } from '@layerzerolabs/common-activities';\nimport type {\n Transaction,\n TransactionResult,\n TransactionWithResult,\n} from '@layerzerolabs/common-chain-model';\nimport type { WorkflowFunctions } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n BaseGatedTransactionFor,\n GatedTransaction,\n GatedTransactionId,\n IGatedTransactionCache,\n InferOnChainDataTypeFromGatedTransaction,\n ResolvedGatedTransaction,\n ResolvedGatedTransactionDependencies,\n UserInteractionCallbacks,\n} from './schemata';\nimport { GatedTransactionStatus } from './schemata';\n\ntype OnChainCheckResult<DataType = any> = {\n expectationMet: boolean;\n onChainData: DataType;\n};\n\nconst checkGatedTransaction = async <\n GatedTx extends GatedTransaction,\n TxWithResult extends TransactionWithResult,\n>({\n registry,\n gatedTransaction,\n cachedCheckResult,\n submittedTransaction,\n}: {\n registry: ActivityRegistry;\n gatedTransaction: GatedTx;\n cachedCheckResult?: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n submittedTransaction?: TxWithResult;\n}): Promise<OnChainCheckResult<InferOnChainDataTypeFromGatedTransaction<GatedTx>>> => {\n let onChainData: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n if (cachedCheckResult !== undefined) {\n onChainData = cachedCheckResult;\n } else {\n // Always inject the processed transaction as the last parameter when available\n let params = gatedTransaction.check.params;\n if (submittedTransaction !== undefined) {\n params = [...gatedTransaction.check.params, submittedTransaction];\n }\n\n onChainData = await registry.callByPointer(gatedTransaction.check.functionPointer, params);\n }\n\n let expectationMet: boolean;\n\n switch (gatedTransaction.check.expectedResult.operator) {\n case '=':\n expectationMet = isEqual(\n onChainData,\n gatedTransaction.check.expectedResult.comparisonValue,\n );\n break;\n case '!=':\n expectationMet = !isEqual(\n onChainData,\n gatedTransaction.check.expectedResult.comparisonValue,\n );\n break;\n case '>':\n expectationMet =\n (onChainData as number) >\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n case '>=':\n expectationMet =\n (onChainData as number) >=\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n case '<':\n expectationMet =\n (onChainData as number) <\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n case '<=':\n expectationMet =\n (onChainData as number) <=\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n default:\n throw new Error(\n `Gated transaction operator \"${gatedTransaction.check.expectedResult.operator}\" is not supported`,\n );\n }\n\n return {\n expectationMet,\n onChainData,\n };\n};\n\nconst extractGatedTransactionUnderlyingTransaction = async <\n GatedTx extends GatedTransaction,\n TxType extends Transaction,\n>({\n registry,\n gatedTransaction,\n deps,\n}: {\n registry: ActivityRegistry;\n gatedTransaction: GatedTx;\n deps: ResolvedGatedTransactionDependencies<GatedTx>;\n}): Promise<TxType> => {\n if (gatedTransaction.transactionType === 'literal') {\n return gatedTransaction.transaction as TxType;\n } else {\n return await registry.callByPointer(gatedTransaction.getTransactionPointer, [deps]);\n }\n};\n\nconst resolveGatedTransaction = async <\n TxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TransactionResult>,\n>({\n activityRegistry,\n gatedTx,\n getTransactionResult,\n processTx,\n confirmationCallback,\n fn,\n cache,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTx: GatedTx;\n processTx: ProcessTx;\n getTransactionResult: (gtxId: GatedTransactionId) =>\n | {\n resolved?: ResolvedGatedTransaction;\n checkResult: { onChainData?: any; expectationMet: boolean };\n }\n | undefined;\n confirmationCallback: NonNullable<UserInteractionCallbacks['confirmationCallback']>;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n}): Promise<{\n resolvedGatedTransaction: ResolvedGatedTransaction<GatedTx>;\n lastCheckResult: OnChainCheckResult | null;\n}> => {\n const baseGatedTx = {\n name: gatedTx.name,\n chainName: gatedTx.chainName,\n bundleName: gatedTx.bundleName,\n check: gatedTx.check,\n dependencies: gatedTx.dependencies,\n cacheable: gatedTx.cacheable,\n uniqueIdKeys: gatedTx.uniqueIdKeys,\n metadata: gatedTx.metadata,\n } as BaseGatedTransactionFor<GatedTx>;\n\n const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => getIdForGatedTransaction(tx));\n\n const dependenciesAreAllProcessed = () => dependencyIds.every((id) => getTransactionResult(id));\n\n await fn.condition(dependenciesAreAllProcessed);\n\n //check that the dependencies succeeded\n const dependenciesWereSuccessful = dependencyIds.every(\n (id) => getTransactionResult(id)?.checkResult.expectationMet,\n );\n\n if (!dependenciesWereSuccessful) {\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.DEPENDENCY_FAILED,\n },\n },\n lastCheckResult: null,\n };\n }\n\n const initialCheckResult = await checkGatedTransaction({\n gatedTransaction: gatedTx,\n registry: activityRegistry,\n cachedCheckResult: await cache?.getCachedTxCheckData?.(gatedTx),\n });\n\n await cache?.cacheSuccessfulTxCheckData?.(gatedTx, initialCheckResult.onChainData);\n\n if (initialCheckResult.expectationMet) {\n //already met\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.NO_OP,\n },\n },\n lastCheckResult: initialCheckResult,\n };\n }\n\n //get confirmation before sending\n const confirmation = await confirmationCallback(gatedTx);\n if (!confirmation) {\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.DENIED,\n },\n },\n lastCheckResult: initialCheckResult,\n };\n }\n\n //send the tx\n try {\n const depsResults = gatedTx.dependencies.map(\n (dep) => getTransactionResult(getIdForGatedTransaction(dep))!.resolved!,\n ) as ResolvedGatedTransactionDependencies<GatedTx>;\n // get the underlying calldata\n const underlying = await extractGatedTransactionUnderlyingTransaction<GatedTx, TxType>({\n registry: activityRegistry,\n gatedTransaction: gatedTx,\n deps: depsResults,\n });\n const processResult = await processTx(underlying);\n const submittedTransaction = { ...underlying, result: processResult };\n const finalCheckResult = await checkGatedTransaction({\n registry: activityRegistry,\n gatedTransaction: gatedTx,\n submittedTransaction,\n });\n\n await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);\n\n if (finalCheckResult.expectationMet) {\n //sent and successful\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.SUCCESS,\n submittedTransaction,\n },\n },\n lastCheckResult: finalCheckResult,\n };\n } else {\n //sent and unsuccessful\n const stringify = (o: any) =>\n JSON.stringify(o, (_, v) => (typeof v === 'bigint' ? v.toString() : v), 2);\n console.error(\n `Gated transaction ${gatedTx.name} final check failed:\\nExpected result ${stringify(gatedTx.check.expectedResult.comparisonValue)}, but got:\\n${stringify(finalCheckResult.onChainData)}`,\n );\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED,\n submittedTransaction,\n finalOnChainState: finalCheckResult.onChainData,\n },\n },\n lastCheckResult: finalCheckResult,\n };\n }\n } catch (e) {\n console.error('Gated transaction failed', e);\n //sent and failed\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.TRANSACTION_FAILED,\n transactionError: e,\n },\n },\n lastCheckResult: initialCheckResult,\n };\n }\n};\n\nexport const resolveGatedTransactions = async <\n TxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TransactionResult>,\n>({\n activityRegistry,\n gatedTxes,\n processTx,\n fn,\n cache,\n userInteractionCallbacks,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTxes: GatedTx[];\n processTx: ProcessTx;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n userInteractionCallbacks?: UserInteractionCallbacks;\n}): Promise<ResolvedGatedTransaction[]> => {\n //compute deps\n const allInternalIds = gatedTxes.map((tx) => getIdForGatedTransaction(tx));\n const allDeps = gatedTxes.flatMap((tx) => tx.dependencies ?? []);\n const allExternalDeps = allDeps.filter(\n (tx) => !allInternalIds.includes(getIdForGatedTransaction(tx)),\n );\n\n //prepopulate results for external dependencies\n //this map is only used for internal status tracking\n const results: Record<\n GatedTransactionId,\n {\n resolved?: ResolvedGatedTransaction;\n checkResult: { onChainData?: any; expectationMet: boolean };\n }\n > = Object.fromEntries(\n await Promise.all(\n allExternalDeps.map(async (tx) => {\n const checkResult = await checkGatedTransaction({\n gatedTransaction: tx,\n registry: activityRegistry,\n cachedCheckResult: await cache?.getCachedTxCheckData?.(tx),\n });\n\n return [\n getIdForGatedTransaction(tx),\n {\n checkResult,\n },\n ];\n }),\n ),\n );\n\n const getTransactionResult = (gtxId: GatedTransactionId) => results[gtxId];\n\n const txFunctions = gatedTxes.map((tx) => async () => {\n const { resolvedGatedTransaction, lastCheckResult } = await resolveGatedTransaction<\n TxType,\n GatedTx,\n ProcessTx\n >({\n gatedTx: tx,\n activityRegistry,\n getTransactionResult,\n processTx,\n confirmationCallback:\n userInteractionCallbacks?.confirmationCallback ?? (async () => true),\n fn,\n cache,\n });\n\n const resId = getIdForGatedTransaction(resolvedGatedTransaction);\n results[resId] = {\n resolved: resolvedGatedTransaction,\n checkResult: {\n expectationMet: [\n GatedTransactionStatus.SUCCESS,\n GatedTransactionStatus.NO_OP,\n ].includes(resolvedGatedTransaction.result.status),\n onChainData: lastCheckResult?.onChainData ?? undefined,\n },\n };\n\n userInteractionCallbacks?.onResultCallback?.(resolvedGatedTransaction);\n return resolvedGatedTransaction;\n });\n\n return await Promise.all(txFunctions.map((func) => func()));\n};\n\nexport const resolveSequencedGatedTransactions = async <\n TxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TransactionResult>,\n>({\n activityRegistry,\n gatedTxes,\n processTx,\n cache,\n userInteractionCallbacks,\n fn,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTxes: GatedTx[][];\n processTx: ProcessTx;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n userInteractionCallbacks?: UserInteractionCallbacks;\n}) => {\n const results = [];\n for (const seq of gatedTxes) {\n const result = await resolveGatedTransactions<TxType, GatedTx, ProcessTx>({\n gatedTxes: seq,\n activityRegistry,\n processTx,\n cache,\n userInteractionCallbacks,\n fn,\n });\n results.push(result);\n }\n\n return results;\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getIdForGatedTransaction } from './
|
|
1
|
+
import { getIdForGatedTransaction } from './VJKKTCPP.js';
|
|
2
2
|
import { __name } from './VUOMXK5T.js';
|
|
3
3
|
import { defineSignal, defineQuery } from '@layerzerolabs/common-workflow';
|
|
4
4
|
|
|
@@ -94,5 +94,5 @@ var useGatedTransactionSignalLock = /* @__PURE__ */ __name((fn) => {
|
|
|
94
94
|
}, "useGatedTransactionSignalLock");
|
|
95
95
|
|
|
96
96
|
export { gatedTransactionGoSignal, queryGatedTransactions, useGatedTransactionSignalLock };
|
|
97
|
-
//# sourceMappingURL=
|
|
98
|
-
//# sourceMappingURL=
|
|
97
|
+
//# sourceMappingURL=7GRIENQP.js.map
|
|
98
|
+
//# sourceMappingURL=7GRIENQP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/gatedTransactionSignalLock.ts"],"names":["gatedTransactionGoSignal","defineSignal","gatedTransactionGoSignalInternal","queryGatedTransactions","defineQuery","useGatedTransactionSignalLock","fn","passthroughWorkflows","addChild","wf","push","signal","ids","approvedInfo","bundleNames","Set","pendingTransactions","sentTransactions","completedTransactions","setHandler","passthroughWfIds","map","workflowId","Object","values","passthroughWorkflowIds","gatedTransactionGoInternal","uniqueGoSignalId","length","Promise","allSettled","newIds","filter","id","has","newBundleNames","bundleName","confirmationCallback","tx","getIdForGatedTransaction","condition","onResultCallback","result","userInteractionCallbacks"],"mappings":"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","file":"7GRIENQP.js","sourcesContent":["import type { WorkflowFunctions, WorkflowHandle } from '@layerzerolabs/common-workflow';\nimport { defineQuery, defineSignal } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n GatedTransaction,\n GatedTransactionId,\n ResolvedGatedTransaction,\n UserInteractionCallbacks,\n} from './schemata';\n\nexport type QueryGatedTransactionsResult = {\n pendingTransactions: GatedTransaction[];\n sentTransactions: GatedTransaction[];\n completedTransactions: ResolvedGatedTransaction[];\n passthroughWorkflowIds: string[];\n};\n\nexport const gatedTransactionGoSignal = defineSignal<\n [\n arg: {\n ids: GatedTransactionId[];\n bundleNames: string[];\n },\n ]\n>('GatedTransactionGo');\n\nconst gatedTransactionGoSignalInternal = defineSignal<\n [\n arg: {\n ids: GatedTransactionId[];\n bundleNames: string[];\n uniqueGoSignalId: string | undefined;\n },\n ]\n>('GatedTransactionGoInternal');\n\nexport const queryGatedTransactions =\n defineQuery<QueryGatedTransactionsResult>('GatedTransactionQuery');\n\nexport const useGatedTransactionSignalLock = (\n fn: WorkflowFunctions,\n): {\n userInteractionCallbacks: UserInteractionCallbacks;\n addChild: (wf: WorkflowHandle<any>) => Promise<void>;\n} => {\n const passthroughWorkflows: WorkflowHandle<any>[] = [];\n const addChild = async (wf: WorkflowHandle<any>) => {\n passthroughWorkflows.push(wf);\n await wf.signal(gatedTransactionGoSignal, [\n { ids: [...approvedInfo.ids], bundleNames: [...approvedInfo.bundleNames] },\n ]);\n };\n const approvedInfo: {\n ids: Set<GatedTransactionId>;\n bundleNames: Set<string>;\n } = {\n ids: new Set(),\n bundleNames: new Set(),\n };\n\n const pendingTransactions: Record<GatedTransactionId, GatedTransaction> = {};\n const sentTransactions: Record<GatedTransactionId, GatedTransaction> = {};\n const completedTransactions: Record<GatedTransactionId, ResolvedGatedTransaction> = {};\n\n fn.setHandler(queryGatedTransactions, () => {\n const passthroughWfIds = passthroughWorkflows.map((wf) => wf.workflowId);\n return {\n pendingTransactions: Object.values(pendingTransactions),\n sentTransactions: Object.values(sentTransactions),\n completedTransactions: Object.values(completedTransactions),\n passthroughWorkflowIds: passthroughWfIds ?? [],\n };\n });\n\n const gatedTransactionGoInternal = async ({\n ids,\n bundleNames,\n uniqueGoSignalId,\n }: {\n ids: GatedTransactionId[];\n bundleNames: string[];\n uniqueGoSignalId: string | undefined;\n }): Promise<void> => {\n if (ids.length === 0 && bundleNames.length === 0) {\n return;\n }\n\n approvedInfo.ids = new Set([...approvedInfo.ids, ...ids]);\n approvedInfo.bundleNames = new Set([...approvedInfo.bundleNames, ...bundleNames]);\n await Promise.allSettled(\n passthroughWorkflows.map((wf) => {\n return wf.signal(gatedTransactionGoSignalInternal, [\n { ids, bundleNames, uniqueGoSignalId },\n ]);\n }),\n );\n };\n fn.setHandler(gatedTransactionGoSignalInternal, gatedTransactionGoInternal);\n\n fn.setHandler(gatedTransactionGoSignal, async ({ ids, bundleNames }) => {\n const uniqueGoSignalId = 'TO_BE_IMPLEMENTED_WHEN_ADDING_THE_BUNDLER';\n // Only keep new transaction ids and bundle names\n const newIds = ids.filter((id) => !approvedInfo.ids.has(id));\n const newBundleNames = bundleNames.filter(\n (bundleName) => !approvedInfo.bundleNames.has(bundleName),\n );\n\n await gatedTransactionGoInternal({\n ids: newIds,\n bundleNames: newBundleNames,\n uniqueGoSignalId,\n });\n });\n\n const confirmationCallback: UserInteractionCallbacks['confirmationCallback'] = async (tx) => {\n const id = getIdForGatedTransaction(tx);\n pendingTransactions[id] = tx;\n\n await fn.condition(() => {\n return (\n approvedInfo.ids.has(id) ||\n (!!tx.bundleName && approvedInfo.bundleNames.has(tx.bundleName))\n );\n });\n\n sentTransactions[id] = tx;\n delete pendingTransactions[id];\n return true;\n };\n\n const onResultCallback: UserInteractionCallbacks['onResultCallback'] = (result) => {\n const id = getIdForGatedTransaction(result);\n completedTransactions[id] = result;\n delete sentTransactions[id];\n };\n\n return { userInteractionCallbacks: { confirmationCallback, onResultCallback }, addChild };\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var J2MWXBSK_cjs = require('./J2MWXBSK.cjs');
|
|
4
4
|
var YJF4D23A_cjs = require('./YJF4D23A.cjs');
|
|
5
5
|
var commonWorkflow = require('@layerzerolabs/common-workflow');
|
|
6
6
|
|
|
@@ -72,7 +72,7 @@ var useGatedTransactionSignalLock = /* @__PURE__ */ YJF4D23A_cjs.__name((fn) =>
|
|
|
72
72
|
});
|
|
73
73
|
});
|
|
74
74
|
const confirmationCallback = /* @__PURE__ */ YJF4D23A_cjs.__name(async (tx) => {
|
|
75
|
-
const id =
|
|
75
|
+
const id = J2MWXBSK_cjs.getIdForGatedTransaction(tx);
|
|
76
76
|
pendingTransactions[id] = tx;
|
|
77
77
|
await fn.condition(() => {
|
|
78
78
|
return approvedInfo.ids.has(id) || !!tx.bundleName && approvedInfo.bundleNames.has(tx.bundleName);
|
|
@@ -82,7 +82,7 @@ var useGatedTransactionSignalLock = /* @__PURE__ */ YJF4D23A_cjs.__name((fn) =>
|
|
|
82
82
|
return true;
|
|
83
83
|
}, "confirmationCallback");
|
|
84
84
|
const onResultCallback = /* @__PURE__ */ YJF4D23A_cjs.__name((result) => {
|
|
85
|
-
const id =
|
|
85
|
+
const id = J2MWXBSK_cjs.getIdForGatedTransaction(result);
|
|
86
86
|
completedTransactions[id] = result;
|
|
87
87
|
delete sentTransactions[id];
|
|
88
88
|
}, "onResultCallback");
|
|
@@ -98,5 +98,5 @@ var useGatedTransactionSignalLock = /* @__PURE__ */ YJF4D23A_cjs.__name((fn) =>
|
|
|
98
98
|
exports.gatedTransactionGoSignal = gatedTransactionGoSignal;
|
|
99
99
|
exports.queryGatedTransactions = queryGatedTransactions;
|
|
100
100
|
exports.useGatedTransactionSignalLock = useGatedTransactionSignalLock;
|
|
101
|
-
//# sourceMappingURL=
|
|
102
|
-
//# sourceMappingURL=
|
|
101
|
+
//# sourceMappingURL=I7JOK2BP.cjs.map
|
|
102
|
+
//# sourceMappingURL=I7JOK2BP.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/gatedTransactionSignalLock.ts"],"names":["gatedTransactionGoSignal","defineSignal","gatedTransactionGoSignalInternal","queryGatedTransactions","defineQuery","useGatedTransactionSignalLock","fn","passthroughWorkflows","addChild","wf","push","signal","ids","approvedInfo","bundleNames","Set","pendingTransactions","sentTransactions","completedTransactions","setHandler","passthroughWfIds","map","workflowId","Object","values","passthroughWorkflowIds","gatedTransactionGoInternal","__name","uniqueGoSignalId","length","Promise","allSettled","newIds","filter","id","has","newBundleNames","bundleName","confirmationCallback","tx","getIdForGatedTransaction","condition","onResultCallback","result","userInteractionCallbacks"],"mappings":"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","file":"I7JOK2BP.cjs","sourcesContent":["import type { WorkflowFunctions, WorkflowHandle } from '@layerzerolabs/common-workflow';\nimport { defineQuery, defineSignal } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n GatedTransaction,\n GatedTransactionId,\n ResolvedGatedTransaction,\n UserInteractionCallbacks,\n} from './schemata';\n\nexport type QueryGatedTransactionsResult = {\n pendingTransactions: GatedTransaction[];\n sentTransactions: GatedTransaction[];\n completedTransactions: ResolvedGatedTransaction[];\n passthroughWorkflowIds: string[];\n};\n\nexport const gatedTransactionGoSignal = defineSignal<\n [\n arg: {\n ids: GatedTransactionId[];\n bundleNames: string[];\n },\n ]\n>('GatedTransactionGo');\n\nconst gatedTransactionGoSignalInternal = defineSignal<\n [\n arg: {\n ids: GatedTransactionId[];\n bundleNames: string[];\n uniqueGoSignalId: string | undefined;\n },\n ]\n>('GatedTransactionGoInternal');\n\nexport const queryGatedTransactions =\n defineQuery<QueryGatedTransactionsResult>('GatedTransactionQuery');\n\nexport const useGatedTransactionSignalLock = (\n fn: WorkflowFunctions,\n): {\n userInteractionCallbacks: UserInteractionCallbacks;\n addChild: (wf: WorkflowHandle<any>) => Promise<void>;\n} => {\n const passthroughWorkflows: WorkflowHandle<any>[] = [];\n const addChild = async (wf: WorkflowHandle<any>) => {\n passthroughWorkflows.push(wf);\n await wf.signal(gatedTransactionGoSignal, [\n { ids: [...approvedInfo.ids], bundleNames: [...approvedInfo.bundleNames] },\n ]);\n };\n const approvedInfo: {\n ids: Set<GatedTransactionId>;\n bundleNames: Set<string>;\n } = {\n ids: new Set(),\n bundleNames: new Set(),\n };\n\n const pendingTransactions: Record<GatedTransactionId, GatedTransaction> = {};\n const sentTransactions: Record<GatedTransactionId, GatedTransaction> = {};\n const completedTransactions: Record<GatedTransactionId, ResolvedGatedTransaction> = {};\n\n fn.setHandler(queryGatedTransactions, () => {\n const passthroughWfIds = passthroughWorkflows.map((wf) => wf.workflowId);\n return {\n pendingTransactions: Object.values(pendingTransactions),\n sentTransactions: Object.values(sentTransactions),\n completedTransactions: Object.values(completedTransactions),\n passthroughWorkflowIds: passthroughWfIds ?? [],\n };\n });\n\n const gatedTransactionGoInternal = async ({\n ids,\n bundleNames,\n uniqueGoSignalId,\n }: {\n ids: GatedTransactionId[];\n bundleNames: string[];\n uniqueGoSignalId: string | undefined;\n }): Promise<void> => {\n if (ids.length === 0 && bundleNames.length === 0) {\n return;\n }\n\n approvedInfo.ids = new Set([...approvedInfo.ids, ...ids]);\n approvedInfo.bundleNames = new Set([...approvedInfo.bundleNames, ...bundleNames]);\n await Promise.allSettled(\n passthroughWorkflows.map((wf) => {\n return wf.signal(gatedTransactionGoSignalInternal, [\n { ids, bundleNames, uniqueGoSignalId },\n ]);\n }),\n );\n };\n fn.setHandler(gatedTransactionGoSignalInternal, gatedTransactionGoInternal);\n\n fn.setHandler(gatedTransactionGoSignal, async ({ ids, bundleNames }) => {\n const uniqueGoSignalId = 'TO_BE_IMPLEMENTED_WHEN_ADDING_THE_BUNDLER';\n // Only keep new transaction ids and bundle names\n const newIds = ids.filter((id) => !approvedInfo.ids.has(id));\n const newBundleNames = bundleNames.filter(\n (bundleName) => !approvedInfo.bundleNames.has(bundleName),\n );\n\n await gatedTransactionGoInternal({\n ids: newIds,\n bundleNames: newBundleNames,\n uniqueGoSignalId,\n });\n });\n\n const confirmationCallback: UserInteractionCallbacks['confirmationCallback'] = async (tx) => {\n const id = getIdForGatedTransaction(tx);\n pendingTransactions[id] = tx;\n\n await fn.condition(() => {\n return (\n approvedInfo.ids.has(id) ||\n (!!tx.bundleName && approvedInfo.bundleNames.has(tx.bundleName))\n );\n });\n\n sentTransactions[id] = tx;\n delete pendingTransactions[id];\n return true;\n };\n\n const onResultCallback: UserInteractionCallbacks['onResultCallback'] = (result) => {\n const id = getIdForGatedTransaction(result);\n completedTransactions[id] = result;\n delete sentTransactions[id];\n };\n\n return { userInteractionCallbacks: { confirmationCallback, onResultCallback }, addChild };\n};\n"]}
|
|
@@ -25,5 +25,5 @@ var getIdForGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name((gtx) => {
|
|
|
25
25
|
exports.constructGatedTransaction = constructGatedTransaction;
|
|
26
26
|
exports.constructGatedTransactionFromPointer = constructGatedTransactionFromPointer;
|
|
27
27
|
exports.getIdForGatedTransaction = getIdForGatedTransaction;
|
|
28
|
-
//# sourceMappingURL=
|
|
29
|
-
//# sourceMappingURL=
|
|
28
|
+
//# sourceMappingURL=J2MWXBSK.cjs.map
|
|
29
|
+
//# sourceMappingURL=J2MWXBSK.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/gatedTx.ts"],"names":["constructGatedTransaction","gtx","dependencies","transactionType","constructGatedTransactionFromPointer","getIdForGatedTransaction","serializedUniqueIdKeys","uniqueIdKeys","Object","entries","map","k","v","join","name","chainName"],"mappings":";;;;;AAeO,IAAMA,yBAAAA,wCAKXC,GAAAA,KAAAA;AAoBE,EAAA,MAAMC,YAAAA,GAAeD,GAAAA,CAAIC,YAAAA,IAAiB,EAAA;AAC1C,EAAA,OAAO;IAAE,GAAGD,GAAAA;IAAKE,eAAAA,EAAiB,SAAA;AAAWD,IAAAA;AAAa,GAAA;AAC9D,CAAA,EA3ByC,2BAAA;AAyClC,IAAME,oCAAAA,wCAKXH,GAAAA,KAAAA;AAoBE,EAAA,OAAO;IACH,GAAGA,GAAAA;IACHE,eAAAA,EAAiB;AACrB,GAAA;AACJ,CAAA,EA7BoD,sCAAA;AA+B7C,IAAME,wBAAAA,wCAA4BJ,GAAAA,KAAAA;AACrC,EAAA,MAAMK,sBAAAA,GAAyBL,IAAIM,YAAAA,GAC7BC,MAAAA,CAAOC,QAAQR,GAAAA,CAAIM,YAAY,CAAA,CAC1BG,GAAAA,CAAI,CAAC,CAACC,GAAGC,CAAAA,CAAAA,KAAO,GAAGD,CAAAA,CAAAA,CAAAA,EAAKC,CAAAA,CAAAA,CAAG,CAAA,CAC3BC,IAAAA,CAAK,GAAA,CAAA,GACV,EAAA;AAEN,EAAA,OAAO,GAAGZ,GAAAA,CAAIa,IAAI,IAAIb,GAAAA,CAAIc,SAAS,IAAIT,sBAAAA,CAAAA,CAAAA;AAC3C,CAAA,EARwC,0BAAA","file":"J2MWXBSK.cjs","sourcesContent":["import type { Transaction } from '@layerzerolabs/common-chain-model';\nimport type { FunctionPointer } from '@layerzerolabs/common-utils';\n\nimport type {\n BaseGatedTransaction,\n GatedTransaction,\n GatedTransactionDependencies,\n GatedTransactionId,\n OnChainDataComparison,\n ResolvedGatedTransaction,\n} from './schemata';\n\n/**\n * Builds a {@link GatedTransaction}\n */\nexport const constructGatedTransaction = <\n const Name extends string,\n Tx extends Transaction,\n Method extends (...args: any[]) => any,\n _Dependencies extends GatedTransactionDependencies,\n>(gtx: {\n name: Name;\n chainName: string;\n bundleName?: string;\n metadata?: {\n deployInfo?: {\n saveArtifact: boolean;\n contractName: string;\n };\n };\n check: {\n functionPointer: FunctionPointer<Method>;\n params: Parameters<Method>;\n expectedResult: OnChainDataComparison<Awaited<ReturnType<Method>>>;\n };\n uniqueIdKeys?: Record<string, string | number | boolean>;\n cacheable?: boolean;\n dependencies?: _Dependencies;\n transaction: Tx;\n}): GatedTransaction<Name, Tx, Method, any, _Dependencies> => {\n const dependencies = gtx.dependencies ?? ([] as any);\n return { ...gtx, transactionType: 'literal', dependencies };\n};\n\ntype BuildDeps<Params extends readonly ResolvedGatedTransaction[]> = Params extends []\n ? []\n : Params extends readonly [\n ResolvedGatedTransaction<infer Gtx>,\n ...infer Rest extends readonly ResolvedGatedTransaction[],\n ]\n ? [Gtx, ...BuildDeps<readonly [...Rest]>]\n : Params;\n\n/**\n * Builds a {@link GatedTransaction} from a pointer\n */\nexport const constructGatedTransactionFromPointer = <\n const Name extends string,\n TxType extends Transaction,\n Method extends (...args: any[]) => any,\n DepMethod extends (txs: any) => Promise<TxType>,\n>(gtx: {\n name: Name;\n chainName: string;\n bundleName?: string;\n metadata?: {\n deployInfo?: {\n saveArtifact: boolean;\n contractName: string;\n };\n };\n check: {\n functionPointer: FunctionPointer<Method>;\n params: Parameters<Method>;\n expectedResult: OnChainDataComparison<Awaited<ReturnType<Method>>>;\n };\n uniqueIdKeys?: Record<string, string | number | boolean>;\n cacheable?: boolean;\n dependencies: BuildDeps<Parameters<DepMethod>[0]>;\n getTransactionPointer: FunctionPointer<DepMethod>;\n}): GatedTransaction<Name, TxType, Method, DepMethod, BuildDeps<Parameters<DepMethod>[0]>> => {\n return {\n ...gtx,\n transactionType: 'functional',\n };\n};\n\nexport const getIdForGatedTransaction = (gtx: BaseGatedTransaction): GatedTransactionId => {\n const serializedUniqueIdKeys = gtx.uniqueIdKeys\n ? Object.entries(gtx.uniqueIdKeys)\n .map(([k, v]) => `${k}:${v}`)\n .join('-')\n : '';\n\n return `${gtx.name}-${gtx.chainName}-${serializedUniqueIdKeys}`;\n};\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { __name } from './VUOMXK5T.js';
|
|
2
2
|
import z from 'zod/v4';
|
|
3
|
+
import { transactionWithResultSchema } from '@layerzerolabs/common-chain-model';
|
|
3
4
|
import { functionSchema, customSchema } from '@layerzerolabs/zod-utils';
|
|
4
5
|
|
|
5
6
|
var gatedTransactionResultSchema = /* @__PURE__ */ __name((txWithResultSchema, onchainDataSchema) => z.union([
|
|
@@ -66,7 +67,17 @@ var createTxDependentActivitySchema = /* @__PURE__ */ __name((transactionSchema,
|
|
|
66
67
|
output: z.promise(transactionSchema)
|
|
67
68
|
});
|
|
68
69
|
}, "createTxDependentActivitySchema");
|
|
70
|
+
var createGatedTxCheckActivitySchema = /* @__PURE__ */ __name(({ input, output, transactionWithResultSchema: transactionWithResultSchema$1 }) => {
|
|
71
|
+
const txWithResultSchema = (transactionWithResultSchema$1 ?? transactionWithResultSchema).optional();
|
|
72
|
+
return functionSchema({
|
|
73
|
+
input: z.tuple([
|
|
74
|
+
...input ?? [],
|
|
75
|
+
txWithResultSchema
|
|
76
|
+
]),
|
|
77
|
+
output: z.promise(output)
|
|
78
|
+
});
|
|
79
|
+
}, "createGatedTxCheckActivitySchema");
|
|
69
80
|
|
|
70
|
-
export { GatedTransactionStatus, createTxDependentActivitySchema, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, resolvedGatedTransactionSchema };
|
|
71
|
-
//# sourceMappingURL=
|
|
72
|
-
//# sourceMappingURL=
|
|
81
|
+
export { GatedTransactionStatus, createGatedTxCheckActivitySchema, createTxDependentActivitySchema, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, resolvedGatedTransactionSchema };
|
|
82
|
+
//# sourceMappingURL=L6WLN6U3.js.map
|
|
83
|
+
//# sourceMappingURL=L6WLN6U3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/schemata.ts"],"names":["gatedTransactionResultSchema","txWithResultSchema","onchainDataSchema","z","union","object","status","literal","submittedTransaction","transactionError","any","finalOnChainState","GatedTransactionStatus","gatedTransactionCacheSchema","getCachedTxCheckData","functionSchema","input","tuple","output","promise","cacheSuccessfulTxCheckData","gatedTransactionSchema","_","customSchema","resolvedGatedTransactionSchema","createTxDependentActivitySchema","transactionSchema","txNumber","txs","Array","from","length","name","string","createGatedTxCheckActivitySchema","transactionWithResultSchema","_transactionWithResultSchema","optional"],"mappings":"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","file":"L6WLN6U3.js","sourcesContent":["import z from 'zod/v4';\n\nimport type { transactionSchema as _transactionSchema } from '@layerzerolabs/common-chain-model';\nimport {\n type Transaction,\n type TransactionWithResultFor,\n transactionWithResultSchema as _transactionWithResultSchema,\n} from '@layerzerolabs/common-chain-model';\nimport type { FunctionPointer } from '@layerzerolabs/common-utils';\nimport type { BuildTuple } from '@layerzerolabs/typescript-utils';\nimport type { InferredArray } from '@layerzerolabs/zod-utils';\nimport { customSchema, functionSchema } from '@layerzerolabs/zod-utils';\n\nexport type OnChainDataComparisonOperator<OnChainDataType> = OnChainDataType extends number\n ? '<' | '<=' | '=' | '!=' | '>' | '>='\n : '=' | '!=';\n\nexport type OnChainDataComparison<OnChainDataType> = {\n operator: OnChainDataComparisonOperator<OnChainDataType>;\n comparisonValue: OnChainDataType;\n};\n\nexport type GatedTransactionCheck<\n Method extends (...args: any[]) => Promise<any> = (...args: any[]) => Promise<unknown>,\n> = {\n functionPointer: FunctionPointer<Method>;\n params: Parameters<Method>;\n expectedResult: OnChainDataComparison<Awaited<ReturnType<Method>>>;\n};\n\n// Schema for gated transaction results\nexport const gatedTransactionResultSchema = <\n TxWithResultSchema extends typeof _transactionWithResultSchema,\n OnchainDataSchema extends z.ZodType,\n>(\n txWithResultSchema: TxWithResultSchema,\n onchainDataSchema: OnchainDataSchema,\n) =>\n z.union([\n z.object({\n status: z.literal(GatedTransactionStatus.NO_OP),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.SUCCESS),\n submittedTransaction: txWithResultSchema,\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.TRANSACTION_FAILED),\n transactionError: z.any(),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.FINAL_CHECK_FAILED),\n submittedTransaction: txWithResultSchema,\n finalOnChainState: onchainDataSchema,\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DEPENDENCY_FAILED),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DENIED),\n }),\n ]);\n\nexport type InferOnChainDataTypeFromCheck<Check> = Check extends (...args: any[]) => infer Ret\n ? Awaited<Ret>\n : unknown;\nexport type InferOnChainDataTypeFromGatedTransaction<GatedTx extends GatedTransaction> =\n InferOnChainDataTypeFromCheck<GatedTx['check']>;\n\nexport type GatedTransactionDependencies = GatedTransaction[];\nexport type BaseGatedTransaction<\n Name extends string = string,\n CheckMethod extends (...args: any[]) => any = (...args: any[]) => any,\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = {\n name: Name;\n bundleName?: string;\n metadata?: {\n deployInfo?: {\n saveArtifact: boolean;\n contractName: string;\n };\n };\n chainName: string;\n check: GatedTransactionCheck<CheckMethod>;\n dependencies: _Dependencies;\n cacheable?: boolean;\n uniqueIdKeys?: Record<string, string | number | boolean>;\n};\n\nexport type LiteralGatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckMethod extends (...args: any[]) => any = (...args: any[]) => any,\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = BaseGatedTransaction<Name, CheckMethod, _Dependencies> & {\n transactionType: 'literal';\n transaction: TxType;\n};\n\nexport type FunctionalGatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckMethod extends (...args: any[]) => any = (...args: any[]) => any,\n DepMethod extends (txs: any) => Promise<TxType> = (txs: any) => Promise<any>,\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = BaseGatedTransaction<Name, CheckMethod, _Dependencies> & {\n transactionType: 'functional';\n getTransactionPointer: FunctionPointer<DepMethod>;\n};\n\nexport type GatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckMethod extends (...args: any[]) => any = (...args: any[]) => any,\n DepMethod extends (txs: any) => Promise<TxType> = (txs: any) => Promise<any>,\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> =\n | LiteralGatedTransaction<Name, TxType, CheckMethod, _Dependencies>\n | FunctionalGatedTransaction<Name, TxType, CheckMethod, DepMethod, _Dependencies>;\n\nexport type BaseGatedTransactionFor<GatedTx extends GatedTransaction> =\n GatedTx extends GatedTransaction<infer Name, any, infer CheckMethod, any, infer _Dependencies>\n ? BaseGatedTransaction<Name, CheckMethod, _Dependencies>\n : never;\n\nexport enum GatedTransactionStatus {\n NO_OP = 'no_op',\n SUCCESS = 'success',\n TRANSACTION_FAILED = 'transaction_failed',\n FINAL_CHECK_FAILED = 'final_check_failed',\n DEPENDENCY_FAILED = 'dependency_failed',\n DENIED = 'denied',\n}\n\ntype NoOpGatedTransaction = {\n status: GatedTransactionStatus.NO_OP;\n};\n\ntype SuccessfulGatedTransaction<TxType extends Transaction> = {\n status: GatedTransactionStatus.SUCCESS;\n submittedTransaction: TransactionWithResultFor<TxType>;\n};\n\ntype TxFailedGatedTransaction = {\n status: GatedTransactionStatus.TRANSACTION_FAILED;\n transactionError: any;\n};\n\ntype CheckFailedGatedTransaction<GatedTx extends GatedTransaction, TxType extends Transaction> = {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED;\n submittedTransaction: TransactionWithResultFor<TxType>;\n finalOnChainState: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n};\n\ntype DependencyFailedGatedTransaction = {\n status: GatedTransactionStatus.DEPENDENCY_FAILED;\n};\n\ntype DeniedGatedTransaction = {\n status: GatedTransactionStatus.DENIED;\n};\n\nexport type GatedTransactionResult<\n GatedTx extends GatedTransaction = GatedTransaction,\n TxType extends Transaction = Transaction,\n> =\n | NoOpGatedTransaction\n | SuccessfulGatedTransaction<TxType>\n | TxFailedGatedTransaction\n | CheckFailedGatedTransaction<GatedTx, TxType>\n | DependencyFailedGatedTransaction\n | DeniedGatedTransaction;\n\nexport const gatedTransactionCacheSchema = z.object({\n getCachedTxCheckData: functionSchema({\n input: z.tuple([z.any()]),\n output: z.promise(z.any()),\n }) as z.ZodType<\n <GatedTx extends GatedTransaction>(\n gtx: GatedTx,\n ) => Promise<InferOnChainDataTypeFromGatedTransaction<GatedTx> | undefined>\n >,\n cacheSuccessfulTxCheckData: functionSchema({\n input: z.tuple([z.any(), z.any()]),\n output: z.promise(z.any()),\n }) as z.ZodType<\n <GatedTx extends GatedTransaction>(\n gtx: GatedTx,\n data: InferOnChainDataTypeFromGatedTransaction<GatedTx>,\n ) => Promise<void>\n >,\n});\n\nexport type IGatedTransactionCache = z.infer<typeof gatedTransactionCacheSchema>;\n\n/**\n * name-chain-uniqueIdKeys\n *\n * E.g., setDelegate-ethereum-oAppAddress:0xMY_OAPP\n */\nexport type GatedTransactionId = `${string}-${string}-${string}`;\n\nexport type ResolvedGatedTransaction<\n GatedTx extends GatedTransaction = GatedTransaction,\n TxType extends Transaction = Transaction,\n> = BaseGatedTransactionFor<GatedTx> & {\n result: GatedTransactionResult<GatedTx, TxType>;\n};\n\nexport type UserInteractionCallbacks = {\n confirmationCallback?: (gtx: GatedTransaction) => Promise<boolean>;\n onResultCallback?: (result: ResolvedGatedTransaction) => void;\n};\n\nexport const gatedTransactionSchema = <\n Name extends z.ZodString | z.ZodLiteral<string> = z.ZodString,\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n>(_?: {\n name?: Name;\n transactionSchema?: TransactionSchema;\n}) => customSchema<GatedTransaction<z.infer<Name>, z.infer<TransactionSchema>>>();\n\nexport const resolvedGatedTransactionSchema = <\n Name extends z.ZodString | z.ZodLiteral<string> = z.ZodString,\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n>(_?: {\n name?: Name;\n transactionSchema?: TransactionSchema;\n}) =>\n customSchema<\n ResolvedGatedTransaction<\n GatedTransaction<z.infer<Name>, z.infer<TransactionSchema>>,\n z.infer<TransactionSchema>\n >\n >();\n\n/**\n * Builds a schema for an activity that builds a transaction based on the results of other transactions\n * @param transactionSchema The schema for the transaction to be built\n * @param transactionWithResultSchema The schema for the results of the transactions you're building off of\n * @param txNumber The number of transactions you're building off of\n * @returns A schema for the activity that builds the transaction\n */\nexport const createTxDependentActivitySchema = <\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n const TxNumber extends number = 1,\n>(\n transactionSchema: TransactionSchema,\n txNumber: TxNumber,\n) => {\n const txs = Array.from({ length: txNumber }, () =>\n resolvedGatedTransactionSchema({\n name: z.string(),\n transactionSchema: transactionSchema,\n }),\n );\n return functionSchema({\n input: z.tuple([z.tuple(txs as any)]),\n output: z.promise(transactionSchema),\n }) as z.ZodType<\n (\n txs: BuildTuple<\n ResolvedGatedTransaction<\n GatedTransaction<string, z.infer<TransactionSchema>, any, any, any>\n >,\n TxNumber\n >,\n ) => Promise<z.infer<TransactionSchema>>\n >;\n};\n\nexport const createGatedTxCheckActivitySchema = <\n Output extends z.ZodType,\n const Input extends z.ZodType[] = [],\n TransactionWithResultSchema extends\n typeof _transactionWithResultSchema = typeof _transactionWithResultSchema,\n>({\n input,\n output,\n transactionWithResultSchema,\n}: {\n input?: Input;\n transactionWithResultSchema?: TransactionWithResultSchema;\n output: Output;\n}) => {\n const txWithResultSchema = (\n transactionWithResultSchema ?? _transactionWithResultSchema\n ).optional();\n\n return functionSchema({\n input: z.tuple([...(input ?? []), txWithResultSchema] as any),\n output: z.promise(output),\n }) as z.ZodType<\n (\n ...args: [...InferredArray<Input>, z.infer<TransactionWithResultSchema>?]\n ) => Promise<z.infer<Output>>\n >;\n};\n\nexport type ResolvedGatedTransactionDependencies<GatedTx extends GatedTransaction> =\n GatedTx extends GatedTransaction<any, any, any, any, infer _Dependencies>\n ? {\n [K in keyof _Dependencies]?: ResolvedGatedTransaction<_Dependencies[K]>;\n }\n : never;\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getIdForGatedTransaction } from './
|
|
2
|
-
import { GatedTransactionStatus } from './
|
|
1
|
+
import { getIdForGatedTransaction } from './VJKKTCPP.js';
|
|
2
|
+
import { GatedTransactionStatus } from './L6WLN6U3.js';
|
|
3
3
|
import { __name } from './VUOMXK5T.js';
|
|
4
4
|
import isEqual from 'lodash.isequal';
|
|
5
5
|
|
|
@@ -62,7 +62,8 @@ var resolveGatedTransaction = /* @__PURE__ */ __name(async ({ activityRegistry,
|
|
|
62
62
|
check: gatedTx.check,
|
|
63
63
|
dependencies: gatedTx.dependencies,
|
|
64
64
|
cacheable: gatedTx.cacheable,
|
|
65
|
-
uniqueIdKeys: gatedTx.uniqueIdKeys
|
|
65
|
+
uniqueIdKeys: gatedTx.uniqueIdKeys,
|
|
66
|
+
metadata: gatedTx.metadata
|
|
66
67
|
};
|
|
67
68
|
const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => getIdForGatedTransaction(tx));
|
|
68
69
|
const dependenciesAreAllProcessed = /* @__PURE__ */ __name(() => dependencyIds.every((id) => getTransactionResult(id)), "dependenciesAreAllProcessed");
|
|
@@ -155,6 +156,7 @@ ${stringify(finalCheckResult.onChainData)}`);
|
|
|
155
156
|
};
|
|
156
157
|
}
|
|
157
158
|
} catch (e) {
|
|
159
|
+
console.error("Gated transaction failed", e);
|
|
158
160
|
return {
|
|
159
161
|
resolvedGatedTransaction: {
|
|
160
162
|
...baseGatedTx,
|
|
@@ -228,5 +230,5 @@ var resolveSequencedGatedTransactions = /* @__PURE__ */ __name(async ({ activity
|
|
|
228
230
|
}, "resolveSequencedGatedTransactions");
|
|
229
231
|
|
|
230
232
|
export { resolveGatedTransactions, resolveSequencedGatedTransactions };
|
|
231
|
-
//# sourceMappingURL=
|
|
232
|
-
//# sourceMappingURL=
|
|
233
|
+
//# sourceMappingURL=UR6B6V6H.js.map
|
|
234
|
+
//# sourceMappingURL=UR6B6V6H.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resolver.ts"],"names":["checkGatedTransaction","registry","gatedTransaction","cachedCheckResult","submittedTransaction","onChainData","undefined","params","check","callByPointer","functionPointer","expectationMet","expectedResult","operator","isEqual","comparisonValue","Error","extractGatedTransactionUnderlyingTransaction","deps","transactionType","transaction","getTransactionPointer","resolveGatedTransaction","activityRegistry","gatedTx","getTransactionResult","processTx","confirmationCallback","fn","cache","baseGatedTx","name","chainName","bundleName","dependencies","cacheable","uniqueIdKeys","metadata","dependencyIds","map","tx","getIdForGatedTransaction","dependenciesAreAllProcessed","every","id","condition","dependenciesWereSuccessful","checkResult","resolvedGatedTransaction","result","status","GatedTransactionStatus","DEPENDENCY_FAILED","lastCheckResult","initialCheckResult","getCachedTxCheckData","cacheSuccessfulTxCheckData","NO_OP","confirmation","DENIED","depsResults","dep","resolved","underlying","processResult","finalCheckResult","SUCCESS","stringify","o","JSON","_","v","toString","console","error","FINAL_CHECK_FAILED","finalOnChainState","e","TRANSACTION_FAILED","transactionError","resolveGatedTransactions","gatedTxes","userInteractionCallbacks","allInternalIds","allDeps","flatMap","allExternalDeps","filter","includes","results","Object","fromEntries","Promise","all","gtxId","txFunctions","resId","onResultCallback","func","resolveSequencedGatedTransactions","seq","push"],"mappings":"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","file":"UR6B6V6H.js","sourcesContent":["import isEqual from 'lodash.isequal';\n\nimport type { ActivityRegistry } from '@layerzerolabs/common-activities';\nimport type {\n Transaction,\n TransactionResult,\n TransactionWithResult,\n} from '@layerzerolabs/common-chain-model';\nimport type { WorkflowFunctions } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n BaseGatedTransactionFor,\n GatedTransaction,\n GatedTransactionId,\n IGatedTransactionCache,\n InferOnChainDataTypeFromGatedTransaction,\n ResolvedGatedTransaction,\n ResolvedGatedTransactionDependencies,\n UserInteractionCallbacks,\n} from './schemata';\nimport { GatedTransactionStatus } from './schemata';\n\ntype OnChainCheckResult<DataType = any> = {\n expectationMet: boolean;\n onChainData: DataType;\n};\n\nconst checkGatedTransaction = async <\n GatedTx extends GatedTransaction,\n TxWithResult extends TransactionWithResult,\n>({\n registry,\n gatedTransaction,\n cachedCheckResult,\n submittedTransaction,\n}: {\n registry: ActivityRegistry;\n gatedTransaction: GatedTx;\n cachedCheckResult?: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n submittedTransaction?: TxWithResult;\n}): Promise<OnChainCheckResult<InferOnChainDataTypeFromGatedTransaction<GatedTx>>> => {\n let onChainData: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n if (cachedCheckResult !== undefined) {\n onChainData = cachedCheckResult;\n } else {\n // Always inject the processed transaction as the last parameter when available\n let params = gatedTransaction.check.params;\n if (submittedTransaction !== undefined) {\n params = [...gatedTransaction.check.params, submittedTransaction];\n }\n\n onChainData = await registry.callByPointer(gatedTransaction.check.functionPointer, params);\n }\n\n let expectationMet: boolean;\n\n switch (gatedTransaction.check.expectedResult.operator) {\n case '=':\n expectationMet = isEqual(\n onChainData,\n gatedTransaction.check.expectedResult.comparisonValue,\n );\n break;\n case '!=':\n expectationMet = !isEqual(\n onChainData,\n gatedTransaction.check.expectedResult.comparisonValue,\n );\n break;\n case '>':\n expectationMet =\n (onChainData as number) >\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n case '>=':\n expectationMet =\n (onChainData as number) >=\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n case '<':\n expectationMet =\n (onChainData as number) <\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n case '<=':\n expectationMet =\n (onChainData as number) <=\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n default:\n throw new Error(\n `Gated transaction operator \"${gatedTransaction.check.expectedResult.operator}\" is not supported`,\n );\n }\n\n return {\n expectationMet,\n onChainData,\n };\n};\n\nconst extractGatedTransactionUnderlyingTransaction = async <\n GatedTx extends GatedTransaction,\n TxType extends Transaction,\n>({\n registry,\n gatedTransaction,\n deps,\n}: {\n registry: ActivityRegistry;\n gatedTransaction: GatedTx;\n deps: ResolvedGatedTransactionDependencies<GatedTx>;\n}): Promise<TxType> => {\n if (gatedTransaction.transactionType === 'literal') {\n return gatedTransaction.transaction as TxType;\n } else {\n return await registry.callByPointer(gatedTransaction.getTransactionPointer, [deps]);\n }\n};\n\nconst resolveGatedTransaction = async <\n TxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TransactionResult>,\n>({\n activityRegistry,\n gatedTx,\n getTransactionResult,\n processTx,\n confirmationCallback,\n fn,\n cache,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTx: GatedTx;\n processTx: ProcessTx;\n getTransactionResult: (gtxId: GatedTransactionId) =>\n | {\n resolved?: ResolvedGatedTransaction;\n checkResult: { onChainData?: any; expectationMet: boolean };\n }\n | undefined;\n confirmationCallback: NonNullable<UserInteractionCallbacks['confirmationCallback']>;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n}): Promise<{\n resolvedGatedTransaction: ResolvedGatedTransaction<GatedTx>;\n lastCheckResult: OnChainCheckResult | null;\n}> => {\n const baseGatedTx = {\n name: gatedTx.name,\n chainName: gatedTx.chainName,\n bundleName: gatedTx.bundleName,\n check: gatedTx.check,\n dependencies: gatedTx.dependencies,\n cacheable: gatedTx.cacheable,\n uniqueIdKeys: gatedTx.uniqueIdKeys,\n metadata: gatedTx.metadata,\n } as BaseGatedTransactionFor<GatedTx>;\n\n const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => getIdForGatedTransaction(tx));\n\n const dependenciesAreAllProcessed = () => dependencyIds.every((id) => getTransactionResult(id));\n\n await fn.condition(dependenciesAreAllProcessed);\n\n //check that the dependencies succeeded\n const dependenciesWereSuccessful = dependencyIds.every(\n (id) => getTransactionResult(id)?.checkResult.expectationMet,\n );\n\n if (!dependenciesWereSuccessful) {\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.DEPENDENCY_FAILED,\n },\n },\n lastCheckResult: null,\n };\n }\n\n const initialCheckResult = await checkGatedTransaction({\n gatedTransaction: gatedTx,\n registry: activityRegistry,\n cachedCheckResult: await cache?.getCachedTxCheckData?.(gatedTx),\n });\n\n await cache?.cacheSuccessfulTxCheckData?.(gatedTx, initialCheckResult.onChainData);\n\n if (initialCheckResult.expectationMet) {\n //already met\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.NO_OP,\n },\n },\n lastCheckResult: initialCheckResult,\n };\n }\n\n //get confirmation before sending\n const confirmation = await confirmationCallback(gatedTx);\n if (!confirmation) {\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.DENIED,\n },\n },\n lastCheckResult: initialCheckResult,\n };\n }\n\n //send the tx\n try {\n const depsResults = gatedTx.dependencies.map(\n (dep) => getTransactionResult(getIdForGatedTransaction(dep))!.resolved!,\n ) as ResolvedGatedTransactionDependencies<GatedTx>;\n // get the underlying calldata\n const underlying = await extractGatedTransactionUnderlyingTransaction<GatedTx, TxType>({\n registry: activityRegistry,\n gatedTransaction: gatedTx,\n deps: depsResults,\n });\n const processResult = await processTx(underlying);\n const submittedTransaction = { ...underlying, result: processResult };\n const finalCheckResult = await checkGatedTransaction({\n registry: activityRegistry,\n gatedTransaction: gatedTx,\n submittedTransaction,\n });\n\n await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);\n\n if (finalCheckResult.expectationMet) {\n //sent and successful\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.SUCCESS,\n submittedTransaction,\n },\n },\n lastCheckResult: finalCheckResult,\n };\n } else {\n //sent and unsuccessful\n const stringify = (o: any) =>\n JSON.stringify(o, (_, v) => (typeof v === 'bigint' ? v.toString() : v), 2);\n console.error(\n `Gated transaction ${gatedTx.name} final check failed:\\nExpected result ${stringify(gatedTx.check.expectedResult.comparisonValue)}, but got:\\n${stringify(finalCheckResult.onChainData)}`,\n );\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED,\n submittedTransaction,\n finalOnChainState: finalCheckResult.onChainData,\n },\n },\n lastCheckResult: finalCheckResult,\n };\n }\n } catch (e) {\n console.error('Gated transaction failed', e);\n //sent and failed\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.TRANSACTION_FAILED,\n transactionError: e,\n },\n },\n lastCheckResult: initialCheckResult,\n };\n }\n};\n\nexport const resolveGatedTransactions = async <\n TxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TransactionResult>,\n>({\n activityRegistry,\n gatedTxes,\n processTx,\n fn,\n cache,\n userInteractionCallbacks,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTxes: GatedTx[];\n processTx: ProcessTx;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n userInteractionCallbacks?: UserInteractionCallbacks;\n}): Promise<ResolvedGatedTransaction[]> => {\n //compute deps\n const allInternalIds = gatedTxes.map((tx) => getIdForGatedTransaction(tx));\n const allDeps = gatedTxes.flatMap((tx) => tx.dependencies ?? []);\n const allExternalDeps = allDeps.filter(\n (tx) => !allInternalIds.includes(getIdForGatedTransaction(tx)),\n );\n\n //prepopulate results for external dependencies\n //this map is only used for internal status tracking\n const results: Record<\n GatedTransactionId,\n {\n resolved?: ResolvedGatedTransaction;\n checkResult: { onChainData?: any; expectationMet: boolean };\n }\n > = Object.fromEntries(\n await Promise.all(\n allExternalDeps.map(async (tx) => {\n const checkResult = await checkGatedTransaction({\n gatedTransaction: tx,\n registry: activityRegistry,\n cachedCheckResult: await cache?.getCachedTxCheckData?.(tx),\n });\n\n return [\n getIdForGatedTransaction(tx),\n {\n checkResult,\n },\n ];\n }),\n ),\n );\n\n const getTransactionResult = (gtxId: GatedTransactionId) => results[gtxId];\n\n const txFunctions = gatedTxes.map((tx) => async () => {\n const { resolvedGatedTransaction, lastCheckResult } = await resolveGatedTransaction<\n TxType,\n GatedTx,\n ProcessTx\n >({\n gatedTx: tx,\n activityRegistry,\n getTransactionResult,\n processTx,\n confirmationCallback:\n userInteractionCallbacks?.confirmationCallback ?? (async () => true),\n fn,\n cache,\n });\n\n const resId = getIdForGatedTransaction(resolvedGatedTransaction);\n results[resId] = {\n resolved: resolvedGatedTransaction,\n checkResult: {\n expectationMet: [\n GatedTransactionStatus.SUCCESS,\n GatedTransactionStatus.NO_OP,\n ].includes(resolvedGatedTransaction.result.status),\n onChainData: lastCheckResult?.onChainData ?? undefined,\n },\n };\n\n userInteractionCallbacks?.onResultCallback?.(resolvedGatedTransaction);\n return resolvedGatedTransaction;\n });\n\n return await Promise.all(txFunctions.map((func) => func()));\n};\n\nexport const resolveSequencedGatedTransactions = async <\n TxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TransactionResult>,\n>({\n activityRegistry,\n gatedTxes,\n processTx,\n cache,\n userInteractionCallbacks,\n fn,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTxes: GatedTx[][];\n processTx: ProcessTx;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n userInteractionCallbacks?: UserInteractionCallbacks;\n}) => {\n const results = [];\n for (const seq of gatedTxes) {\n const result = await resolveGatedTransactions<TxType, GatedTx, ProcessTx>({\n gatedTxes: seq,\n activityRegistry,\n processTx,\n cache,\n userInteractionCallbacks,\n fn,\n });\n results.push(result);\n }\n\n return results;\n};\n"]}
|