@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.
- package/.eslintrc.js +53 -53
- package/.vscode/settings.json +5 -5
- package/README.md +5 -5
- package/bin/init +3 -3
- package/lib/api/apps.d.ts +13 -13
- package/lib/api/apps.js +85 -85
- package/lib/api/event-workflow-action-definition.d.ts +1 -1
- package/lib/api/event-workflow-action-definition.js +7 -7
- package/lib/api/event-workflow-template-definition.d.ts +6 -6
- package/lib/api/event-workflow-template-definition.js +20 -20
- package/lib/api/event-workflow-templates.d.ts +7 -7
- package/lib/api/event-workflow-templates.js +25 -25
- package/lib/apps/create-app/create.d.ts +1 -1
- package/lib/apps/create-app/create.js +60 -59
- package/lib/apps/create-app/setup-template.d.ts +1 -1
- package/lib/apps/create-app/setup-template.js +34 -34
- package/lib/apps/deploy-app/actions-deployer.d.ts +11 -11
- package/lib/apps/deploy-app/actions-deployer.js +114 -114
- package/lib/apps/deploy-app/app-deployer.d.ts +8 -8
- package/lib/apps/deploy-app/app-deployer.js +93 -93
- package/lib/apps/deploy-app/app-template-parsers.d.ts +7 -7
- package/lib/apps/deploy-app/app-template-parsers.js +38 -38
- package/lib/apps/deploy-app/deploy.d.ts +2 -2
- package/lib/apps/deploy-app/deploy.js +58 -58
- package/lib/apps/install-app/app-installer.d.ts +2 -2
- package/lib/apps/install-app/app-installer.js +120 -120
- package/lib/apps/upgrade-app/app-upgrader.d.ts +3 -3
- package/lib/apps/upgrade-app/app-upgrader.js +126 -126
- package/lib/auth/auth.d.ts +9 -9
- package/lib/auth/auth.js +2 -2
- package/lib/auth/login.d.ts +2 -2
- package/lib/auth/login.js +141 -141
- package/lib/cli.d.ts +5 -5
- package/lib/cli.js +524 -481
- package/lib/colors/color-loader.d.ts +2 -2
- package/lib/colors/color-loader.js +96 -96
- package/lib/common.d.ts +1 -1
- package/lib/common.js +5 -5
- package/lib/config/config.d.ts +6 -6
- package/lib/config/config.js +70 -70
- package/lib/config/configCommands.d.ts +3 -3
- package/lib/config/configCommands.js +34 -34
- package/lib/interfaces.d.ts +191 -191
- package/lib/interfaces.js +25 -25
- package/lib/loader-process/loader-process.d.ts +2 -2
- package/lib/loader-process/loader-process.js +120 -120
- package/lib/projects/interfaces.d.ts +77 -77
- package/lib/projects/interfaces.js +23 -23
- package/lib/projects/project-exporter.d.ts +2 -2
- package/lib/projects/project-exporter.js +187 -187
- package/lib/projects/project-uploader.d.ts +1 -1
- package/lib/projects/project-uploader.js +105 -105
- package/lib/types/allUploader.d.ts +1 -1
- package/lib/types/allUploader.js +24 -24
- package/lib/types/csv-parser.d.ts +1 -1
- package/lib/types/csv-parser.js +51 -51
- package/lib/types/interfaces.d.ts +55 -55
- package/lib/types/interfaces.js +1 -1
- package/lib/types/option-set-hierarchy-exporter.d.ts +1 -1
- package/lib/types/option-set-hierarchy-exporter.js +113 -113
- package/lib/types/option-set-hierarchy-parser.d.ts +2 -2
- package/lib/types/option-set-hierarchy-parser.js +140 -140
- package/lib/types/option-set-hierarchy-uploader.d.ts +1 -1
- package/lib/types/option-set-hierarchy-uploader.js +113 -113
- package/lib/types/option-set-merger.d.ts +1 -1
- package/lib/types/option-set-merger.js +105 -102
- package/lib/types/option-set-parser.d.ts +3 -1
- package/lib/types/option-set-parser.js +140 -50
- package/lib/types/option-set-uploader.d.ts +1 -1
- package/lib/types/option-set-uploader.js +98 -98
- package/lib/types/parse-types.d.ts +4 -4
- package/lib/types/parse-types.js +189 -189
- package/lib/types/rule-set-uploader.d.ts +1 -1
- package/lib/types/rule-set-uploader.js +172 -172
- package/lib/types/type-property-policy-uploader.d.ts +1 -1
- package/lib/types/type-property-policy-uploader.js +178 -178
- package/lib/types/types-extractor.d.ts +27 -27
- package/lib/types/types-extractor.js +318 -318
- package/lib/types/types-properties-merger.d.ts +1 -1
- package/lib/types/types-properties-merger.js +75 -75
- package/lib/types/types-uploader.d.ts +1 -1
- package/lib/types/types-uploader.js +239 -239
- package/lib/types/usage-info-uploader.d.ts +1 -1
- package/lib/types/usage-info-uploader.js +132 -132
- package/lib/users/user-exporter.d.ts +1 -0
- package/lib/users/user-exporter.js +41 -0
- package/lib/users/user-uploader.d.ts +1 -0
- package/lib/users/user-uploader.js +45 -0
- package/lib/workflow-template-definitions/workflow-template-definition-commands.d.ts +2 -2
- package/lib/workflow-template-definitions/workflow-template-definition-commands.js +10 -10
- package/lib/workflow-template-definitions/workflow-template-definition-deployer.d.ts +12 -12
- package/lib/workflow-template-definitions/workflow-template-definition-deployer.js +151 -151
- package/lib/workflow-templates/local-workflow-template-deployer.d.ts +11 -11
- package/lib/workflow-templates/local-workflow-template-deployer.js +102 -102
- package/lib/workflow-templates/workflow-template-commands.d.ts +4 -4
- package/lib/workflow-templates/workflow-template-commands.js +51 -51
- package/lib/workflow-templates/workflow-template-deployer.d.ts +4 -4
- package/lib/workflow-templates/workflow-template-deployer.js +26 -26
- package/package.json +72 -72
- package/publish.bat +5 -0
- package/publish.sh +4 -4
- package/src/api/apps.ts +96 -96
- package/src/api/event-workflow-action-definition.ts +7 -7
- package/src/api/event-workflow-template-definition.ts +22 -22
- package/src/api/event-workflow-templates.ts +28 -28
- package/src/apps/create-app/create.ts +74 -73
- package/src/apps/create-app/setup-template.ts +37 -37
- package/src/apps/deploy-app/actions-deployer.ts +140 -140
- package/src/apps/deploy-app/app-deployer.ts +105 -105
- package/src/apps/deploy-app/app-template-parsers.ts +43 -43
- package/src/apps/deploy-app/deploy.ts +65 -65
- package/src/apps/install-app/app-installer.ts +125 -125
- package/src/apps/upgrade-app/app-upgrader.ts +131 -131
- package/src/auth/auth.ts +9 -9
- package/src/auth/login.ts +155 -155
- package/src/cli.ts +540 -496
- package/src/colors/color-loader.ts +112 -112
- package/src/colors/colors.csv +866 -866
- package/src/common.ts +4 -4
- package/src/config/config.ts +74 -74
- package/src/config/configCommands.ts +37 -37
- package/src/interfaces.ts +200 -200
- package/src/loader-process/loader-process.ts +151 -151
- package/src/projects/interfaces.ts +72 -72
- package/src/projects/project-exporter.ts +224 -224
- package/src/projects/project-uploader.ts +130 -130
- package/src/types/allUploader.ts +28 -28
- package/src/types/csv-parser.ts +58 -58
- package/src/types/interfaces.ts +58 -58
- package/src/types/option-set-hierarchy-exporter.ts +124 -124
- package/src/types/option-set-hierarchy-parser.ts +168 -168
- package/src/types/option-set-hierarchy-uploader.ts +121 -121
- package/src/types/option-set-merger.ts +123 -122
- package/src/types/option-set-parser.ts +165 -59
- package/src/types/option-set-uploader.ts +107 -107
- package/src/types/parse-types.ts +226 -226
- package/src/types/rule-set-uploader.ts +186 -186
- package/src/types/type-property-policy-uploader.ts +191 -191
- package/src/types/types-extractor.ts +368 -368
- package/src/types/types-properties-merger.ts +89 -89
- package/src/types/types-uploader.ts +271 -271
- package/src/types/usage-info-uploader.ts +138 -138
- package/src/users/user-exporter.ts +52 -0
- package/src/users/user-uploader.ts +58 -0
- package/src/workflow-template-definitions/workflow-template-definition-commands.ts +12 -12
- package/src/workflow-template-definitions/workflow-template-definition-deployer.ts +184 -184
- package/src/workflow-templates/local-workflow-template-deployer.ts +125 -125
- package/src/workflow-templates/workflow-template-commands.ts +59 -59
- package/src/workflow-templates/workflow-template-deployer.ts +29 -29
- package/templates/docker_deploy.bat +1 -0
- package/templates/javascript/actions/example/action.js +37 -37
- package/templates/javascript/app.yml +52 -52
- package/templates/javascript/package.json +23 -23
- package/templates/typescript/Dockerfile +15 -14
- package/templates/typescript/README.md +10 -10
- package/templates/typescript/app.yml +50 -54
- package/templates/typescript/package-lock.json +14 -14
- package/templates/typescript/package.json +54 -52
- package/templates/typescript/src/actions/logItem.ts +26 -0
- package/templates/typescript/src/framework/action-dispatcher.ts +86 -0
- package/templates/typescript/src/framework/app-config.ts +27 -0
- package/templates/typescript/src/framework/handler.ts +11 -0
- package/templates/typescript/src/framework/index.ts +3 -0
- package/templates/typescript/src/framework/interfaces.ts +32 -0
- package/templates/typescript/src/framework/logger.ts +21 -0
- package/templates/typescript/{actions → src/framework}/mock-server.ts +7 -0
- package/templates/typescript/tsconfig.json +28 -27
- package/tsconfig.json +31 -30
- package/templates/typescript/actions/handler.ts +0 -62
- 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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
COPY
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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:
|
|
5
|
-
publisher: "Your company name"
|
|
6
|
-
version: 1.0
|
|
7
|
-
dockerImageRef: CHANGE_ME
|
|
8
|
-
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
+
}
|