@contrail/cli 1.0.67 → 1.0.69

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 (170) hide show
  1. package/.eslintrc.js +53 -53
  2. package/.vscode/settings.json +5 -5
  3. package/README.md +5 -5
  4. package/bin/init +3 -3
  5. package/lib/api/apps.d.ts +13 -13
  6. package/lib/api/apps.js +85 -85
  7. package/lib/api/event-workflow-action-definition.d.ts +1 -1
  8. package/lib/api/event-workflow-action-definition.js +7 -7
  9. package/lib/api/event-workflow-template-definition.d.ts +6 -6
  10. package/lib/api/event-workflow-template-definition.js +20 -20
  11. package/lib/api/event-workflow-templates.d.ts +7 -7
  12. package/lib/api/event-workflow-templates.js +25 -25
  13. package/lib/apps/create-app/create.d.ts +1 -1
  14. package/lib/apps/create-app/create.js +60 -59
  15. package/lib/apps/create-app/setup-template.d.ts +1 -1
  16. package/lib/apps/create-app/setup-template.js +34 -34
  17. package/lib/apps/deploy-app/actions-deployer.d.ts +11 -11
  18. package/lib/apps/deploy-app/actions-deployer.js +114 -114
  19. package/lib/apps/deploy-app/app-deployer.d.ts +8 -8
  20. package/lib/apps/deploy-app/app-deployer.js +93 -93
  21. package/lib/apps/deploy-app/app-template-parsers.d.ts +7 -7
  22. package/lib/apps/deploy-app/app-template-parsers.js +38 -38
  23. package/lib/apps/deploy-app/deploy.d.ts +2 -2
  24. package/lib/apps/deploy-app/deploy.js +58 -58
  25. package/lib/apps/install-app/app-installer.d.ts +2 -2
  26. package/lib/apps/install-app/app-installer.js +120 -120
  27. package/lib/apps/upgrade-app/app-upgrader.d.ts +3 -3
  28. package/lib/apps/upgrade-app/app-upgrader.js +126 -126
  29. package/lib/auth/auth.d.ts +9 -9
  30. package/lib/auth/auth.js +2 -2
  31. package/lib/auth/login.d.ts +2 -2
  32. package/lib/auth/login.js +141 -141
  33. package/lib/cli.d.ts +5 -5
  34. package/lib/cli.js +524 -481
  35. package/lib/colors/color-loader.d.ts +2 -2
  36. package/lib/colors/color-loader.js +96 -96
  37. package/lib/common.d.ts +1 -1
  38. package/lib/common.js +5 -5
  39. package/lib/config/config.d.ts +6 -6
  40. package/lib/config/config.js +70 -70
  41. package/lib/config/configCommands.d.ts +3 -3
  42. package/lib/config/configCommands.js +34 -34
  43. package/lib/interfaces.d.ts +191 -191
  44. package/lib/interfaces.js +25 -25
  45. package/lib/loader-process/loader-process.d.ts +2 -2
  46. package/lib/loader-process/loader-process.js +120 -120
  47. package/lib/projects/interfaces.d.ts +77 -77
  48. package/lib/projects/interfaces.js +23 -23
  49. package/lib/projects/project-exporter.d.ts +2 -2
  50. package/lib/projects/project-exporter.js +187 -187
  51. package/lib/projects/project-uploader.d.ts +1 -1
  52. package/lib/projects/project-uploader.js +105 -105
  53. package/lib/types/allUploader.d.ts +1 -1
  54. package/lib/types/allUploader.js +24 -24
  55. package/lib/types/csv-parser.d.ts +1 -1
  56. package/lib/types/csv-parser.js +51 -51
  57. package/lib/types/interfaces.d.ts +55 -55
  58. package/lib/types/interfaces.js +1 -1
  59. package/lib/types/option-set-hierarchy-exporter.d.ts +1 -1
  60. package/lib/types/option-set-hierarchy-exporter.js +113 -113
  61. package/lib/types/option-set-hierarchy-parser.d.ts +2 -2
  62. package/lib/types/option-set-hierarchy-parser.js +140 -140
  63. package/lib/types/option-set-hierarchy-uploader.d.ts +1 -1
  64. package/lib/types/option-set-hierarchy-uploader.js +113 -113
  65. package/lib/types/option-set-merger.d.ts +1 -1
  66. package/lib/types/option-set-merger.js +105 -102
  67. package/lib/types/option-set-parser.d.ts +3 -1
  68. package/lib/types/option-set-parser.js +140 -50
  69. package/lib/types/option-set-uploader.d.ts +1 -1
  70. package/lib/types/option-set-uploader.js +98 -98
  71. package/lib/types/parse-types.d.ts +4 -4
  72. package/lib/types/parse-types.js +189 -189
  73. package/lib/types/rule-set-uploader.d.ts +1 -1
  74. package/lib/types/rule-set-uploader.js +172 -172
  75. package/lib/types/type-property-policy-uploader.d.ts +1 -1
  76. package/lib/types/type-property-policy-uploader.js +178 -178
  77. package/lib/types/types-extractor.d.ts +27 -27
  78. package/lib/types/types-extractor.js +318 -318
  79. package/lib/types/types-properties-merger.d.ts +1 -1
  80. package/lib/types/types-properties-merger.js +75 -75
  81. package/lib/types/types-uploader.d.ts +1 -1
  82. package/lib/types/types-uploader.js +239 -239
  83. package/lib/types/usage-info-uploader.d.ts +1 -1
  84. package/lib/types/usage-info-uploader.js +132 -132
  85. package/lib/users/user-exporter.d.ts +1 -0
  86. package/lib/users/user-exporter.js +41 -0
  87. package/lib/users/user-uploader.d.ts +1 -0
  88. package/lib/users/user-uploader.js +45 -0
  89. package/lib/workflow-template-definitions/workflow-template-definition-commands.d.ts +2 -2
  90. package/lib/workflow-template-definitions/workflow-template-definition-commands.js +10 -10
  91. package/lib/workflow-template-definitions/workflow-template-definition-deployer.d.ts +12 -12
  92. package/lib/workflow-template-definitions/workflow-template-definition-deployer.js +151 -151
  93. package/lib/workflow-templates/local-workflow-template-deployer.d.ts +11 -11
  94. package/lib/workflow-templates/local-workflow-template-deployer.js +102 -102
  95. package/lib/workflow-templates/workflow-template-commands.d.ts +4 -4
  96. package/lib/workflow-templates/workflow-template-commands.js +51 -51
  97. package/lib/workflow-templates/workflow-template-deployer.d.ts +4 -4
  98. package/lib/workflow-templates/workflow-template-deployer.js +26 -26
  99. package/package.json +72 -72
  100. package/publish.bat +5 -0
  101. package/publish.sh +4 -4
  102. package/src/api/apps.ts +96 -96
  103. package/src/api/event-workflow-action-definition.ts +7 -7
  104. package/src/api/event-workflow-template-definition.ts +22 -22
  105. package/src/api/event-workflow-templates.ts +28 -28
  106. package/src/apps/create-app/create.ts +74 -73
  107. package/src/apps/create-app/setup-template.ts +37 -37
  108. package/src/apps/deploy-app/actions-deployer.ts +140 -140
  109. package/src/apps/deploy-app/app-deployer.ts +105 -105
  110. package/src/apps/deploy-app/app-template-parsers.ts +43 -43
  111. package/src/apps/deploy-app/deploy.ts +65 -65
  112. package/src/apps/install-app/app-installer.ts +125 -125
  113. package/src/apps/upgrade-app/app-upgrader.ts +131 -131
  114. package/src/auth/auth.ts +9 -9
  115. package/src/auth/login.ts +155 -155
  116. package/src/cli.ts +540 -496
  117. package/src/colors/color-loader.ts +112 -112
  118. package/src/colors/colors.csv +866 -866
  119. package/src/common.ts +4 -4
  120. package/src/config/config.ts +74 -74
  121. package/src/config/configCommands.ts +37 -37
  122. package/src/interfaces.ts +200 -200
  123. package/src/loader-process/loader-process.ts +151 -151
  124. package/src/projects/interfaces.ts +72 -72
  125. package/src/projects/project-exporter.ts +224 -224
  126. package/src/projects/project-uploader.ts +130 -130
  127. package/src/types/allUploader.ts +28 -28
  128. package/src/types/csv-parser.ts +58 -58
  129. package/src/types/interfaces.ts +58 -58
  130. package/src/types/option-set-hierarchy-exporter.ts +124 -124
  131. package/src/types/option-set-hierarchy-parser.ts +168 -168
  132. package/src/types/option-set-hierarchy-uploader.ts +121 -121
  133. package/src/types/option-set-merger.ts +123 -122
  134. package/src/types/option-set-parser.ts +165 -59
  135. package/src/types/option-set-uploader.ts +107 -107
  136. package/src/types/parse-types.ts +226 -226
  137. package/src/types/rule-set-uploader.ts +186 -186
  138. package/src/types/type-property-policy-uploader.ts +191 -191
  139. package/src/types/types-extractor.ts +368 -368
  140. package/src/types/types-properties-merger.ts +89 -89
  141. package/src/types/types-uploader.ts +271 -271
  142. package/src/types/usage-info-uploader.ts +138 -138
  143. package/src/users/user-exporter.ts +52 -0
  144. package/src/users/user-uploader.ts +58 -0
  145. package/src/workflow-template-definitions/workflow-template-definition-commands.ts +12 -12
  146. package/src/workflow-template-definitions/workflow-template-definition-deployer.ts +184 -184
  147. package/src/workflow-templates/local-workflow-template-deployer.ts +125 -125
  148. package/src/workflow-templates/workflow-template-commands.ts +59 -59
  149. package/src/workflow-templates/workflow-template-deployer.ts +29 -29
  150. package/templates/docker_deploy.bat +1 -0
  151. package/templates/javascript/actions/example/action.js +37 -37
  152. package/templates/javascript/app.yml +52 -52
  153. package/templates/javascript/package.json +23 -23
  154. package/templates/typescript/Dockerfile +15 -14
  155. package/templates/typescript/README.md +10 -10
  156. package/templates/typescript/app.yml +50 -54
  157. package/templates/typescript/package-lock.json +14 -14
  158. package/templates/typescript/package.json +54 -52
  159. package/templates/typescript/src/actions/logItem.ts +26 -0
  160. package/templates/typescript/src/framework/action-dispatcher.ts +86 -0
  161. package/templates/typescript/src/framework/app-config.ts +27 -0
  162. package/templates/typescript/src/framework/handler.ts +11 -0
  163. package/templates/typescript/src/framework/index.ts +3 -0
  164. package/templates/typescript/src/framework/interfaces.ts +32 -0
  165. package/templates/typescript/src/framework/logger.ts +21 -0
  166. package/templates/typescript/{actions → src/framework}/mock-server.ts +7 -0
  167. package/templates/typescript/tsconfig.json +28 -27
  168. package/tsconfig.json +31 -30
  169. package/templates/typescript/actions/handler.ts +0 -62
  170. package/templates/typescript/actions/utils/logger.ts +0 -15
