@layerzerolabs/gated-transaction 0.0.53 → 0.0.54

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.
@@ -12,43 +12,43 @@
12
12
  ESM Build start
13
13
  CJS dist/gatedTransactionSignalLock.cjs 697.00 B
14
14
  CJS dist/gatedTx.cjs 656.00 B
15
- CJS dist/resolver.cjs 549.00 B
16
- CJS dist/36XFV4BM.cjs 1.08 KB
17
- CJS dist/VID3ZZ5G.cjs 3.79 KB
18
15
  CJS dist/index.cjs 2.84 KB
16
+ CJS dist/VID3ZZ5G.cjs 3.79 KB
17
+ CJS dist/resolver.cjs 546.00 B
18
+ CJS dist/B7FZNQF3.cjs 9.68 KB
19
+ CJS dist/36XFV4BM.cjs 1.08 KB
19
20
  CJS dist/schemata.cjs 1.46 KB
20
- CJS dist/7MSI3YMN.cjs 9.63 KB
21
21
  CJS dist/44CZPU6S.cjs 4.20 KB
22
22
  CJS dist/YJF4D23A.cjs 245.00 B
23
+ CJS dist/gatedTransactionSignalLock.cjs.map 91.00 B
23
24
  CJS dist/gatedTx.cjs.map 72.00 B
25
+ CJS dist/index.cjs.map 70.00 B
24
26
  CJS dist/resolver.cjs.map 73.00 B
25
- CJS dist/36XFV4BM.cjs.map 4.29 KB
27
+ CJS dist/B7FZNQF3.cjs.map 24.92 KB
26
28
  CJS dist/VID3ZZ5G.cjs.map 8.89 KB
27
- CJS dist/gatedTransactionSignalLock.cjs.map 91.00 B
29
+ CJS dist/36XFV4BM.cjs.map 4.29 KB
28
30
  CJS dist/schemata.cjs.map 73.00 B
29
- CJS dist/index.cjs.map 70.00 B
30
- CJS dist/YJF4D23A.cjs.map 73.00 B
31
- CJS dist/7MSI3YMN.cjs.map 24.61 KB
32
31
  CJS dist/44CZPU6S.cjs.map 15.38 KB
33
- CJS ⚡️ Build success in 219ms
32
+ CJS dist/YJF4D23A.cjs.map 73.00 B
33
+ CJS ⚡️ Build success in 478ms
34
+ ESM dist/gatedTransactionSignalLock.js 270.00 B
34
35
  ESM dist/gatedTx.js 218.00 B
35
36
  ESM dist/index.js 702.00 B
36
- ESM dist/gatedTransactionSignalLock.js 270.00 B
37
37
  ESM dist/5YTIURD3.js 3.56 KB
38
38
  ESM dist/resolver.js 238.00 B
39
+ ESM dist/ILT2CCJW.js 9.13 KB
39
40
  ESM dist/O2UH7G3V.js 935.00 B
40
41
  ESM dist/schemata.js 379.00 B
41
- ESM dist/CTI3YHKW.js 9.08 KB
42
42
  ESM dist/CKYPLVJX.js 3.16 KB
43
43
  ESM dist/VUOMXK5T.js 222.00 B
44
- ESM dist/index.js.map 69.00 B
45
- ESM dist/gatedTx.js.map 71.00 B
46
44
  ESM dist/gatedTransactionSignalLock.js.map 90.00 B
45
+ ESM dist/gatedTx.js.map 71.00 B
46
+ ESM dist/index.js.map 69.00 B
47
47
  ESM dist/5YTIURD3.js.map 8.87 KB
48
48
  ESM dist/resolver.js.map 72.00 B
49
+ ESM dist/ILT2CCJW.js.map 24.89 KB
49
50
  ESM dist/O2UH7G3V.js.map 4.28 KB
50
51
  ESM dist/schemata.js.map 72.00 B
51
52
  ESM dist/CKYPLVJX.js.map 15.31 KB
52
- ESM dist/CTI3YHKW.js.map 24.58 KB
53
53
  ESM dist/VUOMXK5T.js.map 72.00 B
54
- ESM ⚡️ Build success in 220ms
54
+ ESM ⚡️ Build success in 478ms
@@ -7,75 +7,11 @@ Breaking changes might not follow SemVer, please pin Vitest's version when using
7
7
 
8
8
   RUN  v3.2.3 /home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction
9
9
 
