@celonis/content-cli 0.6.1 → 0.8.0

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 (33) hide show
  1. package/api/batch-import-export-api.js +51 -0
  2. package/api/package-api.js +5 -3
  3. package/api/variables-api.js +9 -1
  4. package/commands/config.command.js +53 -0
  5. package/commands/package.command.js +4 -4
  6. package/content-cli-config.js +102 -0
  7. package/content-cli-export.js +3 -1
  8. package/content-cli-import.js +2 -1
  9. package/content-cli-list.js +1 -4
  10. package/content-cli-set.js +4 -3
  11. package/content-cli.js +1 -0
  12. package/interfaces/batch-export-import-constants.js +25 -0
  13. package/interfaces/package-export-transport.js +12 -0
  14. package/lib/api/batch-import-export-api.d.ts +13 -0
  15. package/lib/api/package-api.d.ts +2 -2
  16. package/lib/api/variables-api.d.ts +1 -0
  17. package/lib/commands/config.command.d.ts +6 -0
  18. package/lib/commands/package.command.d.ts +2 -2
  19. package/lib/content-cli-config.d.ts +9 -0
  20. package/lib/interfaces/batch-export-import-constants.d.ts +11 -0
  21. package/lib/interfaces/package-export-transport.d.ts +71 -0
  22. package/lib/interfaces/package-manager.interfaces.d.ts +2 -1
  23. package/lib/services/http-client-service.v2.d.ts +3 -1
  24. package/lib/services/package-manager/batch-import-export-service.d.ts +14 -0
  25. package/lib/services/package-manager/package-service.d.ts +3 -3
  26. package/lib/services/package-manager/variable-service.d.ts +6 -0
  27. package/lib/services/studio/studio.service.d.ts +25 -0
  28. package/package.json +1 -1
  29. package/services/http-client-service.v2.js +27 -5
  30. package/services/package-manager/batch-import-export-service.js +151 -0
  31. package/services/package-manager/package-service.js +27 -37
  32. package/services/package-manager/variable-service.js +54 -4
  33. package/services/studio/studio.service.js +220 -0
@@ -0,0 +1,25 @@
1
+ import { PackageExportTransport, StudioPackageManifest, VariableManifestTransport } from "../../interfaces/package-export-transport";
2
+ import { ContentNodeTransport } from "../../interfaces/package-manager.interfaces";
3
+ import { IZipEntry } from "adm-zip";
4
+ import * as AdmZip from "adm-zip";
5
+ declare class StudioService {
6
+ getExportPackagesWithStudioData(packagesToExport: PackageExportTransport[], withDependencies: boolean): Promise<PackageExportTransport[]>;
7
+ fixConnectionVariables(variables: VariableManifestTransport[]): VariableManifestTransport[];
8
+ getStudioPackageManifests(studioPackageKeys: string[]): Promise<StudioPackageManifest[]>;
9
+ processPackageForExport(exportedPackage: IZipEntry, exportedVariables: VariableManifestTransport[]): AdmZip;
10
+ processImportedPackages(configs: AdmZip, existingStudioPackages: ContentNodeTransport[], studioManifests: StudioPackageManifest[]): Promise<void>;
11
+ private setSpaceIdForStudioPackages;
12
+ private setDataModelsForStudioPackages;
13
+ private fixConnectionVariable;
14
+ private deleteScenarioAssets;
15
+ private fixConnectionVariablesForRootNodeFiles;
16
+ private getPackageKeyAndVersion;
17
+ private getConnectionVariablesByKeyForPackage;
18
+ mapSpaces(exportedFiles: AdmZip, studioManifests: StudioPackageManifest[]): Promise<AdmZip>;
19
+ private isStudioPackage;
20
+ private findDesiredSpaceIdForPackage;
21
+ private assignRuntimeVariables;
22
+ private updateSpaceIdForNode;
23
+ }
24
+ export declare const studioService: StudioService;
25
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@celonis/content-cli",
3
- "version": "0.6.1",
3
+ "version": "0.8.0",
4
4
  "description": "CLI Tool to help manage content in Celonis EMS",
5
5
  "main": "content-cli.js",
6
6
  "bin": {
@@ -13,7 +13,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
13
13
  if (v !== undefined) module.exports = v;
14
14
  }
