@layerzerolabs/gated-transaction 0.0.61 → 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.
Files changed (40) hide show
  1. package/.turbo/turbo-build.log +27 -43
  2. package/.turbo/turbo-test.log +5 -6
  3. package/dist/{VH2LMV2W.js → SGAQYA4D.js} +2 -2
  4. package/dist/{VH2LMV2W.js.map → SGAQYA4D.js.map} +1 -1
  5. package/dist/{UVQ5QQ4U.cjs → UV63UNW4.cjs} +2 -2
  6. package/dist/{UVQ5QQ4U.cjs.map → UV63UNW4.cjs.map} +1 -1
  7. package/dist/index.cjs +10 -32
  8. package/dist/index.d.ts +0 -2
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +1 -3
  11. package/dist/schemata.cjs +10 -10
  12. package/dist/schemata.d.ts +0 -4
  13. package/dist/schemata.d.ts.map +1 -1
  14. package/dist/schemata.js +1 -1
  15. package/package.json +8 -11
  16. package/src/index.ts +0 -2
  17. package/src/schemata.ts +0 -5
  18. package/dist/CZKVKTL4.cjs +0 -107
  19. package/dist/CZKVKTL4.cjs.map +0 -1
  20. package/dist/JMMYK2SL.js +0 -103
  21. package/dist/JMMYK2SL.js.map +0 -1
  22. package/dist/ONVFWJXG.js +0 -250
  23. package/dist/ONVFWJXG.js.map +0 -1
  24. package/dist/XROB6QHI.cjs +0 -257
  25. package/dist/XROB6QHI.cjs.map +0 -1
  26. package/dist/gatedTransactionSignalLock.cjs +0 -22
  27. package/dist/gatedTransactionSignalLock.cjs.map +0 -1
  28. package/dist/gatedTransactionSignalLock.d.ts +0 -20
  29. package/dist/gatedTransactionSignalLock.d.ts.map +0 -1
  30. package/dist/gatedTransactionSignalLock.js +0 -5
  31. package/dist/gatedTransactionSignalLock.js.map +0 -1
  32. package/dist/resolver.cjs +0 -19
  33. package/dist/resolver.cjs.map +0 -1
  34. package/dist/resolver.d.ts +0 -24
  35. package/dist/resolver.d.ts.map +0 -1
  36. package/dist/resolver.js +0 -6
  37. package/dist/resolver.js.map +0 -1
  38. package/src/gatedTransactionSignalLock.ts +0 -143
  39. package/src/resolver.ts +0 -448
  40. 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
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"resolver.cjs"}
@@ -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
@@ -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
@@ -1,6 +0,0 @@
1
- export { resolveGatedTransactions, resolveSequencedGatedTransactions } from './ONVFWJXG.js';
2
- import './WNYV5NIT.js';
3
- import './VH2LMV2W.js';
4
- import './VUOMXK5T.js';
5
- //# sourceMappingURL=resolver.js.map
6
- //# sourceMappingURL=resolver.js.map
@@ -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
- };