@contrail/cli 3.4.2 → 3.4.4-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 (241) hide show
  1. package/README.md +38 -1
  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/load-local/index.d.ts +17 -0
  89. package/dist/commands/load-local/index.js +156 -0
  90. package/dist/commands/projects/export.d.ts +13 -13
  91. package/dist/commands/projects/export.js +35 -35
  92. package/dist/commands/projects/list.d.ts +10 -10
  93. package/dist/commands/projects/list.js +36 -36
  94. package/dist/commands/projects/load.d.ts +25 -25
  95. package/dist/commands/projects/load.js +198 -198
  96. package/dist/commands/types/exportOptionSetHierarchies.d.ts +11 -11
  97. package/dist/commands/types/exportOptionSetHierarchies.js +133 -133
  98. package/dist/commands/types/getAll.d.ts +21 -21
  99. package/dist/commands/types/getAll.js +180 -180
  100. package/dist/commands/types/getOptionSets.d.ts +16 -16
  101. package/dist/commands/types/getOptionSets.js +170 -170
  102. package/dist/commands/types/loadAll.d.ts +12 -12
  103. package/dist/commands/types/loadAll.js +55 -55
  104. package/dist/commands/types/mergeOptionSets.d.ts +13 -13
  105. package/dist/commands/types/mergeOptionSets.js +116 -116
  106. package/dist/commands/types/mergeTypeProperties.d.ts +15 -15
  107. package/dist/commands/types/mergeTypeProperties.js +95 -95
  108. package/dist/commands/types/parseOptionSetsHierarchyLocalFile.d.ts +14 -14
  109. package/dist/commands/types/parseOptionSetsHierarchyLocalFile.js +133 -133
  110. package/dist/commands/types/parseOptionSetsHierarchyValuesToKeysLocalFile.d.ts +14 -14
  111. package/dist/commands/types/parseOptionSetsHierarchyValuesToKeysLocalFile.js +102 -102
  112. package/dist/commands/types/parseOptionSetsLocalFiles.d.ts +39 -39
  113. package/dist/commands/types/parseOptionSetsLocalFiles.js +229 -229
  114. package/dist/commands/types/parseOptionSetsToFolderStructure.d.ts +13 -13
  115. package/dist/commands/types/parseOptionSetsToFolderStructure.js +68 -68
  116. package/dist/commands/types/parseTypesFromFiles.d.ts +14 -14
  117. package/dist/commands/types/parseTypesFromFiles.js +40 -40
  118. package/dist/commands/types/parseTypesFromLocalFiles.d.ts +14 -14
  119. package/dist/commands/types/parseTypesFromLocalFiles.js +37 -37
  120. package/dist/commands/types/parseTypesFromTemplateAndDataFromLocalFiles.d.ts +15 -15
  121. package/dist/commands/types/parseTypesFromTemplateAndDataFromLocalFiles.js +39 -39
  122. package/dist/commands/types/parseTypesFromTemplateFromLocalFiles.d.ts +14 -14
  123. package/dist/commands/types/parseTypesFromTemplateFromLocalFiles.js +38 -38
  124. package/dist/commands/types/uploadOptionSetHierarchies.d.ts +12 -12
  125. package/dist/commands/types/uploadOptionSetHierarchies.js +257 -257
  126. package/dist/commands/types/uploadOptionSets.d.ts +13 -13
  127. package/dist/commands/types/uploadOptionSets.js +155 -155
  128. package/dist/commands/types/uploadOptionSetsHierarchyLocalFile.d.ts +15 -15
  129. package/dist/commands/types/uploadOptionSetsHierarchyLocalFile.js +135 -135
  130. package/dist/commands/types/uploadRuleSets.d.ts +12 -12
  131. package/dist/commands/types/uploadRuleSets.js +197 -197
  132. package/dist/commands/types/uploadTypePolicies.d.ts +12 -12
  133. package/dist/commands/types/uploadTypePolicies.js +233 -233
  134. package/dist/commands/types/uploadTypePropertyPolicies.d.ts +13 -13
  135. package/dist/commands/types/uploadTypePropertyPolicies.js +286 -286
  136. package/dist/commands/types/uploadTypes.d.ts +13 -13
  137. package/dist/commands/types/uploadTypes.js +35 -35
  138. package/dist/commands/types/uploadUsageInfo.d.ts +15 -12
  139. package/dist/commands/types/uploadUsageInfo.js +179 -172
  140. package/dist/commands/types/uploadUsageInfo.spec.d.ts +1 -0
  141. package/dist/commands/types/uploadUsageInfo.spec.js +249 -0
  142. package/dist/commands/users/export.d.ts +14 -14
  143. package/dist/commands/users/export.js +76 -76
  144. package/dist/commands/users/import.d.ts +14 -14
  145. package/dist/commands/users/import.js +68 -68
  146. package/dist/commands/webhooks/create.d.ts +11 -11
  147. package/dist/commands/webhooks/create.js +25 -25
  148. package/dist/commands/webhooks/delete.d.ts +14 -14
  149. package/dist/commands/webhooks/delete.js +53 -53
  150. package/dist/commands/webhooks/getWebhookTrigger.d.ts +13 -13
  151. package/dist/commands/webhooks/getWebhookTrigger.js +40 -40
  152. package/dist/commands/webhooks/list.d.ts +12 -12
  153. package/dist/commands/webhooks/list.js +31 -31
  154. package/dist/commands/workflow-template-definitions/install.d.ts +10 -10
  155. package/dist/commands/workflow-template-definitions/install.js +19 -19
  156. package/dist/commands/workflow-template-definitions/list.d.ts +10 -10
  157. package/dist/commands/workflow-template-definitions/list.js +19 -19
  158. package/dist/commands/workflow-templates/delete.d.ts +10 -10
  159. package/dist/commands/workflow-templates/delete.js +19 -19
  160. package/dist/commands/workflow-templates/export.d.ts +14 -14
  161. package/dist/commands/workflow-templates/export.js +78 -78
  162. package/dist/commands/workflow-templates/list.d.ts +10 -10
  163. package/dist/commands/workflow-templates/list.js +19 -19
  164. package/dist/commands/workflow-templates/load.d.ts +13 -13
  165. package/dist/commands/workflow-templates/load.js +26 -26
  166. package/dist/common.d.ts +4 -4
  167. package/dist/common.js +18 -18
  168. package/dist/helpers/app/actions-deployer.d.ts +11 -11
  169. package/dist/helpers/app/actions-deployer.js +123 -123
  170. package/dist/helpers/app/app-config-validators.d.ts +22 -22
  171. package/dist/helpers/app/app-config-validators.js +100 -100
  172. package/dist/helpers/app/app-config-validators.spec.d.ts +1 -1
  173. package/dist/helpers/app/app-config-validators.spec.js +310 -310
  174. package/dist/helpers/app/app-deployer.d.ts +12 -12
  175. package/dist/helpers/app/app-deployer.js +278 -278
  176. package/dist/helpers/app/app-template-parsers.d.ts +14 -14
  177. package/dist/helpers/app/app-template-parsers.js +106 -106
  178. package/dist/helpers/app/extension-package-deployer.d.ts +7 -7
  179. package/dist/helpers/app/extension-package-deployer.js +175 -175
  180. package/dist/helpers/app/extensions-deployer.d.ts +9 -9
  181. package/dist/helpers/app/extensions-deployer.js +95 -95
  182. package/dist/helpers/app/load-app-config.d.ts +4 -4
  183. package/dist/helpers/app/load-app-config.js +22 -22
  184. package/dist/helpers/app/metadata-extractor.d.ts +1 -1
  185. package/dist/helpers/app/metadata-extractor.js +100 -100
  186. package/dist/helpers/app/setup-template.d.ts +8 -8
  187. package/dist/helpers/app/setup-template.js +48 -48
  188. package/dist/helpers/app/update-app-config.d.ts +2 -2
  189. package/dist/helpers/app/update-app-config.js +20 -20
  190. package/dist/helpers/app/upgrade-version.d.ts +16 -16
  191. package/dist/helpers/app/upgrade-version.js +37 -37
  192. package/dist/helpers/app/upgrade-version.spec.d.ts +1 -1
  193. package/dist/helpers/app/upgrade-version.spec.js +33 -33
  194. package/dist/helpers/colors/helpers.d.ts +12 -12
  195. package/dist/helpers/colors/helpers.js +84 -84
  196. package/dist/helpers/config/config.d.ts +16 -16
  197. package/dist/helpers/config/config.js +223 -223
  198. package/dist/helpers/file-helpers.d.ts +2 -2
  199. package/dist/helpers/file-helpers.js +36 -36
  200. package/dist/helpers/load/helpers.d.ts +20 -20
  201. package/dist/helpers/load/helpers.js +141 -141
  202. package/dist/helpers/load/helpers.spec.d.ts +1 -1
  203. package/dist/helpers/load/helpers.spec.js +62 -62
  204. package/dist/helpers/load/validators.d.ts +14 -14
  205. package/dist/helpers/load/validators.js +182 -182
  206. package/dist/helpers/load/validators.spec.d.ts +1 -1
  207. package/dist/helpers/load/validators.spec.js +450 -450
  208. package/dist/helpers/pipeline/formatters.d.ts +6 -0
  209. package/dist/helpers/pipeline/formatters.js +219 -0
  210. package/dist/helpers/projects/helpers.d.ts +3 -3
  211. package/dist/helpers/projects/helpers.js +167 -167
  212. package/dist/helpers/types/csv-parser.d.ts +1 -1
  213. package/dist/helpers/types/csv-parser.js +59 -59
  214. package/dist/helpers/types/option-set-helper.d.ts +9 -9
  215. package/dist/helpers/types/option-set-helper.js +48 -48
  216. package/dist/helpers/types/option-set-helper.spec.d.ts +1 -1
  217. package/dist/helpers/types/option-set-helper.spec.js +64 -64
  218. package/dist/helpers/types/parseOptionSetsLocalFiles.spec.d.ts +1 -1
  219. package/dist/helpers/types/parseOptionSetsLocalFiles.spec.js +285 -285
  220. package/dist/helpers/types/type-extractor.d.ts +1 -1
  221. package/dist/helpers/types/type-extractor.js +36 -36
  222. package/dist/helpers/types/type-parser.d.ts +4 -4
  223. package/dist/helpers/types/type-parser.js +119 -119
  224. package/dist/helpers/types/type-uploader.d.ts +20 -20
  225. package/dist/helpers/types/type-uploader.js +336 -336
  226. package/dist/helpers/types/type-uploader.spec.d.ts +1 -1
  227. package/dist/helpers/types/type-uploader.spec.js +266 -266
  228. package/dist/helpers/types/uploadOptionSets.spec.d.ts +1 -1
  229. package/dist/helpers/types/uploadOptionSets.spec.js +19 -19
  230. package/dist/helpers/workflow-template-definitions/workflow-template-definition-deployer.d.ts +12 -12
  231. package/dist/helpers/workflow-template-definitions/workflow-template-definition-deployer.js +158 -158
  232. package/dist/helpers/workflow-templates/helper.d.ts +20 -20
  233. package/dist/helpers/workflow-templates/helper.js +285 -285
  234. package/dist/index.d.ts +1 -1
  235. package/dist/index.js +5 -5
  236. package/dist/interfaces.d.ts +470 -445
  237. package/dist/interfaces.js +163 -163
  238. package/dist/logger.d.ts +3 -3
  239. package/dist/logger.js +33 -33
  240. package/oclif.manifest.json +85 -1
  241. package/package.json +11 -6
