@budibase/server 2.5.6-alpha.2 → 2.5.6-alpha.20

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 (112) hide show
  1. package/builder/assets/{index.80d32454.js → index.3eea26b2.js} +378 -362
  2. package/builder/assets/index.7ec21ee2.css +6 -0
  3. package/builder/index.html +2 -2
  4. package/dist/api/controllers/automation.js +13 -7
  5. package/dist/api/controllers/plugin/index.js +6 -37
  6. package/dist/api/controllers/query/index.js +2 -2
  7. package/dist/api/controllers/table/utils.js +9 -3
  8. package/dist/api/routes/index.js +0 -2
  9. package/dist/app.js +2 -2
  10. package/dist/automations/actions.js +32 -6
  11. package/dist/automations/index.js +3 -2
  12. package/dist/automations/steps/bash.js +6 -6
  13. package/dist/automations/steps/createRow.js +11 -11
  14. package/dist/automations/steps/delay.js +3 -3
  15. package/dist/automations/steps/deleteRow.js +8 -8
  16. package/dist/automations/steps/discord.js +8 -8
  17. package/dist/automations/steps/executeQuery.js +9 -9
  18. package/dist/automations/steps/executeScript.js +6 -6
  19. package/dist/automations/steps/filter.js +6 -6
  20. package/dist/automations/steps/integromat.js +10 -10
  21. package/dist/automations/steps/loop.js +9 -9
  22. package/dist/automations/steps/outgoingWebhook.js +10 -10
  23. package/dist/automations/steps/queryRows.js +14 -14
  24. package/dist/automations/steps/sendSmtpEmail.js +9 -9
  25. package/dist/automations/steps/serverLog.js +4 -4
  26. package/dist/automations/steps/slack.js +6 -6
  27. package/dist/automations/steps/updateRow.js +11 -11
  28. package/dist/automations/steps/zapier.js +9 -9
  29. package/dist/automations/triggerInfo/app.js +5 -5
  30. package/dist/automations/triggerInfo/cron.js +4 -4
  31. package/dist/automations/triggerInfo/rowDeleted.js +5 -5
  32. package/dist/automations/triggerInfo/rowSaved.js +7 -7
  33. package/dist/automations/triggerInfo/rowUpdated.js +7 -7
  34. package/dist/automations/triggerInfo/webhook.js +6 -6
  35. package/dist/integrations/index.js +3 -3
  36. package/dist/migrations/functions/syncQuotas.js +2 -0
  37. package/dist/migrations/functions/usageQuotas/syncApps.js +0 -1
  38. package/dist/migrations/functions/usageQuotas/syncUsers.js +21 -0
  39. package/dist/package.json +10 -9
  40. package/dist/sdk/app/backups/exports.js +1 -35
  41. package/dist/sdk/index.js +2 -0
  42. package/dist/{api/routes/cloud.js → sdk/plugins/index.js} +2 -14
  43. package/dist/sdk/plugins/plugins.js +53 -0
  44. package/dist/threads/automation.js +2 -2
  45. package/dist/tsconfig.build.tsbuildinfo +1 -1
  46. package/dist/utilities/fileSystem/plugin.js +33 -23
  47. package/dist/watch.js +2 -2
  48. package/dist/websockets/client.js +14 -0
  49. package/dist/websockets/grid.js +60 -0
  50. package/dist/websockets/index.js +17 -0
  51. package/dist/websockets/websocket.js +78 -0
  52. package/package.json +11 -10
  53. package/src/api/controllers/automation.ts +12 -6
  54. package/src/api/controllers/plugin/index.ts +8 -45
  55. package/src/api/controllers/query/index.ts +2 -2
  56. package/src/api/controllers/table/utils.ts +10 -3
  57. package/src/api/index.ts +0 -1
  58. package/src/api/routes/index.ts +0 -2
  59. package/src/api/routes/tests/automation.spec.js +2 -2
  60. package/src/app.ts +2 -2
  61. package/src/automations/actions.ts +56 -24
  62. package/src/automations/index.ts +1 -1
  63. package/src/automations/steps/bash.ts +10 -7
  64. package/src/automations/steps/createRow.ts +15 -12
  65. package/src/automations/steps/delay.ts +6 -4
  66. package/src/automations/steps/deleteRow.ts +12 -9
  67. package/src/automations/steps/discord.ts +10 -8
  68. package/src/automations/steps/executeQuery.ts +13 -10
  69. package/src/automations/steps/executeScript.ts +10 -7
  70. package/src/automations/steps/filter.ts +8 -6
  71. package/src/automations/steps/integromat.ts +12 -10
  72. package/src/automations/steps/loop.ts +16 -10
  73. package/src/automations/steps/outgoingWebhook.ts +14 -11
  74. package/src/automations/steps/queryRows.ts +18 -15
  75. package/src/automations/steps/sendSmtpEmail.ts +11 -9
  76. package/src/automations/steps/serverLog.ts +6 -4
  77. package/src/automations/steps/slack.ts +8 -6
  78. package/src/automations/steps/updateRow.ts +15 -12
  79. package/src/automations/steps/zapier.ts +11 -9
  80. package/src/automations/tests/utilities/index.ts +2 -2
  81. package/src/automations/triggerInfo/app.ts +8 -5
  82. package/src/automations/triggerInfo/cron.ts +7 -4
  83. package/src/automations/triggerInfo/rowDeleted.ts +8 -5
  84. package/src/automations/triggerInfo/rowSaved.ts +10 -7
  85. package/src/automations/triggerInfo/rowUpdated.ts +10 -7
  86. package/src/automations/triggerInfo/webhook.ts +9 -6
  87. package/src/integrations/index.ts +3 -3
  88. package/src/migrations/functions/syncQuotas.ts +2 -0
  89. package/src/migrations/functions/usageQuotas/syncApps.ts +1 -2
  90. package/src/migrations/functions/usageQuotas/syncUsers.ts +9 -0
  91. package/src/migrations/functions/usageQuotas/tests/syncUsers.spec.ts +26 -0
  92. package/src/migrations/index.ts +1 -0
  93. package/src/sdk/app/backups/exports.ts +0 -35
  94. package/src/sdk/index.ts +2 -0
  95. package/src/sdk/plugins/index.ts +5 -0
  96. package/src/sdk/plugins/plugins.ts +41 -0
  97. package/src/tests/utilities/structures.ts +25 -17
  98. package/src/threads/automation.ts +2 -2
  99. package/src/utilities/fileSystem/plugin.ts +13 -4
  100. package/src/watch.ts +2 -2
  101. package/src/websockets/client.ts +11 -0
  102. package/src/websockets/grid.ts +55 -0
  103. package/src/websockets/index.ts +14 -0
  104. package/src/websockets/websocket.ts +83 -0
  105. package/builder/assets/index.841e62d8.css +0 -6
  106. package/dist/api/controllers/cloud.js +0 -130
  107. package/dist/websocket.js +0 -22
  108. package/src/api/controllers/cloud.ts +0 -119
  109. package/src/api/routes/cloud.ts +0 -18
  110. package/src/api/routes/tests/cloud.spec.ts +0 -54
  111. package/src/migrations/functions/tests/syncQuotas.spec.js +0 -26
  112. package/src/websocket.ts +0 -26
