@layerzerolabs/gated-transaction 0.0.33 → 0.0.34

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.
@@ -10,45 +10,45 @@
10
10
  CLI Cleaning output folder
11
11
  CJS Build start
12
12
  ESM Build start
13
+ CJS dist/gatedTransactionSignalLock.cjs 697.00 B
14
+ CJS dist/index.cjs 2.49 KB
15
+ CJS dist/BNWOHVIN.cjs 3.70 KB
16
+ CJS dist/3SOQJCDG.cjs 1.08 KB
17
+ CJS dist/resolver.cjs 546.00 B
18
+ CJS dist/types.cjs 1.10 KB
19
+ CJS dist/TYY6L3E5.cjs 8.88 KB
20
+ CJS dist/YJF4D23A.cjs 245.00 B
21
+ CJS dist/4ND4S3IS.cjs 3.31 KB
22
+ CJS dist/gatedTx.cjs 656.00 B
23
+ CJS dist/gatedTransactionSignalLock.cjs.map 91.00 B
24
+ CJS dist/index.cjs.map 70.00 B
25
+ CJS dist/BNWOHVIN.cjs.map 8.61 KB
26
+ CJS dist/3SOQJCDG.cjs.map 3.78 KB
27
+ CJS dist/resolver.cjs.map 73.00 B
28
+ CJS dist/types.cjs.map 70.00 B
29
+ CJS dist/YJF4D23A.cjs.map 73.00 B
30
+ CJS dist/4ND4S3IS.cjs.map 12.45 KB
31
+ CJS dist/TYY6L3E5.cjs.map 22.60 KB
32
+ CJS dist/gatedTx.cjs.map 72.00 B
33
+ CJS ⚡️ Build success in 194ms
34
+ ESM dist/gatedTx.js 218.00 B
13
35
  ESM dist/gatedTransactionSignalLock.js 270.00 B
14
36
  ESM dist/index.js 624.00 B
15
- ESM dist/gatedTx.js 218.00 B
16
- ESM dist/TLPNG7S6.js 2.17 KB
37
+ ESM dist/GP6ZA65F.js 3.47 KB
17
38
  ESM dist/resolver.js 238.00 B
18
39
  ESM dist/BCFOKBQQ.js 8.34 KB
19
- ESM dist/types.js 295.00 B
20
40
  ESM dist/WWHK47IY.js 935.00 B
41
+ ESM dist/types.js 295.00 B
21
42
  ESM dist/PGJAXI5M.js 2.40 KB
22
43
  ESM dist/VUOMXK5T.js 222.00 B
23
- ESM dist/index.js.map 69.00 B
24
- ESM dist/gatedTransactionSignalLock.js.map 90.00 B
25
44
  ESM dist/gatedTx.js.map 71.00 B
26
- ESM dist/TLPNG7S6.js.map 5.44 KB
45
+ ESM dist/gatedTransactionSignalLock.js.map 90.00 B
46
+ ESM dist/index.js.map 69.00 B
27
47
  ESM dist/resolver.js.map 72.00 B
48
+ ESM dist/GP6ZA65F.js.map 8.58 KB
28
49
  ESM dist/WWHK47IY.js.map 3.78 KB
29
50
  ESM dist/types.js.map 69.00 B
30
- ESM dist/PGJAXI5M.js.map 12.39 KB
31
51
  ESM dist/BCFOKBQQ.js.map 22.57 KB
52
+ ESM dist/PGJAXI5M.js.map 12.39 KB
32
53
  ESM dist/VUOMXK5T.js.map 72.00 B
33
- ESM ⚡️ Build success in 291ms
34
- CJS dist/index.cjs 2.49 KB
35
- CJS dist/gatedTransactionSignalLock.cjs 701.00 B
36
- CJS dist/gatedTx.cjs 656.00 B
37
- CJS dist/resolver.cjs 546.00 B
38
- CJS dist/422FLJZW.cjs 2.36 KB
39
- CJS dist/YJF4D23A.cjs 245.00 B
40
- CJS dist/4ND4S3IS.cjs 3.31 KB
41
- CJS dist/3SOQJCDG.cjs 1.08 KB
42
- CJS dist/TYY6L3E5.cjs 8.88 KB
43
- CJS dist/types.cjs 1.10 KB
44
- CJS dist/index.cjs.map 70.00 B
45
- CJS dist/gatedTransactionSignalLock.cjs.map 91.00 B
46
- CJS dist/gatedTx.cjs.map 72.00 B
47
- CJS dist/422FLJZW.cjs.map 5.46 KB
48
- CJS dist/4ND4S3IS.cjs.map 12.45 KB
49
- CJS dist/YJF4D23A.cjs.map 73.00 B
50
- CJS dist/resolver.cjs.map 73.00 B
51
- CJS dist/3SOQJCDG.cjs.map 3.78 KB
52
- CJS dist/TYY6L3E5.cjs.map 22.60 KB
53
- CJS dist/types.cjs.map 70.00 B
54
- CJS ⚡️ Build success in 293ms
54
+ ESM ⚡️ Build success in 195ms
@@ -5,10 +5,10 @@
5
5
 
6
6
   RUN  v3.2.3 /home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction
7
7
 
8
- ✓ test/resolver.test.ts (10 tests) 420ms
8
+ ✓ test/resolver.test.ts (10 tests) 430ms
9
9
 
10
10
   Test Files  1 passed (1)
11
11
   Tests  10 passed (10)
12
-  Start at  06:18:37
13
-  Duration  1.27s (transform 171ms, setup 0ms, collect 241ms, tests 420ms, environment 0ms, prepare 209ms)
12
+  Start at  00:22:36
13
+  Duration  868ms (transform 107ms, setup 0ms, collect 153ms, tests 430ms, environment 0ms, prepare 112ms)
14
14
 
