@hahnpro/hpc-api 6.0.0 → 2024.4.0-1
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/CHANGELOG.md +383 -0
- package/README.md +11 -0
- package/package.json +10 -27
- 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/{dist → src/lib}/http.service.d.ts +1 -1
- package/src/lib/http.service.js +184 -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}/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
|
@@ -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
|
+
}
|
|
@@ -1,24 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const data_mock_service_1 = require("./data.mock.service");
|
|
8
|
-
const trash_mock_service_1 = require("./trash.mock.service");
|
|
9
|
-
let BaseService = class BaseService extends api_base_mock_1.APIBaseMock {
|
|
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 {
|
|
10
7
|
};
|
|
11
|
-
BaseService =
|
|
12
|
-
|
|
8
|
+
BaseService = __decorate([
|
|
9
|
+
mix(DataMockService, TrashMockService)
|
|
13
10
|
], BaseService);
|
|
14
|
-
class TimeseriesMockService extends BaseService {
|
|
11
|
+
export class TimeseriesMockService extends BaseService {
|
|
15
12
|
constructor(timeseries, timeseriesValues) {
|
|
16
|
-
const data = timeseries.map((value, index) => (
|
|
13
|
+
const data = timeseries.map((value, index) => ({ ...value, data: timeseriesValues[index] }));
|
|
17
14
|
super(data);
|
|
18
15
|
}
|
|
19
16
|
deleteOne(tsmId, force = false) {
|
|
20
17
|
const tsm = this.data.find((v) => v.id === tsmId);
|
|
21
|
-
if (!
|
|
18
|
+
if (!tsm?.deletedAt && !force) {
|
|
19
|
+
// put tsm in paper bin by setting deletedAt prop
|
|
22
20
|
tsm.deletedAt = new Date().toISOString();
|
|
23
21
|
return Promise.resolve(tsm);
|
|
24
22
|
}
|
|
@@ -32,7 +30,7 @@ class TimeseriesMockService extends BaseService {
|
|
|
32
30
|
const ts = this.data.find((v) => v.assetRef === assetId);
|
|
33
31
|
const data = Object.entries(values).map(([timestamp, value]) => {
|
|
34
32
|
if (value !== null && typeof value === 'object') {
|
|
35
|
-
return
|
|
33
|
+
return { timestamp, ...value };
|
|
36
34
|
}
|
|
37
35
|
else {
|
|
38
36
|
return { timestamp, value };
|
|
@@ -63,7 +61,7 @@ class TimeseriesMockService extends BaseService {
|
|
|
63
61
|
for (const [tsName, values] of Object.entries(timeSeries)) {
|
|
64
62
|
const data = Object.entries(values).map(([timestamp, value]) => {
|
|
65
63
|
if (value !== null && typeof value === 'object') {
|
|
66
|
-
return
|
|
64
|
+
return { timestamp, ...value };
|
|
67
65
|
}
|
|
68
66
|
else {
|
|
69
67
|
return { timestamp, value };
|
|
@@ -92,20 +90,19 @@ class TimeseriesMockService extends BaseService {
|
|
|
92
90
|
}
|
|
93
91
|
return Promise.resolve(psr);
|
|
94
92
|
}
|
|
95
|
-
addValue(id, value) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
ts.data.push(Object.assign({ timestamp }, v));
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
ts.data.push({ timestamp: parseInt(timestamp, 10), value: v });
|
|
104
|
-
}
|
|
93
|
+
async addValue(id, value) {
|
|
94
|
+
const ts = await this.getOne(id, {});
|
|
95
|
+
for (const [timestamp, v] of Object.entries(value)) {
|
|
96
|
+
if (v !== null && typeof v === 'object') {
|
|
97
|
+
ts.data.push({ timestamp, ...v });
|
|
105
98
|
}
|
|
106
|
-
|
|
99
|
+
else {
|
|
100
|
+
ts.data.push({ timestamp: parseInt(timestamp, 10), value: v });
|
|
101
|
+
}
|
|
102
|
+
}
|
|
107
103
|
}
|
|
108
104
|
getManyByAsset(assetId, names) {
|
|
105
|
+
// get timeseries where assetRef is assetId
|
|
109
106
|
const page = { docs: [], limit: 10, total: 0 };
|
|
110
107
|
for (const datum of this.data) {
|
|
111
108
|
if (datum.assetRef === assetId) {
|
|
@@ -118,30 +115,24 @@ class TimeseriesMockService extends BaseService {
|
|
|
118
115
|
page.total = page.docs.length;
|
|
119
116
|
return Promise.resolve(page);
|
|
120
117
|
}
|
|
121
|
-
getMostRecentValue(id, before) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
return datum;
|
|
127
|
-
}
|
|
118
|
+
async getMostRecentValue(id, before) {
|
|
119
|
+
const ts = await this.getOne(id, {});
|
|
120
|
+
for (const datum of ts.data) {
|
|
121
|
+
if (datum.timestamp < before.valueOf()) {
|
|
122
|
+
return datum;
|
|
128
123
|
}
|
|
129
|
-
}
|
|
124
|
+
}
|
|
125
|
+
return null;
|
|
130
126
|
}
|
|
131
|
-
getValues(id, from, limit, group) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
return timeSeriesValues;
|
|
138
|
-
});
|
|
127
|
+
async getValues(id, from, limit, group) {
|
|
128
|
+
let timeSeriesValues = await this.getValuesOfPeriod(id, from, new Date().valueOf(), group);
|
|
129
|
+
if (limit) {
|
|
130
|
+
timeSeriesValues = timeSeriesValues.slice(0, limit);
|
|
131
|
+
}
|
|
132
|
+
return timeSeriesValues;
|
|
139
133
|
}
|
|
140
|
-
getValuesOfPeriod(id, from, to, group) {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
return ts.data.filter((v) => v.timestamp < to && v.timestamp > from);
|
|
144
|
-
});
|
|
134
|
+
async getValuesOfPeriod(id, from, to, group) {
|
|
135
|
+
const ts = await this.getOne(id, {});
|
|
136
|
+
return ts.data.filter((v) => v.timestamp < to && v.timestamp > from);
|
|
145
137
|
}
|
|
146
138
|
}
|
|
147
|
-
exports.TimeseriesMockService = TimeseriesMockService;
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.TrashMockService = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const trash_service_1 = require("../trash.service");
|
|
6
|
-
class TrashMockService extends trash_service_1.TrashService {
|
|
1
|
+
import { TrashService } from '../trash.service';
|
|
2
|
+
export class TrashMockService extends TrashService {
|
|
7
3
|
constructor() {
|
|
8
4
|
super(null, null);
|
|
9
5
|
this.data = [];
|
|
@@ -20,14 +16,12 @@ class TrashMockService extends trash_service_1.TrashService {
|
|
|
20
16
|
delete deleted['deletedAt'];
|
|
21
17
|
return Promise.resolve(deleted);
|
|
22
18
|
}
|
|
23
|
-
emptyTrash(offset) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
return Promise.resolve({ acknowledged: true, deletedCount: trashIds.length });
|
|
30
|
-
});
|
|
19
|
+
async emptyTrash(offset) {
|
|
20
|
+
const dateOffsSeconds = Math.round(new Date().getTime() / 1000) - offset;
|
|
21
|
+
const date = new Date(dateOffsSeconds * 1000);
|
|
22
|
+
const trashIds = this.data.filter((v) => new Date(v['deletedAt']) < date).map((v) => v.id);
|
|
23
|
+
this.data = this.data.filter((item) => !trashIds.includes(item.id));
|
|
24
|
+
return Promise.resolve({ acknowledged: true, deletedCount: trashIds.length });
|
|
31
25
|
}
|
|
32
26
|
getTrash(params) {
|
|
33
27
|
const page = this.getItems(params, true);
|
|
@@ -43,4 +37,3 @@ class TrashMockService extends trash_service_1.TrashService {
|
|
|
43
37
|
return page;
|
|
44
38
|
}
|
|
45
39
|
}
|
|
46
|
-
exports.TrashMockService = TrashMockService;
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.VaultMockService = void 0;
|
|
4
|
-
const data_mock_service_1 = require("./data.mock.service");
|
|
5
|
-
class VaultMockService extends data_mock_service_1.DataMockService {
|
|
1
|
+
import { DataMockService } from './data.mock.service';
|
|
2
|
+
export class VaultMockService extends DataMockService {
|
|
6
3
|
constructor(secrets) {
|
|
7
4
|
super();
|
|
8
5
|
this.data = secrets;
|
|
@@ -15,4 +12,3 @@ class VaultMockService extends data_mock_service_1.DataMockService {
|
|
|
15
12
|
return Promise.resolve(vaultSecret.secret);
|
|
16
13
|
}
|
|
17
14
|
}
|
|
18
|
-
exports.VaultMockService = VaultMockService;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ProxyService = void 0;
|
|
4
|
-
class ProxyService {
|
|
1
|
+
export class ProxyService {
|
|
5
2
|
constructor(httpClient) {
|
|
6
3
|
this.httpClient = httpClient;
|
|
7
4
|
this.delete = (proxyId, path, config) => this.httpClient.delete(this.url(proxyId, path), config);
|
|
@@ -14,4 +11,3 @@ class ProxyService {
|
|
|
14
11
|
return `/proxy/${proxyId}${path}`;
|
|
15
12
|
}
|
|
16
13
|
}
|
|
17
|
-
exports.ProxyService = ProxyService;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { mix } from 'ts-mixer';
|
|
3
|
+
import { APIBase } from './api-base';
|
|
4
|
+
import { DataService } from './data.service';
|
|
5
|
+
import { TrashService } from './trash.service';
|
|
6
|
+
let BaseService = class BaseService extends APIBase {
|
|
7
|
+
};
|
|
8
|
+
BaseService = __decorate([
|
|
9
|
+
mix(DataService, TrashService)
|
|
10
|
+
], BaseService);
|
|
11
|
+
export class SecretService extends BaseService {
|
|
12
|
+
constructor(httpClient) {
|
|
13
|
+
super(httpClient, '/secrets');
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { mix } from 'ts-mixer';
|
|
3
|
+
import { APIBase } from './api-base';
|
|
4
|
+
import { DataService } from './data.service';
|
|
5
|
+
import { TrashService } from './trash.service';
|
|
6
|
+
let BaseService = class BaseService extends APIBase {
|
|
7
|
+
};
|
|
8
|
+
BaseService = __decorate([
|
|
9
|
+
mix(DataService, TrashService)
|
|
10
|
+
], BaseService);
|
|
11
|
+
export class TaskService extends BaseService {
|
|
12
|
+
constructor(httpClient) {
|
|
13
|
+
super(httpClient, '/tasks');
|
|
14
|
+
}
|
|
15
|
+
// we may not need this method (already have the addOne method from DataService)
|
|
16
|
+
createTaskAttachedToAsset(dto, options = {}) {
|
|
17
|
+
return this.httpClient.post(this.basePath, dto, options);
|
|
18
|
+
}
|
|
19
|
+
}
|