10
- stderr | test/resolver.test.ts > resolveGatedTransactions - dependency and edge cases > internal dependency TRANSACTION_FAILED causes dependent DEPENDENCY_FAILED
11
- Gated transaction failed Error: failed to submit
12
- at /home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/test/resolver.test.ts:121:19
13
- at mockCall (file:///home/runner/work/monorepo-internal/monorepo-internal/node_modules/.pnpm/@vitest+spy@3.2.3/node_modules/@vitest/spy/dist/index.js:89:15)
14
- at spy (file:///home/runner/work/monorepo-internal/monorepo-internal/node_modules/.pnpm/tinyspy@4.0.3/node_modules/tinyspy/dist/index.js:47:103)
15
- at resolveGatedTransaction (/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:249:37)
16
- at /home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:372:63
17
- at async Promise.all (index 0)
18
- at resolveGatedTransactions (/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:403:12)
19
- at /home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/test/resolver.test.ts:127:30
20
- at file:///home/runner/work/monorepo-internal/monorepo-internal/node_modules/.pnpm/@vitest+runner@3.2.3/node_modules/@vitest/runner/dist/chunk-hooks.js:752:20
21
-
22
- stderr | test/resolver.test.ts > resolveGatedTransactions - dependency and edge cases > internal dependency TRANSACTION_FAILED causes dependent DEPENDENCY_FAILED
23
- Some dependencies of gated transaction B failed: {
24
- "A-test-chain-name:A": {
25
- "resolved": {
26
- "name": "A",
27
- "chainName": "test-chain",
28
- "check": {
29
- "functionPointer": "checkA",
30
- "params": [],
31
- "expectedResult": {
32
- "operator": "=",
33
- "comparisonValue": true
34
- }
35
- },
36
- "dependencies": [],
37
- "uniqueIdKeys": {
38
- "name": "A"
39
- },
40
- "result": {
41
- "status": "transaction_failed",
42
- "transactionError": {}
43
- }
44
- },
45
- "checkResult": {
46
- "expectationMet": false,
47
- "onChainData": false
48
- }
49
- }
50
- }
51
-
52
- stderr | test/resolver.test.ts > resolveGatedTransactions - dependency and edge cases > external dependency unsatisfied by precheck causes dependent DEPENDENCY_FAILED
53
- Some dependencies of gated transaction B failed: {
54
- "Ext-test-chain-name:Ext": {
55
- "checkResult": {
56
- "expectationMet": false,
57
- "onChainData": false
58
- }
59
- }
60
- }
61
-
62
- stderr | test/resolver.test.ts > resolveGatedTransactions - functional transactions > functional getTransactionPointer error yields TRANSACTION_FAILED
63
- Gated transaction failed Error: build failed
64
- at Object.final (/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/test/resolver.test.ts:368:27)
65
- at Object.callByPointer (/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/test/resolver.test.ts:25:41)
66
- at extractGatedTransactionUnderlyingTransaction (/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:119:29)
67
- at resolveGatedTransaction (/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:244:34)
68
- at /home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:372:63
69
- at async Promise.all (index 0)
70
- at resolveGatedTransactions (/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:403:12)
71
- at /home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/test/resolver.test.ts:394:23
72
- at file:///home/runner/work/monorepo-internal/monorepo-internal/node_modules/.pnpm/@vitest+runner@3.2.3/node_modules/@vitest/runner/dist/chunk-hooks.js:752:20
73
-
74
- ✓ test/resolver.test.ts (10 tests) 423ms
10
+ ✓ test/resolver.test.ts (10 tests) 419ms
75
11
 
76
12
   Test Files  1 passed (1)
77
13
   Tests  10 passed (10)
78
14
  Type Errors  no errors
79
-  Start at  22:49:38
80
-  Duration  1.32s (transform 152ms, setup 0ms, collect 239ms, tests 423ms, environment 0ms, prepare 97ms)
15
+  Start at  17:04:05
16
+  Duration  1.11s (transform 139ms, setup 0ms, collect 213ms, tests 419ms, environment 0ms, prepare 105ms)
81
17
 
@@ -66,7 +66,7 @@ var extractGatedTransactionUnderlyingTransaction = /* @__PURE__ */ YJF4D23A_cjs.
66
66
  }
67
67
  return tx;
68
68
  }, "extractGatedTransactionUnderlyingTransaction");