@@ -15,7 +15,14 @@ import * as delay from "./steps/delay"
15
15
  import * as queryRow from "./steps/queryRows"
16
16
  import * as loop from "./steps/loop"
17
17
  import env from "../environment"
18
- import { AutomationStepSchema, AutomationStepInput } from "@budibase/types"
18
+ import {
19
+ AutomationStepSchema,
20
+ AutomationStepInput,
21
+ PluginType,
22
+ AutomationStep,
23
+ } from "@budibase/types"
24
+ import sdk from "../sdk"
25
+ import { getAutomationPlugin } from "../utilities/fileSystem"
19
26
 
20
27
  const ACTION_IMPLS: Record<
21
28
  string,
@@ -38,25 +45,26 @@ const ACTION_IMPLS: Record<
38
45
  zapier: zapier.run,
39
46
  integromat: integromat.run,
40
47
  }
41
- export const ACTION_DEFINITIONS: Record<string, AutomationStepSchema> = {
42
- SEND_EMAIL_SMTP: sendSmtpEmail.definition,
43
- CREATE_ROW: createRow.definition,
44
- UPDATE_ROW: updateRow.definition,
45
- DELETE_ROW: deleteRow.definition,
46
- OUTGOING_WEBHOOK: outgoingWebhook.definition,
47
- EXECUTE_SCRIPT: executeScript.definition,
48
- EXECUTE_QUERY: executeQuery.definition,
49
- SERVER_LOG: serverLog.definition,
50
- DELAY: delay.definition,
51
- FILTER: filter.definition,
52
- QUERY_ROWS: queryRow.definition,
53
- LOOP: loop.definition,
54
- // these used to be lowercase step IDs, maintain for backwards compat
55
- discord: discord.definition,
56
- slack: slack.definition,
57
- zapier: zapier.definition,
58
- integromat: integromat.definition,
59
- }
48
+ export const BUILTIN_ACTION_DEFINITIONS: Record<string, AutomationStepSchema> =
49
+ {
50
+ SEND_EMAIL_SMTP: sendSmtpEmail.definition,
51
+ CREATE_ROW: createRow.definition,
52
+ UPDATE_ROW: updateRow.definition,
53
+ DELETE_ROW: deleteRow.definition,
54
+ OUTGOING_WEBHOOK: outgoingWebhook.definition,
55
+ EXECUTE_SCRIPT: executeScript.definition,
56
+ EXECUTE_QUERY: executeQuery.definition,
57
+ SERVER_LOG: serverLog.definition,
58
+ DELAY: delay.definition,
59
+ FILTER: filter.definition,
60
+ QUERY_ROWS: queryRow.definition,
61
+ LOOP: loop.definition,
62
+ // these used to be lowercase step IDs, maintain for backwards compat
63
+ discord: discord.definition,
64
+ slack: slack.definition,
65
+ zapier: zapier.definition,
66
+ integromat: integromat.definition,
67
+ }
60
68
 
