@hahnpro/hpc-api 6.0.0 → 2024.4.0-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/package.json +8 -24
- package/src/index.d.ts +20 -0
- package/src/index.js +20 -0
- package/{dist → src/lib}/Queue.js +2 -7
- package/src/lib/api-base.js +6 -0
- package/src/lib/api.js +60 -0
- package/src/lib/asset.interface.js +1 -0
- package/{dist → src/lib}/asset.service.js +21 -17
- package/src/lib/assettypes.service.js +24 -0
- package/{dist → src/lib}/content.interface.js +2 -5
- package/src/lib/content.service.js +49 -0
- package/src/lib/data.interface.js +3 -0
- package/{dist → src/lib}/data.service.js +18 -11
- package/src/lib/endpoint.interface.js +1 -0
- package/{dist → src/lib}/endpoint.service.d.ts +2 -2
- package/{dist → src/lib}/endpoint.service.js +2 -6
- package/src/lib/events.interface.js +1 -0
- package/src/lib/events.service.js +9 -0
- package/src/lib/flow-deployment.interface.js +1 -0
- package/src/lib/flow-deployment.service.js +68 -0
- package/src/lib/flow-function.interface.js +1 -0
- package/{dist → src/lib}/flow-function.service.js +3 -6
- package/src/lib/flow-module.interface.js +1 -0
- package/{dist → src/lib}/flow-module.service.js +8 -7
- package/src/lib/flow.interface.js +1 -0
- package/{dist → src/lib}/flow.service.js +15 -20
- package/src/lib/http.service.js +179 -0
- package/src/lib/label.interface.js +1 -0
- package/{dist → src/lib}/label.service.js +2 -6
- package/src/lib/mock/api-base.mock.js +7 -0
- package/src/lib/mock/api.mock.js +199 -0
- package/{dist → src/lib}/mock/asset.mock.service.js +30 -41
- package/{dist → src/lib}/mock/assetTypes.mock.service.js +19 -27
- package/{dist → src/lib}/mock/content.mock.service.js +21 -24
- package/src/lib/mock/data.mock.service.js +93 -0
- package/{dist → src/lib}/mock/endpoint.mock.service.js +2 -6
- package/src/lib/mock/events.mock.service.js +10 -0
- package/src/lib/mock/flow-deployment.mock.service.js +118 -0
- package/{dist → src/lib}/mock/flow-functions.mock.service.js +12 -21
- package/src/lib/mock/flow-modules.mock.service.js +20 -0
- package/src/lib/mock/flow.mock.service.js +81 -0
- package/src/lib/mock/index.js +11 -0
- package/src/lib/mock/label.mock.service.js +13 -0
- package/src/lib/mock/notification.mock.service.js +7 -0
- package/src/lib/mock/secret.mock.service.js +28 -0
- package/src/lib/mock/task.mock.service.js +32 -0
- package/{dist → src/lib}/mock/timeseries.mock.service.js +40 -49
- package/{dist → src/lib}/mock/trash.mock.service.js +8 -15
- package/src/lib/mock/user.mock.service.js +10 -0
- package/{dist → src/lib}/mock/vault.mock.service.js +2 -6
- package/src/lib/notification.interface.js +1 -0
- package/src/lib/notification.service.js +6 -0
- package/{dist → src/lib}/proxy.service.js +1 -5
- package/src/lib/resource.interface.js +1 -0
- package/src/lib/schema.interface.js +1 -0
- package/src/lib/secret.interface.js +1 -0
- package/src/lib/secret.service.js +15 -0
- package/src/lib/storage.interface.js +1 -0
- package/src/lib/task.interface.js +1 -0
- package/src/lib/task.service.js +19 -0
- package/src/lib/timeseries.interface.js +1 -0
- package/src/lib/timeseries.service.js +92 -0
- package/{dist → src/lib}/token-set.js +3 -7
- package/{dist → src/lib}/trash.service.js +2 -6
- package/src/lib/user-settings.interface.js +1 -0
- package/src/lib/user.service.js +26 -0
- package/src/lib/vault.interface.js +1 -0
- package/src/lib/vault.service.js +10 -0
- package/LICENSE +0 -21
- package/dist/api-base.js +0 -10
- package/dist/api.js +0 -62
- package/dist/asset.interface.js +0 -2
- package/dist/assettypes.service.js +0 -28
- package/dist/content.service.js +0 -50
- package/dist/data.interface.js +0 -6
- package/dist/endpoint.interface.js +0 -2
- package/dist/events.interface.js +0 -2
- package/dist/events.service.js +0 -13
- package/dist/flow-deployment.interface.js +0 -2
- package/dist/flow-deployment.service.js +0 -74
- package/dist/flow-function.interface.js +0 -2
- package/dist/flow-module.interface.js +0 -2
- package/dist/flow.interface.js +0 -2
- package/dist/http.service.js +0 -182
- package/dist/index.d.ts +0 -20
- package/dist/index.js +0 -23
- package/dist/label.interface.js +0 -2
- package/dist/mock/api-base.mock.js +0 -11
- package/dist/mock/api.mock.js +0 -128
- package/dist/mock/data.mock.service.js +0 -96
- package/dist/mock/events.mock.service.js +0 -14
- package/dist/mock/flow-deployment.mock.service.js +0 -142
- package/dist/mock/flow-modules.mock.service.js +0 -27
- package/dist/mock/flow.mock.service.js +0 -93
- package/dist/mock/index.js +0 -14
- package/dist/mock/label.mock.service.js +0 -17
- package/dist/mock/notification.mock.service.js +0 -11
- package/dist/mock/secret.mock.service.js +0 -31
- package/dist/mock/task.mock.service.js +0 -37
- package/dist/mock/user.mock.service.js +0 -14
- package/dist/notification.interface.js +0 -2
- package/dist/notification.service.js +0 -10
- package/dist/resource.interface.js +0 -2
- package/dist/schema.interface.js +0 -2
- package/dist/secret.interface.js +0 -2
- package/dist/secret.service.js +0 -19
- package/dist/storage.interface.js +0 -2
- package/dist/task.interface.js +0 -2
- package/dist/task.service.js +0 -22
- package/dist/timeseries.interface.js +0 -2
- package/dist/timeseries.service.js +0 -56
- package/dist/user-settings.interface.js +0 -2
- package/dist/user.service.js +0 -33
- package/dist/vault.interface.js +0 -2
- package/dist/vault.service.js +0 -14
- package/{dist → src/lib}/Queue.d.ts +0 -0
- package/{dist → src/lib}/api-base.d.ts +0 -0
- package/{dist → src/lib}/api.d.ts +6 -6
- package/{dist → src/lib}/asset.interface.d.ts +0 -0
- package/{dist → src/lib}/asset.service.d.ts +0 -0
- package/{dist → src/lib}/assettypes.service.d.ts +0 -0
- package/{dist → src/lib}/content.interface.d.ts +0 -0
- package/{dist → src/lib}/content.service.d.ts +1 -1
- package/{dist → src/lib}/data.interface.d.ts +0 -0
- package/{dist → src/lib}/data.service.d.ts +0 -0
- package/{dist → src/lib}/endpoint.interface.d.ts +0 -0
- package/{dist → src/lib}/events.interface.d.ts +0 -0
- package/{dist → src/lib}/events.service.d.ts +0 -0
- package/{dist → src/lib}/flow-deployment.interface.d.ts +1 -1
- package/{dist → src/lib}/flow-deployment.service.d.ts +0 -0
- package/{dist → src/lib}/flow-function.interface.d.ts +0 -0
- package/{dist → src/lib}/flow-function.service.d.ts +1 -1
- package/{dist → src/lib}/flow-module.interface.d.ts +0 -0
- package/{dist → src/lib}/flow-module.service.d.ts +1 -1
- package/{dist → src/lib}/flow.interface.d.ts +1 -1
- package/{dist → src/lib}/flow.service.d.ts +1 -1
- package/{dist → src/lib}/http.service.d.ts +0 -0
- package/{dist → src/lib}/label.interface.d.ts +0 -0
- package/{dist → src/lib}/label.service.d.ts +0 -0
- package/{dist → src/lib}/mock/api-base.mock.d.ts +0 -0
- package/{dist → src/lib}/mock/api.mock.d.ts +18 -18
- package/{dist → src/lib}/mock/asset.mock.service.d.ts +1 -1
- package/{dist → src/lib}/mock/assetTypes.mock.service.d.ts +0 -0
- package/{dist → src/lib}/mock/content.mock.service.d.ts +1 -1
- package/{dist → src/lib}/mock/data.mock.service.d.ts +0 -0
- package/{dist → src/lib}/mock/endpoint.mock.service.d.ts +0 -0
- package/{dist → src/lib}/mock/events.mock.service.d.ts +0 -0
- package/{dist → src/lib}/mock/flow-deployment.mock.service.d.ts +2 -2
- package/{dist → src/lib}/mock/flow-functions.mock.service.d.ts +1 -1
- package/{dist → src/lib}/mock/flow-modules.mock.service.d.ts +2 -2
- package/{dist → src/lib}/mock/flow.mock.service.d.ts +1 -1
- package/{dist → src/lib}/mock/index.d.ts +0 -0
- package/{dist → src/lib}/mock/label.mock.service.d.ts +1 -1
- package/{dist → src/lib}/mock/notification.mock.service.d.ts +1 -1
- package/{dist → src/lib}/mock/secret.mock.service.d.ts +1 -1
- package/{dist → src/lib}/mock/task.mock.service.d.ts +0 -0
- package/{dist → src/lib}/mock/timeseries.mock.service.d.ts +0 -0
- package/{dist → src/lib}/mock/trash.mock.service.d.ts +1 -1
- package/{dist → src/lib}/mock/user.mock.service.d.ts +0 -0
- package/{dist → src/lib}/mock/vault.mock.service.d.ts +1 -1
- package/{dist → src/lib}/notification.interface.d.ts +0 -0
- package/{dist → src/lib}/notification.service.d.ts +1 -1
- package/{dist → src/lib}/proxy.service.d.ts +0 -0
- package/{dist → src/lib}/resource.interface.d.ts +0 -0
- package/{dist → src/lib}/schema.interface.d.ts +0 -0
- package/{dist → src/lib}/secret.interface.d.ts +0 -0
- package/{dist → src/lib}/secret.service.d.ts +0 -0
- package/{dist → src/lib}/storage.interface.d.ts +0 -0
- package/{dist → src/lib}/task.interface.d.ts +0 -0
- package/{dist → src/lib}/task.service.d.ts +0 -0
- package/{dist → src/lib}/timeseries.interface.d.ts +0 -0
- package/{dist → src/lib}/timeseries.service.d.ts +0 -0
- package/{dist → src/lib}/token-set.d.ts +0 -0
- package/{dist → src/lib}/trash.service.d.ts +0 -0
- package/{dist → src/lib}/user-settings.interface.d.ts +0 -0
- package/{dist → src/lib}/user.service.d.ts +0 -0
- package/{dist → src/lib}/vault.interface.d.ts +0 -0
- package/{dist → src/lib}/vault.service.d.ts +1 -1
|
@@ -1,19 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const data_mock_service_1 = require("./data.mock.service");
|
|
10
|
-
const trash_mock_service_1 = require("./trash.mock.service");
|
|
11
|
-
let BaseService = class BaseService extends api_base_mock_1.APIBaseMock {
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Readable } from 'stream';
|
|
3
|
+
import { mix } from 'ts-mixer';
|
|
4
|
+
import { ReturnType } from '../content.interface';
|
|
5
|
+
import { APIBaseMock } from './api-base.mock';
|
|
6
|
+
import { DataMockService } from './data.mock.service';
|
|
7
|
+
import { TrashMockService } from './trash.mock.service';
|
|
8
|
+
let BaseService = class BaseService extends APIBaseMock {
|
|
12
9
|
};
|
|
13
|
-
BaseService =
|
|
14
|
-
|
|
10
|
+
BaseService = __decorate([
|
|
11
|
+
mix(DataMockService, TrashMockService)
|
|
15
12
|
], BaseService);
|
|
16
|
-
class ContentMockService extends BaseService {
|
|
13
|
+
export class ContentMockService extends BaseService {
|
|
17
14
|
constructor(contents, contentData) {
|
|
18
15
|
super(contents);
|
|
19
16
|
this.contentData = new Map();
|
|
@@ -24,30 +21,30 @@ class ContentMockService extends BaseService {
|
|
|
24
21
|
download(id, second) {
|
|
25
22
|
let returnType;
|
|
26
23
|
if (typeof second === 'boolean' || second == null) {
|
|
27
|
-
returnType = second ?
|
|
24
|
+
returnType = second ? ReturnType.ARRAYBUFFER : ReturnType.BLOB;
|
|
28
25
|
}
|
|
29
26
|
else {
|
|
30
27
|
returnType = second;
|
|
31
28
|
}
|
|
32
29
|
const content = this.contentData.get(id);
|
|
33
30
|
switch (returnType) {
|
|
34
|
-
case
|
|
31
|
+
case ReturnType.TEXT:
|
|
35
32
|
if (typeof content === 'string') {
|
|
36
33
|
return Promise.resolve(content);
|
|
37
34
|
}
|
|
38
35
|
else {
|
|
39
36
|
return Promise.resolve(JSON.stringify(content));
|
|
40
37
|
}
|
|
41
|
-
case
|
|
38
|
+
case ReturnType.JSON:
|
|
42
39
|
if (typeof content !== 'string') {
|
|
43
40
|
return Promise.resolve(content);
|
|
44
41
|
}
|
|
45
42
|
else {
|
|
46
43
|
return Promise.resolve(JSON.parse(content));
|
|
47
44
|
}
|
|
48
|
-
case
|
|
45
|
+
case ReturnType.NODEBUFFER:
|
|
49
46
|
return Promise.resolve(Buffer.from(this.contentData.get(id)));
|
|
50
|
-
case
|
|
47
|
+
case ReturnType.BLOB:
|
|
51
48
|
if (global.Blob) {
|
|
52
49
|
return Promise.resolve(new Blob([Buffer.from(this.contentData.get(id)).buffer]));
|
|
53
50
|
}
|
|
@@ -59,15 +56,16 @@ class ContentMockService extends BaseService {
|
|
|
59
56
|
return Promise.resolve(JSON.stringify(content));
|
|
60
57
|
}
|
|
61
58
|
}
|
|
62
|
-
case
|
|
59
|
+
case ReturnType.ARRAYBUFFER:
|
|
63
60
|
return Promise.resolve(Buffer.from(this.contentData.get(id)).buffer);
|
|
64
|
-
case
|
|
65
|
-
return Promise.resolve(
|
|
61
|
+
case ReturnType.NODESTREAM:
|
|
62
|
+
return Promise.resolve(Readable.from(this.contentData.get(id)));
|
|
66
63
|
}
|
|
67
64
|
}
|
|
68
65
|
deleteOne(contentId, force = false) {
|
|
69
66
|
const content = this.data.find((v) => v.id === contentId);
|
|
70
|
-
if (!
|
|
67
|
+
if (!content?.deletedAt && !force) {
|
|
68
|
+
// put content in paper bin by setting deletedAt prop
|
|
71
69
|
content.deletedAt = new Date().toISOString();
|
|
72
70
|
return Promise.resolve(content);
|
|
73
71
|
}
|
|
@@ -81,4 +79,3 @@ class ContentMockService extends BaseService {
|
|
|
81
79
|
return Promise.resolve(undefined);
|
|
82
80
|
}
|
|
83
81
|
}
|
|
84
|
-
exports.ContentMockService = ContentMockService;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { instanceOfTimePeriod } from '../data.interface';
|
|
2
|
+
import { DataService } from '../data.service';
|
|
3
|
+
export class DataMockService extends DataService {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(null, null);
|
|
6
|
+
this.data = [];
|
|
7
|
+
}
|
|
8
|
+
async addMany(dto) {
|
|
9
|
+
const map = dto.map((v) => this.addOne(v));
|
|
10
|
+
return Promise.all(map);
|
|
11
|
+
}
|
|
12
|
+
addOne(dto) {
|
|
13
|
+
this.data.push(dto);
|
|
14
|
+
return Promise.resolve(dto);
|
|
15
|
+
}
|
|
16
|
+
deleteOne(id) {
|
|
17
|
+
const index = this.data.findIndex((v) => v.id === id);
|
|
18
|
+
const obj = this.data[index];
|
|
19
|
+
this.data.splice(index, 1);
|
|
20
|
+
return Promise.resolve(obj);
|
|
21
|
+
}
|
|
22
|
+
getMany(params) {
|
|
23
|
+
const data = this.data;
|
|
24
|
+
if (params?.sort) {
|
|
25
|
+
this.sortData(data, params.sort);
|
|
26
|
+
}
|
|
27
|
+
const page = {
|
|
28
|
+
docs: data,
|
|
29
|
+
limit: params?.limit ?? Number.MAX_SAFE_INTEGER,
|
|
30
|
+
total: data.length,
|
|
31
|
+
};
|
|
32
|
+
return Promise.resolve(page);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Filters the elements by the passed properties. The object with these properties has to be of the form:
|
|
36
|
+
* {
|
|
37
|
+
* propertyName: string | string[] | { from: Date, to: Date },
|
|
38
|
+
* ...
|
|
39
|
+
* }.
|
|
40
|
+
* @param filter The Object with the properties to filter by.
|
|
41
|
+
* @param params Other request parameters.
|
|
42
|
+
*/
|
|
43
|
+
async getManyFiltered(filter, params = {}) {
|
|
44
|
+
const paginated = await this.getMany(params);
|
|
45
|
+
const newData = paginated.docs.filter((doc) => Object.entries(filter).every(([filterKey, filterValue]) => {
|
|
46
|
+
const docValue = doc[filterKey];
|
|
47
|
+
if (!docValue) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
return ((typeof docValue === 'object' && (filterValue === docValue.name || filterValue === docValue.id)) || // data object
|
|
51
|
+
(typeof filterValue === 'object' &&
|
|
52
|
+
instanceOfTimePeriod(filterValue) &&
|
|
53
|
+
new Date(docValue) >= filterValue.from &&
|
|
54
|
+
new Date(docValue) <= filterValue.to) || // TimePeriod
|
|
55
|
+
(docValue instanceof Date && filterValue === docValue.toISOString()) || // Date
|
|
56
|
+
(Array.isArray(filterValue) && Array.isArray(docValue) && filterValue.some((fv) => docValue.includes(fv))) || // string[]
|
|
57
|
+
(Array.isArray(filterValue) && filterValue.includes(docValue)) ||
|
|
58
|
+
(Array.isArray(docValue) && docValue.includes(filterValue)) ||
|
|
59
|
+
docValue === filterValue // string
|
|
60
|
+
);
|
|
61
|
+
}));
|
|
62
|
+
const page = {
|
|
63
|
+
docs: newData,
|
|
64
|
+
limit: paginated.limit ?? Number.MAX_SAFE_INTEGER,
|
|
65
|
+
total: newData.length,
|
|
66
|
+
};
|
|
67
|
+
return Promise.resolve(page);
|
|
68
|
+
}
|
|
69
|
+
getOne(id, options = {}) {
|
|
70
|
+
const idKey = options.idKey || 'id';
|
|
71
|
+
const t = this.data.find((v) => v[idKey] === id);
|
|
72
|
+
return Promise.resolve(t);
|
|
73
|
+
}
|
|
74
|
+
async updateOne(id, dto) {
|
|
75
|
+
await this.deleteOne(id);
|
|
76
|
+
const t = await this.addOne(dto);
|
|
77
|
+
return Promise.resolve(t);
|
|
78
|
+
}
|
|
79
|
+
sortData(data, sort) {
|
|
80
|
+
const descending = sort.startsWith('-');
|
|
81
|
+
const sortString = descending ? sort.substring(1) : sort;
|
|
82
|
+
const compareFn = (a, b) => {
|
|
83
|
+
let aValue = a[sortString];
|
|
84
|
+
let bValue = b[sortString];
|
|
85
|
+
if (['updatedAt', 'createdAt', 'deletedAt'].includes(sortString)) {
|
|
86
|
+
aValue = new Date(a[sortString]).valueOf();
|
|
87
|
+
bValue = new Date(b[sortString]).valueOf();
|
|
88
|
+
}
|
|
89
|
+
return descending ? bValue - aValue : aValue - bValue;
|
|
90
|
+
};
|
|
91
|
+
data.sort(compareFn);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.EndpointMockService = void 0;
|
|
4
|
-
const data_mock_service_1 = require("./data.mock.service");
|
|
5
|
-
class EndpointMockService extends data_mock_service_1.DataMockService {
|
|
1
|
+
import { DataMockService } from './data.mock.service';
|
|
2
|
+
export class EndpointMockService extends DataMockService {
|
|
6
3
|
constructor(endpoints) {
|
|
7
4
|
super();
|
|
8
5
|
this.data = endpoints;
|
|
@@ -21,4 +18,3 @@ class EndpointMockService extends data_mock_service_1.DataMockService {
|
|
|
21
18
|
});
|
|
22
19
|
}
|
|
23
20
|
}
|
|
24
|
-
exports.EndpointMockService = EndpointMockService;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DataMockService } from './data.mock.service';
|
|
2
|
+
export class EventsMockService extends DataMockService {
|
|
3
|
+
constructor(events) {
|
|
4
|
+
super();
|
|
5
|
+
this.data = events;
|
|
6
|
+
}
|
|
7
|
+
getLastEventByAssetAndGroup(assetId, group) {
|
|
8
|
+
return Promise.resolve(this.data[this.data.length - 1]);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { randomUUID } from 'crypto';
|
|
3
|
+
import { mix } from 'ts-mixer';
|
|
4
|
+
import { APIBaseMock } from './api-base.mock';
|
|
5
|
+
import { DataMockService } from './data.mock.service';
|
|
6
|
+
import { TrashMockService } from './trash.mock.service';
|
|
7
|
+
let BaseService = class BaseService extends APIBaseMock {
|
|
8
|
+
};
|
|
9
|
+
BaseService = __decorate([
|
|
10
|
+
mix(DataMockService, TrashMockService)
|
|
11
|
+
], BaseService);
|
|
12
|
+
export class FlowDeploymentMockService extends BaseService {
|
|
13
|
+
constructor(deployments, api) {
|
|
14
|
+
super(deployments);
|
|
15
|
+
this.api = api;
|
|
16
|
+
}
|
|
17
|
+
subscribeToStatus(id, listener, errorListener) {
|
|
18
|
+
listener(new MessageEvent('message', { data: 'running' }));
|
|
19
|
+
return Promise.resolve(randomUUID());
|
|
20
|
+
}
|
|
21
|
+
subscribeToLogs(id, listener, errorListener) {
|
|
22
|
+
listener(new MessageEvent('message', { data: 'foo' }));
|
|
23
|
+
return Promise.resolve(randomUUID());
|
|
24
|
+
}
|
|
25
|
+
async waitForRunningStatus(id) {
|
|
26
|
+
const flowDeployment = this.data.find((v) => v.id === id);
|
|
27
|
+
flowDeployment.actualStatus = 'running';
|
|
28
|
+
}
|
|
29
|
+
async updateStatus(id, desiredStatus) {
|
|
30
|
+
const deployment = await this.getOne(id);
|
|
31
|
+
deployment.desiredStatus = desiredStatus;
|
|
32
|
+
deployment.actualStatus = desiredStatus;
|
|
33
|
+
return Promise.resolve(deployment);
|
|
34
|
+
}
|
|
35
|
+
async resolveReferences(id, recursive, types) {
|
|
36
|
+
const depl = await this.getOne(id);
|
|
37
|
+
return depl.refs ?? [];
|
|
38
|
+
}
|
|
39
|
+
getDeploymentStatistics(id) {
|
|
40
|
+
return Promise.resolve({
|
|
41
|
+
totalErrorCount: 0,
|
|
42
|
+
errorCountWeek: 0,
|
|
43
|
+
eventCountWeek: 0,
|
|
44
|
+
errorCounts: [],
|
|
45
|
+
metrics: {
|
|
46
|
+
cpu: 0,
|
|
47
|
+
memory: 97931264,
|
|
48
|
+
ctime: 16770,
|
|
49
|
+
elapsed: 172850950,
|
|
50
|
+
timestamp: 1648199692625,
|
|
51
|
+
deploymentId: id,
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
getDeploymentMetrics(id, range, interval) {
|
|
56
|
+
return Promise.resolve({
|
|
57
|
+
metrics: [{ timestamp: Date.now(), cpu: 0, memory: Math.random() * 1000000 }],
|
|
58
|
+
stats: {
|
|
59
|
+
cpu: { count: 123, avg: 0, max: 0, min: 0, sum: 0 },
|
|
60
|
+
memory: { count: 123, avg: 0, max: 0, min: 0, sum: 0 },
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
async getDeploymentLogs(id) {
|
|
65
|
+
const depl = await this.getOne(id);
|
|
66
|
+
return Promise.resolve([
|
|
67
|
+
{
|
|
68
|
+
type: 'flow.log.info',
|
|
69
|
+
deploymentId: id,
|
|
70
|
+
subject: 'FlowApplication',
|
|
71
|
+
data: 'Flow Deployment is running',
|
|
72
|
+
'@timestamp': '2022-03-23T09:14:03.129Z',
|
|
73
|
+
eventId: 'c68b7674-b8da-46c5-85f0-8e4279d74a78',
|
|
74
|
+
datacontenttype: 'text/plain',
|
|
75
|
+
elementId: 'none',
|
|
76
|
+
time: '2022-03-23T09:14:03.129Z',
|
|
77
|
+
flowId: depl.flow,
|
|
78
|
+
},
|
|
79
|
+
]);
|
|
80
|
+
}
|
|
81
|
+
async addOne(dto) {
|
|
82
|
+
const flow = await this.api.flows.getFlowWithDiagram(dto.diagramId);
|
|
83
|
+
const refs = await this.getReferences(dto.properties);
|
|
84
|
+
const id = randomUUID();
|
|
85
|
+
const newDepl = {
|
|
86
|
+
actualStatus: 'generating queued',
|
|
87
|
+
artifact: undefined,
|
|
88
|
+
desiredStatus: 'running',
|
|
89
|
+
diagram: dto.diagramId,
|
|
90
|
+
flow: flow.id,
|
|
91
|
+
flowModel: { elements: [], connections: [], properties: dto.properties },
|
|
92
|
+
id,
|
|
93
|
+
name: dto.name,
|
|
94
|
+
readPermissions: [],
|
|
95
|
+
readWritePermissions: [],
|
|
96
|
+
target: 'executor',
|
|
97
|
+
refs,
|
|
98
|
+
};
|
|
99
|
+
await this.api.flows.updateOne(flow.id, { ...flow, deployments: [...flow.deployments, id] });
|
|
100
|
+
return super.addOne(newDepl);
|
|
101
|
+
}
|
|
102
|
+
async deleteOne(id) {
|
|
103
|
+
const depl = await this.getOne(id);
|
|
104
|
+
const flow = await this.api.flows.getOne(depl.flow);
|
|
105
|
+
const index = flow.deployments.findIndex((v) => v === id);
|
|
106
|
+
flow.deployments.splice(index, 1);
|
|
107
|
+
await this.api.flows.updateOne(flow.id, flow);
|
|
108
|
+
return super.deleteOne(id);
|
|
109
|
+
}
|
|
110
|
+
async getReferences(properties) {
|
|
111
|
+
// super simplified version of real resolver
|
|
112
|
+
return Promise.all(Object.keys(properties).map(async (prop) => {
|
|
113
|
+
if (prop !== 'assetId')
|
|
114
|
+
throw new Error('not implemented');
|
|
115
|
+
return { id: (await this.api.assets.getOne(properties[prop])).id, resourceType: 'asset' };
|
|
116
|
+
}));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const crypto_1 = require("crypto");
|
|
6
|
-
const data_mock_service_1 = require("./data.mock.service");
|
|
7
|
-
class FlowFunctionsMockService extends data_mock_service_1.DataMockService {
|
|
1
|
+
import { randomUUID } from 'crypto';
|
|
2
|
+
import { DataMockService } from './data.mock.service';
|
|
3
|
+
export class FlowFunctionsMockService extends DataMockService {
|
|
8
4
|
constructor(functions, revisions) {
|
|
9
5
|
super();
|
|
10
6
|
this.revisions = revisions;
|
|
11
7
|
this.data = functions;
|
|
12
8
|
}
|
|
13
9
|
addOne(dto) {
|
|
14
|
-
const id =
|
|
15
|
-
this.revisions.push(
|
|
10
|
+
const id = randomUUID();
|
|
11
|
+
this.revisions.push({ ...dto, id, originalId: dto.fqn });
|
|
16
12
|
return super.addOne(dto);
|
|
17
13
|
}
|
|
18
14
|
deleteOne(fqn) {
|
|
@@ -26,22 +22,18 @@ class FlowFunctionsMockService extends data_mock_service_1.DataMockService {
|
|
|
26
22
|
});
|
|
27
23
|
return Promise.resolve(undefined);
|
|
28
24
|
}
|
|
29
|
-
updateOne(fqn, dto) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return Promise.resolve(flowFunction);
|
|
35
|
-
});
|
|
25
|
+
async updateOne(fqn, dto) {
|
|
26
|
+
const index = this.data.findIndex((v) => v.fqn === fqn);
|
|
27
|
+
this.data.splice(index, 1);
|
|
28
|
+
const flowFunction = await this.addOne(dto);
|
|
29
|
+
return Promise.resolve(flowFunction);
|
|
36
30
|
}
|
|
37
31
|
getOne(fqn, options) {
|
|
38
32
|
const t = this.data.find((v) => v.fqn === fqn);
|
|
39
33
|
return Promise.resolve(t);
|
|
40
34
|
}
|
|
41
|
-
getOneById(id) {
|
|
42
|
-
return
|
|
43
|
-
return this.data.find((v) => v.id === id);
|
|
44
|
-
});
|
|
35
|
+
async getOneById(id) {
|
|
36
|
+
return this.data.find((v) => v.id === id);
|
|
45
37
|
}
|
|
46
38
|
getRevisions(fqn) {
|
|
47
39
|
const revisions = this.revisions.filter((revision) => revision.originalId === fqn);
|
|
@@ -62,4 +54,3 @@ class FlowFunctionsMockService extends data_mock_service_1.DataMockService {
|
|
|
62
54
|
return Promise.resolve(revisionId);
|
|
63
55
|
}
|
|
64
56
|
}
|
|
65
|
-
exports.FlowFunctionsMockService = FlowFunctionsMockService;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { DataMockService } from './data.mock.service';
|
|
2
|
+
export class FlowModulesMockService extends DataMockService {
|
|
3
|
+
constructor(modules) {
|
|
4
|
+
super();
|
|
5
|
+
this.data = modules;
|
|
6
|
+
}
|
|
7
|
+
async deleteArtifact(name, version) {
|
|
8
|
+
const module = await this.getOne(name);
|
|
9
|
+
const index = module.artifacts.findIndex((art) => art.version === version);
|
|
10
|
+
module.artifacts.splice(index, 1);
|
|
11
|
+
return Promise.resolve(module);
|
|
12
|
+
}
|
|
13
|
+
publish(form) {
|
|
14
|
+
return Promise.resolve(undefined);
|
|
15
|
+
}
|
|
16
|
+
getOne(name, options = {}) {
|
|
17
|
+
const t = this.data.find((v) => v.name === name);
|
|
18
|
+
return Promise.resolve(t);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { randomUUID } from 'crypto';
|
|
3
|
+
import { mix } from 'ts-mixer';
|
|
4
|
+
import { APIBaseMock } from './api-base.mock';
|
|
5
|
+
import { DataMockService } from './data.mock.service';
|
|
6
|
+
import { TrashMockService } from './trash.mock.service';
|
|
7
|
+
let BaseService = class BaseService extends APIBaseMock {
|
|
8
|
+
};
|
|
9
|
+
BaseService = __decorate([
|
|
10
|
+
mix(DataMockService, TrashMockService)
|
|
11
|
+
], BaseService);
|
|
12
|
+
export class FlowMockService extends BaseService {
|
|
13
|
+
constructor(flows, diagrams, revisions) {
|
|
14
|
+
super(flows);
|
|
15
|
+
this.diagrams = diagrams;
|
|
16
|
+
this.revisions = revisions;
|
|
17
|
+
}
|
|
18
|
+
deleteOne(id, force = false) {
|
|
19
|
+
const flow = this.data.find((v) => v.id === id);
|
|
20
|
+
if (!flow?.deletedAt && !force) {
|
|
21
|
+
// put flow in paper bin by setting deletedAt prop
|
|
22
|
+
flow.deletedAt = new Date().toISOString();
|
|
23
|
+
return Promise.resolve(flow);
|
|
24
|
+
}
|
|
25
|
+
this.revisions
|
|
26
|
+
.filter((revision) => revision.originalId === id)
|
|
27
|
+
.forEach((revision) => {
|
|
28
|
+
const index = this.revisions.indexOf(revision);
|
|
29
|
+
this.revisions.splice(index, 1);
|
|
30
|
+
});
|
|
31
|
+
return super.deleteOne(id);
|
|
32
|
+
}
|
|
33
|
+
addOne(dto) {
|
|
34
|
+
const id = randomUUID();
|
|
35
|
+
this.revisions.push({ ...dto, id, originalId: dto.id });
|
|
36
|
+
return super.addOne(dto);
|
|
37
|
+
}
|
|
38
|
+
async updateOne(id, dto) {
|
|
39
|
+
await super.deleteOne(id);
|
|
40
|
+
const flow = await this.addOne(dto);
|
|
41
|
+
return Promise.resolve(flow);
|
|
42
|
+
}
|
|
43
|
+
async isDeploymentOnLatestDiagramVersion(depl) {
|
|
44
|
+
const flowId = typeof depl.flow === 'string' ? depl.flow : depl.flow.id;
|
|
45
|
+
const diagramId = typeof depl.diagram === 'string' ? depl.diagram : depl.diagram.id;
|
|
46
|
+
const revisions = await this.getDiagramRevisions(flowId);
|
|
47
|
+
return revisions[revisions.length - 1].id === diagramId;
|
|
48
|
+
}
|
|
49
|
+
getDiagramRevisions(id) {
|
|
50
|
+
return Promise.resolve(this.diagrams.filter((v) => v.flow === id));
|
|
51
|
+
}
|
|
52
|
+
getFlowWithDiagram(diagramId) {
|
|
53
|
+
return Promise.resolve(this.data.find((v1) => v1.id === this.diagrams.find((v) => v.id === diagramId).flow));
|
|
54
|
+
}
|
|
55
|
+
async getMany(params) {
|
|
56
|
+
const flows = this.getItems(params, false);
|
|
57
|
+
return {
|
|
58
|
+
docs: flows.docs.map((v) => ({ ...v, diagram: this.diagrams.find((v1) => v1.id === v.diagram) })),
|
|
59
|
+
total: 0,
|
|
60
|
+
limit: 0,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
getRevisions(id) {
|
|
64
|
+
const revisions = this.revisions.filter((revision) => revision.originalId === id);
|
|
65
|
+
const page = {
|
|
66
|
+
docs: revisions,
|
|
67
|
+
limit: Number.MAX_SAFE_INTEGER,
|
|
68
|
+
total: revisions.length,
|
|
69
|
+
};
|
|
70
|
+
return Promise.resolve(page);
|
|
71
|
+
}
|
|
72
|
+
rollback(id, revisionId) {
|
|
73
|
+
const flow = this.revisions.find((revision) => revision.id === revisionId);
|
|
74
|
+
return Promise.resolve(flow);
|
|
75
|
+
}
|
|
76
|
+
deleteRevision(id, revisionId) {
|
|
77
|
+
const index = this.revisions.findIndex((revision) => revision.id === revisionId);
|
|
78
|
+
this.revisions.splice(index, 1);
|
|
79
|
+
return Promise.resolve(revisionId);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './api.mock';
|
|
2
|
+
export * from './asset.mock.service';
|
|
3
|
+
export * from './assetTypes.mock.service';
|
|
4
|
+
export * from './content.mock.service';
|
|
5
|
+
export * from './data.mock.service';
|
|
6
|
+
export * from './secret.mock.service';
|
|
7
|
+
export * from './timeseries.mock.service';
|
|
8
|
+
export * from './task.mock.service';
|
|
9
|
+
export * from './events.mock.service';
|
|
10
|
+
export * from './vault.mock.service';
|
|
11
|
+
export * from './notification.mock.service';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DataMockService } from './data.mock.service';
|
|
2
|
+
export class LabelMockService extends DataMockService {
|
|
3
|
+
constructor(labels) {
|
|
4
|
+
super();
|
|
5
|
+
this.data = labels;
|
|
6
|
+
}
|
|
7
|
+
count() {
|
|
8
|
+
return Promise.resolve(this.data.length);
|
|
9
|
+
}
|
|
10
|
+
getOneByName(name) {
|
|
11
|
+
return Promise.resolve(this.data.find((label) => label.name === name));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { mix } from 'ts-mixer';
|
|
3
|
+
import { APIBaseMock } from './api-base.mock';
|
|
4
|
+
import { DataMockService } from './data.mock.service';
|
|
5
|
+
import { TrashMockService } from './trash.mock.service';
|
|
6
|
+
let BaseService = class BaseService extends APIBaseMock {
|
|
7
|
+
};
|
|
8
|
+
BaseService = __decorate([
|
|
9
|
+
mix(DataMockService, TrashMockService)
|
|
10
|
+
], BaseService);
|
|
11
|
+
export class SecretMockService extends BaseService {
|
|
12
|
+
constructor(secrets) {
|
|
13
|
+
super(secrets);
|
|
14
|
+
}
|
|
15
|
+
deleteOne(contentId, force = false) {
|
|
16
|
+
const content = this.data.find((v) => v.id === contentId);
|
|
17
|
+
if (!content?.deletedAt && !force) {
|
|
18
|
+
// put content in paper bin by setting deletedAt prop
|
|
19
|
+
content.deletedAt = new Date().toISOString();
|
|
20
|
+
return Promise.resolve(content);
|
|
21
|
+
}
|
|
22
|
+
return super.deleteOne(contentId);
|
|
23
|
+
}
|
|
24
|
+
getMany(params) {
|
|
25
|
+
const page = this.getItems(params, false);
|
|
26
|
+
return Promise.resolve(page);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { mix } from 'ts-mixer';
|
|
3
|
+
import { APIBaseMock } from './api-base.mock';
|
|
4
|
+
import { DataMockService } from './data.mock.service';
|
|
5
|
+
import { TrashMockService } from './trash.mock.service';
|
|
6
|
+
let BaseService = class BaseService extends APIBaseMock {
|
|
7
|
+
};
|
|
8
|
+
BaseService = __decorate([
|
|
9
|
+
mix(DataMockService, TrashMockService)
|
|
10
|
+
], BaseService);
|
|
11
|
+
export class TaskMockService extends BaseService {
|
|
12
|
+
constructor(tasks) {
|
|
13
|
+
super(tasks);
|
|
14
|
+
}
|
|
15
|
+
async createTaskAttachedToAsset(dto) {
|
|
16
|
+
this.data.push(dto);
|
|
17
|
+
return Promise.resolve(dto);
|
|
18
|
+
}
|
|
19
|
+
deleteOne(taskId, force = false) {
|
|
20
|
+
const task = this.data.find((v) => v.id === taskId);
|
|
21
|
+
if (!task?.deletedAt && !force) {
|
|
22
|
+
// put content in paper bin by setting deletedAt prop
|
|
23
|
+
task.deletedAt = new Date().toISOString();
|
|
24
|
+
return Promise.resolve(task);
|
|
25
|
+
}
|
|
26
|
+
return super.deleteOne(taskId);
|
|
27
|
+
}
|
|
28
|
+
getMany(params) {
|
|
29
|
+
const page = this.getItems(params, false);
|
|
30
|
+
return Promise.resolve(page);
|
|
31
|
+
}
|
|
32
|
+
}
|