@@ -1,258 +1,258 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.uploadOptionSetHierarchies = void 0;
4
- const tslib_1 = require("tslib");
5
- const sdk_1 = require("@contrail/sdk");
6
- const fs_1 = tslib_1.__importDefault(require("fs"));
7
- const path = tslib_1.__importStar(require("path"));
8
- const login_1 = require("../../auth/login");
9
- const chalk_1 = tslib_1.__importDefault(require("chalk"));
10
- const core_1 = require("@oclif/core");
11
- const type_extractor_1 = require("../../helpers/types/type-extractor");
12
- const basecommand_1 = require("../../basecommand");
13
- const logger_1 = tslib_1.__importDefault(require("../../logger"));
14
- const js_yaml_1 = tslib_1.__importDefault(require("js-yaml"));
15
- class UploadOptionSetHierarchies extends basecommand_1.BaseCommand {
16
- static description = 'Upload Option Set Hierarchies for your Org. Option set hierarchies are loaded from .yml files in the option-set-hierarchies directory.';
17
- static examples = [
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.uploadOptionSetHierarchies = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const sdk_1 = require("@contrail/sdk");
6
+ const fs_1 = tslib_1.__importDefault(require("fs"));
7
+ const path = tslib_1.__importStar(require("path"));
8
+ const login_1 = require("../../auth/login");
9
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
10
+ const core_1 = require("@oclif/core");
11
+ const type_extractor_1 = require("../../helpers/types/type-extractor");
12
+ const basecommand_1 = require("../../basecommand");
13
+ const logger_1 = tslib_1.__importDefault(require("../../logger"));
14
+ const js_yaml_1 = tslib_1.__importDefault(require("js-yaml"));
15
+ class UploadOptionSetHierarchies extends basecommand_1.BaseCommand {
16
+ static description = 'Upload Option Set Hierarchies for your Org. Option set hierarchies are loaded from .yml files in the option-set-hierarchies directory.';
17
+ static examples = [
18
18
  `$ contrail types uploadOptionSetHierarchies
19
- `,
20
- ];
21
- static flags = {
22
- ...basecommand_1.BaseCommand.baseFlags,
23
- dir: core_1.Flags.string({
24
- char: 'd',
25
- description: 'The directory from which to export the option set hierarchies data. Defaults to the current directory. The option set data will be loaded from $dir/option-set-hierarchies',
26
- required: false,
27
- default: '.',
28
- }),
29
- };
30
- async run() {
31
- return await uploadOptionSetHierarchies(this.flags.dir);
32
- }
33
- }
34
- exports.default = UploadOptionSetHierarchies;
35
- async function uploadOptionSetHierarchies(dir) {
36
- try {
37
- await (0, login_1.authUser)();
38
- logger_1.default.info(`${chalk_1.default.yellow.bold('OPTION SET HIERARCHIES')} Uploading`);
39
- const optionSetHierarchies = await loadOptionSetHierarchies(dir);
40
- await uploadOSH(optionSetHierarchies);
41
- const optionSetHierarchyLinks = await loadOptionSetHierarchyLinks(dir);
42
- await uploadOSHLinks(optionSetHierarchyLinks);
43
- logger_1.default.info(`${chalk_1.default.yellow.bold('OPTION SET HIERARCHIES')} Uploaded`);
44
- }
45
- catch (e) {
46
- logger_1.default.info(`${chalk_1.default.red.bold('FAIL')} Option set hierarchy Upload Failed. ${e}`);
47
- return;
48
- }
49
- logger_1.default.info(`${chalk_1.default.green.bold('COMPLETE')} Option set hierarchy Upload Complete.`);
50
- }
51
- exports.uploadOptionSetHierarchies = uploadOptionSetHierarchies;
52
- function loadOptionSetHierarchies(fromDir) {
53
- try {
54
- const dir = path.resolve(path.join(fromDir, 'option-set-hierarchies'));
55
- const files = fs_1.default.readdirSync(dir);
56
- const OSHs = [];
57
- for (const file of files) {
58
- OSHs.push(js_yaml_1.default.load(fs_1.default.readFileSync(path.join(dir, file), 'utf8')));
59
- }
60
- return OSHs;
61
- }
62
- catch (e) {
63
- throw new Error(`ERROR PARSING YAML: ${e}`);
64
- }
65
- }
66
- function loadOptionSetHierarchyLinks(fromDir) {
67
- try {
68
- return js_yaml_1.default.load(fs_1.default.readFileSync(path.join(fromDir, 'type-option-set-hierarchy-links.yml'), 'utf8'));
69
- }
70
- catch (e) {
71
- throw new Error(`ERROR PARSING YAML: ${e}`);
72
- }
73
- }
74
- async function uploadOSH(loadedOSHs) {
75
- const optionSets = await new sdk_1.Entities().get({
76
- entityName: 'type-property-option-set',
77
- });
78
- const currentOSHs = await new sdk_1.Entities().get({
79
- entityName: 'option-set-hierarchy',
80
- });
81
- const optionSetsByIdentifier = {};
82
- for (const optionSet of optionSets) {
83
- optionSetsByIdentifier[optionSet.identifier] = optionSet;
84
- }
85
- const currentOSHByIdentifier = {};
86
- for (const currentOSH of currentOSHs) {
87
- currentOSHByIdentifier[currentOSH.identifier] = currentOSH;
88
- }
89
- const loadedOSHByIdentifier = {};
90
- for (const loadedOSH of loadedOSHs) {
91
- loadedOSHByIdentifier[loadedOSH.identifier] = loadedOSH;
92
- }
93
- logger_1.default.debug(`current OSH: ${currentOSHs}`);
94
- logger_1.default.debug(`loaded OSH: ${loadedOSHs}`);
95
- for (const osh of loadedOSHs) {
96
- try {
97
- const found = currentOSHByIdentifier[osh.identifier];
98
- if (!found) {
99
- if (!transformOSHNameToID(osh.hierarchy, optionSets)) {
100
- continue;
101
- }
102
- logger_1.default.debug(`Creating: ${JSON.stringify(osh, null, 2)}`);
103
- await new sdk_1.Entities().create({
104
- entityName: 'option-set-hierarchy',
105
- object: osh,
106
- });
107
- }
108
- else {
109
- if (!transformOSHNameToID(osh.hierarchy, optionSets)) {
110
- continue;
111
- }
112
- logger_1.default.debug(`Updating: ${JSON.stringify(osh)}`);
113
- await new sdk_1.Entities().update({
114
- entityName: 'option-set-hierarchy',
115
- id: found.id,
116
- object: osh,
117
- });
118
- }
119
- }
120
- catch (err) {
121
- logger_1.default.error(`Error Uploading option set hierarchy: ${err}`);
122
- }
123
- }
124
- for (const currentOSH of currentOSHs) {
125
- try {
126
- const found = loadedOSHByIdentifier[currentOSH.name];
127
- if (!found) {
128
- logger_1.default.info(`Deleting: ${currentOSH.name}`);
129
- await new sdk_1.Entities().delete({
130
- entityName: 'option-set-hierarchy',
131
- id: currentOSH.id,
132
- });
133
- }
134
- }
135
- catch (err) {
136
- logger_1.default.error(`Error Deleting Option set hierarchy: ${err}`);
137
- }
138
- }
139
- }
140
- // transforms the passed hierarchy from names to ids, and returns true if operation succeeded.
141
- function transformOSHNameToID(hierarchy, optionSets) {
142
- logger_1.default.info(`passed hierarchy: ${hierarchy}`);
143
- for (let i = 0; i < hierarchy.length; i++) {
144
- const os = optionSets.find((os) => os.slug === hierarchy[i]);
145
- if (!os) {
146
- logger_1.default.error(`could not find option set with name ${hierarchy[i]} at position ${i}. skipping...`);
147
- return false;
148
- }
149
- hierarchy[i] = os.id;
150
- }
151
- return true;
152
- }
153
- async function uploadOSHLinks(reducedOSHLinks) {
154
- const typesWithProperties = await (0, type_extractor_1.getTypes)();
155
- const typeProperties = [];
156
- typesWithProperties.forEach((type) => {
157
- if (type.typeProperties) {
158
- for (const tp of type.typeProperties) {
159
- tp.typeId = type.id;
160
- tp.typeSlug = type.slug;
161
- typeProperties.push(tp);
162
- }
163
- }
164
- });
165
- const currentOSHs = await new sdk_1.Entities().get({
166
- entityName: 'option-set-hierarchy',
167
- });
168
- const currentOSHLinks = await new sdk_1.Entities().get({
169
- entityName: 'type-option-set-hierarchy-link',
170
- });
171
- const currentOSHLinkHashes = {};
172
- for (const currentLink of currentOSHLinks) {
173
- const foundType = typesWithProperties.find((x) => x.id === currentLink.typeId);
174
- const foundOSH = currentOSHs.find((osh) => osh.id === currentLink.optionSetHierarchyId);
175
- const foundTPSlugs = typeProperties
176
- .filter((x) => currentLink?.hierarchyTypePropertyIds?.includes(x.id))
177
- .map((x) => x.slug);
178
- if (!foundType ||
179
- !foundOSH ||
180
- foundTPSlugs.length !== currentLink.hierarchyTypePropertyIds.length) {
181
- logger_1.default.info(`skipping unhashable, invalid type option set hierarchy link: ${JSON.stringify(currentLink, null, 2)}`);
182
- }
183
- // don't mutate original array
184
- const sortedFoundTPSlugs = [...foundTPSlugs].sort();
185
- const hash = `${foundType.slug}|${foundOSH.name}|${sortedFoundTPSlugs.join('|')}`;
186
- currentOSHLinkHashes[hash] = currentLink;
187
- }
188
- const reducedLinksByHashes = {};
189
- for (const loadedLink of reducedOSHLinks) {
190
- // don't mutate original array
191
- const sortedTPSlugs = [...loadedLink.typePropertySlugs].sort();
192
- const hash = `${loadedLink.typeSlug}|${loadedLink.optionSetHierarchyIdentifier}|${sortedTPSlugs.join('|')}}`;
193
- reducedLinksByHashes[hash] = loadedLink;
194
- }
195
- for (const loadedLink of reducedOSHLinks) {
196
- try {
197
- // don't mutate original array
198
- const sortedTPSlugs = [...loadedLink.typePropertySlugs].sort();
199
- const found = currentOSHLinkHashes[`${loadedLink.typeSlug}|${loadedLink.optionSetHierarchyIdentifier}|${sortedTPSlugs.join('|')}`];
200
- if (!found) {
201
- if (!transformReducedLink(loadedLink, typesWithProperties, currentOSHs)) {
202
- continue;
203
- }
204
- logger_1.default.debug(`Creating: ${JSON.stringify(loadedLink, null, 2)}`);
205
- await new sdk_1.Entities().create({
206
- entityName: 'type-option-set-hierarchy-link',
207
- object: {
208
- hierarchyTypePropertyIds: loadedLink.hierarchyTypePropertyIds,
209
- optionSetHierarchyId: loadedLink.optionSetHierarchyId,
210
- typeId: loadedLink.typeId,
211
- },
212
- });
213
- }
214
- }
215
- catch (err) {
216
- logger_1.default.error(`Error uploading type option set hierarchy links: ${err}`);
217
- }
218
- }
219
- for (const [currentLinkHash, currentLink] of Object.entries(currentOSHLinkHashes)) {
220
- try {
221
- const found = reducedLinksByHashes[currentLinkHash];
222
- if (!found) {
223
- logger_1.default.debug(`Deleting: ${JSON.stringify(currentLinkHash)}`);
224
- await new sdk_1.Entities().delete({
225
- entityName: 'type-option-set-hierarchy-link',
226
- id: currentLink['id'],
227
- });
228
- }
229
- }
230
- catch (err) {
231
- logger_1.default.error(`Error Deleting rule set link: ${err}`);
232
- }
233
- }
234
- }
235
- function transformReducedLink(OSHLink, typesWithProperties, OSHs) {
236
- logger_1.default.debug(`OSHLink before transform: ${JSON.stringify(OSHLink, null, 2)}`);
237
- const foundType = typesWithProperties.find((x) => x.slug === OSHLink.typeSlug);
238
- if (!foundType) {
239
- logger_1.default.error(`OSH Links: Could not find type with slug ${OSHLink.typeSlug}`);
240
- return false;
241
- }
242
- OSHLink.typeId = foundType.id;
243
- const foundTPs = foundType?.typeProperties?.filter((x) => OSHLink.typePropertySlugs.includes(x.slug)) ?? [];
244
- if (foundTPs.length !== OSHLink.typePropertySlugs.length) {
245
- logger_1.default.error(`OSH Links: Could not find all type properties with slugs ${OSHLink.typePropertySlugs}`);
246
- return false;
247
- }
248
- logger_1.default.debug(`foundTPs: ${JSON.stringify(foundTPs)}`);
249
- OSHLink.hierarchyTypePropertyIds = foundTPs.map((x) => x.id);
250
- const foundOSH = OSHs.find((x) => x.identifier === OSHLink.optionSetHierarchyIdentifier);
251
- if (!foundOSH) {
252
- logger_1.default.error(`OSH Links: Could not find option set hierarchy with identifier ${OSHLink.optionSetHierarchyIdentifier}`);
253
- return false;
254
- }
255
- OSHLink.optionSetHierarchyId = foundOSH.id;
256
- logger_1.default.debug(`OSHLink after transform: ${JSON.stringify(OSHLink, null, 2)}`);
257
- return true;
258
- }
19
+ `,
20
+ ];
21
+ static flags = {
22
+ ...basecommand_1.BaseCommand.baseFlags,
23
+ dir: core_1.Flags.string({
24
+ char: 'd',
25
+ description: 'The directory from which to export the option set hierarchies data. Defaults to the current directory. The option set data will be loaded from $dir/option-set-hierarchies',
26
+ required: false,
27
+ default: '.',
28
+ }),
29
+ };
30
+ async run() {
31
+ return await uploadOptionSetHierarchies(this.flags.dir);
32
+ }
33
+ }
34
+ exports.default = UploadOptionSetHierarchies;
35
+ async function uploadOptionSetHierarchies(dir) {
36
+ try {
37
+ await (0, login_1.authUser)();
38
+ logger_1.default.info(`${chalk_1.default.yellow.bold('OPTION SET HIERARCHIES')} Uploading`);
39
+ const optionSetHierarchies = await loadOptionSetHierarchies(dir);
40
+ await uploadOSH(optionSetHierarchies);
41
+ const optionSetHierarchyLinks = await loadOptionSetHierarchyLinks(dir);
42
+ await uploadOSHLinks(optionSetHierarchyLinks);
43
+ logger_1.default.info(`${chalk_1.default.yellow.bold('OPTION SET HIERARCHIES')} Uploaded`);
44
+ }
45
+ catch (e) {
46
+ logger_1.default.info(`${chalk_1.default.red.bold('FAIL')} Option set hierarchy Upload Failed. ${e}`);
47
+ return;
48
+ }
49
+ logger_1.default.info(`${chalk_1.default.green.bold('COMPLETE')} Option set hierarchy Upload Complete.`);
50
+ }
51
+ exports.uploadOptionSetHierarchies = uploadOptionSetHierarchies;
52
+ function loadOptionSetHierarchies(fromDir) {
53
+ try {
54
+ const dir = path.resolve(path.join(fromDir, 'option-set-hierarchies'));
55
+ const files = fs_1.default.readdirSync(dir);
56
+ const OSHs = [];
57
+ for (const file of files) {
58
+ OSHs.push(js_yaml_1.default.load(fs_1.default.readFileSync(path.join(dir, file), 'utf8')));
59
+ }
60
+ return OSHs;
61
+ }
62
+ catch (e) {
63
+ throw new Error(`ERROR PARSING YAML: ${e}`);
64
+ }
65
+ }
66
+ function loadOptionSetHierarchyLinks(fromDir) {
67
+ try {
68
+ return js_yaml_1.default.load(fs_1.default.readFileSync(path.join(fromDir, 'type-option-set-hierarchy-links.yml'), 'utf8'));
69
+ }
70
+ catch (e) {
71
+ throw new Error(`ERROR PARSING YAML: ${e}`);
72
+ }
73
+ }
74
+ async function uploadOSH(loadedOSHs) {
75
+ const optionSets = await new sdk_1.Entities().get({
76
+ entityName: 'type-property-option-set',
77
+ });
78
+ const currentOSHs = await new sdk_1.Entities().get({
79
+ entityName: 'option-set-hierarchy',
80
+ });
81
+ const optionSetsByIdentifier = {};
82
+ for (const optionSet of optionSets) {
83
+ optionSetsByIdentifier[optionSet.identifier] = optionSet;
84
+ }
85
+ const currentOSHByIdentifier = {};
86
+ for (const currentOSH of currentOSHs) {
87
+ currentOSHByIdentifier[currentOSH.identifier] = currentOSH;
88
+ }
89
+ const loadedOSHByIdentifier = {};
90
+ for (const loadedOSH of loadedOSHs) {
91
+ loadedOSHByIdentifier[loadedOSH.identifier] = loadedOSH;
92
+ }
93
+ logger_1.default.debug(`current OSH: ${currentOSHs}`);
94
+ logger_1.default.debug(`loaded OSH: ${loadedOSHs}`);
95
+ for (const osh of loadedOSHs) {
96
+ try {
97
+ const found = currentOSHByIdentifier[osh.identifier];
98
+ if (!found) {
99
+ if (!transformOSHNameToID(osh.hierarchy, optionSets)) {
100
+ continue;
101
+ }
102
+ logger_1.default.debug(`Creating: ${JSON.stringify(osh, null, 2)}`);
103
+ await new sdk_1.Entities().create({
104
+ entityName: 'option-set-hierarchy',
105
+ object: osh,
106
+ });
107
+ }
108
+ else {
109
+ if (!transformOSHNameToID(osh.hierarchy, optionSets)) {
110
+ continue;
111
+ }
112
+ logger_1.default.debug(`Updating: ${JSON.stringify(osh)}`);
113
+ await new sdk_1.Entities().update({
114
+ entityName: 'option-set-hierarchy',
115
+ id: found.id,
116
+ object: osh,
117
+ });
118
+ }
119
+ }
120
+ catch (err) {
121
+ logger_1.default.error(`Error Uploading option set hierarchy: ${err}`);
122
+ }
123
+ }
124
+ for (const currentOSH of currentOSHs) {
125
+ try {
126
+ const found = loadedOSHByIdentifier[currentOSH.name];
127
+ if (!found) {
128
+ logger_1.default.info(`Deleting: ${currentOSH.name}`);
129
+ await new sdk_1.Entities().delete({
130
+ entityName: 'option-set-hierarchy',
131
+ id: currentOSH.id,
132
+ });
133
+ }
134
+ }
135
+ catch (err) {
136
+ logger_1.default.error(`Error Deleting Option set hierarchy: ${err}`);
137
+ }
138
+ }
139
+ }
140
+ // transforms the passed hierarchy from names to ids, and returns true if operation succeeded.
141
+ function transformOSHNameToID(hierarchy, optionSets) {
142
+ logger_1.default.info(`passed hierarchy: ${hierarchy}`);
143
+ for (let i = 0; i < hierarchy.length; i++) {
144
+ const os = optionSets.find((os) => os.slug === hierarchy[i]);
145
+ if (!os) {
146
+ logger_1.default.error(`could not find option set with name ${hierarchy[i]} at position ${i}. skipping...`);
147
+ return false;
148
+ }
149
+ hierarchy[i] = os.id;
150
+ }
151
+ return true;
152
+ }
153
+ async function uploadOSHLinks(reducedOSHLinks) {
154
+ const typesWithProperties = await (0, type_extractor_1.getTypes)();
155
+ const typeProperties = [];
156
+ typesWithProperties.forEach((type) => {
157
+ if (type.typeProperties) {
158
+ for (const tp of type.typeProperties) {
159
+ tp.typeId = type.id;
160
+ tp.typeSlug = type.slug;
161
+ typeProperties.push(tp);
162
+ }
163
+ }
164
+ });
165
+ const currentOSHs = await new sdk_1.Entities().get({
166
+ entityName: 'option-set-hierarchy',
167
+ });
168
+ const currentOSHLinks = await new sdk_1.Entities().get({
169
+ entityName: 'type-option-set-hierarchy-link',
170
+ });
171
+ const currentOSHLinkHashes = {};
172
+ for (const currentLink of currentOSHLinks) {
173
+ const foundType = typesWithProperties.find((x) => x.id === currentLink.typeId);
174
+ const foundOSH = currentOSHs.find((osh) => osh.id === currentLink.optionSetHierarchyId);
175
+ const foundTPSlugs = typeProperties
176
+ .filter((x) => currentLink?.hierarchyTypePropertyIds?.includes(x.id))
177
+ .map((x) => x.slug);
178
+ if (!foundType ||
179
+ !foundOSH ||
180
+ foundTPSlugs.length !== currentLink.hierarchyTypePropertyIds.length) {
181
+ logger_1.default.info(`skipping unhashable, invalid type option set hierarchy link: ${JSON.stringify(currentLink, null, 2)}`);
182
+ }
183
+ // don't mutate original array
184
+ const sortedFoundTPSlugs = [...foundTPSlugs].sort();
185
+ const hash = `${foundType.slug}|${foundOSH.name}|${sortedFoundTPSlugs.join('|')}`;
186
+ currentOSHLinkHashes[hash] = currentLink;
187
+ }
188
+ const reducedLinksByHashes = {};
189
+ for (const loadedLink of reducedOSHLinks) {
190
+ // don't mutate original array
191
+ const sortedTPSlugs = [...loadedLink.typePropertySlugs].sort();
192
+ const hash = `${loadedLink.typeSlug}|${loadedLink.optionSetHierarchyIdentifier}|${sortedTPSlugs.join('|')}}`;
193
+ reducedLinksByHashes[hash] = loadedLink;
194
+ }
195
+ for (const loadedLink of reducedOSHLinks) {
196
+ try {
197
+ // don't mutate original array
198
+ const sortedTPSlugs = [...loadedLink.typePropertySlugs].sort();
199
+ const found = currentOSHLinkHashes[`${loadedLink.typeSlug}|${loadedLink.optionSetHierarchyIdentifier}|${sortedTPSlugs.join('|')}`];
200
+ if (!found) {
201
+ if (!transformReducedLink(loadedLink, typesWithProperties, currentOSHs)) {
202
+ continue;
203
+ }
204
+ logger_1.default.debug(`Creating: ${JSON.stringify(loadedLink, null, 2)}`);
205
+ await new sdk_1.Entities().create({
206
+ entityName: 'type-option-set-hierarchy-link',
207
+ object: {
208
+ hierarchyTypePropertyIds: loadedLink.hierarchyTypePropertyIds,
209
+ optionSetHierarchyId: loadedLink.optionSetHierarchyId,
210
+ typeId: loadedLink.typeId,
211
+ },
212
+ });
213
+ }
214
+ }
215
+ catch (err) {
216
+ logger_1.default.error(`Error uploading type option set hierarchy links: ${err}`);
217
+ }
218
+ }
219
+ for (const [currentLinkHash, currentLink] of Object.entries(currentOSHLinkHashes)) {
220
+ try {
221
+ const found = reducedLinksByHashes[currentLinkHash];
222
+ if (!found) {
223
+ logger_1.default.debug(`Deleting: ${JSON.stringify(currentLinkHash)}`);
224
+ await new sdk_1.Entities().delete({
225
+ entityName: 'type-option-set-hierarchy-link',
226
+ id: currentLink['id'],
227
+ });
228
+ }
229
+ }
230
+ catch (err) {
231
+ logger_1.default.error(`Error Deleting rule set link: ${err}`);
232
+ }
233
+ }
234
+ }
235
+ function transformReducedLink(OSHLink, typesWithProperties, OSHs) {
236
+ logger_1.default.debug(`OSHLink before transform: ${JSON.stringify(OSHLink, null, 2)}`);
237
+ const foundType = typesWithProperties.find((x) => x.slug === OSHLink.typeSlug);
238
+ if (!foundType) {
239
+ logger_1.default.error(`OSH Links: Could not find type with slug ${OSHLink.typeSlug}`);
240
+ return false;
241
+ }
242
+ OSHLink.typeId = foundType.id;
243
+ const foundTPs = foundType?.typeProperties?.filter((x) => OSHLink.typePropertySlugs.includes(x.slug)) ?? [];
244
+ if (foundTPs.length !== OSHLink.typePropertySlugs.length) {
245
+ logger_1.default.error(`OSH Links: Could not find all type properties with slugs ${OSHLink.typePropertySlugs}`);
246
+ return false;
247
+ }
248
+ logger_1.default.debug(`foundTPs: ${JSON.stringify(foundTPs)}`);
249
+ OSHLink.hierarchyTypePropertyIds = foundTPs.map((x) => x.id);
250
+ const foundOSH = OSHs.find((x) => x.identifier === OSHLink.optionSetHierarchyIdentifier);
251
+ if (!foundOSH) {
252
+ logger_1.default.error(`OSH Links: Could not find option set hierarchy with identifier ${OSHLink.optionSetHierarchyIdentifier}`);
253
+ return false;
254
+ }
255
+ OSHLink.optionSetHierarchyId = foundOSH.id;
256
+ logger_1.default.debug(`OSHLink after transform: ${JSON.stringify(OSHLink, null, 2)}`);
257
+ return true;
258
+ }
@@ -1,13 +1,13 @@
1
- import { BaseCommand } from '../../basecommand';
2
- export default class UploadOptionSets extends BaseCommand {
3
- static description: string;
4
- static examples: string[];
5
- static flags: {
6
- dir: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
7
- alwaysConfirmEnv: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
8
- logLevel: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
9
- };
10
- run(): Promise<void>;
11
- }
12
- export declare function uploadOptionSets(dir: string): Promise<void>;
13
- export declare function parseOptionSetValuesToString(optionSet: any): any;
1
+ import { BaseCommand } from '../../basecommand';
2
+ export default class UploadOptionSets extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ dir: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
7
+ alwaysConfirmEnv: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
8
+ logLevel: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
9
+ };
10
+ run(): Promise<void>;
11
+ }
12
+ export declare function uploadOptionSets(dir: string): Promise<void>;
13
+ export declare function parseOptionSetValuesToString(optionSet: any): any;