@avaprotocol/sdk-js 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/auth.d.ts +2 -0
  3. package/dist/auth.d.ts.map +1 -0
  4. package/dist/auth.js +10 -0
  5. package/dist/config.d.ts +9 -0
  6. package/dist/config.d.ts.map +1 -0
  7. package/dist/config.js +19 -0
  8. package/dist/index.d.ts +58 -2750
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +1260 -492
  11. package/dist/index.mjs +1257 -484
  12. package/dist/models/edge.d.ts +12 -0
  13. package/dist/models/edge.d.ts.map +1 -0
  14. package/dist/models/edge.js +19 -0
  15. package/dist/models/execution.d.ts +25 -0
  16. package/dist/models/execution.d.ts.map +1 -0
  17. package/dist/models/execution.js +48 -0
  18. package/dist/models/node/branch.d.ts +14 -0
  19. package/dist/models/node/branch.d.ts.map +1 -0
  20. package/dist/models/node/branch.js +33 -0
  21. package/dist/models/node/contractRead.d.ts +14 -0
  22. package/dist/models/node/contractRead.d.ts.map +1 -0
  23. package/dist/models/node/contractRead.js +29 -0
  24. package/dist/models/node/contractWrite.d.ts +14 -0
  25. package/dist/models/node/contractWrite.d.ts.map +1 -0
  26. package/dist/models/node/contractWrite.js +29 -0
  27. package/dist/models/node/customCode.d.ts +15 -0
  28. package/dist/models/node/customCode.d.ts.map +1 -0
  29. package/dist/models/node/customCode.js +29 -0
  30. package/dist/models/node/ethTransfer.d.ts +14 -0
  31. package/dist/models/node/ethTransfer.d.ts.map +1 -0
  32. package/dist/models/node/ethTransfer.js +28 -0
  33. package/dist/models/node/factory.d.ts +20 -0
  34. package/dist/models/node/factory.d.ts.map +1 -0
  35. package/dist/models/node/factory.js +67 -0
  36. package/dist/models/node/filter.d.ts +14 -0
  37. package/dist/models/node/filter.d.ts.map +1 -0
  38. package/dist/models/node/filter.js +28 -0
  39. package/dist/models/node/graphqlQuery.d.ts +14 -0
  40. package/dist/models/node/graphqlQuery.d.ts.map +1 -0
  41. package/dist/models/node/graphqlQuery.js +37 -0
  42. package/dist/models/node/interface.d.ts +18 -0
  43. package/dist/models/node/interface.d.ts.map +1 -0
  44. package/dist/models/node/interface.js +37 -0
  45. package/dist/models/node/restApi.d.ts +15 -0
  46. package/dist/models/node/restApi.d.ts.map +1 -0
  47. package/dist/models/node/restApi.js +34 -0
  48. package/dist/models/secret.d.ts +17 -0
  49. package/dist/models/secret.d.ts.map +1 -0
  50. package/dist/models/secret.js +22 -0
  51. package/dist/models/step.d.ts +19 -0
  52. package/dist/models/step.d.ts.map +1 -0
  53. package/dist/models/step.js +78 -0
  54. package/dist/models/trigger/block.d.ts +13 -0
  55. package/dist/models/trigger/block.d.ts.map +1 -0
  56. package/dist/models/trigger/block.js +30 -0
  57. package/dist/models/trigger/cron.d.ts +13 -0
  58. package/dist/models/trigger/cron.d.ts.map +1 -0
  59. package/dist/models/trigger/cron.js +30 -0
  60. package/dist/models/trigger/event.d.ts +13 -0
  61. package/dist/models/trigger/event.d.ts.map +1 -0
  62. package/dist/models/trigger/event.js +61 -0
  63. package/dist/models/trigger/factory.d.ts +27 -0
  64. package/dist/models/trigger/factory.d.ts.map +1 -0
  65. package/dist/models/trigger/factory.js +49 -0
  66. package/dist/models/trigger/fixedTime.d.ts +13 -0
  67. package/dist/models/trigger/fixedTime.d.ts.map +1 -0
  68. package/dist/models/trigger/fixedTime.js +30 -0
  69. package/dist/models/trigger/interface.d.ts +21 -0
  70. package/dist/models/trigger/interface.d.ts.map +1 -0
  71. package/dist/models/trigger/interface.js +16 -0
  72. package/dist/models/trigger/reason.d.ts +33 -0
  73. package/dist/models/trigger/reason.d.ts.map +1 -0
  74. package/dist/models/trigger/reason.js +93 -0
  75. package/dist/models/workflow.d.ts +54 -0
  76. package/dist/models/workflow.d.ts.map +1 -0
  77. package/dist/models/workflow.js +118 -0
  78. package/dist/utils.d.ts +3 -0
  79. package/dist/utils.d.ts.map +1 -0
  80. package/dist/utils.js +37 -0
  81. package/package.json +6 -4
  82. package/dist/index.d.mts +0 -2937