69
- var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activityRegistry, gatedTx, getTransactionResult, processTx, confirmationCallback, fn, cache }) => {
69
+ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activityRegistry, gatedTx, getTransactionResult, processTx, confirmationCallback, fn, cache, logger }) => {
70
70
  const baseGatedTx = {
71
71
  name: gatedTx.name,
72
72
  chainName: gatedTx.chainName,
@@ -83,7 +83,7 @@ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activ
83
83
  await fn.condition(dependenciesAreAllProcessed);
84
84
  const dependenciesWereSuccessful = dependencyIds.every((id) => getTransactionResult(id)?.checkResult.expectationMet);
85
85
  if (!dependenciesWereSuccessful) {
86
- console.error(`Some dependencies of gated transaction ${gatedTx.name} failed: ${JSON.stringify(Object.fromEntries(dependencyIds.map((id) => [
86
+ logger.error(`Some dependencies of gated transaction ${gatedTx.name} failed: ${JSON.stringify(Object.fromEntries(dependencyIds.map((id) => [
87
87
  id,
88
88
  getTransactionResult(id)
89
89
  ])), void 0, 2)}`);
@@ -160,7 +160,7 @@ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activ
160
160
  };
161
161
  } else {
162
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
- console.error(`Gated transaction ${gatedTx.name} final check failed:
163
+ logger.error(`Gated transaction ${gatedTx.name} final check failed:
164
164
  Expected result ${stringify(gatedTx.check.expectedResult.comparisonValue)}, but got:
165
165
  ${stringify(finalCheckResult.onChainData)}, txHash: ${submittedTransaction.result.minedTxHash}`);
166
166
  return {
@@ -176,7 +176,7 @@ ${stringify(finalCheckResult.onChainData)}, txHash: ${submittedTransaction.resul
176
176
  };
177
177
  }
178
178
  } catch (e) {
179
- console.error("Gated transaction failed", e);
179
+ logger.error("Gated transaction failed", e);
180
180
  return {
181
181
  resolvedGatedTransaction: {
182
182
  ...baseGatedTx,
@@ -189,7 +189,7 @@ ${stringify(finalCheckResult.onChainData)}, txHash: ${submittedTransaction.resul
189
189
  };
190
190
  }
191
191
  }, "resolveGatedTransaction");
192
- var resolveGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activityRegistry, gatedTxes, processTx, fn, cache, userInteractionCallbacks }) => {
192
+ var resolveGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activityRegistry, gatedTxes, processTx, fn, cache, userInteractionCallbacks, logger }) => {
193
193
  const allInternalIds = gatedTxes.map((tx) => _36XFV4BM_cjs.getIdForGatedTransaction(tx));
194
194
  const allDeps = gatedTxes.flatMap((tx) => tx.dependencies ?? []);
195
195
  const allExternalDeps = allDeps.filter((tx) => !allInternalIds.includes(_36XFV4BM_cjs.getIdForGatedTransaction(tx)));
@@ -215,7 +215,8 @@ var resolveGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ acti
215
215
  processTx,
216
216
  confirmationCallback: userInteractionCallbacks?.confirmationCallback ?? (async () => true),
217
217
  fn,
218
- cache
218
+ cache,
219
+ logger
219
220
  });
220
221
  const resId = _36XFV4BM_cjs.getIdForGatedTransaction(resolvedGatedTransaction);
221
222
  results[resId] = {
@@ -233,7 +234,7 @@ var resolveGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ acti
233
234
  });
234
235
  return await Promise.all(txFunctions.map((func) => func()));
235
236
  }, "resolveGatedTransactions");