@@ -0,0 +1,102 @@
1
+ 'use strict';
2
+
3
+ var _3SOQJCDG_cjs = require('./3SOQJCDG.cjs');
4
+ var YJF4D23A_cjs = require('./YJF4D23A.cjs');
5
+ var commonWorkflow = require('@layerzerolabs/common-workflow');
6
+
7
+ var gatedTransactionGoSignal = commonWorkflow.defineSignal("GatedTransactionGo");
8
+ var gatedTransactionGoSignalInternal = commonWorkflow.defineSignal("GatedTransactionGoInternal");
9
+ var queryGatedTransactions = commonWorkflow.defineQuery("GatedTransactionQuery");
10
+ var useGatedTransactionSignalLock = /* @__PURE__ */ YJF4D23A_cjs.__name((fn) => {
11
+ const passthroughWorkflows = [];
12
+ const addChild = /* @__PURE__ */ YJF4D23A_cjs.__name(async (wf) => {
13
+ passthroughWorkflows.push(wf);
14
+ await wf.signal(gatedTransactionGoSignal, [
15
+ {
16
+ ids: [
17
+ ...approvedInfo.ids
18
+ ],
19
+ bundleNames: [
20
+ ...approvedInfo.bundleNames
21
+ ]
22
+ }
23
+ ]);
24
+ }, "addChild");
25
+ const approvedInfo = {
26
+ ids: /* @__PURE__ */ new Set(),
27
+ bundleNames: /* @__PURE__ */ new Set()
28
+ };
29
+ const pendingTransactions = {};
30
+ const sentTransactions = {};
31
+ const completedTransactions = {};
32
+ fn.setHandler(queryGatedTransactions, () => {
33
+ const passthroughWfIds = passthroughWorkflows.map((wf) => wf.workflowId);
34
+ return {
35
+ pendingTransactions: Object.values(pendingTransactions),
36
+ sentTransactions: Object.values(sentTransactions),
37
+ completedTransactions: Object.values(completedTransactions),
38
+ passthroughWorkflowIds: passthroughWfIds ?? []
39
+ };
40
+ });
41
+ const gatedTransactionGoInternal = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ ids, bundleNames, uniqueGoSignalId }) => {
42
+ if (ids.length === 0 && bundleNames.length === 0) {
43
+ return;
44
+ }
45
+ approvedInfo.ids = /* @__PURE__ */ new Set([
46
+ ...approvedInfo.ids,
47
+ ...ids
48
+ ]);
49
+ approvedInfo.bundleNames = /* @__PURE__ */ new Set([
50
+ ...approvedInfo.bundleNames,
51
+ ...bundleNames
52
+ ]);
53
+ await Promise.allSettled(passthroughWorkflows.map((wf) => {
54
+ return wf.signal(gatedTransactionGoSignalInternal, [
55
+ {
56
+ ids,
57
+ bundleNames,
58
+ uniqueGoSignalId
59
+ }
60
+ ]);
61
+ }));
62
+ }, "gatedTransactionGoInternal");
63
+ fn.setHandler(gatedTransactionGoSignalInternal, gatedTransactionGoInternal);
64
+ fn.setHandler(gatedTransactionGoSignal, async ({ ids, bundleNames }) => {
65
+ const uniqueGoSignalId = "TO_BE_IMPLEMENTED_WHEN_ADDING_THE_BUNDLER";
66
+ const newIds = ids.filter((id) => !approvedInfo.ids.has(id));
67
+ const newBundleNames = bundleNames.filter((bundleName) => !approvedInfo.bundleNames.has(bundleName));
68
+ await gatedTransactionGoInternal({
69
+ ids: newIds,
70
+ bundleNames: newBundleNames,
71
+ uniqueGoSignalId
72
+ });
73
+ });
74
+ const confirmationCallback = /* @__PURE__ */ YJF4D23A_cjs.__name(async (tx) => {
75
+ const id = _3SOQJCDG_cjs.getIdForGatedTransaction(tx);
76
+ pendingTransactions[id] = tx;
77
+ await fn.condition(() => {
78
+ return approvedInfo.ids.has(id) || !!tx.bundleName && approvedInfo.bundleNames.has(tx.bundleName);
79
+ });
80
+ sentTransactions[id] = tx;
81
+ delete pendingTransactions[id];
82
+ return true;
83
+ }, "confirmationCallback");
84
+ const onResultCallback = /* @__PURE__ */ YJF4D23A_cjs.__name((result) => {
85
+ const id = _3SOQJCDG_cjs.getIdForGatedTransaction(result);
86
+ completedTransactions[id] = result;
87
+ delete sentTransactions[id];
88
+ }, "onResultCallback");
89
+ return {
90
+ userInteractionCallbacks: {
91
+ confirmationCallback,
92
+ onResultCallback
93
+ },
94
+ addChild
95
+ };
96
+ }, "useGatedTransactionSignalLock");
97
+
98
+ exports.gatedTransactionGoSignal = gatedTransactionGoSignal;
99
+ exports.queryGatedTransactions = queryGatedTransactions;
100
+ exports.useGatedTransactionSignalLock = useGatedTransactionSignalLock;
101
+ //# sourceMappingURL=BNWOHVIN.cjs.map
102
+ //# sourceMappingURL=BNWOHVIN.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/gatedTransactionSignalLock.ts"],"names":["gatedTransactionGoSignal","defineSignal","gatedTransactionGoSignalInternal","queryGatedTransactions","defineQuery","useGatedTransactionSignalLock","fn","passthroughWorkflows","addChild","wf","push","signal","ids","approvedInfo","bundleNames","Set","pendingTransactions","sentTransactions","completedTransactions","setHandler","passthroughWfIds","map","workflowId","Object","values","passthroughWorkflowIds","gatedTransactionGoInternal","__name","uniqueGoSignalId","length","Promise","allSettled","newIds","filter","id","has","newBundleNames","bundleName","confirmationCallback","tx","getIdForGatedTransaction","condition","onResultCallback","result","userInteractionCallbacks"],"mappings":"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","file":"BNWOHVIN.cjs","sourcesContent":["import type { WorkflowFunctions, WorkflowHandle } from '@layerzerolabs/common-workflow';\nimport { defineQuery, defineSignal } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n GatedTransaction,\n GatedTransactionId,\n ResolvedGatedTransaction,\n UserInteractionCallbacks,\n} from './types';\n\nexport type QueryGatedTransactionsResult = {\n pendingTransactions: GatedTransaction[];\n sentTransactions: GatedTransaction[];\n completedTransactions: ResolvedGatedTransaction[];\n passthroughWorkflowIds: string[];\n};\n\nexport const gatedTransactionGoSignal = defineSignal<\n [\n arg: {\n ids: GatedTransactionId[];\n bundleNames: string[];\n },\n ]\n>('GatedTransactionGo');\n\nconst gatedTransactionGoSignalInternal = defineSignal<\n [\n arg: {\n ids: GatedTransactionId[];\n bundleNames: string[];\n uniqueGoSignalId: string | undefined;\n },\n ]\n>('GatedTransactionGoInternal');\n\nexport const queryGatedTransactions =\n defineQuery<QueryGatedTransactionsResult>('GatedTransactionQuery');\n\nexport const useGatedTransactionSignalLock = (\n fn: WorkflowFunctions,\n): {\n userInteractionCallbacks: UserInteractionCallbacks;\n addChild: (wf: WorkflowHandle<any>) => Promise<void>;\n} => {\n const passthroughWorkflows: WorkflowHandle<any>[] = [];\n const addChild = async (wf: WorkflowHandle<any>) => {\n passthroughWorkflows.push(wf);\n await wf.signal(gatedTransactionGoSignal, [\n { ids: [...approvedInfo.ids], bundleNames: [...approvedInfo.bundleNames] },\n ]);\n };\n const approvedInfo: {\n ids: Set<GatedTransactionId>;\n bundleNames: Set<string>;\n } = {\n ids: new Set(),\n bundleNames: new Set(),\n };\n\n const pendingTransactions: Record<GatedTransactionId, GatedTransaction> = {};\n const sentTransactions: Record<GatedTransactionId, GatedTransaction> = {};\n const completedTransactions: Record<GatedTransactionId, ResolvedGatedTransaction> = {};\n\n fn.setHandler(queryGatedTransactions, () => {\n const passthroughWfIds = passthroughWorkflows.map((wf) => wf.workflowId);\n return {\n pendingTransactions: Object.values(pendingTransactions),\n sentTransactions: Object.values(sentTransactions),\n completedTransactions: Object.values(completedTransactions),\n passthroughWorkflowIds: passthroughWfIds ?? [],\n };\n });\n\n const gatedTransactionGoInternal = async ({\n ids,\n bundleNames,\n uniqueGoSignalId,\n }: {\n ids: GatedTransactionId[];\n bundleNames: string[];\n uniqueGoSignalId: string | undefined;\n }): Promise<void> => {\n if (ids.length === 0 && bundleNames.length === 0) {\n return;\n }\n\n approvedInfo.ids = new Set([...approvedInfo.ids, ...ids]);\n approvedInfo.bundleNames = new Set([...approvedInfo.bundleNames, ...bundleNames]);\n await Promise.allSettled(\n passthroughWorkflows.map((wf) => {\n return wf.signal(gatedTransactionGoSignalInternal, [\n { ids, bundleNames, uniqueGoSignalId },\n ]);\n }),\n );\n };\n fn.setHandler(gatedTransactionGoSignalInternal, gatedTransactionGoInternal);\n\n fn.setHandler(gatedTransactionGoSignal, async ({ ids, bundleNames }) => {\n const uniqueGoSignalId = 'TO_BE_IMPLEMENTED_WHEN_ADDING_THE_BUNDLER';\n // Only keep new transaction ids and bundle names\n const newIds = ids.filter((id) => !approvedInfo.ids.has(id));\n const newBundleNames = bundleNames.filter(\n (bundleName) => !approvedInfo.bundleNames.has(bundleName),\n );\n\n await gatedTransactionGoInternal({\n ids: newIds,\n bundleNames: newBundleNames,\n uniqueGoSignalId,\n });\n });\n\n const confirmationCallback: UserInteractionCallbacks['confirmationCallback'] = async (tx) => {\n const id = getIdForGatedTransaction(tx);\n pendingTransactions[id] = tx;\n\n await fn.condition(() => {\n return (\n approvedInfo.ids.has(id) ||\n (!!tx.bundleName && approvedInfo.bundleNames.has(tx.bundleName))\n );\n });\n\n sentTransactions[id] = tx;\n delete pendingTransactions[id];\n return true;\n };\n\n const onResultCallback: UserInteractionCallbacks['onResultCallback'] = (result) => {\n const id = getIdForGatedTransaction(result);\n completedTransactions[id] = result;\n delete sentTransactions[id];\n };\n\n return { userInteractionCallbacks: { confirmationCallback, onResultCallback }, addChild };\n};\n"]}
@@ -0,0 +1,98 @@
1
+ import { getIdForGatedTransaction } from './WWHK47IY.js';
2
+ import { __name } from './VUOMXK5T.js';
3
+ import { defineSignal, defineQuery } from '@layerzerolabs/common-workflow';
4
+
5
+ var gatedTransactionGoSignal = defineSignal("GatedTransactionGo");
6
+ var gatedTransactionGoSignalInternal = defineSignal("GatedTransactionGoInternal");
7
+ var queryGatedTransactions = defineQuery("GatedTransactionQuery");
8
+ var useGatedTransactionSignalLock = /* @__PURE__ */ __name((fn) => {
9
+ const passthroughWorkflows = [];
10
+ const addChild = /* @__PURE__ */ __name(async (wf) => {
11
+ passthroughWorkflows.push(wf);
12
+ await wf.signal(gatedTransactionGoSignal, [
13
+ {
14
+ ids: [
15
+ ...approvedInfo.ids
16
+ ],
17
+ bundleNames: [
18
+ ...approvedInfo.bundleNames
19
+ ]
20
+ }
21
+ ]);
22
+ }, "addChild");
23
+ const approvedInfo = {
24
+ ids: /* @__PURE__ */ new Set(),
25
+ bundleNames: /* @__PURE__ */ new Set()
26
+ };
27
+ const pendingTransactions = {};
28
+ const sentTransactions = {};
29
+ const completedTransactions = {};
30
+ fn.setHandler(queryGatedTransactions, () => {
31
+ const passthroughWfIds = passthroughWorkflows.map((wf) => wf.workflowId);
32
+ return {
33
+ pendingTransactions: Object.values(pendingTransactions),
34
+ sentTransactions: Object.values(sentTransactions),
35
+ completedTransactions: Object.values(completedTransactions),
36
+ passthroughWorkflowIds: passthroughWfIds ?? []
37
+ };
38
+ });
39
+ const gatedTransactionGoInternal = /* @__PURE__ */ __name(async ({ ids, bundleNames, uniqueGoSignalId }) => {
40
+ if (ids.length === 0 && bundleNames.length === 0) {
41
+ return;
42
+ }
43
+ approvedInfo.ids = /* @__PURE__ */ new Set([
44
+ ...approvedInfo.ids,
45
+ ...ids
46
+ ]);
47
+ approvedInfo.bundleNames = /* @__PURE__ */ new Set([
48
+ ...approvedInfo.bundleNames,
49
+ ...bundleNames
50
+ ]);
51
+ await Promise.allSettled(passthroughWorkflows.map((wf) => {
52
+ return wf.signal(gatedTransactionGoSignalInternal, [
53
+ {
54
+ ids,
55
+ bundleNames,
56
+ uniqueGoSignalId
57
+ }
58
+ ]);
59
+ }));
60
+ }, "gatedTransactionGoInternal");
61
+ fn.setHandler(gatedTransactionGoSignalInternal, gatedTransactionGoInternal);
62
+ fn.setHandler(gatedTransactionGoSignal, async ({ ids, bundleNames }) => {
63
+ const uniqueGoSignalId = "TO_BE_IMPLEMENTED_WHEN_ADDING_THE_BUNDLER";
64
+ const newIds = ids.filter((id) => !approvedInfo.ids.has(id));
65
+ const newBundleNames = bundleNames.filter((bundleName) => !approvedInfo.bundleNames.has(bundleName));
66
+ await gatedTransactionGoInternal({
67
+ ids: newIds,
68
+ bundleNames: newBundleNames,
69
+ uniqueGoSignalId
70
+ });
71
+ });
72
+ const confirmationCallback = /* @__PURE__ */ __name(async (tx) => {
73
+ const id = getIdForGatedTransaction(tx);
74
+ pendingTransactions[id] = tx;
75
+ await fn.condition(() => {
76
+ return approvedInfo.ids.has(id) || !!tx.bundleName && approvedInfo.bundleNames.has(tx.bundleName);
77
+ });
78
+ sentTransactions[id] = tx;
79
+ delete pendingTransactions[id];
80
+ return true;
81
+ }, "confirmationCallback");
82
+ const onResultCallback = /* @__PURE__ */ __name((result) => {
83
+ const id = getIdForGatedTransaction(result);
84
+ completedTransactions[id] = result;
85
+ delete sentTransactions[id];
86
+ }, "onResultCallback");
87
+ return {
88
+ userInteractionCallbacks: {
89
+ confirmationCallback,
90
+ onResultCallback
91
+ },
92
+ addChild
93
+ };
94
+ }, "useGatedTransactionSignalLock");
95
+
96
+ export { gatedTransactionGoSignal, queryGatedTransactions, useGatedTransactionSignalLock };
97
+ //# sourceMappingURL=GP6ZA65F.js.map
98
+ //# sourceMappingURL=GP6ZA65F.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/gatedTransactionSignalLock.ts"],"names":["gatedTransactionGoSignal","defineSignal","gatedTransactionGoSignalInternal","queryGatedTransactions","defineQuery","useGatedTransactionSignalLock","fn","passthroughWorkflows","addChild","wf","push","signal","ids","approvedInfo","bundleNames","Set","pendingTransactions","sentTransactions","completedTransactions","setHandler","passthroughWfIds","map","workflowId","Object","values","passthroughWorkflowIds","gatedTransactionGoInternal","uniqueGoSignalId","length","Promise","allSettled","newIds","filter","id","has","newBundleNames","bundleName","confirmationCallback","tx","getIdForGatedTransaction","condition","onResultCallback","result","userInteractionCallbacks"],"mappings":"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","file":"GP6ZA65F.js","sourcesContent":["import type { WorkflowFunctions, WorkflowHandle } from '@layerzerolabs/common-workflow';\nimport { defineQuery, defineSignal } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n GatedTransaction,\n GatedTransactionId,\n ResolvedGatedTransaction,\n UserInteractionCallbacks,\n} from './types';\n\nexport type QueryGatedTransactionsResult = {\n pendingTransactions: GatedTransaction[];\n sentTransactions: GatedTransaction[];\n completedTransactions: ResolvedGatedTransaction[];\n passthroughWorkflowIds: string[];\n};\n\nexport const gatedTransactionGoSignal = defineSignal<\n [\n arg: {\n ids: GatedTransactionId[];\n bundleNames: string[];\n },\n ]\n>('GatedTransactionGo');\n\nconst gatedTransactionGoSignalInternal = defineSignal<\n [\n arg: {\n ids: GatedTransactionId[];\n bundleNames: string[];\n uniqueGoSignalId: string | undefined;\n },\n ]\n>('GatedTransactionGoInternal');\n\nexport const queryGatedTransactions =\n defineQuery<QueryGatedTransactionsResult>('GatedTransactionQuery');\n\nexport const useGatedTransactionSignalLock = (\n fn: WorkflowFunctions,\n): {\n userInteractionCallbacks: UserInteractionCallbacks;\n addChild: (wf: WorkflowHandle<any>) => Promise<void>;\n} => {\n const passthroughWorkflows: WorkflowHandle<any>[] = [];\n const addChild = async (wf: WorkflowHandle<any>) => {\n passthroughWorkflows.push(wf);\n await wf.signal(gatedTransactionGoSignal, [\n { ids: [...approvedInfo.ids], bundleNames: [...approvedInfo.bundleNames] },\n ]);\n };\n const approvedInfo: {\n ids: Set<GatedTransactionId>;\n bundleNames: Set<string>;\n } = {\n ids: new Set(),\n bundleNames: new Set(),\n };\n\n const pendingTransactions: Record<GatedTransactionId, GatedTransaction> = {};\n const sentTransactions: Record<GatedTransactionId, GatedTransaction> = {};\n const completedTransactions: Record<GatedTransactionId, ResolvedGatedTransaction> = {};\n\n fn.setHandler(queryGatedTransactions, () => {\n const passthroughWfIds = passthroughWorkflows.map((wf) => wf.workflowId);\n return {\n pendingTransactions: Object.values(pendingTransactions),\n sentTransactions: Object.values(sentTransactions),\n completedTransactions: Object.values(completedTransactions),\n passthroughWorkflowIds: passthroughWfIds ?? [],\n };\n });\n\n const gatedTransactionGoInternal = async ({\n ids,\n bundleNames,\n uniqueGoSignalId,\n }: {\n ids: GatedTransactionId[];\n bundleNames: string[];\n uniqueGoSignalId: string | undefined;\n }): Promise<void> => {\n if (ids.length === 0 && bundleNames.length === 0) {\n return;\n }\n\n approvedInfo.ids = new Set([...approvedInfo.ids, ...ids]);\n approvedInfo.bundleNames = new Set([...approvedInfo.bundleNames, ...bundleNames]);\n await Promise.allSettled(\n passthroughWorkflows.map((wf) => {\n return wf.signal(gatedTransactionGoSignalInternal, [\n { ids, bundleNames, uniqueGoSignalId },\n ]);\n }),\n );\n };\n fn.setHandler(gatedTransactionGoSignalInternal, gatedTransactionGoInternal);\n\n fn.setHandler(gatedTransactionGoSignal, async ({ ids, bundleNames }) => {\n const uniqueGoSignalId = 'TO_BE_IMPLEMENTED_WHEN_ADDING_THE_BUNDLER';\n // Only keep new transaction ids and bundle names\n const newIds = ids.filter((id) => !approvedInfo.ids.has(id));\n const newBundleNames = bundleNames.filter(\n (bundleName) => !approvedInfo.bundleNames.has(bundleName),\n );\n\n await gatedTransactionGoInternal({\n ids: newIds,\n bundleNames: newBundleNames,\n uniqueGoSignalId,\n });\n });\n\n const confirmationCallback: UserInteractionCallbacks['confirmationCallback'] = async (tx) => {\n const id = getIdForGatedTransaction(tx);\n pendingTransactions[id] = tx;\n\n await fn.condition(() => {\n return (\n approvedInfo.ids.has(id) ||\n (!!tx.bundleName && approvedInfo.bundleNames.has(tx.bundleName))\n );\n });\n\n sentTransactions[id] = tx;\n delete pendingTransactions[id];\n return true;\n };\n\n const onResultCallback: UserInteractionCallbacks['onResultCallback'] = (result) => {\n const id = getIdForGatedTransaction(result);\n completedTransactions[id] = result;\n delete sentTransactions[id];\n };\n\n return { userInteractionCallbacks: { confirmationCallback, onResultCallback }, addChild };\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var _422FLJZW_cjs = require('./422FLJZW.cjs');
3
+ var BNWOHVIN_cjs = require('./BNWOHVIN.cjs');
4
4
  require('./3SOQJCDG.cjs');
