@contrail/cli 3.4.0 → 3.4.2-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/README.md +5 -4
  2. package/bin/dev +0 -0
  3. package/bin/run +0 -0
  4. package/dist/__mocks__/@contrail/sdk.d.ts +123 -123
  5. package/dist/__mocks__/@contrail/sdk.js +716 -716
  6. package/dist/api/app-extension-deployments.d.ts +2 -2
  7. package/dist/api/app-extension-deployments.js +11 -11
  8. package/dist/api/app-extension-packages.d.ts +2 -2
  9. package/dist/api/app-extension-packages.js +11 -11
  10. package/dist/api/apps.d.ts +10 -10
  11. package/dist/api/apps.js +63 -63
  12. package/dist/api/event-workflow-action-definition.d.ts +3 -3
  13. package/dist/api/event-workflow-action-definition.js +18 -18
  14. package/dist/api/event-workflow-template-definition.d.ts +7 -7
  15. package/dist/api/event-workflow-template-definition.js +26 -26
  16. package/dist/api/event-workflow-templates.d.ts +8 -8
  17. package/dist/api/event-workflow-templates.js +32 -32
  18. package/dist/api/schedules.d.ts +7 -7
  19. package/dist/api/schedules.js +32 -32
  20. package/dist/api/types.d.ts +11 -11
  21. package/dist/api/types.js +79 -79
  22. package/dist/api/users.d.ts +2 -2
  23. package/dist/api/users.js +18 -18
  24. package/dist/api/webhooks.d.ts +4 -4
  25. package/dist/api/webhooks.js +16 -16
  26. package/dist/auth/login.d.ts +3 -3
  27. package/dist/auth/login.js +221 -221
  28. package/dist/auth/login.spec.d.ts +1 -1
  29. package/dist/auth/login.spec.js +10 -10
  30. package/dist/baseFlags.d.ts +10 -10
  31. package/dist/baseFlags.js +25 -25
  32. package/dist/basecommand.d.ts +15 -15
  33. package/dist/basecommand.js +83 -83
  34. package/dist/commands/app/create.d.ts +10 -10
  35. package/dist/commands/app/create.js +96 -96
  36. package/dist/commands/app/delete.d.ts +11 -11
  37. package/dist/commands/app/delete.js +40 -40
  38. package/dist/commands/app/extension/deploy.d.ts +18 -18
  39. package/dist/commands/app/extension/deploy.js +127 -127
  40. package/dist/commands/app/extension/deployment/list.d.ts +14 -14
  41. package/dist/commands/app/extension/deployment/list.js +82 -82
  42. package/dist/commands/app/getApiKey.d.ts +11 -11
  43. package/dist/commands/app/getApiKey.js +49 -49
  44. package/dist/commands/app/init.d.ts +10 -10
  45. package/dist/commands/app/init.js +67 -67
  46. package/dist/commands/app/install.d.ts +13 -13
  47. package/dist/commands/app/install.js +135 -135
  48. package/dist/commands/app/publish.d.ts +14 -14
  49. package/dist/commands/app/publish.js +69 -69
  50. package/dist/commands/app/uninstall.d.ts +12 -12
  51. package/dist/commands/app/uninstall.js +68 -68
  52. package/dist/commands/app/upgrade.d.ts +14 -14
  53. package/dist/commands/app/upgrade.js +108 -108
  54. package/dist/commands/app/version/major.d.ts +11 -11
  55. package/dist/commands/app/version/major.js +39 -39
  56. package/dist/commands/app/version/minor.d.ts +11 -11
  57. package/dist/commands/app/version/minor.js +39 -39
  58. package/dist/commands/app/version/patch.d.ts +11 -11
  59. package/dist/commands/app/version/patch.js +39 -39
  60. package/dist/commands/config/create.d.ts +12 -12
  61. package/dist/commands/config/create.js +27 -27
  62. package/dist/commands/config/describe.d.ts +14 -14
  63. package/dist/commands/config/describe.js +46 -46
  64. package/dist/commands/config/list.d.ts +11 -11
  65. package/dist/commands/config/list.js +38 -38
  66. package/dist/commands/config/set.d.ts +16 -16
  67. package/dist/commands/config/set.js +46 -46
  68. package/dist/commands/config/use.d.ts +14 -14
  69. package/dist/commands/config/use.js +47 -47
  70. package/dist/commands/file/upload.d.ts +15 -15
  71. package/dist/commands/file/upload.js +69 -69
  72. package/dist/commands/groups/export.d.ts +14 -14
  73. package/dist/commands/groups/export.js +103 -103
  74. package/dist/commands/groups/import.d.ts +14 -14
  75. package/dist/commands/groups/import.js +190 -190
  76. package/dist/commands/instance/export.d.ts +12 -12
  77. package/dist/commands/instance/export.js +36 -36
  78. package/dist/commands/instance/import.d.ts +11 -11
  79. package/dist/commands/instance/import.js +34 -34
  80. package/dist/commands/load/colors.d.ts +14 -14
  81. package/dist/commands/load/colors.js +53 -53
  82. package/dist/commands/load/custom-entity.d.ts +14 -14
  83. package/dist/commands/load/custom-entity.js +55 -55
  84. package/dist/commands/load/line-sheet.d.ts +14 -14
  85. package/dist/commands/load/line-sheet.js +55 -55
  86. package/dist/commands/load/upload-and-load.d.ts +14 -14
  87. package/dist/commands/load/upload-and-load.js +46 -46
  88. package/dist/commands/projects/export.d.ts +13 -13
  89. package/dist/commands/projects/export.js +35 -35
  90. package/dist/commands/projects/list.d.ts +10 -10
  91. package/dist/commands/projects/list.js +36 -36
  92. package/dist/commands/projects/load.d.ts +25 -25
  93. package/dist/commands/projects/load.js +198 -198
  94. package/dist/commands/types/exportOptionSetHierarchies.d.ts +11 -11
  95. package/dist/commands/types/exportOptionSetHierarchies.js +133 -133
  96. package/dist/commands/types/getAll.d.ts +21 -21
  97. package/dist/commands/types/getAll.js +180 -180
  98. package/dist/commands/types/getOptionSets.d.ts +16 -16
  99. package/dist/commands/types/getOptionSets.js +170 -170
  100. package/dist/commands/types/loadAll.d.ts +12 -12
  101. package/dist/commands/types/loadAll.js +55 -55
  102. package/dist/commands/types/mergeOptionSets.d.ts +13 -13
  103. package/dist/commands/types/mergeOptionSets.js +116 -119
  104. package/dist/commands/types/mergeTypeProperties.d.ts +15 -15
  105. package/dist/commands/types/mergeTypeProperties.js +95 -95
  106. package/dist/commands/types/parseOptionSetsHierarchyLocalFile.d.ts +14 -14
  107. package/dist/commands/types/parseOptionSetsHierarchyLocalFile.js +133 -133
  108. package/dist/commands/types/parseOptionSetsHierarchyValuesToKeysLocalFile.d.ts +14 -14
  109. package/dist/commands/types/parseOptionSetsHierarchyValuesToKeysLocalFile.js +102 -102
  110. package/dist/commands/types/parseOptionSetsLocalFiles.d.ts +39 -39
  111. package/dist/commands/types/parseOptionSetsLocalFiles.js +229 -229
  112. package/dist/commands/types/parseOptionSetsToFolderStructure.d.ts +13 -13
  113. package/dist/commands/types/parseOptionSetsToFolderStructure.js +68 -68
  114. package/dist/commands/types/parseTypesFromFiles.d.ts +14 -14
  115. package/dist/commands/types/parseTypesFromFiles.js +40 -40
  116. package/dist/commands/types/parseTypesFromLocalFiles.d.ts +14 -14
  117. package/dist/commands/types/parseTypesFromLocalFiles.js +37 -37
  118. package/dist/commands/types/parseTypesFromTemplateAndDataFromLocalFiles.d.ts +15 -15
  119. package/dist/commands/types/parseTypesFromTemplateAndDataFromLocalFiles.js +39 -39
  120. package/dist/commands/types/parseTypesFromTemplateFromLocalFiles.d.ts +14 -14
  121. package/dist/commands/types/parseTypesFromTemplateFromLocalFiles.js +38 -38
  122. package/dist/commands/types/uploadOptionSetHierarchies.d.ts +12 -12
  123. package/dist/commands/types/uploadOptionSetHierarchies.js +257 -257
  124. package/dist/commands/types/uploadOptionSets.d.ts +13 -13
  125. package/dist/commands/types/uploadOptionSets.js +155 -155
  126. package/dist/commands/types/uploadOptionSetsHierarchyLocalFile.d.ts +15 -15
  127. package/dist/commands/types/uploadOptionSetsHierarchyLocalFile.js +135 -135
  128. package/dist/commands/types/uploadRuleSets.d.ts +12 -12
  129. package/dist/commands/types/uploadRuleSets.js +197 -197
  130. package/dist/commands/types/uploadTypePolicies.d.ts +12 -12
  131. package/dist/commands/types/uploadTypePolicies.js +233 -233
  132. package/dist/commands/types/uploadTypePropertyPolicies.d.ts +13 -13
  133. package/dist/commands/types/uploadTypePropertyPolicies.js +286 -286
  134. package/dist/commands/types/uploadTypes.d.ts +13 -13
  135. package/dist/commands/types/uploadTypes.js +35 -35
  136. package/dist/commands/types/uploadUsageInfo.d.ts +12 -12
  137. package/dist/commands/types/uploadUsageInfo.js +172 -172
  138. package/dist/commands/users/export.d.ts +14 -14
  139. package/dist/commands/users/export.js +76 -76
  140. package/dist/commands/users/import.d.ts +14 -14
  141. package/dist/commands/users/import.js +68 -68
  142. package/dist/commands/webhooks/create.d.ts +11 -11
  143. package/dist/commands/webhooks/create.js +25 -25
  144. package/dist/commands/webhooks/delete.d.ts +14 -14
  145. package/dist/commands/webhooks/delete.js +53 -53
  146. package/dist/commands/webhooks/getWebhookTrigger.d.ts +13 -13
  147. package/dist/commands/webhooks/getWebhookTrigger.js +40 -40
  148. package/dist/commands/webhooks/list.d.ts +12 -12
  149. package/dist/commands/webhooks/list.js +31 -31
  150. package/dist/commands/workflow-template-definitions/install.d.ts +10 -10
  151. package/dist/commands/workflow-template-definitions/install.js +19 -19
  152. package/dist/commands/workflow-template-definitions/list.d.ts +10 -10
  153. package/dist/commands/workflow-template-definitions/list.js +19 -19
  154. package/dist/commands/workflow-templates/delete.d.ts +10 -10
  155. package/dist/commands/workflow-templates/delete.js +19 -19
  156. package/dist/commands/workflow-templates/export.d.ts +14 -14
  157. package/dist/commands/workflow-templates/export.js +78 -78
  158. package/dist/commands/workflow-templates/list.d.ts +10 -10
  159. package/dist/commands/workflow-templates/list.js +19 -19
  160. package/dist/commands/workflow-templates/load.d.ts +13 -13
  161. package/dist/commands/workflow-templates/load.js +26 -26
  162. package/dist/common.d.ts +4 -4
  163. package/dist/common.js +18 -18
  164. package/dist/helpers/app/actions-deployer.d.ts +11 -11
  165. package/dist/helpers/app/actions-deployer.js +123 -123
  166. package/dist/helpers/app/app-config-validators.d.ts +22 -22
  167. package/dist/helpers/app/app-config-validators.js +100 -100
  168. package/dist/helpers/app/app-config-validators.spec.d.ts +1 -1
  169. package/dist/helpers/app/app-config-validators.spec.js +310 -310
  170. package/dist/helpers/app/app-deployer.d.ts +12 -12
  171. package/dist/helpers/app/app-deployer.js +278 -278
  172. package/dist/helpers/app/app-template-parsers.d.ts +14 -14
  173. package/dist/helpers/app/app-template-parsers.js +106 -106
  174. package/dist/helpers/app/extension-package-deployer.d.ts +7 -7
  175. package/dist/helpers/app/extension-package-deployer.js +175 -175
  176. package/dist/helpers/app/extensions-deployer.d.ts +9 -9
  177. package/dist/helpers/app/extensions-deployer.js +95 -91
  178. package/dist/helpers/app/load-app-config.d.ts +4 -4
  179. package/dist/helpers/app/load-app-config.js +22 -22
  180. package/dist/helpers/app/metadata-extractor.d.ts +1 -1
  181. package/dist/helpers/app/metadata-extractor.js +100 -100
  182. package/dist/helpers/app/setup-template.d.ts +8 -8
  183. package/dist/helpers/app/setup-template.js +48 -48
  184. package/dist/helpers/app/update-app-config.d.ts +2 -2
  185. package/dist/helpers/app/update-app-config.js +20 -20
  186. package/dist/helpers/app/upgrade-version.d.ts +16 -16
  187. package/dist/helpers/app/upgrade-version.js +37 -37
  188. package/dist/helpers/app/upgrade-version.spec.d.ts +1 -1
  189. package/dist/helpers/app/upgrade-version.spec.js +33 -33
  190. package/dist/helpers/colors/helpers.d.ts +12 -12
  191. package/dist/helpers/colors/helpers.js +84 -84
  192. package/dist/helpers/config/config.d.ts +16 -16
  193. package/dist/helpers/config/config.js +223 -223
  194. package/dist/helpers/file-helpers.d.ts +2 -2
  195. package/dist/helpers/file-helpers.js +36 -36
  196. package/dist/helpers/load/helpers.d.ts +20 -20
  197. package/dist/helpers/load/helpers.js +141 -141
  198. package/dist/helpers/load/helpers.spec.d.ts +1 -1
  199. package/dist/helpers/load/helpers.spec.js +62 -62
  200. package/dist/helpers/load/validators.d.ts +14 -14
  201. package/dist/helpers/load/validators.js +182 -182
  202. package/dist/helpers/load/validators.spec.d.ts +1 -1
  203. package/dist/helpers/load/validators.spec.js +450 -450
  204. package/dist/helpers/projects/helpers.d.ts +3 -3
  205. package/dist/helpers/projects/helpers.js +167 -167
  206. package/dist/helpers/types/csv-parser.d.ts +1 -1
  207. package/dist/helpers/types/csv-parser.js +59 -59
  208. package/dist/helpers/types/option-set-helper.d.ts +9 -0
  209. package/dist/helpers/types/option-set-helper.js +48 -0
  210. package/dist/helpers/types/option-set-helper.spec.d.ts +1 -0
  211. package/dist/helpers/types/option-set-helper.spec.js +69 -0
  212. package/dist/helpers/types/parseOptionSetsLocalFiles.spec.d.ts +1 -1
  213. package/dist/helpers/types/parseOptionSetsLocalFiles.spec.js +285 -285
  214. package/dist/helpers/types/type-extractor.d.ts +1 -1
  215. package/dist/helpers/types/type-extractor.js +36 -36
  216. package/dist/helpers/types/type-parser.d.ts +4 -4
  217. package/dist/helpers/types/type-parser.js +119 -119
  218. package/dist/helpers/types/type-uploader.d.ts +20 -20
  219. package/dist/helpers/types/type-uploader.js +336 -336
  220. package/dist/helpers/types/type-uploader.spec.d.ts +1 -1
  221. package/dist/helpers/types/type-uploader.spec.js +266 -266
  222. package/dist/helpers/types/uploadOptionSets.spec.d.ts +1 -1
  223. package/dist/helpers/types/uploadOptionSets.spec.js +19 -19
  224. package/dist/helpers/workflow-template-definitions/workflow-template-definition-deployer.d.ts +12 -12
  225. package/dist/helpers/workflow-template-definitions/workflow-template-definition-deployer.js +158 -158
  226. package/dist/helpers/workflow-templates/helper.d.ts +20 -20
  227. package/dist/helpers/workflow-templates/helper.js +285 -285
  228. package/dist/index.d.ts +1 -1
  229. package/dist/index.js +5 -5
  230. package/dist/interfaces.d.ts +445 -443
  231. package/dist/interfaces.js +163 -163
  232. package/dist/logger.d.ts +3 -3
  233. package/dist/logger.js +33 -33
  234. package/oclif.manifest.json +3 -3
  235. package/package.json +2 -2