236
- var resolveSequencedGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activityRegistry, gatedTxes, processTx, cache, userInteractionCallbacks, fn }) => {
237
+ var resolveSequencedGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activityRegistry, gatedTxes, processTx, cache, userInteractionCallbacks, fn, logger }) => {
237
238
  const results = [];
238
239
  for (const seq of gatedTxes) {
239
240
  const result = await resolveGatedTransactions({
@@ -242,7 +243,8 @@ var resolveSequencedGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(asyn
242
243
  processTx,
243
244
  cache,
244
245
  userInteractionCallbacks,
245
- fn
246
+ fn,
247
+ logger
246
248
  });
247
249
  results.push(result);
248
250
  }
@@ -251,5 +253,5 @@ var resolveSequencedGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(asyn
251
253
 
252
254
  exports.resolveGatedTransactions = resolveGatedTransactions;
253
255
  exports.resolveSequencedGatedTransactions = resolveSequencedGatedTransactions;
254
- //# sourceMappingURL=7MSI3YMN.cjs.map
255
- //# sourceMappingURL=7MSI3YMN.cjs.map
256
+ //# sourceMappingURL=B7FZNQF3.cjs.map
257
+ //# sourceMappingURL=B7FZNQF3.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","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":"B7FZNQF3.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"]}
@@ -60,7 +60,7 @@ var extractGatedTransactionUnderlyingTransaction = /* @__PURE__ */ __name(async
60
60
  }
61
61
  return tx;
62
62
  }, "extractGatedTransactionUnderlyingTransaction");
63
- var resolveGatedTransaction = /* @__PURE__ */ __name(async ({ activityRegistry, gatedTx, getTransactionResult, processTx, confirmationCallback, fn, cache }) => {
63
+ var resolveGatedTransaction = /* @__PURE__ */ __name(async ({ activityRegistry, gatedTx, getTransactionResult, processTx, confirmationCallback, fn, cache, logger }) => {
64
64
  const baseGatedTx = {
65
65
  name: gatedTx.name,
66
66
  chainName: gatedTx.chainName,
@@ -77,7 +77,7 @@ var resolveGatedTransaction = /* @__PURE__ */ __name(async ({ activityRegistry,
77
77
  await fn.condition(dependenciesAreAllProcessed);
78
78
  const dependenciesWereSuccessful = dependencyIds.every((id) => getTransactionResult(id)?.checkResult.expectationMet);
79
79
  if (!dependenciesWereSuccessful) {
80
- console.error(`Some dependencies of gated transaction ${gatedTx.name} failed: ${JSON.stringify(Object.fromEntries(dependencyIds.map((id) => [
80
+ logger.error(`Some dependencies of gated transaction ${gatedTx.name} failed: ${JSON.stringify(Object.fromEntries(dependencyIds.map((id) => [
81
81
  id,
82
82
  getTransactionResult(id)
83
83
  ])), void 0, 2)}`);
@@ -154,7 +154,7 @@ var resolveGatedTransaction = /* @__PURE__ */ __name(async ({ activityRegistry,
154
154
  };
155
155
  } else {
156
156
  const stringify = /* @__PURE__ */ __name((o) => JSON.stringify(o, (_, v) => v === void 0 ? "undefined" : typeof v === "bigint" ? v.toString() : v, 2), "stringify");
157
- console.error(`Gated transaction ${gatedTx.name} final check failed:
157
+ logger.error(`Gated transaction ${gatedTx.name} final check failed:
158
158
  Expected result ${stringify(gatedTx.check.expectedResult.comparisonValue)}, but got:
159
159
  ${stringify(finalCheckResult.onChainData)}, txHash: ${submittedTransaction.result.minedTxHash}`);
160
160
  return {
@@ -170,7 +170,7 @@ ${stringify(finalCheckResult.onChainData)}, txHash: ${submittedTransaction.resul
170
170
  };
171
171
  }
172
172
  } catch (e) {
173
- console.error("Gated transaction failed", e);
173
+ logger.error("Gated transaction failed", e);
174
174
  return {
175
175
  resolvedGatedTransaction: {
176
176
  ...baseGatedTx,
@@ -183,7 +183,7 @@ ${stringify(finalCheckResult.onChainData)}, txHash: ${submittedTransaction.resul
183
183
  };
184
184
  }
185
185
  }, "resolveGatedTransaction");
186
- var resolveGatedTransactions = /* @__PURE__ */ __name(async ({ activityRegistry, gatedTxes, processTx, fn, cache, userInteractionCallbacks }) => {
186
+ var resolveGatedTransactions = /* @__PURE__ */ __name(async ({ activityRegistry, gatedTxes, processTx, fn, cache, userInteractionCallbacks, logger }) => {
187
187
  const allInternalIds = gatedTxes.map((tx) => getIdForGatedTransaction(tx));
188
188
  const allDeps = gatedTxes.flatMap((tx) => tx.dependencies ?? []);
189
189
  const allExternalDeps = allDeps.filter((tx) => !allInternalIds.includes(getIdForGatedTransaction(tx)));
@@ -209,7 +209,8 @@ var resolveGatedTransactions = /* @__PURE__ */ __name(async ({ activityRegistry,
209
209
  processTx,
210
210
  confirmationCallback: userInteractionCallbacks?.confirmationCallback ?? (async () => true),
211
211
  fn,
212
- cache
212
+ cache,
213
+ logger
213
214
  });
214
215
  const resId = getIdForGatedTransaction(resolvedGatedTransaction);
215
216
  results[resId] = {
@@ -227,7 +228,7 @@ var resolveGatedTransactions = /* @__PURE__ */ __name(async ({ activityRegistry,
227
228
  });
228
229
  return await Promise.all(txFunctions.map((func) => func()));
229
230
  }, "resolveGatedTransactions");
230
- var resolveSequencedGatedTransactions = /* @__PURE__ */ __name(async ({ activityRegistry, gatedTxes, processTx, cache, userInteractionCallbacks, fn }) => {
231
+ var resolveSequencedGatedTransactions = /* @__PURE__ */ __name(async ({ activityRegistry, gatedTxes, processTx, cache, userInteractionCallbacks, fn, logger }) => {
231
232
  const results = [];
232
233
  for (const seq of gatedTxes) {
233
234
  const result = await resolveGatedTransactions({
@@ -236,7 +237,8 @@ var resolveSequencedGatedTransactions = /* @__PURE__ */ __name(async ({ activity
236
237
  processTx,
237
238
  cache,
238
239
  userInteractionCallbacks,
239
- fn
240
+ fn,
241
+ logger
240
242
  });
241
243
  results.push(result);
242
244
  }
@@ -244,5 +246,5 @@ var resolveSequencedGatedTransactions = /* @__PURE__ */ __name(async ({ activity
244
246
  }, "resolveSequencedGatedTransactions");
245
247
 
246
248
  export { resolveGatedTransactions, resolveSequencedGatedTransactions };
247
- //# sourceMappingURL=CTI3YHKW.js.map
248
- //# sourceMappingURL=CTI3YHKW.js.map
249
+ //# sourceMappingURL=ILT2CCJW.js.map
250
+ //# sourceMappingURL=ILT2CCJW.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","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":"ILT2CCJW.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';\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"]}
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var VID3ZZ5G_cjs = require('./VID3ZZ5G.cjs');
4
- var _7MSI3YMN_cjs = require('./7MSI3YMN.cjs');
4
+ var B7FZNQF3_cjs = require('./B7FZNQF3.cjs');
5
5
  var _36XFV4BM_cjs = require('./36XFV4BM.cjs');
6
6
  var _44CZPU6S_cjs = require('./44CZPU6S.cjs');
7
7
  require('./YJF4D23A.cjs');
@@ -22,11 +22,11 @@ Object.defineProperty(exports, "useGatedTransactionSignalLock", {
22
22
  });
23
23
  Object.defineProperty(exports, "resolveGatedTransactions", {
24
24
  enumerable: true,
25
- get: function () { return _7MSI3YMN_cjs.resolveGatedTransactions; }
25
+ get: function () { return B7FZNQF3_cjs.resolveGatedTransactions; }
26
26
  });
27
27
  Object.defineProperty(exports, "resolveSequencedGatedTransactions", {
28
28
  enumerable: true,
29
- get: function () { return _7MSI3YMN_cjs.resolveSequencedGatedTransactions; }
29
+ get: function () { return B7FZNQF3_cjs.resolveSequencedGatedTransactions; }
30
30
  });
31
31
  Object.defineProperty(exports, "constructGatedTransaction", {
32
32
  enumerable: true,
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { gatedTransactionGoSignal, queryGatedTransactions, useGatedTransactionSignalLock } from './5YTIURD3.js';
2
- export { resolveGatedTransactions, resolveSequencedGatedTransactions } from './CTI3YHKW.js';
2
+ export { resolveGatedTransactions, resolveSequencedGatedTransactions } from './ILT2CCJW.js';
3
3
  export { constructGatedTransaction, constructGatedTransactionFromPointer, getIdForGatedTransaction } from './O2UH7G3V.js';
4
4
  export { GatedTransactionStatus, createGatedTxCheckActivitySchema, createTxDependentActivitySchema, gatedTransactionCacheSchema, gatedTransactionIsResolvedGatedTransaction, gatedTransactionResultSchema, gatedTransactionSchema, resolvedGatedTransactionSchema } from './CKYPLVJX.js';
5
5
  import './VUOMXK5T.js';
package/dist/resolver.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var _7MSI3YMN_cjs = require('./7MSI3YMN.cjs');
3
+ var B7FZNQF3_cjs = require('./B7FZNQF3.cjs');
4
4
  require('./36XFV4BM.cjs');
5
5
  require('./44CZPU6S.cjs');
6
6
  require('./YJF4D23A.cjs');
@@ -9,11 +9,11 @@ require('./YJF4D23A.cjs');
9
9
 
10
10
  Object.defineProperty(exports, "resolveGatedTransactions", {
11
11
  enumerable: true,
12
- get: function () { return _7MSI3YMN_cjs.resolveGatedTransactions; }
12
+ get: function () { return B7FZNQF3_cjs.resolveGatedTransactions; }
13
13
  });
14
14
  Object.defineProperty(exports, "resolveSequencedGatedTransactions", {
15
15
  enumerable: true,
16
- get: function () { return _7MSI3YMN_cjs.resolveSequencedGatedTransactions; }
16
+ get: function () { return B7FZNQF3_cjs.resolveSequencedGatedTransactions; }
17
17
  });
18
18
  //# sourceMappingURL=resolver.cjs.map
19
19
  //# sourceMappingURL=resolver.cjs.map
@@ -1,21 +1,24 @@
1
1
  import type { ActivityRegistry } from '@layerzerolabs/common-activities';
2
2
  import type { Transaction, TransactionResult } from '@layerzerolabs/common-chain-model';
3
3
  import type { WorkflowFunctions } from '@layerzerolabs/common-workflow';
4
+ import type { Logger } from '@layerzerolabs/logger-node';
4
5
  import type { GatedTransaction, IGatedTransactionCache, ResolvedGatedTransaction, UserInteractionCallbacks } from './schemata';
5
- 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, }: {
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, }: {
6
7
  activityRegistry: ActivityRegistry;
7
8
  gatedTxes: GatedTx[];
8
9
  processTx: ProcessTx;
9
10
  fn: WorkflowFunctions;
10
11
  cache?: IGatedTransactionCache;
11
12
  userInteractionCallbacks?: UserInteractionCallbacks;
13
+ logger: Logger;
12
14
  }) => Promise<ResolvedGatedTransaction[]>;
13
- 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, }: {
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, }: {
14
16
  activityRegistry: ActivityRegistry;
15
17
  gatedTxes: GatedTx[][];
16
18
  processTx: ProcessTx;
17
19
  fn: WorkflowFunctions;
18
20
  cache?: IGatedTransactionCache;
19
21
  userInteractionCallbacks?: UserInteractionCallbacks;
22
+ logger: Logger;
20
23
  }) => Promise<ResolvedGatedTransaction[][]>;
21
24
  //# sourceMappingURL=resolver.d.ts.map
@@ -1 +1 @@
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;AAGxE,OAAO,KAAK,EAER,gBAAgB,EAEhB,sBAAsB,EAEtB,wBAAwB,EAExB,wBAAwB,EAC3B,MAAM,YAAY,CAAC;AAuSpB,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,kFAOC;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;CACvD,KAAG,OAAO,CAAC,wBAAwB,EAAE,CAsErC,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,kFAOC;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;CACvD,0CAeA,CAAC"}
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 CHANGED
@@ -1,4 +1,4 @@
1
- export { resolveGatedTransactions, resolveSequencedGatedTransactions } from './CTI3YHKW.js';
1
+ export { resolveGatedTransactions, resolveSequencedGatedTransactions } from './ILT2CCJW.js';
2
2
  import './O2UH7G3V.js';
3
3
  import './CKYPLVJX.js';
4
4
  import './VUOMXK5T.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerzerolabs/gated-transaction",
3
- "version": "0.0.53",
3
+ "version": "0.0.54",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "sideEffects": false,
@@ -17,19 +17,20 @@
17
17
  "dependencies": {
18
18
  "lodash.isequal": "^4.5.0",
19
19
  "zod": "^3.23.8",
20
- "@layerzerolabs/common-activities": "0.0.53",
21
- "@layerzerolabs/common-workflow": "0.0.53",
22
- "@layerzerolabs/common-utils": "0.0.53",
23
- "@layerzerolabs/zod-utils": "0.0.53",
24
- "@layerzerolabs/common-chain-model": "0.0.53"
20
+ "@layerzerolabs/common-activities": "0.0.54",
21
+ "@layerzerolabs/common-chain-model": "0.0.54",
22
+ "@layerzerolabs/common-utils": "0.0.54",
23
+ "@layerzerolabs/common-workflow": "0.0.54",
24
+ "@layerzerolabs/logger-node": "0.0.54",
25
+ "@layerzerolabs/zod-utils": "0.0.54"
25
26
  },
26
27
  "devDependencies": {
27
28
  "@types/lodash.isequal": "^4.5.8",
28
29
  "tsup": "^8.4.0",
29
30
  "vitest": "^3.2.3",
30
- "@layerzerolabs/tsup-configuration": "0.0.53",
31
- "@layerzerolabs/typescript-configuration": "0.0.53",
32
- "@layerzerolabs/typescript-utils": "0.0.53"
31
+ "@layerzerolabs/typescript-configuration": "0.0.54",
32
+ "@layerzerolabs/tsup-configuration": "0.0.54",
33
+ "@layerzerolabs/typescript-utils": "0.0.54"
33
34
  },
34
35
  "publishConfig": {
35
36
  "access": "restricted",
package/src/resolver.ts CHANGED
@@ -7,6 +7,7 @@ import type {
7
7
  TransactionWithResult,
8
8
  } from '@layerzerolabs/common-chain-model';
9
9
  import type { WorkflowFunctions } from '@layerzerolabs/common-workflow';
10
+ import type { Logger } from '@layerzerolabs/logger-node';
10
11
 
11
12
  import { getIdForGatedTransaction } from './gatedTx';
12
13
  import type {
@@ -141,6 +142,7 @@ const resolveGatedTransaction = async <
141
142
  confirmationCallback,
142
143
  fn,
143
144
  cache,
145
+ logger,
144
146
  }: {
145
147
  activityRegistry: ActivityRegistry;
146
148
  gatedTx: GatedTx;
@@ -154,6 +156,7 @@ const resolveGatedTransaction = async <
154
156
  confirmationCallback: NonNullable<UserInteractionCallbacks['confirmationCallback']>;
155
157
  fn: WorkflowFunctions;
156
158
  cache?: IGatedTransactionCache;
159
+ logger: Logger;
157
160
  }): Promise<{
158
161
  resolvedGatedTransaction: ResolvedGatedTransaction<GatedTx>;
159
162
  lastCheckResult: OnChainCheckResult | null;
@@ -182,7 +185,7 @@ const resolveGatedTransaction = async <
182
185
  );
183
186
 
184
187
  if (!dependenciesWereSuccessful) {
185
- console.error(
188
+ logger.error(
186
189
  `Some dependencies of gated transaction ${gatedTx.name} failed: ${JSON.stringify(
187
190
  Object.fromEntries(dependencyIds.map((id) => [id, getTransactionResult(id)])),
188
191
  undefined,
@@ -282,7 +285,7 @@ const resolveGatedTransaction = async <
282
285
  v === undefined ? 'undefined' : typeof v === 'bigint' ? v.toString() : v,
283
286
  2,
284
287
  );
285
- console.error(
288
+ logger.error(
286
289
  `Gated transaction ${gatedTx.name} final check failed:\nExpected result ${stringify(gatedTx.check.expectedResult.comparisonValue)}, but got:\n${stringify(finalCheckResult.onChainData)}, txHash: ${submittedTransaction.result.minedTxHash}`,
287
290
  );
288
291
  return {
@@ -298,7 +301,7 @@ const resolveGatedTransaction = async <
298
301
  };
299
302
  }
300
303
  } catch (e) {
301
- console.error('Gated transaction failed', e);
304
+ logger.error('Gated transaction failed', e);
302
305
  //sent and failed
303
306
  return {
304
307
  resolvedGatedTransaction: {
@@ -324,6 +327,7 @@ export const resolveGatedTransactions = async <
324
327
  fn,
325
328
  cache,
326
329
  userInteractionCallbacks,
330
+ logger,
327
331
  }: {
328
332
  activityRegistry: ActivityRegistry;
329
333
  gatedTxes: GatedTx[];
@@ -331,6 +335,7 @@ export const resolveGatedTransactions = async <
331
335
  fn: WorkflowFunctions;
332
336
  cache?: IGatedTransactionCache;
333
337
  userInteractionCallbacks?: UserInteractionCallbacks;
338
+ logger: Logger;
334
339
  }): Promise<ResolvedGatedTransaction[]> => {
335
340
  //compute deps
336
341
  const allInternalIds = gatedTxes.map((tx) => getIdForGatedTransaction(tx));
@@ -382,6 +387,7 @@ export const resolveGatedTransactions = async <
382
387
  userInteractionCallbacks?.confirmationCallback ?? (async () => true),
383
388
  fn,
384
389
  cache,
390
+ logger,
385
391
  });
386
392
 
387
393
  const resId = getIdForGatedTransaction(resolvedGatedTransaction);
@@ -414,6 +420,7 @@ export const resolveSequencedGatedTransactions = async <
414
420
  cache,
415
421
  userInteractionCallbacks,
416
422
  fn,
423
+ logger,
417
424
  }: {
418
425
  activityRegistry: ActivityRegistry;
419
426
  gatedTxes: GatedTx[][];
@@ -421,6 +428,7 @@ export const resolveSequencedGatedTransactions = async <
421
428
  fn: WorkflowFunctions;
422
429
  cache?: IGatedTransactionCache;
423
430
  userInteractionCallbacks?: UserInteractionCallbacks;
431
+ logger: Logger;
424
432
  }) => {
425
433
  const results = [];
426
434
  for (const seq of gatedTxes) {
@@ -431,6 +439,7 @@ export const resolveSequencedGatedTransactions = async <
431
439
  cache,
432
440
  userInteractionCallbacks,
433
441
  fn,
442
+ logger,
434
443
  });
435
444
  results.push(result);
436
445
  }
@@ -1,6 +1,7 @@
1
1
  import { describe, expect, test, vi } from 'vitest';
2
2
 
3
3
  import { WorkflowFunctions } from '@layerzerolabs/common-workflow';
4
+ import { Logger } from '@layerzerolabs/logger-node';
4
5
 
5
6
  import {
6
7
  constructGatedTransaction,
@@ -63,6 +64,16 @@ const makeFn = (): WorkflowFunctions =>
63
64
  },
64
65
  }) as WorkflowFunctions;
65
66
 
67
+ const makeLogger = (): Logger =>
68
+ ({
69
+ log: vi.fn(),
70
+ trace: vi.fn(),
71
+ debug: vi.fn(),
72
+ info: vi.fn(),
73
+ warn: vi.fn(),
74
+ error: vi.fn(),
75
+ }) as Logger;
76
+
66
77
  describe('resolveGatedTransactions - dependency and edge cases', () => {
67
78
  test('internal dependency NO_OP enables dependent to execute and succeed', async () => {
68
79
  const registry = makeRegistry({
@@ -83,6 +94,7 @@ describe('resolveGatedTransactions - dependency and edge cases', () => {
83
94
  gatedTxes: [txA, txB],
84
95
  processTx,
85
96
  fn: makeFn(),
97
+ logger: makeLogger(),
86
98
  });
87
99
 
88
100
  expect(resA.result.status).toBe(GatedTransactionStatus.NO_OP);
@@ -105,6 +117,7 @@ describe('resolveGatedTransactions - dependency and edge cases', () => {
105
117
  gatedTxes: [txA, txB],
106
118
  processTx,
107
119
  fn: makeFn(),
120
+ logger: makeLogger(),
108
121
  });
109
122
 
110
123
  expect(resA.result.status).toBe(GatedTransactionStatus.SUCCESS);
@@ -129,6 +142,7 @@ describe('resolveGatedTransactions - dependency and edge cases', () => {
129
142
  gatedTxes: [txA, txB],
130
143
  processTx,
131
144
  fn: makeFn(),
145
+ logger: makeLogger(),
132
146
  });
133
147
 
134
148
  expect(resA.result.status).toBe(GatedTransactionStatus.TRANSACTION_FAILED);
@@ -151,6 +165,7 @@ describe('resolveGatedTransactions - dependency and edge cases', () => {
151
165
  gatedTxes: [txB],
152
166
  processTx,
153
167
  fn: makeFn(),
168
+ logger: makeLogger(),
154
169
  });
155
170
 
156
171
  expect(resB.result.status).toBe(GatedTransactionStatus.SUCCESS);
@@ -172,6 +187,7 @@ describe('resolveGatedTransactions - dependency and edge cases', () => {
172
187
  gatedTxes: [txB],
173
188
  processTx,
174
189
  fn: makeFn(),
190
+ logger: makeLogger(),
175
191
  });
176
192
 
177
193
  expect(resB.result.status).toBe(GatedTransactionStatus.DEPENDENCY_FAILED);
@@ -189,6 +205,7 @@ describe('resolveGatedTransactions - dependency and edge cases', () => {
189
205
  processTx,
190
206
  userInteractionCallbacks: { confirmationCallback: async () => false },
191
207
  fn: makeFn(),
208
+ logger: makeLogger(),
192
209
  });
193
210
 
194
211
  expect(result[0].result.status).toStrictEqual(GatedTransactionStatus.DENIED);
@@ -244,6 +261,7 @@ describe('resolveGatedTransactions - dependency and edge cases', () => {
244
261
  gatedTxes: [tx1, tx2],
245
262
  processTx,
246
263
  fn: makeFn(),
264
+ logger: makeLogger(),
247
265
  });
248
266
 
249
267
  expect(r1.result.status).toBe(GatedTransactionStatus.SUCCESS);
@@ -290,6 +308,7 @@ describe('resolveGatedTransactions - functional transactions', () => {
290
308
  gatedTxes: [txF],
291
309
  processTx,
292
310
  fn: makeFn(),
311
+ logger: makeLogger(),
293
312
  });
294
313
 
295
314
  expect(resF.result.status).toBe(GatedTransactionStatus.SUCCESS);
@@ -354,6 +373,7 @@ describe('resolveGatedTransactions - functional transactions', () => {
354
373
  gatedTxes: [dep, func],
355
374
  processTx,
356
375
  fn: makeFn(),
376
+ logger: makeLogger(),
357
377
  });
358
378
 
359
379
  expect(resDep.result.status).toBe(GatedTransactionStatus.SUCCESS);
@@ -396,6 +416,7 @@ describe('resolveGatedTransactions - functional transactions', () => {
396
416
  gatedTxes: [tx],
397
417
  processTx,
398
418
  fn: makeFn(),
419
+ logger: makeLogger(),
399
420
  });
400
421
 
401
422
  expect(res.result.status).toBe(GatedTransactionStatus.TRANSACTION_FAILED);
@@ -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","baseGatedTx","name","chainName","bundleName","dependencies","cacheable","uniqueIdKeys","metadata","description","dependencyIds","map","dependenciesAreAllProcessed","every","id","condition","dependenciesWereSuccessful","checkResult","console","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":"7MSI3YMN.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.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}: {\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 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 console.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 console.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 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 +0,0 @@
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","getTransaction","parallelizingKey","getIdForGatedTransaction","resolveGatedTransaction","activityRegistry","gatedTx","getTransactionResult","processTx","confirmationCallback","fn","cache","baseGatedTx","name","chainName","bundleName","dependencies","cacheable","uniqueIdKeys","metadata","description","dependencyIds","map","dependenciesAreAllProcessed","every","id","condition","dependenciesWereSuccessful","checkResult","console","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":"CTI3YHKW.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.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}: {\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 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 console.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 console.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 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"]}