5
5
  require('./YJF4D23A.cjs');
6
6
 
@@ -8,15 +8,15 @@ require('./YJF4D23A.cjs');
8
8
 
9
9
  Object.defineProperty(exports, "gatedTransactionGoSignal", {
10
10
  enumerable: true,
11
- get: function () { return _422FLJZW_cjs.gatedTransactionGoSignal; }
11
+ get: function () { return BNWOHVIN_cjs.gatedTransactionGoSignal; }
12
12
  });
13
13
  Object.defineProperty(exports, "queryGatedTransactions", {
14
14
  enumerable: true,
15
- get: function () { return _422FLJZW_cjs.queryGatedTransactions; }
15
+ get: function () { return BNWOHVIN_cjs.queryGatedTransactions; }
16
16
  });
17
17
  Object.defineProperty(exports, "useGatedTransactionSignalLock", {
18
18
  enumerable: true,
19
- get: function () { return _422FLJZW_cjs.useGatedTransactionSignalLock; }
19
+ get: function () { return BNWOHVIN_cjs.useGatedTransactionSignalLock; }
20
20
  });
21
21
  //# sourceMappingURL=gatedTransactionSignalLock.cjs.map
22
22
  //# sourceMappingURL=gatedTransactionSignalLock.cjs.map
@@ -1,12 +1,18 @@
1
1
  import type { WorkflowFunctions, WorkflowHandle } from '@layerzerolabs/common-workflow';
