@layerzerolabs/gated-transaction 0.0.29 → 0.0.30
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 +31 -31
- package/.turbo/turbo-test.log +3 -3
- package/dist/{GMAAYDJ4.js → 5HWOSUJL.js} +7 -7
- package/dist/5HWOSUJL.js.map +1 -0
- package/dist/{6NWNACVT.cjs → G6VJTMIX.cjs} +7 -7
- package/dist/G6VJTMIX.cjs.map +1 -0
- package/dist/{CG43CWKE.js → SSSLF3RI.js} +16 -7
- package/dist/SSSLF3RI.js.map +1 -0
- package/dist/{XYULD3ZM.cjs → VKTX7ABN.cjs} +24 -15
- package/dist/VKTX7ABN.cjs.map +1 -0
- package/dist/index.cjs +9 -9
- package/dist/index.js +2 -2
- package/dist/resolver.cjs +4 -4
- package/dist/resolver.d.ts +3 -3
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +2 -2
- package/dist/types.cjs +6 -6
- package/dist/types.d.ts +13 -15
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/package.json +8 -8
- package/src/resolver.ts +16 -14
- package/src/types.ts +20 -26
- package/dist/6NWNACVT.cjs.map +0 -1
- package/dist/CG43CWKE.js.map +0 -1
- package/dist/GMAAYDJ4.js.map +0 -1
- package/dist/XYULD3ZM.cjs.map +0 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -10,45 +10,45 @@
|
|
|
10
10
|
[34mCLI[39m Cleaning output folder
|
|
11
11
|
[34mCJS[39m Build start
|
|
12
12
|
[34mESM[39m Build start
|
|
13
|
+
[32mCJS[39m [1mdist/gatedTransactionSignalLock.cjs [22m[32m697.00 B[39m
|
|
14
|
+
[32mCJS[39m [1mdist/index.cjs [22m[32m2.14 KB[39m
|
|
15
|
+
[32mCJS[39m [1mdist/resolver.cjs [22m[32m546.00 B[39m
|
|
16
|
+
[32mCJS[39m [1mdist/gatedTx.cjs [22m[32m474.00 B[39m
|
|
17
|
+
[32mCJS[39m [1mdist/AYIRG6WY.cjs [22m[32m725.00 B[39m
|
|
18
|
+
[32mCJS[39m [1mdist/types.cjs [22m[32m950.00 B[39m
|
|
19
|
+
[32mCJS[39m [1mdist/VKTX7ABN.cjs [22m[32m7.20 KB[39m
|
|
20
|
+
[32mCJS[39m [1mdist/G6VJTMIX.cjs [22m[32m3.38 KB[39m
|
|
21
|
+
[32mCJS[39m [1mdist/YJF4D23A.cjs [22m[32m245.00 B[39m
|
|
22
|
+
[32mCJS[39m [1mdist/QGZD4SJ4.cjs [22m[32m2.36 KB[39m
|
|
23
|
+
[32mCJS[39m [1mdist/AYIRG6WY.cjs.map [22m[32m1.98 KB[39m
|
|
24
|
+
[32mCJS[39m [1mdist/gatedTransactionSignalLock.cjs.map [22m[32m91.00 B[39m
|
|
25
|
+
[32mCJS[39m [1mdist/gatedTx.cjs.map [22m[32m72.00 B[39m
|
|
26
|
+
[32mCJS[39m [1mdist/index.cjs.map [22m[32m70.00 B[39m
|
|
27
|
+
[32mCJS[39m [1mdist/VKTX7ABN.cjs.map [22m[32m18.23 KB[39m
|
|
28
|
+
[32mCJS[39m [1mdist/YJF4D23A.cjs.map [22m[32m73.00 B[39m
|
|
29
|
+
[32mCJS[39m [1mdist/QGZD4SJ4.cjs.map [22m[32m5.54 KB[39m
|
|
30
|
+
[32mCJS[39m [1mdist/G6VJTMIX.cjs.map [22m[32m9.59 KB[39m
|
|
31
|
+
[32mCJS[39m [1mdist/types.cjs.map [22m[32m70.00 B[39m
|
|
32
|
+
[32mCJS[39m [1mdist/resolver.cjs.map [22m[32m73.00 B[39m
|
|
33
|
+
[32mCJS[39m ⚡️ Build success in 221ms
|
|
13
34
|
[32mESM[39m [1mdist/gatedTransactionSignalLock.js [22m[32m270.00 B[39m
|
|
14
|
-
[32mESM[39m [1mdist/index.js [22m[32m554.00 B[39m
|
|
15
35
|
[32mESM[39m [1mdist/gatedTx.js [22m[32m180.00 B[39m
|
|
36
|
+
[32mESM[39m [1mdist/index.js [22m[32m554.00 B[39m
|
|
16
37
|
[32mESM[39m [1mdist/DBJG544E.js [22m[32m2.17 KB[39m
|
|
17
38
|
[32mESM[39m [1mdist/resolver.js [22m[32m238.00 B[39m
|
|
18
|
-
[32mESM[39m [1mdist/5INFRBMB.js [22m[32m616.00 B[39m
|
|
19
39
|
[32mESM[39m [1mdist/types.js [22m[32m263.00 B[39m
|
|
20
|
-
[32mESM[39m [1mdist/
|
|
40
|
+
[32mESM[39m [1mdist/5INFRBMB.js [22m[32m616.00 B[39m
|
|
41
|
+
[32mESM[39m [1mdist/SSSLF3RI.js [22m[32m6.70 KB[39m
|
|
42
|
+
[32mESM[39m [1mdist/5HWOSUJL.js [22m[32m2.46 KB[39m
|
|
21
43
|
[32mESM[39m [1mdist/VUOMXK5T.js [22m[32m222.00 B[39m
|
|
22
|
-
[32mESM[39m [1mdist/CG43CWKE.js [22m[32m6.50 KB[39m
|
|
23
44
|
[32mESM[39m [1mdist/gatedTransactionSignalLock.js.map [22m[32m90.00 B[39m
|
|
24
|
-
[32mESM[39m [1mdist/index.js.map [22m[32m69.00 B[39m
|
|
25
45
|
[32mESM[39m [1mdist/gatedTx.js.map [22m[32m71.00 B[39m
|
|
26
|
-
[32mESM[39m [1mdist/
|
|
46
|
+
[32mESM[39m [1mdist/index.js.map [22m[32m69.00 B[39m
|
|
27
47
|
[32mESM[39m [1mdist/resolver.js.map [22m[32m72.00 B[39m
|
|
48
|
+
[32mESM[39m [1mdist/DBJG544E.js.map [22m[32m5.52 KB[39m
|
|
28
49
|
[32mESM[39m [1mdist/5INFRBMB.js.map [22m[32m1.97 KB[39m
|
|
29
|
-
[32mESM[39m [1mdist/types.js.map [22m[32m69.00 B[39m
|
|
30
|
-
[32mESM[39m [1mdist/GMAAYDJ4.js.map [22m[32m9.49 KB[39m
|
|
31
50
|
[32mESM[39m [1mdist/VUOMXK5T.js.map [22m[32m72.00 B[39m
|
|
32
|
-
[32mESM[39m [1mdist/
|
|
33
|
-
[32mESM[39m
|
|
34
|
-
[
|
|
35
|
-
[
|
|
36
|
-
[32mCJS[39m [1mdist/resolver.cjs [22m[32m546.00 B[39m
|
|
37
|
-
[32mCJS[39m [1mdist/QGZD4SJ4.cjs [22m[32m2.36 KB[39m
|
|
38
|
-
[32mCJS[39m [1mdist/XYULD3ZM.cjs [22m[32m7.00 KB[39m
|
|
39
|
-
[32mCJS[39m [1mdist/index.cjs [22m[32m2.15 KB[39m
|
|
40
|
-
[32mCJS[39m [1mdist/AYIRG6WY.cjs [22m[32m725.00 B[39m
|
|
41
|
-
[32mCJS[39m [1mdist/YJF4D23A.cjs [22m[32m245.00 B[39m
|
|
42
|
-
[32mCJS[39m [1mdist/types.cjs [22m[32m956.00 B[39m
|
|
43
|
-
[32mCJS[39m [1mdist/6NWNACVT.cjs [22m[32m3.31 KB[39m
|
|
44
|
-
[32mCJS[39m [1mdist/gatedTransactionSignalLock.cjs.map [22m[32m91.00 B[39m
|
|
45
|
-
[32mCJS[39m [1mdist/gatedTx.cjs.map [22m[32m72.00 B[39m
|
|
46
|
-
[32mCJS[39m [1mdist/resolver.cjs.map [22m[32m73.00 B[39m
|
|
47
|
-
[32mCJS[39m [1mdist/QGZD4SJ4.cjs.map [22m[32m5.54 KB[39m
|
|
48
|
-
[32mCJS[39m [1mdist/XYULD3ZM.cjs.map [22m[32m17.93 KB[39m
|
|
49
|
-
[32mCJS[39m [1mdist/index.cjs.map [22m[32m70.00 B[39m
|
|
50
|
-
[32mCJS[39m [1mdist/AYIRG6WY.cjs.map [22m[32m1.98 KB[39m
|
|
51
|
-
[32mCJS[39m [1mdist/YJF4D23A.cjs.map [22m[32m73.00 B[39m
|
|
52
|
-
[32mCJS[39m [1mdist/types.cjs.map [22m[32m70.00 B[39m
|
|
53
|
-
[32mCJS[39m [1mdist/6NWNACVT.cjs.map [22m[32m9.55 KB[39m
|
|
54
|
-
[32mCJS[39m ⚡️ Build success in 371ms
|
|
51
|
+
[32mESM[39m [1mdist/SSSLF3RI.js.map [22m[32m18.20 KB[39m
|
|
52
|
+
[32mESM[39m [1mdist/types.js.map [22m[32m69.00 B[39m
|
|
53
|
+
[32mESM[39m [1mdist/5HWOSUJL.js.map [22m[32m9.54 KB[39m
|
|
54
|
+
[32mESM[39m ⚡️ Build success in 222ms
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
|
|
6
6
|
[1m[46m RUN [49m[22m [36mv3.2.3 [39m[90m/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction[39m
|
|
7
7
|
|
|
8
|
-
[32m✓[39m test/resolver.test.ts [2m([22m[2m7 tests[22m[2m)[22m[33m
|
|
8
|
+
[32m✓[39m test/resolver.test.ts [2m([22m[2m7 tests[22m[2m)[22m[33m 314[2mms[22m[39m
|
|
9
9
|
|
|
10
10
|
[2m Test Files [22m [1m[32m1 passed[39m[22m[90m (1)[39m
|
|
11
11
|
[2m Tests [22m [1m[32m7 passed[39m[22m[90m (7)[39m
|
|
12
|
-
[2m Start at [22m
|
|
13
|
-
[2m Duration [22m
|
|
12
|
+
[2m Start at [22m 20:53:34
|
|
13
|
+
[2m Duration [22m 833ms[2m (transform 95ms, setup 0ms, collect 155ms, tests 314ms, environment 0ms, prepare 95ms)[22m
|
|
14
14
|
|
|
@@ -14,13 +14,13 @@ var gatedTransactionSchema = /* @__PURE__ */ __name(({ transactionSchema, name }
|
|
|
14
14
|
})
|
|
15
15
|
})
|
|
16
16
|
}), "gatedTransactionSchema");
|
|
17
|
-
var gatedTransactionResultSchema = /* @__PURE__ */ __name((
|
|
17
|
+
var gatedTransactionResultSchema = /* @__PURE__ */ __name((transactionWithResultSchema, onchainDataSchema) => z.union([
|
|
18
18
|
z.object({
|
|
19
19
|
status: z.literal("no_op")
|
|
20
20
|
}),
|
|
21
21
|
z.object({
|
|
22
22
|
status: z.literal("success"),
|
|
23
|
-
submittedTransaction:
|
|
23
|
+
submittedTransaction: transactionWithResultSchema
|
|
24
24
|
}),
|
|
25
25
|
z.object({
|
|
26
26
|
status: z.literal("transaction_failed"),
|
|
@@ -28,7 +28,7 @@ var gatedTransactionResultSchema = /* @__PURE__ */ __name((transactionSchema, on
|
|
|
28
28
|
}),
|
|
29
29
|
z.object({
|
|
30
30
|
status: z.literal("final_check_failed"),
|
|
31
|
-
submittedTransaction:
|
|
31
|
+
submittedTransaction: transactionWithResultSchema,
|
|
32
32
|
finalOnChainState: onchainDataSchema
|
|
33
33
|
}),
|
|
34
34
|
z.object({
|
|
@@ -38,11 +38,11 @@ var gatedTransactionResultSchema = /* @__PURE__ */ __name((transactionSchema, on
|
|
|
38
38
|
status: z.literal("denied")
|
|
39
39
|
})
|
|
40
40
|
]), "gatedTransactionResultSchema");
|
|
41
|
-
var processedGatedTransactionSchema = /* @__PURE__ */ __name(({ transactionSchema, onchainDataSchema, name }) => gatedTransactionSchema({
|
|
41
|
+
var processedGatedTransactionSchema = /* @__PURE__ */ __name(({ transactionSchema, transactionWithResultSchema, onchainDataSchema, name }) => gatedTransactionSchema({
|
|
42
42
|
transactionSchema,
|
|
43
43
|
name
|
|
44
44
|
}).and(z.object({
|
|
45
|
-
result: gatedTransactionResultSchema(
|
|
45
|
+
result: gatedTransactionResultSchema(transactionWithResultSchema, onchainDataSchema)
|
|
46
46
|
})), "processedGatedTransactionSchema");
|
|
47
47
|
var GatedTransactionStatus = /* @__PURE__ */ (function(GatedTransactionStatus2) {
|
|
48
48
|
GatedTransactionStatus2["NO_OP"] = "no_op";
|
|
@@ -70,5 +70,5 @@ var gatedTransactionCacheSchema = z.object({
|
|
|
70
70
|
});
|
|
71
71
|
|
|
72
72
|
export { GatedTransactionStatus, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, processedGatedTransactionSchema };
|
|
73
|
-
//# sourceMappingURL=
|
|
74
|
-
//# sourceMappingURL=
|
|
73
|
+
//# sourceMappingURL=5HWOSUJL.js.map
|
|
74
|
+
//# sourceMappingURL=5HWOSUJL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types.ts"],"names":["gatedTransactionSchema","transactionSchema","name","z","object","transaction","check","functionPointer","any","params","array","expectedResult","operator","custom","comparisonValue","gatedTransactionResultSchema","transactionWithResultSchema","onchainDataSchema","union","status","literal","submittedTransaction","transactionError","finalOnChainState","processedGatedTransactionSchema","and","result","GatedTransactionStatus","gatedTransactionCacheSchema","getCachedTxCheckData","functionSchema","input","tuple","output","promise","cacheSuccessfulTxCheckData"],"mappings":"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","file":"5HWOSUJL.js","sourcesContent":["import z from 'zod/v4';\n\nimport {\n type Transaction,\n type transactionSchema as _transactionSchema,\n type TransactionWithResult,\n type transactionWithResultSchema as _transactionWithResultSchema,\n} from '@layerzerolabs/common-chain-model';\nimport type { FunctionPointer } from '@layerzerolabs/common-utils';\nimport { functionSchema } from '@layerzerolabs/zod-utils';\n\nexport type OnChainDataComparisonOperator<OnChainDataType> = OnChainDataType extends number\n ? '<' | '<=' | '=' | '!=' | '>' | '>='\n : '=' | '!=';\n\nexport type OnChainDataComparison<OnChainDataType> = {\n operator: OnChainDataComparisonOperator<OnChainDataType>;\n comparisonValue: OnChainDataType;\n};\n\nexport type GatedTransactionCheck<\n Method extends (...args: any[]) => any = (...args: any[]) => unknown,\n> = {\n functionPointer: FunctionPointer<Method>;\n params: any[];\n expectedResult: OnChainDataComparison<Awaited<ReturnType<Method>>>;\n};\n\nexport const gatedTransactionSchema = <TransactionSchema extends typeof _transactionSchema>({\n transactionSchema,\n name,\n}: {\n transactionSchema: TransactionSchema;\n name: z.ZodString | z.ZodLiteral<string>;\n}) =>\n z.object({\n name,\n transaction: transactionSchema,\n check: z.object({\n functionPointer: z.any(),\n params: z.array(z.any()),\n expectedResult: z.object({\n operator: z.custom<OnChainDataComparisonOperator<any>>(),\n comparisonValue: z.any(),\n }),\n }),\n });\n\n// Schema for gated transaction results\nexport const gatedTransactionResultSchema = <\n TransactionWithResultSchema extends typeof _transactionWithResultSchema,\n OnchainDataSchema extends z.ZodType,\n>(\n transactionWithResultSchema: TransactionWithResultSchema,\n onchainDataSchema: OnchainDataSchema,\n) =>\n z.union([\n z.object({\n status: z.literal(GatedTransactionStatus.NO_OP),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.SUCCESS),\n submittedTransaction: transactionWithResultSchema,\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.TRANSACTION_FAILED),\n transactionError: z.any(),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.FINAL_CHECK_FAILED),\n submittedTransaction: transactionWithResultSchema,\n finalOnChainState: onchainDataSchema,\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DEPENDENCY_FAILED),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DENIED),\n }),\n ]);\n\n// Schema for processed gated transactions (with results)\nexport const processedGatedTransactionSchema = <\n TransactionSchema extends typeof _transactionSchema,\n TransactionWithResultSchema extends typeof _transactionWithResultSchema,\n OnchainDataSchema extends z.ZodType,\n>({\n transactionSchema,\n transactionWithResultSchema,\n onchainDataSchema,\n name,\n}: {\n transactionSchema: TransactionSchema;\n transactionWithResultSchema: TransactionWithResultSchema;\n onchainDataSchema: OnchainDataSchema;\n name: z.ZodString | z.ZodLiteral<string>;\n}) =>\n gatedTransactionSchema({\n transactionSchema,\n name,\n }).and(\n z.object({\n result: gatedTransactionResultSchema(transactionWithResultSchema, onchainDataSchema),\n }),\n );\n\ntype GatedTransactionDependencies = GatedTransaction[];\n\nexport type GatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckMethod extends (...args: any[]) => any = (...args: any[]) => any,\n Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = {\n bundleName?: string;\n name: Name;\n transaction: TxType;\n check: GatedTransactionCheck<CheckMethod>;\n cacheable?: boolean;\n uniqueIdKeys?: Record<string, string | number | boolean>;\n dependencies?: Dependencies;\n};\n\nexport type InferOnChainDataTypeFromGatedTransaction<GatedTx extends GatedTransaction> =\n GatedTx extends GatedTransaction<any, any, infer Check> ? Awaited<ReturnType<Check>> : unknown;\n\nexport enum GatedTransactionStatus {\n NO_OP = 'no_op',\n SUCCESS = 'success',\n TRANSACTION_FAILED = 'transaction_failed',\n FINAL_CHECK_FAILED = 'final_check_failed',\n DEPENDENCY_FAILED = 'dependency_failed',\n DENIED = 'denied',\n}\n\ntype NoOpGatedTransaction = {\n status: GatedTransactionStatus.NO_OP;\n};\n\ntype SuccessfulGatedTransaction<TxWithResult extends TransactionWithResult> = {\n status: GatedTransactionStatus.SUCCESS;\n submittedTransaction: TxWithResult;\n};\n\ntype TxFailedGatedTransaction = {\n status: GatedTransactionStatus.TRANSACTION_FAILED;\n transactionError: any;\n};\n\ntype CheckFailedGatedTransaction<TxWithResult extends TransactionWithResult, State> = {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED;\n submittedTransaction: TxWithResult;\n finalOnChainState: State;\n};\n\ntype DependencyFailedGatedTransaction = {\n status: GatedTransactionStatus.DEPENDENCY_FAILED;\n};\n\ntype DeniedGatedTransaction = {\n status: GatedTransactionStatus.DENIED;\n};\n\nexport type GatedTransactionResult<\n GatedTx extends GatedTransaction = GatedTransaction,\n TxWithResult extends TransactionWithResult = TransactionWithResult,\n> =\n | NoOpGatedTransaction\n | SuccessfulGatedTransaction<TxWithResult>\n | TxFailedGatedTransaction\n | CheckFailedGatedTransaction<TxWithResult, InferOnChainDataTypeFromGatedTransaction<GatedTx>>\n | DependencyFailedGatedTransaction\n | DeniedGatedTransaction;\n\nexport const gatedTransactionCacheSchema = z.object({\n getCachedTxCheckData: functionSchema({\n input: z.tuple([z.any()]),\n output: z.promise(z.any()),\n }) as z.ZodType<\n <GatedTx extends GatedTransaction>(\n gtx: GatedTx,\n ) => Promise<InferOnChainDataTypeFromGatedTransaction<GatedTx> | undefined>\n >,\n cacheSuccessfulTxCheckData: functionSchema({\n input: z.tuple([z.any(), z.any()]),\n output: z.promise(z.any()),\n }) as z.ZodType<\n <GatedTx extends GatedTransaction>(\n gtx: GatedTx,\n data: InferOnChainDataTypeFromGatedTransaction<GatedTx>,\n ) => Promise<void>\n >,\n});\n\nexport type IGatedTransactionCache = z.infer<typeof gatedTransactionCacheSchema>;\n\n/**\n * name-chain-uniqueIdKeys\n *\n * E.g., setDelegate-ethereum-oAppAddress:0xMY_OAPP\n */\nexport type GatedTransactionId = `${string}-${string}-${string}`;\n\nexport type UserInteractionCallbacks = {\n confirmationCallback?: (gtx: GatedTransaction) => Promise<boolean>;\n onResultCallback?: (result: GatedTransaction & { result: GatedTransactionResult }) => void;\n};\n"]}
|
|
@@ -20,13 +20,13 @@ var gatedTransactionSchema = /* @__PURE__ */ YJF4D23A_cjs.__name(({ transactionS
|
|
|
20
20
|
})
|
|
21
21
|
})
|
|
22
22
|
}), "gatedTransactionSchema");
|
|
23
|
-
var gatedTransactionResultSchema = /* @__PURE__ */ YJF4D23A_cjs.__name((
|
|
23
|
+
var gatedTransactionResultSchema = /* @__PURE__ */ YJF4D23A_cjs.__name((transactionWithResultSchema, onchainDataSchema) => z__default.default.union([
|
|
24
24
|
z__default.default.object({
|
|
25
25
|
status: z__default.default.literal("no_op")
|
|
26
26
|
}),
|
|
27
27
|
z__default.default.object({
|
|
28
28
|
status: z__default.default.literal("success"),
|
|
29
|
-
submittedTransaction:
|
|
29
|
+
submittedTransaction: transactionWithResultSchema
|
|
30
30
|
}),
|
|
31
31
|
z__default.default.object({
|
|
32
32
|
status: z__default.default.literal("transaction_failed"),
|
|
@@ -34,7 +34,7 @@ var gatedTransactionResultSchema = /* @__PURE__ */ YJF4D23A_cjs.__name((transact
|
|
|
34
34
|
}),
|
|
35
35
|
z__default.default.object({
|
|
36
36
|
status: z__default.default.literal("final_check_failed"),
|
|
37
|
-
submittedTransaction:
|
|
37
|
+
submittedTransaction: transactionWithResultSchema,
|
|
38
38
|
finalOnChainState: onchainDataSchema
|
|
39
39
|
}),
|
|
40
40
|
z__default.default.object({
|
|
@@ -44,11 +44,11 @@ var gatedTransactionResultSchema = /* @__PURE__ */ YJF4D23A_cjs.__name((transact
|
|
|
44
44
|
status: z__default.default.literal("denied")
|
|
45
45
|
})
|
|
46
46
|
]), "gatedTransactionResultSchema");
|
|
47
|
-
var processedGatedTransactionSchema = /* @__PURE__ */ YJF4D23A_cjs.__name(({ transactionSchema, onchainDataSchema, name }) => gatedTransactionSchema({
|
|
47
|
+
var processedGatedTransactionSchema = /* @__PURE__ */ YJF4D23A_cjs.__name(({ transactionSchema, transactionWithResultSchema, onchainDataSchema, name }) => gatedTransactionSchema({
|
|
48
48
|
transactionSchema,
|
|
49
49
|
name
|
|
50
50
|
}).and(z__default.default.object({
|
|
51
|
-
result: gatedTransactionResultSchema(
|
|
51
|
+
result: gatedTransactionResultSchema(transactionWithResultSchema, onchainDataSchema)
|
|
52
52
|
})), "processedGatedTransactionSchema");
|
|
53
53
|
var GatedTransactionStatus = /* @__PURE__ */ (function(GatedTransactionStatus2) {
|
|
54
54
|
GatedTransactionStatus2["NO_OP"] = "no_op";
|
|
@@ -80,5 +80,5 @@ exports.gatedTransactionCacheSchema = gatedTransactionCacheSchema;
|
|
|
80
80
|
exports.gatedTransactionResultSchema = gatedTransactionResultSchema;
|
|
81
81
|
exports.gatedTransactionSchema = gatedTransactionSchema;
|
|
82
82
|
exports.processedGatedTransactionSchema = processedGatedTransactionSchema;
|
|
83
|
-
//# sourceMappingURL=
|
|
84
|
-
//# sourceMappingURL=
|
|
83
|
+
//# sourceMappingURL=G6VJTMIX.cjs.map
|
|
84
|
+
//# sourceMappingURL=G6VJTMIX.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types.ts"],"names":["gatedTransactionSchema","__name","transactionSchema","name","z","object","transaction","check","functionPointer","any","params","array","expectedResult","operator","custom","comparisonValue","gatedTransactionResultSchema","transactionWithResultSchema","onchainDataSchema","union","status","literal","submittedTransaction","transactionError","finalOnChainState","processedGatedTransactionSchema","and","result","GatedTransactionStatus","gatedTransactionCacheSchema","getCachedTxCheckData","functionSchema","input","tuple","output","promise","cacheSuccessfulTxCheckData"],"mappings":";;;;;;;;;;AA4BO,IAAMA,yCAAyBC,mBAAA,CAAA,CAAsD,EACxFC,mBACAC,IAAAA,EAAI,KAKJC,mBAAEC,MAAAA,CAAO;AACLF,EAAAA,IAAAA;EACAG,WAAAA,EAAaJ,iBAAAA;AACbK,EAAAA,KAAAA,EAAOH,mBAAEC,MAAAA,CAAO;AACZG,IAAAA,eAAAA,EAAiBJ,mBAAEK,GAAAA,EAAG;AACtBC,IAAAA,MAAAA,EAAQN,kBAAAA,CAAEO,KAAAA,CAAMP,kBAAAA,CAAEK,GAAAA,EAAG,CAAA;AACrBG,IAAAA,cAAAA,EAAgBR,mBAAEC,MAAAA,CAAO;AACrBQ,MAAAA,QAAAA,EAAUT,mBAAEU,MAAAA,EAAM;AAClBC,MAAAA,eAAAA,EAAiBX,mBAAEK,GAAAA;KACvB;GACJ;AACJ,CAAA,CAAA,EAlBkC,wBAAA;AAqB/B,IAAMO,4BAAAA,mBAA+Bf,mBAAA,CAAA,CAIxCgB,2BAAAA,EACAC,iBAAAA,KAEAd,mBAAEe,KAAAA,CAAM;AACJf,EAAAA,kBAAAA,CAAEC,MAAAA,CAAO;IACLe,MAAAA,EAAQhB,kBAAAA,CAAEiB,QAAO,OAAA;GACrB,CAAA;AACAjB,EAAAA,kBAAAA,CAAEC,MAAAA,CAAO;IACLe,MAAAA,EAAQhB,kBAAAA,CAAEiB,QAAO,SAAA,CAAA;IACjBC,oBAAAA,EAAsBL;GAC1B,CAAA;AACAb,EAAAA,kBAAAA,CAAEC,MAAAA,CAAO;IACLe,MAAAA,EAAQhB,kBAAAA,CAAEiB,QAAO,oBAAA,CAAA;AACjBE,IAAAA,gBAAAA,EAAkBnB,mBAAEK,GAAAA;GACxB,CAAA;AACAL,EAAAA,kBAAAA,CAAEC,MAAAA,CAAO;IACLe,MAAAA,EAAQhB,kBAAAA,CAAEiB,QAAO,oBAAA,CAAA;IACjBC,oBAAAA,EAAsBL,2BAAAA;IACtBO,iBAAAA,EAAmBN;GACvB,CAAA;AACAd,EAAAA,kBAAAA,CAAEC,MAAAA,CAAO;IACLe,MAAAA,EAAQhB,kBAAAA,CAAEiB,QAAO,mBAAA;GACrB,CAAA;AACAjB,EAAAA,kBAAAA,CAAEC,MAAAA,CAAO;IACLe,MAAAA,EAAQhB,kBAAAA,CAAEiB,QAAO,QAAA;GACrB;CACH,CAAA,EA9BuC,8BAAA;AAiCrC,IAAMI,+BAAAA,wCAIX,EACEvB,iBAAAA,EACAe,6BACAC,iBAAAA,EACAf,IAAAA,OAOAH,sBAAAA,CAAuB;AACnBE,EAAAA,iBAAAA;AACAC,EAAAA;AACJ,CAAA,CAAA,CAAGuB,GAAAA,CACCtB,kBAAAA,CAAEC,MAAAA,CAAO;EACLsB,MAAAA,EAAQX,4BAAAA,CAA6BC,6BAA6BC,iBAAAA;AACtE,CAAA,CAAA,CAAA,EArBuC,iCAAA;AA4CxC,IAAKU,sBAAAA,6BAAAA,uBAAAA,EAAAA;;;;;;;AAAAA,EAAAA,OAAAA,uBAAAA;;AAgDL,IAAMC,2BAAAA,GAA8BzB,mBAAEC,MAAAA,CAAO;AAChDyB,EAAAA,oBAAAA,EAAsBC,uBAAAA,CAAe;AACjCC,IAAAA,KAAAA,EAAO5B,mBAAE6B,KAAAA,CAAM;AAAC7B,MAAAA,kBAAAA,CAAEK,GAAAA;AAAM,KAAA,CAAA;AACxByB,IAAAA,MAAAA,EAAQ9B,kBAAAA,CAAE+B,OAAAA,CAAQ/B,kBAAAA,CAAEK,GAAAA,EAAG;GAC3B,CAAA;AAKA2B,EAAAA,0BAAAA,EAA4BL,uBAAAA,CAAe;AACvCC,IAAAA,KAAAA,EAAO5B,mBAAE6B,KAAAA,CAAM;AAAC7B,MAAAA,kBAAAA,CAAEK,GAAAA,EAAG;AAAIL,MAAAA,kBAAAA,CAAEK,GAAAA;AAAM,KAAA,CAAA;AACjCyB,IAAAA,MAAAA,EAAQ9B,kBAAAA,CAAE+B,OAAAA,CAAQ/B,kBAAAA,CAAEK,GAAAA,EAAG;GAC3B;AAMJ,CAAA","file":"G6VJTMIX.cjs","sourcesContent":["import z from 'zod/v4';\n\nimport {\n type Transaction,\n type transactionSchema as _transactionSchema,\n type TransactionWithResult,\n type transactionWithResultSchema as _transactionWithResultSchema,\n} from '@layerzerolabs/common-chain-model';\nimport type { FunctionPointer } from '@layerzerolabs/common-utils';\nimport { functionSchema } from '@layerzerolabs/zod-utils';\n\nexport type OnChainDataComparisonOperator<OnChainDataType> = OnChainDataType extends number\n ? '<' | '<=' | '=' | '!=' | '>' | '>='\n : '=' | '!=';\n\nexport type OnChainDataComparison<OnChainDataType> = {\n operator: OnChainDataComparisonOperator<OnChainDataType>;\n comparisonValue: OnChainDataType;\n};\n\nexport type GatedTransactionCheck<\n Method extends (...args: any[]) => any = (...args: any[]) => unknown,\n> = {\n functionPointer: FunctionPointer<Method>;\n params: any[];\n expectedResult: OnChainDataComparison<Awaited<ReturnType<Method>>>;\n};\n\nexport const gatedTransactionSchema = <TransactionSchema extends typeof _transactionSchema>({\n transactionSchema,\n name,\n}: {\n transactionSchema: TransactionSchema;\n name: z.ZodString | z.ZodLiteral<string>;\n}) =>\n z.object({\n name,\n transaction: transactionSchema,\n check: z.object({\n functionPointer: z.any(),\n params: z.array(z.any()),\n expectedResult: z.object({\n operator: z.custom<OnChainDataComparisonOperator<any>>(),\n comparisonValue: z.any(),\n }),\n }),\n });\n\n// Schema for gated transaction results\nexport const gatedTransactionResultSchema = <\n TransactionWithResultSchema extends typeof _transactionWithResultSchema,\n OnchainDataSchema extends z.ZodType,\n>(\n transactionWithResultSchema: TransactionWithResultSchema,\n onchainDataSchema: OnchainDataSchema,\n) =>\n z.union([\n z.object({\n status: z.literal(GatedTransactionStatus.NO_OP),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.SUCCESS),\n submittedTransaction: transactionWithResultSchema,\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.TRANSACTION_FAILED),\n transactionError: z.any(),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.FINAL_CHECK_FAILED),\n submittedTransaction: transactionWithResultSchema,\n finalOnChainState: onchainDataSchema,\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DEPENDENCY_FAILED),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DENIED),\n }),\n ]);\n\n// Schema for processed gated transactions (with results)\nexport const processedGatedTransactionSchema = <\n TransactionSchema extends typeof _transactionSchema,\n TransactionWithResultSchema extends typeof _transactionWithResultSchema,\n OnchainDataSchema extends z.ZodType,\n>({\n transactionSchema,\n transactionWithResultSchema,\n onchainDataSchema,\n name,\n}: {\n transactionSchema: TransactionSchema;\n transactionWithResultSchema: TransactionWithResultSchema;\n onchainDataSchema: OnchainDataSchema;\n name: z.ZodString | z.ZodLiteral<string>;\n}) =>\n gatedTransactionSchema({\n transactionSchema,\n name,\n }).and(\n z.object({\n result: gatedTransactionResultSchema(transactionWithResultSchema, onchainDataSchema),\n }),\n );\n\ntype GatedTransactionDependencies = GatedTransaction[];\n\nexport type GatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckMethod extends (...args: any[]) => any = (...args: any[]) => any,\n Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = {\n bundleName?: string;\n name: Name;\n transaction: TxType;\n check: GatedTransactionCheck<CheckMethod>;\n cacheable?: boolean;\n uniqueIdKeys?: Record<string, string | number | boolean>;\n dependencies?: Dependencies;\n};\n\nexport type InferOnChainDataTypeFromGatedTransaction<GatedTx extends GatedTransaction> =\n GatedTx extends GatedTransaction<any, any, infer Check> ? Awaited<ReturnType<Check>> : unknown;\n\nexport enum GatedTransactionStatus {\n NO_OP = 'no_op',\n SUCCESS = 'success',\n TRANSACTION_FAILED = 'transaction_failed',\n FINAL_CHECK_FAILED = 'final_check_failed',\n DEPENDENCY_FAILED = 'dependency_failed',\n DENIED = 'denied',\n}\n\ntype NoOpGatedTransaction = {\n status: GatedTransactionStatus.NO_OP;\n};\n\ntype SuccessfulGatedTransaction<TxWithResult extends TransactionWithResult> = {\n status: GatedTransactionStatus.SUCCESS;\n submittedTransaction: TxWithResult;\n};\n\ntype TxFailedGatedTransaction = {\n status: GatedTransactionStatus.TRANSACTION_FAILED;\n transactionError: any;\n};\n\ntype CheckFailedGatedTransaction<TxWithResult extends TransactionWithResult, State> = {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED;\n submittedTransaction: TxWithResult;\n finalOnChainState: State;\n};\n\ntype DependencyFailedGatedTransaction = {\n status: GatedTransactionStatus.DEPENDENCY_FAILED;\n};\n\ntype DeniedGatedTransaction = {\n status: GatedTransactionStatus.DENIED;\n};\n\nexport type GatedTransactionResult<\n GatedTx extends GatedTransaction = GatedTransaction,\n TxWithResult extends TransactionWithResult = TransactionWithResult,\n> =\n | NoOpGatedTransaction\n | SuccessfulGatedTransaction<TxWithResult>\n | TxFailedGatedTransaction\n | CheckFailedGatedTransaction<TxWithResult, InferOnChainDataTypeFromGatedTransaction<GatedTx>>\n | DependencyFailedGatedTransaction\n | DeniedGatedTransaction;\n\nexport const gatedTransactionCacheSchema = z.object({\n getCachedTxCheckData: functionSchema({\n input: z.tuple([z.any()]),\n output: z.promise(z.any()),\n }) as z.ZodType<\n <GatedTx extends GatedTransaction>(\n gtx: GatedTx,\n ) => Promise<InferOnChainDataTypeFromGatedTransaction<GatedTx> | undefined>\n >,\n cacheSuccessfulTxCheckData: functionSchema({\n input: z.tuple([z.any(), z.any()]),\n output: z.promise(z.any()),\n }) as z.ZodType<\n <GatedTx extends GatedTransaction>(\n gtx: GatedTx,\n data: InferOnChainDataTypeFromGatedTransaction<GatedTx>,\n ) => Promise<void>\n >,\n});\n\nexport type IGatedTransactionCache = z.infer<typeof gatedTransactionCacheSchema>;\n\n/**\n * name-chain-uniqueIdKeys\n *\n * E.g., setDelegate-ethereum-oAppAddress:0xMY_OAPP\n */\nexport type GatedTransactionId = `${string}-${string}-${string}`;\n\nexport type UserInteractionCallbacks = {\n confirmationCallback?: (gtx: GatedTransaction) => Promise<boolean>;\n onResultCallback?: (result: GatedTransaction & { result: GatedTransactionResult }) => void;\n};\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getIdForGatedTransaction } from './5INFRBMB.js';
|
|
2
|
-
import { GatedTransactionStatus } from './
|
|
2
|
+
import { GatedTransactionStatus } from './5HWOSUJL.js';
|
|
3
3
|
import { __name } from './VUOMXK5T.js';
|
|
4
4
|
import isEqual from 'lodash.isequal';
|
|
5
5
|
|
|
@@ -82,11 +82,14 @@ var resolveGatedTransaction = /* @__PURE__ */ __name(async ({ activityRegistry,
|
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
84
|
try {
|
|
85
|
-
const
|
|
85
|
+
const processResult = await processTx(gatedTx.transaction);
|
|
86
86
|
const finalCheckResult = await checkGatedTransaction({
|
|
87
87
|
registry: activityRegistry,
|
|
88
88
|
gatedTransaction: gatedTx,
|
|
89
|
-
processedTransaction:
|
|
89
|
+
processedTransaction: {
|
|
90
|
+
...gatedTx.transaction,
|
|
91
|
+
result: processResult
|
|
92
|
+
}
|
|
90
93
|
});
|
|
91
94
|
await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);
|
|
92
95
|
if (finalCheckResult.expectationMet) {
|
|
@@ -94,7 +97,10 @@ var resolveGatedTransaction = /* @__PURE__ */ __name(async ({ activityRegistry,
|
|
|
94
97
|
...gatedTx,
|
|
95
98
|
result: {
|
|
96
99
|
status: GatedTransactionStatus.SUCCESS,
|
|
97
|
-
submittedTransaction:
|
|
100
|
+
submittedTransaction: {
|
|
101
|
+
...gatedTx.transaction,
|
|
102
|
+
result: processResult
|
|
103
|
+
}
|
|
98
104
|
}
|
|
99
105
|
};
|
|
100
106
|
} else {
|
|
@@ -106,7 +112,10 @@ ${stringify(finalCheckResult.onChainData)}`);
|
|
|
106
112
|
...gatedTx,
|
|
107
113
|
result: {
|
|
108
114
|
status: GatedTransactionStatus.FINAL_CHECK_FAILED,
|
|
109
|
-
submittedTransaction:
|
|
115
|
+
submittedTransaction: {
|
|
116
|
+
...gatedTx.transaction,
|
|
117
|
+
result: processResult
|
|
118
|
+
},
|
|
110
119
|
finalOnChainState: finalCheckResult.onChainData
|
|
111
120
|
}
|
|
112
121
|
};
|
|
@@ -174,5 +183,5 @@ var resolveSequencedGatedTransactions = /* @__PURE__ */ __name(async ({ activity
|
|
|
174
183
|
}, "resolveSequencedGatedTransactions");
|
|
175
184
|
|
|
176
185
|
export { resolveGatedTransactions, resolveSequencedGatedTransactions };
|
|
177
|
-
//# sourceMappingURL=
|
|
178
|
-
//# sourceMappingURL=
|
|
186
|
+
//# sourceMappingURL=SSSLF3RI.js.map
|
|
187
|
+
//# sourceMappingURL=SSSLF3RI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resolver.ts"],"names":["checkGatedTransaction","registry","gatedTransaction","cachedCheckResult","processedTransaction","onChainData","undefined","params","check","callByPointer","functionPointer","expectationMet","expectedResult","operator","isEqual","comparisonValue","Error","resolveGatedTransaction","activityRegistry","gatedTx","isTransactionSuccessful","processTx","confirmationCallback","fn","cache","dependencyIds","dependencies","map","tx","getIdForGatedTransaction","dependenciesAreAllProcessed","every","id","condition","dependenciesWereSuccessful","result","status","GatedTransactionStatus","DEPENDENCY_FAILED","initialCheckResult","getCachedTxCheckData","cacheSuccessfulTxCheckData","NO_OP","confirmation","DENIED","processResult","transaction","finalCheckResult","SUCCESS","submittedTransaction","stringify","o","JSON","_","v","toString","console","error","name","FINAL_CHECK_FAILED","finalOnChainState","e","TRANSACTION_FAILED","transactionError","resolveGatedTransactions","gatedTxes","userInteractionCallbacks","allInternalIds","allDeps","flatMap","allExternalDeps","filter","includes","results","Object","fromEntries","Promise","all","checkResult","gtxId","txFunctions","res","resId","onResultCallback","func","resolveSequencedGatedTransactions","seq","push"],"mappings":"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","file":"SSSLF3RI.js","sourcesContent":["import isEqual from 'lodash.isequal';\n\nimport type { ActivityRegistry } from '@layerzerolabs/common-activities';\nimport type { Transaction, TransactionResult } from '@layerzerolabs/common-chain-model';\nimport type { WorkflowFunctions } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n GatedTransaction,\n GatedTransactionId,\n GatedTransactionResult,\n IGatedTransactionCache,\n InferOnChainDataTypeFromGatedTransaction,\n UserInteractionCallbacks,\n} from './types';\nimport { GatedTransactionStatus } from './types';\n\ntype OnChainCheckResult<DataType = any> = {\n expectationMet: boolean;\n onChainData: DataType;\n};\n\nconst checkGatedTransaction = async <GatedTx extends GatedTransaction>({\n registry,\n gatedTransaction,\n cachedCheckResult,\n processedTransaction,\n}: {\n registry: ActivityRegistry;\n gatedTransaction: GatedTx;\n cachedCheckResult?: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n processedTransaction?: any;\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 (processedTransaction !== undefined) {\n params = [...gatedTransaction.check.params, processedTransaction];\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 resolveGatedTransaction = async <\n TxType extends Transaction,\n TxResult extends TransactionResult,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TxResult>,\n>({\n activityRegistry,\n gatedTx,\n isTransactionSuccessful,\n processTx,\n confirmationCallback,\n fn,\n cache,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTx: GatedTx;\n processTx: ProcessTx;\n isTransactionSuccessful: (gtxId: GatedTransactionId) => boolean | undefined;\n confirmationCallback: NonNullable<UserInteractionCallbacks['confirmationCallback']>;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n}): Promise<\n GatedTx & { result: GatedTransactionResult<GatedTx, TxType & { result: TxResult }> }\n> => {\n const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => getIdForGatedTransaction(tx));\n\n const dependenciesAreAllProcessed = () =>\n dependencyIds.every((id) => isTransactionSuccessful(id) != null);\n\n await fn.condition(dependenciesAreAllProcessed);\n\n //check that the dependencies succeeded\n const dependenciesWereSuccessful = dependencyIds.every((id) => isTransactionSuccessful(id));\n\n if (!dependenciesWereSuccessful) {\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.DEPENDENCY_FAILED,\n },\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 ...gatedTx,\n result: {\n status: GatedTransactionStatus.NO_OP,\n },\n };\n }\n\n //get confirmation before sending\n const confirmation = await confirmationCallback(gatedTx);\n if (!confirmation) {\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.DENIED,\n },\n };\n }\n\n //send the tx\n try {\n const processResult = await processTx(gatedTx.transaction);\n const finalCheckResult = await checkGatedTransaction({\n registry: activityRegistry,\n gatedTransaction: gatedTx,\n processedTransaction: { ...gatedTx.transaction, result: processResult },\n });\n\n await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);\n\n if (finalCheckResult.expectationMet) {\n //sent and successful\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.SUCCESS,\n submittedTransaction: { ...gatedTx.transaction, result: processResult },\n },\n };\n } else {\n //sent and unsuccessful\n const stringify = (o: any) =>\n JSON.stringify(o, (_, v) => (typeof v === 'bigint' ? v.toString() : v), 2);\n console.error(\n `Gated transaction ${gatedTx.name} final check failed:\\nExpected result ${stringify(gatedTx.check.expectedResult.comparisonValue)}, but got:\\n${stringify(finalCheckResult.onChainData)}`,\n );\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED,\n submittedTransaction: { ...gatedTx.transaction, result: processResult },\n finalOnChainState: finalCheckResult.onChainData,\n },\n };\n }\n } catch (e) {\n //sent and failed\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.TRANSACTION_FAILED,\n transactionError: e,\n },\n };\n }\n};\n\nexport const resolveGatedTransactions = async <\n TxType extends Transaction,\n TxResult extends TransactionResult,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TxResult>,\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<(GatedTx & { result: GatedTransactionResult })[]> => {\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 //map id -> was successful\n const results: Record<GatedTransactionId, boolean> = 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 [getIdForGatedTransaction(tx), checkResult.expectationMet];\n }),\n ),\n );\n\n const isTransactionSuccessful = (gtxId: GatedTransactionId) => results[gtxId];\n\n const txFunctions = gatedTxes.map((tx) => async () => {\n const res = await resolveGatedTransaction<TxType, TxResult, GatedTx, ProcessTx>({\n gatedTx: tx,\n activityRegistry,\n isTransactionSuccessful,\n processTx,\n confirmationCallback:\n userInteractionCallbacks?.confirmationCallback ?? (async () => true),\n fn,\n cache,\n });\n\n const resId = getIdForGatedTransaction(res);\n results[resId] = [GatedTransactionStatus.SUCCESS, GatedTransactionStatus.NO_OP].includes(\n res.result.status,\n );\n\n userInteractionCallbacks?.onResultCallback?.(res);\n return res;\n });\n\n return await Promise.all(txFunctions.map((func) => func()));\n};\n\nexport const resolveSequencedGatedTransactions = async <\n TxType extends Transaction,\n TxResult extends TransactionResult,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TxResult>,\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, TxResult, 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,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var AYIRG6WY_cjs = require('./AYIRG6WY.cjs');
|
|
4
|
-
var
|
|
4
|
+
var G6VJTMIX_cjs = require('./G6VJTMIX.cjs');
|
|
5
5
|
var YJF4D23A_cjs = require('./YJF4D23A.cjs');
|
|
6
6
|
var isEqual = require('lodash.isequal');
|
|
7
7
|
|
|
@@ -60,7 +60,7 @@ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activ
|
|
|
60
60
|
return {
|
|
61
61
|
...gatedTx,
|
|
62
62
|
result: {
|
|
63
|
-
status:
|
|
63
|
+
status: G6VJTMIX_cjs.GatedTransactionStatus.DEPENDENCY_FAILED
|
|
64
64
|
}
|
|
65
65
|
};
|
|
66
66
|
}
|
|
@@ -74,7 +74,7 @@ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activ
|
|
|
74
74
|
return {
|
|
75
75
|
...gatedTx,
|
|
76
76
|
result: {
|
|
77
|
-
status:
|
|
77
|
+
status: G6VJTMIX_cjs.GatedTransactionStatus.NO_OP
|
|
78
78
|
}
|
|
79
79
|
};
|
|
80
80
|
}
|
|
@@ -83,24 +83,30 @@ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activ
|
|
|
83
83
|
return {
|
|
84
84
|
...gatedTx,
|
|
85
85
|
result: {
|
|
86
|
-
status:
|
|
86
|
+
status: G6VJTMIX_cjs.GatedTransactionStatus.DENIED
|
|
87
87
|
}
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
90
|
try {
|
|
91
|
-
const
|
|
91
|
+
const processResult = await processTx(gatedTx.transaction);
|
|
92
92
|
const finalCheckResult = await checkGatedTransaction({
|
|
93
93
|
registry: activityRegistry,
|
|
94
94
|
gatedTransaction: gatedTx,
|
|
95
|
-
processedTransaction:
|
|
95
|
+
processedTransaction: {
|
|
96
|
+
...gatedTx.transaction,
|
|
97
|
+
result: processResult
|
|
98
|
+
}
|
|
96
99
|
});
|
|
97
100
|
await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);
|
|
98
101
|
if (finalCheckResult.expectationMet) {
|
|
99
102
|
return {
|
|
100
103
|
...gatedTx,
|
|
101
104
|
result: {
|
|
102
|
-
status:
|
|
103
|
-
submittedTransaction:
|
|
105
|
+
status: G6VJTMIX_cjs.GatedTransactionStatus.SUCCESS,
|
|
106
|
+
submittedTransaction: {
|
|
107
|
+
...gatedTx.transaction,
|
|
108
|
+
result: processResult
|
|
109
|
+
}
|
|
104
110
|
}
|
|
105
111
|
};
|
|
106
112
|
} else {
|
|
@@ -111,8 +117,11 @@ ${stringify(finalCheckResult.onChainData)}`);
|
|
|
111
117
|
return {
|
|
112
118
|
...gatedTx,
|
|
113
119
|
result: {
|
|
114
|
-
status:
|
|
115
|
-
submittedTransaction:
|
|
120
|
+
status: G6VJTMIX_cjs.GatedTransactionStatus.FINAL_CHECK_FAILED,
|
|
121
|
+
submittedTransaction: {
|
|
122
|
+
...gatedTx.transaction,
|
|
123
|
+
result: processResult
|
|
124
|
+
},
|
|
116
125
|
finalOnChainState: finalCheckResult.onChainData
|
|
117
126
|
}
|
|
118
127
|
};
|
|
@@ -121,7 +130,7 @@ ${stringify(finalCheckResult.onChainData)}`);
|
|
|
121
130
|
return {
|
|
122
131
|
...gatedTx,
|
|
123
132
|
result: {
|
|
124
|
-
status:
|
|
133
|
+
status: G6VJTMIX_cjs.GatedTransactionStatus.TRANSACTION_FAILED,
|
|
125
134
|
transactionError: e
|
|
126
135
|
}
|
|
127
136
|
};
|
|
@@ -155,8 +164,8 @@ var resolveGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ acti
|
|
|
155
164
|
});
|
|
156
165
|
const resId = AYIRG6WY_cjs.getIdForGatedTransaction(res);
|
|
157
166
|
results[resId] = [
|
|
158
|
-
|
|
159
|
-
|
|
167
|
+
G6VJTMIX_cjs.GatedTransactionStatus.SUCCESS,
|
|
168
|
+
G6VJTMIX_cjs.GatedTransactionStatus.NO_OP
|
|
160
169
|
].includes(res.result.status);
|
|
161
170
|
userInteractionCallbacks?.onResultCallback?.(res);
|
|
162
171
|
return res;
|
|
@@ -181,5 +190,5 @@ var resolveSequencedGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(asyn
|
|
|
181
190
|
|
|
182
191
|
exports.resolveGatedTransactions = resolveGatedTransactions;
|
|
183
192
|
exports.resolveSequencedGatedTransactions = resolveSequencedGatedTransactions;
|
|
184
|
-
//# sourceMappingURL=
|
|
185
|
-
//# sourceMappingURL=
|
|
193
|
+
//# sourceMappingURL=VKTX7ABN.cjs.map
|
|
194
|
+
//# sourceMappingURL=VKTX7ABN.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resolver.ts"],"names":["checkGatedTransaction","__name","registry","gatedTransaction","cachedCheckResult","processedTransaction","onChainData","undefined","params","check","callByPointer","functionPointer","expectationMet","expectedResult","operator","isEqual","comparisonValue","Error","resolveGatedTransaction","activityRegistry","gatedTx","isTransactionSuccessful","processTx","confirmationCallback","fn","cache","dependencyIds","dependencies","map","tx","getIdForGatedTransaction","dependenciesAreAllProcessed","every","id","condition","dependenciesWereSuccessful","result","status","GatedTransactionStatus","DEPENDENCY_FAILED","initialCheckResult","getCachedTxCheckData","cacheSuccessfulTxCheckData","NO_OP","confirmation","DENIED","processResult","transaction","finalCheckResult","SUCCESS","submittedTransaction","stringify","o","JSON","_","v","toString","console","error","name","FINAL_CHECK_FAILED","finalOnChainState","e","TRANSACTION_FAILED","transactionError","resolveGatedTransactions","gatedTxes","userInteractionCallbacks","allInternalIds","allDeps","flatMap","allExternalDeps","filter","includes","results","Object","fromEntries","Promise","all","checkResult","gtxId","txFunctions","res","resId","onResultCallback","func","resolveSequencedGatedTransactions","seq","push"],"mappings":";;;;;;;;;;;AAsBA,IAAMA,wCAAwBC,mBAAA,CAAA,OAAyC,EACnEC,UACAC,gBAAAA,EACAC,iBAAAA,EACAC,sBAAoB,KAMvB;AACG,EAAA,IAAIC,WAAAA;AACJ,EAAA,IAAIF,sBAAsBG,MAAAA,EAAW;AACjCD,IAAAA,WAAAA,GAAcF,iBAAAA;EAClB,CAAA,MAAO;AAEH,IAAA,IAAII,MAAAA,GAASL,iBAAiBM,KAAAA,CAAMD,MAAAA;AACpC,IAAA,IAAIH,yBAAyBE,MAAAA,EAAW;AACpCC,MAAAA,MAAAA,GAAS;AAAIL,QAAAA,GAAAA,gBAAAA,CAAiBM,KAAAA,CAAMD,MAAAA;AAAQH,QAAAA;;AAChD,IAAA;AAEAC,IAAAA,WAAAA,GAAc,MAAMJ,QAAAA,CAASQ,aAAAA,CAAcP,gBAAAA,CAAiBM,KAAAA,CAAME,iBAAiBH,MAAAA,CAAAA;AACvF,EAAA;AAEA,EAAA,IAAII,cAAAA;AAEJ,EAAA,QAAQT,gBAAAA,CAAiBM,KAAAA,CAAMI,cAAAA,CAAeC,QAAAA;IAC1C,KAAK,GAAA;AACDF,MAAAA,cAAAA,GAAiBG,wBAAAA,CACbT,WAAAA,EACAH,gBAAAA,CAAiBM,KAAAA,CAAMI,eAAeG,eAAe,CAAA;AAEzD,MAAA;IACJ,KAAK,IAAA;AACDJ,MAAAA,cAAAA,GAAiB,CAACG,wBAAAA,CACdT,WAAAA,EACAH,gBAAAA,CAAiBM,KAAAA,CAAMI,eAAeG,eAAe,CAAA;AAEzD,MAAA;IACJ,KAAK,GAAA;AACDJ,MAAAA,cAAAA,GACKN,WAAAA,GACAH,gBAAAA,CAAiBM,KAAAA,CAAMI,cAAAA,CAAeG,eAAAA;AAC3C,MAAA;IACJ,KAAK,IAAA;AACDJ,MAAAA,cAAAA,GACKN,WAAAA,IACAH,gBAAAA,CAAiBM,KAAAA,CAAMI,cAAAA,CAAeG,eAAAA;AAC3C,MAAA;IACJ,KAAK,GAAA;AACDJ,MAAAA,cAAAA,GACKN,WAAAA,GACAH,gBAAAA,CAAiBM,KAAAA,CAAMI,cAAAA,CAAeG,eAAAA;AAC3C,MAAA;IACJ,KAAK,IAAA;AACDJ,MAAAA,cAAAA,GACKN,WAAAA,IACAH,gBAAAA,CAAiBM,KAAAA,CAAMI,cAAAA,CAAeG,eAAAA;AAC3C,MAAA;AACJ,IAAA;AACI,MAAA,MAAM,IAAIC,KAAAA,CACN,CAAA,4BAAA,EAA+Bd,iBAAiBM,KAAAA,CAAMI,cAAAA,CAAeC,QAAQ,CAAA,kBAAA,CAAoB,CAAA;AAE7G;AAEA,EAAA,OAAO;AACHF,IAAAA,cAAAA;AACAN,IAAAA;AACJ,GAAA;AACJ,CAAA,EArE8B,uBAAA,CAAA;AAuE9B,IAAMY,uBAAAA,mBAA0BjB,mBAAA,CAAA,OAK9B,EACEkB,gBAAAA,EACAC,OAAAA,EACAC,yBACAC,SAAAA,EACAC,oBAAAA,EACAC,EAAAA,EACAC,KAAAA,EAAK,KASR;AAGG,EAAA,MAAMC,aAAAA,GAAAA,CAAiBN,OAAAA,CAAQO,YAAAA,IAAgB,EAAA,EAAIC,IAAI,CAACC,EAAAA,KAAOC,qCAAAA,CAAyBD,EAAAA,CAAAA,CAAAA;AAExF,EAAA,MAAME,2BAAAA,mBAA8B9B,mBAAA,CAAA,MAChCyB,aAAAA,CAAcM,KAAAA,CAAM,CAACC,OAAOZ,uBAAAA,CAAwBY,EAAAA,CAAAA,IAAO,IAAA,CAAA,EAD3B,6BAAA,CAAA;AAGpC,EAAA,MAAMT,EAAAA,CAAGU,UAAUH,2BAAAA,CAAAA;AAGnB,EAAA,MAAMI,6BAA6BT,aAAAA,CAAcM,KAAAA,CAAM,CAACC,EAAAA,KAAOZ,uBAAAA,CAAwBY,EAAAA,CAAAA,CAAAA;AAEvF,EAAA,IAAI,CAACE,0BAAAA,EAA4B;AAC7B,IAAA,OAAO;MACH,GAAGf,OAAAA;MACHgB,MAAAA,EAAQ;AACJC,QAAAA,MAAAA,EAAQC,mCAAAA,CAAuBC;AACnC;AACJ,KAAA;AACJ,EAAA;AAEA,EAAA,MAAMC,kBAAAA,GAAqB,MAAMxC,qBAAAA,CAAsB;IACnDG,gBAAAA,EAAkBiB,OAAAA;IAClBlB,QAAAA,EAAUiB,gBAAAA;IACVf,iBAAAA,EAAmB,MAAMqB,KAAAA,EAAOgB,oBAAAA,GAAuBrB,OAAAA;GAC3D,CAAA;AAEA,EAAA,MAAMK,KAAAA,EAAOiB,0BAAAA,GAA6BtB,OAAAA,EAASoB,kBAAAA,CAAmBlC,WAAW,CAAA;AAEjF,EAAA,IAAIkC,mBAAmB5B,cAAAA,EAAgB;AAEnC,IAAA,OAAO;MACH,GAAGQ,OAAAA;MACHgB,MAAAA,EAAQ;AACJC,QAAAA,MAAAA,EAAQC,mCAAAA,CAAuBK;AACnC;AACJ,KAAA;AACJ,EAAA;AAGA,EAAA,MAAMC,YAAAA,GAAe,MAAMrB,oBAAAA,CAAqBH,OAAAA,CAAAA;AAChD,EAAA,IAAI,CAACwB,YAAAA,EAAc;AACf,IAAA,OAAO;MACH,GAAGxB,OAAAA;MACHgB,MAAAA,EAAQ;AACJC,QAAAA,MAAAA,EAAQC,mCAAAA,CAAuBO;AACnC;AACJ,KAAA;AACJ,EAAA;AAGA,EAAA,IAAI;AACA,IAAA,MAAMC,aAAAA,GAAgB,MAAMxB,SAAAA,CAAUF,OAAAA,CAAQ2B,WAAW,CAAA;AACzD,IAAA,MAAMC,gBAAAA,GAAmB,MAAMhD,qBAAAA,CAAsB;MACjDE,QAAAA,EAAUiB,gBAAAA;MACVhB,gBAAAA,EAAkBiB,OAAAA;MAClBf,oBAAAA,EAAsB;AAAE,QAAA,GAAGe,OAAAA,CAAQ2B,WAAAA;QAAaX,MAAAA,EAAQU;AAAc;KAC1E,CAAA;AAEA,IAAA,MAAMrB,KAAAA,EAAOiB,0BAAAA,GAA6BtB,OAAAA,EAAS4B,gBAAAA,CAAiB1C,WAAW,CAAA;AAE/E,IAAA,IAAI0C,iBAAiBpC,cAAAA,EAAgB;AAEjC,MAAA,OAAO;QACH,GAAGQ,OAAAA;QACHgB,MAAAA,EAAQ;AACJC,UAAAA,MAAAA,EAAQC,mCAAAA,CAAuBW,OAAAA;UAC/BC,oBAAAA,EAAsB;AAAE,YAAA,GAAG9B,OAAAA,CAAQ2B,WAAAA;YAAaX,MAAAA,EAAQU;AAAc;AAC1E;AACJ,OAAA;IACJ,CAAA,MAAO;AAEH,MAAA,MAAMK,4BAAYlD,mBAAA,CAAA,CAACmD,CAAAA,KACfC,IAAAA,CAAKF,SAAAA,CAAUC,GAAG,CAACE,CAAAA,EAAGC,CAAAA,KAAO,OAAOA,MAAM,QAAA,GAAWA,CAAAA,CAAEC,UAAQ,GAAKD,CAAAA,EAAI,CAAA,CAAA,EAD1D,WAAA,CAAA;AAElBE,MAAAA,OAAAA,CAAQC,KAAAA,CACJ,CAAA,kBAAA,EAAqBtC,OAAAA,CAAQuC,IAAI,CAAA;AAAyCR,gBAAAA,EAAAA,SAAAA,CAAU/B,OAAAA,CAAQX,KAAAA,CAAMI,cAAAA,CAAeG,eAAe,CAAA,CAAA;EAAgBmC,SAAAA,CAAUH,gBAAAA,CAAiB1C,WAAW,CAAA,CAAA,CAAG,CAAA;AAE7L,MAAA,OAAO;QACH,GAAGc,OAAAA;QACHgB,MAAAA,EAAQ;AACJC,UAAAA,MAAAA,EAAQC,mCAAAA,CAAuBsB,kBAAAA;UAC/BV,oBAAAA,EAAsB;AAAE,YAAA,GAAG9B,OAAAA,CAAQ2B,WAAAA;YAAaX,MAAAA,EAAQU;AAAc,WAAA;AACtEe,UAAAA,iBAAAA,EAAmBb,gBAAAA,CAAiB1C;AACxC;AACJ,OAAA;AACJ,IAAA;AACJ,EAAA,CAAA,CAAA,OAASwD,CAAAA,EAAG;AAER,IAAA,OAAO;MACH,GAAG1C,OAAAA;MACHgB,MAAAA,EAAQ;AACJC,QAAAA,MAAAA,EAAQC,mCAAAA,CAAuByB,kBAAAA;QAC/BC,gBAAAA,EAAkBF;AACtB;AACJ,KAAA;AACJ,EAAA;AACJ,CAAA,EAtHgC,yBAAA,CAAA;AAwHzB,IAAMG,wBAAAA,8CAKX,EACE9C,gBAAAA,EACA+C,WACA5C,SAAAA,EACAE,EAAAA,EACAC,KAAAA,EACA0C,wBAAAA,EAAwB,KAQ3B;AAEG,EAAA,MAAMC,iBAAiBF,SAAAA,CAAUtC,GAAAA,CAAI,CAACC,EAAAA,KAAOC,qCAAAA,CAAyBD,EAAAA,CAAAA,CAAAA;AACtE,EAAA,MAAMwC,OAAAA,GAAUH,UAAUI,OAAAA,CAAQ,CAACzC,OAAOA,EAAAA,CAAGF,YAAAA,IAAgB,EAAE,CAAA;AAC/D,EAAA,MAAM4C,eAAAA,GAAkBF,OAAAA,CAAQG,MAAAA,CAC5B,CAAC3C,EAAAA,KAAO,CAACuC,cAAAA,CAAeK,QAAAA,CAAS3C,qCAAAA,CAAyBD,EAAAA,CAAAA,CAAAA,CAAAA;AAM9D,EAAA,MAAM6C,OAAAA,GAA+CC,OAAOC,WAAAA,CACxD,MAAMC,QAAQC,GAAAA,CACVP,eAAAA,CAAgB3C,GAAAA,CAAI,OAAOC,EAAAA,KAAAA;AACvB,IAAA,MAAMkD,WAAAA,GAAc,MAAM/E,qBAAAA,CAAsB;MAC5CG,gBAAAA,EAAkB0B,EAAAA;MAClB3B,QAAAA,EAAUiB,gBAAAA;MACVf,iBAAAA,EAAmB,MAAMqB,KAAAA,EAAOgB,oBAAAA,GAAuBZ,EAAAA;KAC3D,CAAA;AAEA,IAAA,OAAO;AAACC,MAAAA,qCAAAA,CAAyBD,EAAAA,CAAAA;MAAKkD,WAAAA,CAAYnE;;AACtD,EAAA,CAAA,CAAA,CAAA,CAAA;AAIR,EAAA,MAAMS,uBAAAA,mBAA0BpB,mBAAA,CAAA,CAAC+E,KAAAA,KAA8BN,OAAAA,CAAQM,KAAAA,CAAAA,EAAvC,yBAAA,CAAA;AAEhC,EAAA,MAAMC,WAAAA,GAAcf,SAAAA,CAAUtC,GAAAA,CAAI,CAACC,OAAO,YAAA;AACtC,IAAA,MAAMqD,GAAAA,GAAM,MAAMhE,uBAAAA,CAA8D;MAC5EE,OAAAA,EAASS,EAAAA;AACTV,MAAAA,gBAAAA;AACAE,MAAAA,uBAAAA;AACAC,MAAAA,SAAAA;MACAC,oBAAAA,EACI4C,wBAAAA,EAA0B5C,yBAAyB,YAAY,IAAA,CAAA;AACnEC,MAAAA,EAAAA;AACAC,MAAAA;KACJ,CAAA;AAEA,IAAA,MAAM0D,KAAAA,GAAQrD,sCAAyBoD,GAAAA,CAAAA;AACvCR,IAAAA,OAAAA,CAAQS,KAAAA,CAAAA,GAAS;MAAC7C,mCAAAA,CAAuBW,OAAAA;MAASX,mCAAAA,CAAuBK;MAAO8B,QAAAA,CAC5ES,GAAAA,CAAI9C,OAAOC,MAAM,CAAA;AAGrB8B,IAAAA,wBAAAA,EAA0BiB,mBAAmBF,GAAAA,CAAAA;AAC7C,IAAA,OAAOA,GAAAA;EACX,CAAA,CAAA;AAEA,EAAA,OAAO,MAAML,QAAQC,GAAAA,CAAIG,WAAAA,CAAYrD,IAAI,CAACyD,IAAAA,KAASA,IAAAA,EAAAA,CAAAA,CAAAA;AACvD,CAAA,EApEwC,0BAAA;AAsEjC,IAAMC,iCAAAA,8CAKX,EACEnE,gBAAAA,EACA+C,WACA5C,SAAAA,EACAG,KAAAA,EACA0C,wBAAAA,EACA3C,EAAAA,EAAE,KAQL;AACG,EAAA,MAAMkD,UAAU,EAAA;AAChB,EAAA,KAAA,MAAWa,OAAOrB,SAAAA,EAAW;AACzB,IAAA,MAAM9B,MAAAA,GAAS,MAAM6B,wBAAAA,CAA+D;MAChFC,SAAAA,EAAWqB,GAAAA;AACXpE,MAAAA,gBAAAA;AACAG,MAAAA,SAAAA;AACAG,MAAAA,KAAAA;AACA0C,MAAAA,wBAAAA;AACA3C,MAAAA;KACJ,CAAA;AACAkD,IAAAA,OAAAA,CAAQc,KAAKpD,MAAAA,CAAAA;AACjB,EAAA;AAEA,EAAA,OAAOsC,OAAAA;AACX,CAAA,EAlCiD,mCAAA","file":"VKTX7ABN.cjs","sourcesContent":["import isEqual from 'lodash.isequal';\n\nimport type { ActivityRegistry } from '@layerzerolabs/common-activities';\nimport type { Transaction, TransactionResult } from '@layerzerolabs/common-chain-model';\nimport type { WorkflowFunctions } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n GatedTransaction,\n GatedTransactionId,\n GatedTransactionResult,\n IGatedTransactionCache,\n InferOnChainDataTypeFromGatedTransaction,\n UserInteractionCallbacks,\n} from './types';\nimport { GatedTransactionStatus } from './types';\n\ntype OnChainCheckResult<DataType = any> = {\n expectationMet: boolean;\n onChainData: DataType;\n};\n\nconst checkGatedTransaction = async <GatedTx extends GatedTransaction>({\n registry,\n gatedTransaction,\n cachedCheckResult,\n processedTransaction,\n}: {\n registry: ActivityRegistry;\n gatedTransaction: GatedTx;\n cachedCheckResult?: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n processedTransaction?: any;\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 (processedTransaction !== undefined) {\n params = [...gatedTransaction.check.params, processedTransaction];\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 resolveGatedTransaction = async <\n TxType extends Transaction,\n TxResult extends TransactionResult,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TxResult>,\n>({\n activityRegistry,\n gatedTx,\n isTransactionSuccessful,\n processTx,\n confirmationCallback,\n fn,\n cache,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTx: GatedTx;\n processTx: ProcessTx;\n isTransactionSuccessful: (gtxId: GatedTransactionId) => boolean | undefined;\n confirmationCallback: NonNullable<UserInteractionCallbacks['confirmationCallback']>;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n}): Promise<\n GatedTx & { result: GatedTransactionResult<GatedTx, TxType & { result: TxResult }> }\n> => {\n const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => getIdForGatedTransaction(tx));\n\n const dependenciesAreAllProcessed = () =>\n dependencyIds.every((id) => isTransactionSuccessful(id) != null);\n\n await fn.condition(dependenciesAreAllProcessed);\n\n //check that the dependencies succeeded\n const dependenciesWereSuccessful = dependencyIds.every((id) => isTransactionSuccessful(id));\n\n if (!dependenciesWereSuccessful) {\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.DEPENDENCY_FAILED,\n },\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 ...gatedTx,\n result: {\n status: GatedTransactionStatus.NO_OP,\n },\n };\n }\n\n //get confirmation before sending\n const confirmation = await confirmationCallback(gatedTx);\n if (!confirmation) {\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.DENIED,\n },\n };\n }\n\n //send the tx\n try {\n const processResult = await processTx(gatedTx.transaction);\n const finalCheckResult = await checkGatedTransaction({\n registry: activityRegistry,\n gatedTransaction: gatedTx,\n processedTransaction: { ...gatedTx.transaction, result: processResult },\n });\n\n await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);\n\n if (finalCheckResult.expectationMet) {\n //sent and successful\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.SUCCESS,\n submittedTransaction: { ...gatedTx.transaction, result: processResult },\n },\n };\n } else {\n //sent and unsuccessful\n const stringify = (o: any) =>\n JSON.stringify(o, (_, v) => (typeof v === 'bigint' ? v.toString() : v), 2);\n console.error(\n `Gated transaction ${gatedTx.name} final check failed:\\nExpected result ${stringify(gatedTx.check.expectedResult.comparisonValue)}, but got:\\n${stringify(finalCheckResult.onChainData)}`,\n );\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED,\n submittedTransaction: { ...gatedTx.transaction, result: processResult },\n finalOnChainState: finalCheckResult.onChainData,\n },\n };\n }\n } catch (e) {\n //sent and failed\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.TRANSACTION_FAILED,\n transactionError: e,\n },\n };\n }\n};\n\nexport const resolveGatedTransactions = async <\n TxType extends Transaction,\n TxResult extends TransactionResult,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TxResult>,\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<(GatedTx & { result: GatedTransactionResult })[]> => {\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 //map id -> was successful\n const results: Record<GatedTransactionId, boolean> = 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 [getIdForGatedTransaction(tx), checkResult.expectationMet];\n }),\n ),\n );\n\n const isTransactionSuccessful = (gtxId: GatedTransactionId) => results[gtxId];\n\n const txFunctions = gatedTxes.map((tx) => async () => {\n const res = await resolveGatedTransaction<TxType, TxResult, GatedTx, ProcessTx>({\n gatedTx: tx,\n activityRegistry,\n isTransactionSuccessful,\n processTx,\n confirmationCallback:\n userInteractionCallbacks?.confirmationCallback ?? (async () => true),\n fn,\n cache,\n });\n\n const resId = getIdForGatedTransaction(res);\n results[resId] = [GatedTransactionStatus.SUCCESS, GatedTransactionStatus.NO_OP].includes(\n res.result.status,\n );\n\n userInteractionCallbacks?.onResultCallback?.(res);\n return res;\n });\n\n return await Promise.all(txFunctions.map((func) => func()));\n};\n\nexport const resolveSequencedGatedTransactions = async <\n TxType extends Transaction,\n TxResult extends TransactionResult,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TxResult>,\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, TxResult, 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"]}
|
package/dist/index.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var QGZD4SJ4_cjs = require('./QGZD4SJ4.cjs');
|
|
4
|
-
var
|
|
4
|
+
var VKTX7ABN_cjs = require('./VKTX7ABN.cjs');
|
|
5
5
|
var AYIRG6WY_cjs = require('./AYIRG6WY.cjs');
|
|
6
|
-
var
|
|
6
|
+
var G6VJTMIX_cjs = require('./G6VJTMIX.cjs');
|
|
7
7
|
require('./YJF4D23A.cjs');
|
|
8
8
|
|
|
9
9
|
|
|
@@ -22,11 +22,11 @@ Object.defineProperty(exports, "useGatedTransactionSignalLock", {
|
|
|
22
22
|
});
|
|
23
23
|
Object.defineProperty(exports, "resolveGatedTransactions", {
|
|
24
24
|
enumerable: true,
|
|
25
|
-
get: function () { return
|
|
25
|
+
get: function () { return VKTX7ABN_cjs.resolveGatedTransactions; }
|
|
26
26
|
});
|
|
27
27
|
Object.defineProperty(exports, "resolveSequencedGatedTransactions", {
|
|
28
28
|
enumerable: true,
|
|
29
|
-
get: function () { return
|
|
29
|
+
get: function () { return VKTX7ABN_cjs.resolveSequencedGatedTransactions; }
|
|
30
30
|
});
|
|
31
31
|
Object.defineProperty(exports, "constructGatedTransaction", {
|
|
32
32
|
enumerable: true,
|
|
@@ -38,23 +38,23 @@ Object.defineProperty(exports, "getIdForGatedTransaction", {
|
|
|
38
38
|
});
|
|
39
39
|
Object.defineProperty(exports, "GatedTransactionStatus", {
|
|
40
40
|
enumerable: true,
|
|
41
|
-
get: function () { return
|
|
41
|
+
get: function () { return G6VJTMIX_cjs.GatedTransactionStatus; }
|
|
42
42
|
});
|
|
43
43
|
Object.defineProperty(exports, "gatedTransactionCacheSchema", {
|
|
44
44
|
enumerable: true,
|
|
45
|
-
get: function () { return
|
|
45
|
+
get: function () { return G6VJTMIX_cjs.gatedTransactionCacheSchema; }
|
|
46
46
|
});
|
|
47
47
|
Object.defineProperty(exports, "gatedTransactionResultSchema", {
|
|
48
48
|
enumerable: true,
|
|
49
|
-
get: function () { return
|
|
49
|
+
get: function () { return G6VJTMIX_cjs.gatedTransactionResultSchema; }
|
|
50
50
|
});
|
|
51
51
|
Object.defineProperty(exports, "gatedTransactionSchema", {
|
|
52
52
|
enumerable: true,
|
|
53
|
-
get: function () { return
|
|
53
|
+
get: function () { return G6VJTMIX_cjs.gatedTransactionSchema; }
|
|
54
54
|
});
|
|
55
55
|
Object.defineProperty(exports, "processedGatedTransactionSchema", {
|
|
56
56
|
enumerable: true,
|
|
57
|
-
get: function () { return
|
|
57
|
+
get: function () { return G6VJTMIX_cjs.processedGatedTransactionSchema; }
|
|
58
58
|
});
|
|
59
59
|
//# sourceMappingURL=index.cjs.map
|
|
60
60
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { gatedTransactionGoSignal, queryGatedTransactions, useGatedTransactionSignalLock } from './DBJG544E.js';
|
|
2
|
-
export { resolveGatedTransactions, resolveSequencedGatedTransactions } from './
|
|
2
|
+
export { resolveGatedTransactions, resolveSequencedGatedTransactions } from './SSSLF3RI.js';
|
|
3
3
|
export { constructGatedTransaction, getIdForGatedTransaction } from './5INFRBMB.js';
|
|
4
|
-
export { GatedTransactionStatus, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, processedGatedTransactionSchema } from './
|
|
4
|
+
export { GatedTransactionStatus, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, processedGatedTransactionSchema } from './5HWOSUJL.js';
|
|
5
5
|
import './VUOMXK5T.js';
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
package/dist/resolver.cjs
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var VKTX7ABN_cjs = require('./VKTX7ABN.cjs');
|
|
4
4
|
require('./AYIRG6WY.cjs');
|
|
5
|
-
require('./
|
|
5
|
+
require('./G6VJTMIX.cjs');
|
|
6
6
|
require('./YJF4D23A.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
Object.defineProperty(exports, "resolveGatedTransactions", {
|
|
11
11
|
enumerable: true,
|
|
12
|
-
get: function () { return
|
|
12
|
+
get: function () { return VKTX7ABN_cjs.resolveGatedTransactions; }
|
|
13
13
|
});
|
|
14
14
|
Object.defineProperty(exports, "resolveSequencedGatedTransactions", {
|
|
15
15
|
enumerable: true,
|
|
16
|
-
get: function () { return
|
|
16
|
+
get: function () { return VKTX7ABN_cjs.resolveSequencedGatedTransactions; }
|
|
17
17
|
});
|
|
18
18
|
//# sourceMappingURL=resolver.cjs.map
|
|
19
19
|
//# sourceMappingURL=resolver.cjs.map
|
package/dist/resolver.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { ActivityRegistry } from '@layerzerolabs/common-activities';
|
|
2
|
-
import type { Transaction } from '@layerzerolabs/common-chain-model';
|
|
2
|
+
import type { Transaction, TransactionResult } from '@layerzerolabs/common-chain-model';
|
|
3
3
|
import type { WorkflowFunctions } from '@layerzerolabs/common-workflow';
|
|
4
4
|
import type { GatedTransaction, GatedTransactionResult, IGatedTransactionCache, UserInteractionCallbacks } from './types';
|
|
5
|
-
export declare const resolveGatedTransactions: <TxType extends Transaction,
|
|
5
|
+
export declare const resolveGatedTransactions: <TxType extends Transaction, TxResult extends TransactionResult, GatedTx extends GatedTransaction<string, TxType, any>, ProcessTx extends (transaction: TxType) => Promise<TxResult>>({ activityRegistry, gatedTxes, processTx, fn, cache, userInteractionCallbacks, }: {
|
|
6
6
|
activityRegistry: ActivityRegistry;
|
|
7
7
|
gatedTxes: GatedTx[];
|
|
8
8
|
processTx: ProcessTx;
|
|
@@ -12,7 +12,7 @@ export declare const resolveGatedTransactions: <TxType extends Transaction, Proc
|
|
|
12
12
|
}) => Promise<(GatedTx & {
|
|
13
13
|
result: GatedTransactionResult;
|
|
14
14
|
})[]>;
|
|
15
|
-
export declare const resolveSequencedGatedTransactions: <TxType extends Transaction,
|
|
15
|
+
export declare const resolveSequencedGatedTransactions: <TxType extends Transaction, TxResult extends TransactionResult, GatedTx extends GatedTransaction<string, TxType, any>, ProcessTx extends (transaction: TxType) => Promise<TxResult>>({ activityRegistry, gatedTxes, processTx, cache, userInteractionCallbacks, fn, }: {
|
|
16
16
|
activityRegistry: ActivityRegistry;
|
|
17
17
|
gatedTxes: GatedTx[][];
|
|
18
18
|
processTx: ProcessTx;
|
package/dist/resolver.d.ts.map
CHANGED
|
@@ -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,EAAE,WAAW,EAAE,MAAM,mCAAmC,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,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,OAAO,KAAK,EACR,gBAAgB,EAEhB,sBAAsB,EACtB,sBAAsB,EAEtB,wBAAwB,EAC3B,MAAM,SAAS,CAAC;AAuMjB,eAAO,MAAM,wBAAwB,GACjC,MAAM,SAAS,WAAW,EAC1B,QAAQ,SAAS,iBAAiB,EAClC,OAAO,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrD,SAAS,SAAS,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,EAC9D,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,CAAC,OAAO,GAAG;IAAE,MAAM,EAAE,sBAAsB,CAAA;CAAE,CAAC,EAAE,CAiD3D,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC1C,MAAM,SAAS,WAAW,EAC1B,QAAQ,SAAS,iBAAiB,EAClC,OAAO,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrD,SAAS,SAAS,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,EAC9D,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;YAtEgC,sBAAsB;OAqFtD,CAAC"}
|
package/dist/resolver.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { resolveGatedTransactions, resolveSequencedGatedTransactions } from './
|
|
1
|
+
export { resolveGatedTransactions, resolveSequencedGatedTransactions } from './SSSLF3RI.js';
|
|
2
2
|
import './5INFRBMB.js';
|
|
3
|
-
import './
|
|
3
|
+
import './5HWOSUJL.js';
|
|
4
4
|
import './VUOMXK5T.js';
|
|
5
5
|
//# sourceMappingURL=resolver.js.map
|
|
6
6
|
//# sourceMappingURL=resolver.js.map
|
package/dist/types.cjs
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var G6VJTMIX_cjs = require('./G6VJTMIX.cjs');
|
|
4
4
|
require('./YJF4D23A.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "GatedTransactionStatus", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return G6VJTMIX_cjs.GatedTransactionStatus; }
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "gatedTransactionCacheSchema", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return G6VJTMIX_cjs.gatedTransactionCacheSchema; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "gatedTransactionResultSchema", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return G6VJTMIX_cjs.gatedTransactionResultSchema; }
|
|
19
19
|
});
|
|
20
20
|
Object.defineProperty(exports, "gatedTransactionSchema", {
|
|
21
21
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
22
|
+
get: function () { return G6VJTMIX_cjs.gatedTransactionSchema; }
|
|
23
23
|
});
|
|
24
24
|
Object.defineProperty(exports, "processedGatedTransactionSchema", {
|
|
25
25
|
enumerable: true,
|
|
26
|
-
get: function () { return
|
|
26
|
+
get: function () { return G6VJTMIX_cjs.processedGatedTransactionSchema; }
|
|
27
27
|
});
|
|
28
28
|
//# sourceMappingURL=types.cjs.map
|
|
29
29
|
//# sourceMappingURL=types.cjs.map
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import z from 'zod/v4';
|
|
2
|
-
import type
|
|
2
|
+
import { type Transaction, type transactionSchema as _transactionSchema, type TransactionWithResult, type transactionWithResultSchema as _transactionWithResultSchema } from '@layerzerolabs/common-chain-model';
|
|
3
3
|
import type { FunctionPointer } from '@layerzerolabs/common-utils';
|
|
4
4
|
export type OnChainDataComparisonOperator<OnChainDataType> = OnChainDataType extends number ? '<' | '<=' | '=' | '!=' | '>' | '>=' : '=' | '!=';
|
|
5
5
|
export type OnChainDataComparison<OnChainDataType> = {
|
|
@@ -26,25 +26,26 @@ export declare const gatedTransactionSchema: <TransactionSchema extends typeof _
|
|
|
26
26
|
}, z.core.$strip>;
|
|
27
27
|
}, z.core.$strip>;
|
|
28
28
|
}, z.core.$strip>;
|
|
29
|
-
export declare const gatedTransactionResultSchema: <
|
|
29
|
+
export declare const gatedTransactionResultSchema: <TransactionWithResultSchema extends typeof _transactionWithResultSchema, OnchainDataSchema extends z.ZodType>(transactionWithResultSchema: TransactionWithResultSchema, onchainDataSchema: OnchainDataSchema) => z.ZodUnion<readonly [z.ZodObject<{
|
|
30
30
|
status: z.ZodLiteral<GatedTransactionStatus.NO_OP>;
|
|
31
31
|
}, z.core.$strip>, z.ZodObject<{
|
|
32
32
|
status: z.ZodLiteral<GatedTransactionStatus.SUCCESS>;
|
|
33
|
-
submittedTransaction:
|
|
33
|
+
submittedTransaction: TransactionWithResultSchema;
|
|
34
34
|
}, z.core.$strip>, z.ZodObject<{
|
|
35
35
|
status: z.ZodLiteral<GatedTransactionStatus.TRANSACTION_FAILED>;
|
|
36
36
|
transactionError: z.ZodAny;
|
|
37
37
|
}, z.core.$strip>, z.ZodObject<{
|
|
38
38
|
status: z.ZodLiteral<GatedTransactionStatus.FINAL_CHECK_FAILED>;
|
|
39
|
-
submittedTransaction:
|
|
39
|
+
submittedTransaction: TransactionWithResultSchema;
|
|
40
40
|
finalOnChainState: OnchainDataSchema;
|
|
41
41
|
}, z.core.$strip>, z.ZodObject<{
|
|
42
42
|
status: z.ZodLiteral<GatedTransactionStatus.DEPENDENCY_FAILED>;
|
|
43
43
|
}, z.core.$strip>, z.ZodObject<{
|
|
44
44
|
status: z.ZodLiteral<GatedTransactionStatus.DENIED>;
|
|
45
45
|
}, z.core.$strip>]>;
|
|
46
|
-
export declare const processedGatedTransactionSchema: <TransactionSchema extends typeof _transactionSchema, OnchainDataSchema extends z.ZodType>({ transactionSchema, onchainDataSchema, name, }: {
|
|
46
|
+
export declare const processedGatedTransactionSchema: <TransactionSchema extends typeof _transactionSchema, TransactionWithResultSchema extends typeof _transactionWithResultSchema, OnchainDataSchema extends z.ZodType>({ transactionSchema, transactionWithResultSchema, onchainDataSchema, name, }: {
|
|
47
47
|
transactionSchema: TransactionSchema;
|
|
48
|
+
transactionWithResultSchema: TransactionWithResultSchema;
|
|
48
49
|
onchainDataSchema: OnchainDataSchema;
|
|
49
50
|
name: z.ZodString | z.ZodLiteral<string>;
|
|
50
51
|
}) => z.ZodIntersection<z.ZodObject<{
|
|
@@ -63,13 +64,13 @@ export declare const processedGatedTransactionSchema: <TransactionSchema extends
|
|
|
63
64
|
status: z.ZodLiteral<GatedTransactionStatus.NO_OP>;
|
|
64
65
|
}, z.core.$strip>, z.ZodObject<{
|
|
65
66
|
status: z.ZodLiteral<GatedTransactionStatus.SUCCESS>;
|
|
66
|
-
submittedTransaction:
|
|
67
|
+
submittedTransaction: TransactionWithResultSchema;
|
|
67
68
|
}, z.core.$strip>, z.ZodObject<{
|
|
68
69
|
status: z.ZodLiteral<GatedTransactionStatus.TRANSACTION_FAILED>;
|
|
69
70
|
transactionError: z.ZodAny;
|
|
70
71
|
}, z.core.$strip>, z.ZodObject<{
|
|
71
72
|
status: z.ZodLiteral<GatedTransactionStatus.FINAL_CHECK_FAILED>;
|
|
72
|
-
submittedTransaction:
|
|
73
|
+
submittedTransaction: TransactionWithResultSchema;
|
|
73
74
|
finalOnChainState: OnchainDataSchema;
|
|
74
75
|
}, z.core.$strip>, z.ZodObject<{
|
|
75
76
|
status: z.ZodLiteral<GatedTransactionStatus.DEPENDENCY_FAILED>;
|
|
@@ -87,9 +88,6 @@ export type GatedTransaction<Name extends string = string, TxType extends Transa
|
|
|
87
88
|
uniqueIdKeys?: Record<string, string | number | boolean>;
|
|
88
89
|
dependencies?: Dependencies;
|
|
89
90
|
};
|
|
90
|
-
export type ProcessedGatedTransaction<Name extends string = string, TxType extends Transaction = Transaction, CheckMethod extends (...args: any[]) => any = (...args: any[]) => any> = GatedTransaction<Name, TxType, CheckMethod> & {
|
|
91
|
-
result: GatedTransactionResult<GatedTransaction<Name, TxType, CheckMethod>, TxType>;
|
|
92
|
-
};
|
|
93
91
|
export type InferOnChainDataTypeFromGatedTransaction<GatedTx extends GatedTransaction> = GatedTx extends GatedTransaction<any, any, infer Check> ? Awaited<ReturnType<Check>> : unknown;
|
|
94
92
|
export declare enum GatedTransactionStatus {
|
|
95
93
|
NO_OP = "no_op",
|
|
@@ -102,17 +100,17 @@ export declare enum GatedTransactionStatus {
|
|
|
102
100
|
type NoOpGatedTransaction = {
|
|
103
101
|
status: GatedTransactionStatus.NO_OP;
|
|
104
102
|
};
|
|
105
|
-
type SuccessfulGatedTransaction<
|
|
103
|
+
type SuccessfulGatedTransaction<TxWithResult extends TransactionWithResult> = {
|
|
106
104
|
status: GatedTransactionStatus.SUCCESS;
|
|
107
|
-
submittedTransaction:
|
|
105
|
+
submittedTransaction: TxWithResult;
|
|
108
106
|
};
|
|
109
107
|
type TxFailedGatedTransaction = {
|
|
110
108
|
status: GatedTransactionStatus.TRANSACTION_FAILED;
|
|
111
109
|
transactionError: any;
|
|
112
110
|
};
|
|
113
|
-
type CheckFailedGatedTransaction<
|
|
111
|
+
type CheckFailedGatedTransaction<TxWithResult extends TransactionWithResult, State> = {
|
|
114
112
|
status: GatedTransactionStatus.FINAL_CHECK_FAILED;
|
|
115
|
-
submittedTransaction:
|
|
113
|
+
submittedTransaction: TxWithResult;
|
|
116
114
|
finalOnChainState: State;
|
|
117
115
|
};
|
|
118
116
|
type DependencyFailedGatedTransaction = {
|
|
@@ -121,7 +119,7 @@ type DependencyFailedGatedTransaction = {
|
|
|
121
119
|
type DeniedGatedTransaction = {
|
|
122
120
|
status: GatedTransactionStatus.DENIED;
|
|
123
121
|
};
|
|
124
|
-
export type GatedTransactionResult<GatedTx extends GatedTransaction = GatedTransaction,
|
|
122
|
+
export type GatedTransactionResult<GatedTx extends GatedTransaction = GatedTransaction, TxWithResult extends TransactionWithResult = TransactionWithResult> = NoOpGatedTransaction | SuccessfulGatedTransaction<TxWithResult> | TxFailedGatedTransaction | CheckFailedGatedTransaction<TxWithResult, InferOnChainDataTypeFromGatedTransaction<GatedTx>> | DependencyFailedGatedTransaction | DeniedGatedTransaction;
|
|
125
123
|
export declare const gatedTransactionCacheSchema: z.ZodObject<{
|
|
126
124
|
getCachedTxCheckData: z.ZodType<(<GatedTx extends GatedTransaction>(gtx: GatedTx) => Promise<InferOnChainDataTypeFromGatedTransaction<GatedTx> | undefined>)>;
|
|
127
125
|
cacheSuccessfulTxCheckData: z.ZodType<(<GatedTx extends GatedTransaction>(gtx: GatedTx, data: InferOnChainDataTypeFromGatedTransaction<GatedTx>) => Promise<void>)>;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,iBAAiB,IAAI,kBAAkB,EAC5C,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,IAAI,4BAA4B,EACnE,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGnE,MAAM,MAAM,6BAA6B,CAAC,eAAe,IAAI,eAAe,SAAS,MAAM,GACrF,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GACpC,GAAG,GAAG,IAAI,CAAC;AAEjB,MAAM,MAAM,qBAAqB,CAAC,eAAe,IAAI;IACjD,QAAQ,EAAE,6BAA6B,CAAC,eAAe,CAAC,CAAC;IACzD,eAAe,EAAE,eAAe,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAC7B,MAAM,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,IACpE;IACA,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,EAAE,CAAC;IACd,cAAc,EAAE,qBAAqB,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACtE,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,iBAAiB,SAAS,OAAO,kBAAkB,EAAE,8BAGzF;IACC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;CAC5C;;;;;;;;;;;iBAYK,CAAC;AAGP,eAAO,MAAM,4BAA4B,GACrC,2BAA2B,SAAS,OAAO,4BAA4B,EACvE,iBAAiB,SAAS,CAAC,CAAC,OAAO,EAEnC,6BAA6B,2BAA2B,EACxD,mBAAmB,iBAAiB;;;;;;;;;;;;;;;;mBAyBlC,CAAC;AAGP,eAAO,MAAM,+BAA+B,GACxC,iBAAiB,SAAS,OAAO,kBAAkB,EACnD,2BAA2B,SAAS,OAAO,4BAA4B,EACvE,iBAAiB,SAAS,CAAC,CAAC,OAAO,EACrC,8EAKC;IACC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,2BAA2B,EAAE,2BAA2B,CAAC;IACzD,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;CAC5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAQI,CAAC;AAEN,KAAK,4BAA4B,GAAG,gBAAgB,EAAE,CAAC;AAEvD,MAAM,MAAM,gBAAgB,CACxB,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,MAAM,SAAS,WAAW,GAAG,WAAW,EACxC,WAAW,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACrE,YAAY,SAAS,4BAA4B,GAAG,4BAA4B,IAChF;IACA,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACzD,YAAY,CAAC,EAAE,YAAY,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,wCAAwC,CAAC,OAAO,SAAS,gBAAgB,IACjF,OAAO,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC;AAEnG,oBAAY,sBAAsB;IAC9B,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,kBAAkB,uBAAuB;IACzC,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;IACvC,MAAM,WAAW;CACpB;AAED,KAAK,oBAAoB,GAAG;IACxB,MAAM,EAAE,sBAAsB,CAAC,KAAK,CAAC;CACxC,CAAC;AAEF,KAAK,0BAA0B,CAAC,YAAY,SAAS,qBAAqB,IAAI;IAC1E,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC;IACvC,oBAAoB,EAAE,YAAY,CAAC;CACtC,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC5B,MAAM,EAAE,sBAAsB,CAAC,kBAAkB,CAAC;IAClD,gBAAgB,EAAE,GAAG,CAAC;CACzB,CAAC;AAEF,KAAK,2BAA2B,CAAC,YAAY,SAAS,qBAAqB,EAAE,KAAK,IAAI;IAClF,MAAM,EAAE,sBAAsB,CAAC,kBAAkB,CAAC;IAClD,oBAAoB,EAAE,YAAY,CAAC;IACnC,iBAAiB,EAAE,KAAK,CAAC;CAC5B,CAAC;AAEF,KAAK,gCAAgC,GAAG;IACpC,MAAM,EAAE,sBAAsB,CAAC,iBAAiB,CAAC;CACpD,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC1B,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,sBAAsB,CAC9B,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,EACnD,YAAY,SAAS,qBAAqB,GAAG,qBAAqB,IAEhE,oBAAoB,GACpB,0BAA0B,CAAC,YAAY,CAAC,GACxC,wBAAwB,GACxB,2BAA2B,CAAC,YAAY,EAAE,wCAAwC,CAAC,OAAO,CAAC,CAAC,GAC5F,gCAAgC,GAChC,sBAAsB,CAAC;AAE7B,eAAO,MAAM,2BAA2B;0BAI9B,CAAC,CAAC,OAAO,EACX,CAAC,OAAO,SAAS,gBAAgB,EAC7B,GAAG,EAAE,OAAO,KACX,OAAO,CAAC,wCAAwC,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,EAC9E;gCAIK,CAAC,CAAC,OAAO,EACX,CAAC,OAAO,SAAS,gBAAgB,EAC7B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,wCAAwC,CAAC,OAAO,CAAC,KACtD,OAAO,CAAC,IAAI,CAAC,EACrB;iBACH,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEjF;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;AAEjE,MAAM,MAAM,wBAAwB,GAAG;IACnC,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,GAAG;QAAE,MAAM,EAAE,sBAAsB,CAAA;KAAE,KAAK,IAAI,CAAC;CAC9F,CAAC"}
|
package/dist/types.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { GatedTransactionStatus, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, processedGatedTransactionSchema } from './
|
|
1
|
+
export { GatedTransactionStatus, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, processedGatedTransactionSchema } from './5HWOSUJL.js';
|
|
2
2
|
import './VUOMXK5T.js';
|
|
3
3
|
//# sourceMappingURL=types.js.map
|
|
4
4
|
//# sourceMappingURL=types.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@layerzerolabs/gated-transaction",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.30",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -17,18 +17,18 @@
|
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"lodash.isequal": "^4.5.0",
|
|
19
19
|
"zod": "^3.23.8",
|
|
20
|
-
"@layerzerolabs/common-activities": "0.0.
|
|
21
|
-
"@layerzerolabs/common-chain-model": "0.0.
|
|
22
|
-
"@layerzerolabs/common-
|
|
23
|
-
"@layerzerolabs/
|
|
24
|
-
"@layerzerolabs/
|
|
20
|
+
"@layerzerolabs/common-activities": "0.0.30",
|
|
21
|
+
"@layerzerolabs/common-chain-model": "0.0.30",
|
|
22
|
+
"@layerzerolabs/common-workflow": "0.0.30",
|
|
23
|
+
"@layerzerolabs/common-utils": "0.0.30",
|
|
24
|
+
"@layerzerolabs/zod-utils": "0.0.30"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/lodash.isequal": "^4.5.8",
|
|
28
28
|
"tsup": "^8.4.0",
|
|
29
29
|
"vitest": "^3.2.3",
|
|
30
|
-
"@layerzerolabs/tsup-configuration": "0.0.
|
|
31
|
-
"@layerzerolabs/typescript-configuration": "0.0.
|
|
30
|
+
"@layerzerolabs/tsup-configuration": "0.0.30",
|
|
31
|
+
"@layerzerolabs/typescript-configuration": "0.0.30"
|
|
32
32
|
},
|
|
33
33
|
"publishConfig": {
|
|
34
34
|
"access": "restricted",
|
package/src/resolver.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import isEqual from 'lodash.isequal';
|
|
2
2
|
|
|
3
3
|
import type { ActivityRegistry } from '@layerzerolabs/common-activities';
|
|
4
|
-
import type { Transaction } from '@layerzerolabs/common-chain-model';
|
|
4
|
+
import type { Transaction, TransactionResult } from '@layerzerolabs/common-chain-model';
|
|
5
5
|
import type { WorkflowFunctions } from '@layerzerolabs/common-workflow';
|
|
6
6
|
|
|
7
7
|
import { getIdForGatedTransaction } from './gatedTx';
|
|
@@ -93,9 +93,9 @@ const checkGatedTransaction = async <GatedTx extends GatedTransaction>({
|
|
|
93
93
|
|
|
94
94
|
const resolveGatedTransaction = async <
|
|
95
95
|
TxType extends Transaction,
|
|
96
|
-
|
|
96
|
+
TxResult extends TransactionResult,
|
|
97
97
|
GatedTx extends GatedTransaction<string, TxType, any>,
|
|
98
|
-
ProcessTx extends (transaction: TxType) => Promise<
|
|
98
|
+
ProcessTx extends (transaction: TxType) => Promise<TxResult>,
|
|
99
99
|
>({
|
|
100
100
|
activityRegistry,
|
|
101
101
|
gatedTx,
|
|
@@ -112,7 +112,9 @@ const resolveGatedTransaction = async <
|
|
|
112
112
|
confirmationCallback: NonNullable<UserInteractionCallbacks['confirmationCallback']>;
|
|
113
113
|
fn: WorkflowFunctions;
|
|
114
114
|
cache?: IGatedTransactionCache;
|
|
115
|
-
}): Promise<
|
|
115
|
+
}): Promise<
|
|
116
|
+
GatedTx & { result: GatedTransactionResult<GatedTx, TxType & { result: TxResult }> }
|
|
117
|
+
> => {
|
|
116
118
|
const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => getIdForGatedTransaction(tx));
|
|
117
119
|
|
|
118
120
|
const dependenciesAreAllProcessed = () =>
|
|
@@ -163,11 +165,11 @@ const resolveGatedTransaction = async <
|
|
|
163
165
|
|
|
164
166
|
//send the tx
|
|
165
167
|
try {
|
|
166
|
-
const
|
|
168
|
+
const processResult = await processTx(gatedTx.transaction);
|
|
167
169
|
const finalCheckResult = await checkGatedTransaction({
|
|
168
170
|
registry: activityRegistry,
|
|
169
171
|
gatedTransaction: gatedTx,
|
|
170
|
-
processedTransaction:
|
|
172
|
+
processedTransaction: { ...gatedTx.transaction, result: processResult },
|
|
171
173
|
});
|
|
172
174
|
|
|
173
175
|
await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);
|
|
@@ -178,7 +180,7 @@ const resolveGatedTransaction = async <
|
|
|
178
180
|
...gatedTx,
|
|
179
181
|
result: {
|
|
180
182
|
status: GatedTransactionStatus.SUCCESS,
|
|
181
|
-
submittedTransaction:
|
|
183
|
+
submittedTransaction: { ...gatedTx.transaction, result: processResult },
|
|
182
184
|
},
|
|
183
185
|
};
|
|
184
186
|
} else {
|
|
@@ -192,7 +194,7 @@ const resolveGatedTransaction = async <
|
|
|
192
194
|
...gatedTx,
|
|
193
195
|
result: {
|
|
194
196
|
status: GatedTransactionStatus.FINAL_CHECK_FAILED,
|
|
195
|
-
submittedTransaction:
|
|
197
|
+
submittedTransaction: { ...gatedTx.transaction, result: processResult },
|
|
196
198
|
finalOnChainState: finalCheckResult.onChainData,
|
|
197
199
|
},
|
|
198
200
|
};
|
|
@@ -211,9 +213,9 @@ const resolveGatedTransaction = async <
|
|
|
211
213
|
|
|
212
214
|
export const resolveGatedTransactions = async <
|
|
213
215
|
TxType extends Transaction,
|
|
214
|
-
|
|
216
|
+
TxResult extends TransactionResult,
|
|
215
217
|
GatedTx extends GatedTransaction<string, TxType, any>,
|
|
216
|
-
ProcessTx extends (transaction: TxType) => Promise<
|
|
218
|
+
ProcessTx extends (transaction: TxType) => Promise<TxResult>,
|
|
217
219
|
>({
|
|
218
220
|
activityRegistry,
|
|
219
221
|
gatedTxes,
|
|
@@ -256,7 +258,7 @@ export const resolveGatedTransactions = async <
|
|
|
256
258
|
const isTransactionSuccessful = (gtxId: GatedTransactionId) => results[gtxId];
|
|
257
259
|
|
|
258
260
|
const txFunctions = gatedTxes.map((tx) => async () => {
|
|
259
|
-
const res = await resolveGatedTransaction<TxType,
|
|
261
|
+
const res = await resolveGatedTransaction<TxType, TxResult, GatedTx, ProcessTx>({
|
|
260
262
|
gatedTx: tx,
|
|
261
263
|
activityRegistry,
|
|
262
264
|
isTransactionSuccessful,
|
|
@@ -281,9 +283,9 @@ export const resolveGatedTransactions = async <
|
|
|
281
283
|
|
|
282
284
|
export const resolveSequencedGatedTransactions = async <
|
|
283
285
|
TxType extends Transaction,
|
|
284
|
-
|
|
286
|
+
TxResult extends TransactionResult,
|
|
285
287
|
GatedTx extends GatedTransaction<string, TxType, any>,
|
|
286
|
-
ProcessTx extends (transaction: TxType) => Promise<
|
|
288
|
+
ProcessTx extends (transaction: TxType) => Promise<TxResult>,
|
|
287
289
|
>({
|
|
288
290
|
activityRegistry,
|
|
289
291
|
gatedTxes,
|
|
@@ -301,7 +303,7 @@ export const resolveSequencedGatedTransactions = async <
|
|
|
301
303
|
}) => {
|
|
302
304
|
const results = [];
|
|
303
305
|
for (const seq of gatedTxes) {
|
|
304
|
-
const result = await resolveGatedTransactions<TxType,
|
|
306
|
+
const result = await resolveGatedTransactions<TxType, TxResult, GatedTx, ProcessTx>({
|
|
305
307
|
gatedTxes: seq,
|
|
306
308
|
activityRegistry,
|
|
307
309
|
processTx,
|
package/src/types.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import z from 'zod/v4';
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
Transaction,
|
|
5
|
-
transactionSchema as _transactionSchema,
|
|
3
|
+
import {
|
|
4
|
+
type Transaction,
|
|
5
|
+
type transactionSchema as _transactionSchema,
|
|
6
|
+
type TransactionWithResult,
|
|
7
|
+
type transactionWithResultSchema as _transactionWithResultSchema,
|
|
6
8
|
} from '@layerzerolabs/common-chain-model';
|
|
7
9
|
import type { FunctionPointer } from '@layerzerolabs/common-utils';
|
|
8
10
|
import { functionSchema } from '@layerzerolabs/zod-utils';
|
|
@@ -46,10 +48,10 @@ export const gatedTransactionSchema = <TransactionSchema extends typeof _transac
|
|
|
46
48
|
|
|
47
49
|
// Schema for gated transaction results
|
|
48
50
|
export const gatedTransactionResultSchema = <
|
|
49
|
-
|
|
51
|
+
TransactionWithResultSchema extends typeof _transactionWithResultSchema,
|
|
50
52
|
OnchainDataSchema extends z.ZodType,
|
|
51
53
|
>(
|
|
52
|
-
|
|
54
|
+
transactionWithResultSchema: TransactionWithResultSchema,
|
|
53
55
|
onchainDataSchema: OnchainDataSchema,
|
|
54
56
|
) =>
|
|
55
57
|
z.union([
|
|
@@ -58,7 +60,7 @@ export const gatedTransactionResultSchema = <
|
|
|
58
60
|
}),
|
|
59
61
|
z.object({
|
|
60
62
|
status: z.literal(GatedTransactionStatus.SUCCESS),
|
|
61
|
-
submittedTransaction:
|
|
63
|
+
submittedTransaction: transactionWithResultSchema,
|
|
62
64
|
}),
|
|
63
65
|
z.object({
|
|
64
66
|
status: z.literal(GatedTransactionStatus.TRANSACTION_FAILED),
|
|
@@ -66,7 +68,7 @@ export const gatedTransactionResultSchema = <
|
|
|
66
68
|
}),
|
|
67
69
|
z.object({
|
|
68
70
|
status: z.literal(GatedTransactionStatus.FINAL_CHECK_FAILED),
|
|
69
|
-
submittedTransaction:
|
|
71
|
+
submittedTransaction: transactionWithResultSchema,
|
|
70
72
|
finalOnChainState: onchainDataSchema,
|
|
71
73
|
}),
|
|
72
74
|
z.object({
|
|
@@ -80,13 +82,16 @@ export const gatedTransactionResultSchema = <
|
|
|
80
82
|
// Schema for processed gated transactions (with results)
|
|
81
83
|
export const processedGatedTransactionSchema = <
|
|
82
84
|
TransactionSchema extends typeof _transactionSchema,
|
|
85
|
+
TransactionWithResultSchema extends typeof _transactionWithResultSchema,
|
|
83
86
|
OnchainDataSchema extends z.ZodType,
|
|
84
87
|
>({
|
|
85
88
|
transactionSchema,
|
|
89
|
+
transactionWithResultSchema,
|
|
86
90
|
onchainDataSchema,
|
|
87
91
|
name,
|
|
88
92
|
}: {
|
|
89
93
|
transactionSchema: TransactionSchema;
|
|
94
|
+
transactionWithResultSchema: TransactionWithResultSchema;
|
|
90
95
|
onchainDataSchema: OnchainDataSchema;
|
|
91
96
|
name: z.ZodString | z.ZodLiteral<string>;
|
|
92
97
|
}) =>
|
|
@@ -95,7 +100,7 @@ export const processedGatedTransactionSchema = <
|
|
|
95
100
|
name,
|
|
96
101
|
}).and(
|
|
97
102
|
z.object({
|
|
98
|
-
result: gatedTransactionResultSchema(
|
|
103
|
+
result: gatedTransactionResultSchema(transactionWithResultSchema, onchainDataSchema),
|
|
99
104
|
}),
|
|
100
105
|
);
|
|
101
106
|
|
|
@@ -116,14 +121,6 @@ export type GatedTransaction<
|
|
|
116
121
|
dependencies?: Dependencies;
|
|
117
122
|
};
|
|
118
123
|
|
|
119
|
-
export type ProcessedGatedTransaction<
|
|
120
|
-
Name extends string = string,
|
|
121
|
-
TxType extends Transaction = Transaction,
|
|
122
|
-
CheckMethod extends (...args: any[]) => any = (...args: any[]) => any,
|
|
123
|
-
> = GatedTransaction<Name, TxType, CheckMethod> & {
|
|
124
|
-
result: GatedTransactionResult<GatedTransaction<Name, TxType, CheckMethod>, TxType>;
|
|
125
|
-
};
|
|
126
|
-
|
|
127
124
|
export type InferOnChainDataTypeFromGatedTransaction<GatedTx extends GatedTransaction> =
|
|
128
125
|
GatedTx extends GatedTransaction<any, any, infer Check> ? Awaited<ReturnType<Check>> : unknown;
|
|
129
126
|
|
|
@@ -140,9 +137,9 @@ type NoOpGatedTransaction = {
|
|
|
140
137
|
status: GatedTransactionStatus.NO_OP;
|
|
141
138
|
};
|
|
142
139
|
|
|
143
|
-
type SuccessfulGatedTransaction<
|
|
140
|
+
type SuccessfulGatedTransaction<TxWithResult extends TransactionWithResult> = {
|
|
144
141
|
status: GatedTransactionStatus.SUCCESS;
|
|
145
|
-
submittedTransaction:
|
|
142
|
+
submittedTransaction: TxWithResult;
|
|
146
143
|
};
|
|
147
144
|
|
|
148
145
|
type TxFailedGatedTransaction = {
|
|
@@ -150,9 +147,9 @@ type TxFailedGatedTransaction = {
|
|
|
150
147
|
transactionError: any;
|
|
151
148
|
};
|
|
152
149
|
|
|
153
|
-
type CheckFailedGatedTransaction<
|
|
150
|
+
type CheckFailedGatedTransaction<TxWithResult extends TransactionWithResult, State> = {
|
|
154
151
|
status: GatedTransactionStatus.FINAL_CHECK_FAILED;
|
|
155
|
-
submittedTransaction:
|
|
152
|
+
submittedTransaction: TxWithResult;
|
|
156
153
|
finalOnChainState: State;
|
|
157
154
|
};
|
|
158
155
|
|
|
@@ -166,15 +163,12 @@ type DeniedGatedTransaction = {
|
|
|
166
163
|
|
|
167
164
|
export type GatedTransactionResult<
|
|
168
165
|
GatedTx extends GatedTransaction = GatedTransaction,
|
|
169
|
-
|
|
166
|
+
TxWithResult extends TransactionWithResult = TransactionWithResult,
|
|
170
167
|
> =
|
|
171
168
|
| NoOpGatedTransaction
|
|
172
|
-
| SuccessfulGatedTransaction<
|
|
169
|
+
| SuccessfulGatedTransaction<TxWithResult>
|
|
173
170
|
| TxFailedGatedTransaction
|
|
174
|
-
| CheckFailedGatedTransaction<
|
|
175
|
-
ProcessedTxType,
|
|
176
|
-
InferOnChainDataTypeFromGatedTransaction<GatedTx>
|
|
177
|
-
>
|
|
171
|
+
| CheckFailedGatedTransaction<TxWithResult, InferOnChainDataTypeFromGatedTransaction<GatedTx>>
|
|
178
172
|
| DependencyFailedGatedTransaction
|
|
179
173
|
| DeniedGatedTransaction;
|
|
180
174
|
|
package/dist/6NWNACVT.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types.ts"],"names":["gatedTransactionSchema","__name","transactionSchema","name","z","object","transaction","check","functionPointer","any","params","array","expectedResult","operator","custom","comparisonValue","gatedTransactionResultSchema","onchainDataSchema","union","status","literal","submittedTransaction","transactionError","finalOnChainState","processedGatedTransactionSchema","and","result","GatedTransactionStatus","gatedTransactionCacheSchema","getCachedTxCheckData","functionSchema","input","tuple","output","promise","cacheSuccessfulTxCheckData"],"mappings":";;;;;;;;;;AA0BO,IAAMA,yCAAyBC,mBAAA,CAAA,CAAsD,EACxFC,mBACAC,IAAAA,EAAI,KAKJC,mBAAEC,MAAAA,CAAO;AACLF,EAAAA,IAAAA;EACAG,WAAAA,EAAaJ,iBAAAA;AACbK,EAAAA,KAAAA,EAAOH,mBAAEC,MAAAA,CAAO;AACZG,IAAAA,eAAAA,EAAiBJ,mBAAEK,GAAAA,EAAG;AACtBC,IAAAA,MAAAA,EAAQN,kBAAAA,CAAEO,KAAAA,CAAMP,kBAAAA,CAAEK,GAAAA,EAAG,CAAA;AACrBG,IAAAA,cAAAA,EAAgBR,mBAAEC,MAAAA,CAAO;AACrBQ,MAAAA,QAAAA,EAAUT,mBAAEU,MAAAA,EAAM;AAClBC,MAAAA,eAAAA,EAAiBX,mBAAEK,GAAAA;KACvB;GACJ;AACJ,CAAA,CAAA,EAlBkC,wBAAA;AAqB/B,IAAMO,4BAAAA,mBAA+Bf,mBAAA,CAAA,CAIxCC,iBAAAA,EACAe,iBAAAA,KAEAb,mBAAEc,KAAAA,CAAM;AACJd,EAAAA,kBAAAA,CAAEC,MAAAA,CAAO;IACLc,MAAAA,EAAQf,kBAAAA,CAAEgB,QAAO,OAAA;GACrB,CAAA;AACAhB,EAAAA,kBAAAA,CAAEC,MAAAA,CAAO;IACLc,MAAAA,EAAQf,kBAAAA,CAAEgB,QAAO,SAAA,CAAA;IACjBC,oBAAAA,EAAsBnB;GAC1B,CAAA;AACAE,EAAAA,kBAAAA,CAAEC,MAAAA,CAAO;IACLc,MAAAA,EAAQf,kBAAAA,CAAEgB,QAAO,oBAAA,CAAA;AACjBE,IAAAA,gBAAAA,EAAkBlB,mBAAEK,GAAAA;GACxB,CAAA;AACAL,EAAAA,kBAAAA,CAAEC,MAAAA,CAAO;IACLc,MAAAA,EAAQf,kBAAAA,CAAEgB,QAAO,oBAAA,CAAA;IACjBC,oBAAAA,EAAsBnB,iBAAAA;IACtBqB,iBAAAA,EAAmBN;GACvB,CAAA;AACAb,EAAAA,kBAAAA,CAAEC,MAAAA,CAAO;IACLc,MAAAA,EAAQf,kBAAAA,CAAEgB,QAAO,mBAAA;GACrB,CAAA;AACAhB,EAAAA,kBAAAA,CAAEC,MAAAA,CAAO;IACLc,MAAAA,EAAQf,kBAAAA,CAAEgB,QAAO,QAAA;GACrB;CACH,CAAA,EA9BuC,8BAAA;AAiCrC,IAAMI,kDAAkCvB,mBAAA,CAAA,CAG7C,EACEC,mBACAe,iBAAAA,EACAd,IAAAA,OAMAH,sBAAAA,CAAuB;AACnBE,EAAAA,iBAAAA;AACAC,EAAAA;AACJ,CAAA,CAAA,CAAGsB,GAAAA,CACCrB,kBAAAA,CAAEC,MAAAA,CAAO;EACLqB,MAAAA,EAAQV,4BAAAA,CAA6Bd,mBAAmBe,iBAAAA;AAC5D,CAAA,CAAA,CAAA,EAlBuC,iCAAA;AAiDxC,IAAKU,sBAAAA,6BAAAA,uBAAAA,EAAAA;;;;;;;AAAAA,EAAAA,OAAAA,uBAAAA;;AAmDL,IAAMC,2BAAAA,GAA8BxB,mBAAEC,MAAAA,CAAO;AAChDwB,EAAAA,oBAAAA,EAAsBC,uBAAAA,CAAe;AACjCC,IAAAA,KAAAA,EAAO3B,mBAAE4B,KAAAA,CAAM;AAAC5B,MAAAA,kBAAAA,CAAEK,GAAAA;AAAM,KAAA,CAAA;AACxBwB,IAAAA,MAAAA,EAAQ7B,kBAAAA,CAAE8B,OAAAA,CAAQ9B,kBAAAA,CAAEK,GAAAA,EAAG;GAC3B,CAAA;AAKA0B,EAAAA,0BAAAA,EAA4BL,uBAAAA,CAAe;AACvCC,IAAAA,KAAAA,EAAO3B,mBAAE4B,KAAAA,CAAM;AAAC5B,MAAAA,kBAAAA,CAAEK,GAAAA,EAAG;AAAIL,MAAAA,kBAAAA,CAAEK,GAAAA;AAAM,KAAA,CAAA;AACjCwB,IAAAA,MAAAA,EAAQ7B,kBAAAA,CAAE8B,OAAAA,CAAQ9B,kBAAAA,CAAEK,GAAAA,EAAG;GAC3B;AAMJ,CAAA","file":"6NWNACVT.cjs","sourcesContent":["import z from 'zod/v4';\n\nimport type {\n Transaction,\n transactionSchema as _transactionSchema,\n} from '@layerzerolabs/common-chain-model';\nimport type { FunctionPointer } from '@layerzerolabs/common-utils';\nimport { functionSchema } from '@layerzerolabs/zod-utils';\n\nexport type OnChainDataComparisonOperator<OnChainDataType> = OnChainDataType extends number\n ? '<' | '<=' | '=' | '!=' | '>' | '>='\n : '=' | '!=';\n\nexport type OnChainDataComparison<OnChainDataType> = {\n operator: OnChainDataComparisonOperator<OnChainDataType>;\n comparisonValue: OnChainDataType;\n};\n\nexport type GatedTransactionCheck<\n Method extends (...args: any[]) => any = (...args: any[]) => unknown,\n> = {\n functionPointer: FunctionPointer<Method>;\n params: any[];\n expectedResult: OnChainDataComparison<Awaited<ReturnType<Method>>>;\n};\n\nexport const gatedTransactionSchema = <TransactionSchema extends typeof _transactionSchema>({\n transactionSchema,\n name,\n}: {\n transactionSchema: TransactionSchema;\n name: z.ZodString | z.ZodLiteral<string>;\n}) =>\n z.object({\n name,\n transaction: transactionSchema,\n check: z.object({\n functionPointer: z.any(),\n params: z.array(z.any()),\n expectedResult: z.object({\n operator: z.custom<OnChainDataComparisonOperator<any>>(),\n comparisonValue: z.any(),\n }),\n }),\n });\n\n// Schema for gated transaction results\nexport const gatedTransactionResultSchema = <\n TransactionSchema extends typeof _transactionSchema,\n OnchainDataSchema extends z.ZodType,\n>(\n transactionSchema: TransactionSchema,\n onchainDataSchema: OnchainDataSchema,\n) =>\n z.union([\n z.object({\n status: z.literal(GatedTransactionStatus.NO_OP),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.SUCCESS),\n submittedTransaction: transactionSchema,\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.TRANSACTION_FAILED),\n transactionError: z.any(),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.FINAL_CHECK_FAILED),\n submittedTransaction: transactionSchema,\n finalOnChainState: onchainDataSchema,\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DEPENDENCY_FAILED),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DENIED),\n }),\n ]);\n\n// Schema for processed gated transactions (with results)\nexport const processedGatedTransactionSchema = <\n TransactionSchema extends typeof _transactionSchema,\n OnchainDataSchema extends z.ZodType,\n>({\n transactionSchema,\n onchainDataSchema,\n name,\n}: {\n transactionSchema: TransactionSchema;\n onchainDataSchema: OnchainDataSchema;\n name: z.ZodString | z.ZodLiteral<string>;\n}) =>\n gatedTransactionSchema({\n transactionSchema,\n name,\n }).and(\n z.object({\n result: gatedTransactionResultSchema(transactionSchema, onchainDataSchema),\n }),\n );\n\ntype GatedTransactionDependencies = GatedTransaction[];\n\nexport type GatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckMethod extends (...args: any[]) => any = (...args: any[]) => any,\n Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = {\n bundleName?: string;\n name: Name;\n transaction: TxType;\n check: GatedTransactionCheck<CheckMethod>;\n cacheable?: boolean;\n uniqueIdKeys?: Record<string, string | number | boolean>;\n dependencies?: Dependencies;\n};\n\nexport type ProcessedGatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckMethod extends (...args: any[]) => any = (...args: any[]) => any,\n> = GatedTransaction<Name, TxType, CheckMethod> & {\n result: GatedTransactionResult<GatedTransaction<Name, TxType, CheckMethod>, TxType>;\n};\n\nexport type InferOnChainDataTypeFromGatedTransaction<GatedTx extends GatedTransaction> =\n GatedTx extends GatedTransaction<any, any, infer Check> ? Awaited<ReturnType<Check>> : unknown;\n\nexport enum GatedTransactionStatus {\n NO_OP = 'no_op',\n SUCCESS = 'success',\n TRANSACTION_FAILED = 'transaction_failed',\n FINAL_CHECK_FAILED = 'final_check_failed',\n DEPENDENCY_FAILED = 'dependency_failed',\n DENIED = 'denied',\n}\n\ntype NoOpGatedTransaction = {\n status: GatedTransactionStatus.NO_OP;\n};\n\ntype SuccessfulGatedTransaction<ProcessedTx extends Transaction> = {\n status: GatedTransactionStatus.SUCCESS;\n submittedTransaction: ProcessedTx;\n};\n\ntype TxFailedGatedTransaction = {\n status: GatedTransactionStatus.TRANSACTION_FAILED;\n transactionError: any;\n};\n\ntype CheckFailedGatedTransaction<ProcessedTx extends Transaction, State> = {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED;\n submittedTransaction: ProcessedTx;\n finalOnChainState: State;\n};\n\ntype DependencyFailedGatedTransaction = {\n status: GatedTransactionStatus.DEPENDENCY_FAILED;\n};\n\ntype DeniedGatedTransaction = {\n status: GatedTransactionStatus.DENIED;\n};\n\nexport type GatedTransactionResult<\n GatedTx extends GatedTransaction = GatedTransaction,\n ProcessedTxType extends Transaction = Transaction,\n> =\n | NoOpGatedTransaction\n | SuccessfulGatedTransaction<ProcessedTxType>\n | TxFailedGatedTransaction\n | CheckFailedGatedTransaction<\n ProcessedTxType,\n InferOnChainDataTypeFromGatedTransaction<GatedTx>\n >\n | DependencyFailedGatedTransaction\n | DeniedGatedTransaction;\n\nexport const gatedTransactionCacheSchema = z.object({\n getCachedTxCheckData: functionSchema({\n input: z.tuple([z.any()]),\n output: z.promise(z.any()),\n }) as z.ZodType<\n <GatedTx extends GatedTransaction>(\n gtx: GatedTx,\n ) => Promise<InferOnChainDataTypeFromGatedTransaction<GatedTx> | undefined>\n >,\n cacheSuccessfulTxCheckData: functionSchema({\n input: z.tuple([z.any(), z.any()]),\n output: z.promise(z.any()),\n }) as z.ZodType<\n <GatedTx extends GatedTransaction>(\n gtx: GatedTx,\n data: InferOnChainDataTypeFromGatedTransaction<GatedTx>,\n ) => Promise<void>\n >,\n});\n\nexport type IGatedTransactionCache = z.infer<typeof gatedTransactionCacheSchema>;\n\n/**\n * name-chain-uniqueIdKeys\n *\n * E.g., setDelegate-ethereum-oAppAddress:0xMY_OAPP\n */\nexport type GatedTransactionId = `${string}-${string}-${string}`;\n\nexport type UserInteractionCallbacks = {\n confirmationCallback?: (gtx: GatedTransaction) => Promise<boolean>;\n onResultCallback?: (result: GatedTransaction & { result: GatedTransactionResult }) => void;\n};\n"]}
|
package/dist/CG43CWKE.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/resolver.ts"],"names":["checkGatedTransaction","registry","gatedTransaction","cachedCheckResult","processedTransaction","onChainData","undefined","params","check","callByPointer","functionPointer","expectationMet","expectedResult","operator","isEqual","comparisonValue","Error","resolveGatedTransaction","activityRegistry","gatedTx","isTransactionSuccessful","processTx","confirmationCallback","fn","cache","dependencyIds","dependencies","map","tx","getIdForGatedTransaction","dependenciesAreAllProcessed","every","id","condition","dependenciesWereSuccessful","result","status","GatedTransactionStatus","DEPENDENCY_FAILED","initialCheckResult","getCachedTxCheckData","cacheSuccessfulTxCheckData","NO_OP","confirmation","DENIED","processed","transaction","finalCheckResult","SUCCESS","submittedTransaction","stringify","o","JSON","_","v","toString","console","error","name","FINAL_CHECK_FAILED","finalOnChainState","e","TRANSACTION_FAILED","transactionError","resolveGatedTransactions","gatedTxes","userInteractionCallbacks","allInternalIds","allDeps","flatMap","allExternalDeps","filter","includes","results","Object","fromEntries","Promise","all","checkResult","gtxId","txFunctions","res","resId","onResultCallback","func","resolveSequencedGatedTransactions","seq","push"],"mappings":"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","file":"CG43CWKE.js","sourcesContent":["import isEqual from 'lodash.isequal';\n\nimport type { ActivityRegistry } from '@layerzerolabs/common-activities';\nimport type { Transaction } from '@layerzerolabs/common-chain-model';\nimport type { WorkflowFunctions } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n GatedTransaction,\n GatedTransactionId,\n GatedTransactionResult,\n IGatedTransactionCache,\n InferOnChainDataTypeFromGatedTransaction,\n UserInteractionCallbacks,\n} from './types';\nimport { GatedTransactionStatus } from './types';\n\ntype OnChainCheckResult<DataType = any> = {\n expectationMet: boolean;\n onChainData: DataType;\n};\n\nconst checkGatedTransaction = async <GatedTx extends GatedTransaction>({\n registry,\n gatedTransaction,\n cachedCheckResult,\n processedTransaction,\n}: {\n registry: ActivityRegistry;\n gatedTransaction: GatedTx;\n cachedCheckResult?: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n processedTransaction?: any;\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 (processedTransaction !== undefined) {\n params = [...gatedTransaction.check.params, processedTransaction];\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 resolveGatedTransaction = async <\n TxType extends Transaction,\n ProcessedTxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<ProcessedTxType>,\n>({\n activityRegistry,\n gatedTx,\n isTransactionSuccessful,\n processTx,\n confirmationCallback,\n fn,\n cache,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTx: GatedTx;\n processTx: ProcessTx;\n isTransactionSuccessful: (gtxId: GatedTransactionId) => boolean | undefined;\n confirmationCallback: NonNullable<UserInteractionCallbacks['confirmationCallback']>;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n}): Promise<GatedTx & { result: GatedTransactionResult<GatedTx, ProcessedTxType> }> => {\n const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => getIdForGatedTransaction(tx));\n\n const dependenciesAreAllProcessed = () =>\n dependencyIds.every((id) => isTransactionSuccessful(id) != null);\n\n await fn.condition(dependenciesAreAllProcessed);\n\n //check that the dependencies succeeded\n const dependenciesWereSuccessful = dependencyIds.every((id) => isTransactionSuccessful(id));\n\n if (!dependenciesWereSuccessful) {\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.DEPENDENCY_FAILED,\n },\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 ...gatedTx,\n result: {\n status: GatedTransactionStatus.NO_OP,\n },\n };\n }\n\n //get confirmation before sending\n const confirmation = await confirmationCallback(gatedTx);\n if (!confirmation) {\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.DENIED,\n },\n };\n }\n\n //send the tx\n try {\n const processed = await processTx(gatedTx.transaction);\n const finalCheckResult = await checkGatedTransaction({\n registry: activityRegistry,\n gatedTransaction: gatedTx,\n processedTransaction: processed,\n });\n\n await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);\n\n if (finalCheckResult.expectationMet) {\n //sent and successful\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.SUCCESS,\n submittedTransaction: processed,\n },\n };\n } else {\n //sent and unsuccessful\n const stringify = (o: any) =>\n JSON.stringify(o, (_, v) => (typeof v === 'bigint' ? v.toString() : v), 2);\n console.error(\n `Gated transaction ${gatedTx.name} final check failed:\\nExpected result ${stringify(gatedTx.check.expectedResult.comparisonValue)}, but got:\\n${stringify(finalCheckResult.onChainData)}`,\n );\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED,\n submittedTransaction: processed,\n finalOnChainState: finalCheckResult.onChainData,\n },\n };\n }\n } catch (e) {\n //sent and failed\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.TRANSACTION_FAILED,\n transactionError: e,\n },\n };\n }\n};\n\nexport const resolveGatedTransactions = async <\n TxType extends Transaction,\n ProcessedTxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<ProcessedTxType>,\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<(GatedTx & { result: GatedTransactionResult })[]> => {\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 //map id -> was successful\n const results: Record<GatedTransactionId, boolean> = 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 [getIdForGatedTransaction(tx), checkResult.expectationMet];\n }),\n ),\n );\n\n const isTransactionSuccessful = (gtxId: GatedTransactionId) => results[gtxId];\n\n const txFunctions = gatedTxes.map((tx) => async () => {\n const res = await resolveGatedTransaction<TxType, ProcessedTxType, GatedTx, ProcessTx>({\n gatedTx: tx,\n activityRegistry,\n isTransactionSuccessful,\n processTx,\n confirmationCallback:\n userInteractionCallbacks?.confirmationCallback ?? (async () => true),\n fn,\n cache,\n });\n\n const resId = getIdForGatedTransaction(res);\n results[resId] = [GatedTransactionStatus.SUCCESS, GatedTransactionStatus.NO_OP].includes(\n res.result.status,\n );\n\n userInteractionCallbacks?.onResultCallback?.(res);\n return res;\n });\n\n return await Promise.all(txFunctions.map((func) => func()));\n};\n\nexport const resolveSequencedGatedTransactions = async <\n TxType extends Transaction,\n ProcessedTxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<ProcessedTxType>,\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, ProcessedTxType, 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"]}
|
package/dist/GMAAYDJ4.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types.ts"],"names":["gatedTransactionSchema","transactionSchema","name","z","object","transaction","check","functionPointer","any","params","array","expectedResult","operator","custom","comparisonValue","gatedTransactionResultSchema","onchainDataSchema","union","status","literal","submittedTransaction","transactionError","finalOnChainState","processedGatedTransactionSchema","and","result","GatedTransactionStatus","gatedTransactionCacheSchema","getCachedTxCheckData","functionSchema","input","tuple","output","promise","cacheSuccessfulTxCheckData"],"mappings":"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","file":"GMAAYDJ4.js","sourcesContent":["import z from 'zod/v4';\n\nimport type {\n Transaction,\n transactionSchema as _transactionSchema,\n} from '@layerzerolabs/common-chain-model';\nimport type { FunctionPointer } from '@layerzerolabs/common-utils';\nimport { functionSchema } from '@layerzerolabs/zod-utils';\n\nexport type OnChainDataComparisonOperator<OnChainDataType> = OnChainDataType extends number\n ? '<' | '<=' | '=' | '!=' | '>' | '>='\n : '=' | '!=';\n\nexport type OnChainDataComparison<OnChainDataType> = {\n operator: OnChainDataComparisonOperator<OnChainDataType>;\n comparisonValue: OnChainDataType;\n};\n\nexport type GatedTransactionCheck<\n Method extends (...args: any[]) => any = (...args: any[]) => unknown,\n> = {\n functionPointer: FunctionPointer<Method>;\n params: any[];\n expectedResult: OnChainDataComparison<Awaited<ReturnType<Method>>>;\n};\n\nexport const gatedTransactionSchema = <TransactionSchema extends typeof _transactionSchema>({\n transactionSchema,\n name,\n}: {\n transactionSchema: TransactionSchema;\n name: z.ZodString | z.ZodLiteral<string>;\n}) =>\n z.object({\n name,\n transaction: transactionSchema,\n check: z.object({\n functionPointer: z.any(),\n params: z.array(z.any()),\n expectedResult: z.object({\n operator: z.custom<OnChainDataComparisonOperator<any>>(),\n comparisonValue: z.any(),\n }),\n }),\n });\n\n// Schema for gated transaction results\nexport const gatedTransactionResultSchema = <\n TransactionSchema extends typeof _transactionSchema,\n OnchainDataSchema extends z.ZodType,\n>(\n transactionSchema: TransactionSchema,\n onchainDataSchema: OnchainDataSchema,\n) =>\n z.union([\n z.object({\n status: z.literal(GatedTransactionStatus.NO_OP),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.SUCCESS),\n submittedTransaction: transactionSchema,\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.TRANSACTION_FAILED),\n transactionError: z.any(),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.FINAL_CHECK_FAILED),\n submittedTransaction: transactionSchema,\n finalOnChainState: onchainDataSchema,\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DEPENDENCY_FAILED),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DENIED),\n }),\n ]);\n\n// Schema for processed gated transactions (with results)\nexport const processedGatedTransactionSchema = <\n TransactionSchema extends typeof _transactionSchema,\n OnchainDataSchema extends z.ZodType,\n>({\n transactionSchema,\n onchainDataSchema,\n name,\n}: {\n transactionSchema: TransactionSchema;\n onchainDataSchema: OnchainDataSchema;\n name: z.ZodString | z.ZodLiteral<string>;\n}) =>\n gatedTransactionSchema({\n transactionSchema,\n name,\n }).and(\n z.object({\n result: gatedTransactionResultSchema(transactionSchema, onchainDataSchema),\n }),\n );\n\ntype GatedTransactionDependencies = GatedTransaction[];\n\nexport type GatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckMethod extends (...args: any[]) => any = (...args: any[]) => any,\n Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = {\n bundleName?: string;\n name: Name;\n transaction: TxType;\n check: GatedTransactionCheck<CheckMethod>;\n cacheable?: boolean;\n uniqueIdKeys?: Record<string, string | number | boolean>;\n dependencies?: Dependencies;\n};\n\nexport type ProcessedGatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckMethod extends (...args: any[]) => any = (...args: any[]) => any,\n> = GatedTransaction<Name, TxType, CheckMethod> & {\n result: GatedTransactionResult<GatedTransaction<Name, TxType, CheckMethod>, TxType>;\n};\n\nexport type InferOnChainDataTypeFromGatedTransaction<GatedTx extends GatedTransaction> =\n GatedTx extends GatedTransaction<any, any, infer Check> ? Awaited<ReturnType<Check>> : unknown;\n\nexport enum GatedTransactionStatus {\n NO_OP = 'no_op',\n SUCCESS = 'success',\n TRANSACTION_FAILED = 'transaction_failed',\n FINAL_CHECK_FAILED = 'final_check_failed',\n DEPENDENCY_FAILED = 'dependency_failed',\n DENIED = 'denied',\n}\n\ntype NoOpGatedTransaction = {\n status: GatedTransactionStatus.NO_OP;\n};\n\ntype SuccessfulGatedTransaction<ProcessedTx extends Transaction> = {\n status: GatedTransactionStatus.SUCCESS;\n submittedTransaction: ProcessedTx;\n};\n\ntype TxFailedGatedTransaction = {\n status: GatedTransactionStatus.TRANSACTION_FAILED;\n transactionError: any;\n};\n\ntype CheckFailedGatedTransaction<ProcessedTx extends Transaction, State> = {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED;\n submittedTransaction: ProcessedTx;\n finalOnChainState: State;\n};\n\ntype DependencyFailedGatedTransaction = {\n status: GatedTransactionStatus.DEPENDENCY_FAILED;\n};\n\ntype DeniedGatedTransaction = {\n status: GatedTransactionStatus.DENIED;\n};\n\nexport type GatedTransactionResult<\n GatedTx extends GatedTransaction = GatedTransaction,\n ProcessedTxType extends Transaction = Transaction,\n> =\n | NoOpGatedTransaction\n | SuccessfulGatedTransaction<ProcessedTxType>\n | TxFailedGatedTransaction\n | CheckFailedGatedTransaction<\n ProcessedTxType,\n InferOnChainDataTypeFromGatedTransaction<GatedTx>\n >\n | DependencyFailedGatedTransaction\n | DeniedGatedTransaction;\n\nexport const gatedTransactionCacheSchema = z.object({\n getCachedTxCheckData: functionSchema({\n input: z.tuple([z.any()]),\n output: z.promise(z.any()),\n }) as z.ZodType<\n <GatedTx extends GatedTransaction>(\n gtx: GatedTx,\n ) => Promise<InferOnChainDataTypeFromGatedTransaction<GatedTx> | undefined>\n >,\n cacheSuccessfulTxCheckData: functionSchema({\n input: z.tuple([z.any(), z.any()]),\n output: z.promise(z.any()),\n }) as z.ZodType<\n <GatedTx extends GatedTransaction>(\n gtx: GatedTx,\n data: InferOnChainDataTypeFromGatedTransaction<GatedTx>,\n ) => Promise<void>\n >,\n});\n\nexport type IGatedTransactionCache = z.infer<typeof gatedTransactionCacheSchema>;\n\n/**\n * name-chain-uniqueIdKeys\n *\n * E.g., setDelegate-ethereum-oAppAddress:0xMY_OAPP\n */\nexport type GatedTransactionId = `${string}-${string}-${string}`;\n\nexport type UserInteractionCallbacks = {\n confirmationCallback?: (gtx: GatedTransaction) => Promise<boolean>;\n onResultCallback?: (result: GatedTransaction & { result: GatedTransactionResult }) => void;\n};\n"]}
|
package/dist/XYULD3ZM.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/resolver.ts"],"names":["checkGatedTransaction","__name","registry","gatedTransaction","cachedCheckResult","processedTransaction","onChainData","undefined","params","check","callByPointer","functionPointer","expectationMet","expectedResult","operator","isEqual","comparisonValue","Error","resolveGatedTransaction","activityRegistry","gatedTx","isTransactionSuccessful","processTx","confirmationCallback","fn","cache","dependencyIds","dependencies","map","tx","getIdForGatedTransaction","dependenciesAreAllProcessed","every","id","condition","dependenciesWereSuccessful","result","status","GatedTransactionStatus","DEPENDENCY_FAILED","initialCheckResult","getCachedTxCheckData","cacheSuccessfulTxCheckData","NO_OP","confirmation","DENIED","processed","transaction","finalCheckResult","SUCCESS","submittedTransaction","stringify","o","JSON","_","v","toString","console","error","name","FINAL_CHECK_FAILED","finalOnChainState","e","TRANSACTION_FAILED","transactionError","resolveGatedTransactions","gatedTxes","userInteractionCallbacks","allInternalIds","allDeps","flatMap","allExternalDeps","filter","includes","results","Object","fromEntries","Promise","all","checkResult","gtxId","txFunctions","res","resId","onResultCallback","func","resolveSequencedGatedTransactions","seq","push"],"mappings":"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","file":"XYULD3ZM.cjs","sourcesContent":["import isEqual from 'lodash.isequal';\n\nimport type { ActivityRegistry } from '@layerzerolabs/common-activities';\nimport type { Transaction } from '@layerzerolabs/common-chain-model';\nimport type { WorkflowFunctions } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n GatedTransaction,\n GatedTransactionId,\n GatedTransactionResult,\n IGatedTransactionCache,\n InferOnChainDataTypeFromGatedTransaction,\n UserInteractionCallbacks,\n} from './types';\nimport { GatedTransactionStatus } from './types';\n\ntype OnChainCheckResult<DataType = any> = {\n expectationMet: boolean;\n onChainData: DataType;\n};\n\nconst checkGatedTransaction = async <GatedTx extends GatedTransaction>({\n registry,\n gatedTransaction,\n cachedCheckResult,\n processedTransaction,\n}: {\n registry: ActivityRegistry;\n gatedTransaction: GatedTx;\n cachedCheckResult?: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n processedTransaction?: any;\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 (processedTransaction !== undefined) {\n params = [...gatedTransaction.check.params, processedTransaction];\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 resolveGatedTransaction = async <\n TxType extends Transaction,\n ProcessedTxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<ProcessedTxType>,\n>({\n activityRegistry,\n gatedTx,\n isTransactionSuccessful,\n processTx,\n confirmationCallback,\n fn,\n cache,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTx: GatedTx;\n processTx: ProcessTx;\n isTransactionSuccessful: (gtxId: GatedTransactionId) => boolean | undefined;\n confirmationCallback: NonNullable<UserInteractionCallbacks['confirmationCallback']>;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n}): Promise<GatedTx & { result: GatedTransactionResult<GatedTx, ProcessedTxType> }> => {\n const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => getIdForGatedTransaction(tx));\n\n const dependenciesAreAllProcessed = () =>\n dependencyIds.every((id) => isTransactionSuccessful(id) != null);\n\n await fn.condition(dependenciesAreAllProcessed);\n\n //check that the dependencies succeeded\n const dependenciesWereSuccessful = dependencyIds.every((id) => isTransactionSuccessful(id));\n\n if (!dependenciesWereSuccessful) {\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.DEPENDENCY_FAILED,\n },\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 ...gatedTx,\n result: {\n status: GatedTransactionStatus.NO_OP,\n },\n };\n }\n\n //get confirmation before sending\n const confirmation = await confirmationCallback(gatedTx);\n if (!confirmation) {\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.DENIED,\n },\n };\n }\n\n //send the tx\n try {\n const processed = await processTx(gatedTx.transaction);\n const finalCheckResult = await checkGatedTransaction({\n registry: activityRegistry,\n gatedTransaction: gatedTx,\n processedTransaction: processed,\n });\n\n await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);\n\n if (finalCheckResult.expectationMet) {\n //sent and successful\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.SUCCESS,\n submittedTransaction: processed,\n },\n };\n } else {\n //sent and unsuccessful\n const stringify = (o: any) =>\n JSON.stringify(o, (_, v) => (typeof v === 'bigint' ? v.toString() : v), 2);\n console.error(\n `Gated transaction ${gatedTx.name} final check failed:\\nExpected result ${stringify(gatedTx.check.expectedResult.comparisonValue)}, but got:\\n${stringify(finalCheckResult.onChainData)}`,\n );\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED,\n submittedTransaction: processed,\n finalOnChainState: finalCheckResult.onChainData,\n },\n };\n }\n } catch (e) {\n //sent and failed\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.TRANSACTION_FAILED,\n transactionError: e,\n },\n };\n }\n};\n\nexport const resolveGatedTransactions = async <\n TxType extends Transaction,\n ProcessedTxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<ProcessedTxType>,\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<(GatedTx & { result: GatedTransactionResult })[]> => {\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 //map id -> was successful\n const results: Record<GatedTransactionId, boolean> = 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 [getIdForGatedTransaction(tx), checkResult.expectationMet];\n }),\n ),\n );\n\n const isTransactionSuccessful = (gtxId: GatedTransactionId) => results[gtxId];\n\n const txFunctions = gatedTxes.map((tx) => async () => {\n const res = await resolveGatedTransaction<TxType, ProcessedTxType, GatedTx, ProcessTx>({\n gatedTx: tx,\n activityRegistry,\n isTransactionSuccessful,\n processTx,\n confirmationCallback:\n userInteractionCallbacks?.confirmationCallback ?? (async () => true),\n fn,\n cache,\n });\n\n const resId = getIdForGatedTransaction(res);\n results[resId] = [GatedTransactionStatus.SUCCESS, GatedTransactionStatus.NO_OP].includes(\n res.result.status,\n );\n\n userInteractionCallbacks?.onResultCallback?.(res);\n return res;\n });\n\n return await Promise.all(txFunctions.map((func) => func()));\n};\n\nexport const resolveSequencedGatedTransactions = async <\n TxType extends Transaction,\n ProcessedTxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<ProcessedTxType>,\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, ProcessedTxType, 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"]}
|