@layerzerolabs/gated-transaction 0.0.60 → 0.0.62
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 +27 -43
- package/.turbo/turbo-test.log +5 -6
- package/dist/{VH2LMV2W.js → SGAQYA4D.js} +2 -2
- package/dist/{VH2LMV2W.js.map → SGAQYA4D.js.map} +1 -1
- package/dist/{UVQ5QQ4U.cjs → UV63UNW4.cjs} +2 -2
- package/dist/{UVQ5QQ4U.cjs.map → UV63UNW4.cjs.map} +1 -1
- package/dist/index.cjs +10 -32
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/schemata.cjs +10 -10
- package/dist/schemata.d.ts +0 -4
- package/dist/schemata.d.ts.map +1 -1
- package/dist/schemata.js +1 -1
- package/package.json +9 -12
- package/src/index.ts +0 -2
- package/src/schemata.ts +0 -5
- package/dist/CZKVKTL4.cjs +0 -107
- package/dist/CZKVKTL4.cjs.map +0 -1
- package/dist/JMMYK2SL.js +0 -103
- package/dist/JMMYK2SL.js.map +0 -1
- package/dist/ONVFWJXG.js +0 -250
- package/dist/ONVFWJXG.js.map +0 -1
- package/dist/XROB6QHI.cjs +0 -257
- package/dist/XROB6QHI.cjs.map +0 -1
- package/dist/gatedTransactionSignalLock.cjs +0 -22
- package/dist/gatedTransactionSignalLock.cjs.map +0 -1
- package/dist/gatedTransactionSignalLock.d.ts +0 -20
- package/dist/gatedTransactionSignalLock.d.ts.map +0 -1
- package/dist/gatedTransactionSignalLock.js +0 -5
- package/dist/gatedTransactionSignalLock.js.map +0 -1
- package/dist/resolver.cjs +0 -19
- package/dist/resolver.cjs.map +0 -1
- package/dist/resolver.d.ts +0 -24
- package/dist/resolver.d.ts.map +0 -1
- package/dist/resolver.js +0 -6
- package/dist/resolver.js.map +0 -1
- package/src/gatedTransactionSignalLock.ts +0 -143
- package/src/resolver.ts +0 -448
- package/test/resolver.test.ts +0 -425
package/dist/XROB6QHI.cjs
DELETED
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var EJKFKEMV_cjs = require('./EJKFKEMV.cjs');
|
|
4
|
-
var UVQ5QQ4U_cjs = require('./UVQ5QQ4U.cjs');
|
|
5
|
-
var YJF4D23A_cjs = require('./YJF4D23A.cjs');
|
|
6
|
-
var isEqual = require('lodash.isequal');
|
|
7
|
-
|
|
8
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
-
|
|
10
|
-
var isEqual__default = /*#__PURE__*/_interopDefault(isEqual);
|
|
11
|
-
|
|
12
|
-
var checkGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ registry, gatedTransaction, cachedCheckResult, submittedTransaction }) => {
|
|
13
|
-
let onChainData;
|
|
14
|
-
if (cachedCheckResult !== void 0) {
|
|
15
|
-
onChainData = cachedCheckResult;
|
|
16
|
-
} else {
|
|
17
|
-
let params = gatedTransaction.check.params;
|
|
18
|
-
if (submittedTransaction !== void 0) {
|
|
19
|
-
params = [
|
|
20
|
-
...gatedTransaction.check.params,
|
|
21
|
-
submittedTransaction
|
|
22
|
-
];
|
|
23
|
-
}
|
|
24
|
-
onChainData = await registry.callByPointer(gatedTransaction.check.functionPointer, params);
|
|
25
|
-
}
|
|
26
|
-
let expectationMet;
|
|
27
|
-
switch (gatedTransaction.check.expectedResult.operator) {
|
|
28
|
-
case "=":
|
|
29
|
-
expectationMet = isEqual__default.default(onChainData, gatedTransaction.check.expectedResult.comparisonValue);
|
|
30
|
-
break;
|
|
31
|
-
case "!=":
|
|
32
|
-
expectationMet = !isEqual__default.default(onChainData, gatedTransaction.check.expectedResult.comparisonValue);
|
|
33
|
-
break;
|
|
34
|
-
case ">":
|
|
35
|
-
expectationMet = onChainData > gatedTransaction.check.expectedResult.comparisonValue;
|
|
36
|
-
break;
|
|
37
|
-
case ">=":
|
|
38
|
-
expectationMet = onChainData >= gatedTransaction.check.expectedResult.comparisonValue;
|
|
39
|
-
break;
|
|
40
|
-
case "<":
|
|
41
|
-
expectationMet = onChainData < gatedTransaction.check.expectedResult.comparisonValue;
|
|
42
|
-
break;
|
|
43
|
-
case "<=":
|
|
44
|
-
expectationMet = onChainData <= gatedTransaction.check.expectedResult.comparisonValue;
|
|
45
|
-
break;
|
|
46
|
-
default:
|
|
47
|
-
throw new Error(`Gated transaction operator "${gatedTransaction.check.expectedResult.operator}" is not supported`);
|
|
48
|
-
}
|
|
49
|
-
return {
|
|
50
|
-
expectationMet,
|
|
51
|
-
onChainData
|
|
52
|
-
};
|
|
53
|
-
}, "checkGatedTransaction");
|
|
54
|
-
var extractGatedTransactionUnderlyingTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ registry, gatedTransaction, deps }) => {
|
|
55
|
-
let tx;
|
|
56
|
-
if (gatedTransaction.transactionType === "literal") {
|
|
57
|
-
tx = gatedTransaction.transaction;
|
|
58
|
-
} else {
|
|
59
|
-
tx = await registry.callByPointer(gatedTransaction.getTransaction.functionPointer, [
|
|
60
|
-
deps,
|
|
61
|
-
...gatedTransaction.getTransaction.params
|
|
62
|
-
]);
|
|
63
|
-
}
|
|
64
|
-
if (!tx.parallelizingKey) {
|
|
65
|
-
tx.parallelizingKey = `MISSING_PARALLELIZING_KEY-${EJKFKEMV_cjs.getIdForGatedTransaction(gatedTransaction)}`;
|
|
66
|
-
}
|
|
67
|
-
return tx;
|
|
68
|
-
}, "extractGatedTransactionUnderlyingTransaction");
|
|
69
|
-
var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activityRegistry, gatedTx, getTransactionResult, processTx, confirmationCallback, fn, cache, logger }) => {
|
|
70
|
-
const baseGatedTx = {
|
|
71
|
-
name: gatedTx.name,
|
|
72
|
-
chainName: gatedTx.chainName,
|
|
73
|
-
bundleName: gatedTx.bundleName,
|
|
74
|
-
check: gatedTx.check,
|
|
75
|
-
dependencies: gatedTx.dependencies,
|
|
76
|
-
cacheable: gatedTx.cacheable,
|
|
77
|
-
uniqueIdKeys: gatedTx.uniqueIdKeys,
|
|
78
|
-
metadata: gatedTx.metadata,
|
|
79
|
-
description: gatedTx.description
|
|
80
|
-
};
|
|
81
|
-
const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => EJKFKEMV_cjs.getIdForGatedTransaction(tx));
|
|
82
|
-
const dependenciesAreAllProcessed = /* @__PURE__ */ YJF4D23A_cjs.__name(() => dependencyIds.every((id) => getTransactionResult(id)), "dependenciesAreAllProcessed");
|
|
83
|
-
await fn.condition(dependenciesAreAllProcessed);
|
|
84
|
-
const dependenciesWereSuccessful = dependencyIds.every((id) => getTransactionResult(id)?.checkResult.expectationMet);
|
|
85
|
-
if (!dependenciesWereSuccessful) {
|
|
86
|
-
logger.error(`Some dependencies of gated transaction ${gatedTx.name} failed: ${JSON.stringify(Object.fromEntries(dependencyIds.map((id) => [
|
|
87
|
-
id,
|
|
88
|
-
getTransactionResult(id)
|
|
89
|
-
])), void 0, 2)}`);
|
|
90
|
-
return {
|
|
91
|
-
resolvedGatedTransaction: {
|
|
92
|
-
...baseGatedTx,
|
|
93
|
-
result: {
|
|
94
|
-
status: UVQ5QQ4U_cjs.GatedTransactionStatus.DEPENDENCY_FAILED
|
|
95
|
-
}
|
|
96
|
-
},
|
|
97
|
-
lastCheckResult: null
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
const initialCheckResult = await checkGatedTransaction({
|
|
101
|
-
gatedTransaction: gatedTx,
|
|
102
|
-
registry: activityRegistry,
|
|
103
|
-
cachedCheckResult: await cache?.getCachedTxCheckData?.(gatedTx)
|
|
104
|
-
});
|
|
105
|
-
await cache?.cacheSuccessfulTxCheckData?.(gatedTx, initialCheckResult.onChainData);
|
|
106
|
-
if (initialCheckResult.expectationMet) {
|
|
107
|
-
return {
|
|
108
|
-
resolvedGatedTransaction: {
|
|
109
|
-
...baseGatedTx,
|
|
110
|
-
result: {
|
|
111
|
-
status: UVQ5QQ4U_cjs.GatedTransactionStatus.NO_OP
|
|
112
|
-
}
|
|
113
|
-
},
|
|
114
|
-
lastCheckResult: initialCheckResult
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
const confirmation = await confirmationCallback(gatedTx);
|
|
118
|
-
if (!confirmation) {
|
|
119
|
-
return {
|
|
120
|
-
resolvedGatedTransaction: {
|
|
121
|
-
...baseGatedTx,
|
|
122
|
-
result: {
|
|
123
|
-
status: UVQ5QQ4U_cjs.GatedTransactionStatus.DENIED
|
|
124
|
-
}
|
|
125
|
-
},
|
|
126
|
-
lastCheckResult: initialCheckResult
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
try {
|
|
130
|
-
const depsResults = gatedTx.dependencies.map((dep) => getTransactionResult(EJKFKEMV_cjs.getIdForGatedTransaction(dep)).resolved);
|
|
131
|
-
const underlying = await extractGatedTransactionUnderlyingTransaction({
|
|
132
|
-
registry: activityRegistry,
|
|
133
|
-
gatedTransaction: gatedTx,
|
|
134
|
-
deps: depsResults
|
|
135
|
-
});
|
|
136
|
-
const processResult = await processTx(underlying);
|
|
137
|
-
if (processResult.type === "error") {
|
|
138
|
-
throw new Error(`Sending gtx ${gatedTx.name} failed: ${processResult.error}`);
|
|
139
|
-
}
|
|
140
|
-
const submittedTransaction = {
|
|
141
|
-
...underlying,
|
|
142
|
-
result: processResult
|
|
143
|
-
};
|
|
144
|
-
const finalCheckResult = await checkGatedTransaction({
|
|
145
|
-
registry: activityRegistry,
|
|
146
|
-
gatedTransaction: gatedTx,
|
|
147
|
-
submittedTransaction
|
|
148
|
-
});
|
|
149
|
-
await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);
|
|
150
|
-
if (finalCheckResult.expectationMet) {
|
|
151
|
-
return {
|
|
152
|
-
resolvedGatedTransaction: {
|
|
153
|
-
...baseGatedTx,
|
|
154
|
-
result: {
|
|
155
|
-
status: UVQ5QQ4U_cjs.GatedTransactionStatus.SUCCESS,
|
|
156
|
-
submittedTransaction
|
|
157
|
-
}
|
|
158
|
-
},
|
|
159
|
-
lastCheckResult: finalCheckResult
|
|
160
|
-
};
|
|
161
|
-
} else {
|
|
162
|
-
const stringify = /* @__PURE__ */ YJF4D23A_cjs.__name((o) => JSON.stringify(o, (_, v) => v === void 0 ? "undefined" : typeof v === "bigint" ? v.toString() : v, 2), "stringify");
|
|
163
|
-
logger.error(`Gated transaction ${gatedTx.name} final check failed:
|
|
164
|
-
Expected result ${stringify(gatedTx.check.expectedResult.comparisonValue)}, but got:
|
|
165
|
-
${stringify(finalCheckResult.onChainData)}, txHash: ${submittedTransaction.result.minedTxHash}`);
|
|
166
|
-
return {
|
|
167
|
-
resolvedGatedTransaction: {
|
|
168
|
-
...baseGatedTx,
|
|
169
|
-
result: {
|
|
170
|
-
status: UVQ5QQ4U_cjs.GatedTransactionStatus.FINAL_CHECK_FAILED,
|
|
171
|
-
submittedTransaction,
|
|
172
|
-
finalOnChainState: finalCheckResult.onChainData
|
|
173
|
-
}
|
|
174
|
-
},
|
|
175
|
-
lastCheckResult: finalCheckResult
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
} catch (e) {
|
|
179
|
-
logger.error("Gated transaction failed", e);
|
|
180
|
-
return {
|
|
181
|
-
resolvedGatedTransaction: {
|
|
182
|
-
...baseGatedTx,
|
|
183
|
-
result: {
|
|
184
|
-
status: UVQ5QQ4U_cjs.GatedTransactionStatus.TRANSACTION_FAILED,
|
|
185
|
-
transactionError: e
|
|
186
|
-
}
|
|
187
|
-
},
|
|
188
|
-
lastCheckResult: initialCheckResult
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
}, "resolveGatedTransaction");
|
|
192
|
-
var resolveGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activityRegistry, gatedTxes, processTx, fn, cache, userInteractionCallbacks, logger }) => {
|
|
193
|
-
const allInternalIds = gatedTxes.map((tx) => EJKFKEMV_cjs.getIdForGatedTransaction(tx));
|
|
194
|
-
const allDeps = gatedTxes.flatMap((tx) => tx.dependencies ?? []);
|
|
195
|
-
const allExternalDeps = allDeps.filter((tx) => !allInternalIds.includes(EJKFKEMV_cjs.getIdForGatedTransaction(tx)));
|
|
196
|
-
const results = Object.fromEntries(await Promise.all(allExternalDeps.map(async (tx) => {
|
|
197
|
-
const checkResult = await checkGatedTransaction({
|
|
198
|
-
gatedTransaction: tx,
|
|
199
|
-
registry: activityRegistry,
|
|
200
|
-
cachedCheckResult: await cache?.getCachedTxCheckData?.(tx)
|
|
201
|
-
});
|
|
202
|
-
return [
|
|
203
|
-
EJKFKEMV_cjs.getIdForGatedTransaction(tx),
|
|
204
|
-
{
|
|
205
|
-
checkResult
|
|
206
|
-
}
|
|
207
|
-
];
|
|
208
|
-
})));
|
|
209
|
-
const getTransactionResult = /* @__PURE__ */ YJF4D23A_cjs.__name((gtxId) => results[gtxId], "getTransactionResult");
|
|
210
|
-
const txFunctions = gatedTxes.map((tx) => async () => {
|
|
211
|
-
const { resolvedGatedTransaction, lastCheckResult } = await resolveGatedTransaction({
|
|
212
|
-
gatedTx: tx,
|
|
213
|
-
activityRegistry,
|
|
214
|
-
getTransactionResult,
|
|
215
|
-
processTx,
|
|
216
|
-
confirmationCallback: userInteractionCallbacks?.confirmationCallback ?? (async () => true),
|
|
217
|
-
fn,
|
|
218
|
-
cache,
|
|
219
|
-
logger
|
|
220
|
-
});
|
|
221
|
-
const resId = EJKFKEMV_cjs.getIdForGatedTransaction(resolvedGatedTransaction);
|
|
222
|
-
results[resId] = {
|
|
223
|
-
resolved: resolvedGatedTransaction,
|
|
224
|
-
checkResult: {
|
|
225
|
-
expectationMet: [
|
|
226
|
-
UVQ5QQ4U_cjs.GatedTransactionStatus.SUCCESS,
|
|
227
|
-
UVQ5QQ4U_cjs.GatedTransactionStatus.NO_OP
|
|
228
|
-
].includes(resolvedGatedTransaction.result.status),
|
|
229
|
-
onChainData: lastCheckResult?.onChainData ?? void 0
|
|
230
|
-
}
|
|
231
|
-
};
|
|
232
|
-
userInteractionCallbacks?.onResultCallback?.(resolvedGatedTransaction);
|
|
233
|
-
return resolvedGatedTransaction;
|
|
234
|
-
});
|
|
235
|
-
return await Promise.all(txFunctions.map((func) => func()));
|
|
236
|
-
}, "resolveGatedTransactions");
|
|
237
|
-
var resolveSequencedGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activityRegistry, gatedTxes, processTx, cache, userInteractionCallbacks, fn, logger }) => {
|
|
238
|
-
const results = [];
|
|
239
|
-
for (const seq of gatedTxes) {
|
|
240
|
-
const result = await resolveGatedTransactions({
|
|
241
|
-
gatedTxes: seq,
|
|
242
|
-
activityRegistry,
|
|
243
|
-
processTx,
|
|
244
|
-
cache,
|
|
245
|
-
userInteractionCallbacks,
|
|
246
|
-
fn,
|
|
247
|
-
logger
|
|
248
|
-
});
|
|
249
|
-
results.push(result);
|
|
250
|
-
}
|
|
251
|
-
return results;
|
|
252
|
-
}, "resolveSequencedGatedTransactions");
|
|
253
|
-
|
|
254
|
-
exports.resolveGatedTransactions = resolveGatedTransactions;
|
|
255
|
-
exports.resolveSequencedGatedTransactions = resolveSequencedGatedTransactions;
|
|
256
|
-
//# sourceMappingURL=XROB6QHI.cjs.map
|
|
257
|
-
//# sourceMappingURL=XROB6QHI.cjs.map
|
package/dist/XROB6QHI.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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","getTransaction","parallelizingKey","getIdForGatedTransaction","resolveGatedTransaction","activityRegistry","gatedTx","getTransactionResult","processTx","confirmationCallback","fn","cache","logger","baseGatedTx","name","chainName","bundleName","dependencies","cacheable","uniqueIdKeys","metadata","description","dependencyIds","map","dependenciesAreAllProcessed","every","id","condition","dependenciesWereSuccessful","checkResult","error","JSON","stringify","Object","fromEntries","resolvedGatedTransaction","result","status","GatedTransactionStatus","DEPENDENCY_FAILED","lastCheckResult","initialCheckResult","getCachedTxCheckData","cacheSuccessfulTxCheckData","NO_OP","confirmation","DENIED","depsResults","dep","resolved","underlying","processResult","type","finalCheckResult","SUCCESS","o","_","v","toString","minedTxHash","FINAL_CHECK_FAILED","finalOnChainState","e","TRANSACTION_FAILED","transactionError","resolveGatedTransactions","gatedTxes","userInteractionCallbacks","allInternalIds","allDeps","flatMap","allExternalDeps","filter","includes","results","Promise","all","gtxId","txFunctions","resId","onResultCallback","func","resolveSequencedGatedTransactions","seq","push"],"mappings":"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","file":"XROB6QHI.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';\nimport type { Logger } from '@layerzerolabs/logger-node';\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.getTransaction.functionPointer, [\n deps,\n ...gatedTransaction.getTransaction.params,\n ]);\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 logger,\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 logger: Logger;\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 description: gatedTx.description,\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 logger.error(\n `Some dependencies of gated transaction ${gatedTx.name} failed: ${JSON.stringify(\n Object.fromEntries(dependencyIds.map((id) => [id, getTransactionResult(id)])),\n undefined,\n 2,\n )}`,\n );\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\n if (processResult.type === 'error') {\n throw new Error(`Sending gtx ${gatedTx.name} failed: ${processResult.error}`);\n }\n\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(\n o,\n (_, v) =>\n v === undefined ? 'undefined' : typeof v === 'bigint' ? v.toString() : v,\n 2,\n );\n logger.error(\n `Gated transaction ${gatedTx.name} final check failed:\\nExpected result ${stringify(gatedTx.check.expectedResult.comparisonValue)}, but got:\\n${stringify(finalCheckResult.onChainData)}, txHash: ${submittedTransaction.result.minedTxHash}`,\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 logger.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 logger,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTxes: GatedTx[];\n processTx: ProcessTx;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n userInteractionCallbacks?: UserInteractionCallbacks;\n logger: Logger;\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 logger,\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 logger,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTxes: GatedTx[][];\n processTx: ProcessTx;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n userInteractionCallbacks?: UserInteractionCallbacks;\n logger: Logger;\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 logger,\n });\n results.push(result);\n }\n\n return results;\n};\n"]}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var CZKVKTL4_cjs = require('./CZKVKTL4.cjs');
|
|
4
|
-
require('./EJKFKEMV.cjs');
|
|
5
|
-
require('./YJF4D23A.cjs');
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Object.defineProperty(exports, "gatedTransactionGoSignal", {
|
|
10
|
-
enumerable: true,
|
|
11
|
-
get: function () { return CZKVKTL4_cjs.gatedTransactionGoSignal; }
|
|
12
|
-
});
|
|
13
|
-
Object.defineProperty(exports, "queryGatedTransactions", {
|
|
14
|
-
enumerable: true,
|
|
15
|
-
get: function () { return CZKVKTL4_cjs.queryGatedTransactions; }
|
|
16
|
-
});
|
|
17
|
-
Object.defineProperty(exports, "useGatedTransactionSignalLock", {
|
|
18
|
-
enumerable: true,
|
|
19
|
-
get: function () { return CZKVKTL4_cjs.useGatedTransactionSignalLock; }
|
|
20
|
-
});
|
|
21
|
-
//# sourceMappingURL=gatedTransactionSignalLock.cjs.map
|
|
22
|
-
//# sourceMappingURL=gatedTransactionSignalLock.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"gatedTransactionSignalLock.cjs"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { WorkflowFunctions, WorkflowHandle } from '@layerzerolabs/common-workflow';
|
|
2
|
-
import type { GatedTransaction, GatedTransactionId, ResolvedGatedTransaction, UserInteractionCallbacks } from './schemata';
|
|
3
|
-
export type QueryGatedTransactionsResult = {
|
|
4
|
-
pendingTransactions: GatedTransaction[];
|
|
5
|
-
sentTransactions: GatedTransaction[];
|
|
6
|
-
completedTransactions: ResolvedGatedTransaction[];
|
|
7
|
-
passthroughWorkflowIds: string[];
|
|
8
|
-
};
|
|
9
|
-
export declare const gatedTransactionGoSignal: import("@layerzerolabs/common-workflow").SignalDefinition<[arg: {
|
|
10
|
-
ids: GatedTransactionId[];
|
|
11
|
-
bundleNames: string[];
|
|
12
|
-
}], string>;
|
|
13
|
-
export declare const queryGatedTransactions: import("@layerzerolabs/common-workflow").QueryDefinition<QueryGatedTransactionsResult, [], string>;
|
|
14
|
-
export declare const useGatedTransactionSignalLock: (fn: WorkflowFunctions, options?: {
|
|
15
|
-
forceSend: boolean;
|
|
16
|
-
}) => {
|
|
17
|
-
userInteractionCallbacks: UserInteractionCallbacks;
|
|
18
|
-
addChild: (wf: WorkflowHandle<any>) => Promise<void>;
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=gatedTransactionSignalLock.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gatedTransactionSignalLock.d.ts","sourceRoot":"","sources":["../src/gatedTransactionSignalLock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAIxF,OAAO,KAAK,EACR,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,EAC3B,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,4BAA4B,GAAG;IACvC,mBAAmB,EAAE,gBAAgB,EAAE,CAAC;IACxC,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,qBAAqB,EAAE,wBAAwB,EAAE,CAAC;IAClD,sBAAsB,EAAE,MAAM,EAAE,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,wBAAwB;SAGpB,kBAAkB,EAAE;iBACZ,MAAM,EAAE;WAGV,CAAC;AAYxB,eAAO,MAAM,sBAAsB,oGACmC,CAAC;AAEvE,eAAO,MAAM,6BAA6B,GACtC,IAAI,iBAAiB,EACrB,UAAS;IAAE,SAAS,EAAE,OAAO,CAAA;CAAyB,KACvD;IACC,wBAAwB,EAAE,wBAAwB,CAAC;IACnD,QAAQ,EAAE,CAAC,EAAE,EAAE,cAAc,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAiGxD,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { gatedTransactionGoSignal, queryGatedTransactions, useGatedTransactionSignalLock } from './JMMYK2SL.js';
|
|
2
|
-
import './WNYV5NIT.js';
|
|
3
|
-
import './VUOMXK5T.js';
|
|
4
|
-
//# sourceMappingURL=gatedTransactionSignalLock.js.map
|
|
5
|
-
//# sourceMappingURL=gatedTransactionSignalLock.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"gatedTransactionSignalLock.js"}
|
package/dist/resolver.cjs
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var XROB6QHI_cjs = require('./XROB6QHI.cjs');
|
|
4
|
-
require('./EJKFKEMV.cjs');
|
|
5
|
-
require('./UVQ5QQ4U.cjs');
|
|
6
|
-
require('./YJF4D23A.cjs');
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
Object.defineProperty(exports, "resolveGatedTransactions", {
|
|
11
|
-
enumerable: true,
|
|
12
|
-
get: function () { return XROB6QHI_cjs.resolveGatedTransactions; }
|
|
13
|
-
});
|
|
14
|
-
Object.defineProperty(exports, "resolveSequencedGatedTransactions", {
|
|
15
|
-
enumerable: true,
|
|
16
|
-
get: function () { return XROB6QHI_cjs.resolveSequencedGatedTransactions; }
|
|
17
|
-
});
|
|
18
|
-
//# sourceMappingURL=resolver.cjs.map
|
|
19
|
-
//# sourceMappingURL=resolver.cjs.map
|
package/dist/resolver.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"resolver.cjs"}
|
package/dist/resolver.d.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { ActivityRegistry } from '@layerzerolabs/common-activities';
|
|
2
|
-
import type { Transaction, TransactionResult } from '@layerzerolabs/common-chain-model';
|
|
3
|
-
import type { WorkflowFunctions } from '@layerzerolabs/common-workflow';
|
|
4
|
-
import type { Logger } from '@layerzerolabs/logger-node';
|
|
5
|
-
import type { GatedTransaction, IGatedTransactionCache, ResolvedGatedTransaction, UserInteractionCallbacks } from './schemata';
|
|
6
|
-
export declare const resolveGatedTransactions: <TxType extends Transaction, GatedTx extends GatedTransaction<string, TxType, any>, ProcessTx extends (transaction: TxType) => Promise<TransactionResult>>({ activityRegistry, gatedTxes, processTx, fn, cache, userInteractionCallbacks, logger, }: {
|
|
7
|
-
activityRegistry: ActivityRegistry;
|
|
8
|
-
gatedTxes: GatedTx[];
|
|
9
|
-
processTx: ProcessTx;
|
|
10
|
-
fn: WorkflowFunctions;
|
|
11
|
-
cache?: IGatedTransactionCache;
|
|
12
|
-
userInteractionCallbacks?: UserInteractionCallbacks;
|
|
13
|
-
logger: Logger;
|
|
14
|
-
}) => Promise<ResolvedGatedTransaction[]>;
|
|
15
|
-
export declare const resolveSequencedGatedTransactions: <TxType extends Transaction, GatedTx extends GatedTransaction<string, TxType, any>, ProcessTx extends (transaction: TxType) => Promise<TransactionResult>>({ activityRegistry, gatedTxes, processTx, cache, userInteractionCallbacks, fn, logger, }: {
|
|
16
|
-
activityRegistry: ActivityRegistry;
|
|
17
|
-
gatedTxes: GatedTx[][];
|
|
18
|
-
processTx: ProcessTx;
|
|
19
|
-
fn: WorkflowFunctions;
|
|
20
|
-
cache?: IGatedTransactionCache;
|
|
21
|
-
userInteractionCallbacks?: UserInteractionCallbacks;
|
|
22
|
-
logger: Logger;
|
|
23
|
-
}) => Promise<ResolvedGatedTransaction[][]>;
|
|
24
|
-
//# sourceMappingURL=resolver.d.ts.map
|
package/dist/resolver.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EACR,WAAW,EACX,iBAAiB,EAEpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGzD,OAAO,KAAK,EAER,gBAAgB,EAEhB,sBAAsB,EAEtB,wBAAwB,EAExB,wBAAwB,EAC3B,MAAM,YAAY,CAAC;AAySpB,eAAO,MAAM,wBAAwB,GACjC,MAAM,SAAS,WAAW,EAC1B,OAAO,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrD,SAAS,SAAS,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,EACvE,0FAQC;IACC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,EAAE,EAAE,iBAAiB,CAAC;IACtB,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAC/B,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;IACpD,MAAM,EAAE,MAAM,CAAC;CAClB,KAAG,OAAO,CAAC,wBAAwB,EAAE,CAuErC,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC1C,MAAM,SAAS,WAAW,EAC1B,OAAO,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrD,SAAS,SAAS,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,EACvE,0FAQC;IACC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,EAAE,EAAE,iBAAiB,CAAC;IACtB,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAC/B,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;IACpD,MAAM,EAAE,MAAM,CAAC;CAClB,0CAgBA,CAAC"}
|
package/dist/resolver.js
DELETED
package/dist/resolver.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"resolver.js"}
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import type { WorkflowFunctions, WorkflowHandle } from '@layerzerolabs/common-workflow';
|
|
2
|
-
import { defineQuery, defineSignal } from '@layerzerolabs/common-workflow';
|
|
3
|
-
|
|
4
|
-
import { getIdForGatedTransaction } from './gatedTx';
|
|
5
|
-
import type {
|
|
6
|
-
GatedTransaction,
|
|
7
|
-
GatedTransactionId,
|
|
8
|
-
ResolvedGatedTransaction,
|
|
9
|
-
UserInteractionCallbacks,
|
|
10
|
-
} from './schemata';
|
|
11
|
-
|
|
12
|
-
export type QueryGatedTransactionsResult = {
|
|
13
|
-
pendingTransactions: GatedTransaction[];
|
|
14
|
-
sentTransactions: GatedTransaction[];
|
|
15
|
-
completedTransactions: ResolvedGatedTransaction[];
|
|
16
|
-
passthroughWorkflowIds: string[];
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
export const gatedTransactionGoSignal = defineSignal<
|
|
20
|
-
[
|
|
21
|
-
arg: {
|
|
22
|
-
ids: GatedTransactionId[];
|
|
23
|
-
bundleNames: string[];
|
|
24
|
-
},
|
|
25
|
-
]
|
|
26
|
-
>('GatedTransactionGo');
|
|
27
|
-
|
|
28
|
-
const gatedTransactionGoSignalInternal = defineSignal<
|
|
29
|
-
[
|
|
30
|
-
arg: {
|
|
31
|
-
ids: GatedTransactionId[];
|
|
32
|
-
bundleNames: string[];
|
|
33
|
-
uniqueGoSignalId: string | undefined;
|
|
34
|
-
},
|
|
35
|
-
]
|
|
36
|
-
>('GatedTransactionGoInternal');
|
|
37
|
-
|
|
38
|
-
export const queryGatedTransactions =
|
|
39
|
-
defineQuery<QueryGatedTransactionsResult>('GatedTransactionQuery');
|
|
40
|
-
|
|
41
|
-
export const useGatedTransactionSignalLock = (
|
|
42
|
-
fn: WorkflowFunctions,
|
|
43
|
-
options: { forceSend: boolean } = { forceSend: false },
|
|
44
|
-
): {
|
|
45
|
-
userInteractionCallbacks: UserInteractionCallbacks;
|
|
46
|
-
addChild: (wf: WorkflowHandle<any>) => Promise<void>;
|
|
47
|
-
} => {
|
|
48
|
-
const passthroughWorkflows: WorkflowHandle<any>[] = [];
|
|
49
|
-
const addChild = async (wf: WorkflowHandle<any>) => {
|
|
50
|
-
passthroughWorkflows.push(wf);
|
|
51
|
-
await wf.signal(gatedTransactionGoSignal, [
|
|
52
|
-
{ ids: [...approvedInfo.ids], bundleNames: [...approvedInfo.bundleNames] },
|
|
53
|
-
]);
|
|
54
|
-
};
|
|
55
|
-
const approvedInfo: {
|
|
56
|
-
ids: Set<GatedTransactionId>;
|
|
57
|
-
bundleNames: Set<string>;
|
|
58
|
-
} = {
|
|
59
|
-
ids: new Set(),
|
|
60
|
-
bundleNames: new Set(),
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
const pendingTransactions: Record<GatedTransactionId, GatedTransaction> = {};
|
|
64
|
-
const sentTransactions: Record<GatedTransactionId, GatedTransaction> = {};
|
|
65
|
-
const completedTransactions: Record<GatedTransactionId, ResolvedGatedTransaction> = {};
|
|
66
|
-
|
|
67
|
-
fn.setHandler(queryGatedTransactions, () => {
|
|
68
|
-
const passthroughWfIds = passthroughWorkflows.map((wf) => wf.workflowId);
|
|
69
|
-
return {
|
|
70
|
-
pendingTransactions: Object.values(pendingTransactions),
|
|
71
|
-
sentTransactions: Object.values(sentTransactions),
|
|
72
|
-
completedTransactions: Object.values(completedTransactions),
|
|
73
|
-
passthroughWorkflowIds: passthroughWfIds ?? [],
|
|
74
|
-
};
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
const gatedTransactionGoInternal = async ({
|
|
78
|
-
ids,
|
|
79
|
-
bundleNames,
|
|
80
|
-
uniqueGoSignalId,
|
|
81
|
-
}: {
|
|
82
|
-
ids: GatedTransactionId[];
|
|
83
|
-
bundleNames: string[];
|
|
84
|
-
uniqueGoSignalId: string | undefined;
|
|
85
|
-
}): Promise<void> => {
|
|
86
|
-
if (ids.length === 0 && bundleNames.length === 0) {
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
approvedInfo.ids = new Set([...approvedInfo.ids, ...ids]);
|
|
91
|
-
approvedInfo.bundleNames = new Set([...approvedInfo.bundleNames, ...bundleNames]);
|
|
92
|
-
await Promise.allSettled(
|
|
93
|
-
passthroughWorkflows.map((wf) => {
|
|
94
|
-
return wf.signal(gatedTransactionGoSignalInternal, [
|
|
95
|
-
{ ids, bundleNames, uniqueGoSignalId },
|
|
96
|
-
]);
|
|
97
|
-
}),
|
|
98
|
-
);
|
|
99
|
-
};
|
|
100
|
-
fn.setHandler(gatedTransactionGoSignalInternal, gatedTransactionGoInternal);
|
|
101
|
-
|
|
102
|
-
fn.setHandler(gatedTransactionGoSignal, async ({ ids, bundleNames }) => {
|
|
103
|
-
const uniqueGoSignalId = 'TO_BE_IMPLEMENTED_WHEN_ADDING_THE_BUNDLER';
|
|
104
|
-
// Only keep new transaction ids and bundle names
|
|
105
|
-
const newIds = ids.filter((id) => !approvedInfo.ids.has(id));
|
|
106
|
-
const newBundleNames = bundleNames.filter(
|
|
107
|
-
(bundleName) => !approvedInfo.bundleNames.has(bundleName),
|
|
108
|
-
);
|
|
109
|
-
|
|
110
|
-
await gatedTransactionGoInternal({
|
|
111
|
-
ids: newIds,
|
|
112
|
-
bundleNames: newBundleNames,
|
|
113
|
-
uniqueGoSignalId,
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
const confirmationCallback: UserInteractionCallbacks['confirmationCallback'] = async (tx) => {
|
|
118
|
-
const id = getIdForGatedTransaction(tx);
|
|
119
|
-
pendingTransactions[id] = tx;
|
|
120
|
-
|
|
121
|
-
await fn.condition(() => {
|
|
122
|
-
if (options.forceSend) {
|
|
123
|
-
return true;
|
|
124
|
-
}
|
|
125
|
-
return (
|
|
126
|
-
approvedInfo.ids.has(id) ||
|
|
127
|
-
(!!tx.bundleName && approvedInfo.bundleNames.has(tx.bundleName))
|
|
128
|
-
);
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
sentTransactions[id] = tx;
|
|
132
|
-
delete pendingTransactions[id];
|
|
133
|
-
return true;
|
|
134
|
-
};
|
|
135
|
-
|
|
136
|
-
const onResultCallback: UserInteractionCallbacks['onResultCallback'] = (result) => {
|
|
137
|
-
const id = getIdForGatedTransaction(result);
|
|
138
|
-
completedTransactions[id] = result;
|
|
139
|
-
delete sentTransactions[id];
|
|
140
|
-
};
|
|
141
|
-
|
|
142
|
-
return { userInteractionCallbacks: { confirmationCallback, onResultCallback }, addChild };
|
|
143
|
-
};
|