@@ -1,59 +1,59 @@
1
-
2
- import chalk from 'chalk';
3
- import fs from 'fs';
4
- import { authUser } from '../auth/login';
5
- import { WorkflowTemplateDeclaration } from '../interfaces';
6
- import { getSeparatorByPlatform } from '../common';
7
- const yaml = require('js-yaml');
8
- import { LocalWorkflowTemplateDeployer } from './local-workflow-template-deployer';
9
- import { WorkflowTemplateDeployer } from './workflow-template-deployer';
10
-
11
- export async function deleteWorkflowTemplates() {
12
- await authUser();
13
- await new WorkflowTemplateDeployer().deleteWorkflowTemplates();
14
- }
15
-
16
- export async function localDeleteWorkflowTemplate() {
17
- let wtDeclaration: WorkflowTemplateDeclaration;
18
- try {
19
- wtDeclaration = loadTemplateConfig();
20
- }
21
- catch (e) {
22
- console.log(`%s Workflow Deletion Failed. ${e}`, chalk.red.bold('FAIL'));
23
- return;
24
- }
25
-
26
- await authUser();
27
- await new LocalWorkflowTemplateDeployer().deleteWorkflowTemplates(wtDeclaration);
28
- }
29
-
30
- export async function localDeployWorkflowTemplate() {
31
- let wtDeclaration: WorkflowTemplateDeclaration;
32
- try {
33
- wtDeclaration = loadTemplateConfig();
34
- }
35
- catch (e) {
36
- console.log(`%s Workflow Deletion Failed. ${e}`, chalk.red.bold('FAIL'));
37
- return;
38
- }
39
-
40
- await authUser();
41
- await new LocalWorkflowTemplateDeployer().deployWorkflows(wtDeclaration);
42
- }
43
-
44
- export async function listWorkflowTemplate() {
45
- await authUser();
46
- return await new WorkflowTemplateDeployer().listExistingWorkflowTemplates();
47
- }
48
-
49
- function loadTemplateConfig() {
50
- const TARGET_DIR = process.cwd();
51
- try {
52
- const separator = getSeparatorByPlatform();
53
- const doc = yaml.load(fs.readFileSync(TARGET_DIR + separator + 'workflow.yml', 'utf8'));
54
- console.log(doc);
55
- return doc;
56
- } catch (e) {
57
- throw new Error(`ERROR PARSING YAML: ${e}`);
58
- }
59
- }
1
+
2
+ import chalk from 'chalk';
3
+ import fs from 'fs';
4
+ import { authUser } from '../auth/login';
5
+ import { WorkflowTemplateDeclaration } from '../interfaces';
6
+ import { getSeparatorByPlatform } from '../common';
7
+ const yaml = require('js-yaml');
8
+ import { LocalWorkflowTemplateDeployer } from './local-workflow-template-deployer';
9
+ import { WorkflowTemplateDeployer } from './workflow-template-deployer';
10
+
11
+ export async function deleteWorkflowTemplates() {
12
+ await authUser();
13
+ await new WorkflowTemplateDeployer().deleteWorkflowTemplates();
14
+ }
15
+
16
+ export async function localDeleteWorkflowTemplate() {
17
+ let wtDeclaration: WorkflowTemplateDeclaration;
18
+ try {
19
+ wtDeclaration = loadTemplateConfig();
20
+ }
21
+ catch (e) {
22
+ console.log(`%s Workflow Deletion Failed. ${e}`, chalk.red.bold('FAIL'));
23
+ return;
24
+ }
25
+
26
+ await authUser();
27
+ await new LocalWorkflowTemplateDeployer().deleteWorkflowTemplates(wtDeclaration);
28
+ }
29
+
30
+ export async function localDeployWorkflowTemplate() {
31
+ let wtDeclaration: WorkflowTemplateDeclaration;
32
+ try {
33
+ wtDeclaration = loadTemplateConfig();
34
+ }
35
+ catch (e) {
36
+ console.log(`%s Workflow Deletion Failed. ${e}`, chalk.red.bold('FAIL'));
37
+ return;
38
+ }
39
+
40
+ await authUser();
41
+ await new LocalWorkflowTemplateDeployer().deployWorkflows(wtDeclaration);
42
+ }
43
+
44
+ export async function listWorkflowTemplate() {
45
+ await authUser();
46
+ return await new WorkflowTemplateDeployer().listExistingWorkflowTemplates();
47
+ }
48
+
49
+ function loadTemplateConfig() {
50
+ const TARGET_DIR = process.cwd();
51
+ try {
52
+ const separator = getSeparatorByPlatform();
53
+ const doc = yaml.load(fs.readFileSync(TARGET_DIR + separator + 'workflow.yml', 'utf8'));
54
+ console.log(doc);
55
+ return doc;
56
+ } catch (e) {
57
+ throw new Error(`ERROR PARSING YAML: ${e}`);
58
+ }
59
+ }
@@ -1,30 +1,30 @@
1
- import chalk from 'chalk';
2
- import inquirer from 'inquirer';
3
- import { deleteWorkflowTemplate as apiDeleteWorkflowTemplate } from '../api/event-workflow-templates';
4
- import { getExistingWorkflowTemplates } from '../api/event-workflow-templates';
5
-
6
- export class WorkflowTemplateDeployer {
7
-
8
- async deleteWorkflowTemplates() {
9
-
10
- // FETCH ALL WORKFLOWS FROM THE API.
11
- const existingWorkflows = await getExistingWorkflowTemplates();
12
- const answers = await inquirer.prompt([{
13
- type: 'checkbox',
14
- name: 'wfTemplatesToDelete',
15
- message: 'Which templates would you like to delete (one or more)?',
16
- choices: existingWorkflows.map(x => { return { value: x.id, name: `(${x.createdOn}) ${x.name}` }; })
17
- }]);
18
- for (const idToDelete of answers.wfTemplatesToDelete) {
19
- await apiDeleteWorkflowTemplate(idToDelete);
20
- }
21
- console.log('%s \tDeleted workflow templates!', chalk.green.bold('WORKFLOW TEMPLATES'));
22
- }
23
-
24
- public async listExistingWorkflowTemplates() {
25
- const templates = await getExistingWorkflowTemplates();
26
- console.log('(Date Created) (active) workflow name');
27
- console.log('------------------------');
28
- console.log(chalk.green.bold(templates.map(x => `(${x.createdOn}) (${x.isActive? 'active': 'inactive'}) ${x.name} `).join('\n')));
29
- }
1
+ import chalk from 'chalk';
2
+ import inquirer from 'inquirer';
3
+ import { deleteWorkflowTemplate as apiDeleteWorkflowTemplate } from '../api/event-workflow-templates';
4
+ import { getExistingWorkflowTemplates } from '../api/event-workflow-templates';
5
+
6
+ export class WorkflowTemplateDeployer {
7
+
8
+ async deleteWorkflowTemplates() {
9
+
10
+ // FETCH ALL WORKFLOWS FROM THE API.
11
+ const existingWorkflows = await getExistingWorkflowTemplates();
12
+ const answers = await inquirer.prompt([{
13
+ type: 'checkbox',
14
+ name: 'wfTemplatesToDelete',
15
+ message: 'Which templates would you like to delete (one or more)?',
16
+ choices: existingWorkflows.map(x => { return { value: x.id, name: `(${x.createdOn}) ${x.name}` }; })
17
+ }]);
18
+ for (const idToDelete of answers.wfTemplatesToDelete) {
19
+ await apiDeleteWorkflowTemplate(idToDelete);
20
+ }
21
+ console.log('%s \tDeleted workflow templates!', chalk.green.bold('WORKFLOW TEMPLATES'));
22
+ }
23
+
24
+ public async listExistingWorkflowTemplates() {
25
+ const templates = await getExistingWorkflowTemplates();
26
+ console.log('(Date Created) (active) workflow name');
27
+ console.log('------------------------');
28
+ console.log(chalk.green.bold(templates.map(x => `(${x.createdOn}) (${x.isActive? 'active': 'inactive'}) ${x.name} `).join('\n')));
29
+ }
30
30
  }
@@ -0,0 +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,38 +1,38 @@
1
- async function execute(config, event, Functions) {
2
- const getBodyFromEvent = (config, event) => {
3
- let body = Functions.stringUtil.parseVariables(config.message, event);
4
- console.log('body: ', body);
5
- if (config.sendDetails) {
6
- const data = event;
7
- const properties = {};
8
- let addedProperty = false;
9
- for (const property of config.fieldsToForward) {
10
- const variableLevels = property.split('.');
11
- let replacementValue = data;
12
- for (let i = 0; i < variableLevels.length; i++) {
13
- replacementValue = replacementValue[variableLevels[i]];
14
- }
15
- properties[property] = replacementValue;
16
- addedProperty = true;
17
- }
18
- if (addedProperty) {
19
- body = body + ' Properties: ' + JSON.stringify(properties) + '.';
20
- }
21
- }
22
- return JSON.stringify({ text: body });
23
- };
24
- const body = getBodyFromEvent(config, event);
25
- console.log('Sending message: ', body);
26
- const response = await Functions.fetch(config.url, {
27
- method: 'POST',
28
- body: body,
29
- headers: { 'Content-Type': 'application/json' }
30
- });
31
- if (!response.ok) {
32
- console.log('Webhook event failed to publish');
33
- console.log('Response: ', JSON.stringify(response));
34
- }
35
- else {
36
- console.log('Published!');
37
- }
1
+ async function execute(config, event, Functions) {
2
+ const getBodyFromEvent = (config, event) => {
3
+ let body = Functions.stringUtil.parseVariables(config.message, event);
4
+ console.log('body: ', body);
5
+ if (config.sendDetails) {
6
+ const data = event;
7
+ const properties = {};
8
+ let addedProperty = false;
9
+ for (const property of config.fieldsToForward) {
10
+ const variableLevels = property.split('.');
11
+ let replacementValue = data;
12
+ for (let i = 0; i < variableLevels.length; i++) {
13
+ replacementValue = replacementValue[variableLevels[i]];
14
+ }
15
+ properties[property] = replacementValue;
16
+ addedProperty = true;
17
+ }
18
+ if (addedProperty) {
19
+ body = body + ' Properties: ' + JSON.stringify(properties) + '.';
20
+ }
21
+ }
22
+ return JSON.stringify({ text: body });
23
+ };
24
+ const body = getBodyFromEvent(config, event);
25
+ console.log('Sending message: ', body);
26
+ const response = await Functions.fetch(config.url, {
27
+ method: 'POST',
28
+ body: body,
29
+ headers: { 'Content-Type': 'application/json' }
30
+ });
31
+ if (!response.ok) {
32
+ console.log('Webhook event failed to publish');
33
+ console.log('Response: ', JSON.stringify(response));
34
+ }
35
+ else {
36
+ console.log('Published!');
37
+ }
38
38
  }
@@ -1,53 +1,53 @@
1
- appIdentifier: "@your-co/app-name"
2
- appName: "Your App Name"
3
- appDescription: "Your app description."
4
- visibility: public
5
- publisher: "Your company name"
6
- version: 1.0
7
-
8
- # eventWorkflowTriggerKeyMapping will be used to parse an incoming event into a key that can trigger workflows
9
- # {} indicates a field on the event. You can use nested fields by separating the levels with a '.'
10
- # i.e. an event {details: {eventType: 'apparel'}, actionType: 'create'} can be parsed to apparel|create with the following
11
- eventWorkflowTriggerKeyMapping: "{details.eventType}|{actionType}"
12
-
13
- appConfiguration:
14
- apiHost:
15
- label: "API Host"
16
- propertyType: "string"
17
- userName:
18
- label: "User Name"
19
- propertyType: "string"
20
- password:
21
- label: "Password"
22
- propertyType: "string"
23
-
24
- actions:
25
- updateProduct:
26
- handler: actions/example/action.js
27
- name: "Update Product"
28
- description: "Updates a product in the destination system."
29
- actionConfiguration:
30
- email:
31
- label: "Email Address"
32
- propertyType: "string"
33
-
34
- triggers:
35
- trigger1:
36
- key: product|create
37
- name: "External Product Created"
38
- external: true
39
- description: "Triggers on externally created products"
40
-
41
- # workflows:
42
- # workflow1:
43
- # triggerKey: item|update
44
- # isActive: true
45
- # name: test wf from cli
46
- # workflowDefinition:
47
- # paths:
48
- # - conditional: "true"
49
- # actionDefinitionConfigs:
50
- # - action: updateProduct
51
- # name: handle product update
52
- # config:
1
+ appIdentifier: "@your-co/app-name"
2
+ appName: "Your App Name"
3
+ appDescription: "Your app description."
4
+ visibility: public
5
+ publisher: "Your company name"
6
+ version: 1.0
7
+
8
+ # eventWorkflowTriggerKeyMapping will be used to parse an incoming event into a key that can trigger workflows
9
+ # {} indicates a field on the event. You can use nested fields by separating the levels with a '.'
10
+ # i.e. an event {details: {eventType: 'apparel'}, actionType: 'create'} can be parsed to apparel|create with the following
11
+ eventWorkflowTriggerKeyMapping: "{details.eventType}|{actionType}"
12
+
13
+ appConfiguration:
14
+ apiHost:
15
+ label: "API Host"
16
+ propertyType: "string"
17
+ userName:
18
+ label: "User Name"
19
+ propertyType: "string"
20
+ password:
21
+ label: "Password"
22
+ propertyType: "string"
23
+
24
+ actions:
25
+ updateProduct:
26
+ handler: actions/example/action.js
27
+ name: "Update Product"
28
+ description: "Updates a product in the destination system."
29
+ actionConfiguration:
30
+ email:
31
+ label: "Email Address"
32
+ propertyType: "string"
33
+
34
+ triggers:
35
+ trigger1:
36
+ key: product|create
37
+ name: "External Product Created"
38
+ external: true
39
+ description: "Triggers on externally created products"
40
+
41
+ # workflows:
42
+ # workflow1:
43
+ # triggerKey: item|update
44
+ # isActive: true
45
+ # name: test wf from cli
46
+ # workflowDefinition:
47
+ # paths:
48
+ # - conditional: "true"
49
+ # actionDefinitionConfigs:
50
+ # - action: updateProduct
51
+ # name: handle product update
52
+ # config:
53
53
  # message: "hello world"
@@ -1,23 +1,23 @@
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
- "publishConfig": {
11
- "access": "public"
12
- },
13
- "scripts": {
14
- "test": "echo \"Error: no test specified\" && exit 1"
15
- },
16
- "keywords": [
17
- ],
18
- "author": "",
19
- "license": "ISC",
20
- "dependencies": {
21
- "chalk": "^4.0.0"
22
- }
23
- }
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
+ "publishConfig": {
11
+ "access": "public"
12
+ },
13
+ "scripts": {
14
+ "test": "echo \"Error: no test specified\" && exit 1"
15
+ },
16
+ "keywords": [
17
+ ],
18
+ "author": "",
19
+ "license": "ISC",
20
+ "dependencies": {
21
+ "chalk": "^4.0.0"
22
+ }
23
+ }
@@ -1,14 +1,15 @@
1
- # docker build -t app-name .
2
- # docker run -p 9000:8080 app-name
3
- FROM public.ecr.aws/lambda/nodejs:16
4
-
5
- # Install NPM dependencies for function
6
- COPY package* ${LAMBDA_TASK_ROOT}
7
- RUN npm install
8
-
9
- COPY tsconfig.json ${LAMBDA_TASK_ROOT}
10
- COPY actions/ ${LAMBDA_TASK_ROOT}/actions
11
-
12
- RUN npm run build
13
-
14
- CMD ["dist/handler.execute"]
1
+ # docker build -t app-name .
2
+ # docker run -p 9000:8080 app-name
3
+ FROM public.ecr.aws/lambda/nodejs:16
4
+
5
+ # Install NPM dependencies for function
6
+ COPY package* ${LAMBDA_TASK_ROOT}
7
+ COPY app.yml ${LAMBDA_TASK_ROOT}
8
+ RUN npm install
9
+
10
+ COPY tsconfig.json ${LAMBDA_TASK_ROOT}
11
+ COPY src/ ${LAMBDA_TASK_ROOT}/src
12
+
13
+ RUN npm run build
14
+
15
+ CMD ["dist/framework/handler.execute"]
@@ -1,10 +1,10 @@
1
- ### building and uploading docker image to ECR
2
- 1. set AWS_REGISTRY environment variable to be able to tag and/or push to ECR
3
- ### Example: xxx.dkr.ecr.us-east-1.amazonaws.com
4
- 1. To build, run, tag, and push using docker, there are npm scripts that can be used.
5
- 2. The npm scripts use the npm package name, version, and config fields to set the appropriate values
6
- 3. OPTIONAL: if you want to inspect the container you can run `npm run docker-run-entry`
7
- 4. OPTIONAL: if you want to run this locally using port 9000, you can run `npm run docker-run`
8
- 5. To tag the image for pushing to ECR `npm run docker-tag`
9
- 6. To push the image to ECR `npm run docker-push`
10
- 7. All the npm scripts have a ':win" version to run on windows
1
+ ### building and uploading docker image to ECR
2
+ 1. set AWS_REGISTRY environment variable to be able to tag and/or push to ECR
3
+ ### Example: xxx.dkr.ecr.us-east-1.amazonaws.com
4
+ 1. To build, run, tag, and push using docker, there are npm scripts that can be used.
5
+ 2. The npm scripts use the npm package name, version, and config fields to set the appropriate values
6
+ 3. OPTIONAL: if you want to inspect the container you can run `npm run docker-run-entry`
7
+ 4. OPTIONAL: if you want to run this locally using port 9000, you can run `npm run docker-run`
8
+ 5. To tag the image for pushing to ECR `npm run docker-tag`
9
+ 6. To push the image to ECR `npm run docker-push`
10
+ 7. All the npm scripts have a ':win" version to run on windows
@@ -1,54 +1,50 @@
1
- appIdentifier: "@your-co/app-name"
2
- appName: "Your App Name"
3
- appDescription: "Your app description."
4
- visibility: public
5
- publisher: "Your company name"
6
- version: 1.0
7
- dockerImageRef: CHANGE_ME
8
-
9
- # eventWorkflowTriggerKeyMapping will be used to parse an incoming event into a key that can trigger workflows
10
- # {} indicates a field on the event. You can use nested fields by separating the levels with a '.'
11
- # i.e. an event {details: {eventType: 'apparel'}, actionType: 'create'} can be parsed to apparel|create with the following
12
- eventWorkflowTriggerKeyMapping: "{details.eventType}|{actionType}"
13
-
14
- appConfiguration:
15
- apiHost:
16
- label: "API Host"
17
- propertyType: "string"
18
- userName:
19
- label: "User Name"
20
- propertyType: "string"
21
- password:
22
- label: "Password"
23
- propertyType: "string"
24
-
25
- # Actions can be written in .ts but must be compiled to .js before deployment.
26
- actions:
27
- updateProduct:
28
- name: "Update Product"
29
- description: "Updates a product in the destination system."
30
- async: false # default is false
31
- actionConfiguration:
32
- email:
33
- label: "Email Address"
34
- propertyType: "string"
35
-
36
- triggers:
37
- trigger1:
38
- key: product|create
39
- name: "External Product Created"
40
- external: true
41
- description: "Triggers on externally created products"
42
-
43
- workflows:
44
- workflow1:
45
- name: "Update item on product creation"
46
- triggerKey: product|create
47
- isActive: true
48
- public: true
49
- workflowDefinition:
50
- paths:
51
- - conditional: "{retailPrice} > 10"
52
- actionDefinitionConfigs:
53
- - action: updateProduct
54
- name: Update Product
1
+ appIdentifier: "@your-co/app-name"
2
+ appName: "Your App Name"
3
+ appDescription: "Your app description."
4
+ visibility: private
5
+ publisher: "Your company name"
6
+ version: 1.0
7
+ dockerImageRef: CHANGE_ME
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
+ exampleAction:
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: "Additinoal 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
+ eventWorkflowTriggerKeyMapping: "{details.eventType}|{actionType}"
@@ -1,14 +1,14 @@
1
- {
2
- "name": "test-app",
3
- "version": "1.0.0",
4
- "lockfileVersion": 1,
5
- "requires": true,
6
- "dependencies": {
7
- "typescript": {
8
- "version": "4.7.4",
9
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
10
- "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
11
- "dev": true
12
- }
13
- }
14
- }
1
+ {
2
+ "name": "test-app",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 1,
5
+ "requires": true,
6
+ "dependencies": {
7
+ "typescript": {
8
+ "version": "4.7.4",
9
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
10
+ "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
11
+ "dev": true
12
+ }
13
+ }
14
+ }