@layerzerolabs/gated-transaction 0.0.35 → 0.0.40
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 +30 -30
- package/.turbo/turbo-checkdeps.log +1 -1
- package/.turbo/turbo-test.log +27 -3
- package/dist/{TYY6L3E5.cjs → 2WHEGCDB.cjs} +28 -21
- package/dist/2WHEGCDB.cjs.map +1 -0
- package/dist/{GP6ZA65F.js → 7GRIENQP.js} +3 -3
- package/dist/7GRIENQP.js.map +1 -0
- package/dist/{BCFOKBQQ.js → GZTW336Z.js} +14 -7
- package/dist/GZTW336Z.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/{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 +13 -4
- 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
|
|
@@ -11,44 +11,44 @@
|
|
|
11
11
|
[34mCJS[39m Build start
|
|
12
12
|
[34mESM[39m Build start
|
|
13
13
|
[32mCJS[39m [1mdist/gatedTransactionSignalLock.cjs [22m[32m697.00 B[39m
|
|
14
|
-
[32mCJS[39m [1mdist/index.cjs [22m[32m2.
|
|
15
|
-
[32mCJS[39m [1mdist/
|
|
16
|
-
[32mCJS[39m [1mdist/
|
|
17
|
-
[32mCJS[39m [1mdist/
|
|
18
|
-
[32mCJS[39m [1mdist/types.cjs [22m[32m1.10 KB[39m
|
|
19
|
-
[32mCJS[39m [1mdist/TYY6L3E5.cjs [22m[32m8.88 KB[39m
|
|
14
|
+
[32mCJS[39m [1mdist/index.cjs [22m[32m2.65 KB[39m
|
|
15
|
+
[32mCJS[39m [1mdist/resolver.cjs [22m[32m549.00 B[39m
|
|
16
|
+
[32mCJS[39m [1mdist/I7JOK2BP.cjs [22m[32m3.69 KB[39m
|
|
17
|
+
[32mCJS[39m [1mdist/J2MWXBSK.cjs [22m[32m1.08 KB[39m
|
|
20
18
|
[32mCJS[39m [1mdist/YJF4D23A.cjs [22m[32m245.00 B[39m
|
|
21
|
-
[32mCJS[39m [1mdist/
|
|
22
|
-
[32mCJS[39m [1mdist/
|
|
19
|
+
[32mCJS[39m [1mdist/2WHEGCDB.cjs [22m[32m9.11 KB[39m
|
|
20
|
+
[32mCJS[39m [1mdist/ZKCNP42T.cjs [22m[32m3.91 KB[39m
|
|
21
|
+
[32mCJS[39m [1mdist/gatedTx.cjs [22m[32m652.00 B[39m
|
|
22
|
+
[32mCJS[39m [1mdist/schemata.cjs [22m[32m1.26 KB[39m
|
|
23
23
|
[32mCJS[39m [1mdist/gatedTransactionSignalLock.cjs.map [22m[32m91.00 B[39m
|
|
24
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
25
|
[32mCJS[39m [1mdist/resolver.cjs.map [22m[32m73.00 B[39m
|
|
28
|
-
[32mCJS[39m [1mdist/types.cjs.map [22m[32m70.00 B[39m
|
|
29
26
|
[32mCJS[39m [1mdist/YJF4D23A.cjs.map [22m[32m73.00 B[39m
|
|
30
|
-
[32mCJS[39m [1mdist/
|
|
31
|
-
[32mCJS[39m [1mdist/
|
|
27
|
+
[32mCJS[39m [1mdist/I7JOK2BP.cjs.map [22m[32m8.61 KB[39m
|
|
28
|
+
[32mCJS[39m [1mdist/ZKCNP42T.cjs.map [22m[32m14.00 KB[39m
|
|
29
|
+
[32mCJS[39m [1mdist/J2MWXBSK.cjs.map [22m[32m4.04 KB[39m
|
|
30
|
+
[32mCJS[39m [1mdist/2WHEGCDB.cjs.map [22m[32m23.22 KB[39m
|
|
32
31
|
[32mCJS[39m [1mdist/gatedTx.cjs.map [22m[32m72.00 B[39m
|
|
33
|
-
[32mCJS[39m
|
|
34
|
-
[
|
|
32
|
+
[32mCJS[39m [1mdist/schemata.cjs.map [22m[32m73.00 B[39m
|
|
33
|
+
[32mCJS[39m ⚡️ Build success in 189ms
|
|
34
|
+
[32mESM[39m [1mdist/index.js [22m[32m658.00 B[39m
|
|
35
35
|
[32mESM[39m [1mdist/gatedTransactionSignalLock.js [22m[32m270.00 B[39m
|
|
36
|
-
[32mESM[39m [1mdist/
|
|
37
|
-
[32mESM[39m [1mdist/GP6ZA65F.js [22m[32m3.47 KB[39m
|
|
36
|
+
[32mESM[39m [1mdist/gatedTx.js [22m[32m218.00 B[39m
|
|
38
37
|
[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/PGJAXI5M.js [22m[32m2.40 KB[39m
|
|
38
|
+
[32mESM[39m [1mdist/VJKKTCPP.js [22m[32m935.00 B[39m
|
|
39
|
+
[32mESM[39m [1mdist/7GRIENQP.js [22m[32m3.47 KB[39m
|
|
40
|
+
[32mESM[39m [1mdist/schemata.js [22m[32m335.00 B[39m
|
|
43
41
|
[32mESM[39m [1mdist/VUOMXK5T.js [22m[32m222.00 B[39m
|
|
44
|
-
[32mESM[39m [1mdist/
|
|
45
|
-
[32mESM[39m [1mdist/
|
|
42
|
+
[32mESM[39m [1mdist/GZTW336Z.js [22m[32m8.57 KB[39m
|
|
43
|
+
[32mESM[39m [1mdist/L6WLN6U3.js [22m[32m2.93 KB[39m
|
|
46
44
|
[32mESM[39m [1mdist/index.js.map [22m[32m69.00 B[39m
|
|
45
|
+
[32mESM[39m [1mdist/gatedTransactionSignalLock.js.map [22m[32m90.00 B[39m
|
|
47
46
|
[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/BCFOKBQQ.js.map [22m[32m22.57 KB[39m
|
|
52
|
-
[32mESM[39m [1mdist/PGJAXI5M.js.map [22m[32m12.39 KB[39m
|
|
47
|
+
[32mESM[39m [1mdist/gatedTx.js.map [22m[32m71.00 B[39m
|
|
48
|
+
[32mESM[39m [1mdist/VJKKTCPP.js.map [22m[32m4.04 KB[39m
|
|
49
|
+
[32mESM[39m [1mdist/schemata.js.map [22m[32m72.00 B[39m
|
|
53
50
|
[32mESM[39m [1mdist/VUOMXK5T.js.map [22m[32m72.00 B[39m
|
|
54
|
-
[32mESM[39m
|
|
51
|
+
[32mESM[39m [1mdist/7GRIENQP.js.map [22m[32m8.59 KB[39m
|
|
52
|
+
[32mESM[39m [1mdist/GZTW336Z.js.map [22m[32m23.18 KB[39m
|
|
53
|
+
[32mESM[39m [1mdist/L6WLN6U3.js.map [22m[32m13.94 KB[39m
|
|
54
|
+
[32mESM[39m ⚡️ Build success in 189ms
|
|
@@ -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:238:37[90m)[39m
|
|
14
|
+
at [90m/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/[39msrc/resolver.ts:351: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:382: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:119:29[90m)[39m
|
|
25
|
+
at resolveGatedTransaction [90m(/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/[39msrc/resolver.ts:233:34[90m)[39m
|
|
26
|
+
at [90m/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/[39msrc/resolver.ts:351: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:382: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 415[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
|
|
13
|
-
[2m Duration [22m
|
|
36
|
+
[2m Start at [22m 18:38:08
|
|
37
|
+
[2m Duration [22m 926ms[2m (transform 128ms, setup 0ms, collect 219ms, tests 415ms, environment 0ms, prepare 87ms)[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
|
|
|
@@ -52,13 +52,18 @@ var checkGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ registr
|
|
|
52
52
|
};
|
|
53
53
|
}, "checkGatedTransaction");
|
|
54
54
|
var extractGatedTransactionUnderlyingTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ registry, gatedTransaction, deps }) => {
|
|
55
|
+
let tx;
|
|
55
56
|
if (gatedTransaction.transactionType === "literal") {
|
|
56
|
-
|
|
57
|
+
tx = gatedTransaction.transaction;
|
|
57
58
|
} else {
|
|
58
|
-
|
|
59
|
+
tx = await registry.callByPointer(gatedTransaction.getTransactionPointer, [
|
|
59
60
|
deps
|
|
60
61
|
]);
|
|
61
62
|
}
|
|
63
|
+
if (!tx.parallelizingKey) {
|
|
64
|
+
tx.parallelizingKey = `MISSING_PARALLELIZING_KEY-${J2MWXBSK_cjs.getIdForGatedTransaction(gatedTransaction)}`;
|
|
65
|
+
}
|
|
66
|
+
return tx;
|
|
62
67
|
}, "extractGatedTransactionUnderlyingTransaction");
|
|
63
68
|
var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activityRegistry, gatedTx, getTransactionResult, processTx, confirmationCallback, fn, cache }) => {
|
|
64
69
|
const baseGatedTx = {
|
|
@@ -68,9 +73,10 @@ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activ
|
|
|
68
73
|
check: gatedTx.check,
|
|
69
74
|
dependencies: gatedTx.dependencies,
|
|
70
75
|
cacheable: gatedTx.cacheable,
|
|
71
|
-
uniqueIdKeys: gatedTx.uniqueIdKeys
|
|
76
|
+
uniqueIdKeys: gatedTx.uniqueIdKeys,
|
|
77
|
+
metadata: gatedTx.metadata
|
|
72
78
|
};
|
|
73
|
-
const dependencyIds = (gatedTx.dependencies ?? []).map((tx) =>
|
|
79
|
+
const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => J2MWXBSK_cjs.getIdForGatedTransaction(tx));
|
|
74
80
|
const dependenciesAreAllProcessed = /* @__PURE__ */ YJF4D23A_cjs.__name(() => dependencyIds.every((id) => getTransactionResult(id)), "dependenciesAreAllProcessed");
|
|
75
81
|
await fn.condition(dependenciesAreAllProcessed);
|
|
76
82
|
const dependenciesWereSuccessful = dependencyIds.every((id) => getTransactionResult(id)?.checkResult.expectationMet);
|
|
@@ -79,7 +85,7 @@ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activ
|
|
|
79
85
|
resolvedGatedTransaction: {
|
|
80
86
|
...baseGatedTx,
|
|
81
87
|
result: {
|
|
82
|
-
status:
|
|
88
|
+
status: ZKCNP42T_cjs.GatedTransactionStatus.DEPENDENCY_FAILED
|
|
83
89
|
}
|
|
84
90
|
},
|
|
85
91
|
lastCheckResult: null
|
|
@@ -96,7 +102,7 @@ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activ
|
|
|
96
102
|
resolvedGatedTransaction: {
|
|
97
103
|
...baseGatedTx,
|
|
98
104
|
result: {
|
|
99
|
-
status:
|
|
105
|
+
status: ZKCNP42T_cjs.GatedTransactionStatus.NO_OP
|
|
100
106
|
}
|
|
101
107
|
},
|
|
102
108
|
lastCheckResult: initialCheckResult
|
|
@@ -108,14 +114,14 @@ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activ
|
|
|
108
114
|
resolvedGatedTransaction: {
|
|
109
115
|
...baseGatedTx,
|
|
110
116
|
result: {
|
|
111
|
-
status:
|
|
117
|
+
status: ZKCNP42T_cjs.GatedTransactionStatus.DENIED
|
|
112
118
|
}
|
|
113
119
|
},
|
|
114
120
|
lastCheckResult: initialCheckResult
|
|
115
121
|
};
|
|
116
122
|
}
|
|
117
123
|
try {
|
|
118
|
-
const depsResults = gatedTx.dependencies.map((dep) => getTransactionResult(
|
|
124
|
+
const depsResults = gatedTx.dependencies.map((dep) => getTransactionResult(J2MWXBSK_cjs.getIdForGatedTransaction(dep)).resolved);
|
|
119
125
|
const underlying = await extractGatedTransactionUnderlyingTransaction({
|
|
120
126
|
registry: activityRegistry,
|
|
121
127
|
gatedTransaction: gatedTx,
|
|
@@ -137,7 +143,7 @@ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activ
|
|
|
137
143
|
resolvedGatedTransaction: {
|
|
138
144
|
...baseGatedTx,
|
|
139
145
|
result: {
|
|
140
|
-
status:
|
|
146
|
+
status: ZKCNP42T_cjs.GatedTransactionStatus.SUCCESS,
|
|
141
147
|
submittedTransaction
|
|
142
148
|
}
|
|
143
149
|
},
|
|
@@ -152,7 +158,7 @@ ${stringify(finalCheckResult.onChainData)}`);
|
|
|
152
158
|
resolvedGatedTransaction: {
|
|
153
159
|
...baseGatedTx,
|
|
154
160
|
result: {
|
|
155
|
-
status:
|
|
161
|
+
status: ZKCNP42T_cjs.GatedTransactionStatus.FINAL_CHECK_FAILED,
|
|
156
162
|
submittedTransaction,
|
|
157
163
|
finalOnChainState: finalCheckResult.onChainData
|
|
158
164
|
}
|
|
@@ -161,11 +167,12 @@ ${stringify(finalCheckResult.onChainData)}`);
|
|
|
161
167
|
};
|
|
162
168
|
}
|
|
163
169
|
} catch (e) {
|
|
170
|
+
console.error("Gated transaction failed", e);
|
|
164
171
|
return {
|
|
165
172
|
resolvedGatedTransaction: {
|
|
166
173
|
...baseGatedTx,
|
|
167
174
|
result: {
|
|
168
|
-
status:
|
|
175
|
+
status: ZKCNP42T_cjs.GatedTransactionStatus.TRANSACTION_FAILED,
|
|
169
176
|
transactionError: e
|
|
170
177
|
}
|
|
171
178
|
},
|
|
@@ -174,9 +181,9 @@ ${stringify(finalCheckResult.onChainData)}`);
|
|
|
174
181
|
}
|
|
175
182
|
}, "resolveGatedTransaction");
|
|
176
183
|
var resolveGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activityRegistry, gatedTxes, processTx, fn, cache, userInteractionCallbacks }) => {
|
|
177
|
-
const allInternalIds = gatedTxes.map((tx) =>
|
|
184
|
+
const allInternalIds = gatedTxes.map((tx) => J2MWXBSK_cjs.getIdForGatedTransaction(tx));
|
|
178
185
|
const allDeps = gatedTxes.flatMap((tx) => tx.dependencies ?? []);
|
|
179
|
-
const allExternalDeps = allDeps.filter((tx) => !allInternalIds.includes(
|
|
186
|
+
const allExternalDeps = allDeps.filter((tx) => !allInternalIds.includes(J2MWXBSK_cjs.getIdForGatedTransaction(tx)));
|
|
180
187
|
const results = Object.fromEntries(await Promise.all(allExternalDeps.map(async (tx) => {
|
|
181
188
|
const checkResult = await checkGatedTransaction({
|
|
182
189
|
gatedTransaction: tx,
|
|
@@ -184,7 +191,7 @@ var resolveGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ acti
|
|
|
184
191
|
cachedCheckResult: await cache?.getCachedTxCheckData?.(tx)
|
|
185
192
|
});
|
|
186
193
|
return [
|
|
187
|
-
|
|
194
|
+
J2MWXBSK_cjs.getIdForGatedTransaction(tx),
|
|
188
195
|
{
|
|
189
196
|
checkResult
|
|
190
197
|
}
|
|
@@ -201,13 +208,13 @@ var resolveGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ acti
|
|
|
201
208
|
fn,
|
|
202
209
|
cache
|
|
203
210
|
});
|
|
204
|
-
const resId =
|
|
211
|
+
const resId = J2MWXBSK_cjs.getIdForGatedTransaction(resolvedGatedTransaction);
|
|
205
212
|
results[resId] = {
|
|
206
213
|
resolved: resolvedGatedTransaction,
|
|
207
214
|
checkResult: {
|
|
208
215
|
expectationMet: [
|
|
209
|
-
|
|
210
|
-
|
|
216
|
+
ZKCNP42T_cjs.GatedTransactionStatus.SUCCESS,
|
|
217
|
+
ZKCNP42T_cjs.GatedTransactionStatus.NO_OP
|
|
211
218
|
].includes(resolvedGatedTransaction.result.status),
|
|
212
219
|
onChainData: lastCheckResult?.onChainData ?? void 0
|
|
213
220
|
}
|
|
@@ -235,5 +242,5 @@ var resolveSequencedGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(asyn
|
|
|
235
242
|
|
|
236
243
|
exports.resolveGatedTransactions = resolveGatedTransactions;
|
|
237
244
|
exports.resolveSequencedGatedTransactions = resolveSequencedGatedTransactions;
|
|
238
|
-
//# sourceMappingURL=
|
|
239
|
-
//# sourceMappingURL=
|
|
245
|
+
//# sourceMappingURL=2WHEGCDB.cjs.map
|
|
246
|
+
//# sourceMappingURL=2WHEGCDB.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","tx","transactionType","transaction","getTransactionPointer","parallelizingKey","getIdForGatedTransaction","resolveGatedTransaction","activityRegistry","gatedTx","getTransactionResult","processTx","confirmationCallback","fn","cache","baseGatedTx","name","chainName","bundleName","dependencies","cacheable","uniqueIdKeys","metadata","dependencyIds","map","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":"2WHEGCDB.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 let tx: TxType;\n if (gatedTransaction.transactionType === 'literal') {\n tx = gatedTransaction.transaction as TxType;\n } else {\n tx = await registry.callByPointer(gatedTransaction.getTransactionPointer, [deps]);\n }\n\n if (!tx.parallelizingKey) {\n tx.parallelizingKey = `MISSING_PARALLELIZING_KEY-${getIdForGatedTransaction(gatedTransaction)}`;\n }\n\n return tx;\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,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
|
|
|
@@ -46,13 +46,18 @@ var checkGatedTransaction = /* @__PURE__ */ __name(async ({ registry, gatedTrans
|
|
|
46
46
|
};
|
|
47
47
|
}, "checkGatedTransaction");
|
|
48
48
|
var extractGatedTransactionUnderlyingTransaction = /* @__PURE__ */ __name(async ({ registry, gatedTransaction, deps }) => {
|
|
49
|
+
let tx;
|
|
49
50
|
if (gatedTransaction.transactionType === "literal") {
|
|
50
|
-
|
|
51
|
+
tx = gatedTransaction.transaction;
|
|
51
52
|
} else {
|
|
52
|
-
|
|
53
|
+
tx = await registry.callByPointer(gatedTransaction.getTransactionPointer, [
|
|
53
54
|
deps
|
|
54
55
|
]);
|
|
55
56
|
}
|
|
57
|
+
if (!tx.parallelizingKey) {
|
|
58
|
+
tx.parallelizingKey = `MISSING_PARALLELIZING_KEY-${getIdForGatedTransaction(gatedTransaction)}`;
|
|
59
|
+
}
|
|
60
|
+
return tx;
|
|
56
61
|
}, "extractGatedTransactionUnderlyingTransaction");
|
|
57
62
|
var resolveGatedTransaction = /* @__PURE__ */ __name(async ({ activityRegistry, gatedTx, getTransactionResult, processTx, confirmationCallback, fn, cache }) => {
|
|
58
63
|
const baseGatedTx = {
|
|
@@ -62,7 +67,8 @@ var resolveGatedTransaction = /* @__PURE__ */ __name(async ({ activityRegistry,
|
|
|
62
67
|
check: gatedTx.check,
|
|
63
68
|
dependencies: gatedTx.dependencies,
|
|
64
69
|
cacheable: gatedTx.cacheable,
|
|
65
|
-
uniqueIdKeys: gatedTx.uniqueIdKeys
|
|
70
|
+
uniqueIdKeys: gatedTx.uniqueIdKeys,
|
|
71
|
+
metadata: gatedTx.metadata
|
|
66
72
|
};
|
|
67
73
|
const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => getIdForGatedTransaction(tx));
|
|
68
74
|
const dependenciesAreAllProcessed = /* @__PURE__ */ __name(() => dependencyIds.every((id) => getTransactionResult(id)), "dependenciesAreAllProcessed");
|
|
@@ -155,6 +161,7 @@ ${stringify(finalCheckResult.onChainData)}`);
|
|
|
155
161
|
};
|
|
156
162
|
}
|
|
157
163
|
} catch (e) {
|
|
164
|
+
console.error("Gated transaction failed", e);
|
|
158
165
|
return {
|
|
159
166
|
resolvedGatedTransaction: {
|
|
160
167
|
...baseGatedTx,
|
|
@@ -228,5 +235,5 @@ var resolveSequencedGatedTransactions = /* @__PURE__ */ __name(async ({ activity
|
|
|
228
235
|
}, "resolveSequencedGatedTransactions");
|
|
229
236
|
|
|
230
237
|
export { resolveGatedTransactions, resolveSequencedGatedTransactions };
|
|
231
|
-
//# sourceMappingURL=
|
|
232
|
-
//# sourceMappingURL=
|
|
238
|
+
//# sourceMappingURL=GZTW336Z.js.map
|
|
239
|
+
//# sourceMappingURL=GZTW336Z.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","tx","transactionType","transaction","getTransactionPointer","parallelizingKey","getIdForGatedTransaction","resolveGatedTransaction","activityRegistry","gatedTx","getTransactionResult","processTx","confirmationCallback","fn","cache","baseGatedTx","name","chainName","bundleName","dependencies","cacheable","uniqueIdKeys","metadata","dependencyIds","map","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":"GZTW336Z.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 let tx: TxType;\n if (gatedTransaction.transactionType === 'literal') {\n tx = gatedTransaction.transaction as TxType;\n } else {\n tx = await registry.callByPointer(gatedTransaction.getTransactionPointer, [deps]);\n }\n\n if (!tx.parallelizingKey) {\n tx.parallelizingKey = `MISSING_PARALLELIZING_KEY-${getIdForGatedTransaction(gatedTransaction)}`;\n }\n\n return tx;\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,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
|