2
- import type { GatedTransaction, ResolvedGatedTransaction, UserInteractionCallbacks } from './types';
2
+ import type { GatedTransaction, GatedTransactionId, ResolvedGatedTransaction, UserInteractionCallbacks } from './types';
3
3
  export type QueryGatedTransactionsResult = {
4
4
  pendingTransactions: GatedTransaction[];
5
5
  sentTransactions: GatedTransaction[];
6
6
  completedTransactions: ResolvedGatedTransaction[];
7
7
  passthroughWorkflowIds: string[];
8
8
  };
9
- export declare const gatedTransactionGoSignal: import("@layerzerolabs/common-workflow").SignalDefinition<[id: `${string}-${string}-${string}`], string>;
9
+ export declare const gatedTransactionGoSignal: import("@layerzerolabs/common-workflow").SignalDefinition<[arg: {
10
+ ids: GatedTransactionId[];
11
+ bundleNames: string[];
12
+ }], string>;
10
13
  export declare const queryGatedTransactions: import("@layerzerolabs/common-workflow").QueryDefinition<QueryGatedTransactionsResult, [], string>;
11
- export declare const useGatedTransactionSignalLock: (fn: WorkflowFunctions, getPassthrough?: () => WorkflowHandle<any>[]) => UserInteractionCallbacks;
14
+ export declare const useGatedTransactionSignalLock: (fn: WorkflowFunctions) => {
15
+ userInteractionCallbacks: UserInteractionCallbacks;
16
+ addChild: (wf: WorkflowHandle<any>) => Promise<void>;
17
+ };
12
18
  //# sourceMappingURL=gatedTransactionSignalLock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gatedTransactionSignalLock.d.ts","sourceRoot":"","sources":["../src/gatedTransactionSignalLock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAIxF,OAAO,KAAK,EACR,gBAAgB,EAEhB,wBAAwB,EACxB,wBAAwB,EAC3B,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,4BAA4B,GAAG;IACvC,mBAAmB,EAAE,gBAAgB,EAAE,CAAC;IACxC,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,qBAAqB,EAAE,wBAAwB,EAAE,CAAC;IAClD,sBAAsB,EAAE,MAAM,EAAE,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,0GAC2B,CAAC;AACjE,eAAO,MAAM,sBAAsB,oGACmC,CAAC;AAEvE,eAAO,MAAM,6BAA6B,GACtC,IAAI,iBAAiB,EACrB,iBAAiB,MAAM,cAAc,CAAC,GAAG,CAAC,EAAE,KAC7C,wBAoDF,CAAC"}
