@layerzerolabs/gated-transaction 0.0.60 → 0.0.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +27 -43
- package/.turbo/turbo-test.log +5 -6
- package/dist/{VH2LMV2W.js → SGAQYA4D.js} +2 -2
- package/dist/{VH2LMV2W.js.map → SGAQYA4D.js.map} +1 -1
- package/dist/{UVQ5QQ4U.cjs → UV63UNW4.cjs} +2 -2
- package/dist/{UVQ5QQ4U.cjs.map → UV63UNW4.cjs.map} +1 -1
- package/dist/index.cjs +10 -32
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/schemata.cjs +10 -10
- package/dist/schemata.d.ts +0 -4
- package/dist/schemata.d.ts.map +1 -1
- package/dist/schemata.js +1 -1
- package/package.json +9 -12
- package/src/index.ts +0 -2
- package/src/schemata.ts +0 -5
- package/dist/CZKVKTL4.cjs +0 -107
- package/dist/CZKVKTL4.cjs.map +0 -1
- package/dist/JMMYK2SL.js +0 -103
- package/dist/JMMYK2SL.js.map +0 -1
- package/dist/ONVFWJXG.js +0 -250
- package/dist/ONVFWJXG.js.map +0 -1
- package/dist/XROB6QHI.cjs +0 -257
- package/dist/XROB6QHI.cjs.map +0 -1
- package/dist/gatedTransactionSignalLock.cjs +0 -22
- package/dist/gatedTransactionSignalLock.cjs.map +0 -1
- package/dist/gatedTransactionSignalLock.d.ts +0 -20
- package/dist/gatedTransactionSignalLock.d.ts.map +0 -1
- package/dist/gatedTransactionSignalLock.js +0 -5
- package/dist/gatedTransactionSignalLock.js.map +0 -1
- package/dist/resolver.cjs +0 -19
- package/dist/resolver.cjs.map +0 -1
- package/dist/resolver.d.ts +0 -24
- package/dist/resolver.d.ts.map +0 -1
- package/dist/resolver.js +0 -6
- package/dist/resolver.js.map +0 -1
- package/src/gatedTransactionSignalLock.ts +0 -143
- package/src/resolver.ts +0 -448
- package/test/resolver.test.ts +0 -425
package/dist/CZKVKTL4.cjs
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var EJKFKEMV_cjs = require('./EJKFKEMV.cjs');
|
|
4
|
-
var YJF4D23A_cjs = require('./YJF4D23A.cjs');
|
|
5
|
-
var commonWorkflow = require('@layerzerolabs/common-workflow');
|
|
6
|
-
|
|
7
|
-
var gatedTransactionGoSignal = commonWorkflow.defineSignal("GatedTransactionGo");
|
|
8
|
-
var gatedTransactionGoSignalInternal = commonWorkflow.defineSignal("GatedTransactionGoInternal");
|
|
9
|
-
var queryGatedTransactions = commonWorkflow.defineQuery("GatedTransactionQuery");
|
|
10
|
-
var useGatedTransactionSignalLock = /* @__PURE__ */ YJF4D23A_cjs.__name((fn, options = {
|
|
11
|
-
forceSend: false
|
|
12
|
-
}) => {
|
|
13
|
-
const passthroughWorkflows = [];
|
|
14
|
-
const addChild = /* @__PURE__ */ YJF4D23A_cjs.__name(async (wf) => {
|
|
15
|
-
passthroughWorkflows.push(wf);
|
|
16
|
-
await wf.signal(gatedTransactionGoSignal, [
|
|
17
|
-
{
|
|
18
|
-
ids: [
|
|
19
|
-
...approvedInfo.ids
|
|
20
|
-
],
|
|
21
|
-
bundleNames: [
|
|
22
|
-
...approvedInfo.bundleNames
|
|
23
|
-
]
|
|
24
|
-
}
|
|
25
|
-
]);
|
|
26
|
-
}, "addChild");
|
|
27
|
-
const approvedInfo = {
|
|
28
|
-
ids: /* @__PURE__ */ new Set(),
|
|
29
|
-
bundleNames: /* @__PURE__ */ new Set()
|
|
30
|
-
};
|
|
31
|
-
const pendingTransactions = {};
|
|
32
|
-
const sentTransactions = {};
|
|
33
|
-
const completedTransactions = {};
|
|
34
|
-
fn.setHandler(queryGatedTransactions, () => {
|
|
35
|
-
const passthroughWfIds = passthroughWorkflows.map((wf) => wf.workflowId);
|
|
36
|
-
return {
|
|
37
|
-
pendingTransactions: Object.values(pendingTransactions),
|
|
38
|
-
sentTransactions: Object.values(sentTransactions),
|
|
39
|
-
completedTransactions: Object.values(completedTransactions),
|
|
40
|
-
passthroughWorkflowIds: passthroughWfIds ?? []
|
|
41
|
-
};
|
|
42
|
-
});
|
|
43
|
-
const gatedTransactionGoInternal = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ ids, bundleNames, uniqueGoSignalId }) => {
|
|
44
|
-
if (ids.length === 0 && bundleNames.length === 0) {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
approvedInfo.ids = /* @__PURE__ */ new Set([
|
|
48
|
-
...approvedInfo.ids,
|
|
49
|
-
...ids
|
|
50
|
-
]);
|
|
51
|
-
approvedInfo.bundleNames = /* @__PURE__ */ new Set([
|
|
52
|
-
...approvedInfo.bundleNames,
|
|
53
|
-
...bundleNames
|
|
54
|
-
]);
|
|
55
|
-
await Promise.allSettled(passthroughWorkflows.map((wf) => {
|
|
56
|
-
return wf.signal(gatedTransactionGoSignalInternal, [
|
|
57
|
-
{
|
|
58
|
-
ids,
|
|
59
|
-
bundleNames,
|
|
60
|
-
uniqueGoSignalId
|
|
61
|
-
}
|
|
62
|
-
]);
|
|
63
|
-
}));
|
|
64
|
-
}, "gatedTransactionGoInternal");
|
|
65
|
-
fn.setHandler(gatedTransactionGoSignalInternal, gatedTransactionGoInternal);
|
|
66
|
-
fn.setHandler(gatedTransactionGoSignal, async ({ ids, bundleNames }) => {
|
|
67
|
-
const uniqueGoSignalId = "TO_BE_IMPLEMENTED_WHEN_ADDING_THE_BUNDLER";
|
|
68
|
-
const newIds = ids.filter((id) => !approvedInfo.ids.has(id));
|
|
69
|
-
const newBundleNames = bundleNames.filter((bundleName) => !approvedInfo.bundleNames.has(bundleName));
|
|
70
|
-
await gatedTransactionGoInternal({
|
|
71
|
-
ids: newIds,
|
|
72
|
-
bundleNames: newBundleNames,
|
|
73
|
-
uniqueGoSignalId
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
const confirmationCallback = /* @__PURE__ */ YJF4D23A_cjs.__name(async (tx) => {
|
|
77
|
-
const id = EJKFKEMV_cjs.getIdForGatedTransaction(tx);
|
|
78
|
-
pendingTransactions[id] = tx;
|
|
79
|
-
await fn.condition(() => {
|
|
80
|
-
if (options.forceSend) {
|
|
81
|
-
return true;
|
|
82
|
-
}
|
|
83
|
-
return approvedInfo.ids.has(id) || !!tx.bundleName && approvedInfo.bundleNames.has(tx.bundleName);
|
|
84
|
-
});
|
|
85
|
-
sentTransactions[id] = tx;
|
|
86
|
-
delete pendingTransactions[id];
|
|
87
|
-
return true;
|
|
88
|
-
}, "confirmationCallback");
|
|
89
|
-
const onResultCallback = /* @__PURE__ */ YJF4D23A_cjs.__name((result) => {
|
|
90
|
-
const id = EJKFKEMV_cjs.getIdForGatedTransaction(result);
|
|
91
|
-
completedTransactions[id] = result;
|
|
92
|
-
delete sentTransactions[id];
|
|
93
|
-
}, "onResultCallback");
|
|
94
|
-
return {
|
|
95
|
-
userInteractionCallbacks: {
|
|
96
|
-
confirmationCallback,
|
|
97
|
-
onResultCallback
|
|
98
|
-
},
|
|
99
|
-
addChild
|
|
100
|
-
};
|
|
101
|
-
}, "useGatedTransactionSignalLock");
|
|
102
|
-
|
|
103
|
-
exports.gatedTransactionGoSignal = gatedTransactionGoSignal;
|
|
104
|
-
exports.queryGatedTransactions = queryGatedTransactions;
|
|
105
|
-
exports.useGatedTransactionSignalLock = useGatedTransactionSignalLock;
|
|
106
|
-
//# sourceMappingURL=CZKVKTL4.cjs.map
|
|
107
|
-
//# sourceMappingURL=CZKVKTL4.cjs.map
|
package/dist/CZKVKTL4.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/gatedTransactionSignalLock.ts"],"names":["gatedTransactionGoSignal","defineSignal","gatedTransactionGoSignalInternal","queryGatedTransactions","defineQuery","useGatedTransactionSignalLock","__name","fn","options","forceSend","passthroughWorkflows","addChild","wf","push","signal","ids","approvedInfo","bundleNames","Set","pendingTransactions","sentTransactions","completedTransactions","setHandler","passthroughWfIds","map","workflowId","Object","values","passthroughWorkflowIds","gatedTransactionGoInternal","uniqueGoSignalId","length","Promise","allSettled","newIds","filter","id","has","newBundleNames","bundleName","confirmationCallback","tx","getIdForGatedTransaction","condition","onResultCallback","result","userInteractionCallbacks"],"mappings":"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","file":"CZKVKTL4.cjs","sourcesContent":["import type { WorkflowFunctions, WorkflowHandle } from '@layerzerolabs/common-workflow';\nimport { defineQuery, defineSignal } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n GatedTransaction,\n GatedTransactionId,\n ResolvedGatedTransaction,\n UserInteractionCallbacks,\n} from './schemata';\n\nexport type QueryGatedTransactionsResult = {\n pendingTransactions: GatedTransaction[];\n sentTransactions: GatedTransaction[];\n completedTransactions: ResolvedGatedTransaction[];\n passthroughWorkflowIds: string[];\n};\n\nexport const gatedTransactionGoSignal = defineSignal<\n [\n arg: {\n ids: GatedTransactionId[];\n bundleNames: string[];\n },\n ]\n>('GatedTransactionGo');\n\nconst gatedTransactionGoSignalInternal = defineSignal<\n [\n arg: {\n ids: GatedTransactionId[];\n bundleNames: string[];\n uniqueGoSignalId: string | undefined;\n },\n ]\n>('GatedTransactionGoInternal');\n\nexport const queryGatedTransactions =\n defineQuery<QueryGatedTransactionsResult>('GatedTransactionQuery');\n\nexport const useGatedTransactionSignalLock = (\n fn: WorkflowFunctions,\n options: { forceSend: boolean } = { forceSend: false },\n): {\n userInteractionCallbacks: UserInteractionCallbacks;\n addChild: (wf: WorkflowHandle<any>) => Promise<void>;\n} => {\n const passthroughWorkflows: WorkflowHandle<any>[] = [];\n const addChild = async (wf: WorkflowHandle<any>) => {\n passthroughWorkflows.push(wf);\n await wf.signal(gatedTransactionGoSignal, [\n { ids: [...approvedInfo.ids], bundleNames: [...approvedInfo.bundleNames] },\n ]);\n };\n const approvedInfo: {\n ids: Set<GatedTransactionId>;\n bundleNames: Set<string>;\n } = {\n ids: new Set(),\n bundleNames: new Set(),\n };\n\n const pendingTransactions: Record<GatedTransactionId, GatedTransaction> = {};\n const sentTransactions: Record<GatedTransactionId, GatedTransaction> = {};\n const completedTransactions: Record<GatedTransactionId, ResolvedGatedTransaction> = {};\n\n fn.setHandler(queryGatedTransactions, () => {\n const passthroughWfIds = passthroughWorkflows.map((wf) => wf.workflowId);\n return {\n pendingTransactions: Object.values(pendingTransactions),\n sentTransactions: Object.values(sentTransactions),\n completedTransactions: Object.values(completedTransactions),\n passthroughWorkflowIds: passthroughWfIds ?? [],\n };\n });\n\n const gatedTransactionGoInternal = async ({\n ids,\n bundleNames,\n uniqueGoSignalId,\n }: {\n ids: GatedTransactionId[];\n bundleNames: string[];\n uniqueGoSignalId: string | undefined;\n }): Promise<void> => {\n if (ids.length === 0 && bundleNames.length === 0) {\n return;\n }\n\n approvedInfo.ids = new Set([...approvedInfo.ids, ...ids]);\n approvedInfo.bundleNames = new Set([...approvedInfo.bundleNames, ...bundleNames]);\n await Promise.allSettled(\n passthroughWorkflows.map((wf) => {\n return wf.signal(gatedTransactionGoSignalInternal, [\n { ids, bundleNames, uniqueGoSignalId },\n ]);\n }),\n );\n };\n fn.setHandler(gatedTransactionGoSignalInternal, gatedTransactionGoInternal);\n\n fn.setHandler(gatedTransactionGoSignal, async ({ ids, bundleNames }) => {\n const uniqueGoSignalId = 'TO_BE_IMPLEMENTED_WHEN_ADDING_THE_BUNDLER';\n // Only keep new transaction ids and bundle names\n const newIds = ids.filter((id) => !approvedInfo.ids.has(id));\n const newBundleNames = bundleNames.filter(\n (bundleName) => !approvedInfo.bundleNames.has(bundleName),\n );\n\n await gatedTransactionGoInternal({\n ids: newIds,\n bundleNames: newBundleNames,\n uniqueGoSignalId,\n });\n });\n\n const confirmationCallback: UserInteractionCallbacks['confirmationCallback'] = async (tx) => {\n const id = getIdForGatedTransaction(tx);\n pendingTransactions[id] = tx;\n\n await fn.condition(() => {\n if (options.forceSend) {\n return true;\n }\n return (\n approvedInfo.ids.has(id) ||\n (!!tx.bundleName && approvedInfo.bundleNames.has(tx.bundleName))\n );\n });\n\n sentTransactions[id] = tx;\n delete pendingTransactions[id];\n return true;\n };\n\n const onResultCallback: UserInteractionCallbacks['onResultCallback'] = (result) => {\n const id = getIdForGatedTransaction(result);\n completedTransactions[id] = result;\n delete sentTransactions[id];\n };\n\n return { userInteractionCallbacks: { confirmationCallback, onResultCallback }, addChild };\n};\n"]}
|
package/dist/JMMYK2SL.js
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { getIdForGatedTransaction } from './WNYV5NIT.js';
|
|
2
|
-
import { __name } from './VUOMXK5T.js';
|
|
3
|
-
import { defineSignal, defineQuery } from '@layerzerolabs/common-workflow';
|
|
4
|
-
|
|
5
|
-
var gatedTransactionGoSignal = defineSignal("GatedTransactionGo");
|
|
6
|
-
var gatedTransactionGoSignalInternal = defineSignal("GatedTransactionGoInternal");
|
|
7
|
-
var queryGatedTransactions = defineQuery("GatedTransactionQuery");
|
|
8
|
-
var useGatedTransactionSignalLock = /* @__PURE__ */ __name((fn, options = {
|
|
9
|
-
forceSend: false
|
|
10
|
-
}) => {
|
|
11
|
-
const passthroughWorkflows = [];
|
|
12
|
-
const addChild = /* @__PURE__ */ __name(async (wf) => {
|
|
13
|
-
passthroughWorkflows.push(wf);
|
|
14
|
-
await wf.signal(gatedTransactionGoSignal, [
|
|
15
|
-
{
|
|
16
|
-
ids: [
|
|
17
|
-
...approvedInfo.ids
|
|
18
|
-
],
|
|
19
|
-
bundleNames: [
|
|
20
|
-
...approvedInfo.bundleNames
|
|
21
|
-
]
|
|
22
|
-
}
|
|
23
|
-
]);
|
|
24
|
-
}, "addChild");
|
|
25
|
-
const approvedInfo = {
|
|
26
|
-
ids: /* @__PURE__ */ new Set(),
|
|
27
|
-
bundleNames: /* @__PURE__ */ new Set()
|
|
28
|
-
};
|
|
29
|
-
const pendingTransactions = {};
|
|
30
|
-
const sentTransactions = {};
|
|
31
|
-
const completedTransactions = {};
|
|
32
|
-
fn.setHandler(queryGatedTransactions, () => {
|
|
33
|
-
const passthroughWfIds = passthroughWorkflows.map((wf) => wf.workflowId);
|
|
34
|
-
return {
|
|
35
|
-
pendingTransactions: Object.values(pendingTransactions),
|
|
36
|
-
sentTransactions: Object.values(sentTransactions),
|
|
37
|
-
completedTransactions: Object.values(completedTransactions),
|
|
38
|
-
passthroughWorkflowIds: passthroughWfIds ?? []
|
|
39
|
-
};
|
|
40
|
-
});
|
|
41
|
-
const gatedTransactionGoInternal = /* @__PURE__ */ __name(async ({ ids, bundleNames, uniqueGoSignalId }) => {
|
|
42
|
-
if (ids.length === 0 && bundleNames.length === 0) {
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
approvedInfo.ids = /* @__PURE__ */ new Set([
|
|
46
|
-
...approvedInfo.ids,
|
|
47
|
-
...ids
|
|
48
|
-
]);
|
|
49
|
-
approvedInfo.bundleNames = /* @__PURE__ */ new Set([
|
|
50
|
-
...approvedInfo.bundleNames,
|
|
51
|
-
...bundleNames
|
|
52
|
-
]);
|
|
53
|
-
await Promise.allSettled(passthroughWorkflows.map((wf) => {
|
|
54
|
-
return wf.signal(gatedTransactionGoSignalInternal, [
|
|
55
|
-
{
|
|
56
|
-
ids,
|
|
57
|
-
bundleNames,
|
|
58
|
-
uniqueGoSignalId
|
|
59
|
-
}
|
|
60
|
-
]);
|
|
61
|
-
}));
|
|
62
|
-
}, "gatedTransactionGoInternal");
|
|
63
|
-
fn.setHandler(gatedTransactionGoSignalInternal, gatedTransactionGoInternal);
|
|
64
|
-
fn.setHandler(gatedTransactionGoSignal, async ({ ids, bundleNames }) => {
|
|
65
|
-
const uniqueGoSignalId = "TO_BE_IMPLEMENTED_WHEN_ADDING_THE_BUNDLER";
|
|
66
|
-
const newIds = ids.filter((id) => !approvedInfo.ids.has(id));
|
|
67
|
-
const newBundleNames = bundleNames.filter((bundleName) => !approvedInfo.bundleNames.has(bundleName));
|
|
68
|
-
await gatedTransactionGoInternal({
|
|
69
|
-
ids: newIds,
|
|
70
|
-
bundleNames: newBundleNames,
|
|
71
|
-
uniqueGoSignalId
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
const confirmationCallback = /* @__PURE__ */ __name(async (tx) => {
|
|
75
|
-
const id = getIdForGatedTransaction(tx);
|
|
76
|
-
pendingTransactions[id] = tx;
|
|
77
|
-
await fn.condition(() => {
|
|
78
|
-
if (options.forceSend) {
|
|
79
|
-
return true;
|
|
80
|
-
}
|
|
81
|
-
return approvedInfo.ids.has(id) || !!tx.bundleName && approvedInfo.bundleNames.has(tx.bundleName);
|
|
82
|
-
});
|
|
83
|
-
sentTransactions[id] = tx;
|
|
84
|
-
delete pendingTransactions[id];
|
|
85
|
-
return true;
|
|
86
|
-
}, "confirmationCallback");
|
|
87
|
-
const onResultCallback = /* @__PURE__ */ __name((result) => {
|
|
88
|
-
const id = getIdForGatedTransaction(result);
|
|
89
|
-
completedTransactions[id] = result;
|
|
90
|
-
delete sentTransactions[id];
|
|
91
|
-
}, "onResultCallback");
|
|
92
|
-
return {
|
|
93
|
-
userInteractionCallbacks: {
|
|
94
|
-
confirmationCallback,
|
|
95
|
-
onResultCallback
|
|
96
|
-
},
|
|
97
|
-
addChild
|
|
98
|
-
};
|
|
99
|
-
}, "useGatedTransactionSignalLock");
|
|
100
|
-
|
|
101
|
-
export { gatedTransactionGoSignal, queryGatedTransactions, useGatedTransactionSignalLock };
|
|
102
|
-
//# sourceMappingURL=JMMYK2SL.js.map
|
|
103
|
-
//# sourceMappingURL=JMMYK2SL.js.map
|
package/dist/JMMYK2SL.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/gatedTransactionSignalLock.ts"],"names":["gatedTransactionGoSignal","defineSignal","gatedTransactionGoSignalInternal","queryGatedTransactions","defineQuery","useGatedTransactionSignalLock","fn","options","forceSend","passthroughWorkflows","addChild","wf","push","signal","ids","approvedInfo","bundleNames","Set","pendingTransactions","sentTransactions","completedTransactions","setHandler","passthroughWfIds","map","workflowId","Object","values","passthroughWorkflowIds","gatedTransactionGoInternal","uniqueGoSignalId","length","Promise","allSettled","newIds","filter","id","has","newBundleNames","bundleName","confirmationCallback","tx","getIdForGatedTransaction","condition","onResultCallback","result","userInteractionCallbacks"],"mappings":"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","file":"JMMYK2SL.js","sourcesContent":["import type { WorkflowFunctions, WorkflowHandle } from '@layerzerolabs/common-workflow';\nimport { defineQuery, defineSignal } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n GatedTransaction,\n GatedTransactionId,\n ResolvedGatedTransaction,\n UserInteractionCallbacks,\n} from './schemata';\n\nexport type QueryGatedTransactionsResult = {\n pendingTransactions: GatedTransaction[];\n sentTransactions: GatedTransaction[];\n completedTransactions: ResolvedGatedTransaction[];\n passthroughWorkflowIds: string[];\n};\n\nexport const gatedTransactionGoSignal = defineSignal<\n [\n arg: {\n ids: GatedTransactionId[];\n bundleNames: string[];\n },\n ]\n>('GatedTransactionGo');\n\nconst gatedTransactionGoSignalInternal = defineSignal<\n [\n arg: {\n ids: GatedTransactionId[];\n bundleNames: string[];\n uniqueGoSignalId: string | undefined;\n },\n ]\n>('GatedTransactionGoInternal');\n\nexport const queryGatedTransactions =\n defineQuery<QueryGatedTransactionsResult>('GatedTransactionQuery');\n\nexport const useGatedTransactionSignalLock = (\n fn: WorkflowFunctions,\n options: { forceSend: boolean } = { forceSend: false },\n): {\n userInteractionCallbacks: UserInteractionCallbacks;\n addChild: (wf: WorkflowHandle<any>) => Promise<void>;\n} => {\n const passthroughWorkflows: WorkflowHandle<any>[] = [];\n const addChild = async (wf: WorkflowHandle<any>) => {\n passthroughWorkflows.push(wf);\n await wf.signal(gatedTransactionGoSignal, [\n { ids: [...approvedInfo.ids], bundleNames: [...approvedInfo.bundleNames] },\n ]);\n };\n const approvedInfo: {\n ids: Set<GatedTransactionId>;\n bundleNames: Set<string>;\n } = {\n ids: new Set(),\n bundleNames: new Set(),\n };\n\n const pendingTransactions: Record<GatedTransactionId, GatedTransaction> = {};\n const sentTransactions: Record<GatedTransactionId, GatedTransaction> = {};\n const completedTransactions: Record<GatedTransactionId, ResolvedGatedTransaction> = {};\n\n fn.setHandler(queryGatedTransactions, () => {\n const passthroughWfIds = passthroughWorkflows.map((wf) => wf.workflowId);\n return {\n pendingTransactions: Object.values(pendingTransactions),\n sentTransactions: Object.values(sentTransactions),\n completedTransactions: Object.values(completedTransactions),\n passthroughWorkflowIds: passthroughWfIds ?? [],\n };\n });\n\n const gatedTransactionGoInternal = async ({\n ids,\n bundleNames,\n uniqueGoSignalId,\n }: {\n ids: GatedTransactionId[];\n bundleNames: string[];\n uniqueGoSignalId: string | undefined;\n }): Promise<void> => {\n if (ids.length === 0 && bundleNames.length === 0) {\n return;\n }\n\n approvedInfo.ids = new Set([...approvedInfo.ids, ...ids]);\n approvedInfo.bundleNames = new Set([...approvedInfo.bundleNames, ...bundleNames]);\n await Promise.allSettled(\n passthroughWorkflows.map((wf) => {\n return wf.signal(gatedTransactionGoSignalInternal, [\n { ids, bundleNames, uniqueGoSignalId },\n ]);\n }),\n );\n };\n fn.setHandler(gatedTransactionGoSignalInternal, gatedTransactionGoInternal);\n\n fn.setHandler(gatedTransactionGoSignal, async ({ ids, bundleNames }) => {\n const uniqueGoSignalId = 'TO_BE_IMPLEMENTED_WHEN_ADDING_THE_BUNDLER';\n // Only keep new transaction ids and bundle names\n const newIds = ids.filter((id) => !approvedInfo.ids.has(id));\n const newBundleNames = bundleNames.filter(\n (bundleName) => !approvedInfo.bundleNames.has(bundleName),\n );\n\n await gatedTransactionGoInternal({\n ids: newIds,\n bundleNames: newBundleNames,\n uniqueGoSignalId,\n });\n });\n\n const confirmationCallback: UserInteractionCallbacks['confirmationCallback'] = async (tx) => {\n const id = getIdForGatedTransaction(tx);\n pendingTransactions[id] = tx;\n\n await fn.condition(() => {\n if (options.forceSend) {\n return true;\n }\n return (\n approvedInfo.ids.has(id) ||\n (!!tx.bundleName && approvedInfo.bundleNames.has(tx.bundleName))\n );\n });\n\n sentTransactions[id] = tx;\n delete pendingTransactions[id];\n return true;\n };\n\n const onResultCallback: UserInteractionCallbacks['onResultCallback'] = (result) => {\n const id = getIdForGatedTransaction(result);\n completedTransactions[id] = result;\n delete sentTransactions[id];\n };\n\n return { userInteractionCallbacks: { confirmationCallback, onResultCallback }, addChild };\n};\n"]}
|
package/dist/ONVFWJXG.js
DELETED
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
import { getIdForGatedTransaction } from './WNYV5NIT.js';
|
|
2
|
-
import { GatedTransactionStatus } from './VH2LMV2W.js';
|
|
3
|
-
import { __name } from './VUOMXK5T.js';
|
|
4
|
-
import isEqual from 'lodash.isequal';
|
|
5
|
-
|
|
6
|
-
var checkGatedTransaction = /* @__PURE__ */ __name(async ({ registry, gatedTransaction, cachedCheckResult, submittedTransaction }) => {
|
|
7
|
-
let onChainData;
|
|
8
|
-
if (cachedCheckResult !== void 0) {
|
|
9
|
-
onChainData = cachedCheckResult;
|
|
10
|
-
} else {
|
|
11
|
-
let params = gatedTransaction.check.params;
|
|
12
|
-
if (submittedTransaction !== void 0) {
|
|
13
|
-
params = [
|
|
14
|
-
...gatedTransaction.check.params,
|
|
15
|
-
submittedTransaction
|
|
16
|
-
];
|
|
17
|
-
}
|
|
18
|
-
onChainData = await registry.callByPointer(gatedTransaction.check.functionPointer, params);
|
|
19
|
-
}
|
|
20
|
-
let expectationMet;
|
|
21
|
-
switch (gatedTransaction.check.expectedResult.operator) {
|
|
22
|
-
case "=":
|
|
23
|
-
expectationMet = isEqual(onChainData, gatedTransaction.check.expectedResult.comparisonValue);
|
|
24
|
-
break;
|
|
25
|
-
case "!=":
|
|
26
|
-
expectationMet = !isEqual(onChainData, gatedTransaction.check.expectedResult.comparisonValue);
|
|
27
|
-
break;
|
|
28
|
-
case ">":
|
|
29
|
-
expectationMet = onChainData > gatedTransaction.check.expectedResult.comparisonValue;
|
|
30
|
-
break;
|
|
31
|
-
case ">=":
|
|
32
|
-
expectationMet = 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
|
-
default:
|
|
41
|
-
throw new Error(`Gated transaction operator "${gatedTransaction.check.expectedResult.operator}" is not supported`);
|
|
42
|
-
}
|
|
43
|
-
return {
|
|
44
|
-
expectationMet,
|
|
45
|
-
onChainData
|
|
46
|
-
};
|
|
47
|
-
}, "checkGatedTransaction");
|
|
48
|
-
var extractGatedTransactionUnderlyingTransaction = /* @__PURE__ */ __name(async ({ registry, gatedTransaction, deps }) => {
|
|
49
|
-
let tx;
|
|
50
|
-
if (gatedTransaction.transactionType === "literal") {
|
|
51
|
-
tx = gatedTransaction.transaction;
|
|
52
|
-
} else {
|
|
53
|
-
tx = await registry.callByPointer(gatedTransaction.getTransaction.functionPointer, [
|
|
54
|
-
deps,
|
|
55
|
-
...gatedTransaction.getTransaction.params
|
|
56
|
-
]);
|
|
57
|
-
}
|
|
58
|
-
if (!tx.parallelizingKey) {
|
|
59
|
-
tx.parallelizingKey = `MISSING_PARALLELIZING_KEY-${getIdForGatedTransaction(gatedTransaction)}`;
|
|
60
|
-
}
|
|
61
|
-
return tx;
|
|
62
|
-
}, "extractGatedTransactionUnderlyingTransaction");
|
|
63
|
-
var resolveGatedTransaction = /* @__PURE__ */ __name(async ({ activityRegistry, gatedTx, getTransactionResult, processTx, confirmationCallback, fn, cache, logger }) => {
|
|
64
|
-
const baseGatedTx = {
|
|
65
|
-
name: gatedTx.name,
|
|
66
|
-
chainName: gatedTx.chainName,
|
|
67
|
-
bundleName: gatedTx.bundleName,
|
|
68
|
-
check: gatedTx.check,
|
|
69
|
-
dependencies: gatedTx.dependencies,
|
|
70
|
-
cacheable: gatedTx.cacheable,
|
|
71
|
-
uniqueIdKeys: gatedTx.uniqueIdKeys,
|
|
72
|
-
metadata: gatedTx.metadata,
|
|
73
|
-
description: gatedTx.description
|
|
74
|
-
};
|
|
75
|
-
const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => getIdForGatedTransaction(tx));
|
|
76
|
-
const dependenciesAreAllProcessed = /* @__PURE__ */ __name(() => dependencyIds.every((id) => getTransactionResult(id)), "dependenciesAreAllProcessed");
|
|
77
|
-
await fn.condition(dependenciesAreAllProcessed);
|
|
78
|
-
const dependenciesWereSuccessful = dependencyIds.every((id) => getTransactionResult(id)?.checkResult.expectationMet);
|
|
79
|
-
if (!dependenciesWereSuccessful) {
|
|
80
|
-
logger.error(`Some dependencies of gated transaction ${gatedTx.name} failed: ${JSON.stringify(Object.fromEntries(dependencyIds.map((id) => [
|
|
81
|
-
id,
|
|
82
|
-
getTransactionResult(id)
|
|
83
|
-
])), void 0, 2)}`);
|
|
84
|
-
return {
|
|
85
|
-
resolvedGatedTransaction: {
|
|
86
|
-
...baseGatedTx,
|
|
87
|
-
result: {
|
|
88
|
-
status: GatedTransactionStatus.DEPENDENCY_FAILED
|
|
89
|
-
}
|
|
90
|
-
},
|
|
91
|
-
lastCheckResult: null
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
const initialCheckResult = await checkGatedTransaction({
|
|
95
|
-
gatedTransaction: gatedTx,
|
|
96
|
-
registry: activityRegistry,
|
|
97
|
-
cachedCheckResult: await cache?.getCachedTxCheckData?.(gatedTx)
|
|
98
|
-
});
|
|
99
|
-
await cache?.cacheSuccessfulTxCheckData?.(gatedTx, initialCheckResult.onChainData);
|
|
100
|
-
if (initialCheckResult.expectationMet) {
|
|
101
|
-
return {
|
|
102
|
-
resolvedGatedTransaction: {
|
|
103
|
-
...baseGatedTx,
|
|
104
|
-
result: {
|
|
105
|
-
status: GatedTransactionStatus.NO_OP
|
|
106
|
-
}
|
|
107
|
-
},
|
|
108
|
-
lastCheckResult: initialCheckResult
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
const confirmation = await confirmationCallback(gatedTx);
|
|
112
|
-
if (!confirmation) {
|
|
113
|
-
return {
|
|
114
|
-
resolvedGatedTransaction: {
|
|
115
|
-
...baseGatedTx,
|
|
116
|
-
result: {
|
|
117
|
-
status: GatedTransactionStatus.DENIED
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
lastCheckResult: initialCheckResult
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
try {
|
|
124
|
-
const depsResults = gatedTx.dependencies.map((dep) => getTransactionResult(getIdForGatedTransaction(dep)).resolved);
|
|
125
|
-
const underlying = await extractGatedTransactionUnderlyingTransaction({
|
|
126
|
-
registry: activityRegistry,
|
|
127
|
-
gatedTransaction: gatedTx,
|
|
128
|
-
deps: depsResults
|
|
129
|
-
});
|
|
130
|
-
const processResult = await processTx(underlying);
|
|
131
|
-
if (processResult.type === "error") {
|
|
132
|
-
throw new Error(`Sending gtx ${gatedTx.name} failed: ${processResult.error}`);
|
|
133
|
-
}
|
|
134
|
-
const submittedTransaction = {
|
|
135
|
-
...underlying,
|
|
136
|
-
result: processResult
|
|
137
|
-
};
|
|
138
|
-
const finalCheckResult = await checkGatedTransaction({
|
|
139
|
-
registry: activityRegistry,
|
|
140
|
-
gatedTransaction: gatedTx,
|
|
141
|
-
submittedTransaction
|
|
142
|
-
});
|
|
143
|
-
await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);
|
|
144
|
-
if (finalCheckResult.expectationMet) {
|
|
145
|
-
return {
|
|
146
|
-
resolvedGatedTransaction: {
|
|
147
|
-
...baseGatedTx,
|
|
148
|
-
result: {
|
|
149
|
-
status: GatedTransactionStatus.SUCCESS,
|
|
150
|
-
submittedTransaction
|
|
151
|
-
}
|
|
152
|
-
},
|
|
153
|
-
lastCheckResult: finalCheckResult
|
|
154
|
-
};
|
|
155
|
-
} else {
|
|
156
|
-
const stringify = /* @__PURE__ */ __name((o) => JSON.stringify(o, (_, v) => v === void 0 ? "undefined" : typeof v === "bigint" ? v.toString() : v, 2), "stringify");
|
|
157
|
-
logger.error(`Gated transaction ${gatedTx.name} final check failed:
|
|
158
|
-
Expected result ${stringify(gatedTx.check.expectedResult.comparisonValue)}, but got:
|
|
159
|
-
${stringify(finalCheckResult.onChainData)}, txHash: ${submittedTransaction.result.minedTxHash}`);
|
|
160
|
-
return {
|
|
161
|
-
resolvedGatedTransaction: {
|
|
162
|
-
...baseGatedTx,
|
|
163
|
-
result: {
|
|
164
|
-
status: GatedTransactionStatus.FINAL_CHECK_FAILED,
|
|
165
|
-
submittedTransaction,
|
|
166
|
-
finalOnChainState: finalCheckResult.onChainData
|
|
167
|
-
}
|
|
168
|
-
},
|
|
169
|
-
lastCheckResult: finalCheckResult
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
} catch (e) {
|
|
173
|
-
logger.error("Gated transaction failed", e);
|
|
174
|
-
return {
|
|
175
|
-
resolvedGatedTransaction: {
|
|
176
|
-
...baseGatedTx,
|
|
177
|
-
result: {
|
|
178
|
-
status: GatedTransactionStatus.TRANSACTION_FAILED,
|
|
179
|
-
transactionError: e
|
|
180
|
-
}
|
|
181
|
-
},
|
|
182
|
-
lastCheckResult: initialCheckResult
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
}, "resolveGatedTransaction");
|
|
186
|
-
var resolveGatedTransactions = /* @__PURE__ */ __name(async ({ activityRegistry, gatedTxes, processTx, fn, cache, userInteractionCallbacks, logger }) => {
|
|
187
|
-
const allInternalIds = gatedTxes.map((tx) => getIdForGatedTransaction(tx));
|
|
188
|
-
const allDeps = gatedTxes.flatMap((tx) => tx.dependencies ?? []);
|
|
189
|
-
const allExternalDeps = allDeps.filter((tx) => !allInternalIds.includes(getIdForGatedTransaction(tx)));
|
|
190
|
-
const results = Object.fromEntries(await Promise.all(allExternalDeps.map(async (tx) => {
|
|
191
|
-
const checkResult = await checkGatedTransaction({
|
|
192
|
-
gatedTransaction: tx,
|
|
193
|
-
registry: activityRegistry,
|
|
194
|
-
cachedCheckResult: await cache?.getCachedTxCheckData?.(tx)
|
|
195
|
-
});
|
|
196
|
-
return [
|
|
197
|
-
getIdForGatedTransaction(tx),
|
|
198
|
-
{
|
|
199
|
-
checkResult
|
|
200
|
-
}
|
|
201
|
-
];
|
|
202
|
-
})));
|
|
203
|
-
const getTransactionResult = /* @__PURE__ */ __name((gtxId) => results[gtxId], "getTransactionResult");
|
|
204
|
-
const txFunctions = gatedTxes.map((tx) => async () => {
|
|
205
|
-
const { resolvedGatedTransaction, lastCheckResult } = await resolveGatedTransaction({
|
|
206
|
-
gatedTx: tx,
|
|
207
|
-
activityRegistry,
|
|
208
|
-
getTransactionResult,
|
|
209
|
-
processTx,
|
|
210
|
-
confirmationCallback: userInteractionCallbacks?.confirmationCallback ?? (async () => true),
|
|
211
|
-
fn,
|
|
212
|
-
cache,
|
|
213
|
-
logger
|
|
214
|
-
});
|
|
215
|
-
const resId = getIdForGatedTransaction(resolvedGatedTransaction);
|
|
216
|
-
results[resId] = {
|
|
217
|
-
resolved: resolvedGatedTransaction,
|
|
218
|
-
checkResult: {
|
|
219
|
-
expectationMet: [
|
|
220
|
-
GatedTransactionStatus.SUCCESS,
|
|
221
|
-
GatedTransactionStatus.NO_OP
|
|
222
|
-
].includes(resolvedGatedTransaction.result.status),
|
|
223
|
-
onChainData: lastCheckResult?.onChainData ?? void 0
|
|
224
|
-
}
|
|
225
|
-
};
|
|
226
|
-
userInteractionCallbacks?.onResultCallback?.(resolvedGatedTransaction);
|
|
227
|
-
return resolvedGatedTransaction;
|
|
228
|
-
});
|
|
229
|
-
return await Promise.all(txFunctions.map((func) => func()));
|
|
230
|
-
}, "resolveGatedTransactions");
|
|
231
|
-
var resolveSequencedGatedTransactions = /* @__PURE__ */ __name(async ({ activityRegistry, gatedTxes, processTx, cache, userInteractionCallbacks, fn, logger }) => {
|
|
232
|
-
const results = [];
|
|
233
|
-
for (const seq of gatedTxes) {
|
|
234
|
-
const result = await resolveGatedTransactions({
|
|
235
|
-
gatedTxes: seq,
|
|
236
|
-
activityRegistry,
|
|
237
|
-
processTx,
|
|
238
|
-
cache,
|
|
239
|
-
userInteractionCallbacks,
|
|
240
|
-
fn,
|
|
241
|
-
logger
|
|
242
|
-
});
|
|
243
|
-
results.push(result);
|
|
244
|
-
}
|
|
245
|
-
return results;
|
|
246
|
-
}, "resolveSequencedGatedTransactions");
|
|
247
|
-
|
|
248
|
-
export { resolveGatedTransactions, resolveSequencedGatedTransactions };
|
|
249
|
-
//# sourceMappingURL=ONVFWJXG.js.map
|
|
250
|
-
//# sourceMappingURL=ONVFWJXG.js.map
|
package/dist/ONVFWJXG.js.map
DELETED
|
@@ -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","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":"ONVFWJXG.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"]}
|