61
69
  // don't add the bash script/definitions unless in self host
62
70
  // the fact this isn't included in any definitions means it cannot be
@@ -66,12 +74,36 @@ if (env.SELF_HOSTED) {
66
74
  // @ts-ignore
67
75
  ACTION_IMPLS["EXECUTE_BASH"] = bash.run
68
76
  // @ts-ignore
69
- ACTION_DEFINITIONS["EXECUTE_BASH"] = bash.definition
77
+ BUILTIN_ACTION_DEFINITIONS["EXECUTE_BASH"] = bash.definition
78
+ }
79
+
80
+ export async function getActionDefinitions() {
81
+ const actionDefinitions = BUILTIN_ACTION_DEFINITIONS
82
+ if (env.SELF_HOSTED) {
83
+ const plugins = await sdk.plugins.fetch(PluginType.AUTOMATION)
84
+ for (let plugin of plugins) {
85
+ const schema = plugin.schema.schema as AutomationStep
86
+ actionDefinitions[schema.stepId] = {
87
+ ...schema,
88
+ custom: true,
89
+ }
90
+ }
91
+ }
92
+ return actionDefinitions
70
93
  }
71
94
 
72
95
  /* istanbul ignore next */
73
- export async function getAction(actionName: string) {
74
- if (ACTION_IMPLS[actionName] != null) {
75
- return ACTION_IMPLS[actionName]
96
+ export async function getAction(stepId: string) {
97
+ if (ACTION_IMPLS[stepId] != null) {
98
+ return ACTION_IMPLS[stepId]
99
+ }
100
+ // must be a plugin
101
+ if (env.SELF_HOSTED) {
102
+ const plugins = await sdk.plugins.fetch(PluginType.AUTOMATION)
103
+ const found = plugins.find(plugin => plugin.schema.schema.stepId === stepId)
104
+ if (!found) {
105
+ throw new Error(`Unable to find action implementation for "${stepId}"`)
106
+ }
107
+ return (await getAutomationPlugin(found)).action
76
108
  }
77
109
  }
@@ -6,7 +6,7 @@ import BullQueue from "bull"
6
6
  export { automationQueue } from "./bullboard"
7
7
  export { shutdown } from "./bullboard"
8
8
  export { TRIGGER_DEFINITIONS } from "./triggers"
9
- export { ACTION_DEFINITIONS } from "./actions"
9
+ export { BUILTIN_ACTION_DEFINITIONS, getActionDefinitions } from "./actions"
10
10
 
11
11
  /**
12
12
  * This module is built purely to kick off the worker farm and manage the inputs/outputs
@@ -4,8 +4,11 @@ import * as automationUtils from "../automationUtils"
4
4
  import environment from "../../environment"
5
5
  import {
6
6
  AutomationActionStepId,
7
- AutomationStepSchema,
7
+ AutomationCustomIOType,
8
+ AutomationIOType,
8
9
  AutomationStepInput,
10
+ AutomationStepSchema,
11
+ AutomationStepType,
9
12
  } from "@budibase/types"
10
13
 
11
14
  export const definition: AutomationStepSchema = {
@@ -13,7 +16,7 @@ export const definition: AutomationStepSchema = {
13
16
  tagline: "Execute a bash command",
14
17
  icon: "JourneyEvent",
15
18
  description: "Run a bash script",
16
- type: "ACTION",
19
+ type: AutomationStepType.ACTION,
17
20
  internal: true,
18
21
  stepId: AutomationActionStepId.EXECUTE_BASH,
19
22
  inputs: {},
@@ -21,8 +24,8 @@ export const definition: AutomationStepSchema = {
21
24
  inputs: {
22
25
  properties: {
23
26
  code: {
24
- type: "string",
25
- customType: "code",
27
+ type: AutomationIOType.STRING,
28
+ customType: AutomationCustomIOType.CODE,
26
29
  title: "Code",
27
30
  },
28
31
  },
@@ -31,16 +34,16 @@ export const definition: AutomationStepSchema = {
31
34
  outputs: {
32
35
  properties: {
33
36
  stdout: {
34
- type: "string",
37
+ type: AutomationIOType.STRING,
35
38
  description: "Standard output of your bash command or script",
36
39
  },
37
40
  success: {
38
- type: "boolean",
41
+ type: AutomationIOType.BOOLEAN,
39
42
  description: "Whether the command was successful",
40
43
  },
41
44
  },
45
+ required: ["stdout"],
42
46
  },
43
- required: ["stdout"],
44
47
  },
45
48
  }
46
49
 
@@ -3,8 +3,11 @@ import { cleanUpRow, getError } from "../automationUtils"
3
3
  import { buildCtx } from "./utils"
4
4
  import {
5
5
  AutomationActionStepId,
6
- AutomationStepSchema,
6
+ AutomationCustomIOType,
7
+ AutomationIOType,
7
8
  AutomationStepInput,
9
+ AutomationStepSchema,
10
+ AutomationStepType,
8
11
  } from "@budibase/types"
9
12
 
10
13
  export const definition: AutomationStepSchema = {
@@ -12,7 +15,7 @@ export const definition: AutomationStepSchema = {
12
15
  tagline: "Create a {{inputs.enriched.table.name}} row",
13
16
  icon: "TableRowAddBottom",
14
17
  description: "Add a row to your database",
15
- type: "ACTION",
18
+ type: AutomationStepType.ACTION,
16
19
  internal: true,
17
20
  stepId: AutomationActionStepId.CREATE_ROW,
18
21
  inputs: {},
@@ -20,14 +23,14 @@ export const definition: AutomationStepSchema = {
20
23
  inputs: {
21
24
  properties: {
22
25
  row: {
23
- type: "object",
26
+ type: AutomationIOType.OBJECT,
24
27
  properties: {
25
28
  tableId: {
26
- type: "string",
27
- customType: "table",
29
+ type: AutomationIOType.STRING,
30
+ customType: AutomationCustomIOType.TABLE,
28
31
  },
29
32
  },
30
- customType: "row",
33
+ customType: AutomationCustomIOType.ROW,
31
34
  title: "Table",
32
35
  required: ["tableId"],
33
36
  },
@@ -37,24 +40,24 @@ export const definition: AutomationStepSchema = {
37
40
  outputs: {
38
41
  properties: {
39
42
  row: {
40
- type: "object",
41
- customType: "row",
43
+ type: AutomationIOType.OBJECT,
44
+ customType: AutomationCustomIOType.ROW,
42
45
  description: "The new row",
43
46
  },
44
47
  response: {
45
- type: "object",
48
+ type: AutomationIOType.OBJECT,
46
49
  description: "The response from the table",
47
50
  },
48
51
  success: {
49
- type: "boolean",
52
+ type: AutomationIOType.BOOLEAN,
50
53
  description: "Whether the row creation was successful",
51
54
  },
52
55
  id: {
53
- type: "string",
56
+ type: AutomationIOType.STRING,
54
57
  description: "The identifier of the new row",
55
58
  },
56
59
  revision: {
57
- type: "string",
60
+ type: AutomationIOType.STRING,
58
61
  description: "The revision of the new row",
59
62
  },
60
63
  },
@@ -1,8 +1,10 @@
1
1
  import { wait } from "../../utilities"
2
2
  import {
3
3
  AutomationActionStepId,
4
- AutomationStepSchema,
4
+ AutomationIOType,
5
5
  AutomationStepInput,
6
+ AutomationStepSchema,
7
+ AutomationStepType,
6
8
  } from "@budibase/types"
7
9
 
8
10
  export const definition: AutomationStepSchema = {
@@ -17,7 +19,7 @@ export const definition: AutomationStepSchema = {
17
19
  inputs: {
18
20
  properties: {
19
21
  time: {
20
- type: "number",
22
+ type: AutomationIOType.NUMBER,
21
23
  title: "Delay in milliseconds",
22
24
  },
23
25
  },
@@ -26,14 +28,14 @@ export const definition: AutomationStepSchema = {
26
28
  outputs: {
27
29
  properties: {
28
30
  success: {
29
- type: "boolean",
31
+ type: AutomationIOType.BOOLEAN,
30
32
  description: "Whether the delay was successful",
31
33
  },
32
34
  },
33
35
  required: ["success"],
34
36
  },
35
37
  },
36
- type: "LOGIC",
38
+ type: AutomationStepType.LOGIC,
37
39
  }
38
40
 
39
41
  export async function run({ inputs }: AutomationStepInput) {
@@ -3,8 +3,11 @@ import { buildCtx } from "./utils"
3
3
  import { getError } from "../automationUtils"
4
4
  import {
5
5
  AutomationActionStepId,
6
- AutomationStepSchema,
7
6
  AutomationStepInput,
7
+ AutomationStepSchema,
8
+ AutomationStepType,
9
+ AutomationIOType,
10
+ AutomationCustomIOType,
8
11
  } from "@budibase/types"
9
12
 
10
13
  export const definition: AutomationStepSchema = {
@@ -12,7 +15,7 @@ export const definition: AutomationStepSchema = {
12
15
  icon: "TableRowRemoveCenter",
13
16
  name: "Delete Row",
14
17
  tagline: "Delete a {{inputs.enriched.table.name}} row",
15
- type: "ACTION",
18
+ type: AutomationStepType.ACTION,
16
19
  stepId: AutomationActionStepId.DELETE_ROW,
17
20
  internal: true,
18
21
  inputs: {},
@@ -20,12 +23,12 @@ export const definition: AutomationStepSchema = {
20
23
  inputs: {
21
24
  properties: {
22
25
  tableId: {
23
- type: "string",
24
- customType: "table",
26
+ type: AutomationIOType.STRING,
27
+ customType: AutomationCustomIOType.TABLE,
25
28
  title: "Table",
26
29
  },
27
30
  id: {
28
- type: "string",
31
+ type: AutomationIOType.STRING,
29
32
  title: "Row ID",
30
33
  },
31
34
  },
@@ -34,16 +37,16 @@ export const definition: AutomationStepSchema = {
34
37
  outputs: {
35
38
  properties: {
36
39
  row: {
37
- type: "object",
38
- customType: "row",
40
+ type: AutomationIOType.OBJECT,
41
+ customType: AutomationCustomIOType.ROW,
39
42
  description: "The deleted row",
40
43
  },
41
44
  response: {
42
- type: "object",
45
+ type: AutomationIOType.OBJECT,
43
46
  description: "The response from the table",
44
47
  },
45
48
  success: {
46
- type: "boolean",
49
+ type: AutomationIOType.BOOLEAN,
47
50
  description: "Whether the deletion was successful",
48
51
  },
49
52
  },
@@ -4,6 +4,8 @@ import {
4
4
  AutomationActionStepId,
5
5
  AutomationStepSchema,
6
6
  AutomationStepInput,
7
+ AutomationStepType,
8
+ AutomationIOType,
7
9
  } from "@budibase/types"
8
10
 
9
11
  const DEFAULT_USERNAME = "Budibase Automate"
@@ -15,26 +17,26 @@ export const definition: AutomationStepSchema = {
15
17
  description: "Send a message to a Discord server",
16
18
  icon: "ri-discord-line",
17
19
  stepId: AutomationActionStepId.discord,
18
- type: "ACTION",
20
+ type: AutomationStepType.ACTION,
19
21
  internal: false,
20
22
  inputs: {},
21
23
  schema: {
22
24
  inputs: {
23
25
  properties: {
24
26
  url: {
25
- type: "string",
27
+ type: AutomationIOType.STRING,
26
28
  title: "Discord Webhook URL",
27
29
  },
28
30
  username: {
29
- type: "string",
31
+ type: AutomationIOType.STRING,
30
32
  title: "Bot Name",
31
33
  },
32
34
  avatar_url: {
33
- type: "string",
35
+ type: AutomationIOType.STRING,
34
36
  title: "Bot Avatar URL",
35
37
  },
36
38
  content: {
37
- type: "string",
39
+ type: AutomationIOType.STRING,
38
40
  title: "Message",
39
41
  },
40
42
  },
@@ -43,15 +45,15 @@ export const definition: AutomationStepSchema = {
43
45
  outputs: {
44
46
  properties: {
45
47
  httpStatus: {
46
- type: "number",
48
+ type: AutomationIOType.NUMBER,
47
49
  description: "The HTTP status code of the request",
48
50
  },
49
51
  response: {
50
- type: "string",
52
+ type: AutomationIOType.STRING,
51
53
  description: "The response from the Discord Webhook",
52
54
  },
53
55
  success: {
54
- type: "boolean",
56
+ type: AutomationIOType.BOOLEAN,
55
57
  description: "Whether the message sent successfully",
56
58
  },
57
59
  },
@@ -3,8 +3,11 @@ import { buildCtx } from "./utils"
3
3
  import * as automationUtils from "../automationUtils"
4
4
  import {
5
5
  AutomationActionStepId,
6
- AutomationStepSchema,
6
+ AutomationCustomIOType,
7
+ AutomationIOType,
7
8
  AutomationStepInput,
9
+ AutomationStepSchema,
10
+ AutomationStepType,
8
11
  } from "@budibase/types"
9
12
 
10
13
  export const definition: AutomationStepSchema = {
@@ -12,7 +15,7 @@ export const definition: AutomationStepSchema = {
12
15
  tagline: "Execute Data Connector",
13
16
  icon: "Data",
14
17
  description: "Execute a query in an external data connector",
15
- type: "ACTION",
18
+ type: AutomationStepType.ACTION,
16
19
  stepId: AutomationActionStepId.EXECUTE_QUERY,
17
20
  internal: true,
18
21
  inputs: {},
@@ -20,14 +23,14 @@ export const definition: AutomationStepSchema = {
20
23
  inputs: {
21
24
  properties: {
22
25
  query: {
23
- type: "object",
26
+ type: AutomationIOType.OBJECT,
24
27
  properties: {
25
28
  queryId: {
26
- type: "string",
27
- customType: "query",
29
+ type: AutomationIOType.STRING,
30
+ customType: AutomationCustomIOType.QUERY,
28
31
  },
29
32
  },
30
- customType: "queryParams",
33
+ customType: AutomationCustomIOType.QUERY_PARAMS,
31
34
  title: "Parameters",
32
35
  required: ["queryId"],
33
36
  },
@@ -37,21 +40,21 @@ export const definition: AutomationStepSchema = {
37
40
  outputs: {
38
41
  properties: {
39
42
  response: {
40
- type: "object",
43
+ type: AutomationIOType.OBJECT,
41
44
  description: "The response from the datasource execution",
42
45
  },
43
46
  info: {
44
- type: "object",
47
+ type: AutomationIOType.OBJECT,
45
48
  description:
46
49
  "Some query types may return extra data, like headers from a REST query",
47
50
  },
48
51
  success: {
49
- type: "boolean",
52
+ type: AutomationIOType.BOOLEAN,
50
53
  description: "Whether the action was successful",
51
54
  },
52
55
  },
56
+ required: ["response", "success"],
53
57
  },
54
- required: ["response", "success"],
55
58
  },
56
59
  }
57
60
 
@@ -3,8 +3,11 @@ import { buildCtx } from "./utils"
3
3
  import * as automationUtils from "../automationUtils"
4
4
  import {
5
5
  AutomationActionStepId,
6
- AutomationStepSchema,
6
+ AutomationCustomIOType,
7
+ AutomationIOType,
7
8
  AutomationStepInput,
9
+ AutomationStepSchema,
10
+ AutomationStepType,
8
11
  } from "@budibase/types"
9
12
 
10
13
  export const definition: AutomationStepSchema = {
@@ -12,7 +15,7 @@ export const definition: AutomationStepSchema = {
12
15
  tagline: "Execute JavaScript Code",
13
16
  icon: "Code",
14
17
  description: "Run a piece of JavaScript code in your automation",
15
- type: "ACTION",
18
+ type: AutomationStepType.ACTION,
16
19
  internal: true,
17
20
  stepId: AutomationActionStepId.EXECUTE_SCRIPT,
18
21
  inputs: {},
@@ -20,8 +23,8 @@ export const definition: AutomationStepSchema = {
20
23
  inputs: {
21
24
  properties: {
22
25
  code: {
23
- type: "string",
24
- customType: "code",
26
+ type: AutomationIOType.STRING,
27
+ customType: AutomationCustomIOType.CODE,
25
28
  title: "Code",
26
29
  },
27
30
  },
@@ -30,16 +33,16 @@ export const definition: AutomationStepSchema = {
30
33
  outputs: {
31
34
  properties: {
32
35
  value: {
33
- type: "string",
36
+ type: AutomationIOType.STRING,
34
37
  description: "The result of the return statement",
35
38
  },
36
39
  success: {
37
- type: "boolean",
40
+ type: AutomationIOType.BOOLEAN,
38
41
  description: "Whether the action was successful",
39
42
  },
40
43
  },
44
+ required: ["success"],
41
45
  },
42
- required: ["success"],
43
46
  },
44
47
  }
45
48
 
@@ -2,6 +2,8 @@ import {
2
2
  AutomationActionStepId,
3
3
  AutomationStepSchema,
4
4
  AutomationStepInput,
5
+ AutomationStepType,
6
+ AutomationIOType,
5
7
  } from "@budibase/types"
6
8
 
7
9
  export const FilterConditions = {
@@ -24,7 +26,7 @@ export const definition: AutomationStepSchema = {
24
26
  icon: "Branch2",
25
27
  description:
26
28
  "Conditionally halt automations which do not meet certain conditions",
27
- type: "LOGIC",
29
+ type: AutomationStepType.LOGIC,
28
30
  internal: true,
29
31
  stepId: AutomationActionStepId.FILTER,
30
32
  inputs: {
@@ -34,17 +36,17 @@ export const definition: AutomationStepSchema = {
34
36
  inputs: {
35
37
  properties: {
36
38
  field: {
37
- type: "string",
39
+ type: AutomationIOType.STRING,
38
40
  title: "Reference Value",
39
41
  },
40
42
  condition: {
41
- type: "string",
43
+ type: AutomationIOType.STRING,
42
44
  title: "Condition",
43
45
  enum: Object.values(FilterConditions),
44
46
  pretty: Object.values(PrettyFilterConditions),
45
47
  },
46
48
  value: {
47
- type: "string",
49
+ type: AutomationIOType.STRING,
48
50
  title: "Comparison Value",
49
51
  },
50
52
  },
@@ -53,11 +55,11 @@ export const definition: AutomationStepSchema = {
53
55
  outputs: {
54
56
  properties: {
55
57
  success: {
56
- type: "boolean",
58
+ type: AutomationIOType.BOOLEAN,
57
59
  description: "Whether the action was successful",
58
60
  },
59
61
  result: {
60
- type: "boolean",
62
+ type: AutomationIOType.BOOLEAN,
61
63
  description: "Whether the logic block passed",
62
64
  },
63
65
  },
@@ -4,6 +4,8 @@ import {
4
4
  AutomationActionStepId,
5
5
  AutomationStepSchema,
6
6
  AutomationStepInput,
7
+ AutomationStepType,
8
+ AutomationIOType,
7
9
  } from "@budibase/types"
8
10
 
9
11
  export const definition: AutomationStepSchema = {
@@ -13,34 +15,34 @@ export const definition: AutomationStepSchema = {
13
15
  "Performs a webhook call to Integromat and gets the response (if configured)",
14
16
  icon: "ri-shut-down-line",
15
17
  stepId: AutomationActionStepId.integromat,
16
- type: "ACTION",
18
+ type: AutomationStepType.ACTION,
17
19
  internal: false,
18
20
  inputs: {},
19
21
  schema: {
20
22
  inputs: {
21
23
  properties: {
22
24
  url: {
23
- type: "string",
25
+ type: AutomationIOType.STRING,
24
26
  title: "Webhook URL",
25
27
  },
26
28
  value1: {
27
- type: "string",
29
+ type: AutomationIOType.STRING,
28
30
  title: "Input Value 1",
29
31
  },
30
32
  value2: {
31
- type: "string",
33
+ type: AutomationIOType.STRING,
32
34
  title: "Input Value 2",
33
35
  },
34
36
  value3: {
35
- type: "string",
37
+ type: AutomationIOType.STRING,
36
38
  title: "Input Value 3",
37
39
  },
38
40
  value4: {
39
- type: "string",
41
+ type: AutomationIOType.STRING,
40
42
  title: "Input Value 4",
41
43
  },
42
44
  value5: {
43
- type: "string",
45
+ type: AutomationIOType.STRING,
44
46
  title: "Input Value 5",
45
47
  },
46
48
  },
@@ -49,15 +51,15 @@ export const definition: AutomationStepSchema = {
49
51
  outputs: {
50
52
  properties: {
51
53
  success: {
52
- type: "boolean",
54
+ type: AutomationIOType.BOOLEAN,
53
55
  description: "Whether call was successful",
54
56
  },
55
57
  httpStatus: {
56
- type: "number",
58
+ type: AutomationIOType.NUMBER,
57
59
  description: "The HTTP status code returned",
58
60
  },
59
61
  response: {
60
- type: "object",
62
+ type: AutomationIOType.OBJECT,
61
63
  description: "The webhook response - this can have properties",
62
64
  },
63
65
  },