@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,52 +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 'actions/**/*.ts' --exec ts-node actions/mock-server.ts",
19
- "debug": "nodemon -r ts-node/register --inspect=127.0.0.1:60002 --watch 'actions/**/*.ts' --exec node actions/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.53",
41
- "chalk": "^4.0.0"
42
- },
43
- "devDependencies": {
44
- "body-parser": "^1.20.2",
45
- "express": "^4.18.2",
46
- "nodemon": "^1.19.4",
47
- "jest": "^29.2.2",
48
- "ts-jest": "^29.0.3",
49
- "ts-node": "^7.0.1",
50
- "typescript": "^4.7.4"
51
- }
52
- }
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
+ }
@@ -0,0 +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
+ };
26
+ }
@@ -0,0 +1,86 @@
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 { loadAppConfig } from "./app-config";
8
+ import { AppActionCallbackStatus, AppActionRequest, AppActionResponse } from "./interfaces";
9
+ import { Logger } from "./logger";
10
+
11
+ const APP_CONFIG = loadAppConfig();
12
+ const appName = APP_CONFIG.appIdentifier;
13
+
14
+ export class ActionDispatcher {
15
+
16
+ public static async dispatchActionRequest(data: AppActionRequest) : Promise<AppActionResponse> {
17
+ const logger = new Logger();
18
+ const event = (typeof data.event === 'string')
19
+ ? JSON.parse(data.event)
20
+ : data.event;
21
+
22
+ return ActionDispatcher.delegateToHandler(event, data, logger);
23
+ }
24
+
25
+ private static async delegateToHandler(event, data: AppActionRequest, logger: Logger) : Promise<AppActionResponse>{
26
+ try {
27
+ const handler = ActionDispatcher.getActionHandler(data);
28
+ let actionResults = await handler(event, data, logger)
29
+ let body: any = {
30
+ logs: logger.allEntries,
31
+ taskId: data.taskId,
32
+ status: AppActionCallbackStatus.SUCCESS,
33
+ };
34
+
35
+ if(typeof actionResults === 'string'){
36
+ body.output = { message: actionResults }
37
+ } else if(typeof actionResults === 'object'){
38
+ if(actionResults.output){
39
+ body.output = actionResults.output;
40
+ }
41
+ if(actionResults.status) {
42
+ body.status = actionResults.status;
43
+ }
44
+ }
45
+ return {
46
+ statusCode: 200,
47
+ body
48
+ }
49
+ } catch (error) {
50
+ console.log("Error caught in handling action: ", error)
51
+ return {
52
+ statusCode: 500,
53
+ body: {
54
+ output: {
55
+ errorMessage: error.message,
56
+ },
57
+ taskId: data.taskId,
58
+ logs: logger.allEntries,
59
+ status: AppActionCallbackStatus.FAILURE,
60
+ }
61
+ }
62
+ }
63
+ }
64
+
65
+ /** Retrives the handler function for the requested action
66
+ */
67
+ private static getActionHandler(data: AppActionRequest): (event, data, logger) => any {
68
+ try {
69
+ const actionPath = data.action;
70
+ const actionName = actionPath.substring(appName.length + 1, actionPath.length);
71
+ console.log('action: ', actionPath, actionName);
72
+ const handlerFile = require(`../actions/${actionName}`);
73
+ if(!handlerFile) {
74
+ throw new Error(`Handler file could not be located for action : ${data.action}`);
75
+ }
76
+ const handlerFunction = handlerFile.execute;
77
+ if(!handlerFunction) {
78
+ throw new Error(`Handler function 'execute' could not be located for action : ${data.action}`);
79
+ }
80
+ return handlerFunction;
81
+ } catch (error) {
82
+ console.log("Error caught in getActionHandler: ", error)
83
+ throw new Error(`Could not locate handler function for requested action: ${data.action}`);
84
+ }
85
+ }
86
+ }
@@ -0,0 +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;
27
+ }
@@ -0,0 +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
+ }
@@ -0,0 +1,3 @@
1
+ export * from './interfaces';
2
+ export * from './action-dispatcher';
3
+ export * from './logger';
@@ -0,0 +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
+ }
@@ -0,0 +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,4 +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
+
1
7
  import { execute } from './handler';
8
+
2
9
  const express = require('express');
3
10
  const bodyParser = require('body-parser');
4
11
  const app = express();
