@contrail/cli 1.0.71 → 2.0.1

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 (270) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1034 -5
  3. package/bin/dev +17 -0
  4. package/bin/dev.cmd +3 -0
  5. package/bin/run +5 -0
  6. package/bin/run.cmd +3 -0
  7. package/{lib → dist}/api/apps.d.ts +13 -13
  8. package/dist/api/apps.js +96 -0
  9. package/{lib → dist}/api/event-workflow-action-definition.d.ts +1 -1
  10. package/dist/api/event-workflow-action-definition.js +11 -0
  11. package/{lib → dist}/api/event-workflow-template-definition.d.ts +6 -6
  12. package/dist/api/event-workflow-template-definition.js +26 -0
  13. package/{lib → dist}/api/event-workflow-templates.d.ts +7 -7
  14. package/dist/api/event-workflow-templates.js +32 -0
  15. package/dist/api/types.d.ts +7 -0
  16. package/dist/api/types.js +52 -0
  17. package/{lib → dist}/auth/auth.d.ts +9 -9
  18. package/dist/auth/auth.js +6 -0
  19. package/{lib → dist}/auth/login.d.ts +2 -2
  20. package/{lib → dist}/auth/login.js +146 -141
  21. package/dist/commands/app/create.d.ts +6 -0
  22. package/dist/commands/app/create.js +15 -0
  23. package/dist/commands/app/delete.d.ts +7 -0
  24. package/dist/commands/app/delete.js +38 -0
  25. package/dist/commands/app/install.d.ts +11 -0
  26. package/dist/commands/app/install.js +117 -0
  27. package/dist/commands/app/publish.d.ts +7 -0
  28. package/dist/commands/app/publish.js +45 -0
  29. package/dist/commands/app/uninstall.d.ts +10 -0
  30. package/dist/commands/app/uninstall.js +58 -0
  31. package/dist/commands/app/upgrade.d.ts +11 -0
  32. package/dist/commands/app/upgrade.js +79 -0
  33. package/dist/commands/colors/deleteAll.d.ts +6 -0
  34. package/dist/commands/colors/deleteAll.js +30 -0
  35. package/dist/commands/colors/load.d.ts +6 -0
  36. package/dist/commands/colors/load.js +29 -0
  37. package/dist/commands/config/list.d.ts +6 -0
  38. package/dist/commands/config/list.js +15 -0
  39. package/dist/commands/config/remove.d.ts +14 -0
  40. package/dist/commands/config/remove.js +26 -0
  41. package/dist/commands/config/set.d.ts +13 -0
  42. package/dist/commands/config/set.js +29 -0
  43. package/dist/commands/loader-process/load.d.ts +9 -0
  44. package/dist/commands/loader-process/load.js +33 -0
  45. package/dist/commands/loader-process/upload-and-load.d.ts +10 -0
  46. package/dist/commands/loader-process/upload-and-load.js +35 -0
  47. package/dist/commands/projects/export.d.ts +10 -0
  48. package/dist/commands/projects/export.js +34 -0
  49. package/dist/commands/projects/list.d.ts +6 -0
  50. package/dist/commands/projects/list.js +34 -0
  51. package/dist/commands/projects/load.d.ts +9 -0
  52. package/{lib/projects/project-uploader.js → dist/commands/projects/load.js} +106 -105
  53. package/dist/commands/types/exportOptionSetHierarchies.d.ts +7 -0
  54. package/{lib/types/option-set-hierarchy-exporter.js → dist/commands/types/exportOptionSetHierarchies.js} +130 -113
  55. package/{lib/types/types-extractor.d.ts → dist/commands/types/getAll.d.ts} +29 -27
  56. package/{lib/types/types-extractor.js → dist/commands/types/getAll.js} +267 -318
  57. package/dist/commands/types/loadAll.d.ts +7 -0
  58. package/dist/commands/types/loadAll.js +41 -0
  59. package/dist/commands/types/mergeOptionSets.d.ts +9 -0
  60. package/{lib/types/option-set-merger.js → dist/commands/types/mergeOptionSets.js} +114 -105
  61. package/dist/commands/types/mergeTypeProperties.d.ts +11 -0
  62. package/dist/commands/types/mergeTypeProperties.js +89 -0
  63. package/dist/commands/types/parseOptionSetsHierarchyLocalFile.d.ts +10 -0
  64. package/dist/commands/types/parseOptionSetsHierarchyLocalFile.js +112 -0
  65. package/dist/commands/types/parseOptionSetsLocalFiles.d.ts +14 -0
  66. package/dist/commands/types/parseOptionSetsLocalFiles.js +153 -0
  67. package/dist/commands/types/parseOptionSetsToFolderStructure.d.ts +10 -0
  68. package/dist/commands/types/parseOptionSetsToFolderStructure.js +104 -0
  69. package/dist/commands/types/parseTypesFromFiles.d.ts +10 -0
  70. package/dist/commands/types/parseTypesFromFiles.js +34 -0
  71. package/dist/commands/types/parseTypesFromLocalFiles.d.ts +10 -0
  72. package/dist/commands/types/parseTypesFromLocalFiles.js +34 -0
  73. package/dist/commands/types/parseTypesFromTemplateAndDataFromLocalFiles.d.ts +11 -0
  74. package/dist/commands/types/parseTypesFromTemplateAndDataFromLocalFiles.js +36 -0
  75. package/dist/commands/types/parseTypesFromTemplateFromLocalFiles.d.ts +10 -0
  76. package/dist/commands/types/parseTypesFromTemplateFromLocalFiles.js +35 -0
  77. package/dist/commands/types/uploadOptionSetHierarchies.d.ts +7 -0
  78. package/{lib/types/option-set-hierarchy-uploader.js → dist/commands/types/uploadOptionSetHierarchies.js} +130 -113
  79. package/dist/commands/types/uploadOptionSets.d.ts +7 -0
  80. package/{lib/types/option-set-uploader.js → dist/commands/types/uploadOptionSets.js} +115 -98
  81. package/dist/commands/types/uploadOptionSetsHierarchyLocalFile.d.ts +11 -0
  82. package/{lib/types/option-set-hierarchy-parser.js → dist/commands/types/uploadOptionSetsHierarchyLocalFile.js} +128 -140
  83. package/dist/commands/types/uploadRuleSets.d.ts +7 -0
  84. package/{lib/types/rule-set-uploader.js → dist/commands/types/uploadRuleSets.js} +189 -172
  85. package/dist/commands/types/uploadTypePropertyPolicies.d.ts +7 -0
  86. package/{lib/types/type-property-policy-uploader.js → dist/commands/types/uploadTypePropertyPolicies.js} +195 -178
  87. package/dist/commands/types/uploadUsageInfo.d.ts +7 -0
  88. package/{lib/types/usage-info-uploader.js → dist/commands/types/uploadUsageInfo.js} +149 -132
  89. package/dist/commands/users/export.d.ts +9 -0
  90. package/dist/commands/users/export.js +60 -0
  91. package/dist/commands/users/upload.d.ts +9 -0
  92. package/dist/commands/users/upload.js +65 -0
  93. package/dist/commands/workflow-template-definitions/install.d.ts +6 -0
  94. package/dist/commands/workflow-template-definitions/install.js +17 -0
  95. package/dist/commands/workflow-template-definitions/list.d.ts +6 -0
  96. package/dist/commands/workflow-template-definitions/list.js +17 -0
  97. package/dist/commands/workflow-templates/delete.d.ts +6 -0
  98. package/dist/commands/workflow-templates/delete.js +17 -0
  99. package/dist/commands/workflow-templates/list.d.ts +6 -0
  100. package/dist/commands/workflow-templates/list.js +17 -0
  101. package/dist/commands/workflow-templates/load.d.ts +9 -0
  102. package/dist/commands/workflow-templates/load.js +21 -0
  103. package/{lib → dist}/common.d.ts +1 -1
  104. package/dist/common.js +9 -0
  105. package/{lib/apps/deploy-app → dist/helpers/app}/actions-deployer.d.ts +11 -11
  106. package/{lib/apps/deploy-app → dist/helpers/app}/actions-deployer.js +122 -114
  107. package/{lib/apps/deploy-app → dist/helpers/app}/app-deployer.d.ts +8 -8
  108. package/{lib/apps/deploy-app → dist/helpers/app}/app-deployer.js +98 -93
  109. package/{lib/apps/deploy-app → dist/helpers/app}/app-template-parsers.d.ts +7 -7
  110. package/{lib/apps/deploy-app → dist/helpers/app}/app-template-parsers.js +43 -38
  111. package/dist/helpers/app/load-app-config.d.ts +1 -0
  112. package/dist/helpers/app/load-app-config.js +18 -0
  113. package/dist/helpers/app/setup-template.d.ts +1 -0
  114. package/dist/helpers/app/setup-template.js +38 -0
  115. package/dist/helpers/colors/helpers.d.ts +4 -0
  116. package/dist/helpers/colors/helpers.js +74 -0
  117. package/{lib → dist/helpers}/config/config.d.ts +6 -6
  118. package/dist/helpers/config/config.js +76 -0
  119. package/dist/helpers/loader-process/helpers.d.ts +2 -0
  120. package/{lib/loader-process/loader-process.js → dist/helpers/loader-process/helpers.js} +98 -120
  121. package/dist/helpers/projects/helpers.d.ts +2 -0
  122. package/{lib/projects/project-exporter.js → dist/helpers/projects/helpers.js} +165 -187
  123. package/{lib → dist/helpers}/types/csv-parser.d.ts +1 -1
  124. package/{lib → dist/helpers}/types/csv-parser.js +56 -51
  125. package/dist/helpers/types/type-extractor.d.ts +1 -0
  126. package/dist/helpers/types/type-extractor.js +32 -0
  127. package/dist/helpers/types/type-parser.d.ts +4 -0
  128. package/dist/helpers/types/type-parser.js +118 -0
  129. package/{lib/types/types-uploader.d.ts → dist/helpers/types/type-uploader.d.ts} +1 -1
  130. package/{lib/types/types-uploader.js → dist/helpers/types/type-uploader.js} +244 -239
  131. package/{lib → dist/helpers}/workflow-template-definitions/workflow-template-definition-deployer.d.ts +12 -12
  132. package/{lib → dist/helpers}/workflow-template-definitions/workflow-template-definition-deployer.js +156 -151
  133. package/{lib/workflow-templates/local-workflow-template-deployer.d.ts → dist/helpers/workflow-templates/helper.d.ts} +17 -11
  134. package/dist/helpers/workflow-templates/helper.js +166 -0
  135. package/dist/index.d.ts +1 -0
  136. package/dist/index.js +5 -0
  137. package/{lib → dist}/interfaces.d.ts +323 -191
  138. package/dist/interfaces.js +63 -0
  139. package/{templates → dist/templates}/typescript/Dockerfile +15 -15
  140. package/{templates → dist/templates}/typescript/README.md +10 -10
  141. package/{templates → dist/templates}/typescript/app.yml +49 -49
  142. package/{templates → dist/templates}/typescript/docker_deploy.bat +1 -1
  143. package/{templates → dist/templates}/typescript/package.json +54 -54
  144. package/{templates → dist/templates}/typescript/src/actions/logItem.ts +25 -25
  145. package/{templates → dist/templates}/typescript/src/framework/action-dispatcher.ts +89 -89
  146. package/{templates → dist/templates}/typescript/src/framework/app-config.ts +26 -26
  147. package/{templates → dist/templates}/typescript/src/framework/handler.ts +11 -11
  148. package/{templates → dist/templates}/typescript/src/framework/index.ts +2 -2
  149. package/{templates → dist/templates}/typescript/src/framework/interfaces.ts +32 -32
  150. package/{templates → dist/templates}/typescript/src/framework/logger.ts +21 -21
  151. package/{templates → dist/templates}/typescript/src/framework/mock-server.ts +31 -31
  152. package/{templates → dist/templates}/typescript/tsconfig.json +28 -28
  153. package/oclif.manifest.json +821 -0
  154. package/package.json +116 -72
  155. package/.eslintrc.js +0 -53
  156. package/.vscode/settings.json +0 -6
  157. package/bin/init +0 -4
  158. package/lib/api/apps.js +0 -85
  159. package/lib/api/event-workflow-action-definition.js +0 -7
  160. package/lib/api/event-workflow-template-definition.js +0 -20
  161. package/lib/api/event-workflow-templates.js +0 -25
  162. package/lib/apps/create-app/create.d.ts +0 -1
  163. package/lib/apps/create-app/create.js +0 -60
  164. package/lib/apps/create-app/setup-template.d.ts +0 -1
  165. package/lib/apps/create-app/setup-template.js +0 -34
  166. package/lib/apps/deploy-app/deploy.d.ts +0 -2
  167. package/lib/apps/deploy-app/deploy.js +0 -58
  168. package/lib/apps/install-app/app-installer.d.ts +0 -2
  169. package/lib/apps/install-app/app-installer.js +0 -120
  170. package/lib/apps/upgrade-app/app-upgrader.d.ts +0 -3
  171. package/lib/apps/upgrade-app/app-upgrader.js +0 -126
  172. package/lib/auth/auth.js +0 -2
  173. package/lib/cli.d.ts +0 -5
  174. package/lib/cli.js +0 -524
  175. package/lib/colors/color-loader.d.ts +0 -2
  176. package/lib/colors/color-loader.js +0 -96
  177. package/lib/common.js +0 -5
  178. package/lib/config/config.js +0 -70
  179. package/lib/config/configCommands.d.ts +0 -3
  180. package/lib/config/configCommands.js +0 -34
  181. package/lib/interfaces.js +0 -25
  182. package/lib/loader-process/loader-process.d.ts +0 -2
  183. package/lib/projects/interfaces.d.ts +0 -77
  184. package/lib/projects/interfaces.js +0 -23
  185. package/lib/projects/project-exporter.d.ts +0 -2
  186. package/lib/projects/project-uploader.d.ts +0 -1
  187. package/lib/types/allUploader.d.ts +0 -1
  188. package/lib/types/allUploader.js +0 -24
  189. package/lib/types/interfaces.d.ts +0 -55
  190. package/lib/types/interfaces.js +0 -1
  191. package/lib/types/option-set-hierarchy-exporter.d.ts +0 -1
  192. package/lib/types/option-set-hierarchy-parser.d.ts +0 -2
  193. package/lib/types/option-set-hierarchy-uploader.d.ts +0 -1
  194. package/lib/types/option-set-merger.d.ts +0 -1
  195. package/lib/types/option-set-parser.d.ts +0 -3
  196. package/lib/types/option-set-parser.js +0 -140
  197. package/lib/types/option-set-uploader.d.ts +0 -1
  198. package/lib/types/parse-types.d.ts +0 -4
  199. package/lib/types/parse-types.js +0 -189
  200. package/lib/types/rule-set-uploader.d.ts +0 -1
  201. package/lib/types/type-property-policy-uploader.d.ts +0 -1
  202. package/lib/types/types-properties-merger.d.ts +0 -1
  203. package/lib/types/types-properties-merger.js +0 -75
  204. package/lib/types/usage-info-uploader.d.ts +0 -1
  205. package/lib/users/user-exporter.d.ts +0 -1
  206. package/lib/users/user-exporter.js +0 -41
  207. package/lib/users/user-uploader.d.ts +0 -1
  208. package/lib/users/user-uploader.js +0 -45
  209. package/lib/workflow-template-definitions/workflow-template-definition-commands.d.ts +0 -2
  210. package/lib/workflow-template-definitions/workflow-template-definition-commands.js +0 -10
  211. package/lib/workflow-templates/local-workflow-template-deployer.js +0 -102
  212. package/lib/workflow-templates/workflow-template-commands.d.ts +0 -4
  213. package/lib/workflow-templates/workflow-template-commands.js +0 -51
  214. package/lib/workflow-templates/workflow-template-deployer.d.ts +0 -4
  215. package/lib/workflow-templates/workflow-template-deployer.js +0 -26
  216. package/publish.bat +0 -5
  217. package/publish.sh +0 -5
  218. package/src/api/apps.ts +0 -97
  219. package/src/api/event-workflow-action-definition.ts +0 -8
  220. package/src/api/event-workflow-template-definition.ts +0 -23
  221. package/src/api/event-workflow-templates.ts +0 -29
  222. package/src/apps/create-app/create.ts +0 -74
  223. package/src/apps/create-app/setup-template.ts +0 -38
  224. package/src/apps/deploy-app/actions-deployer.ts +0 -140
  225. package/src/apps/deploy-app/app-deployer.ts +0 -105
  226. package/src/apps/deploy-app/app-template-parsers.ts +0 -44
  227. package/src/apps/deploy-app/deploy.ts +0 -66
  228. package/src/apps/install-app/app-installer.ts +0 -126
  229. package/src/apps/upgrade-app/app-upgrader.ts +0 -132
  230. package/src/auth/auth.ts +0 -10
  231. package/src/auth/login.ts +0 -155
  232. package/src/cli.ts +0 -540
  233. package/src/colors/color-loader.ts +0 -112
  234. package/src/colors/colors.csv +0 -866
  235. package/src/common.ts +0 -5
  236. package/src/config/config.ts +0 -74
  237. package/src/config/configCommands.ts +0 -38
  238. package/src/interfaces.ts +0 -200
  239. package/src/loader-process/loader-process.ts +0 -152
  240. package/src/projects/interfaces.ts +0 -73
  241. package/src/projects/project-exporter.ts +0 -225
  242. package/src/projects/project-uploader.ts +0 -131
  243. package/src/types/allUploader.ts +0 -28
  244. package/src/types/csv-parser.ts +0 -59
  245. package/src/types/interfaces.ts +0 -58
  246. package/src/types/option-set-hierarchy-exporter.ts +0 -125
  247. package/src/types/option-set-hierarchy-parser.ts +0 -169
  248. package/src/types/option-set-hierarchy-uploader.ts +0 -122
  249. package/src/types/option-set-merger.ts +0 -124
  250. package/src/types/option-set-parser.ts +0 -166
  251. package/src/types/option-set-uploader.ts +0 -108
  252. package/src/types/parse-types.ts +0 -227
  253. package/src/types/rule-set-uploader.ts +0 -187
  254. package/src/types/type-property-policy-uploader.ts +0 -192
  255. package/src/types/types-extractor.ts +0 -369
  256. package/src/types/types-properties-merger.ts +0 -90
  257. package/src/types/types-uploader.ts +0 -271
  258. package/src/types/usage-info-uploader.ts +0 -139
  259. package/src/users/user-exporter.ts +0 -52
  260. package/src/users/user-uploader.ts +0 -58
  261. package/src/workflow-template-definitions/workflow-template-definition-commands.ts +0 -13
  262. package/src/workflow-template-definitions/workflow-template-definition-deployer.ts +0 -184
  263. package/src/workflow-templates/local-workflow-template-deployer.ts +0 -126
  264. package/src/workflow-templates/workflow-template-commands.ts +0 -59
  265. package/src/workflow-templates/workflow-template-deployer.ts +0 -30
  266. package/templates/javascript/actions/example/action.js +0 -38
  267. package/templates/javascript/app.yml +0 -53
  268. package/templates/javascript/package.json +0 -23
  269. package/templates/typescript/package-lock.json +0 -14
  270. package/tsconfig.json +0 -32