15
15
  else if (typeof define === "function" && define.amd) {
16
- define(["require", "exports", "../interfaces/profile.interface", "./context.service", "../util/logger", "../util/tracing", "../util/version", "axios", "form-data"], factory);
16
+ define(["require", "exports", "../interfaces/profile.interface", "./context.service", "../util/logger", "../util/tracing", "../util/version", "axios"], factory);
17
17
  }
18
18
  })(function (require, exports) {
19
19
  "use strict";
@@ -25,7 +25,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
25
25
  const tracing_1 = require("../util/tracing");
26
26
  const version_1 = require("../util/version");
27
27
  const axios_1 = require("axios");
28
- const FormData = require("form-data");
29
28
  class HttpClientServiceV2 {
30
29
  get(url) {
31
30
  return __awaiter(this, void 0, void 0, function* () {
@@ -42,11 +41,34 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
42
41
  });
43
42
  });
44
43
  }
45
- postFile(url, body, parameters) {
44
+ getFile(url) {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ return new Promise((resolve, reject) => {
47
+ axios_1.default.get(this.resolveUrl(url), {
48
+ headers: this.buildHeaders(context_service_1.contextService.getContext().profile),
49
+ responseType: "stream",
50
+ validateStatus: status => status >= 200
51
+ }).then(response => {
52
+ const data = [];
53
+ response.data.on("data", (chunk) => {
54
+ data.push(chunk);
55
+ });
56
+ response.data.on("end", () => {
57
+ if (response.status !== 200) {
58
+ reject(Buffer.concat(data).toString());
59
+ return;
60
+ }
61
+ this.handleResponseStreamData(Buffer.concat(data), resolve, reject);
62
+ });
63
+ }).catch(err => {
64
+ this.handleError(err, resolve, reject);
65
+ });
66
+ });
67
+ });
68
+ }
69
+ postFile(url, formData, parameters) {
46
70
  return __awaiter(this, void 0, void 0, function* () {
47
71
  return new Promise((resolve, reject) => {
48
- const formData = new FormData();
49
- formData.append("package", body.formData.package);
50
72
  axios_1.default.post(this.resolveUrl(url), formData, {
51
73
  headers: Object.assign(Object.assign({}, this.buildHeaders(context_service_1.contextService.getContext().profile, "multipart/form-data")), formData.getHeaders()),
52
74
  params: parameters
@@ -0,0 +1,151 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ (function (factory) {
11
+ if (typeof module === "object" && typeof module.exports === "object") {
12
+ var v = factory(require, exports);
13
+ if (v !== undefined) module.exports = v;
14
+ }
15
+ else if (typeof define === "function" && define.amd) {
16
+ define(["require", "exports", "../../api/batch-import-export-api", "../../util/logger", "uuid", "../file-service", "../studio/studio.service", "../../util/yaml", "form-data", "../../interfaces/batch-export-import-constants", "../../api/package-api", "stream", "adm-zip"], factory);
17
+ }
18
+ })(function (require, exports) {
19
+ "use strict";
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.batchImportExportService = void 0;
22
+ const batch_import_export_api_1 = require("../../api/batch-import-export-api");
23
+ const logger_1 = require("../../util/logger");
24
+ const uuid_1 = require("uuid");
25
+ const file_service_1 = require("../file-service");
26
+ const studio_service_1 = require("../studio/studio.service");
27
+ const yaml_1 = require("../../util/yaml");
28
+ const FormData = require("form-data");
29
+ const batch_export_import_constants_1 = require("../../interfaces/batch-export-import-constants");
30
+ const package_api_1 = require("../../api/package-api");
31
+ const stream_1 = require("stream");
32
+ const AdmZip = require("adm-zip");
33
+ class BatchImportExportService {
34
+ listActivePackages(flavors) {
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ const activePackages = yield batch_import_export_api_1.batchImportExportApi.findAllActivePackages(flavors);
37
+ activePackages.forEach(pkg => {
38
+ logger_1.logger.info(`${pkg.name} - Key: "${pkg.key}"`);
39
+ });
40
+ });
41
+ }
42
+ findAndExportListOfActivePackages(flavors, packageKeys, withDependencies) {
43
+ return __awaiter(this, void 0, void 0, function* () {
44
+ let packagesToExport;
45
+ if (packageKeys.length) {
46
+ packagesToExport = yield batch_import_export_api_1.batchImportExportApi.findActivePackagesByKeys(packageKeys, withDependencies);
47
+ }
48
+ else {
49
+ packagesToExport = yield batch_import_export_api_1.batchImportExportApi.findAllActivePackages(flavors, withDependencies);
50
+ }
51
+ packagesToExport = yield studio_service_1.studioService.getExportPackagesWithStudioData(packagesToExport, withDependencies);
52
+ this.exportListOfPackages(packagesToExport);
53
+ });
54
+ }
55
+ batchExportPackages(packageKeys, withDependencies = false) {
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ const exportedPackagesData = yield batch_import_export_api_1.batchImportExportApi.exportPackages(packageKeys, withDependencies);
58
+ const exportedPackagesZip = new AdmZip(exportedPackagesData);
59
+ const manifest = (0, yaml_1.parse)(exportedPackagesZip.getEntry(batch_export_import_constants_1.BatchExportImportConstants.MANIFEST_FILE_NAME).getData().toString());
60
+ const versionsByPackageKey = this.getVersionsByPackageKey(manifest);
61
+ let exportedVariables = yield this.getVersionedVariablesForPackagesWithKeys(versionsByPackageKey);
62
+ exportedVariables = studio_service_1.studioService.fixConnectionVariables(exportedVariables);
63
+ exportedPackagesZip.addFile(batch_export_import_constants_1.BatchExportImportConstants.VARIABLES_FILE_NAME, Buffer.from((0, yaml_1.stringify)(exportedVariables), "utf8"));
64
+ const studioPackageKeys = manifest.filter(packageManifest => packageManifest.flavor === batch_export_import_constants_1.BatchExportImportConstants.STUDIO)
65
+ .map(packageManifest => packageManifest.packageKey);
66
+ const studioData = yield studio_service_1.studioService.getStudioPackageManifests(studioPackageKeys);
67
+ exportedPackagesZip.addFile(batch_export_import_constants_1.BatchExportImportConstants.STUDIO_FILE_NAME, Buffer.from((0, yaml_1.stringify)(studioData), "utf8"));
68
+ exportedPackagesZip.getEntries().forEach(entry => {
69
+ if (entry.name.endsWith(batch_export_import_constants_1.BatchExportImportConstants.ZIP_EXTENSION)) {
70
+ const lastUnderscoreIndex = entry.name.lastIndexOf("_");
71
+ const packageKey = entry.name.substring(0, lastUnderscoreIndex);
72
+ if (studioPackageKeys.includes(packageKey)) {
73
+ const updatedPackage = studio_service_1.studioService.processPackageForExport(entry, exportedVariables);
74
+ exportedPackagesZip.updateFile(entry, updatedPackage.toBuffer());
75
+ }
76
+ }
77
+ });
78
+ const fileDownloadedMessage = "File downloaded successfully. New filename: ";
79
+ const filename = `export_${(0, uuid_1.v4)()}.zip`;
80
+ exportedPackagesZip.writeZip(filename);
81
+ logger_1.logger.info(fileDownloadedMessage + filename);
82
+ });
83
+ }
84
+ batchImportPackages(file, overwrite) {
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ let configs = new AdmZip(file);
87
+ const studioManifests = this.parseEntryData(configs, batch_export_import_constants_1.BatchExportImportConstants.STUDIO_FILE_NAME);
88
+ const variablesManifests = this.parseEntryData(configs, batch_export_import_constants_1.BatchExportImportConstants.VARIABLES_FILE_NAME);
89
+ configs = yield studio_service_1.studioService.mapSpaces(configs, studioManifests);
90
+ const existingStudioPackages = yield package_api_1.packageApi.findAllPackages();
91
+ const formData = this.buildBodyForImport(configs, variablesManifests);
92
+ const postPackageImportData = yield batch_import_export_api_1.batchImportExportApi.importPackages(formData, overwrite);
93
+ yield studio_service_1.studioService.processImportedPackages(configs, existingStudioPackages, studioManifests);
94
+ const reportFileName = "config_import_report_" + (0, uuid_1.v4)() + ".json";
95
+ file_service_1.fileService.writeToFileWithGivenName(JSON.stringify(postPackageImportData), reportFileName);
96
+ logger_1.logger.info("Config import report file: " + reportFileName);
97
+ });
98
+ }
99
+ exportListOfPackages(packages) {
100
+ const filename = (0, uuid_1.v4)() + ".json";
101
+ file_service_1.fileService.writeToFileWithGivenName(JSON.stringify(packages), filename);
102
+ logger_1.logger.info(file_service_1.FileService.fileDownloadedMessage + filename);
103
+ }
104
+ getVersionsByPackageKey(manifests) {
105
+ const versionsByPackageKey = new Map();
106
+ manifests.forEach(packageManifest => {
107
+ versionsByPackageKey.set(packageManifest.packageKey, Object.keys(packageManifest.dependenciesByVersion));
108
+ });
109
+ return versionsByPackageKey;
110
+ }
111
+ getVersionedVariablesForPackagesWithKeys(versionsByPackageKey) {
112
+ const variableExportRequest = [];
113
+ versionsByPackageKey === null || versionsByPackageKey === void 0 ? void 0 : versionsByPackageKey.forEach((versions, key) => {
114
+ versions === null || versions === void 0 ? void 0 : versions.forEach(version => {
115
+ variableExportRequest.push({
116
+ packageKey: key,
117
+ version: version,
118
+ });
119
+ });
120
+ });
121
+ return batch_import_export_api_1.batchImportExportApi.findVariablesWithValuesByPackageKeysAndVersion(variableExportRequest);
122
+ }
123
+ buildBodyForImport(configs, variablesManifests) {
124
+ const formData = new FormData();
125
+ const readableStream = this.getReadableStream(configs);
126
+ formData.append("file", readableStream, { filename: "configs.zip" });
127
+ if (variablesManifests) {
128
+ formData.append("mappedVariables", JSON.stringify(variablesManifests), {
129
+ contentType: "application/json"
130
+ });
131
+ }
132
+ return formData;
133
+ }
134
+ getReadableStream(configs) {
135
+ return new stream_1.Readable({
136
+ read() {
137
+ this.push(configs.toBuffer());
138
+ this.push(null);
139
+ },
140
+ });
141
+ }
142
+ parseEntryData(configs, fileName) {
143
+ const entry = configs.getEntry(fileName);
144
+ if (entry) {
145
+ return ((0, yaml_1.parse)(entry.getData().toString()));
146
+ }
147
+ return null;
148
+ }
149
+ }
150
+ exports.batchImportExportService = new BatchImportExportService();
151
+ });
@@ -13,7 +13,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
13
13
  if (v !== undefined) module.exports = v;
14
14
  }