@@ -0,0 +1,93 @@
1
+ import * as avs_pb from "@/grpc_codegen/avs_pb";
2
+ import { TriggerType } from "@avaprotocol/types";
3
+ // Convert the number values of gRPC TriggerType to string values of TriggerType
4
+ const convertTriggerType = (grpcType) => {
5
+ const conversionMap = {
6
+ [avs_pb.TriggerReason.TriggerType.FIXEDTIME]: TriggerType.FixedTime,
7
+ [avs_pb.TriggerReason.TriggerType.CRON]: TriggerType.Cron,
8
+ [avs_pb.TriggerReason.TriggerType.BLOCK]: TriggerType.Block,
9
+ [avs_pb.TriggerReason.TriggerType.EVENT]: TriggerType.Event,
10
+ [avs_pb.TriggerReason.TriggerType.MANUAL]: TriggerType.Manual,
11
+ [avs_pb.TriggerReason.TriggerType.UNSET]: TriggerType.Unset,
12
+ };
13
+ return conversionMap[grpcType];
14
+ };
15
+ class TriggerReason {
16
+ constructor(props) {
17
+ this.type = props.type;
18
+ // Configure reason based on trigger type
19
+ switch (props.type) {
20
+ case TriggerType.FixedTime:
21
+ case TriggerType.Cron:
22
+ this.epoch = props.epoch;
23
+ break;
24
+ case TriggerType.Block:
25
+ this.blockNumber = props.blockNumber;
26
+ break;
27
+ case TriggerType.Event:
28
+ this.blockNumber = props.blockNumber;
29
+ this.logIndex = props.logIndex;
30
+ this.txHash = props.txHash;
31
+ break;
32
+ default:
33
+ throw new Error("Unsupported trigger type");
34
+ }
35
+ }
36
+ static fromResponse(data) {
37
+ if (!data) {
38
+ return undefined;
39
+ }
40
+ return new TriggerReason({
41
+ type: convertTriggerType(data.getType()),
42
+ blockNumber: data.getBlockNumber(),
43
+ epoch: data.getEpoch(),
44
+ logIndex: data.getLogIndex(),
45
+ txHash: data.getTxHash(),
46
+ });
47
+ }
48
+ toRequest() {
49
+ const request = new avs_pb.TriggerReason();
50
+ switch (this.type) {
51
+ case TriggerType.FixedTime:
52
+ request.setType(avs_pb.TriggerReason.TriggerType.FIXEDTIME);
53
+ if (this.epoch) {
54
+ request.setEpoch(this.epoch);
55
+ }
56
+ break;
57
+ case TriggerType.Cron:
58
+ request.setType(avs_pb.TriggerReason.TriggerType.CRON);
59
+ if (this.epoch) {
60
+ request.setEpoch(this.epoch);
61
+ }
62
+ break;
63
+ case TriggerType.Block:
64
+ request.setType(avs_pb.TriggerReason.TriggerType.BLOCK);
65
+ if (this.blockNumber) {
66
+ request.setBlockNumber(this.blockNumber);
67
+ }
68
+ break;
69
+ case TriggerType.Event:
70
+ request.setType(avs_pb.TriggerReason.TriggerType.EVENT);
71
+ if (this.blockNumber) {
72
+ request.setBlockNumber(this.blockNumber);
73
+ }
74
+ if (this.logIndex) {
75
+ request.setLogIndex(this.logIndex);
76
+ }
77
+ if (this.txHash) {
78
+ request.setTxHash(this.txHash);
79
+ }
80
+ break;
81
+ case TriggerType.Manual:
82
+ request.setType(avs_pb.TriggerReason.TriggerType.MANUAL);
83
+ break;
84
+ case TriggerType.Unset:
85
+ request.setType(avs_pb.TriggerReason.TriggerType.UNSET);
86
+ break;
87
+ default:
88
+ throw new Error("Unsupported trigger type");
89
+ }
90
+ return request;
91
+ }
92
+ }
93
+ export default TriggerReason;
@@ -0,0 +1,54 @@
1
+ import * as avs_pb from "@/grpc_codegen/avs_pb";
2
+ import Node from "./node/interface";
3
+ import Edge from "./edge";
4
+ import Trigger from "./trigger/interface";
5
+ export declare const DefaultExpiredAt = -1;
6
+ import { WorkflowStatus } from "@avaprotocol/types";
7
+ export declare function convertStatusToString(status: avs_pb.TaskStatus): WorkflowStatus;
8
+ export type WorkflowProps = Omit<avs_pb.Task.AsObject, "id" | "owner" | "completedAt" | "status" | "name" | "trigger" | "nodesList" | "edgesList" | "lastRanAt" | "executionCount"> & {
9
+ id?: string;
10
+ owner?: string;
11
+ completedAt?: number;
12
+ status?: WorkflowStatus;
13
+ name?: string;
14
+ trigger: Trigger;
15
+ nodes: Node[];
16
+ edges: Edge[];
17
+ lastRanAt?: number;
18
+ executionCount?: number;
19
+ };
20
+ declare class Workflow implements WorkflowProps {
21
+ smartWalletAddress: string;
22
+ trigger: Trigger;
23
+ nodes: Node[];
24
+ edges: Edge[];
25
+ startAt: number;
26
+ expiredAt: number;
27
+ maxExecution: number;
28
+ id?: string;
29
+ owner?: string;
30
+ name?: string;
31
+ completedAt?: number;
32
+ status?: WorkflowStatus;
33
+ lastRanAt?: number;
34
+ executionCount?: number;
35
+ /**
36
+ * Create an instance of Workflow from user inputs
37
+ * @param props
38
+ */
39
+ constructor(props: WorkflowProps);
40
+ /**
41
+ * Create an instance of Workflow from AVS getWorkflow response
42
+ * @param res
43
+ * @returns
44
+ */
45
+ static fromResponse(obj: avs_pb.Task): Workflow;
46
+ /**
47
+ * Create an instance of Workflow with only selected fields
48
+ * @param obj
49
+ */
50
+ static fromListResponse(obj: avs_pb.ListTasksResp.Item): Workflow;
51
+ toRequest(): avs_pb.CreateTaskReq;
52
+ }
53
+ export default Workflow;
54
+ //# sourceMappingURL=workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/models/workflow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAEhD,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAG1C,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,CAAC,UAAU,GACxB,cAAc,CAUhB;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,MAAM,CAAC,IAAI,CAAC,QAAQ,EAClB,IAAI,GACJ,OAAO,GACP,aAAa,GACb,QAAQ,GACR,MAAM,GACN,SAAS,GACT,WAAW,GACX,WAAW,GACX,WAAW,GACX,gBAAgB,CACnB,GAAG;IACF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,cAAM,QAAS,YAAW,aAAa;IACrC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IAGrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;gBACS,KAAK,EAAE,aAAa;IAuBhC;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,GAAG,QAAQ;IAkC/C;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI,GAAG,QAAQ;IA2BjE,SAAS,IAAI,MAAM,CAAC,aAAa;CAsBlC;AAED,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,118 @@
1
+ import _ from "lodash";
2
+ import * as avs_pb from "@/grpc_codegen/avs_pb";
3
+ import Edge from "./edge";
4
+ import TriggerFactory from "./trigger/factory";
5
+ import NodeFactory from "./node/factory";
6
+ export const DefaultExpiredAt = -1; // TODO: explain the meaning of -1
7
+ import { WorkflowStatus } from "@avaprotocol/types";
8
+ // Function to convert TaskStatus to string
9
+ export function convertStatusToString(status) {
10
+ const conversionMap = {
11
+ [avs_pb.TaskStatus.ACTIVE]: WorkflowStatus.Active,
12
+ [avs_pb.TaskStatus.COMPLETED]: WorkflowStatus.Completed,
13
+ [avs_pb.TaskStatus.FAILED]: WorkflowStatus.Failed,
14
+ [avs_pb.TaskStatus.CANCELED]: WorkflowStatus.Canceled,
15
+ [avs_pb.TaskStatus.EXECUTING]: WorkflowStatus.Executing,
16
+ };
17
+ return conversionMap[status];
18
+ }
19
+ class Workflow {
20
+ /**
21
+ * Create an instance of Workflow from user inputs
22
+ * @param props
23
+ */
24
+ constructor(props) {
25
+ if (!props.trigger) {
26
+ throw new Error("Trigger is undefined in new Workflow()");
27
+ }
28
+ this.smartWalletAddress = props.smartWalletAddress;
29
+ this.trigger = props.trigger;
30
+ this.nodes = props.nodes;
31
+ this.edges = props.edges;
32
+ this.startAt = props.startAt;
33
+ this.expiredAt = props.expiredAt;
34
+ this.maxExecution = props.maxExecution;
35
+ this.executionCount = props.executionCount;
36
+ // Optional fields
37
+ this.id = props.id;
38
+ this.owner = props.owner;
39
+ this.name = props.name;
40
+ this.status = props.status;
41
+ this.completedAt = props.completedAt;
42
+ this.lastRanAt = props.lastRanAt;
43
+ }
44
+ /**
45
+ * Create an instance of Workflow from AVS getWorkflow response
46
+ * @param res
47
+ * @returns
48
+ */
49
+ static fromResponse(obj) {
50
+ const trigger = TriggerFactory.fromResponse(obj.getTrigger());
51
+ if (!trigger) {
52
+ throw new Error("Trigger is undefined in fromResponse()");
53
+ }
54
+ const nodes = _.map(obj.getNodesList(), (node) => NodeFactory.fromResponse(node));
55
+ const edges = _.map(obj.getEdgesList(), (edge) => Edge.fromResponse(edge));
56
+ const workflow = new Workflow({
57
+ id: obj.getId(),
58
+ owner: obj.getOwner(),
59
+ smartWalletAddress: obj.getSmartWalletAddress(),
60
+ trigger,
61
+ nodes,
62
+ edges,
63
+ startAt: obj.getStartAt(),
64
+ expiredAt: obj.getExpiredAt(),
65
+ maxExecution: obj.getMaxExecution(),
66
+ executionCount: obj.getExecutionCount(),
67
+ name: obj.getName(),
68
+ status: convertStatusToString(obj.getStatus()),
69
+ completedAt: obj.getCompletedAt(),
70
+ lastRanAt: obj.getLastRanAt(),
71
+ });
72
+ return workflow;
73
+ }
74
+ /**
75
+ * Create an instance of Workflow with only selected fields
76
+ * @param obj
77
+ */
78
+ static fromListResponse(obj) {
79
+ const trigger = TriggerFactory.fromResponse(obj.getTrigger());
80
+ if (!trigger) {
81
+ throw new Error("Trigger is undefined in fromListResponse()");
82
+ }
83
+ const executionCount = obj.getExecutionCount ? obj.getExecutionCount() : obj.executionCount;
84
+ return new Workflow({
85
+ id: obj.getId(),
86
+ owner: obj.getOwner(),
87
+ smartWalletAddress: obj.getSmartWalletAddress(),
88
+ trigger: trigger,
89
+ startAt: obj.getStartAt(),
90
+ expiredAt: obj.getExpiredAt(),
91
+ maxExecution: obj.getMaxExecution(),
92
+ executionCount: executionCount,
93
+ nodes: [],
94
+ edges: [],
95
+ completedAt: obj.getCompletedAt(),
96
+ status: convertStatusToString(obj.getStatus()),
97
+ name: obj.getName(),
98
+ lastRanAt: obj.getLastRanAt(),
99
+ });
100
+ }
101
+ toRequest() {
102
+ const request = new avs_pb.CreateTaskReq();
103
+ // TODO: add client side validation for each field
104
+ request.setSmartWalletAddress(this.smartWalletAddress);
105
+ request.setTrigger(this.trigger.toRequest());
106
+ _.map(this.nodes, (node) => request.addNodes(node.toRequest()));
107
+ _.map(this.edges, (edge) => request.addEdges(edge.toRequest()));
108
+ request.setStartAt(this.startAt);
109
+ request.setExpiredAt(this.expiredAt);
110
+ request.setMaxExecution(this.maxExecution);
111
+ // Optional fields
112
+ if (this.name) {
113
+ request.setName(this.name);
114
+ }
115
+ return request;
116
+ }
117
+ }
118
+ export default Workflow;
@@ -0,0 +1,3 @@
1
+ import { Value as ProtobufValue } from "google-protobuf/google/protobuf/struct_pb";
2
+ export declare function convertProtobufValueToJs(value?: ProtobufValue): any;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAGnF,wBAAgB,wBAAwB,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,GAAG,CAiCnE"}
package/dist/utils.js ADDED
@@ -0,0 +1,37 @@
1
+ import { Value as ProtobufValue } from "google-protobuf/google/protobuf/struct_pb";
2
+ // Helper function to convert google.protobuf.Value to native JavaScript types
3
+ export function convertProtobufValueToJs(value) {
4
+ if (!value) {
5
+ return undefined;
6
+ }
7
+ switch (value.getKindCase()) {
8
+ case ProtobufValue.KindCase.NULL_VALUE:
9
+ return null;
10
+ case ProtobufValue.KindCase.NUMBER_VALUE:
11
+ return value.getNumberValue();
12
+ case ProtobufValue.KindCase.STRING_VALUE:
13
+ return value.getStringValue();
14
+ case ProtobufValue.KindCase.BOOL_VALUE:
15
+ return value.getBoolValue();
16
+ case ProtobufValue.KindCase.STRUCT_VALUE: {
17
+ const struct = value.getStructValue();
18
+ if (!struct)
19
+ return {};
20
+ const jsObj = {};
21
+ const fields = struct.getFieldsMap();
22
+ fields.forEach((val, key) => {
23
+ jsObj[key] = convertProtobufValueToJs(val);
24
+ });
25
+ return jsObj;
26
+ }
27
+ case ProtobufValue.KindCase.LIST_VALUE: {
28
+ const list = value.getListValue();
29
+ if (!list)
30
+ return [];
31
+ return list.getValuesList().map(item => convertProtobufValueToJs(item));
32
+ }
33
+ case ProtobufValue.KindCase.KIND_NOT_SET:
34
+ default:
35
+ return undefined;
36
+ }
37
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@avaprotocol/sdk-js",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "A JavaScript/TypeScript SDK designed to simplify integration with Ava Protocol's AVS",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -24,16 +24,18 @@
24
24
  "yarn": ">=1.22.19"
25
25
  },
26
26
  "scripts": {
27
- "build": "tsup src/index.ts --format cjs,esm --dts",
27
+ "build:declarations": "tsc -b tsconfig.json",
28
+ "build:js": "tsup src/index.ts --format cjs,esm",
29
+ "build": "yarn build:declarations && yarn build:js",
28
30
  "clean": "rm -rf node_modules dist tsconfig.tsbuildinfo"
29
31
  },
30
32
  "dependencies": {
31
- "@avaprotocol/types": "workspace:*",
33
+ "@avaprotocol/types": "1.0.0",
32
34
  "@grpc/grpc-js": "^1.11.3",
33
35
  "@grpc/proto-loader": "^0.7.13",
34
36
  "dotenv": "^16.4.5",
35
37
  "ethers": "^6.13.2",
36
- "google-protobuf": "^3.21.4",
38
+ "google-protobuf": "3.19.4",
37
39
  "id128": "^1.6.6",
38
40
  "lodash": "^4.17.21"
39
41
  },