@@ -1,50 +1,50 @@
1
- appIdentifier: "@your-co/app-name" # Change to be your company root domain and the name of the app
2
- appName: "Your App Name" # Give your app a name
3
- appDescription: "Your app description." # Give your app a description
4
- visibility: private # This should be private unless you want to develop an app for all VibeIQ customers to use
5
- publisher: "Your company name" # Your company name, used for public apps
6
- version: 1.0
7
- dockerImageRef: CHANGE_ME # For VibeIQ Deployment... for use by VibeIQ employees only
8
-
9
- # Properties you can configure when you install the app.
10
- # These property values will be available to all of your actions when they run
11
- appConfiguration:
12
- apiHost:
13
- label: "API Host"
14
- propertyType: "string"
15
-
16
-
17
- # Action declarations. You define actions here. The 'slug' for the action
18
- # should match the name of a 'handler' in the /actions folder.
19
- # See documentation on how to implement actions.
20
- actions:
21
- logItem:
22
- name: "Log Item"
23
- description: "Fetches an item from the API and returns it to the log."
24
- async: false
25
- actionConfiguration:
26
- message:
27
- label: "Additional message to log."
28
- propertyType: "string"
29
-
30
- workflows:
31
- logItemUpdate:
32
- name: "Item Update -> Log"
33
- triggerKey: item|update
34
- isActive: true
35
- public: true
36
- workflowDefinition:
37
- paths:
38
- - conditional: "true"
39
- actionDefinitionConfigs:
40
- - action: logItem
41
- name: Log Item
42
-
43
-
44
- # This is an advanced feature that can 'derive' a trigger key for external events.
45
- # External events are events sent to the VibeIQ API's /external-events end point from another system
46
- # Here, you can define a string based on properties from the event payloads (which are custom to your payload)
47
- # i.e. an event {details: {eventType: 'apparel'}, actionType: 'create'} can be parsed to apparel|create with the following
48
- # When this is defined, any event coming from your app's credentials will define a trigger key using this logic.
49
- # You can then define workflows to run based on those external events, based on this triggger key definition.
1
+ appIdentifier: "@your-co/app-name" # Change to be your company root domain and the name of the app
2
+ appName: "Your App Name" # Give your app a name
3
+ appDescription: "Your app description." # Give your app a description
4
+ visibility: private # This should be private unless you want to develop an app for all VibeIQ customers to use
5
+ publisher: "Your company name" # Your company name, used for public apps
6
+ version: 1.0
7
+ dockerImageRef: CHANGE_ME # For VibeIQ Deployment... for use by VibeIQ employees only
8
+
9
+ # Properties you can configure when you install the app.
10
+ # These property values will be available to all of your actions when they run
11
+ appConfiguration:
12
+ apiHost:
13
+ label: "API Host"
14
+ propertyType: "string"
15
+
16
+
17
+ # Action declarations. You define actions here. The 'slug' for the action
18
+ # should match the name of a 'handler' in the /actions folder.
19
+ # See documentation on how to implement actions.
20
+ actions:
21
+ logItem:
22
+ name: "Log Item"
23
+ description: "Fetches an item from the API and returns it to the log."
24
+ async: false
25
+ actionConfiguration:
26
+ message:
27
+ label: "Additional message to log."
28
+ propertyType: "string"
29
+
30
+ workflows:
31
+ logItemUpdate:
32
+ name: "Item Update -> Log"
33
+ triggerKey: item|update
34
+ isActive: true
35
+ public: true
36
+ workflowDefinition:
37
+ paths:
38
+ - conditional: "true"
39
+ actionDefinitionConfigs:
40
+ - action: logItem
41
+ name: Log Item
42
+
43
+
44
+ # This is an advanced feature that can 'derive' a trigger key for external events.
45
+ # External events are events sent to the VibeIQ API's /external-events end point from another system
46
+ # Here, you can define a string based on properties from the event payloads (which are custom to your payload)
47
+ # i.e. an event {details: {eventType: 'apparel'}, actionType: 'create'} can be parsed to apparel|create with the following
48
+ # When this is defined, any event coming from your app's credentials will define a trigger key using this logic.
49
+ # You can then define workflows to run based on those external events, based on this triggger key definition.
50
50
  eventWorkflowTriggerKeyMapping: "{details.eventType}|{actionType}"