15
15
  else if (typeof define === "function" && define.amd) {
16
- define(["require", "exports", "../../util/logger", "../../api/package-api", "uuid", "../file-service", "./datamodel-service", "../../interfaces/package-manager.interfaces", "../../api/node-api", "../../api/package-dependencies-api", "./variable-service", "./space-service", "fs", "adm-zip", "path", "os", "../../util/semantic-versioning", "../../util/yaml"], factory);
16
+ define(["require", "exports", "../../util/logger", "../../api/package-api", "uuid", "../file-service", "./datamodel-service", "../../interfaces/package-manager.interfaces", "../../api/node-api", "../../api/package-dependencies-api", "./variable-service", "./space-service", "fs", "adm-zip", "path", "os", "../../util/semantic-versioning", "../../util/yaml", "form-data"], factory);
17
17
  }
18
18
  })(function (require, exports) {
19
19
  "use strict";
@@ -35,6 +35,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
35
35
  const os_1 = require("os");
36
36
  const semantic_versioning_1 = require("../../util/semantic-versioning");
37
37
  const yaml_1 = require("../../util/yaml");
38
+ const FormData = require("form-data");
38
39
  class PackageService {
39
40
  constructor() {
40
41
  this.fileDownloadedMessage = "File downloaded successfully. New filename: ";
@@ -56,8 +57,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
56
57
  }
57
58
  if (includeDependencies) {
58
59
  fieldsToInclude.push("type", "value", "dependencies", "id", "updateAvailable", "version", "poolId", "node", "dataModelId", "dataPool", "datamodels");
59
- const packagesKeyWithActionFlows = (yield node_api_1.nodeApi.findAllNodesOfType("SCENARIO")).map(node => node.rootNodeKey);
60
- nodesListToExport = nodesListToExport.filter(node => !packagesKeyWithActionFlows.includes(node.rootNodeKey));
61
60
  const unPublishedNodes = nodesListToExport.filter(node => !node.activatedDraftId);
62
61
  let publishedNodes = nodesListToExport.filter(node => node.activatedDraftId);
63
62
  publishedNodes = yield this.getNodesWithActiveVersion(publishedNodes);
@@ -69,7 +68,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
69
68
  });
70
69
  const draftIdByNodeId = new Map();
71
70
  nodesListToExport.forEach(node => draftIdByNodeId.set(node.workingDraftId, node.id));
72
- const dependenciesByPackageIds = yield this.getPackagesWithDependencies(draftIdByNodeId, packagesKeyWithActionFlows);
71
+ const dependenciesByPackageIds = yield this.getPackagesWithDependencies(draftIdByNodeId);
73
72
  nodesListToExport = nodesListToExport.map(nodeToExport => {
74
73
  var _a;
75
74
  nodeToExport.dependencies = (_a = dependenciesByPackageIds[nodeToExport.workingDraftId]) !== null && _a !== void 0 ? _a : [];
@@ -79,7 +78,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
79
78
  this.exportListOfPackages(nodesListToExport, fieldsToInclude);
80
79
  });
81
80
  }
82
- batchImportPackages(spaceMappings, dataModelMappingsFilePath, exportedPackagesFile, overwrite) {
81
+ batchImportPackages(spaceMappings, dataModelMappingsFilePath, exportedPackagesFile, overwrite, excludeActionFlows) {
83
82
  return __awaiter(this, void 0, void 0, function* () {
84
83
  exportedPackagesFile = exportedPackagesFile + (exportedPackagesFile.includes(".zip") ? "" : ".zip");
85
84
  const zip = new AdmZip(exportedPackagesFile);
@@ -118,7 +117,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
118
117
  });
119
118
  const draftIdsByPackageKeyAndVersion = new Map();
120
119
  for (const node of manifestNodes) {
121
- yield this.importPackage(node, manifestNodes, sourceToTargetVersionsByNodeKey, customSpacesMap, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath);
120
+ yield this.importPackage(node, manifestNodes, sourceToTargetVersionsByNodeKey, customSpacesMap, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath, excludeActionFlows);
122
121
  }
123
122
  });
124
123
  }
