@celonis/content-cli 0.3.3 → 0.4.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/data-pool-api.js +34 -0
- package/api/node-api.js +7 -0
- package/api/package-api.js +55 -0
- package/api/package-dependencies-api.js +29 -0
- package/api/space-api.js +48 -0
- package/commands/data-pool.command.js +12 -1
- package/commands/package.command.js +11 -1
- package/content-cli-export.js +61 -0
- package/content-cli-import.js +61 -0
- package/content-cli-list.js +15 -1
- package/content-cli.js +2 -0
- package/interfaces/data-pool-manager.interfaces.js +12 -0
- package/interfaces/manifest-transport.js +12 -0
- package/lib/api/data-pool-api.d.ts +7 -0
- package/lib/api/node-api.d.ts +1 -0
- package/lib/api/package-api.d.ts +9 -1
- package/lib/api/package-dependencies-api.d.ts +4 -0
- package/lib/api/space-api.d.ts +9 -0
- package/lib/commands/data-pool.command.d.ts +1 -0
- package/lib/commands/package.command.d.ts +2 -0
- package/lib/content-cli-export.d.ts +4 -0
- package/lib/content-cli-import.d.ts +4 -0
- package/lib/content-cli-list.d.ts +1 -0
- package/lib/interfaces/batch-export-node-transport.d.ts +10 -0
- package/lib/interfaces/data-pool-manager.interfaces.d.ts +24 -0
- package/lib/interfaces/manifest-transport.d.ts +27 -0
- package/lib/interfaces/package-manager.interfaces.d.ts +10 -0
- package/lib/interfaces/save-space.interface.d.ts +2 -1
- package/lib/services/data-pool/data-pool-service.d.ts +8 -0
- package/lib/services/file-service.d.ts +3 -0
- package/lib/services/http-client-service.v2.d.ts +8 -0
- package/lib/services/package-manager/datamodel-service.d.ts +2 -1
- package/lib/services/package-manager/package-service.d.ts +21 -4
- package/lib/services/package-manager/space-service.d.ts +11 -0
- package/lib/services/package-manager/variable-service.d.ts +3 -2
- package/package.json +1 -1
- package/services/data-pool/data-pool-service.js +59 -0
- package/services/file-service.js +9 -1
- package/services/http-client-service.v2.js +91 -3
- package/services/package-manager/datamodel-service.js +6 -8
- package/services/package-manager/package-service.js +331 -34
- package/services/package-manager/space-service.js +61 -0
- package/services/package-manager/variable-service.js +2 -7
|
@@ -12,6 +12,12 @@ export interface ContentNodeTransport {
|
|
|
12
12
|
assetMetadataTransport: AssetMetadataTransport;
|
|
13
13
|
spaceId: string;
|
|
14
14
|
}
|
|
15
|
+
export interface ActivatePackageTransport {
|
|
16
|
+
packageKey: string;
|
|
17
|
+
version: string;
|
|
18
|
+
publishMessage: string;
|
|
19
|
+
nodeIdsToExclude: string[];
|
|
20
|
+
}
|
|
15
21
|
export interface DataModelTransport {
|
|
16
22
|
id: string;
|
|
17
23
|
name: string;
|
|
@@ -23,6 +29,10 @@ export interface PackageDependencyTransport {
|
|
|
23
29
|
name: string;
|
|
24
30
|
version: string;
|
|
25
31
|
rootNodeId: string;
|
|
32
|
+
external: boolean;
|
|
33
|
+
draftId: string;
|
|
34
|
+
updateAvailable: boolean;
|
|
35
|
+
deleted: boolean;
|
|
26
36
|
}
|
|
27
37
|
export interface AssetMetadataTransport {
|
|
28
38
|
hidden: boolean;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import { ManifestNodeTransport } from "../interfaces/manifest-transport";
|
|
1
2
|
export declare class FileService {
|
|
2
3
|
static readonly fileDownloadedMessage = "File downloaded successfully. New filename: ";
|
|
3
4
|
writeToFileWithGivenName(data: any, filename: string): void;
|
|
5
|
+
createDirectoryWithGivenName(dirName: string): void;
|
|
6
|
+
readManifestFile(importedFileName: string): Promise<ManifestNodeTransport[]>;
|
|
4
7
|
private getSerializedFileContent;
|
|
5
8
|
}
|
|
6
9
|
export declare const fileService: FileService;
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
declare class HttpClientServiceV2 {
|
|
2
2
|
get(url: string): Promise<any>;
|
|
3
|
+
postFile(url: string, body: any, parameters?: {}): Promise<any>;
|
|
4
|
+
post(url: string, body: any): Promise<any>;
|
|
5
|
+
put(url: string, body: object): Promise<any>;
|
|
6
|
+
delete(url: string): Promise<any>;
|
|
7
|
+
downloadFile(url: string): Promise<any>;
|
|
8
|
+
private handleResponseStreamData;
|
|
3
9
|
private resolveUrl;
|
|
10
|
+
private makeFileDownloadOptions;
|
|
4
11
|
private handleResponse;
|
|
5
12
|
private checkBadRequest;
|
|
6
13
|
private handleBadRequest;
|
|
7
14
|
private makeOptions;
|
|
15
|
+
private makeOptionsJson;
|
|
8
16
|
private buildAuthorizationHeaders;
|
|
9
17
|
}
|
|
10
18
|
export declare const httpClientV2: HttpClientServiceV2;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { BatchExportNodeTransport } from "../../interfaces/batch-export-node-transport";
|
|
2
|
+
import { StudioDataModelTransport } from "../../interfaces/package-manager.interfaces";
|
|
2
3
|
declare class DatamodelService {
|
|
3
4
|
static readonly INSTANCE: DatamodelService;
|
|
4
|
-
getDatamodelsForNodes(nodesListToExport: BatchExportNodeTransport[]): Promise<
|
|
5
|
+
getDatamodelsForNodes(nodesListToExport: BatchExportNodeTransport[]): Promise<Map<string, StudioDataModelTransport[]>>;
|
|
5
6
|
}
|
|
6
7
|
export declare const dataModelService: DatamodelService;
|
|
7
8
|
export {};
|
|
@@ -1,13 +1,30 @@
|
|
|
1
1
|
import { BatchExportNodeTransport } from "../../interfaces/batch-export-node-transport";
|
|
2
2
|
import { PackageDependencyTransport } from "../../interfaces/package-manager.interfaces";
|
|
3
|
+
import { ManifestNodeTransport } from "../../interfaces/manifest-transport";
|
|
3
4
|
declare class PackageService {
|
|
4
5
|
protected readonly fileDownloadedMessage = "File downloaded successfully. New filename: ";
|
|
5
6
|
listPackages(): Promise<void>;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
findAndExportListOfAllPackages(includeDependencies: boolean): Promise<void>;
|
|
8
|
+
batchImportPackages(spaceMappings: string[], exportedPackagesFile: string): Promise<void>;
|
|
9
|
+
private checkNodeForCircularDependency;
|
|
10
|
+
private importPackage;
|
|
11
|
+
private compareVersions;
|
|
12
|
+
private importPackageVersion;
|
|
13
|
+
private importDependencyPackages;
|
|
14
|
+
private checkIfPackageVersionHasBeenImported;
|
|
15
|
+
private createBodyForImport;
|
|
16
|
+
private getTargetSpaceForExportedPackage;
|
|
17
|
+
private updateDependencyVersions;
|
|
18
|
+
publishPackage(packageToImport: ManifestNodeTransport): Promise<void>;
|
|
19
|
+
batchExportPackages(packageKeys: string[], includeDependencies: boolean): Promise<void>;
|
|
20
|
+
getNodesWithActiveVersion(nodes: BatchExportNodeTransport[]): Promise<BatchExportNodeTransport[]>;
|
|
21
|
+
getPackagesWithDependencies(draftIdByNodeId: Map<string, string>, actionFlowPackageKeys: string[]): Promise<Map<string, PackageDependencyTransport[]>>;
|
|
22
|
+
private getDependencyPackages;
|
|
23
|
+
private nodeHasBeenResolvedBefore;
|
|
10
24
|
private exportListOfPackages;
|
|
25
|
+
private exportPackagesAndAssets;
|
|
26
|
+
private exportToZip;
|
|
27
|
+
private exportManifestOfPackages;
|
|
11
28
|
}
|
|
12
29
|
export declare const packageService: PackageService;
|
|
13
30
|
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BatchExportNodeTransport } from "../../interfaces/batch-export-node-transport";
|
|
2
|
+
import { SpaceTransport } from "../../interfaces/save-space.interface";
|
|
3
|
+
declare class SpaceService {
|
|
4
|
+
static readonly INSTANCE: SpaceService;
|
|
5
|
+
private allSpaces;
|
|
6
|
+
getParentSpaces(nodes: BatchExportNodeTransport[]): Promise<BatchExportNodeTransport[]>;
|
|
7
|
+
createSpace(spaceName: string, spaceIcon: string): Promise<SpaceTransport>;
|
|
8
|
+
getAllSpaces(): Promise<SpaceTransport[]>;
|
|
9
|
+
}
|
|
10
|
+
export declare const spaceService: SpaceService;
|
|
11
|
+
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PackageWithVariableAssignments } from "../../interfaces/package-manager.interfaces";
|
|
2
|
+
import { BatchExportNodeTransport } from "../../interfaces/batch-export-node-transport";
|
|
2
3
|
declare class VariableService {
|
|
3
|
-
|
|
4
|
+
getVariableAssignmentsForNodes(nodes: BatchExportNodeTransport[]): Promise<PackageWithVariableAssignments[]>;
|
|
4
5
|
}
|
|
5
6
|
export declare const variableService: VariableService;
|
|
6
7
|
export {};
|
package/package.json
CHANGED
|
@@ -0,0 +1,59 @@
|
|
|
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/data-pool-api", "../../util/logger", "uuid", "../file-service"], factory);
|
|
17
|
+
}
|
|
18
|
+
})(function (require, exports) {
|
|
19
|
+
"use strict";
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
const data_pool_api_1 = require("../../api/data-pool-api");
|
|
22
|
+
const logger_1 = require("../../util/logger");
|
|
23
|
+
const uuid_1 = require("uuid");
|
|
24
|
+
const file_service_1 = require("../file-service");
|
|
25
|
+
class DataPoolService {
|
|
26
|
+
listDataPools() {
|
|
27
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
28
|
+
const dataPools = yield this.findAllPools();
|
|
29
|
+
dataPools.forEach(pool => {
|
|
30
|
+
logger_1.logger.info(`Pool Id: ${pool.id} - Pool Name: ${pool.name}`);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
findAndExportAllPools() {
|
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
const dataPools = yield this.findAllPools();
|
|
37
|
+
this.exportListOfPools(dataPools);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
findAllPools() {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
let page = 0;
|
|
43
|
+
const dataPools = [];
|
|
44
|
+
let tmpPage = yield data_pool_api_1.dataPoolApi.findAllPagedPools("100", page.toString());
|
|
45
|
+
while (tmpPage.pageNumber < tmpPage.totalCount) {
|
|
46
|
+
dataPools.push(...tmpPage.content);
|
|
47
|
+
tmpPage = yield data_pool_api_1.dataPoolApi.findAllPagedPools("100", (++page).toString());
|
|
48
|
+
}
|
|
49
|
+
return dataPools;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
exportListOfPools(nodes) {
|
|
53
|
+
const filename = uuid_1.v4() + ".json";
|
|
54
|
+
file_service_1.fileService.writeToFileWithGivenName(JSON.stringify(nodes), filename);
|
|
55
|
+
logger_1.logger.info(file_service_1.FileService.fileDownloadedMessage + filename);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.dataPoolService = new DataPoolService();
|
|
59
|
+
});
|
package/services/file-service.js
CHANGED
|
@@ -4,19 +4,27 @@
|
|
|
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"], factory);
|
|
7
|
+
define(["require", "exports", "fs", "path", "yaml"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
const fs = require("fs");
|
|
13
13
|
const path = require("path");
|
|
14
|
+
const YAML = require("yaml");
|
|
14
15
|
class FileService {
|
|
15
16
|
writeToFileWithGivenName(data, filename) {
|
|
16
17
|
fs.writeFileSync(path.resolve(process.cwd(), filename), this.getSerializedFileContent(data), {
|
|
17
18
|
encoding: "utf-8",
|
|
18
19
|
});
|
|
19
20
|
}
|
|
21
|
+
createDirectoryWithGivenName(dirName) {
|
|
22
|
+
fs.mkdirSync(path.resolve(process.cwd(), dirName));
|
|
23
|
+
}
|
|
24
|
+
readManifestFile(importedFileName) {
|
|
25
|
+
const manifest = YAML.parse(fs.readFileSync(path.resolve(importedFileName + "/manifest.yml"), { encoding: "utf-8" }));
|
|
26
|
+
return Promise.all(manifest);
|
|
27
|
+
}
|
|
20
28
|
getSerializedFileContent(data) {
|
|
21
29
|
return data;
|
|
22
30
|
}
|
|
@@ -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", "request", "./context.service", "../util/logger"], factory);
|
|
16
|
+
define(["require", "exports", "../interfaces/profile.interface", "request", "./context.service", "../util/logger", "querystring"], factory);
|
|
17
17
|
}
|
|
18
18
|
})(function (require, exports) {
|
|
19
19
|
"use strict";
|
|
@@ -22,6 +22,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
22
22
|
const request = require("request");
|
|
23
23
|
const context_service_1 = require("./context.service");
|
|
24
24
|
const logger_1 = require("../util/logger");
|
|
25
|
+
const querystring = require("querystring");
|
|
25
26
|
class HttpClientServiceV2 {
|
|
26
27
|
get(url) {
|
|
27
28
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -34,9 +35,90 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
34
35
|
});
|
|
35
36
|
});
|
|
36
37
|
}
|
|
38
|
+
postFile(url, body, parameters) {
|
|
39
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
40
|
+
return new Promise((resolve, reject) => {
|
|
41
|
+
request.post(this.resolveUrl(url) + "?" + querystring.stringify(parameters), this.makeOptions(context_service_1.contextService.getContext().profile, body), (err, res) => {
|
|
42
|
+
this.handleResponse(res, resolve, reject);
|
|
43
|
+
});
|
|
44
|
+
}).catch(e => {
|
|
45
|
+
throw new logger_1.FatalError(e);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
post(url, body) {
|
|
50
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
51
|
+
return new Promise((resolve, reject) => {
|
|
52
|
+
request.post(this.resolveUrl(url), this.makeOptionsJson(context_service_1.contextService.getContext().profile, JSON.stringify(body), "application/json;charset=utf-8"), (err, res) => {
|
|
53
|
+
this.handleResponse(res, resolve, reject);
|
|
54
|
+
});
|
|
55
|
+
}).catch(e => {
|
|
56
|
+
throw new logger_1.FatalError(e);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
put(url, body) {
|
|
61
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
return new Promise((resolve, reject) => {
|
|
63
|
+
request.put(this.resolveUrl(url), this.makeOptionsJson(context_service_1.contextService.getContext().profile, JSON.stringify(body), "application/json;charset=utf-8"), (err, res) => {
|
|
64
|
+
this.handleResponse(res, resolve, reject);
|
|
65
|
+
});
|
|
66
|
+
}).catch(e => {
|
|
67
|
+
throw new logger_1.FatalError(e);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
delete(url) {
|
|
72
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
73
|
+
return new Promise((resolve, reject) => {
|
|
74
|
+
request.delete(this.resolveUrl(url), this.makeOptionsJson(context_service_1.contextService.getContext().profile, "application/json;charset=utf-8"), (err, res) => {
|
|
75
|
+
this.handleResponse(res, resolve, reject);
|
|
76
|
+
});
|
|
77
|
+
}).catch(e => {
|
|
78
|
+
throw new logger_1.FatalError(e);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
downloadFile(url) {
|
|
83
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
84
|
+
return new Promise((resolve, reject) => {
|
|
85
|
+
request
|
|
86
|
+
.post(this.resolveUrl(url), this.makeFileDownloadOptions(context_service_1.contextService.getContext().profile))
|
|
87
|
+
.on("response", (response) => {
|
|
88
|
+
const data = [];
|
|
89
|
+
response.on("data", (chunk) => {
|
|
90
|
+
data.push(chunk);
|
|
91
|
+
});
|
|
92
|
+
response.on("end", () => {
|
|
93
|
+
if (this.checkBadRequest(response.statusCode)) {
|
|
94
|
+
this.handleBadRequest(response.statusCode, data.toString(), reject);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
this.handleResponseStreamData(Buffer.concat(data), resolve, reject);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
})
|
|
101
|
+
.on("error", error => reject(error));
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
handleResponseStreamData(data, resolve, reject) {
|
|
106
|
+
if (data) {
|
|
107
|
+
resolve(data);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
logger_1.logger.error("Could not get file stream from response");
|
|
111
|
+
reject();
|
|
112
|
+
}
|
|
37
113
|
resolveUrl(url) {
|
|
38
114
|
return context_service_1.contextService.getContext().profile.team.replace(/\/?$/, url);
|
|
39
115
|
}
|
|
116
|
+
makeFileDownloadOptions(profile) {
|
|
117
|
+
return {
|
|
118
|
+
headers: this.buildAuthorizationHeaders(profile),
|
|
119
|
+
responseType: "binary",
|
|
120
|
+
};
|
|
121
|
+
}
|
|
40
122
|
handleResponse(res, resolve, reject) {
|
|
41
123
|
if (this.checkBadRequest(res.statusCode)) {
|
|
42
124
|
this.handleBadRequest(res.statusCode, res.body, reject);
|
|
@@ -72,11 +154,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
72
154
|
};
|
|
73
155
|
return Object.assign(options, body);
|
|
74
156
|
}
|
|
75
|
-
|
|
157
|
+
makeOptionsJson(profile, body, contentType) {
|
|
158
|
+
return {
|
|
159
|
+
headers: this.buildAuthorizationHeaders(profile, contentType),
|
|
160
|
+
body: body
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
buildAuthorizationHeaders(profile, contentType) {
|
|
76
164
|
const authenticationType = profile.authenticationType || profile_interface_1.AuthenticationType.BEARER;
|
|
77
165
|
return {
|
|
78
166
|
authorization: `${authenticationType} ${profile.apiToken}`,
|
|
79
|
-
"content-type": "application/json",
|
|
167
|
+
"content-type": contentType !== null && contentType !== void 0 ? contentType : "application/json",
|
|
80
168
|
};
|
|
81
169
|
}
|
|
82
170
|
}
|
|
@@ -22,14 +22,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
22
22
|
class DatamodelService {
|
|
23
23
|
getDatamodelsForNodes(nodesListToExport) {
|
|
24
24
|
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
});
|
|
32
|
-
return Promise.all(promises);
|
|
25
|
+
const dataModelsMap = new Map();
|
|
26
|
+
for (const node of nodesListToExport) {
|
|
27
|
+
const assignedDataModels = yield compute_pool_api_1.computePoolApi.findAssignedDatamodels(node.key);
|
|
28
|
+
dataModelsMap.set(node.key, assignedDataModels);
|
|
29
|
+
}
|
|
30
|
+
return dataModelsMap;
|
|
33
31
|
});
|
|
34
32
|
}
|
|
35
33
|
}
|