@@ -1 +1 @@
1
- npm run docker-ecr-login:win && npm version patch && npm run docker-build:win && npm run docker-tag:win && npm run docker-push:win
1
+ npm run docker-ecr-login:win && npm version patch && npm run docker-build:win && npm run docker-tag:win && npm run docker-push:win
@@ -1,54 +1,54 @@
1
- {
2
- "name": "test-app",
3
- "version": "1.0.0",
4
- "description": "",
5
- "main": "index.js",
6
- "bin": {
7
- "@contrail/contrail-cli": "bin/init",
8
- "contrail": "bin/init"
9
- },
10
- "config": {
11
- "wf": "/workflow-actions-prod"
12
- },
13
- "publishConfig": {
14
- "access": "public"
15
- },
16
- "scripts": {
17
- "build": "tsc",
18
- "start": "nodemon --watch \"src/**/*.ts\" --exec ts-node src/framework/mock-server.ts",
19
- "debug": "nodemon -r ts-node/register --inspect=127.0.0.1:60002 --watch 'actions/**/*.ts' --exec node src/framework/mock-server.ts",
20
- "lint": "eslint . --fix",
21
- "test": "jest",
22
- "test-watch": "jest --watch",
23
- "docker-build": "docker build . -t \"${npm_package_name}:${npm_package_version}\"",
24
- "docker-build:win": "docker build . -t \"%npm_package_name%:%npm_package_version%\"",
25
- "docker-run-entry": "docker run -it --entrypoint=/bin/bash \"${npm_package_name}:${npm_package_version}\"",
26
- "docker-run-entry:win": "docker run -it --entrypoint=/bin/bash \"%npm_package_name%:%npm_package_version%\"",
27
- "docker-run": "docker run --env CONTRAIL_CLI_ENV=DEV -p 9000:8080 \"${npm_package_name}:${npm_package_version}\"",
28
- "docker-run:win": "docker run --env CONTRAIL_CLI_ENV=DEV -p 9000:8080 \"%npm_package_name%:%npm_package_version%\"",
29
- "docker-ecr-login": "aws ecr get-login-password | docker login --username AWS --password-stdin ${AWS_REGISTRY}",
30
- "docker-ecr-login:win": "aws ecr get-login-password | docker login --username AWS --password-stdin %AWS_REGISTRY%",
31
- "docker-tag": "docker tag ${npm_package_name}:${npm_package_version} \"${AWS_REGISTRY}${npm_package_config_wf}:${npm_package_name}.${npm_package_version}\"",
32
- "docker-tag:win": "docker tag %npm_package_name%:%npm_package_version% %AWS_REGISTRY%%npm_package_config_wf%:%npm_package_name%.%npm_package_version%",
33
- "docker-push": "docker push \"${AWS_REGISTRY}${npm_package_config_wf}:${npm_package_name}.${npm_package_version}\"",
34
- "docker-push:win": "docker push \"%AWS_REGISTRY%%npm_package_config_wf%:%npm_package_name%.%npm_package_version%\""
35
- },
36
- "keywords": [],
37
- "author": "",
38
- "license": "ISC",
39
- "dependencies": {
40
- "@contrail/sdk": "^1.1.54",
41
- "chalk": "^4.0.0"
42
- },
43
- "devDependencies": {
44
- "@types/node": "^18.14.6",
45
- "body-parser": "^1.20.2",
46
- "express": "^4.18.2",
47
- "jest": "^29.2.2",
48
- "js-yaml": "^4.1.0",
49
- "nodemon": "^1.19.4",
50
- "ts-jest": "^29.0.3",
51
- "ts-node": "^7.0.1",
52
- "typescript": "^4.7.4"
53
- }
54
- }
1
+ {
2
+ "name": "test-app",
3
+ "version": "1.0.0",
4
+ "description": "",
5
+ "main": "index.js",
6
+ "bin": {
7
+ "@contrail/contrail-cli": "bin/init",
8
+ "contrail": "bin/init"
9
+ },
10
+ "config": {
11
+ "wf": "/workflow-actions-prod"
12
+ },
13
+ "publishConfig": {
14
+ "access": "public"
15
+ },
16
+ "scripts": {
17
+ "build": "tsc",
18
+ "start": "nodemon --watch \"src/**/*.ts\" --exec ts-node src/framework/mock-server.ts",
19
+ "debug": "nodemon -r ts-node/register --inspect=127.0.0.1:60002 --watch 'actions/**/*.ts' --exec node src/framework/mock-server.ts",
20
+ "lint": "eslint . --fix",
21
+ "test": "jest",
22
+ "test-watch": "jest --watch",
23
+ "docker-build": "docker build . -t \"${npm_package_name}:${npm_package_version}\"",
24
+ "docker-build:win": "docker build . -t \"%npm_package_name%:%npm_package_version%\"",
25
+ "docker-run-entry": "docker run -it --entrypoint=/bin/bash \"${npm_package_name}:${npm_package_version}\"",
26
+ "docker-run-entry:win": "docker run -it --entrypoint=/bin/bash \"%npm_package_name%:%npm_package_version%\"",
27
+ "docker-run": "docker run --env CONTRAIL_CLI_ENV=DEV -p 9000:8080 \"${npm_package_name}:${npm_package_version}\"",
28
+ "docker-run:win": "docker run --env CONTRAIL_CLI_ENV=DEV -p 9000:8080 \"%npm_package_name%:%npm_package_version%\"",
29
+ "docker-ecr-login": "aws ecr get-login-password | docker login --username AWS --password-stdin ${AWS_REGISTRY}",
30
+ "docker-ecr-login:win": "aws ecr get-login-password | docker login --username AWS --password-stdin %AWS_REGISTRY%",
31
+ "docker-tag": "docker tag ${npm_package_name}:${npm_package_version} \"${AWS_REGISTRY}${npm_package_config_wf}:${npm_package_name}.${npm_package_version}\"",
32
+ "docker-tag:win": "docker tag %npm_package_name%:%npm_package_version% %AWS_REGISTRY%%npm_package_config_wf%:%npm_package_name%.%npm_package_version%",
33
+ "docker-push": "docker push \"${AWS_REGISTRY}${npm_package_config_wf}:${npm_package_name}.${npm_package_version}\"",
34
+ "docker-push:win": "docker push \"%AWS_REGISTRY%%npm_package_config_wf%:%npm_package_name%.%npm_package_version%\""
35
+ },
36
+ "keywords": [],
37
+ "author": "",
38
+ "license": "ISC",
39
+ "dependencies": {
40
+ "@contrail/sdk": "^1.1.54",
41
+ "chalk": "^4.0.0"
42
+ },
43
+ "devDependencies": {
44
+ "@types/node": "^18.14.6",
45
+ "body-parser": "^1.20.2",
46
+ "express": "^4.18.2",
47
+ "jest": "^29.2.2",
48
+ "js-yaml": "^4.1.0",
49
+ "nodemon": "^1.19.4",
50
+ "ts-jest": "^29.0.3",
51
+ "ts-node": "^7.0.1",
52
+ "typescript": "^4.7.4"
53
+ }
54
+ }
@@ -1,26 +1,26 @@
1
- import { login, Entities, setAppCredentials } from "@contrail/sdk";
2
- import { AppActionCallBack, AppActionCallbackStatus } from "../framework";
3
- import { Logger } from "../framework/logger";
4
-
5
- export async function execute(event, config: any, logger: Logger): Promise<AppActionCallBack> {
6
- logger.log('Starting Example Action');
7
-
8
-
9
- logger.log('Loggin in');
10
- // Fetch items from the SDK
11
- await setAppCredentials(config.apiKey, config.orgSlug);
12
- logger.log('Getting item from SDK');
13
-
14
- const item = await new Entities().get({
15
- entityName: 'item',
16
- id: event.id,
17
- })
18
- logger.log('Got item: ', item);
19
-
20
- return {
21
- output: {
22
- item,
23
- },
24
- status: AppActionCallbackStatus.SUCCESS
25
- };
1
+ import { login, Entities, setAppCredentials } from "@contrail/sdk";
2
+ import { AppActionCallBack, AppActionCallbackStatus } from "../framework";
3
+ import { Logger } from "../framework/logger";
4
+
5
+ export async function execute(event, config: any, logger: Logger): Promise<AppActionCallBack> {
6
+ logger.log('Starting Example Action');
7
+
8
+
9
+ logger.log('Loggin in');
10
+ // Fetch items from the SDK
11
+ await setAppCredentials(config.apiKey, config.orgSlug);
12
+ logger.log('Getting item from SDK');
13
+
14
+ const item = await new Entities().get({
15
+ entityName: 'item',
16
+ id: event.id,
17
+ })
18
+ logger.log('Got item: ', item);
19
+
20
+ return {
21
+ output: {
22
+ item,
23
+ },
24
+ status: AppActionCallbackStatus.SUCCESS
25
+ };
26
26
  }
@@ -1,90 +1,90 @@
1
- /**
2
- * WARNING: Do not modify this file, it is part of the generic runtime handling logic
3
- * for VibeIQ app actions.
4
- */
5
-
6
-
7
- import { setAppCredentials } from "@contrail/sdk";
8
- import { loadAppConfig } from "./app-config";
9
- import { AppActionCallbackStatus, AppActionRequest, AppActionResponse } from "./interfaces";
10
- import { Logger } from "./logger";
11
-
12
- const APP_CONFIG = loadAppConfig();
13
- const appName = APP_CONFIG.appIdentifier;
14
-
15
- export class ActionDispatcher {
16
-
17
- public static async dispatchActionRequest(data: AppActionRequest) : Promise<AppActionResponse> {
18
- // Sets the auth creds on the SDK
19
- await setAppCredentials(data.apiKey, data.orgSlug);
20
-
21
- const logger = new Logger();
22
- const event = (typeof data.event === 'string')
23
- ? JSON.parse(data.event)
24
- : data.event;
25
-
26
- return ActionDispatcher.delegateToHandler(event, data, logger);
27
- }
28
-
29
- private static async delegateToHandler(event, data: AppActionRequest, logger: Logger) : Promise<AppActionResponse>{
30
- try {
31
- const handler = ActionDispatcher.getActionHandler(data);
32
- let actionResults = await handler(event, data, logger)
33
- let body: any = {
34
- logs: logger.allEntries,
35
- taskId: data.taskId,
36
- status: AppActionCallbackStatus.SUCCESS,
37
- };
38
-
39
- if(typeof actionResults === 'string'){
40
- body.output = { message: actionResults }
41
- } else if(typeof actionResults === 'object'){
42
- if(actionResults.output){
43
- body.output = actionResults.output;
44
- }
45
- if(actionResults.status) {
46
- body.status = actionResults.status;
47
- }
48
- }
49
- return {
50
- statusCode: 200,
51
- body
52
- }
53
- } catch (error) {
54
- console.log("Error caught in handling action: ", error)
55
- return {
56
- statusCode: 500,
57
- body: {
58
- output: {
59
- errorMessage: error.message,
60
- },
61
- taskId: data.taskId,
62
- logs: logger.allEntries,
63
- status: AppActionCallbackStatus.FAILURE,
64
- }
65
- }
66
- }
67
- }
68
-
69
- /** Retrives the handler function for the requested action
70
- */
71
- private static getActionHandler(data: AppActionRequest): (event, data, logger) => any {
72
- try {
73
- const actionPath = data.action;
74
- const actionName = actionPath.substring(appName.length + 1, actionPath.length);
75
- console.log('action: ', actionPath, actionName);
76
- const handlerFile = require(`../actions/${actionName}`);
77
- if(!handlerFile) {
78
- throw new Error(`Handler file could not be located for action : ${data.action}`);
79
- }
80
- const handlerFunction = handlerFile.execute;
81
- if(!handlerFunction) {
82
- throw new Error(`Handler function 'execute' could not be located for action : ${data.action}`);
83
- }
84
- return handlerFunction;
85
- } catch (error) {
86
- console.log("Error caught in getActionHandler: ", error)
87
- throw new Error(`Could not locate handler function for requested action: ${data.action}`);
88
- }
89
- }
1
+ /**
2
+ * WARNING: Do not modify this file, it is part of the generic runtime handling logic
3
+ * for VibeIQ app actions.
4
+ */
5
+
6
+
7
+ import { setAppCredentials } from "@contrail/sdk";
8
+ import { loadAppConfig } from "./app-config";
9
+ import { AppActionCallbackStatus, AppActionRequest, AppActionResponse } from "./interfaces";
10
+ import { Logger } from "./logger";
11
+
12
+ const APP_CONFIG = loadAppConfig();
13
+ const appName = APP_CONFIG.appIdentifier;
14
+
15
+ export class ActionDispatcher {
16
+
17
+ public static async dispatchActionRequest(data: AppActionRequest) : Promise<AppActionResponse> {
18
+ // Sets the auth creds on the SDK
19
+ await setAppCredentials(data.apiKey, data.orgSlug);
20
+
21
+ const logger = new Logger();
22
+ const event = (typeof data.event === 'string')
23
+ ? JSON.parse(data.event)
24
+ : data.event;
25
+
26
+ return ActionDispatcher.delegateToHandler(event, data, logger);
27
+ }
28
+
29
+ private static async delegateToHandler(event, data: AppActionRequest, logger: Logger) : Promise<AppActionResponse>{
30
+ try {
31
+ const handler = ActionDispatcher.getActionHandler(data);
32
+ let actionResults = await handler(event, data, logger)
33
+ let body: any = {
34
+ logs: logger.allEntries,
35
+ taskId: data.taskId,
36
+ status: AppActionCallbackStatus.SUCCESS,
37
+ };
38
+
39
+ if(typeof actionResults === 'string'){
40
+ body.output = { message: actionResults }
41
+ } else if(typeof actionResults === 'object'){
42
+ if(actionResults.output){
43
+ body.output = actionResults.output;
44
+ }
45
+ if(actionResults.status) {
46
+ body.status = actionResults.status;
47
+ }
48
+ }
49
+ return {
50
+ statusCode: 200,
51
+ body
52
+ }
53
+ } catch (error) {
54
+ console.log("Error caught in handling action: ", error)
55
+ return {
56
+ statusCode: 500,
57
+ body: {
58
+ output: {
59
+ errorMessage: error.message,
60
+ },
61
+ taskId: data.taskId,
62
+ logs: logger.allEntries,
63
+ status: AppActionCallbackStatus.FAILURE,
64
+ }
65
+ }
66
+ }
67
+ }
68
+
69
+ /** Retrives the handler function for the requested action
70
+ */
71
+ private static getActionHandler(data: AppActionRequest): (event, data, logger) => any {
72
+ try {
73
+ const actionPath = data.action;
74
+ const actionName = actionPath.substring(appName.length + 1, actionPath.length);
75
+ console.log('action: ', actionPath, actionName);
76
+ const handlerFile = require(`../actions/${actionName}`);
77
+ if(!handlerFile) {
78
+ throw new Error(`Handler file could not be located for action : ${data.action}`);
79
+ }
80
+ const handlerFunction = handlerFile.execute;
81
+ if(!handlerFunction) {
82
+ throw new Error(`Handler function 'execute' could not be located for action : ${data.action}`);
83
+ }
84
+ return handlerFunction;
85
+ } catch (error) {
86
+ console.log("Error caught in getActionHandler: ", error)
87
+ throw new Error(`Could not locate handler function for requested action: ${data.action}`);
88
+ }
89
+ }
90
90
  }
@@ -1,27 +1,27 @@
1
- /**
2
- * WARNING: Do not modify this file, it is part of the generic runtime handling logic
3
- * for VibeIQ app actions.
4
- */
5
-
6
-
7
- import fs from 'fs';
8
- const yaml = require('js-yaml');
9
-
10
- export function loadAppConfig(){
11
- const TARGET_DIR = process.cwd();
12
- console.log("TARGET_DIR: ", TARGET_DIR)
13
- try {
14
- const separator = getSeparatorByPlatform();
15
- const doc = yaml.load(fs.readFileSync(TARGET_DIR + separator + 'app.yml', 'utf8'));
16
- console.log(doc);
17
- return doc;
18
- } catch (e) {
19
- throw new Error(`ERROR PARSING YAML: ${e}`);
20
- }
21
- }
22
-
23
- export function getSeparatorByPlatform() {
24
- const isWin = process.platform === 'win32';
25
- const separator = isWin ? '\\' : '/';
26
- return separator;
1
+ /**
2
+ * WARNING: Do not modify this file, it is part of the generic runtime handling logic
3
+ * for VibeIQ app actions.
4
+ */
5
+
6
+
7
+ import fs from 'fs';
8
+ const yaml = require('js-yaml');
9
+
10
+ export function loadAppConfig(){
11
+ const TARGET_DIR = process.cwd();
12
+ console.log("TARGET_DIR: ", TARGET_DIR)
13
+ try {
14
+ const separator = getSeparatorByPlatform();
15
+ const doc = yaml.load(fs.readFileSync(TARGET_DIR + separator + 'app.yml', 'utf8'));
16
+ console.log(doc);
17
+ return doc;
18
+ } catch (e) {
19
+ throw new Error(`ERROR PARSING YAML: ${e}`);
20
+ }
21
+ }
22
+
23
+ export function getSeparatorByPlatform() {
24
+ const isWin = process.platform === 'win32';
25
+ const separator = isWin ? '\\' : '/';
26
+ return separator;
27
27
  }
@@ -1,11 +1,11 @@
1
- /**
2
- * WARNING: Do not modify this file, it is part of the generic runtime handling logic
3
- * for VibeIQ app actions.
4
- */
5
-
6
-
7
- import { AppActionRequest, AppActionResponse, ActionDispatcher } from '.';
8
-
9
- export async function execute(data: AppActionRequest): Promise<AppActionResponse> {
10
- return ActionDispatcher.dispatchActionRequest(data);
11
- }
1
+ /**
2
+ * WARNING: Do not modify this file, it is part of the generic runtime handling logic
3
+ * for VibeIQ app actions.
4
+ */
5
+
6
+
7
+ import { AppActionRequest, AppActionResponse, ActionDispatcher } from '.';
8
+
9
+ export async function execute(data: AppActionRequest): Promise<AppActionResponse> {
10
+ return ActionDispatcher.dispatchActionRequest(data);
11
+ }
@@ -1,3 +1,3 @@
1
- export * from './interfaces';
2
- export * from './action-dispatcher';
1
+ export * from './interfaces';
2
+ export * from './action-dispatcher';
3
3
  export * from './logger';
@@ -1,32 +1,32 @@
1
- /**
2
- * WARNING: Do not modify this file, it is part of the generic runtime handling logic
3
- * for VibeIQ app actions.
4
- */
5
-
6
- export interface AppActionRequest {
7
- action: string;
8
- apiKey: string;
9
- orgSlug: string;
10
- taskId: string;
11
- event: any;
12
- [key:string] : any;
13
- }
14
-
15
-
16
- export interface AppActionResponse {
17
- statusCode: number;
18
- body: AppActionCallBack;
19
- }
20
-
21
- export interface AppActionCallBack {
22
- output?: any;
23
- status?: AppActionCallbackStatus;
24
- logs?: Array<string>;
25
- taskId?: string;
26
- }
27
-
28
-
29
- export enum AppActionCallbackStatus {
30
- FAILURE = 'FAILURE',
31
- SUCCESS = 'SUCCESS'
32
- }
1
+ /**
2
+ * WARNING: Do not modify this file, it is part of the generic runtime handling logic
3
+ * for VibeIQ app actions.
4
+ */
5
+
6
+ export interface AppActionRequest {
7
+ action: string;
8
+ apiKey: string;
9
+ orgSlug: string;
10
+ taskId: string;
11
+ event: any;
12
+ [key:string] : any;
13
+ }
14
+
15
+
16
+ export interface AppActionResponse {
17
+ statusCode: number;
18
+ body: AppActionCallBack;
19
+ }
20
+
21
+ export interface AppActionCallBack {
22
+ output?: any;
23
+ status?: AppActionCallbackStatus;
24
+ logs?: Array<string>;
25
+ taskId?: string;
26
+ }
27
+
28
+
29
+ export enum AppActionCallbackStatus {
30
+ FAILURE = 'FAILURE',
31
+ SUCCESS = 'SUCCESS'
32
+ }
@@ -1,21 +1,21 @@
1
- /**
2
- * WARNING: Do not modify this file, it is part of the generic runtime handling logic
3
- * for VibeIQ app actions.
4
- */
5
-
6
-
7
- export class Logger {
8
- allEntries : Array<string> = [];
9
- public log(...args){
10
- console.log(...args);
11
- this.allEntries.push(new Date().toISOString() + ': ' + args.join(''));
12
- }
13
-
14
- public getEntries(){
15
- return this.allEntries.join('\n');
16
- }
17
-
18
- public clearEntries(){
19
- this.allEntries = [];
20
- }
21
- }
1
+ /**
2
+ * WARNING: Do not modify this file, it is part of the generic runtime handling logic
3
+ * for VibeIQ app actions.
4
+ */
5
+
6
+
7
+ export class Logger {
8
+ allEntries : Array<string> = [];
9
+ public log(...args){
10
+ console.log(...args);
11
+ this.allEntries.push(new Date().toISOString() + ': ' + args.join(''));
12
+ }
13
+
14
+ public getEntries(){
15
+ return this.allEntries.join('\n');
16
+ }
17
+
18
+ public clearEntries(){
19
+ this.allEntries = [];
20
+ }
21
+ }