@@ -135,7 +134,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
135
134
  }
136
135
  });
137
136
  }
138
- importPackage(packageToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath) {
137
+ importPackage(packageToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath, excludeActionFlows) {
139
138
  var _a;
140
139
  return __awaiter(this, void 0, void 0, function* () {
141
140
  const importedPackageVersion = (_a = importedVersionsByNodeKey.get(packageToImport.packageKey)) !== null && _a !== void 0 ? _a : [];
@@ -146,7 +145,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
146
145
  }).filter(version => !importedPackageVersion.includes(version));
147
146
  for (const version of versionsOfPackage) {
148
147
  try {
149
- yield this.importPackageVersion(packageToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath, version);
148
+ yield this.importPackageVersion(packageToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath, version, excludeActionFlows);
150
149
  }
151
150
  catch (e) {
152
151
  logger_1.logger.error(`Problem import package with key: ${packageToImport.packageKey} ${version} ${e}`);
@@ -154,12 +153,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
154
153
  }
155
154
  });
156
155
  }
157
- importPackageVersion(packageToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath, versionOfPackageBeingImported) {
156
+ importPackageVersion(packageToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath, versionOfPackageBeingImported, excludeActionFlows) {
158
157
  var _a, _b;
159
158
  return __awaiter(this, void 0, void 0, function* () {
160
159
  if (packageToImport.dependenciesByVersion.get(versionOfPackageBeingImported).length) {
161
160
  const dependenciesOfPackageVersion = packageToImport.dependenciesByVersion.get(versionOfPackageBeingImported);
162
- yield this.importDependencyPackages(dependenciesOfPackageVersion, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath);
161
+ yield this.importDependencyPackages(dependenciesOfPackageVersion, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath, excludeActionFlows);
163
162
  }
164
163
  if (this.checkIfPackageVersionHasBeenImported(packageToImport.packageKey, versionOfPackageBeingImported, importedVersionsByNodeKey)) {
165
164
  return;
@@ -167,8 +166,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
167
166
  const targetSpace = yield this.getTargetSpaceForExportedPackage(packageToImport, spaceMappings);
168
167
  let nodeInTargetTeam = yield node_api_1.nodeApi.findOneByKeyAndRootNodeKey(packageToImport.packageKey, packageToImport.packageKey);
169
168
  const pathToZipFile = path.resolve(importedFilePath, packageToImport.packageKey + "_" + versionOfPackageBeingImported + ".zip");
170
- const packageZip = yield this.createBodyForImport(pathToZipFile);
171
- yield package_api_1.packageApi.importPackage(packageZip, targetSpace.id, !!nodeInTargetTeam);
169
+ const packageZip = this.createBodyForImport(pathToZipFile);
170
+ yield package_api_1.packageApi.importPackage(packageZip, targetSpace.id, !!nodeInTargetTeam, excludeActionFlows);
172
171
  if (nodeInTargetTeam) {
173
172
  yield package_api_1.packageApi.movePackageToSpace(nodeInTargetTeam.id, targetSpace.id);
174
173
  }
@@ -213,14 +212,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
213
212
  }
214
213
  return isLatestVersion;
215
214
  }
216
- importDependencyPackages(dependenciesToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath) {
215
+ importDependencyPackages(dependenciesToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath, excludeActionFlows) {
217
216
  return __awaiter(this, void 0, void 0, function* () {
218
217
  for (const dependency of dependenciesToImport) {
219
218
  if (this.checkIfPackageVersionHasBeenImported(dependency.key, dependency.version, importedVersionsByNodeKey)) {
220
219
  continue;
221
220
  }
222
221
  const dependentPackage = manifestNodes.find((node) => node.packageKey === dependency.key);
223
- yield this.importPackage(dependentPackage, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath);
222
+ yield this.importPackage(dependentPackage, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath, excludeActionFlows);
224
223
  }
225
224
  });
226
225
  }
@@ -230,13 +229,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
230
229
  return importedPackages.includes(version);
231
230
  }
232
231
  createBodyForImport(filename) {
233
- return __awaiter(this, void 0, void 0, function* () {
234
- return {
235
- formData: {
236
- package: yield fs.createReadStream(filename, { encoding: null })
237
- },
238
- };
239
- });
232
+ const formData = new FormData();
233
+ formData.append("package", fs.createReadStream(filename, { encoding: null }));
234
+ return formData;
240
235
  }
241
236
  getTargetSpaceForExportedPackage(packageToImport, spaceMappings) {
242
237
  return __awaiter(this, void 0, void 0, function* () {
@@ -291,12 +286,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
291
286
  });
292
287
  });
293
288
  }
294
- batchExportPackages(packageKeys, includeDependencies) {
289
+ batchExportPackages(packageKeys, includeDependencies, excludeActionFlows) {
295
290
  return __awaiter(this, void 0, void 0, function* () {
296
291
  const allPackages = yield package_api_1.packageApi.findAllPackages();
297
292
  let nodesListToExport = allPackages.filter(node => packageKeys.includes(node.key));
298
- const actionFlowsPackageKeys = (yield node_api_1.nodeApi.findAllNodesOfType("SCENARIO")).map(node => node.rootNodeKey);
299
- nodesListToExport = nodesListToExport.filter(node => !actionFlowsPackageKeys.includes(node.key));
300
293
  const versionsByNodeKey = new Map();
301
294
  const allPackageKeys = allPackages.map(p => p.key);
302
295
  for (const packageKey of packageKeys) {
@@ -306,7 +299,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
306
299
  }
307
300
  nodesListToExport = yield this.getNodesWithActiveVersion(nodesListToExport);
308
301
  if (includeDependencies) {
309
- const dependencyPackages = yield this.getDependencyPackages(nodesListToExport, [], allPackages, actionFlowsPackageKeys, [], versionsByNodeKey);
302
+ const dependencyPackages = yield this.getDependencyPackages(nodesListToExport, [], allPackages, [], versionsByNodeKey);
310
303
  nodesListToExport.push(...dependencyPackages);
311
304
  }
312
305
  const packagesWithVariableAssignments = yield variable_service_1.variableService.getVariableAssignmentsForNodes();
@@ -323,7 +316,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
323
316
  node.datamodels = dataModelDetailsByNode.get(node.key);
324
317
  });
325
318
  nodesListToExport = yield space_service_1.spaceService.getParentSpaces(nodesListToExport);
326
- yield this.exportToZip(nodesListToExport, versionsByNodeKey);
319
+ yield this.exportToZip(nodesListToExport, versionsByNodeKey, excludeActionFlows);
327
320
  });
328
321
  }