@@ -1,223 +1,223 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkTelemetry = exports.validateEnvironments = exports.getConfigContent = exports.getConfigFiles = exports.storeConfig = exports.getConfig = exports.writeConfig = exports.createConfig = exports.storeVibeIQConfig = exports.writeVibeIQConfig = exports.readVibeIQConfig = exports.initializeVibeIQConfig = exports.ENVIRONMENTS = void 0;
4
- const tslib_1 = require("tslib");
5
- const node_fs_1 = require("node:fs");
6
- const node_path_1 = require("node:path");
7
- const node_os_1 = require("node:os");
8
- const logger_1 = tslib_1.__importDefault(require("../../logger"));
9
- const configFileName = 'config.json';
10
- const defaultConfigFileName = 'default.json';
11
- const userHomeDir = (0, node_os_1.homedir)();
12
- const configDirectoryLocation = (0, node_path_1.join)(userHomeDir, '.vibeiq', 'configs');
13
- const configFileLocation = (0, node_path_1.join)(configDirectoryLocation, configFileName);
14
- const defaultConfigFileLocation = (0, node_path_1.join)(configDirectoryLocation, defaultConfigFileName);
15
- exports.ENVIRONMENTS = {
16
- dev: 'https://api.dev.vibeiq.com/dev/api',
17
- prod: 'https://api.vibeiq.com/prod/api',
18
- };
19
- async function initializeVibeIQConfig() {
20
- try {
21
- await node_fs_1.promises.mkdir(configDirectoryLocation, { recursive: true });
22
- }
23
- catch (error) {
24
- logger_1.default.error('could not initialize vibeiq directory');
25
- throw error;
26
- }
27
- try {
28
- const config = {
29
- configInUse: (0, node_path_1.parse)(defaultConfigFileName).name,
30
- logLevel: 'debug',
31
- };
32
- await node_fs_1.promises.writeFile(configFileLocation, JSON.stringify(config, null, 2));
33
- await node_fs_1.promises.writeFile(defaultConfigFileLocation, '{}');
34
- }
35
- catch (error) {
36
- logger_1.default.error(`could not initialize config file (${configFileLocation}).`);
37
- throw error;
38
- }
39
- }
40
- exports.initializeVibeIQConfig = initializeVibeIQConfig;
41
- async function readVibeIQConfig() {
42
- let fileContent;
43
- try {
44
- fileContent = await (await node_fs_1.promises.readFile(configFileLocation)).toString();
45
- }
46
- catch {
47
- logger_1.default.debug(`failed to open config file (${configFileLocation}) for reading.`);
48
- logger_1.default.debug('trying to initialize config file');
49
- await initializeVibeIQConfig();
50
- fileContent = await (await node_fs_1.promises.readFile(configFileLocation)).toString();
51
- }
52
- try {
53
- return JSON.parse(fileContent);
54
- }
55
- catch {
56
- logger_1.default.error(`Could not parse local vibeiq config. The file (${configFileLocation}) might be malformed`);
57
- }
58
- }
59
- exports.readVibeIQConfig = readVibeIQConfig;
60
- async function writeVibeIQConfig(config) {
61
- try {
62
- await node_fs_1.promises.writeFile(configFileLocation, JSON.stringify(config, null, 2));
63
- }
64
- catch (error) {
65
- logger_1.default.error(`Could not open config file (${configFileLocation}) for writing.`);
66
- throw error;
67
- }
68
- }
69
- exports.writeVibeIQConfig = writeVibeIQConfig;
70
- async function storeVibeIQConfig(incomingConfig) {
71
- const config = {
72
- ...(await readVibeIQConfig()),
73
- ...incomingConfig,
74
- };
75
- await writeVibeIQConfig(config);
76
- }
77
- exports.storeVibeIQConfig = storeVibeIQConfig;
78
- async function createConfig(fileName) {
79
- try {
80
- await node_fs_1.promises.writeFile((0, node_path_1.join)(configDirectoryLocation, `${fileName}.json`), '{}');
81
- }
82
- catch (error) {
83
- logger_1.default.error('Could not create config file.');
84
- throw error;
85
- }
86
- }
87
- exports.createConfig = createConfig;
88
- async function writeConfig(config, configName = null) {
89
- try {
90
- let configFileName = configName;
91
- if (!configName) {
92
- const fileContent = await readVibeIQConfig();
93
- configFileName = fileContent.configInUse;
94
- }
95
- await node_fs_1.promises.writeFile((0, node_path_1.join)(configDirectoryLocation, `${configFileName}.json`), JSON.stringify(config, null, 2));
96
- }
97
- catch (error) {
98
- logger_1.default.error('Could not open config file for writing.');
99
- throw error;
100
- }
101
- }
102
- exports.writeConfig = writeConfig;
103
- async function getConfig() {
104
- let fileContent;
105
- try {
106
- fileContent = (await node_fs_1.promises.readFile(configFileLocation)).toString();
107
- }
108
- catch {
109
- logger_1.default.debug(`failed to open config file (${configFileLocation}) for reading.`);
110
- logger_1.default.debug('trying to initialize config file');
111
- await initializeVibeIQConfig();
112
- fileContent = (await node_fs_1.promises.readFile(configFileLocation)).toString();
113
- }
114
- try {
115
- const configFileJSON = JSON.parse(fileContent);
116
- return getConfigContent(configFileJSON.configInUse);
117
- }
118
- catch {
119
- logger_1.default.error('Could not parse local vibeiq config.');
120
- }
121
- }
122
- exports.getConfig = getConfig;
123
- async function storeConfig(incomingConfig, configName = null, merge = true) {
124
- let configContent;
125
- if (!configName) {
126
- configContent = await getConfig();
127
- }
128
- else {
129
- configContent = await getConfigContent(configName);
130
- }
131
- let config = {
132
- ...configContent,
133
- ...incomingConfig,
134
- };
135
- if (!merge) {
136
- config = incomingConfig;
137
- }
138
- await writeConfig(config, configName);
139
- }
140
- exports.storeConfig = storeConfig;
141
- async function getConfigFiles() {
142
- try {
143
- const dirContent = (await node_fs_1.promises.readdir(configDirectoryLocation, { withFileTypes: true }))
144
- .filter((content) => content.isFile() &&
145
- content.name !== configFileName &&
146
- (0, node_path_1.parse)(content.name).ext === '.json')
147
- .map((content) => (0, node_path_1.parse)(content.name).name);
148
- return dirContent;
149
- }
150
- catch {
151
- logger_1.default.error(`Failed to open config directory (${configDirectoryLocation}) for getting files.`);
152
- }
153
- }
154
- exports.getConfigFiles = getConfigFiles;
155
- async function getConfigContent(fileName) {
156
- const configFilePath = (0, node_path_1.join)(configDirectoryLocation, `${fileName}.json`);
157
- let fileContent;
158
- try {
159
- fileContent = (await node_fs_1.promises.readFile(configFilePath)).toString();
160
- return JSON.parse(fileContent);
161
- }
162
- catch (error) {
163
- logger_1.default.error(`Failed to open/parse config file (${fileName}) might be malformed or not found.`);
164
- }
165
- }
166
- exports.getConfigContent = getConfigContent;
167
- async function validateEnvironments(envName = null) {
168
- if (envName === 'development') {
169
- envName = 'dev';
170
- }
171
- else if (envName === 'production') {
172
- envName = 'prod';
173
- }
174
- if (envName && !exports.ENVIRONMENTS[envName]) {
175
- throw new Error(`No environment found with name ${envName}`);
176
- }
177
- return envName ? exports.ENVIRONMENTS[envName] : true;
178
- }
179
- exports.validateEnvironments = validateEnvironments;
180
- async function checkTelemetry(cliVersion) {
181
- try {
182
- // TODO: remove comment when api is available so that we don't get errors
183
- // const response = await axios.post('https://api.vibeiq.com/prod/api/telemetry/cli', {
184
- // cli_version: cliVersion,
185
- // });
186
- // const { deprecations, warnings, errors } = response.data;
187
- // eg: how the response should look like
188
- // const deprecations = [
189
- // { message: 'Deprecation 1' },
190
- // { message: 'Deprecation 2' },
191
- // { message: 'Deprecation 3' },
192
- // ];
193
- // const warnings = [{ message: 'Warning 1' }, { message: 'Warning 2' }, { message: 'Warning 3' }];
194
- // const errors = [{ message: 'Error 1' }, { message: 'Error 2' }, { message: 'Error 3' }];
195
- // TODO: Remove the hardcoded data when the API is available
196
- const deprecations = [];
197
- const warnings = [];
198
- const errors = [];
199
- if (errors.length > 0) {
200
- const latestVersion = '2.4.0'; // TODO: Replace with the latest version of the CLI by calling the API
201
- console.error(`Contrail CLI verison ${cliVersion} contains known critical bugs. Please upgrade to version ${latestVersion}.\n\nQuitting the CLI for safety.`);
202
- errors.forEach((error) => {
203
- logger_1.default.error(`${error.message}`);
204
- });
205
- const failed_exit_code = 1;
206
- process.exit(failed_exit_code);
207
- }
208
- if (warnings.length > 0) {
209
- warnings.forEach((warning) => {
210
- logger_1.default.warn(`${warning.message}`);
211
- });
212
- }
213
- if (deprecations.length > 0) {
214
- deprecations.forEach((deprecation) => {
215
- logger_1.default.warn(`${deprecation.message}`);
216
- });
217
- }
218
- }
219
- catch (error) {
220
- console.error('Failed to check telemetry:', error.message);
221
- }
222
- }
223
- exports.checkTelemetry = checkTelemetry;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkTelemetry = exports.validateEnvironments = exports.getConfigContent = exports.getConfigFiles = exports.storeConfig = exports.getConfig = exports.writeConfig = exports.createConfig = exports.storeVibeIQConfig = exports.writeVibeIQConfig = exports.readVibeIQConfig = exports.initializeVibeIQConfig = exports.ENVIRONMENTS = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const node_fs_1 = require("node:fs");
6
+ const node_path_1 = require("node:path");
7
+ const node_os_1 = require("node:os");
8
+ const logger_1 = tslib_1.__importDefault(require("../../logger"));
9
+ const configFileName = 'config.json';
10
+ const defaultConfigFileName = 'default.json';
11
+ const userHomeDir = (0, node_os_1.homedir)();
12
+ const configDirectoryLocation = (0, node_path_1.join)(userHomeDir, '.vibeiq', 'configs');
13
+ const configFileLocation = (0, node_path_1.join)(configDirectoryLocation, configFileName);
14
+ const defaultConfigFileLocation = (0, node_path_1.join)(configDirectoryLocation, defaultConfigFileName);
15
+ exports.ENVIRONMENTS = {
16
+ dev: 'https://api.dev.vibeiq.com/dev/api',
17
+ prod: 'https://api.vibeiq.com/prod/api',
18
+ };
19
+ async function initializeVibeIQConfig() {
20
+ try {
21
+ await node_fs_1.promises.mkdir(configDirectoryLocation, { recursive: true });
22
+ }
23
+ catch (error) {
24
+ logger_1.default.error('could not initialize vibeiq directory');
25
+ throw error;
26
+ }
27
+ try {
28
+ const config = {
29
+ configInUse: (0, node_path_1.parse)(defaultConfigFileName).name,
30
+ logLevel: 'debug',
31
+ };
32
+ await node_fs_1.promises.writeFile(configFileLocation, JSON.stringify(config, null, 2));
33
+ await node_fs_1.promises.writeFile(defaultConfigFileLocation, '{}');
34
+ }
35
+ catch (error) {
36
+ logger_1.default.error(`could not initialize config file (${configFileLocation}).`);
37
+ throw error;
38
+ }
39
+ }
40
+ exports.initializeVibeIQConfig = initializeVibeIQConfig;
41
+ async function readVibeIQConfig() {
42
+ let fileContent;
43
+ try {
44
+ fileContent = await (await node_fs_1.promises.readFile(configFileLocation)).toString();
45
+ }
46
+ catch {
47
+ logger_1.default.debug(`failed to open config file (${configFileLocation}) for reading.`);
48
+ logger_1.default.debug('trying to initialize config file');
49
+ await initializeVibeIQConfig();
50
+ fileContent = await (await node_fs_1.promises.readFile(configFileLocation)).toString();
51
+ }
52
+ try {
53
+ return JSON.parse(fileContent);
54
+ }
55
+ catch {
56
+ logger_1.default.error(`Could not parse local vibeiq config. The file (${configFileLocation}) might be malformed`);
57
+ }
58
+ }
59
+ exports.readVibeIQConfig = readVibeIQConfig;
60
+ async function writeVibeIQConfig(config) {
61
+ try {
62
+ await node_fs_1.promises.writeFile(configFileLocation, JSON.stringify(config, null, 2));
63
+ }
64
+ catch (error) {
65
+ logger_1.default.error(`Could not open config file (${configFileLocation}) for writing.`);
66
+ throw error;
67
+ }
68
+ }
69
+ exports.writeVibeIQConfig = writeVibeIQConfig;
70
+ async function storeVibeIQConfig(incomingConfig) {
71
+ const config = {
72
+ ...(await readVibeIQConfig()),
73
+ ...incomingConfig,
74
+ };
75
+ await writeVibeIQConfig(config);
76
+ }
77
+ exports.storeVibeIQConfig = storeVibeIQConfig;
78
+ async function createConfig(fileName) {
79
+ try {
80
+ await node_fs_1.promises.writeFile((0, node_path_1.join)(configDirectoryLocation, `${fileName}.json`), '{}');
81
+ }
82
+ catch (error) {
83
+ logger_1.default.error('Could not create config file.');
84
+ throw error;
85
+ }
86
+ }
87
+ exports.createConfig = createConfig;
88
+ async function writeConfig(config, configName = null) {
89
+ try {
90
+ let configFileName = configName;
91
+ if (!configName) {
92
+ const fileContent = await readVibeIQConfig();
93
+ configFileName = fileContent.configInUse;
94
+ }
95
+ await node_fs_1.promises.writeFile((0, node_path_1.join)(configDirectoryLocation, `${configFileName}.json`), JSON.stringify(config, null, 2));
96
+ }
97
+ catch (error) {
98
+ logger_1.default.error('Could not open config file for writing.');
99
+ throw error;
100
+ }
101
+ }
102
+ exports.writeConfig = writeConfig;
103
+ async function getConfig() {
104
+ let fileContent;
105
+ try {
106
+ fileContent = (await node_fs_1.promises.readFile(configFileLocation)).toString();
107
+ }
108
+ catch {
109
+ logger_1.default.debug(`failed to open config file (${configFileLocation}) for reading.`);
110
+ logger_1.default.debug('trying to initialize config file');
111
+ await initializeVibeIQConfig();
112
+ fileContent = (await node_fs_1.promises.readFile(configFileLocation)).toString();
113
+ }
114
+ try {
115
+ const configFileJSON = JSON.parse(fileContent);
116
+ return getConfigContent(configFileJSON.configInUse);
117
+ }
118
+ catch {
119
+ logger_1.default.error('Could not parse local vibeiq config.');
120
+ }
121
+ }
122
+ exports.getConfig = getConfig;
123
+ async function storeConfig(incomingConfig, configName = null, merge = true) {
124
+ let configContent;
125
+ if (!configName) {
126
+ configContent = await getConfig();
127
+ }
128
+ else {
129
+ configContent = await getConfigContent(configName);
130
+ }
131
+ let config = {
132
+ ...configContent,
133
+ ...incomingConfig,
134
+ };
135
+ if (!merge) {
136
+ config = incomingConfig;
137
+ }
138
+ await writeConfig(config, configName);
139
+ }
140
+ exports.storeConfig = storeConfig;
141
+ async function getConfigFiles() {
142
+ try {
143
+ const dirContent = (await node_fs_1.promises.readdir(configDirectoryLocation, { withFileTypes: true }))
144
+ .filter((content) => content.isFile() &&
145
+ content.name !== configFileName &&
146
+ (0, node_path_1.parse)(content.name).ext === '.json')
147
+ .map((content) => (0, node_path_1.parse)(content.name).name);
148
+ return dirContent;
149
+ }
150
+ catch {
151
+ logger_1.default.error(`Failed to open config directory (${configDirectoryLocation}) for getting files.`);
152
+ }
153
+ }
154
+ exports.getConfigFiles = getConfigFiles;
155
+ async function getConfigContent(fileName) {
156
+ const configFilePath = (0, node_path_1.join)(configDirectoryLocation, `${fileName}.json`);
157
+ let fileContent;
158
+ try {
159
+ fileContent = (await node_fs_1.promises.readFile(configFilePath)).toString();
160
+ return JSON.parse(fileContent);
161
+ }
162
+ catch (error) {
163
+ logger_1.default.error(`Failed to open/parse config file (${fileName}) might be malformed or not found.`);
164
+ }
165
+ }
166
+ exports.getConfigContent = getConfigContent;
167
+ async function validateEnvironments(envName = null) {
168
+ if (envName === 'development') {
169
+ envName = 'dev';
170
+ }
171
+ else if (envName === 'production') {
172
+ envName = 'prod';
173
+ }
174
+ if (envName && !exports.ENVIRONMENTS[envName]) {
175
+ throw new Error(`No environment found with name ${envName}`);
176
+ }
177
+ return envName ? exports.ENVIRONMENTS[envName] : true;
178
+ }
179
+ exports.validateEnvironments = validateEnvironments;
180
+ async function checkTelemetry(cliVersion) {
181
+ try {
182
+ // TODO: remove comment when api is available so that we don't get errors
183
+ // const response = await axios.post('https://api.vibeiq.com/prod/api/telemetry/cli', {
184
+ // cli_version: cliVersion,
185
+ // });
186
+ // const { deprecations, warnings, errors } = response.data;
187
+ // eg: how the response should look like
188
+ // const deprecations = [
189
+ // { message: 'Deprecation 1' },
190
+ // { message: 'Deprecation 2' },
191
+ // { message: 'Deprecation 3' },
192
+ // ];
193
+ // const warnings = [{ message: 'Warning 1' }, { message: 'Warning 2' }, { message: 'Warning 3' }];
194
+ // const errors = [{ message: 'Error 1' }, { message: 'Error 2' }, { message: 'Error 3' }];
195
+ // TODO: Remove the hardcoded data when the API is available
196
+ const deprecations = [];
197
+ const warnings = [];
198
+ const errors = [];
199
+ if (errors.length > 0) {
200
+ const latestVersion = '2.4.0'; // TODO: Replace with the latest version of the CLI by calling the API
201
+ console.error(`Contrail CLI verison ${cliVersion} contains known critical bugs. Please upgrade to version ${latestVersion}.\n\nQuitting the CLI for safety.`);
202
+ errors.forEach((error) => {
203
+ logger_1.default.error(`${error.message}`);
204
+ });
205
+ const failed_exit_code = 1;
206
+ process.exit(failed_exit_code);
207
+ }
208
+ if (warnings.length > 0) {
209
+ warnings.forEach((warning) => {
210
+ logger_1.default.warn(`${warning.message}`);
211
+ });
212
+ }
213
+ if (deprecations.length > 0) {
214
+ deprecations.forEach((deprecation) => {
215
+ logger_1.default.warn(`${deprecation.message}`);
216
+ });
217
+ }
218
+ }
219
+ catch (error) {
220
+ console.error('Failed to check telemetry:', error.message);
221
+ }
222
+ }
223
+ exports.checkTelemetry = checkTelemetry;
@@ -1,2 +1,2 @@
1
- export declare function safeFileOverwrite(fileLocation: string, overwrite: boolean): Promise<boolean>;
2
- export declare function parseCSVData(data: string): any;
1
+ export declare function safeFileOverwrite(fileLocation: string, overwrite: boolean): Promise<boolean>;
2
+ export declare function parseCSVData(data: string): any;
@@ -1,36 +1,36 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseCSVData = exports.safeFileOverwrite = void 0;
4
- const tslib_1 = require("tslib");
5
- const inquirer_1 = tslib_1.__importDefault(require("inquirer"));
6
- const logger_1 = tslib_1.__importDefault(require("../logger"));
7
- const sync_1 = require("csv-parse/sync");
8
- const PASS_FORCE_TO_OVERWRITE = 'Pass --overwrite to overwrite without prompting';
9
- //throws an error if the user declines to overwrite the file
10
- async function safeFileOverwrite(fileLocation, overwrite) {
11
- if (overwrite) {
12
- logger_1.default.info(`overwriting ${fileLocation}`);
13
- return true;
14
- }
15
- const answers = await inquirer_1.default.prompt([
16
- {
17
- type: 'confirm',
18
- name: 'shouldOverwrite',
19
- message: `The file ${fileLocation} already exists. Do you wish to overwrite it?\n${PASS_FORCE_TO_OVERWRITE}`,
20
- default: false,
21
- },
22
- ]);
23
- if (!answers.shouldOverwrite) {
24
- throw new Error('File was not overwritten. Cancelling process...');
25
- }
26
- }
27
- exports.safeFileOverwrite = safeFileOverwrite;
28
- function parseCSVData(data) {
29
- return (0, sync_1.parse)(data, {
30
- columns: true,
31
- skip_empty_lines: true,
32
- relax_quotes: true,
33
- bom: true,
34
- });
35
- }
36
- exports.parseCSVData = parseCSVData;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseCSVData = exports.safeFileOverwrite = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const inquirer_1 = tslib_1.__importDefault(require("inquirer"));
6
+ const logger_1 = tslib_1.__importDefault(require("../logger"));
7
+ const sync_1 = require("csv-parse/sync");
8
+ const PASS_FORCE_TO_OVERWRITE = 'Pass --overwrite to overwrite without prompting';
9
+ //throws an error if the user declines to overwrite the file
10
+ async function safeFileOverwrite(fileLocation, overwrite) {
11
+ if (overwrite) {
12
+ logger_1.default.info(`overwriting ${fileLocation}`);
13
+ return true;
14
+ }
15
+ const answers = await inquirer_1.default.prompt([
16
+ {
17
+ type: 'confirm',
18
+ name: 'shouldOverwrite',
19
+ message: `The file ${fileLocation} already exists. Do you wish to overwrite it?\n${PASS_FORCE_TO_OVERWRITE}`,
20
+ default: false,
21
+ },
22
+ ]);
23
+ if (!answers.shouldOverwrite) {
24
+ throw new Error('File was not overwritten. Cancelling process...');
25
+ }
26
+ }
27
+ exports.safeFileOverwrite = safeFileOverwrite;
28
+ function parseCSVData(data) {
29
+ return (0, sync_1.parse)(data, {
30
+ columns: true,
31
+ skip_empty_lines: true,
32
+ relax_quotes: true,
33
+ bom: true,
34
+ });
35
+ }
36
+ exports.parseCSVData = parseCSVData;
@@ -1,20 +1,20 @@
1
- export declare enum FileExtension {
2
- JSON = "JSON",
3
- YAML = "YAML",
4
- CSV = "CSV"
5
- }
6
- export declare function readFile(configFileName: any, fileExtensionType?: FileExtension): any;
7
- export declare function uploadAndLoadLocalFile(incomingFileName: string, configFileName: string): Promise<void>;
8
- export declare function loadLocalFile(configFileName: string): Promise<void>;
9
- export declare function getDuplicateFederatedIds(data: any[], federatedIdField: string): string[];
10
- /**
11
- * Returns federated IDs that have more than one unique mapping to the groupByField.
12
- */
13
- export declare function getConflictingFederatedIdsGroupedByField(data: any[], federatedIdField: string, groupByField: string): string[];
14
- /**
15
- * Returns all the conflicting (non-unique) field values when grouped by federated ID.
16
- */
17
- export declare function getConflictingFieldForFederatedId(data: any[], federatedIdField: string, field: string): {
18
- federatedId: string;
19
- values: string[];
20
- }[];
1
+ export declare enum FileExtension {
2
+ JSON = "JSON",
3
+ YAML = "YAML",
4
+ CSV = "CSV"
5
+ }
6
+ export declare function readFile(configFileName: any, fileExtensionType?: FileExtension): any;
7
+ export declare function uploadAndLoadLocalFile(incomingFileName: string, configFileName: string): Promise<void>;
8
+ export declare function loadLocalFile(configFileName: string): Promise<void>;
9
+ export declare function getDuplicateFederatedIds(data: any[], federatedIdField: string): string[];
10
+ /**
11
+ * Returns federated IDs that have more than one unique mapping to the groupByField.
12
+ */
13
+ export declare function getConflictingFederatedIdsGroupedByField(data: any[], federatedIdField: string, groupByField: string): string[];
14
+ /**
15
+ * Returns all the conflicting (non-unique) field values when grouped by federated ID.
16
+ */
17
+ export declare function getConflictingFieldForFederatedId(data: any[], federatedIdField: string, field: string): {
18
+ federatedId: string;
19
+ values: string[];
20
+ }[];