@@ -1,27 +1,28 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2020",
4
- "module": "commonjs",
5
- "declaration": true,
6
- "esModuleInterop": true,
7
- "outDir": "dist",
8
- "strict": false,
9
- "experimentalDecorators": true,
10
- "strictPropertyInitialization": false,
11
- "noImplicitAny": false,
12
- "emitDecoratorMetadata": true,
13
- "skipLibCheck": true,
14
- "moduleResolution": "node",
15
- "lib": [
16
- "es5",
17
- "ES2015",
18
- "ES2016",
19
- "ES2017",
20
- "ES2020",
21
- "dom",
22
- "esnext.asynciterable"
23
- ]
24
- },
25
- "include": ["actions"],
26
- "exclude": ["node_modules", "**/__tests__/*"]
27
- }
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "module": "commonjs",
5
+ "declaration": true,
6
+ "esModuleInterop": true,
7
+ "outDir": "dist",
8
+ "strict": false,
9
+ "experimentalDecorators": true,
10
+ "strictPropertyInitialization": false,
11
+ "noImplicitAny": false,
12
+ "emitDecoratorMetadata": true,
13
+ "skipLibCheck": true,
14
+ "moduleResolution": "node",
15
+ "lib": [
16
+ "es5",
17
+ "ES2015",
18
+ "ES2016",
19
+ "ES2017",
20
+ "ES2020",
21
+ "dom",
22
+ "esnext.asynciterable"
23
+ ],
24
+ "types": ["node"]
25
+ },
26
+ "include": ["src"],
27
+ "exclude": ["node_modules", "**/__tests__/*"]
28
+ }
package/tsconfig.json CHANGED
@@ -1,31 +1,32 @@
1
- {
2
- "compilerOptions": {
3
- "target": "es2017",
4
- "module": "esnext",
5
- "declaration": true,
6
- "esModuleInterop": true,
7
- "outDir": "./lib",
8
- "strict": false,
9
- "experimentalDecorators": true,
10
- "strictPropertyInitialization": false,
11
- "noImplicitAny": false,
12
- "emitDecoratorMetadata": true,
13
- "skipLibCheck": true,
14
- "moduleResolution": "node",
15
- "lib": [
16
- "es5",
17
- "ES2015",
18
- "ES2016",
19
- "ES2017",
20
- "dom",
21
- "esnext.asynciterable"
22
- ],
23
- },
24
- "include": [
25
- "src"
26
- ],
27
- "exclude": [
28
- "node_modules",
29
- "**/__tests__/*"
30
- ]
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es2017",
4
+ "module": "esnext",
5
+ "declaration": true,
6
+ "esModuleInterop": true,
7
+ "outDir": "./lib",
8
+ "strict": false,
9
+ "experimentalDecorators": true,
10
+ "strictPropertyInitialization": false,
11
+ "noImplicitAny": false,
12
+ "emitDecoratorMetadata": true,
13
+ "skipLibCheck": true,
14
+ "moduleResolution": "node",
15
+ "lib": [
16
+ "es5",
17
+ "ES2015",
18
+ "ES2016",
19
+ "ES2017",
20
+ "ES2020",
21
+ "dom",
22
+ "esnext.asynciterable"
23
+ ]
24
+ },
25
+ "include": [
26
+ "src"
27
+ ],
28
+ "exclude": [
29
+ "node_modules",
30
+ "**/__tests__/*"
31
+ ]
31
32
  }
@@ -1,62 +0,0 @@
1
- import { login } from '@contrail/sdk';
2
- import { Logger } from './utils/logger';
3
-
4
- export async function execute(data) {
5
- const logger = new Logger();
6
- const event = (typeof data.event === 'string')
7
- ? JSON.parse(data.event)
8
- : data.event;
9
- data = JSON.parse(JSON.stringify(data));
10
- logger.log(JSON.stringify(data, null, 2));
11
- if (!data.apiHost || !data.userName || !data.password) {
12
- // not really. This is just to demo how to retrieve an app config
13
- const message = 'This action requires an api host, a username, and a password to run';
14
- const body = {
15
- message,
16
- logs: [message]
17
- };
18
- return {
19
- statusCode: 400,
20
- body
21
- };
22
- }
23
-
24
- try {
25
- await login({ apiKey: data.apiKey, orgSlug: data.orgSlug });
26
- const results = {};
27
-
28
- logger.log('Sending message: ', event);
29
- const response = await fetch(data.apiHost, {
30
- headers: { 'Content-Type': 'application/json' }
31
- });
32
- if (!response.ok) {
33
- logger.log('Webhook event failed to publish');
34
- }
35
- else {
36
- logger.log('Published!');
37
- }
38
- logger.log('Response: ', JSON.stringify(response));
39
-
40
- results['logs'] = logger.getEntries();
41
-
42
- logger.log('returning: ' + JSON.stringify(results));
43
- return {
44
- statusCode: 200,
45
- body: JSON.stringify(results)
46
- };
47
-
48
- } catch (e) {
49
- logger.log('returning failure: ' + e.message);
50
- const body = {
51
- message: 'failed',
52
- error: e.message,
53
- logs: logger.getEntries()
54
- };
55
-
56
- return {
57
- statusCode: 400,
58
- body: JSON.stringify(body),
59
- };
60
- }
61
-
62
- }
@@ -1,15 +0,0 @@
1
- export class Logger {
2
- allEntries = [];
3
- public log(...args){
4
- console.log(...args);
5
- this.allEntries.push(args);
6
- }
7
-
8
- public getEntries(){
9
- return this.allEntries.join('\n');
10
- }
11
-
12
- public clearEntries(){
13
- this.allEntries = [];
14
- }
15
- }