1
+ {"version":3,"file":"gatedTransactionSignalLock.d.ts","sourceRoot":"","sources":["../src/gatedTransactionSignalLock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAIxF,OAAO,KAAK,EACR,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,EAC3B,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,4BAA4B,GAAG;IACvC,mBAAmB,EAAE,gBAAgB,EAAE,CAAC;IACxC,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,qBAAqB,EAAE,wBAAwB,EAAE,CAAC;IAClD,sBAAsB,EAAE,MAAM,EAAE,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,wBAAwB;SAGpB,kBAAkB,EAAE;iBACZ,MAAM,EAAE;WAGV,CAAC;AAYxB,eAAO,MAAM,sBAAsB,oGACmC,CAAC;AAEvE,eAAO,MAAM,6BAA6B,GACtC,IAAI,iBAAiB,KACtB;IACC,wBAAwB,EAAE,wBAAwB,CAAC;IACnD,QAAQ,EAAE,CAAC,EAAE,EAAE,cAAc,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CA8FxD,CAAC"}
@@ -1,4 +1,4 @@
1
- export { gatedTransactionGoSignal, queryGatedTransactions, useGatedTransactionSignalLock } from './TLPNG7S6.js';
1
+ export { gatedTransactionGoSignal, queryGatedTransactions, useGatedTransactionSignalLock } from './GP6ZA65F.js';
2
2
  import './WWHK47IY.js';
3
3
  import './VUOMXK5T.js';
4
4
  //# sourceMappingURL=gatedTransactionSignalLock.js.map
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var _422FLJZW_cjs = require('./422FLJZW.cjs');
3
+ var BNWOHVIN_cjs = require('./BNWOHVIN.cjs');
4
4
  var TYY6L3E5_cjs = require('./TYY6L3E5.cjs');
5
5
  var _3SOQJCDG_cjs = require('./3SOQJCDG.cjs');
6
6
  var _4ND4S3IS_cjs = require('./4ND4S3IS.cjs');
@@ -10,15 +10,15 @@ require('./YJF4D23A.cjs');
10
10
 
11
11
  Object.defineProperty(exports, "gatedTransactionGoSignal", {
12
12
  enumerable: true,
13
- get: function () { return _422FLJZW_cjs.gatedTransactionGoSignal; }
13
+ get: function () { return BNWOHVIN_cjs.gatedTransactionGoSignal; }
14
14
  });
15
15
  Object.defineProperty(exports, "queryGatedTransactions", {
16
16
  enumerable: true,
17
- get: function () { return _422FLJZW_cjs.queryGatedTransactions; }
17
+ get: function () { return BNWOHVIN_cjs.queryGatedTransactions; }
18
18
  });
19
19
  Object.defineProperty(exports, "useGatedTransactionSignalLock", {
20
20
  enumerable: true,
21
- get: function () { return _422FLJZW_cjs.useGatedTransactionSignalLock; }
21
+ get: function () { return BNWOHVIN_cjs.useGatedTransactionSignalLock; }
22
22
  });
23
23
  Object.defineProperty(exports, "resolveGatedTransactions", {
24
24
  enumerable: true,
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { gatedTransactionGoSignal, queryGatedTransactions, useGatedTransactionSignalLock } from './TLPNG7S6.js';
1
+ export { gatedTransactionGoSignal, queryGatedTransactions, useGatedTransactionSignalLock } from './GP6ZA65F.js';
2
2
  export { resolveGatedTransactions, resolveSequencedGatedTransactions } from './BCFOKBQQ.js';
3
3
  export { constructGatedTransaction, constructGatedTransactionFromPointer, getIdForGatedTransaction } from './WWHK47IY.js';
4
4
  export { GatedTransactionStatus, createTxDependentActivitySchema, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, resolvedGatedTransactionSchema } from './PGJAXI5M.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerzerolabs/gated-transaction",
3
- "version": "0.0.33",
3
+ "version": "0.0.34",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "sideEffects": false,
@@ -17,19 +17,19 @@
17
17
  "dependencies": {
18
18
  "lodash.isequal": "^4.5.0",
19
19
  "zod": "^3.23.8",
20
- "@layerzerolabs/common-activities": "0.0.33",
21
- "@layerzerolabs/common-utils": "0.0.33",
22
- "@layerzerolabs/common-workflow": "0.0.33",
23
- "@layerzerolabs/common-chain-model": "0.0.33",
24
- "@layerzerolabs/zod-utils": "0.0.33"
20
+ "@layerzerolabs/common-activities": "0.0.34",
21
+ "@layerzerolabs/common-utils": "0.0.34",
22
+ "@layerzerolabs/common-chain-model": "0.0.34",
23
+ "@layerzerolabs/common-workflow": "0.0.34",
24
+ "@layerzerolabs/zod-utils": "0.0.34"
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/typescript-configuration": "0.0.33",
31
- "@layerzerolabs/tsup-configuration": "0.0.33",
32
- "@layerzerolabs/typescript-utils": "0.0.33"
30
+ "@layerzerolabs/tsup-configuration": "0.0.34",
31
+ "@layerzerolabs/typescript-configuration": "0.0.34",
32
+ "@layerzerolabs/typescript-utils": "0.0.34"
33
33
  },
34
34
  "publishConfig": {
35
35
  "access": "restricted",
@@ -16,24 +16,55 @@ export type QueryGatedTransactionsResult = {
16
16
  passthroughWorkflowIds: string[];
17
17
  };
18
18
 
19
- export const gatedTransactionGoSignal =
20
- defineSignal<[id: GatedTransactionId]>('GatedTransactionGo');
19
+ export const gatedTransactionGoSignal = defineSignal<
20
+ [
21
+ arg: {
22
+ ids: GatedTransactionId[];
23
+ bundleNames: string[];
24
+ },
25
+ ]
26
+ >('GatedTransactionGo');
27
+
28
+ const gatedTransactionGoSignalInternal = defineSignal<
29
+ [
30
+ arg: {
31
+ ids: GatedTransactionId[];
32
+ bundleNames: string[];
33
+ uniqueGoSignalId: string | undefined;
34
+ },
35
+ ]
36
+ >('GatedTransactionGoInternal');
37
+
21
38
  export const queryGatedTransactions =
22
39
  defineQuery<QueryGatedTransactionsResult>('GatedTransactionQuery');
23
40
 
24
41
  export const useGatedTransactionSignalLock = (
25
42
  fn: WorkflowFunctions,
26
- getPassthrough?: () => WorkflowHandle<any>[],
27
- ): UserInteractionCallbacks => {
28
- const approvedIds: Set<GatedTransactionId> = new Set();
29
- const approvedBundleNames: Set<string> = new Set();
43
+ ): {
44
+ userInteractionCallbacks: UserInteractionCallbacks;
45
+ addChild: (wf: WorkflowHandle<any>) => Promise<void>;
46
+ } => {
47
+ const passthroughWorkflows: WorkflowHandle<any>[] = [];
48
+ const addChild = async (wf: WorkflowHandle<any>) => {
49
+ passthroughWorkflows.push(wf);
50
+ await wf.signal(gatedTransactionGoSignal, [
51
+ { ids: [...approvedInfo.ids], bundleNames: [...approvedInfo.bundleNames] },
52
+ ]);
53
+ };
54
+ const approvedInfo: {
55
+ ids: Set<GatedTransactionId>;
56
+ bundleNames: Set<string>;
57
+ } = {
58
+ ids: new Set(),
59
+ bundleNames: new Set(),
60
+ };
30
61
 
31
62
  const pendingTransactions: Record<GatedTransactionId, GatedTransaction> = {};
32
63
  const sentTransactions: Record<GatedTransactionId, GatedTransaction> = {};
33
64
  const completedTransactions: Record<GatedTransactionId, ResolvedGatedTransaction> = {};
34
65
 
35
66
  fn.setHandler(queryGatedTransactions, () => {
36
- const passthroughWfIds = getPassthrough?.().map?.((handle) => handle.workflowId);
67
+ const passthroughWfIds = passthroughWorkflows.map((wf) => wf.workflowId);
37
68
  return {
38
69
  pendingTransactions: Object.values(pendingTransactions),
39
70
  sentTransactions: Object.values(sentTransactions),
@@ -42,28 +73,57 @@ export const useGatedTransactionSignalLock = (
42
73
  };
43
74
  });
44
75
 
45
- fn.setHandler(gatedTransactionGoSignal, async (id) => {
46
- approvedIds.add(id);
47
- const passthrough = getPassthrough?.();
48
- if (passthrough) {
49
- await Promise.allSettled(
50
- passthrough.map((wf) => {
51
- return wf.signal(gatedTransactionGoSignal, [id]);
52
- }),
53
- );
76
+ const gatedTransactionGoInternal = async ({
77
+ ids,
78
+ bundleNames,
79
+ uniqueGoSignalId,
80
+ }: {
81
+ ids: GatedTransactionId[];
82
+ bundleNames: string[];
83
+ uniqueGoSignalId: string | undefined;
84
+ }): Promise<void> => {
85
+ if (ids.length === 0 && bundleNames.length === 0) {
86
+ return;
54
87
  }
88
+
89
+ approvedInfo.ids = new Set([...approvedInfo.ids, ...ids]);
90
+ approvedInfo.bundleNames = new Set([...approvedInfo.bundleNames, ...bundleNames]);
91
+ await Promise.allSettled(
92
+ passthroughWorkflows.map((wf) => {
93
+ return wf.signal(gatedTransactionGoSignalInternal, [
94
+ { ids, bundleNames, uniqueGoSignalId },
95
+ ]);
96
+ }),
97
+ );
98
+ };
99
+ fn.setHandler(gatedTransactionGoSignalInternal, gatedTransactionGoInternal);
100
+
101
+ fn.setHandler(gatedTransactionGoSignal, async ({ ids, bundleNames }) => {
102
+ const uniqueGoSignalId = 'TO_BE_IMPLEMENTED_WHEN_ADDING_THE_BUNDLER';
103
+ // Only keep new transaction ids and bundle names
104
+ const newIds = ids.filter((id) => !approvedInfo.ids.has(id));
105
+ const newBundleNames = bundleNames.filter(
106
+ (bundleName) => !approvedInfo.bundleNames.has(bundleName),
107
+ );
108
+
109
+ await gatedTransactionGoInternal({
110
+ ids: newIds,
111
+ bundleNames: newBundleNames,
112
+ uniqueGoSignalId,
113
+ });
55
114
  });
56
115
 
57
116
  const confirmationCallback: UserInteractionCallbacks['confirmationCallback'] = async (tx) => {
58
117
  const id = getIdForGatedTransaction(tx);
59
118
  pendingTransactions[id] = tx;
60
119
 
61
- await fn.condition(
62
- () =>
63
- approvedIds.has(id) || (!!tx.bundleName && approvedBundleNames.has(tx.bundleName)),
64
- );
120
+ await fn.condition(() => {
121
+ return (
122
+ approvedInfo.ids.has(id) ||
123
+ (!!tx.bundleName && approvedInfo.bundleNames.has(tx.bundleName))
124
+ );
125
+ });
65
126
 
66
- tx.bundleName && approvedBundleNames.add(tx.bundleName);
67
127
  sentTransactions[id] = tx;
68
128
  delete pendingTransactions[id];
69
129
  return true;
@@ -75,5 +135,5 @@ export const useGatedTransactionSignalLock = (
75
135
  delete sentTransactions[id];
76
136
  };
77
137
 
78
- return { confirmationCallback, onResultCallback };
138
+ return { userInteractionCallbacks: { confirmationCallback, onResultCallback }, addChild };
79
139
  };
package/dist/422FLJZW.cjs DELETED
@@ -1,59 +0,0 @@
1
- 'use strict';
2
-
3
- var _3SOQJCDG_cjs = require('./3SOQJCDG.cjs');
4
- var YJF4D23A_cjs = require('./YJF4D23A.cjs');
5
- var commonWorkflow = require('@layerzerolabs/common-workflow');
6
-
7
- var gatedTransactionGoSignal = commonWorkflow.defineSignal("GatedTransactionGo");
8
- var queryGatedTransactions = commonWorkflow.defineQuery("GatedTransactionQuery");
9
- var useGatedTransactionSignalLock = /* @__PURE__ */ YJF4D23A_cjs.__name((fn, getPassthrough) => {
10
- const approvedIds = /* @__PURE__ */ new Set();
11
- const approvedBundleNames = /* @__PURE__ */ new Set();
12
- const pendingTransactions = {};
13
- const sentTransactions = {};
14
- const completedTransactions = {};
15
- fn.setHandler(queryGatedTransactions, () => {
16
- const passthroughWfIds = getPassthrough?.().map?.((handle) => handle.workflowId);
17
- return {
18
- pendingTransactions: Object.values(pendingTransactions),
19
- sentTransactions: Object.values(sentTransactions),
20
- completedTransactions: Object.values(completedTransactions),
21
- passthroughWorkflowIds: passthroughWfIds ?? []
22
- };
23
- });
24
- fn.setHandler(gatedTransactionGoSignal, async (id) => {
25
- approvedIds.add(id);
26
- const passthrough = getPassthrough?.();
27
- if (passthrough) {
28
- await Promise.allSettled(passthrough.map((wf) => {
29
- return wf.signal(gatedTransactionGoSignal, [
30
- id
31
- ]);
32
- }));
33
- }
34
- });
35
- const confirmationCallback = /* @__PURE__ */ YJF4D23A_cjs.__name(async (tx) => {
36
- const id = _3SOQJCDG_cjs.getIdForGatedTransaction(tx);
37
- pendingTransactions[id] = tx;
38
- await fn.condition(() => approvedIds.has(id) || !!tx.bundleName && approvedBundleNames.has(tx.bundleName));
39
- tx.bundleName && approvedBundleNames.add(tx.bundleName);
40
- sentTransactions[id] = tx;
41
- delete pendingTransactions[id];
42
- return true;
43
- }, "confirmationCallback");
44
- const onResultCallback = /* @__PURE__ */ YJF4D23A_cjs.__name((result) => {
45
- const id = _3SOQJCDG_cjs.getIdForGatedTransaction(result);
46
- completedTransactions[id] = result;
47
- delete sentTransactions[id];
48
- }, "onResultCallback");
49
- return {
50
- confirmationCallback,
51
- onResultCallback
52
- };
53
- }, "useGatedTransactionSignalLock");
54
-
55
- exports.gatedTransactionGoSignal = gatedTransactionGoSignal;
56
- exports.queryGatedTransactions = queryGatedTransactions;
57
- exports.useGatedTransactionSignalLock = useGatedTransactionSignalLock;
58
- //# sourceMappingURL=422FLJZW.cjs.map
59
- //# sourceMappingURL=422FLJZW.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/gatedTransactionSignalLock.ts"],"names":["gatedTransactionGoSignal","defineSignal","queryGatedTransactions","defineQuery","useGatedTransactionSignalLock","__name","fn","getPassthrough","approvedIds","Set","approvedBundleNames","pendingTransactions","sentTransactions","completedTransactions","setHandler","passthroughWfIds","map","handle","workflowId","Object","values","passthroughWorkflowIds","id","add","passthrough","Promise","allSettled","wf","signal","confirmationCallback","tx","getIdForGatedTransaction","condition","has","bundleName","onResultCallback","result"],"mappings":";;;;;;AAkBO,IAAMA,wBAAAA,GACTC,4BAAuC,oBAAA;AACpC,IAAMC,sBAAAA,GACTC,2BAA0C,uBAAA;AAEvC,IAAMC,6BAAAA,mBAAgCC,mBAAA,CAAA,CACzCC,EAAAA,EACAC,cAAAA,KAAAA;AAEA,EAAA,MAAMC,WAAAA,uBAA2CC,GAAAA,EAAAA;AACjD,EAAA,MAAMC,mBAAAA,uBAAuCD,GAAAA,EAAAA;AAE7C,EAAA,MAAME,sBAAoE,EAAC;AAC3E,EAAA,MAAMC,mBAAiE,EAAC;AACxE,EAAA,MAAMC,wBAA8E,EAAC;AAErFP,EAAAA,EAAAA,CAAGQ,UAAAA,CAAWZ,wBAAwB,MAAA;AAClC,IAAA,MAAMa,mBAAmBR,cAAAA,IAAAA,CAAmBS,MAAM,CAACC,MAAAA,KAAWA,OAAOC,UAAU,CAAA;AAC/E,IAAA,OAAO;MACHP,mBAAAA,EAAqBQ,MAAAA,CAAOC,OAAOT,mBAAAA,CAAAA;MACnCC,gBAAAA,EAAkBO,MAAAA,CAAOC,OAAOR,gBAAAA,CAAAA;MAChCC,qBAAAA,EAAuBM,MAAAA,CAAOC,OAAOP,qBAAAA,CAAAA;AACrCQ,MAAAA,sBAAAA,EAAwBN,oBAAoB;AAChD,KAAA;EACJ,CAAA,CAAA;AAEAT,EAAAA,EAAAA,CAAGQ,UAAAA,CAAWd,wBAAAA,EAA0B,OAAOsB,EAAAA,KAAAA;AAC3Cd,IAAAA,WAAAA,CAAYe,IAAID,EAAAA,CAAAA;AAChB,IAAA,MAAME,cAAcjB,cAAAA,IAAAA;AACpB,IAAA,IAAIiB,WAAAA,EAAa;AACb,MAAA,MAAMC,OAAAA,CAAQC,UAAAA,CACVF,WAAAA,CAAYR,GAAAA,CAAI,CAACW,EAAAA,KAAAA;AACb,QAAA,OAAOA,EAAAA,CAAGC,OAAO5B,wBAAAA,EAA0B;AAACsB,UAAAA;AAAG,SAAA,CAAA;AACnD,MAAA,CAAA,CAAA,CAAA;AAER,IAAA;EACJ,CAAA,CAAA;AAEA,EAAA,MAAMO,oBAAAA,8CAAgFC,EAAAA,KAAAA;AAClF,IAAA,MAAMR,EAAAA,GAAKS,uCAAyBD,EAAAA,CAAAA;AACpCnB,IAAAA,mBAAAA,CAAoBW,EAAAA,CAAAA,GAAMQ,EAAAA;AAE1B,IAAA,MAAMxB,EAAAA,CAAG0B,SAAAA,CACL,MACIxB,WAAAA,CAAYyB,IAAIX,EAAAA,CAAAA,IAAQ,CAAC,CAACQ,GAAGI,UAAAA,IAAcxB,mBAAAA,CAAoBuB,GAAAA,CAAIH,EAAAA,CAAGI,UAAU,CAAA,CAAA;AAGxFJ,IAAAA,EAAAA,CAAGI,UAAAA,IAAcxB,mBAAAA,CAAoBa,GAAAA,CAAIO,EAAAA,CAAGI,UAAU,CAAA;AACtDtB,IAAAA,gBAAAA,CAAiBU,EAAAA,CAAAA,GAAMQ,EAAAA;AACvB,IAAA,OAAOnB,oBAAoBW,EAAAA,CAAAA;AAC3B,IAAA,OAAO,IAAA;EACX,CAAA,EAb+E,sBAAA,CAAA;AAe/E,EAAA,MAAMa,gBAAAA,wCAAkEC,MAAAA,KAAAA;AACpE,IAAA,MAAMd,EAAAA,GAAKS,uCAAyBK,MAAAA,CAAAA;AACpCvB,IAAAA,qBAAAA,CAAsBS,EAAAA,CAAAA,GAAMc,MAAAA;AAC5B,IAAA,OAAOxB,iBAAiBU,EAAAA,CAAAA;EAC5B,CAAA,EAJuE,kBAAA,CAAA;AAMvE,EAAA,OAAO;AAAEO,IAAAA,oBAAAA;AAAsBM,IAAAA;AAAiB,GAAA;AACpD,CAAA,EAvD6C,+BAAA","file":"422FLJZW.cjs","sourcesContent":["import type { WorkflowFunctions, WorkflowHandle } from '@layerzerolabs/common-workflow';\nimport { defineQuery, defineSignal } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n GatedTransaction,\n GatedTransactionId,\n ResolvedGatedTransaction,\n UserInteractionCallbacks,\n} from './types';\n\nexport type QueryGatedTransactionsResult = {\n pendingTransactions: GatedTransaction[];\n sentTransactions: GatedTransaction[];\n completedTransactions: ResolvedGatedTransaction[];\n passthroughWorkflowIds: string[];\n};\n\nexport const gatedTransactionGoSignal =\n defineSignal<[id: GatedTransactionId]>('GatedTransactionGo');\nexport const queryGatedTransactions =\n defineQuery<QueryGatedTransactionsResult>('GatedTransactionQuery');\n\nexport const useGatedTransactionSignalLock = (\n fn: WorkflowFunctions,\n getPassthrough?: () => WorkflowHandle<any>[],\n): UserInteractionCallbacks => {\n const approvedIds: Set<GatedTransactionId> = new Set();\n const approvedBundleNames: Set<string> = new Set();\n\n const pendingTransactions: Record<GatedTransactionId, GatedTransaction> = {};\n const sentTransactions: Record<GatedTransactionId, GatedTransaction> = {};\n const completedTransactions: Record<GatedTransactionId, ResolvedGatedTransaction> = {};\n\n fn.setHandler(queryGatedTransactions, () => {\n const passthroughWfIds = getPassthrough?.().map?.((handle) => handle.workflowId);\n return {\n pendingTransactions: Object.values(pendingTransactions),\n sentTransactions: Object.values(sentTransactions),\n completedTransactions: Object.values(completedTransactions),\n passthroughWorkflowIds: passthroughWfIds ?? [],\n };\n });\n\n fn.setHandler(gatedTransactionGoSignal, async (id) => {\n approvedIds.add(id);\n const passthrough = getPassthrough?.();\n if (passthrough) {\n await Promise.allSettled(\n passthrough.map((wf) => {\n return wf.signal(gatedTransactionGoSignal, [id]);\n }),\n );\n }\n });\n\n const confirmationCallback: UserInteractionCallbacks['confirmationCallback'] = async (tx) => {\n const id = getIdForGatedTransaction(tx);\n pendingTransactions[id] = tx;\n\n await fn.condition(\n () =>\n approvedIds.has(id) || (!!tx.bundleName && approvedBundleNames.has(tx.bundleName)),\n );\n\n tx.bundleName && approvedBundleNames.add(tx.bundleName);\n sentTransactions[id] = tx;\n delete pendingTransactions[id];\n return true;\n };\n\n const onResultCallback: UserInteractionCallbacks['onResultCallback'] = (result) => {\n const id = getIdForGatedTransaction(result);\n completedTransactions[id] = result;\n delete sentTransactions[id];\n };\n\n return { confirmationCallback, onResultCallback };\n};\n"]}
package/dist/TLPNG7S6.js DELETED
@@ -1,55 +0,0 @@
1
- import { getIdForGatedTransaction } from './WWHK47IY.js';
2
- import { __name } from './VUOMXK5T.js';
3
- import { defineSignal, defineQuery } from '@layerzerolabs/common-workflow';
4
-
5
- var gatedTransactionGoSignal = defineSignal("GatedTransactionGo");
6
- var queryGatedTransactions = defineQuery("GatedTransactionQuery");
7
- var useGatedTransactionSignalLock = /* @__PURE__ */ __name((fn, getPassthrough) => {
8
- const approvedIds = /* @__PURE__ */ new Set();
9
- const approvedBundleNames = /* @__PURE__ */ new Set();
10
- const pendingTransactions = {};
11
- const sentTransactions = {};
12
- const completedTransactions = {};
13
- fn.setHandler(queryGatedTransactions, () => {
14
- const passthroughWfIds = getPassthrough?.().map?.((handle) => handle.workflowId);
15
- return {
16
- pendingTransactions: Object.values(pendingTransactions),
17
- sentTransactions: Object.values(sentTransactions),
18
- completedTransactions: Object.values(completedTransactions),
19
- passthroughWorkflowIds: passthroughWfIds ?? []
20
- };
21
- });
22
- fn.setHandler(gatedTransactionGoSignal, async (id) => {
23
- approvedIds.add(id);
24
- const passthrough = getPassthrough?.();
25
- if (passthrough) {
26
- await Promise.allSettled(passthrough.map((wf) => {
27
- return wf.signal(gatedTransactionGoSignal, [
28
- id
29
- ]);
30
- }));
31
- }
32
- });
33
- const confirmationCallback = /* @__PURE__ */ __name(async (tx) => {
34
- const id = getIdForGatedTransaction(tx);
35
- pendingTransactions[id] = tx;
36
- await fn.condition(() => approvedIds.has(id) || !!tx.bundleName && approvedBundleNames.has(tx.bundleName));
37
- tx.bundleName && approvedBundleNames.add(tx.bundleName);
38
- sentTransactions[id] = tx;
39
- delete pendingTransactions[id];
40
- return true;
41
- }, "confirmationCallback");
42
- const onResultCallback = /* @__PURE__ */ __name((result) => {
43
- const id = getIdForGatedTransaction(result);
44
- completedTransactions[id] = result;
45
- delete sentTransactions[id];
46
- }, "onResultCallback");
47
- return {
48
- confirmationCallback,
49
- onResultCallback
50
- };
51
- }, "useGatedTransactionSignalLock");
52
-
53
- export { gatedTransactionGoSignal, queryGatedTransactions, useGatedTransactionSignalLock };
54
- //# sourceMappingURL=TLPNG7S6.js.map
55
- //# sourceMappingURL=TLPNG7S6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/gatedTransactionSignalLock.ts"],"names":["gatedTransactionGoSignal","defineSignal","queryGatedTransactions","defineQuery","useGatedTransactionSignalLock","fn","getPassthrough","approvedIds","Set","approvedBundleNames","pendingTransactions","sentTransactions","completedTransactions","setHandler","passthroughWfIds","map","handle","workflowId","Object","values","passthroughWorkflowIds","id","add","passthrough","Promise","allSettled","wf","signal","confirmationCallback","tx","getIdForGatedTransaction","condition","has","bundleName","onResultCallback","result"],"mappings":";;;;AAkBO,IAAMA,wBAAAA,GACTC,aAAuC,oBAAA;AACpC,IAAMC,sBAAAA,GACTC,YAA0C,uBAAA;AAEvC,IAAMC,6BAAAA,mBAAgC,MAAA,CAAA,CACzCC,EAAAA,EACAC,cAAAA,KAAAA;AAEA,EAAA,MAAMC,WAAAA,uBAA2CC,GAAAA,EAAAA;AACjD,EAAA,MAAMC,mBAAAA,uBAAuCD,GAAAA,EAAAA;AAE7C,EAAA,MAAME,sBAAoE,EAAC;AAC3E,EAAA,MAAMC,mBAAiE,EAAC;AACxE,EAAA,MAAMC,wBAA8E,EAAC;AAErFP,EAAAA,EAAAA,CAAGQ,UAAAA,CAAWX,wBAAwB,MAAA;AAClC,IAAA,MAAMY,mBAAmBR,cAAAA,IAAAA,CAAmBS,MAAM,CAACC,MAAAA,KAAWA,OAAOC,UAAU,CAAA;AAC/E,IAAA,OAAO;MACHP,mBAAAA,EAAqBQ,MAAAA,CAAOC,OAAOT,mBAAAA,CAAAA;MACnCC,gBAAAA,EAAkBO,MAAAA,CAAOC,OAAOR,gBAAAA,CAAAA;MAChCC,qBAAAA,EAAuBM,MAAAA,CAAOC,OAAOP,qBAAAA,CAAAA;AACrCQ,MAAAA,sBAAAA,EAAwBN,oBAAoB;AAChD,KAAA;EACJ,CAAA,CAAA;AAEAT,EAAAA,EAAAA,CAAGQ,UAAAA,CAAWb,wBAAAA,EAA0B,OAAOqB,EAAAA,KAAAA;AAC3Cd,IAAAA,WAAAA,CAAYe,IAAID,EAAAA,CAAAA;AAChB,IAAA,MAAME,cAAcjB,cAAAA,IAAAA;AACpB,IAAA,IAAIiB,WAAAA,EAAa;AACb,MAAA,MAAMC,OAAAA,CAAQC,UAAAA,CACVF,WAAAA,CAAYR,GAAAA,CAAI,CAACW,EAAAA,KAAAA;AACb,QAAA,OAAOA,EAAAA,CAAGC,OAAO3B,wBAAAA,EAA0B;AAACqB,UAAAA;AAAG,SAAA,CAAA;AACnD,MAAA,CAAA,CAAA,CAAA;AAER,IAAA;EACJ,CAAA,CAAA;AAEA,EAAA,MAAMO,oBAAAA,iCAAgFC,EAAAA,KAAAA;AAClF,IAAA,MAAMR,EAAAA,GAAKS,yBAAyBD,EAAAA,CAAAA;AACpCnB,IAAAA,mBAAAA,CAAoBW,EAAAA,CAAAA,GAAMQ,EAAAA;AAE1B,IAAA,MAAMxB,EAAAA,CAAG0B,SAAAA,CACL,MACIxB,WAAAA,CAAYyB,IAAIX,EAAAA,CAAAA,IAAQ,CAAC,CAACQ,GAAGI,UAAAA,IAAcxB,mBAAAA,CAAoBuB,GAAAA,CAAIH,EAAAA,CAAGI,UAAU,CAAA,CAAA;AAGxFJ,IAAAA,EAAAA,CAAGI,UAAAA,IAAcxB,mBAAAA,CAAoBa,GAAAA,CAAIO,EAAAA,CAAGI,UAAU,CAAA;AACtDtB,IAAAA,gBAAAA,CAAiBU,EAAAA,CAAAA,GAAMQ,EAAAA;AACvB,IAAA,OAAOnB,oBAAoBW,EAAAA,CAAAA;AAC3B,IAAA,OAAO,IAAA;EACX,CAAA,EAb+E,sBAAA,CAAA;AAe/E,EAAA,MAAMa,gBAAAA,2BAAkEC,MAAAA,KAAAA;AACpE,IAAA,MAAMd,EAAAA,GAAKS,yBAAyBK,MAAAA,CAAAA;AACpCvB,IAAAA,qBAAAA,CAAsBS,EAAAA,CAAAA,GAAMc,MAAAA;AAC5B,IAAA,OAAOxB,iBAAiBU,EAAAA,CAAAA;EAC5B,CAAA,EAJuE,kBAAA,CAAA;AAMvE,EAAA,OAAO;AAAEO,IAAAA,oBAAAA;AAAsBM,IAAAA;AAAiB,GAAA;AACpD,CAAA,EAvD6C,+BAAA","file":"TLPNG7S6.js","sourcesContent":["import type { WorkflowFunctions, WorkflowHandle } from '@layerzerolabs/common-workflow';\nimport { defineQuery, defineSignal } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n GatedTransaction,\n GatedTransactionId,\n ResolvedGatedTransaction,\n UserInteractionCallbacks,\n} from './types';\n\nexport type QueryGatedTransactionsResult = {\n pendingTransactions: GatedTransaction[];\n sentTransactions: GatedTransaction[];\n completedTransactions: ResolvedGatedTransaction[];\n passthroughWorkflowIds: string[];\n};\n\nexport const gatedTransactionGoSignal =\n defineSignal<[id: GatedTransactionId]>('GatedTransactionGo');\nexport const queryGatedTransactions =\n defineQuery<QueryGatedTransactionsResult>('GatedTransactionQuery');\n\nexport const useGatedTransactionSignalLock = (\n fn: WorkflowFunctions,\n getPassthrough?: () => WorkflowHandle<any>[],\n): UserInteractionCallbacks => {\n const approvedIds: Set<GatedTransactionId> = new Set();\n const approvedBundleNames: Set<string> = new Set();\n\n const pendingTransactions: Record<GatedTransactionId, GatedTransaction> = {};\n const sentTransactions: Record<GatedTransactionId, GatedTransaction> = {};\n const completedTransactions: Record<GatedTransactionId, ResolvedGatedTransaction> = {};\n\n fn.setHandler(queryGatedTransactions, () => {\n const passthroughWfIds = getPassthrough?.().map?.((handle) => handle.workflowId);\n return {\n pendingTransactions: Object.values(pendingTransactions),\n sentTransactions: Object.values(sentTransactions),\n completedTransactions: Object.values(completedTransactions),\n passthroughWorkflowIds: passthroughWfIds ?? [],\n };\n });\n\n fn.setHandler(gatedTransactionGoSignal, async (id) => {\n approvedIds.add(id);\n const passthrough = getPassthrough?.();\n if (passthrough) {\n await Promise.allSettled(\n passthrough.map((wf) => {\n return wf.signal(gatedTransactionGoSignal, [id]);\n }),\n );\n }\n });\n\n const confirmationCallback: UserInteractionCallbacks['confirmationCallback'] = async (tx) => {\n const id = getIdForGatedTransaction(tx);\n pendingTransactions[id] = tx;\n\n await fn.condition(\n () =>\n approvedIds.has(id) || (!!tx.bundleName && approvedBundleNames.has(tx.bundleName)),\n );\n\n tx.bundleName && approvedBundleNames.add(tx.bundleName);\n sentTransactions[id] = tx;\n delete pendingTransactions[id];\n return true;\n };\n\n const onResultCallback: UserInteractionCallbacks['onResultCallback'] = (result) => {\n const id = getIdForGatedTransaction(result);\n completedTransactions[id] = result;\n delete sentTransactions[id];\n };\n\n return { confirmationCallback, onResultCallback };\n};\n"]}