329
322
  getNodesWithActiveVersion(nodes) {
@@ -335,20 +328,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
335
328
  return nodes;
336
329
  });
337
330
  }
338
- getPackagesWithDependencies(draftIdByNodeId, actionFlowPackageKeys) {
331
+ getPackagesWithDependencies(draftIdByNodeId) {
339
332
  return __awaiter(this, void 0, void 0, function* () {
340
333
  const allPackageDependencies = yield package_dependencies_api_1.packageDependenciesApi.findPackageDependenciesByIds(draftIdByNodeId);
341
- Object.values(allPackageDependencies).forEach((value, key) => {
342
- value = value.filter((dependency => actionFlowPackageKeys.includes(dependency.key)));
343
- });
344
334
  return allPackageDependencies;
345
335
  });
346
336
  }
347
- getDependencyPackages(nodesToResolve, dependencyPackages, allPackages, actionFlowPackageKeys, resolvedDependencies, versionsByNodeKey) {
337
+ getDependencyPackages(nodesToResolve, dependencyPackages, allPackages, resolvedDependencies, versionsByNodeKey) {
348
338
  return __awaiter(this, void 0, void 0, function* () {
349
339
  const draftIdByNodeId = new Map();
350
340
  nodesToResolve.forEach(node => draftIdByNodeId.set(node.activatedDraftId, node.id));
351
- const dependenciesByPackageDraftIds = yield this.getPackagesWithDependencies(draftIdByNodeId, actionFlowPackageKeys);
341
+ const dependenciesByPackageDraftIds = yield this.getPackagesWithDependencies(draftIdByNodeId);
352
342
  const nodesWithDependencies = nodesToResolve.map(nodeToExport => {
353
343
  var _a;
354
344
  nodeToExport.dependencies = (_a = dependenciesByPackageDraftIds[nodeToExport.activatedDraftId]) !== null && _a !== void 0 ? _a : [];
@@ -375,7 +365,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
375
365
  }, activatedDraftId: versionedDep.draftId });
376
366
  });
377
367
  dependencyPackages.push(...dependencyPackagesOfNode);
378
- yield this.getDependencyPackages(dependencyPackagesOfNode, dependencyPackages, allPackages, actionFlowPackageKeys, resolvedDependencies, versionsByNodeKey);
368
+ yield this.getDependencyPackages(dependencyPackagesOfNode, dependencyPackages, allPackages, resolvedDependencies, versionsByNodeKey);
379
369
  }
380
370
  }
