@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.
- package/api/batch-import-export-api.js +51 -0
- package/api/package-api.js +5 -3
- package/api/variables-api.js +9 -1
- package/commands/config.command.js +53 -0
- package/commands/package.command.js +4 -4
- package/content-cli-config.js +102 -0
- package/content-cli-export.js +3 -1
- package/content-cli-import.js +2 -1
- package/content-cli-list.js +1 -4
- package/content-cli-set.js +4 -3
- package/content-cli.js +1 -0
- package/interfaces/batch-export-import-constants.js +25 -0
- package/interfaces/package-export-transport.js +12 -0
- package/lib/api/batch-import-export-api.d.ts +13 -0
- package/lib/api/package-api.d.ts +2 -2
- package/lib/api/variables-api.d.ts +1 -0
- package/lib/commands/config.command.d.ts +6 -0
- package/lib/commands/package.command.d.ts +2 -2
- package/lib/content-cli-config.d.ts +9 -0
- package/lib/interfaces/batch-export-import-constants.d.ts +11 -0
- package/lib/interfaces/package-export-transport.d.ts +71 -0
- package/lib/interfaces/package-manager.interfaces.d.ts +2 -1
- package/lib/services/http-client-service.v2.d.ts +3 -1
- package/lib/services/package-manager/batch-import-export-service.d.ts +14 -0
- package/lib/services/package-manager/package-service.d.ts +3 -3
- package/lib/services/package-manager/variable-service.d.ts +6 -0
- package/lib/services/studio/studio.service.d.ts +25 -0
- package/package.json +1 -1
- package/services/http-client-service.v2.js +27 -5
- package/services/package-manager/batch-import-export-service.js +151 -0
- package/services/package-manager/package-service.js +27 -37
- package/services/package-manager/variable-service.js +54 -4
- 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
|
@@ -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"
|
|
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
|
-
|
|
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
|
|
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 =
|
|
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
|
-
|
|
234
|
-
|
|
235
|
-
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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,
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
});
|