@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.
Files changed (180) hide show
  1. package/CHANGELOG.md +383 -0
  2. package/README.md +11 -0
  3. package/package.json +10 -27
  4. package/src/index.d.ts +20 -0
  5. package/src/index.js +20 -0
  6. package/{dist → src/lib}/Queue.js +2 -7
  7. package/src/lib/api-base.js +6 -0
  8. package/src/lib/api.js +60 -0
  9. package/src/lib/asset.interface.js +1 -0
  10. package/{dist → src/lib}/asset.service.js +21 -17
  11. package/src/lib/assettypes.service.js +24 -0
  12. package/{dist → src/lib}/content.interface.js +2 -5
  13. package/src/lib/content.service.js +49 -0
  14. package/src/lib/data.interface.js +3 -0
  15. package/{dist → src/lib}/data.service.js +18 -11
  16. package/src/lib/endpoint.interface.js +1 -0
  17. package/{dist → src/lib}/endpoint.service.d.ts +2 -2
  18. package/{dist → src/lib}/endpoint.service.js +2 -6
  19. package/src/lib/events.interface.js +1 -0
  20. package/src/lib/events.service.js +9 -0
  21. package/src/lib/flow-deployment.interface.js +1 -0
  22. package/src/lib/flow-deployment.service.js +68 -0
  23. package/src/lib/flow-function.interface.js +1 -0
  24. package/{dist → src/lib}/flow-function.service.js +3 -6
  25. package/src/lib/flow-module.interface.js +1 -0
  26. package/{dist → src/lib}/flow-module.service.js +8 -7
  27. package/src/lib/flow.interface.js +1 -0
  28. package/{dist → src/lib}/flow.service.js +15 -20
  29. package/{dist → src/lib}/http.service.d.ts +1 -1
  30. package/src/lib/http.service.js +184 -0
  31. package/src/lib/label.interface.js +1 -0
  32. package/{dist → src/lib}/label.service.js +2 -6
  33. package/src/lib/mock/api-base.mock.js +7 -0
  34. package/src/lib/mock/api.mock.js +199 -0
  35. package/{dist → src/lib}/mock/asset.mock.service.js +30 -41
  36. package/{dist → src/lib}/mock/assetTypes.mock.service.js +19 -27
  37. package/{dist → src/lib}/mock/content.mock.service.js +21 -24
  38. package/src/lib/mock/data.mock.service.js +93 -0
  39. package/{dist → src/lib}/mock/endpoint.mock.service.js +2 -6
  40. package/src/lib/mock/events.mock.service.js +10 -0
  41. package/src/lib/mock/flow-deployment.mock.service.js +118 -0
  42. package/{dist → src/lib}/mock/flow-functions.mock.service.js +12 -21
  43. package/src/lib/mock/flow-modules.mock.service.js +20 -0
  44. package/src/lib/mock/flow.mock.service.js +81 -0
  45. package/src/lib/mock/index.js +11 -0
  46. package/src/lib/mock/label.mock.service.js +13 -0
  47. package/src/lib/mock/notification.mock.service.js +7 -0
  48. package/src/lib/mock/secret.mock.service.js +28 -0
  49. package/src/lib/mock/task.mock.service.js +32 -0
  50. package/{dist → src/lib}/mock/timeseries.mock.service.js +40 -49
  51. package/{dist → src/lib}/mock/trash.mock.service.js +8 -15
  52. package/src/lib/mock/user.mock.service.js +10 -0
  53. package/{dist → src/lib}/mock/vault.mock.service.js +2 -6
  54. package/src/lib/notification.interface.js +1 -0
  55. package/src/lib/notification.service.js +6 -0
  56. package/{dist → src/lib}/proxy.service.js +1 -5
  57. package/src/lib/resource.interface.js +1 -0
  58. package/src/lib/schema.interface.js +1 -0
  59. package/src/lib/secret.interface.js +1 -0
  60. package/src/lib/secret.service.js +15 -0
  61. package/src/lib/storage.interface.js +1 -0
  62. package/src/lib/task.interface.js +1 -0
  63. package/src/lib/task.service.js +19 -0
  64. package/src/lib/timeseries.interface.js +1 -0
  65. package/src/lib/timeseries.service.js +92 -0
  66. package/{dist → src/lib}/token-set.js +3 -7
  67. package/{dist → src/lib}/trash.service.js +2 -6
  68. package/src/lib/user-settings.interface.js +1 -0
  69. package/src/lib/user.service.js +26 -0
  70. package/src/lib/vault.interface.js +1 -0
  71. package/src/lib/vault.service.js +10 -0
  72. package/LICENSE +0 -21
  73. package/dist/api-base.js +0 -10
  74. package/dist/api.js +0 -62
  75. package/dist/asset.interface.js +0 -2
  76. package/dist/assettypes.service.js +0 -28
  77. package/dist/content.service.js +0 -50
  78. package/dist/data.interface.js +0 -6
  79. package/dist/endpoint.interface.js +0 -2
  80. package/dist/events.interface.js +0 -2
  81. package/dist/events.service.js +0 -13
  82. package/dist/flow-deployment.interface.js +0 -2
  83. package/dist/flow-deployment.service.js +0 -74
  84. package/dist/flow-function.interface.js +0 -2
  85. package/dist/flow-module.interface.js +0 -2
  86. package/dist/flow.interface.js +0 -2
  87. package/dist/http.service.js +0 -182
  88. package/dist/index.d.ts +0 -20
  89. package/dist/index.js +0 -23
  90. package/dist/label.interface.js +0 -2
  91. package/dist/mock/api-base.mock.js +0 -11
  92. package/dist/mock/api.mock.js +0 -128
  93. package/dist/mock/data.mock.service.js +0 -96
  94. package/dist/mock/events.mock.service.js +0 -14
  95. package/dist/mock/flow-deployment.mock.service.js +0 -142
  96. package/dist/mock/flow-modules.mock.service.js +0 -27
  97. package/dist/mock/flow.mock.service.js +0 -93
  98. package/dist/mock/index.js +0 -14
  99. package/dist/mock/label.mock.service.js +0 -17
  100. package/dist/mock/notification.mock.service.js +0 -11
  101. package/dist/mock/secret.mock.service.js +0 -31
  102. package/dist/mock/task.mock.service.js +0 -37
  103. package/dist/mock/user.mock.service.js +0 -14
  104. package/dist/notification.interface.js +0 -2
  105. package/dist/notification.service.js +0 -10
  106. package/dist/resource.interface.js +0 -2
  107. package/dist/schema.interface.js +0 -2
  108. package/dist/secret.interface.js +0 -2
  109. package/dist/secret.service.js +0 -19
  110. package/dist/storage.interface.js +0 -2
  111. package/dist/task.interface.js +0 -2
  112. package/dist/task.service.js +0 -22
  113. package/dist/timeseries.interface.js +0 -2
  114. package/dist/timeseries.service.js +0 -56
  115. package/dist/user-settings.interface.js +0 -2
  116. package/dist/user.service.js +0 -33
  117. package/dist/vault.interface.js +0 -2
  118. package/dist/vault.service.js +0 -14
  119. package/{dist → src/lib}/Queue.d.ts +0 -0
  120. package/{dist → src/lib}/api-base.d.ts +0 -0
  121. package/{dist → src/lib}/api.d.ts +6 -6
  122. package/{dist → src/lib}/asset.interface.d.ts +0 -0
  123. package/{dist → src/lib}/asset.service.d.ts +0 -0
  124. package/{dist → src/lib}/assettypes.service.d.ts +0 -0
  125. package/{dist → src/lib}/content.interface.d.ts +0 -0
  126. package/{dist → src/lib}/content.service.d.ts +1 -1
  127. package/{dist → src/lib}/data.interface.d.ts +0 -0
  128. package/{dist → src/lib}/data.service.d.ts +0 -0
  129. package/{dist → src/lib}/endpoint.interface.d.ts +0 -0
  130. package/{dist → src/lib}/events.interface.d.ts +0 -0
  131. package/{dist → src/lib}/events.service.d.ts +0 -0
  132. package/{dist → src/lib}/flow-deployment.interface.d.ts +1 -1
  133. package/{dist → src/lib}/flow-deployment.service.d.ts +0 -0
  134. package/{dist → src/lib}/flow-function.interface.d.ts +0 -0
  135. package/{dist → src/lib}/flow-function.service.d.ts +1 -1
  136. package/{dist → src/lib}/flow-module.interface.d.ts +0 -0
  137. package/{dist → src/lib}/flow-module.service.d.ts +1 -1
  138. package/{dist → src/lib}/flow.interface.d.ts +1 -1
  139. package/{dist → src/lib}/flow.service.d.ts +1 -1
  140. package/{dist → src/lib}/label.interface.d.ts +0 -0
  141. package/{dist → src/lib}/label.service.d.ts +0 -0
  142. package/{dist → src/lib}/mock/api-base.mock.d.ts +0 -0
  143. package/{dist → src/lib}/mock/api.mock.d.ts +18 -18
  144. package/{dist → src/lib}/mock/asset.mock.service.d.ts +1 -1
  145. package/{dist → src/lib}/mock/assetTypes.mock.service.d.ts +0 -0
  146. package/{dist → src/lib}/mock/content.mock.service.d.ts +1 -1
  147. package/{dist → src/lib}/mock/data.mock.service.d.ts +0 -0
  148. package/{dist → src/lib}/mock/endpoint.mock.service.d.ts +0 -0
  149. package/{dist → src/lib}/mock/events.mock.service.d.ts +0 -0
  150. package/{dist → src/lib}/mock/flow-deployment.mock.service.d.ts +2 -2
  151. package/{dist → src/lib}/mock/flow-functions.mock.service.d.ts +1 -1
  152. package/{dist → src/lib}/mock/flow-modules.mock.service.d.ts +2 -2
  153. package/{dist → src/lib}/mock/flow.mock.service.d.ts +1 -1
  154. package/{dist → src/lib}/mock/index.d.ts +0 -0
  155. package/{dist → src/lib}/mock/label.mock.service.d.ts +1 -1
  156. package/{dist → src/lib}/mock/notification.mock.service.d.ts +1 -1
  157. package/{dist → src/lib}/mock/secret.mock.service.d.ts +1 -1
  158. package/{dist → src/lib}/mock/task.mock.service.d.ts +0 -0
  159. package/{dist → src/lib}/mock/timeseries.mock.service.d.ts +0 -0
  160. package/{dist → src/lib}/mock/trash.mock.service.d.ts +1 -1
  161. package/{dist → src/lib}/mock/user.mock.service.d.ts +0 -0
  162. package/{dist → src/lib}/mock/vault.mock.service.d.ts +1 -1
  163. package/{dist → src/lib}/notification.interface.d.ts +0 -0
  164. package/{dist → src/lib}/notification.service.d.ts +1 -1
  165. package/{dist → src/lib}/proxy.service.d.ts +0 -0
  166. package/{dist → src/lib}/resource.interface.d.ts +0 -0
  167. package/{dist → src/lib}/schema.interface.d.ts +0 -0
  168. package/{dist → src/lib}/secret.interface.d.ts +0 -0
  169. package/{dist → src/lib}/secret.service.d.ts +0 -0
  170. package/{dist → src/lib}/storage.interface.d.ts +0 -0
  171. package/{dist → src/lib}/task.interface.d.ts +0 -0
  172. package/{dist → src/lib}/task.service.d.ts +0 -0
  173. package/{dist → src/lib}/timeseries.interface.d.ts +0 -0
  174. package/{dist → src/lib}/timeseries.service.d.ts +0 -0
  175. package/{dist → src/lib}/token-set.d.ts +0 -0
  176. package/{dist → src/lib}/trash.service.d.ts +0 -0
  177. package/{dist → src/lib}/user-settings.interface.d.ts +0 -0
  178. package/{dist → src/lib}/user.service.d.ts +0 -0
  179. package/{dist → src/lib}/vault.interface.d.ts +0 -0
  180. package/{dist → src/lib}/vault.service.d.ts +1 -1