381
371
  return dependencyPackages;
@@ -389,11 +379,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
389
379
  file_service_1.fileService.writeToFileWithGivenName(JSON.stringify(nodes, fieldsToInclude), filename);
390
380
  logger_1.logger.info(file_service_1.FileService.fileDownloadedMessage + filename);
391
381
  }
392
- exportPackagesAndAssets(nodes) {
382
+ exportPackagesAndAssets(nodes, excludeActionFlows) {
393
383
  return __awaiter(this, void 0, void 0, function* () {
394
384
  const zips = [];
395
385
  for (const rootPackage of nodes) {
396
- const exportedPackage = yield package_api_1.packageApi.exportPackage(rootPackage.key, rootPackage.version.version);
386
+ const exportedPackage = yield package_api_1.packageApi.exportPackage(rootPackage.key, rootPackage.version.version, excludeActionFlows);
397
387
  zips.push({
398
388
  data: exportedPackage,
399
389
  packageKey: rootPackage.key,
@@ -403,10 +393,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
403
393
  return zips;
404
394
  });
405
395
  }
406
- exportToZip(nodes, versionsByNodeKey) {
396
+ exportToZip(nodes, versionsByNodeKey, excludeActionFlows) {
407
397
  return __awaiter(this, void 0, void 0, function* () {
408
398
  const manifestNodes = this.exportManifestOfPackages(nodes, versionsByNodeKey);
409
- const packageZips = yield this.exportPackagesAndAssets(nodes);
399
+ const packageZips = yield this.exportPackagesAndAssets(nodes, excludeActionFlows);
410
400
  const zip = new AdmZip();
411
401
  zip.addFile("manifest.yml", Buffer.from((0, yaml_1.stringify)(manifestNodes), "utf8"));
412
402
  for (const packageZip of packageZips) {
@@ -13,7 +13,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
13
13
  if (v !== undefined) module.exports = v;
14
14
  }
15
15
  else if (typeof define === "function" && define.amd) {
16
- define(["require", "exports", "../../api/package-api", "../../api/variables-api", "uuid", "../../util/logger", "../file-service", "url"], factory);
16
+ define(["require", "exports", "../../api/package-api", "../../api/variables-api", "uuid", "../../util/logger", "../file-service", "url", "../studio/studio.service", "../../api/batch-import-export-api"], factory);
17
17
  }
18
18
  })(function (require, exports) {
19
19
  "use strict";
@@ -25,6 +25,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
25
25
  const logger_1 = require("../../util/logger");
26
26
  const file_service_1 = require("../file-service");
27
27
  const url_1 = require("url");
28
+ const studio_service_1 = require("../studio/studio.service");
29
+ const batch_import_export_api_1 = require("../../api/batch-import-export-api");
28
30
  class VariableService {
29
31
  getVariableAssignmentsForNodes(type) {
30
32
  return __awaiter(this, void 0, void 0, function* () {
@@ -49,9 +51,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
49
51
  return __awaiter(this, void 0, void 0, function* () {
50
52
  const parsedParams = this.parseParams(params);
51
53
  const assignments = yield variables_api_1.variablesApi.getCandidateAssignments(type, parsedParams);
52
- const filename = (0, uuid_1.v4)() + ".json";
53
- file_service_1.fileService.writeToFileWithGivenName(JSON.stringify(assignments), filename);
54
- logger_1.logger.info(file_service_1.FileService.fileDownloadedMessage + filename);
54
+ this.exportToJson(assignments);
55
+ });
56
+ }
57
+ listVariables(keysByVersion, keysByVersionFile) {
58
+ return __awaiter(this, void 0, void 0, function* () {
59
+ const variableManifests = yield this.getVersionedVariablesByKeyVersionPairs(keysByVersion, keysByVersionFile);
60
+ variableManifests.forEach(variableManifest => {
61
+ logger_1.logger.info(JSON.stringify(variableManifest));
62
+ });
63
+ });
64
+ }
65
+ exportVariables(keysByVersion, keysByVersionFile) {
66
+ return __awaiter(this, void 0, void 0, function* () {
67
+ const variableManifests = yield this.getVersionedVariablesByKeyVersionPairs(keysByVersion, keysByVersionFile);
68
+ this.exportToJson(variableManifests);
55
69
  });
56
70
  }
57
71
  parseParams(params) {
@@ -69,6 +83,42 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
69
83
  }
70
84
  return queryParams;
71
85
  }
86
+ getVersionedVariablesByKeyVersionPairs(keysByVersion, keysByVersionFile) {
87
+ return __awaiter(this, void 0, void 0, function* () {
88
+ const variablesExportRequest = yield this.buildKeyVersionPairs(keysByVersion, keysByVersionFile);
89
+ const variableManifests = yield batch_import_export_api_1.batchImportExportApi.findVariablesWithValuesByPackageKeysAndVersion(variablesExportRequest);
90
+ return studio_service_1.studioService.fixConnectionVariables(variableManifests);
91
+ });
92
+ }
93
+ buildKeyVersionPairs(keysByVersion, keysByVersionFile) {
94
+ return __awaiter(this, void 0, void 0, function* () {
95
+ let variablesExportRequest = [];
96
+ if (keysByVersion.length !== 0) {
97
+ variablesExportRequest = this.buildKeyAndVersionPairsFromArrayInput(keysByVersion);
98
+ }
99
+ else if (keysByVersion.length === 0 && keysByVersionFile !== "") {
100
+ variablesExportRequest = yield file_service_1.fileService.readFileToJson(keysByVersionFile);
101
+ }
102
+ else {
103
+ throw new logger_1.FatalError("Please provide keysByVersion mappings or file path!");
104
+ }
105
+ return variablesExportRequest;
106
+ });
107
+ }
108
+ buildKeyAndVersionPairsFromArrayInput(keysByVersion) {
109
+ return keysByVersion.map(keyAndVersion => {
110
+ const keyAndVersionSplit = keyAndVersion.split(":");
111
+ return {
112
+ packageKey: keyAndVersionSplit[0],
113
+ version: keyAndVersionSplit[1]
114
+ };
115
+ });
116
+ }
117
+ exportToJson(data) {
118
+ const filename = (0, uuid_1.v4)() + ".json";
119
+ file_service_1.fileService.writeToFileWithGivenName(JSON.stringify(data), filename);
120
+ logger_1.logger.info(file_service_1.FileService.fileDownloadedMessage + filename);
121
+ }
72
122
  }
73
123
  exports.variableService = new VariableService();
74
124
  });