@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
package/src/common.ts CHANGED
@@ -1,5 +1,5 @@
1
- export function getSeparatorByPlatform() {
2
- const isWin = process.platform === 'win32';
3
- const separator = isWin ? '\\' : '/';
4
- return separator;
1
+ export function getSeparatorByPlatform() {
2
+ const isWin = process.platform === 'win32';
3
+ const separator = isWin ? '\\' : '/';
4
+ return separator;
5
5
  }
@@ -1,74 +1,74 @@
1
- import { promises as fsPromises } from 'fs';
2
- import { join } from 'path';
3
- import {homedir} from 'os';
4
- const userHomeDir = homedir();
5
- const configDirectoryLocation = join(userHomeDir, '.vibeiq');
6
- const configFileLocation = join(configDirectoryLocation, 'config.json');
7
-
8
- export async function initializeVibeIQConfig() {
9
- try{
10
- await fsPromises.mkdir(configDirectoryLocation, {recursive: true});
11
- } catch (e) {
12
- console.error('could not initialize vibeiq directory');
13
- throw e;
14
- }
15
-
16
- try {
17
- await fsPromises.writeFile(configFileLocation, '{}');
18
- } catch (e) {
19
- console.error(`could not initialize config file (${configFileLocation}).`);
20
- throw e;
21
- }
22
- }
23
- export async function readVibeIQConfig() {
24
- let fileContent;
25
- try {
26
- fileContent = await fsPromises.readFile(configFileLocation);
27
- } catch (e) {
28
- console.debug(`failed to open config file (${configFileLocation}) for reading.`);
29
- console.debug('trying to initialize config file');
30
- await initializeVibeIQConfig();
31
- fileContent = await fsPromises.readFile(configFileLocation);
32
- }
33
-
34
- try {
35
- return JSON.parse(fileContent);
36
- } catch (e) {
37
- console.error(`Could not parse local vibeiq config. The file (${configFileLocation}) might be malformed`);
38
- }
39
- }
40
-
41
- export async function writeVibeIQConfig(config: any) {
42
- try {
43
- await fsPromises.writeFile(configFileLocation, JSON.stringify(config, null, 2));
44
- } catch (e) {
45
- console.error(`Could not open config file (${configFileLocation}) for writing.`);
46
- throw e;
47
- }
48
- }
49
-
50
- export async function getConfig() {
51
- console.debug('getting config from file system');
52
- return await readVibeIQConfig();
53
- }
54
-
55
- export async function deleteConfigs(configNames: string[]) {
56
- const currentConfig = await readVibeIQConfig();
57
- for(const configName of configNames) {
58
- delete currentConfig[configName];
59
- }
60
- await storeConfig(currentConfig, false);
61
- }
62
-
63
- export async function storeConfig(incomingConfig: any, merge=true) {
64
- let config;
65
- if (merge) {
66
- config = {
67
- ... await readVibeIQConfig(),
68
- ... incomingConfig
69
- };
70
- } else {
71
- config = incomingConfig;
72
- }
73
- await writeVibeIQConfig(config);
74
- }
1
+ import { promises as fsPromises } from 'fs';
2
+ import { join } from 'path';
3
+ import {homedir} from 'os';
4
+ const userHomeDir = homedir();
5
+ const configDirectoryLocation = join(userHomeDir, '.vibeiq');
6
+ const configFileLocation = join(configDirectoryLocation, 'config.json');
7
+
8
+ export async function initializeVibeIQConfig() {
9
+ try{
10
+ await fsPromises.mkdir(configDirectoryLocation, {recursive: true});
11
+ } catch (e) {
12
+ console.error('could not initialize vibeiq directory');
13
+ throw e;
14
+ }
15
+
16
+ try {
17
+ await fsPromises.writeFile(configFileLocation, '{}');
18
+ } catch (e) {
19
+ console.error(`could not initialize config file (${configFileLocation}).`);
20
+ throw e;
21
+ }
22
+ }
23
+ export async function readVibeIQConfig() {
24
+ let fileContent;
25
+ try {
26
+ fileContent = await fsPromises.readFile(configFileLocation);
27
+ } catch (e) {
28
+ console.debug(`failed to open config file (${configFileLocation}) for reading.`);
29
+ console.debug('trying to initialize config file');
30
+ await initializeVibeIQConfig();
31
+ fileContent = await fsPromises.readFile(configFileLocation);
32
+ }
33
+
34
+ try {
35
+ return JSON.parse(fileContent);
36
+ } catch (e) {
37
+ console.error(`Could not parse local vibeiq config. The file (${configFileLocation}) might be malformed`);
38
+ }
39
+ }
40
+
41
+ export async function writeVibeIQConfig(config: any) {
42
+ try {
43
+ await fsPromises.writeFile(configFileLocation, JSON.stringify(config, null, 2));
44
+ } catch (e) {
45
+ console.error(`Could not open config file (${configFileLocation}) for writing.`);
46
+ throw e;
47
+ }
48
+ }
49
+
50
+ export async function getConfig() {
51
+ console.debug('getting config from file system');
52
+ return await readVibeIQConfig();
53
+ }
54
+
55
+ export async function deleteConfigs(configNames: string[]) {
56
+ const currentConfig = await readVibeIQConfig();
57
+ for(const configName of configNames) {
58
+ delete currentConfig[configName];
59
+ }
60
+ await storeConfig(currentConfig, false);
61
+ }
62
+
63
+ export async function storeConfig(incomingConfig: any, merge=true) {
64
+ let config;
65
+ if (merge) {
66
+ config = {
67
+ ... await readVibeIQConfig(),
68
+ ... incomingConfig
69
+ };
70
+ } else {
71
+ config = incomingConfig;
72
+ }
73
+ await writeVibeIQConfig(config);
74
+ }
@@ -1,38 +1,38 @@
1
- import {deleteConfigs, readVibeIQConfig, storeConfig} from './config';
2
- export async function listConfig() {
3
- console.log(await readVibeIQConfig());
4
- }
5
-
6
- export async function setConfig(args) {
7
- const helpConfigLine = `
8
- Usage:
9
- contrail config.set key1=value1 key2=value2
10
- `;
11
- if (args?.length < 4) {
12
- console.log(helpConfigLine);
13
- throw new Error('You need to pass at least one config to set');
14
- }
15
- const configsToSet = args.slice(3);
16
- const config = {};
17
- for(const conf of configsToSet) {
18
- if(conf.length < 3 || conf.indexOf('=') <= 0) {
19
- console.log(helpConfigLine);
20
- throw new Error(`value ${conf} does not adhere to key1=value1 standard`);
21
- }
22
- const [key, value] = conf.split('=');
23
- console.log('key and value:', key, value);
24
- console.log(conf.split('='));
25
- config[key] = value;
26
- }
27
- console.log('config is:', config);
28
- await storeConfig(config);
29
- }
30
-
31
- export async function removeConfig(args) {
32
- if (args?.length < 4) {
33
- throw new Error('At least one configuration must be included to be removed.');
34
- }
35
-
36
- await deleteConfigs(args.slice(3));
37
-
1
+ import {deleteConfigs, readVibeIQConfig, storeConfig} from './config';
2
+ export async function listConfig() {
3
+ console.log(await readVibeIQConfig());
4
+ }
5
+
6
+ export async function setConfig(args) {
7
+ const helpConfigLine = `
8
+ Usage:
9
+ contrail config.set key1=value1 key2=value2
10
+ `;
11
+ if (args?.length < 4) {
12
+ console.log(helpConfigLine);
13
+ throw new Error('You need to pass at least one config to set');
14
+ }
15
+ const configsToSet = args.slice(3);
16
+ const config = {};
17
+ for(const conf of configsToSet) {
18
+ if(conf.length < 3 || conf.indexOf('=') <= 0) {
19
+ console.log(helpConfigLine);
20
+ throw new Error(`value ${conf} does not adhere to key1=value1 standard`);
21
+ }
22
+ const [key, value] = conf.split('=');
23
+ console.log('key and value:', key, value);
24
+ console.log(conf.split('='));
25
+ config[key] = value;
26
+ }
27
+ console.log('config is:', config);
28
+ await storeConfig(config);
29
+ }
30
+
31
+ export async function removeConfig(args) {
32
+ if (args?.length < 4) {
33
+ throw new Error('At least one configuration must be included to be removed.');
34
+ }
35
+
36
+ await deleteConfigs(args.slice(3));
37
+
38
38
  }
package/src/interfaces.ts CHANGED
@@ -1,200 +1,200 @@
1
- /** Describes the derivative JSON / object represented
2
- * in app.yml file.
3
- */
4
- export interface AppDeclaration {
5
- appIdentifier: string;
6
- appName: string;
7
- appDescription?: string;
8
- visibility: 'private' | 'public';
9
- publisher: string;
10
- version: string;
11
- eventWorkflowTriggerKeyMapping: string;
12
- thumbnail?: string;
13
- keywords?: Array<string>;
14
- actions?: { [key: string]: AppActionDeclaration };
15
- appConfiguration: ConfigPropertyElements;
16
- triggers: { [key: string]: AppTriggerDeclaration };
17
- workflows?: { [key: string]: WorkflowDefinition | WorkflowTemplateDeclaration };
18
- dockerImageRef?: string;
19
- }
20
-
21
- export interface ConfigPropertyElements {
22
- [key: string]: ConfigPropertyElement;
23
- }
24
-
25
- export interface ConfigPropertyElement {
26
- propertyType: string;
27
- options?: any[];
28
- label: string;
29
- dynamic?: boolean;
30
- }
31
-
32
- export interface AppActionDeclaration {
33
- handler: string;
34
- public?: boolean;
35
- name: string;
36
- description?: string;
37
- actionConfiguration?: ConfigPropertyElements;
38
- async?: boolean; // defaults to false
39
- }
40
-
41
- export interface AppTriggerDeclaration {
42
- key: string;
43
- name: string;
44
- external?: boolean;
45
- description?: string;
46
- }
47
-
48
- // workflow-template and workflow-template-definition share the same interface
49
- export interface WorkflowDefinition {
50
- id?: string;
51
- identifier: string;
52
- name: string;
53
- triggerKey: string;
54
- workflowDefinition: WorkflowDefinitionPaths;
55
- ownerKey: string;
56
- isActive: boolean;
57
- public: boolean;
58
- supportingAppId?: string;
59
- messageGroupId?: string;
60
- parallelWorkerCount?: number;
61
- }
62
-
63
- export interface WorkflowTemplateDeclaration {
64
- workflows?: { [key: string]: WorkflowTemplate }
65
- }
66
-
67
- export interface WorkflowTemplate {
68
- id?: string;
69
- identifier?: string;
70
- name: string;
71
- triggerKey: string;
72
- workflowDefinition: WorkflowDefinitionPaths;
73
- isActive: boolean;
74
- ownerKey?: string;
75
- supportingAppId?: string;
76
- messageGroupId?: string;
77
- parallelWorkerCount?: number;
78
- }
79
-
80
- export interface WorkflowDefinitionPaths {
81
- paths: WorkflowConditional[]
82
- }
83
-
84
- export interface WorkflowConditional {
85
- conditional: string;
86
- actionDefinitionConfigs: ActionDefinitionConfig[]
87
- }
88
- export interface ActionDefinitionConfig {
89
- name: string;
90
- action: string;
91
- config?: { [key: string]: any };
92
- id?: string;
93
- }
94
-
95
- export interface App {
96
- id: string;
97
- identifier: string;
98
- name: string;
99
- public: boolean;
100
- description?: string;
101
- publisher: string;
102
- thumbnail: string; // should be a public link
103
- eventWorkflowTriggerKeyMapping: string;
104
- configProperties?: ConfigProperty[];
105
- triggerKeyDefinitions?: TriggerKeyDefinition[];
106
- }
107
-
108
- export interface AppOrg {
109
- id: string;
110
- createdOn?: Date;
111
- updatedOn?: Date;
112
- createdById?: string;
113
- updatedById?: string;
114
- createdBy?: any;
115
- updatedBy?: any;
116
- orgId?: string;
117
- status: AppOrgStatus;
118
- appId?: string;
119
- app?: App;
120
- appVersionId?: string;
121
- appVersion?: AppVersion;
122
- apiKey?: AppApiKey;
123
- appConfig?: any;
124
- }
125
-
126
- export enum AppOrgStatus {
127
- INSTALLING = 'INSTALLING',
128
- FAILED_INSTALLING = 'FAILED_INSTALLING',
129
- READY = 'READY',
130
- DELETING = 'DELETING',
131
- FAILED_DELETING = 'FAILED_DELETING',
132
- }
133
-
134
- export enum AppVersionStatus {
135
- PUBLISHING = 'PUBLISHING',
136
- FAILED_PUBLISHING = 'FAILED_PUBLISHING',
137
- PUBLISHED = 'PUBLISHED',
138
- ARCHIVING = 'ARCHIVING',
139
- FAILED_ARCHIVING = 'FAILED_ARCHIVING',
140
- ARCHIVED = 'ARCHIVED',
141
- }
142
-
143
- export class AppVersion {
144
- id: string;
145
- createdOn?: Date;
146
- updatedOn?: Date;
147
- createdById?: string;
148
- updatedById?: string;
149
- createdBy?: any;
150
- updatedBy?: any;
151
- orgId?: string;
152
- appId?: string;
153
- app?: App;
154
- appOrgs?: AppOrg[];
155
- versionNumber: number;
156
- status: AppVersionStatus;
157
- eventWorkflowTriggerKeyMapping: string;
158
- configProperties?: ConfigProperty[];
159
- triggerKeyDefinitions?: TriggerKeyDefinition[];
160
- dockerImageRef?: string;
161
- }
162
-
163
- export class AppApiKey {
164
- id: string;
165
- createdOn?: Date;
166
- updatedOn?: Date;
167
- createdById?: string;
168
- updatedById?: string;
169
- createdBy?: any;
170
- updatedBy?: any;
171
- orgId?: string;
172
- appOrgId?: string;
173
- appOrg?: AppOrg;
174
- apiKey?: string;
175
- }
176
-
177
- export class ConfigProperty {
178
- slug: string;
179
- propertyType: string;
180
- options?: any[];
181
- label: string;
182
- }
183
-
184
- export interface EventWorkflowActionDefinition {
185
- id?: string;
186
- identifier?: string;
187
- name?: string;
188
- executeFunctionString?: string;
189
- ownerKey?: string;
190
- public?: boolean;
191
- configProperties?: ConfigProperty[];
192
- async?: boolean;
193
- }
194
-
195
- export class TriggerKeyDefinition {
196
- name: string;
197
- description?: string;
198
- triggerKey: string;
199
- external?: boolean;
200
- }
1
+ /** Describes the derivative JSON / object represented
2
+ * in app.yml file.
3
+ */
4
+ export interface AppDeclaration {
5
+ appIdentifier: string;
6
+ appName: string;
7
+ appDescription?: string;
8
+ visibility: 'private' | 'public';
9
+ publisher: string;
10
+ version: string;
11
+ eventWorkflowTriggerKeyMapping: string;
12
+ thumbnail?: string;
13
+ keywords?: Array<string>;
14
+ actions?: { [key: string]: AppActionDeclaration };
15
+ appConfiguration: ConfigPropertyElements;
16
+ triggers: { [key: string]: AppTriggerDeclaration };
17
+ workflows?: { [key: string]: WorkflowDefinition | WorkflowTemplateDeclaration };
18
+ dockerImageRef?: string;
19
+ }
20
+
21
+ export interface ConfigPropertyElements {
22
+ [key: string]: ConfigPropertyElement;
23
+ }
24
+
25
+ export interface ConfigPropertyElement {
26
+ propertyType: string;
27
+ options?: any[];
28
+ label: string;
29
+ dynamic?: boolean;
30
+ }
31
+
32
+ export interface AppActionDeclaration {
33
+ handler: string;
34
+ public?: boolean;
35
+ name: string;
36
+ description?: string;
37
+ actionConfiguration?: ConfigPropertyElements;
38
+ async?: boolean; // defaults to false
39
+ }
40
+
41
+ export interface AppTriggerDeclaration {
42
+ key: string;
43
+ name: string;
44
+ external?: boolean;
45
+ description?: string;
46
+ }
47
+
48
+ // workflow-template and workflow-template-definition share the same interface
49
+ export interface WorkflowDefinition {
50
+ id?: string;
51
+ identifier: string;
52
+ name: string;
53
+ triggerKey: string;
54
+ workflowDefinition: WorkflowDefinitionPaths;
55
+ ownerKey: string;
56
+ isActive: boolean;
57
+ public: boolean;
58
+ supportingAppId?: string;
59
+ messageGroupId?: string;
60
+ parallelWorkerCount?: number;
61
+ }
62
+
63
+ export interface WorkflowTemplateDeclaration {
64
+ workflows?: { [key: string]: WorkflowTemplate }
65
+ }
66
+
67
+ export interface WorkflowTemplate {
68
+ id?: string;
69
+ identifier?: string;
70
+ name: string;
71
+ triggerKey: string;
72
+ workflowDefinition: WorkflowDefinitionPaths;
73
+ isActive: boolean;
74
+ ownerKey?: string;
75
+ supportingAppId?: string;
76
+ messageGroupId?: string;
77
+ parallelWorkerCount?: number;
78
+ }
79
+
80
+ export interface WorkflowDefinitionPaths {
81
+ paths: WorkflowConditional[]
82
+ }
83
+
84
+ export interface WorkflowConditional {
85
+ conditional: string;
86
+ actionDefinitionConfigs: ActionDefinitionConfig[]
87
+ }
88
+ export interface ActionDefinitionConfig {
89
+ name: string;
90
+ action: string;
91
+ config?: { [key: string]: any };
92
+ id?: string;
93
+ }
94
+
95
+ export interface App {
96
+ id: string;
97
+ identifier: string;
98
+ name: string;
99
+ public: boolean;
100
+ description?: string;
101
+ publisher: string;
102
+ thumbnail: string; // should be a public link
103
+ eventWorkflowTriggerKeyMapping: string;
104
+ configProperties?: ConfigProperty[];
105
+ triggerKeyDefinitions?: TriggerKeyDefinition[];
106
+ }
107
+
108
+ export interface AppOrg {
109
+ id: string;
110
+ createdOn?: Date;
111
+ updatedOn?: Date;
112
+ createdById?: string;
113
+ updatedById?: string;
114
+ createdBy?: any;
115
+ updatedBy?: any;
116
+ orgId?: string;
117
+ status: AppOrgStatus;
118
+ appId?: string;
119
+ app?: App;
120
+ appVersionId?: string;
121
+ appVersion?: AppVersion;
122
+ apiKey?: AppApiKey;
123
+ appConfig?: any;
124
+ }
125
+
126
+ export enum AppOrgStatus {
127
+ INSTALLING = 'INSTALLING',
128
+ FAILED_INSTALLING = 'FAILED_INSTALLING',
129
+ READY = 'READY',
130
+ DELETING = 'DELETING',
131
+ FAILED_DELETING = 'FAILED_DELETING',
132
+ }
133
+
134
+ export enum AppVersionStatus {
135
+ PUBLISHING = 'PUBLISHING',
136
+ FAILED_PUBLISHING = 'FAILED_PUBLISHING',
137
+ PUBLISHED = 'PUBLISHED',
138
+ ARCHIVING = 'ARCHIVING',
139
+ FAILED_ARCHIVING = 'FAILED_ARCHIVING',
140
+ ARCHIVED = 'ARCHIVED',
141
+ }
142
+
143
+ export class AppVersion {
144
+ id: string;
145
+ createdOn?: Date;
146
+ updatedOn?: Date;
147
+ createdById?: string;
148
+ updatedById?: string;
149
+ createdBy?: any;
150
+ updatedBy?: any;
151
+ orgId?: string;
152
+ appId?: string;
153
+ app?: App;
154
+ appOrgs?: AppOrg[];
155
+ versionNumber: number;
156
+ status: AppVersionStatus;
157
+ eventWorkflowTriggerKeyMapping: string;
158
+ configProperties?: ConfigProperty[];
159
+ triggerKeyDefinitions?: TriggerKeyDefinition[];
160
+ dockerImageRef?: string;
161
+ }
162
+
163
+ export class AppApiKey {
164
+ id: string;
165
+ createdOn?: Date;
166
+ updatedOn?: Date;
167
+ createdById?: string;
168
+ updatedById?: string;
169
+ createdBy?: any;
170
+ updatedBy?: any;
171
+ orgId?: string;
172
+ appOrgId?: string;
173
+ appOrg?: AppOrg;
174
+ apiKey?: string;
175
+ }
176
+
177
+ export class ConfigProperty {
178
+ slug: string;
179
+ propertyType: string;
180
+ options?: any[];
181
+ label: string;
182
+ }
183
+
184
+ export interface EventWorkflowActionDefinition {
185
+ id?: string;
186
+ identifier?: string;
187
+ name?: string;
188
+ executeFunctionString?: string;
189
+ ownerKey?: string;
190
+ public?: boolean;
191
+ configProperties?: ConfigProperty[];
192
+ async?: boolean;
193
+ }
194
+
195
+ export class TriggerKeyDefinition {
196
+ name: string;
197
+ description?: string;
198
+ triggerKey: string;
199
+ external?: boolean;
200
+ }