@@ -0,0 +1,199 @@
1
+ import { randomUUID } from 'crypto';
2
+ import { readFileSync } from 'fs';
3
+ import { join } from 'path';
4
+ import { AssetMockService } from './asset.mock.service';
5
+ import { AssetTypesMockService } from './assetTypes.mock.service';
6
+ import { ContentMockService } from './content.mock.service';
7
+ import { EndpointMockService } from './endpoint.mock.service';
8
+ import { EventsMockService } from './events.mock.service';
9
+ import { FlowDeploymentMockService } from './flow-deployment.mock.service';
10
+ import { FlowFunctionsMockService } from './flow-functions.mock.service';
11
+ import { FlowModulesMockService } from './flow-modules.mock.service';
12
+ import { FlowMockService } from './flow.mock.service';
13
+ import { LabelMockService } from './label.mock.service';
14
+ import { NotificationMockService } from './notification.mock.service';
15
+ import { SecretMockService } from './secret.mock.service';
16
+ import { TaskMockService } from './task.mock.service';
17
+ import { TimeseriesMockService } from './timeseries.mock.service';
18
+ import { UserMockService } from './user.mock.service';
19
+ import { VaultMockService } from './vault.mock.service';
20
+ export class MockAPI {
21
+ constructor(initData) {
22
+ this.httpClient = null;
23
+ this.proxy = null;
24
+ const { assets = [], assetRevisions = [], contents = [], endpoints = [], secrets = [], timeSeries = [], tasks = [], events = [], users, flows = [], flowRevisions = [], deployments = [], functions = [], functionRevisions = [], modules = [], diagrams = [], labels = [], vault = [], notifications = [], } = initData;
25
+ // convert init data to normal data that the services usually use
26
+ const assetTypes = assets
27
+ .map((v) => v.type)
28
+ .map((v) => {
29
+ return typeof v === 'string'
30
+ ? v
31
+ : {
32
+ ...v,
33
+ readPermissions: v.readPermissions || [],
34
+ readWritePermissions: v.readWritePermissions || [],
35
+ typeSchema: v.typeSchema ?? {},
36
+ uiSchema: v.uiSchema ?? {},
37
+ };
38
+ });
39
+ const assets1 = assets.map((v, index) => ({
40
+ ...v,
41
+ readPermissions: v.readPermissions ?? [],
42
+ readWritePermissions: v.readWritePermissions ?? [],
43
+ type: assetTypes[index],
44
+ }));
45
+ const assetRevisions1 = assetRevisions.map((v, index) => ({
46
+ ...v,
47
+ readPermissions: v.readPermissions ?? [],
48
+ readWritePermissions: v.readWritePermissions ?? [],
49
+ type: assetTypes[index],
50
+ }));
51
+ const contents1 = contents.map((v) => ({
52
+ ...v,
53
+ readPermissions: v.readPermissions ?? [],
54
+ readWritePermissions: v.readWritePermissions ?? [],
55
+ size: v.size ?? 0,
56
+ fileId: v.fileId ?? '',
57
+ mimetype: v.mimetype ?? '',
58
+ }));
59
+ const contentData = contents.map((v) => (v.data ? v.data : readFileSync(join(v.filePath, v.filename))));
60
+ const secrets1 = secrets.map((v) => ({
61
+ ...v,
62
+ readPermissions: v.readPermissions ?? [],
63
+ readWritePermissions: v.readWritePermissions ?? [],
64
+ }));
65
+ const timeSeries1 = timeSeries.map((v) => ({
66
+ ...v,
67
+ description: v.description ?? '',
68
+ readPermissions: v.readPermissions ?? [],
69
+ readWritePermissions: v.readWritePermissions ?? [],
70
+ maxBucketTimeRange: v.maxBucketTimeRange ?? 0,
71
+ maxDate: v.maxDate,
72
+ minDate: v.minDate,
73
+ autoDelData: v.autoDelData ?? new Date(),
74
+ autoDelBucket: v.autoDelBucket ?? new Date(),
75
+ }));
76
+ const timeSeriesValues = timeSeries.map((v) => v.values);
77
+ const endpoint1 = endpoints.map((v) => ({
78
+ ...v,
79
+ status: v.status,
80
+ config: v.config,
81
+ notificationCheckInterval: v.notificationCheckInterval,
82
+ notificationPauseInterval: v.notificationPauseInterval,
83
+ nbOfNotificationsBetweenPauseInterval: v.nbOfNotificationsBetweenPauseInterval,
84
+ readPermissions: v.readPermissions ?? [],
85
+ readWritePermissions: v.readWritePermissions ?? [],
86
+ }));
87
+ // TODO: ...
88
+ const tasks1 = tasks.map((v) => ({
89
+ ...v,
90
+ id: v.id,
91
+ readPermissions: v.readPermissions ?? [],
92
+ readWritePermissions: v.readWritePermissions ?? [],
93
+ subTasks: v.subTasks ?? [],
94
+ }));
95
+ const events1 = events.map((v) => ({
96
+ ...v,
97
+ readPermissions: v.readPermissions ?? [],
98
+ readWritePermissions: v.readWritePermissions ?? [],
99
+ cause: v.cause,
100
+ level: v.level,
101
+ }));
102
+ const diagrams1 = diagrams.map((v) => ({
103
+ ...v,
104
+ json: v.json ?? '',
105
+ author: 'nobody',
106
+ }));
107
+ const flows1 = flows.map((v) => ({
108
+ ...v,
109
+ readPermissions: v.readPermissions ?? [],
110
+ readWritePermissions: v.readWritePermissions ?? [],
111
+ diagram: diagrams.find((v1) => v1.flow === v.id).id,
112
+ name: `flow-${v.id}`,
113
+ deployments: v.deployments ?? [],
114
+ }));
115
+ const flowRevisions1 = flowRevisions.map((v) => ({
116
+ ...v,
117
+ readPermissions: v.readPermissions ?? [],
118
+ readWritePermissions: v.readWritePermissions ?? [],
119
+ diagram: diagrams.find((v1) => v1.flow === v.originalId).id,
120
+ name: `flow-${v.id}`,
121
+ deployments: v.deployments ?? [],
122
+ }));
123
+ const deployments1 = deployments.map((v) => ({
124
+ ...v,
125
+ readPermissions: v.readPermissions ?? [],
126
+ readWritePermissions: v.readWritePermissions ?? [],
127
+ diagram: v.diagram ?? '',
128
+ artifact: v.artifact ?? null,
129
+ flowModel: v.flowModel ?? { connections: [], elements: [] },
130
+ desiredStatus: 'running',
131
+ actualStatus: 'generating queued',
132
+ target: 'executor',
133
+ name: `deployment-${v.id}`,
134
+ }));
135
+ const functions1 = functions.map((v) => ({
136
+ ...v,
137
+ category: 'task',
138
+ readPermissions: v.readPermissions ?? [],
139
+ readWritePermissions: v.readWritePermissions ?? [],
140
+ author: 'nobody',
141
+ }));
142
+ const functionRevisions1 = functionRevisions.map((v) => ({
143
+ ...v,
144
+ category: 'task',
145
+ readPermissions: v.readPermissions ?? [],
146
+ readWritePermissions: v.readWritePermissions ?? [],
147
+ author: 'nobody',
148
+ }));
149
+ const modules1 = modules.map((v, index) => ({
150
+ ...v,
151
+ artifacts: modules[index].artifacts.map((art) => ({
152
+ ...art,
153
+ version: '0.0.0',
154
+ id: randomUUID(),
155
+ mimetype: '',
156
+ size: 0,
157
+ createdAt: '' + Date.now(),
158
+ })) ?? [],
159
+ author: 'nobody',
160
+ functions: v.functions ?? [],
161
+ readPermissions: v.readPermissions ?? [],
162
+ readWritePermissions: v.readWritePermissions ?? [],
163
+ }));
164
+ const labels1 = labels.map((v) => ({
165
+ ...v,
166
+ color: v.color ?? '',
167
+ description: v.description ?? '',
168
+ readPermissions: v.readPermissions ?? [],
169
+ readWritePermissions: v.readWritePermissions ?? [],
170
+ }));
171
+ const vaultSecrets1 = vault.map((v) => ({
172
+ ...v,
173
+ readPermissions: v.readPermissions ?? [],
174
+ readWritePermissions: v.readWritePermissions ?? [],
175
+ }));
176
+ const notifications1 = notifications.map((v) => ({
177
+ ...v,
178
+ link: v.link ?? '',
179
+ description: v.description ?? '',
180
+ read: v.read ?? false,
181
+ }));
182
+ this.assets = new AssetMockService(this, assets1, assetRevisions1);
183
+ this.assetTypes = new AssetTypesMockService(assetTypes, []);
184
+ this.contents = new ContentMockService(contents1, contentData);
185
+ this.endpoints = new EndpointMockService(endpoint1);
186
+ this.secrets = new SecretMockService(secrets1);
187
+ this.timeSeries = new TimeseriesMockService(timeSeries1, timeSeriesValues);
188
+ this.tasks = new TaskMockService(tasks1);
189
+ this.events = new EventsMockService(events1);
190
+ this.users = new UserMockService(users);
191
+ this.flows = new FlowMockService(flows1, diagrams1, flowRevisions1);
192
+ this.flowDeployments = new FlowDeploymentMockService(deployments1, this);
193
+ this.flowFunctions = new FlowFunctionsMockService(functions1, functionRevisions1);
194
+ this.flowModules = new FlowModulesMockService(modules1);
195
+ this.labels = new LabelMockService(labels1);
196
+ this.vault = new VaultMockService(vaultSecrets1);
197
+ this.notifications = new NotificationMockService(notifications1);
198
+ }
199
+ }
@@ -1,17 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AssetMockService = void 0;
4
- const tslib_1 = require("tslib");
5
- const ts_mixer_1 = require("ts-mixer");
6
- const api_base_mock_1 = require("./api-base.mock");
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 = tslib_1.__decorate([
12
- (0, ts_mixer_1.mix)(data_mock_service_1.DataMockService, trash_mock_service_1.TrashMockService)
8
+ BaseService = __decorate([
9
+ mix(DataMockService, TrashMockService)
13
10
  ], BaseService);
14
- class AssetMockService extends BaseService {
11
+ export class AssetMockService extends BaseService {
15
12
  constructor(api, assets, revisions) {
16
13
  super(assets);
17
14
  this.api = api;
@@ -27,12 +24,13 @@ class AssetMockService extends BaseService {
27
24
  return page;
28
25
  }
29
26
  addOne(dto) {
30
- this.revisions.push(Object.assign(Object.assign({}, dto), { originalId: dto.id }));
27
+ this.revisions.push({ ...dto, originalId: dto.id });
31
28
  return super.addOne(dto);
32
29
  }
33
30
  deleteOne(assetId, force = false) {
34
31
  const asset = this.data.find((v) => v.id === assetId);
35
- if (!(asset === null || asset === void 0 ? void 0 : asset.deletedAt) && !force) {
32
+ if (!asset?.deletedAt && !force) {
33
+ // put asset in paper bin by setting deletedAt prop
36
34
  asset.deletedAt = new Date().toISOString();
37
35
  return Promise.resolve(asset);
38
36
  }
@@ -48,42 +46,34 @@ class AssetMockService extends BaseService {
48
46
  const page = this.getAssets(params, false);
49
47
  return Promise.resolve(page);
50
48
  }
51
- updateOne(assetId, dto) {
52
- const _super = Object.create(null, {
53
- deleteOne: { get: () => super.deleteOne }
54
- });
55
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
56
- yield _super.deleteOne.call(this, assetId);
57
- const asset = yield this.addOne(dto);
58
- return Promise.resolve(asset);
59
- });
49
+ async updateOne(assetId, dto) {
50
+ await super.deleteOne(assetId);
51
+ const asset = await this.addOne(dto);
52
+ return Promise.resolve(asset);
60
53
  }
61
- addAttachment(id, form) {
62
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
63
- const asset = this.data.find((v) => v.id === id);
64
- const content = yield this.api.contents.upload(form);
65
- asset.attachments.push(content.id);
66
- return Promise.resolve(asset);
67
- });
54
+ async addAttachment(id, form) {
55
+ const asset = this.data.find((v) => v.id === id);
56
+ const content = await this.api.contents.upload(form);
57
+ asset.attachments.push(content.id);
58
+ return Promise.resolve(asset);
68
59
  }
69
- getAttachments(assetId) {
70
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
71
- const contents = yield this.api.contents.getMany();
72
- const docs = contents.docs.filter((c) => { var _a, _b; return (_b = (_a = c.assets) === null || _a === void 0 ? void 0 : _a.includes) === null || _b === void 0 ? void 0 : _b.call(_a, assetId); });
73
- return { docs, total: docs.length, limit: 0 };
74
- });
60
+ async getAttachments(assetId) {
61
+ const contents = await this.api.contents.getMany();
62
+ const docs = contents.docs.filter((c) => c.assets?.includes?.(assetId));
63
+ return { docs, total: docs.length, limit: 0 };
75
64
  }
76
65
  getChildren(assetId, params = {}) {
77
66
  return this.getManyFiltered({ parent: assetId }, params);
78
67
  }
79
68
  getEventLevelOverride(ids, causes) {
80
69
  const eventCausesAssets = this.data.filter((v) => v.name.startsWith('hpc-event-causes-'));
81
- return Promise.resolve(ids.reduce((acc, id) => {
82
- var _a, _b;
83
- return (Object.assign(Object.assign({}, acc), { [id]: (_b = (_a = eventCausesAssets.find((v) => v.name.includes(id))) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : {} }));
84
- }, {}));
70
+ return Promise.resolve(ids.reduce((acc, id) => ({
71
+ ...acc,
72
+ [id]: eventCausesAssets.find((v) => v.name.includes(id))?.data ?? {},
73
+ }), {}));
85
74
  }
86
75
  updateEventCausesAsset(id, dto) {
76
+ // simplified id and data
87
77
  const asset = this.data.find((v) => v.id === id);
88
78
  const eventCausesAsset = this.data.find((v) => v.name === 'hpc-event-causes-' + asset.id);
89
79
  if (eventCausesAsset) {
@@ -119,4 +109,3 @@ class AssetMockService extends BaseService {
119
109
  return Promise.resolve(revisionId);
120
110
  }
121
111
  }
122
- exports.AssetMockService = AssetMockService;
@@ -1,18 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AssetTypesMockService = void 0;
4
- const tslib_1 = require("tslib");
5
- const crypto_1 = require("crypto");
6
- const ts_mixer_1 = require("ts-mixer");
7
- const api_base_mock_1 = require("./api-base.mock");
8
- const data_mock_service_1 = require("./data.mock.service");
9
- const trash_mock_service_1 = require("./trash.mock.service");
10
- let BaseService = class BaseService extends api_base_mock_1.APIBaseMock {
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 {
11
8
  };
12
- BaseService = tslib_1.__decorate([
13
- (0, ts_mixer_1.mix)(data_mock_service_1.DataMockService, trash_mock_service_1.TrashMockService)
9
+ BaseService = __decorate([
10
+ mix(DataMockService, TrashMockService)
14
11
  ], BaseService);
15
- class AssetTypesMockService extends BaseService {
12
+ export class AssetTypesMockService extends BaseService {
16
13
  constructor(assetTypes, revisions) {
17
14
  const defaultTyp = {
18
15
  name: 'defaultType',
@@ -21,7 +18,7 @@ class AssetTypesMockService extends BaseService {
21
18
  typeSchema: { type: 'object' },
22
19
  uiSchema: {},
23
20
  };
24
- const types = assetTypes.map((type) => (typeof type === 'string' ? Object.assign({ id: type }, defaultTyp) : type));
21
+ const types = assetTypes.map((type) => (typeof type === 'string' ? { id: type, ...defaultTyp } : type));
25
22
  super(types);
26
23
  this.revisions = revisions;
27
24
  }
@@ -30,13 +27,14 @@ class AssetTypesMockService extends BaseService {
30
27
  return Promise.resolve(page);
31
28
  }
32
29
  addOne(dto) {
33
- const id = (0, crypto_1.randomUUID)();
34
- this.revisions.push(Object.assign(Object.assign({}, dto), { id, originalId: dto.id }));
30
+ const id = randomUUID();
31
+ this.revisions.push({ ...dto, id, originalId: dto.id });
35
32
  return super.addOne(dto);
36
33
  }
37
34
  deleteOne(id, force = false) {
38
35
  const assettype = this.data.find((v) => v.id === id);
39
- if (!(assettype === null || assettype === void 0 ? void 0 : assettype.deletedAt) && !force) {
36
+ if (!assettype?.deletedAt && !force) {
37
+ // put asset in paper bin by setting deletedAt prop
40
38
  assettype.deletedAt = new Date().toISOString();
41
39
  return Promise.resolve(assettype);
42
40
  }
@@ -48,15 +46,10 @@ class AssetTypesMockService extends BaseService {
48
46
  });
49
47
  return super.deleteOne(id);
50
48
  }
51
- updateOne(id, dto) {
52
- const _super = Object.create(null, {
53
- deleteOne: { get: () => super.deleteOne }
54
- });
55
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
56
- yield _super.deleteOne.call(this, id);
57
- const assetType = yield this.addOne(dto);
58
- return Promise.resolve(assetType);
59
- });
49
+ async updateOne(id, dto) {
50
+ await super.deleteOne(id);
51
+ const assetType = await this.addOne(dto);
52
+ return Promise.resolve(assetType);
60
53
  }
61
54
  getRevisions(id) {
62
55
  const revisions = this.revisions.filter((revision) => revision.originalId === id);
@@ -77,4 +70,3 @@ class AssetTypesMockService extends BaseService {
77
70
  return Promise.resolve(revisionId);
78
71
  }
79
72
  }
80
- exports.AssetTypesMockService = AssetTypesMockService;
@@ -1,19 +1,16 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ContentMockService = void 0;
4
- const tslib_1 = require("tslib");
5
- const stream_1 = require("stream");
6
- const ts_mixer_1 = require("ts-mixer");
7
- const content_interface_1 = require("../content.interface");
8
- const api_base_mock_1 = require("./api-base.mock");
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 = tslib_1.__decorate([
14
- (0, ts_mixer_1.mix)(data_mock_service_1.DataMockService, trash_mock_service_1.TrashMockService)
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 ? content_interface_1.ReturnType.ARRAYBUFFER : content_interface_1.ReturnType.BLOB;
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 content_interface_1.ReturnType.TEXT:
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 content_interface_1.ReturnType.JSON:
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 content_interface_1.ReturnType.NODEBUFFER:
45
+ case ReturnType.NODEBUFFER:
49
46
  return Promise.resolve(Buffer.from(this.contentData.get(id)));
50
- case content_interface_1.ReturnType.BLOB:
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 content_interface_1.ReturnType.ARRAYBUFFER:
59
+ case ReturnType.ARRAYBUFFER:
63
60
  return Promise.resolve(Buffer.from(this.contentData.get(id)).buffer);
64
- case content_interface_1.ReturnType.NODESTREAM:
65
- return Promise.resolve(stream_1.Readable.from(this.contentData.get(id)));
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 (!(content === null || content === void 0 ? void 0 : content.deletedAt) && !force) {
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
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
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
+ }