@contrail/cli 3.4.1 → 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 -93
  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 -444
  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 +1 -1
@@ -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;