@celonis/content-cli 0.4.4 → 0.4.6

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.
@@ -0,0 +1,34 @@
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", "../services/http-client-service.v2", "../util/logger"], factory);
17
+ }
18
+ })(function (require, exports) {
19
+ "use strict";
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ const http_client_service_v2_1 = require("../services/http-client-service.v2");
22
+ const logger_1 = require("../util/logger");
23
+ class VariablesApi {
24
+ assignVariableValues(packageKey, variablesAssignments) {
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ return http_client_service_v2_1.httpClientV2.post(`/package-manager/api/nodes/by-package-key/${packageKey}/variables/values`, variablesAssignments).catch(e => {
27
+ throw new logger_1.FatalError(`Problem updating variables of package ${packageKey}: ${e}`);
28
+ });
29
+ });
30
+ }
31
+ }
32
+ VariablesApi.INSTANCE = new VariablesApi();
33
+ exports.variablesApi = VariablesApi.INSTANCE;
34
+ });
@@ -41,10 +41,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
41
41
  yield this.contentService.batchPush(profile, this.packageManagerFactory.createPushManagers(spaceKey));
42
42
  });
43
43
  }
44
- listPackages(jsonResponse, includeDependencies) {
44
+ listPackages(jsonResponse, includeDependencies, packageKeys) {
45
45
  return __awaiter(this, void 0, void 0, function* () {
46
46
  if (jsonResponse) {
47
- yield package_service_1.packageService.findAndExportListOfAllPackages(includeDependencies);
47
+ yield package_service_1.packageService.findAndExportListOfAllPackages(includeDependencies, packageKeys !== null && packageKeys !== void 0 ? packageKeys : []);
48
48
  }
49
49
  else {
50
50
  yield package_service_1.packageService.listPackages();
@@ -56,9 +56,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
56
56
  yield package_service_1.packageService.batchExportPackages(packageKeys, includeDependencies);
57
57
  });
58
58
  }
59
- batchImportPackages(spaceMappings, exportedPackagesFile) {
59
+ batchImportPackages(spaceMappings, dataModelMappingsFilePath, exportedPackagesFile) {
60
60
  return __awaiter(this, void 0, void 0, function* () {
61
- yield package_service_1.packageService.batchImportPackages(spaceMappings !== null && spaceMappings !== void 0 ? spaceMappings : [], exportedPackagesFile);
61
+ yield package_service_1.packageService.batchImportPackages(spaceMappings !== null && spaceMappings !== void 0 ? spaceMappings : [], dataModelMappingsFilePath, exportedPackagesFile);
62
62
  });
63
63
  }
64
64
  }
@@ -4,7 +4,7 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "fs", "path", "../../util/logger", "yaml", "../manager/widget.manager", "adm-zip"], factory);
7
+ define(["require", "exports", "fs", "path", "../../util/logger", "../manager/widget.manager", "adm-zip", "../../util/yaml"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
@@ -12,9 +12,9 @@
12
12
  const fs = require("fs");
13
13
  const path = require("path");
14
14
  const logger_1 = require("../../util/logger");
15
- const YAML = require("yaml");
16
15
  const widget_manager_1 = require("../manager/widget.manager");
17
16
  const AdmZip = require("adm-zip");
17
+ const yaml_1 = require("../../util/yaml");
18
18
  class WidgetManagerFactory {
19
19
  createManager(tenantIndependent = false, userSpecific = false) {
20
20
  const widgetManager = new widget_manager_1.WidgetManager();
@@ -37,10 +37,10 @@
37
37
  }
38
38
  fetchManifest() {
39
39
  if (fs.existsSync(path.resolve(process.cwd(), "manifest.yaml"))) {
40
- return YAML.parse(fs.readFileSync(path.resolve(process.cwd(), "manifest.yaml"), { encoding: "utf-8" }));
40
+ return yaml_1.parse(fs.readFileSync(path.resolve(process.cwd(), "manifest.yaml"), { encoding: "utf-8" }));
41
41
  }
42
42
  if (fs.existsSync(path.resolve(process.cwd(), "manifest.yml"))) {
43
- return YAML.parse(fs.readFileSync(path.resolve(process.cwd(), "manifest.yml"), { encoding: "utf-8" }));
43
+ return yaml_1.parse(fs.readFileSync(path.resolve(process.cwd(), "manifest.yml"), { encoding: "utf-8" }));
44
44
  }
45
45
  return null;
46
46
  }
@@ -4,15 +4,13 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "./base.manager", "yaml", "fs"], factory);
7
+ define(["require", "exports", "./base.manager", "fs"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const base_manager_1 = require("./base.manager");
13
- const YAML = require("yaml");
14
13
  const fs = require("fs");
15
- YAML.scalarOptions.str.doubleQuoted.jsonEncoding = true;
16
14
  class AnalysisBookmarksManager extends base_manager_1.BaseManager {
17
15
  get fileName() {
18
16
  return this._fileName;
@@ -4,16 +4,15 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "./base.manager", "yaml", "./asset.manager", "fs"], factory);
7
+ define(["require", "exports", "./base.manager", "./asset.manager", "fs", "../../util/yaml"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const base_manager_1 = require("./base.manager");
13
- const YAML = require("yaml");
14
13
  const asset_manager_1 = require("./asset.manager");
15
14
  const fs = require("fs");
16
- YAML.scalarOptions.str.doubleQuoted.jsonEncoding = true;
15
+ const yaml_1 = require("../../util/yaml");
17
16
  class AnalysisManager extends base_manager_1.BaseManager {
18
17
  get fileName() {
19
18
  return this._fileName;
@@ -61,7 +60,7 @@
61
60
  }
62
61
  getSerializedFileContent(data) {
63
62
  if (this.packageManager) {
64
- return YAML.stringify(data);
63
+ return yaml_1.stringify(data);
65
64
  }
66
65
  return JSON.stringify(data);
67
66
  }
@@ -4,14 +4,13 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "./base.manager", "yaml"], factory);
7
+ define(["require", "exports", "./base.manager", "../../util/yaml"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const base_manager_1 = require("./base.manager");
13
- const YAML = require("yaml");
14
- YAML.scalarOptions.str.doubleQuoted.jsonEncoding = true;
13
+ const yaml_1 = require("../../util/yaml");
15
14
  class AssetManager extends base_manager_1.BaseManager {
16
15
  get key() {
17
16
  return this._key;
@@ -52,12 +51,12 @@
52
51
  };
53
52
  }
54
53
  toNodeTransport() {
55
- const asset = YAML.parse(this.content);
54
+ const asset = yaml_1.parse(this.content);
56
55
  asset.rootNodeKey = this.packageKey;
57
56
  return asset;
58
57
  }
59
58
  getSerializedFileContent(data) {
60
- return YAML.stringify(data);
59
+ return yaml_1.stringify(data);
61
60
  }
62
61
  }
63
62
  exports.AssetManager = AssetManager;
@@ -30,9 +30,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
30
30
  .description("Command to import all given packages")
31
31
  .option("-p, --profile <profile>", "Profile which you want to use to list packages")
32
32
  .option("--spaceMappings <spaceMappings...>", "List of mappings for importing packages to different target spaces. Mappings should follow format 'packageKey:targetSpaceKey'")
33
+ .option("--dataModelMappingsFile <dataModelMappingsFile>", "DataModel variable mappings file path")
33
34
  .requiredOption("-f, --file <file>", "Exported packages file (relative path)")
34
35
  .action((cmd) => __awaiter(this, void 0, void 0, function* () {
35
- yield new package_command_1.PackageCommand().batchImportPackages(cmd.spaceMappings, cmd.file);
36
+ yield new package_command_1.PackageCommand().batchImportPackages(cmd.spaceMappings, cmd.dataModelMappingsFile, cmd.file);
36
37
  process.exit();
37
38
  }));
38
39
  return program;
@@ -34,8 +34,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
34
34
  .option("-p, --profile <profile>", "Profile which you want to use to list packages")
35
35
  .option("--json", "Return response as json type", "")
36
36
  .option("--includeDependencies", "Include variables and dependencies", "")
37
+ .option("--packageKeys <packageKeys...>", "Lists only given package keys")
37
38
  .action((cmd) => __awaiter(this, void 0, void 0, function* () {
38
- yield new package_command_1.PackageCommand().listPackages(cmd.json, cmd.includeDependencies);
39
+ yield new package_command_1.PackageCommand().listPackages(cmd.json, cmd.includeDependencies, cmd.packageKeys);
39
40
  process.exit();
40
41
  }));
41
42
  return program;
@@ -0,0 +1,7 @@
1
+ import { ContentNodeTransport, VariablesAssignments } from "../interfaces/package-manager.interfaces";
2
+ declare class VariablesApi {
3
+ static readonly INSTANCE: VariablesApi;
4
+ assignVariableValues(packageKey: string, variablesAssignments: VariablesAssignments[]): Promise<ContentNodeTransport[]>;
5
+ }
6
+ export declare const variablesApi: VariablesApi;
7
+ export {};
@@ -4,7 +4,7 @@ export declare class PackageCommand {
4
4
  pullPackage(profile: string, key: string, store: boolean, newKey: string, draft: boolean): Promise<void>;
5
5
  pushPackage(profile: string, spaceKey: string, fileName: string, newKey: string, overwrite: boolean): Promise<void>;
6
6
  pushPackages(profile: string, spaceKey: string): Promise<void>;
7
- listPackages(jsonResponse: boolean, includeDependencies: boolean): Promise<void>;
7
+ listPackages(jsonResponse: boolean, includeDependencies: boolean, packageKeys: string[]): Promise<void>;
8
8
  batchExportPackages(packageKeys: string[], includeDependencies: boolean): Promise<void>;
9
- batchImportPackages(spaceMappings: string[], exportedPackagesFile: string): Promise<void>;
9
+ batchImportPackages(spaceMappings: string[], dataModelMappingsFilePath: string, exportedPackagesFile: string): Promise<void>;
10
10
  }
@@ -23,5 +23,5 @@ export declare class DataPoolPageTransport {
23
23
  totalCount: number;
24
24
  }
25
25
  export declare class DataPoolInstallVersionReport {
26
- dataModelIdMappings: Map<String, String>;
26
+ dataModelIdMappings: Map<string, string>;
27
27
  }
@@ -49,6 +49,14 @@ export interface VariablesAssignments {
49
49
  value: object;
50
50
  type: string;
51
51
  }
52
+ export interface VariableDefinitionWithValue {
53
+ key: string;
54
+ type: string;
55
+ description?: string;
56
+ source?: string;
57
+ runtime?: boolean;
58
+ metadata?: object;
59
+ }
52
60
  export interface PackageHistoryTransport {
53
61
  id: string;
54
62
  key: string;
@@ -4,6 +4,7 @@ export declare class FileService {
4
4
  writeToFileWithGivenName(data: any, filename: string): void;
5
5
  createDirectoryWithGivenName(dirName: string): void;
6
6
  readManifestFile(importedFileName: string): Promise<ManifestNodeTransport[]>;
7
+ readFileToJson<T>(fileName: string): Promise<T>;
7
8
  readFile(filename: string): string;
8
9
  private getSerializedFileContent;
9
10
  }
@@ -4,12 +4,12 @@ import { ManifestNodeTransport } from "../../interfaces/manifest-transport";
4
4
  declare class PackageService {
5
5
  protected readonly fileDownloadedMessage = "File downloaded successfully. New filename: ";
6
6
  listPackages(): Promise<void>;
7
- findAndExportListOfAllPackages(includeDependencies: boolean): Promise<void>;
8
- batchImportPackages(spaceMappings: string[], exportedPackagesFile: string): Promise<void>;
7
+ findAndExportListOfAllPackages(includeDependencies: boolean, packageKeys: string[]): Promise<void>;
8
+ batchImportPackages(spaceMappings: string[], dataModelMappingsFilePath: string, exportedPackagesFile: string): Promise<void>;
9
9
  private checkNodeForCircularDependency;
10
10
  private importPackage;
11
- private compareVersions;
12
11
  private importPackageVersion;
12
+ private isLatestVersion;
13
13
  private importDependencyPackages;
14
14
  private checkIfPackageVersionHasBeenImported;
15
15
  private createBodyForImport;
@@ -1,7 +1,8 @@
1
- import { PackageWithVariableAssignments } from "../../interfaces/package-manager.interfaces";
1
+ import { PackageWithVariableAssignments, VariablesAssignments } from "../../interfaces/package-manager.interfaces";
2
2
  import { BatchExportNodeTransport } from "../../interfaces/batch-export-node-transport";
3
3
  declare class VariableService {
4
4
  getVariableAssignmentsForNodes(nodes: BatchExportNodeTransport[]): Promise<PackageWithVariableAssignments[]>;
5
+ assignVariableValues(packageKey: string, variablesAssignments: VariablesAssignments[]): Promise<void>;
5
6
  }
6
7
  export declare const variableService: VariableService;
7
8
  export {};
@@ -0,0 +1,5 @@
1
+ export declare class SemanticVersioning {
2
+ private version;
3
+ constructor(version: string);
4
+ isGreaterThan(versionToCompare: SemanticVersioning): boolean;
5
+ }
@@ -0,0 +1,2 @@
1
+ export declare function stringify(data: any): string;
2
+ export declare function parse<T>(data: string): T;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@celonis/content-cli",
3
- "version": "0.4.4",
3
+ "version": "0.4.6",
4
4
  "description": "CLI Tool to help manage content in Celonis EMS",
5
5
  "main": "content-cli.js",
6
6
  "bin": {
@@ -22,7 +22,7 @@
22
22
  "semver": "^7.3.2",
23
23
  "valid-url": "^1.0.9",
24
24
  "winston": "^3.1.0",
25
- "yaml": "^1.7.2"
25
+ "yaml": "2.0.0-8"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/adm-zip": "^0.4.34",
@@ -1,18 +1,27 @@
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
+ };
1
10
  (function (factory) {
2
11
  if (typeof module === "object" && typeof module.exports === "object") {
3
12
  var v = factory(require, exports);
4
13
  if (v !== undefined) module.exports = v;
5
14
  }
6
15
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "fs", "path", "yaml", "../util/logger"], factory);
16
+ define(["require", "exports", "fs", "path", "../util/logger", "../util/yaml"], factory);
8
17
  }
9
18
  })(function (require, exports) {
10
19
  "use strict";
11
20
  Object.defineProperty(exports, "__esModule", { value: true });
12
21
  const fs = require("fs");
13
22
  const path = require("path");
14
- const YAML = require("yaml");
15
23
  const logger_1 = require("../util/logger");
24
+ const yaml_1 = require("../util/yaml");
16
25
  class FileService {
17
26
  writeToFileWithGivenName(data, filename) {
18
27
  fs.writeFileSync(path.resolve(process.cwd(), filename), this.getSerializedFileContent(data), {
@@ -23,9 +32,15 @@
23
32
  fs.mkdirSync(path.resolve(process.cwd(), dirName));
24
33
  }
25
34
  readManifestFile(importedFileName) {
26
- const manifest = YAML.parse(fs.readFileSync(path.resolve(importedFileName + "/manifest.yml"), { encoding: "utf-8" }));
35
+ const manifest = yaml_1.parse(fs.readFileSync(path.resolve(importedFileName + "/manifest.yml"), { encoding: "utf-8" }));
27
36
  return Promise.all(manifest);
28
37
  }
38
+ readFileToJson(fileName) {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ const fileContent = this.readFile(fileName);
41
+ return JSON.parse(fileContent);
42
+ });
43
+ }
29
44
  readFile(filename) {
30
45
  if (!fs.existsSync(path.resolve(process.cwd(), filename))) {
31
46
  logger_1.logger.error(new logger_1.FatalError(`The provided file '${filename}' does not exit`));
@@ -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", "../../api/node-api", "../../api/package-dependencies-api", "./variable-service", "./space-service", "yaml", "fs", "adm-zip", "path", "os"], factory);
16
+ define(["require", "exports", "../../util/logger", "../../api/package-api", "uuid", "../file-service", "./datamodel-service", "../../api/node-api", "../../api/package-dependencies-api", "./variable-service", "./space-service", "fs", "adm-zip", "path", "os", "../../util/semantic-versioning", "../../util/yaml"], factory);
17
17
  }
18
18
  })(function (require, exports) {
19
19
  "use strict";
@@ -27,11 +27,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
27
27
  const package_dependencies_api_1 = require("../../api/package-dependencies-api");
28
28
  const variable_service_1 = require("./variable-service");
29
29
  const space_service_1 = require("./space-service");
30
- const YAML = require("yaml");
31
30
  const fs = require("fs");
32
31
  const AdmZip = require("adm-zip");
33
32
  const path = require("path");
34
33
  const os_1 = require("os");
34
+ const semantic_versioning_1 = require("../../util/semantic-versioning");
35
+ const yaml_1 = require("../../util/yaml");
35
36
  class PackageService {
36
37
  constructor() {
37
38
  this.fileDownloadedMessage = "File downloaded successfully. New filename: ";
@@ -44,10 +45,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
44
45
  });
45
46
  });
46
47
  }
47
- findAndExportListOfAllPackages(includeDependencies) {
48
+ findAndExportListOfAllPackages(includeDependencies, packageKeys) {
48
49
  return __awaiter(this, void 0, void 0, function* () {
49
50
  const fieldsToInclude = ["key", "name", "changeDate", "activatedDraftId", "spaceId"];
50
51
  let nodesListToExport = yield package_api_1.packageApi.findAllPackages();
52
+ if (packageKeys.length > 0) {
53
+ nodesListToExport = nodesListToExport.filter(node => {
54
+ return packageKeys.includes(node.rootNodeKey);
55
+ });
56
+ }
51
57
  if (includeDependencies) {
52
58
  fieldsToInclude.push("type", "value", "dependencies", "id", "updateAvailable", "version", "poolId", "node", "dataModelId", "dataPool", "datamodels");
53
59
  const packagesKeyWithActionFlows = (yield node_api_1.nodeApi.findAllNodesOfType("SCENARIO")).map(node => node.rootNodeKey);
@@ -74,7 +80,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
74
80
  this.exportListOfPackages(nodesListToExport, fieldsToInclude);
75
81
  });
76
82
  }
77
- batchImportPackages(spaceMappings, exportedPackagesFile) {
83
+ batchImportPackages(spaceMappings, dataModelMappingsFilePath, exportedPackagesFile) {
78
84
  return __awaiter(this, void 0, void 0, function* () {
79
85
  exportedPackagesFile = exportedPackagesFile + (exportedPackagesFile.includes(".zip") ? "" : ".zip");
80
86
  const zip = new AdmZip(exportedPackagesFile);
@@ -82,6 +88,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
82
88
  yield fs.mkdirSync(importedFilePath);
83
89
  yield zip.extractAllTo(importedFilePath);
84
90
  const manifestNodes = yield file_service_1.fileService.readManifestFile(importedFilePath);
91
+ let dmTargetIdsBySourceIds;
92
+ if (dataModelMappingsFilePath) {
93
+ const dataModelMappings = yield file_service_1.fileService.readFileToJson(dataModelMappingsFilePath);
94
+ dmTargetIdsBySourceIds = new Map(Object.entries(dataModelMappings.dataModelIdMappings));
95
+ }
85
96
  manifestNodes.map(node => node.dependenciesByVersion = new Map(Object.entries(node.dependenciesByVersion)));
86
97
  const importedVersionsByNodeKey = new Map();
87
98
  const sourceToTargetVersionsByNodeKey = new Map();
@@ -97,7 +108,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
97
108
  });
98
109
  const draftIdsByPackageKeyAndVersion = new Map();
99
110
  for (const node of manifestNodes) {
100
- yield this.importPackage(node, manifestNodes, sourceToTargetVersionsByNodeKey, customSpacesMap, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath);
111
+ yield this.importPackage(node, manifestNodes, sourceToTargetVersionsByNodeKey, customSpacesMap, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath);
101
112
  }
102
113
  });
103
114
  }
@@ -114,14 +125,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
114
125
  }
115
126
  });
116
127
  }
117
- importPackage(packageToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath) {
128
+ importPackage(packageToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath) {
118
129
  var _a;
119
130
  return __awaiter(this, void 0, void 0, function* () {
120
131
  const importedPackageVersion = (_a = importedVersionsByNodeKey.get(packageToImport.packageKey)) !== null && _a !== void 0 ? _a : [];
121
- const versionsOfPackage = [...packageToImport.dependenciesByVersion.keys()].sort((k1, k2) => this.compareVersions(k1, k2)).filter(version => !importedPackageVersion.includes(version));
132
+ const versionsOfPackage = [...packageToImport.dependenciesByVersion.keys()].sort((k1, k2) => {
133
+ const version1 = new semantic_versioning_1.SemanticVersioning(k1);
134
+ const version2 = new semantic_versioning_1.SemanticVersioning(k1);
135
+ return version1.isGreaterThan(version2) ? 1 : -1;
136
+ }).filter(version => !importedPackageVersion.includes(version));
122
137
  for (const version of versionsOfPackage) {
123
138
  try {
124
- yield this.importPackageVersion(packageToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath, version);
139
+ yield this.importPackageVersion(packageToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath, version);
125
140
  }
126
141
  catch (e) {
127
142
  logger_1.logger.error(`Problem import package with key: ${packageToImport.packageKey} ${version} ${e}`);
@@ -129,24 +144,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
129
144
  }
130
145
  });
131
146
  }
132
- compareVersions(version1, version2) {
133
- const splitVersion1 = version1.split(".");
134
- const splitVersion2 = version2.split(".");
135
- const majorVersion1 = splitVersion1[0];
136
- const majorVersion2 = splitVersion2[0];
137
- const minorVersion1 = splitVersion1[1];
138
- const minorVersion2 = splitVersion2[1];
139
- const patchVersion1 = splitVersion1[2];
140
- const patchVersion2 = splitVersion2[2];
141
- const firstVersionIsGreaterThanFirst = (majorVersion1 > majorVersion2) || (minorVersion1 > minorVersion2) || (patchVersion1 > patchVersion2);
142
- return firstVersionIsGreaterThanFirst ? 1 : -1;
143
- }
144
- importPackageVersion(packageToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath, versionOfPackageBeingImported) {
147
+ importPackageVersion(packageToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath, versionOfPackageBeingImported) {
145
148
  var _a, _b;
146
149
  return __awaiter(this, void 0, void 0, function* () {
147
150
  if (packageToImport.dependenciesByVersion.get(versionOfPackageBeingImported).length) {
148
151
  const dependenciesOfPackageVersion = packageToImport.dependenciesByVersion.get(versionOfPackageBeingImported);
149
- yield this.importDependencyPackages(dependenciesOfPackageVersion, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath);
152
+ yield this.importDependencyPackages(dependenciesOfPackageVersion, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath);
150
153
  }
151
154
  if (this.checkIfPackageVersionHasBeenImported(packageToImport.packageKey, versionOfPackageBeingImported, importedVersionsByNodeKey)) {
152
155
  return;
@@ -160,6 +163,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
160
163
  yield package_api_1.packageApi.movePackageToSpace(nodeInTargetTeam.id, targetSpace.id);
161
164
  }
162
165
  nodeInTargetTeam = yield node_api_1.nodeApi.findOneByKeyAndRootNodeKey(packageToImport.packageKey, packageToImport.packageKey);
166
+ if (this.isLatestVersion(versionOfPackageBeingImported, [...packageToImport.dependenciesByVersion.keys()])) {
167
+ const variableAssignments = packageToImport.variables
168
+ .filter(variable => variable.type === "DATA_MODEL").map(variable => {
169
+ variable.value = dmTargetIdsBySourceIds.get(variable.value.toString());
170
+ return variable;
171
+ });
172
+ yield variable_service_1.variableService.assignVariableValues(nodeInTargetTeam.key, variableAssignments);
173
+ }
163
174
  draftIdsByPackageKeyAndVersion.set(`${nodeInTargetTeam.key}_${versionOfPackageBeingImported}`, nodeInTargetTeam.workingDraftId);
164
175
  yield this.updateDependencyVersions(packageToImport, versionOfPackageBeingImported, sourceToTargetVersionsByNodeKey, draftIdsByPackageKeyAndVersion);
165
176
  yield this.publishPackage(packageToImport);
@@ -174,14 +185,26 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
174
185
  logger_1.logger.info(`Imported package with key: ${packageToImport.packageKey} ${versionOfPackageBeingImported} successfully. New version: ${mappedVersion}`);
175
186
  });
176
187
  }
177
- importDependencyPackages(dependenciesToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath) {
188
+ isLatestVersion(packageVersion, allPackageVersions) {
189
+ let isLatestVersion = true;
190
+ for (const version of allPackageVersions) {
191
+ const version1 = new semantic_versioning_1.SemanticVersioning(packageVersion);
192
+ const version2 = new semantic_versioning_1.SemanticVersioning(version);
193
+ if (version2.isGreaterThan(version1)) {
194
+ isLatestVersion = false;
195
+ break;
196
+ }
197
+ }
198
+ return isLatestVersion;
199
+ }
200
+ importDependencyPackages(dependenciesToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath) {
178
201
  return __awaiter(this, void 0, void 0, function* () {
179
202
  for (const dependency of dependenciesToImport) {
180
203
  if (this.checkIfPackageVersionHasBeenImported(dependency.key, dependency.version, importedVersionsByNodeKey)) {
181
204
  continue;
182
205
  }
183
206
  const dependentPackage = manifestNodes.find((node) => node.packageKey === dependency.key);
184
- yield this.importPackage(dependentPackage, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath);
207
+ yield this.importPackage(dependentPackage, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath);
185
208
  }
186
209
  });
187
210
  }
@@ -365,7 +388,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
365
388
  const manifestNodes = this.exportManifestOfPackages(nodes, versionsByNodeKey);
366
389
  const packageZips = yield this.exportPackagesAndAssets(nodes);
367
390
  const zip = new AdmZip();
368
- zip.addFile("manifest.yml", Buffer.from(YAML.stringify(manifestNodes), "utf8"));
391
+ zip.addFile("manifest.yml", Buffer.from(yaml_1.stringify(manifestNodes), "utf8"));
369
392
  for (const packageZip of packageZips) {
370
393
  zip.addFile(`${packageZip.packageKey}_${packageZip.version}.zip`, packageZip.data);
371
394
  }
@@ -13,18 +13,24 @@ 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"], factory);
16
+ define(["require", "exports", "../../api/package-api", "../../api/variables-api"], factory);
17
17
  }
18
18
  })(function (require, exports) {
19
19
  "use strict";
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
21
  const package_api_1 = require("../../api/package-api");
22
+ const variables_api_1 = require("../../api/variables-api");
22
23
  class VariableService {
23
24
  getVariableAssignmentsForNodes(nodes) {
24
25
  return __awaiter(this, void 0, void 0, function* () {
25
26
  return yield package_api_1.packageApi.findAllPackagesWithVariableAssignments();
26
27
  });
27
28
  }
29
+ assignVariableValues(packageKey, variablesAssignments) {
30
+ return __awaiter(this, void 0, void 0, function* () {
31
+ yield variables_api_1.variablesApi.assignVariableValues(packageKey, variablesAssignments);
32
+ });
33
+ }
28
34
  }
29
35
  exports.variableService = new VariableService();
30
36
  });
@@ -0,0 +1,29 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ class SemanticVersioning {
13
+ constructor(version) {
14
+ this.version = version;
15
+ }
16
+ isGreaterThan(versionToCompare) {
17
+ const splitVersion1 = this.version.split(".");
18
+ const splitVersion2 = versionToCompare.version.split(".");
19
+ const majorVersion1 = splitVersion1[0];
20
+ const majorVersion2 = splitVersion2[0];
21
+ const minorVersion1 = splitVersion1[1];
22
+ const minorVersion2 = splitVersion2[1];
23
+ const patchVersion1 = splitVersion1[2];
24
+ const patchVersion2 = splitVersion2[2];
25
+ return (majorVersion1 > majorVersion2) || (minorVersion1 > minorVersion2) || (patchVersion1 > patchVersion2);
26
+ }
27
+ }
28
+ exports.SemanticVersioning = SemanticVersioning;
29
+ });
package/util/yaml.js ADDED
@@ -0,0 +1,21 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "yaml"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const YAML = require("yaml");
13
+ function stringify(data) {
14
+ return YAML.stringify(data, { doubleQuotedAsJSON: true, indent: 2, lineWidth: 200 });
15
+ }
16
+ exports.stringify = stringify;
17
+ function parse(data) {
18
+ return YAML.parse(data);
19
+ }
20
+ exports.parse = parse;
21
+ });