@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
@@ -1,182 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HttpClient = void 0;
4
- const tslib_1 = require("tslib");
5
- const axios_1 = tslib_1.__importDefault(require("axios"));
6
- const eventsource_1 = tslib_1.__importDefault(require("eventsource"));
7
- const jose_1 = require("jose");
8
- const querystring_1 = require("querystring");
9
- const uuid_1 = require("uuid");
10
- const Queue_1 = require("./Queue");
11
- const token_set_1 = require("./token-set");
12
- class HttpClient {
13
- constructor(baseURL, authBaseURL, realm, clientId, clientSecret, tokenSubject) {
14
- this.baseURL = baseURL;
15
- this.authBaseURL = authBaseURL;
16
- this.realm = realm;
17
- this.clientId = clientId;
18
- this.clientSecret = clientSecret;
19
- this.tokenSubject = tokenSubject;
20
- this.discoveredIssuers = new Map();
21
- this.eventSourcesMap = new Map();
22
- this.getQueueStats = () => { var _a; return (_a = this.requestQueue) === null || _a === void 0 ? void 0 : _a.getStats(); };
23
- this.delete = (url, config) => this.request('DELETE', url, config);
24
- this.get = (url, config) => this.request('GET', url, config);
25
- this.post = (url, data, config) => this.request('POST', url, config, data);
26
- this.put = (url, data, config) => this.request('PUT', url, config, data);
27
- this.request = (method, url, config = {}, data) => {
28
- return this.requestQueue.add(() => new Promise((resolve, reject) => {
29
- const tokenP = config.token ? Promise.resolve(config.token) : this.getAccessToken();
30
- tokenP
31
- .then((token) => {
32
- const headers = Object.assign({ Authorization: `Bearer ${token}` }, config.headers);
33
- return this.axiosInstance.request(Object.assign(Object.assign({}, config), { headers, method, url, data }));
34
- })
35
- .then((response) => resolve(response.data))
36
- .catch(reject);
37
- }));
38
- };
39
- this.getAccessToken = (...args_1) => tslib_1.__awaiter(this, [...args_1], void 0, function* (forceRefresh = false) {
40
- var _a;
41
- let accessToken;
42
- if (forceRefresh || !this.tokenSet || this.tokenSet.isExpired()) {
43
- if ((_a = this.tokenSet) === null || _a === void 0 ? void 0 : _a.provided) {
44
- throw new Error('provided token is expired and cannot be refreshed, provide a new token.');
45
- }
46
- this.tokenSet = yield this.requestAccessToken();
47
- accessToken = this.tokenSet.accessToken;
48
- }
49
- else {
50
- accessToken = this.tokenSet.accessToken;
51
- }
52
- if (this.tokenSubject) {
53
- if (forceRefresh || !this.exchangedTokenSet || this.exchangedTokenSet.isExpired()) {
54
- this.exchangedTokenSet = yield this.exchangeAccessToken(accessToken);
55
- }
56
- return this.exchangedTokenSet.accessToken;
57
- }
58
- else {
59
- return accessToken;
60
- }
61
- });
62
- this.axiosInstance = axios_1.default.create({ baseURL, timeout: 60000 });
63
- this.authAxiosInstance = axios_1.default.create({ baseURL: authBaseURL || baseURL, timeout: 10000 });
64
- this.requestQueue = new Queue_1.Queue({ concurrency: 1, timeout: 70000, throwOnTimeout: true });
65
- }
66
- addEventSource(url_1, listener_1, errorListener_1) {
67
- return tslib_1.__awaiter(this, arguments, void 0, function* (url, listener, errorListener, options = {}) {
68
- const id = (0, uuid_1.v4)();
69
- const errListener = errorListener
70
- ? errorListener
71
- : (event) => {
72
- throw new Error(JSON.stringify(event, null, 2));
73
- };
74
- const es = new eventsource_1.default(`${this.baseURL}${url}`, {
75
- headers: { authorization: 'Bearer ' + options.token ? options.token : yield this.getAccessToken() },
76
- });
77
- es.addEventListener('message', listener);
78
- es.addEventListener('error', errListener);
79
- this.eventSourcesMap.set(id, { eventSource: es, listener, errListener });
80
- return id;
81
- });
82
- }
83
- destroyEventSource(id) {
84
- if (!this.eventSourcesMap.has(id)) {
85
- return;
86
- }
87
- const es = this.eventSourcesMap.get(id);
88
- es.eventSource.close();
89
- es.eventSource.removeEventListener('message', es.listener);
90
- es.eventSource.removeEventListener('error', es.errListener);
91
- this.eventSourcesMap.delete(id);
92
- }
93
- destroyAllEventSources() {
94
- for (const key of this.eventSourcesMap.keys()) {
95
- this.destroyEventSource(key);
96
- }
97
- }
98
- validateIssuer(issuer) {
99
- var _a, _b;
100
- if (!issuer.issuer ||
101
- !((_a = issuer.grant_types_supported) === null || _a === void 0 ? void 0 : _a.includes('client_credentials')) ||
102
- !((_b = issuer.token_endpoint_auth_methods_supported) === null || _b === void 0 ? void 0 : _b.includes('client_secret_jwt'))) {
103
- throw new Error('Issuer does not support client_secret_jwt');
104
- }
105
- return issuer;
106
- }
107
- discoverIssuer(uri) {
108
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
109
- if (this.discoveredIssuers.has(uri)) {
110
- return this.discoveredIssuers.get(uri);
111
- }
112
- const wellKnownUri = `${uri}/.well-known/openid-configuration`;
113
- const issuerResponse = yield this.authAxiosInstance.get(wellKnownUri, {
114
- responseType: 'json',
115
- headers: { Accept: 'application/json' },
116
- });
117
- const validIssuer = this.validateIssuer(issuerResponse.data);
118
- this.discoveredIssuers.set(uri, validIssuer);
119
- return validIssuer;
120
- });
121
- }
122
- requestAccessToken() {
123
- return tslib_1.__awaiter(this, arguments, void 0, function* (additionalOpts = {}) {
124
- var _a, _b;
125
- const issuer = yield this.discoverIssuer(`${this.authBaseURL}/realms/${this.realm}`);
126
- const timestamp = Date.now() / 1000;
127
- const audience = [...new Set([issuer.issuer, issuer.token_endpoint].filter(Boolean))];
128
- const assertionPayload = {
129
- iat: timestamp,
130
- exp: timestamp + 60,
131
- jti: (0, uuid_1.v4)(),
132
- iss: this.clientId,
133
- sub: this.clientId,
134
- aud: audience,
135
- };
136
- const supportedAlgos = issuer.token_endpoint_auth_signing_alg_values_supported;
137
- const alg = (_a = issuer.token_endpoint_auth_signing_alg) !== null && _a !== void 0 ? _a : (Array.isArray(supportedAlgos) && supportedAlgos.find((signAlg) => /^HS(?:256|384|512)/.test(signAlg)));
138
- if (!alg) {
139
- throw new Error('Issuer has to support HS256, HS384 or HS512');
140
- }
141
- const assertion = yield new jose_1.CompactSign(Buffer.from(JSON.stringify(assertionPayload)))
142
- .setProtectedHeader({ alg })
143
- .sign(new TextEncoder().encode(this.clientSecret));
144
- const opts = Object.assign({ client_id: this.clientId, client_assertion: assertion, client_assertion_type: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer', grant_type: 'client_credentials' }, additionalOpts);
145
- const authResponse = yield this.authAxiosInstance.post(issuer.token_endpoint, (0, querystring_1.stringify)(opts), {
146
- headers: { Accept: 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' },
147
- });
148
- if (((_b = authResponse === null || authResponse === void 0 ? void 0 : authResponse.data) === null || _b === void 0 ? void 0 : _b.access_token) && authResponse.data.expires_in) {
149
- return new token_set_1.TokenSet(authResponse.data.access_token, authResponse.data.expires_in);
150
- }
151
- else {
152
- throw new Error('Invalid access token received');
153
- }
154
- });
155
- }
156
- exchangeAccessToken(accessToken) {
157
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
158
- if (!accessToken || !this.tokenSubject) {
159
- throw new Error('Could not exchange access token');
160
- }
161
- const opts = {
162
- grant_type: 'urn:ietf:params:oauth:grant-type:token-exchange',
163
- subject_token: accessToken,
164
- audience: this.clientId,
165
- requested_token_type: 'urn:ietf:params:oauth:token-type:access_token',
166
- requested_subject: this.tokenSubject,
167
- };
168
- return this.requestAccessToken(opts);
169
- });
170
- }
171
- provideExternalToken(token) {
172
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
173
- const issuer = yield this.discoverIssuer(`${this.authBaseURL}/realms/${this.realm}`);
174
- const { iss: providedIssuer, exp } = (0, jose_1.decodeJwt)(token);
175
- if (issuer.issuer !== providedIssuer) {
176
- throw new Error(`Provided token is not issued by currently configured issuer. Provided token issued by ${providedIssuer}, but ${issuer.issuer} is configured.`);
177
- }
178
- this.tokenSet = new token_set_1.TokenSet(token, exp - Date.now() / 1000, true);
179
- });
180
- }
181
- }
182
- exports.HttpClient = HttpClient;
package/dist/index.d.ts DELETED
@@ -1,20 +0,0 @@
1
- export * from './api';
2
- export * from './asset.interface';
3
- export * from './content.interface';
4
- export * from './data.interface';
5
- export * from './data.service';
6
- export * from './endpoint.interface';
7
- export * from './http.service';
8
- export * from './label.interface';
9
- export * from './secret.interface';
10
- export * from './timeseries.interface';
11
- export * from './task.interface';
12
- export * from './events.interface';
13
- export * from './mock';
14
- export * from './flow-deployment.interface';
15
- export * from './flow-function.interface';
16
- export * from './flow.interface';
17
- export * from './resource.interface';
18
- export * from './schema.interface';
19
- export * from './vault.interface';
20
- export * from './notification.interface';
package/dist/index.js DELETED
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./api"), exports);
5
- tslib_1.__exportStar(require("./asset.interface"), exports);
6
- tslib_1.__exportStar(require("./content.interface"), exports);
7
- tslib_1.__exportStar(require("./data.interface"), exports);
8
- tslib_1.__exportStar(require("./data.service"), exports);
9
- tslib_1.__exportStar(require("./endpoint.interface"), exports);
10
- tslib_1.__exportStar(require("./http.service"), exports);
11
- tslib_1.__exportStar(require("./label.interface"), exports);
12
- tslib_1.__exportStar(require("./secret.interface"), exports);
13
- tslib_1.__exportStar(require("./timeseries.interface"), exports);
14
- tslib_1.__exportStar(require("./task.interface"), exports);
15
- tslib_1.__exportStar(require("./events.interface"), exports);
16
- tslib_1.__exportStar(require("./mock"), exports);
17
- tslib_1.__exportStar(require("./flow-deployment.interface"), exports);
18
- tslib_1.__exportStar(require("./flow-function.interface"), exports);
19
- tslib_1.__exportStar(require("./flow.interface"), exports);
20
- tslib_1.__exportStar(require("./resource.interface"), exports);
21
- tslib_1.__exportStar(require("./schema.interface"), exports);
22
- tslib_1.__exportStar(require("./vault.interface"), exports);
23
- tslib_1.__exportStar(require("./notification.interface"), exports);
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.APIBaseMock = void 0;
4
- const api_base_1 = require("../api-base");
5
- class APIBaseMock extends api_base_1.APIBase {
6
- constructor(data = []) {
7
- super(null, null);
8
- this.data = data;
9
- }
10
- }
11
- exports.APIBaseMock = APIBaseMock;
@@ -1,128 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MockAPI = void 0;
4
- const fs_1 = require("fs");
5
- const path_1 = require("path");
6
- const asset_mock_service_1 = require("./asset.mock.service");
7
- const assetTypes_mock_service_1 = require("./assetTypes.mock.service");
8
- const content_mock_service_1 = require("./content.mock.service");
9
- const endpoint_mock_service_1 = require("./endpoint.mock.service");
10
- const events_mock_service_1 = require("./events.mock.service");
11
- const secret_mock_service_1 = require("./secret.mock.service");
12
- const timeseries_mock_service_1 = require("./timeseries.mock.service");
13
- const task_mock_service_1 = require("./task.mock.service");
14
- const user_mock_service_1 = require("./user.mock.service");
15
- const flow_mock_service_1 = require("./flow.mock.service");
16
- const flow_deployment_mock_service_1 = require("./flow-deployment.mock.service");
17
- const flow_functions_mock_service_1 = require("./flow-functions.mock.service");
18
- const flow_modules_mock_service_1 = require("./flow-modules.mock.service");
19
- const crypto_1 = require("crypto");
20
- const label_mock_service_1 = require("./label.mock.service");
21
- const vault_mock_service_1 = require("./vault.mock.service");
22
- const notification_mock_service_1 = require("./notification.mock.service");
23
- class MockAPI {
24
- constructor(initData) {
25
- this.httpClient = null;
26
- this.proxy = null;
27
- const { assets = [], assetRevisions = [], contents = [], endpoints = [], secrets = [], timeSeries = [], tasks = [], events = [], users, flows = [], flowRevisions = [], deployments = [], functions = [], functionRevisions = [], modules = [], diagrams = [], labels = [], vault = [], notifications = [], } = initData;
28
- const assetTypes = assets
29
- .map((v) => v.type)
30
- .map((v) => {
31
- var _a, _b;
32
- return typeof v === 'string'
33
- ? v
34
- : Object.assign(Object.assign({}, v), { readPermissions: v.readPermissions || [], readWritePermissions: v.readWritePermissions || [], typeSchema: (_a = v.typeSchema) !== null && _a !== void 0 ? _a : {}, uiSchema: (_b = v.uiSchema) !== null && _b !== void 0 ? _b : {} });
35
- });
36
- const assets1 = assets.map((v, index) => {
37
- var _a, _b;
38
- return (Object.assign(Object.assign({}, v), { readPermissions: (_a = v.readPermissions) !== null && _a !== void 0 ? _a : [], readWritePermissions: (_b = v.readWritePermissions) !== null && _b !== void 0 ? _b : [], type: assetTypes[index] }));
39
- });
40
- const assetRevisions1 = assetRevisions.map((v, index) => {
41
- var _a, _b;
42
- return (Object.assign(Object.assign({}, v), { readPermissions: (_a = v.readPermissions) !== null && _a !== void 0 ? _a : [], readWritePermissions: (_b = v.readWritePermissions) !== null && _b !== void 0 ? _b : [], type: assetTypes[index] }));
43
- });
44
- const contents1 = contents.map((v) => {
45
- var _a, _b, _c, _d, _e;
46
- return (Object.assign(Object.assign({}, v), { readPermissions: (_a = v.readPermissions) !== null && _a !== void 0 ? _a : [], readWritePermissions: (_b = v.readWritePermissions) !== null && _b !== void 0 ? _b : [], size: (_c = v.size) !== null && _c !== void 0 ? _c : 0, fileId: (_d = v.fileId) !== null && _d !== void 0 ? _d : '', mimetype: (_e = v.mimetype) !== null && _e !== void 0 ? _e : '' }));
47
- });
48
- const contentData = contents.map((v) => (v.data ? v.data : (0, fs_1.readFileSync)((0, path_1.join)(v.filePath, v.filename))));
49
- const secrets1 = secrets.map((v) => {
50
- var _a, _b;
51
- return (Object.assign(Object.assign({}, v), { readPermissions: (_a = v.readPermissions) !== null && _a !== void 0 ? _a : [], readWritePermissions: (_b = v.readWritePermissions) !== null && _b !== void 0 ? _b : [] }));
52
- });
53
- const timeSeries1 = timeSeries.map((v) => {
54
- var _a, _b, _c, _d, _e, _f;
55
- return (Object.assign(Object.assign({}, v), { description: (_a = v.description) !== null && _a !== void 0 ? _a : '', readPermissions: (_b = v.readPermissions) !== null && _b !== void 0 ? _b : [], readWritePermissions: (_c = v.readWritePermissions) !== null && _c !== void 0 ? _c : [], maxBucketTimeRange: (_d = v.maxBucketTimeRange) !== null && _d !== void 0 ? _d : 0, maxDate: v.maxDate, minDate: v.minDate, autoDelData: (_e = v.autoDelData) !== null && _e !== void 0 ? _e : new Date(), autoDelBucket: (_f = v.autoDelBucket) !== null && _f !== void 0 ? _f : new Date() }));
56
- });
57
- const timeSeriesValues = timeSeries.map((v) => v.values);
58
- const endpoint1 = endpoints.map((v) => {
59
- var _a, _b;
60
- return (Object.assign(Object.assign({}, v), { status: v.status, config: v.config, notificationCheckInterval: v.notificationCheckInterval, notificationPauseInterval: v.notificationPauseInterval, nbOfNotificationsBetweenPauseInterval: v.nbOfNotificationsBetweenPauseInterval, readPermissions: (_a = v.readPermissions) !== null && _a !== void 0 ? _a : [], readWritePermissions: (_b = v.readWritePermissions) !== null && _b !== void 0 ? _b : [] }));
61
- });
62
- const tasks1 = tasks.map((v) => {
63
- var _a, _b, _c;
64
- return (Object.assign(Object.assign({}, v), { id: v.id, readPermissions: (_a = v.readPermissions) !== null && _a !== void 0 ? _a : [], readWritePermissions: (_b = v.readWritePermissions) !== null && _b !== void 0 ? _b : [], subTasks: (_c = v.subTasks) !== null && _c !== void 0 ? _c : [] }));
65
- });
66
- const events1 = events.map((v) => {
67
- var _a, _b;
68
- return (Object.assign(Object.assign({}, v), { readPermissions: (_a = v.readPermissions) !== null && _a !== void 0 ? _a : [], readWritePermissions: (_b = v.readWritePermissions) !== null && _b !== void 0 ? _b : [], cause: v.cause, level: v.level }));
69
- });
70
- const diagrams1 = diagrams.map((v) => {
71
- var _a;
72
- return (Object.assign(Object.assign({}, v), { json: (_a = v.json) !== null && _a !== void 0 ? _a : '', author: 'nobody' }));
73
- });
74
- const flows1 = flows.map((v) => {
75
- var _a, _b, _c;
76
- return (Object.assign(Object.assign({}, v), { readPermissions: (_a = v.readPermissions) !== null && _a !== void 0 ? _a : [], readWritePermissions: (_b = v.readWritePermissions) !== null && _b !== void 0 ? _b : [], diagram: diagrams.find((v1) => v1.flow === v.id).id, name: `flow-${v.id}`, deployments: (_c = v.deployments) !== null && _c !== void 0 ? _c : [] }));
77
- });
78
- const flowRevisions1 = flowRevisions.map((v) => {
79
- var _a, _b, _c;
80
- return (Object.assign(Object.assign({}, v), { readPermissions: (_a = v.readPermissions) !== null && _a !== void 0 ? _a : [], readWritePermissions: (_b = v.readWritePermissions) !== null && _b !== void 0 ? _b : [], diagram: diagrams.find((v1) => v1.flow === v.originalId).id, name: `flow-${v.id}`, deployments: (_c = v.deployments) !== null && _c !== void 0 ? _c : [] }));
81
- });
82
- const deployments1 = deployments.map((v) => {
83
- var _a, _b, _c, _d, _e;
84
- return (Object.assign(Object.assign({}, v), { readPermissions: (_a = v.readPermissions) !== null && _a !== void 0 ? _a : [], readWritePermissions: (_b = v.readWritePermissions) !== null && _b !== void 0 ? _b : [], diagram: (_c = v.diagram) !== null && _c !== void 0 ? _c : '', artifact: (_d = v.artifact) !== null && _d !== void 0 ? _d : null, flowModel: (_e = v.flowModel) !== null && _e !== void 0 ? _e : { connections: [], elements: [] }, desiredStatus: 'running', actualStatus: 'generating queued', target: 'executor', name: `deployment-${v.id}` }));
85
- });
86
- const functions1 = functions.map((v) => {
87
- var _a, _b;
88
- return (Object.assign(Object.assign({}, v), { category: 'task', readPermissions: (_a = v.readPermissions) !== null && _a !== void 0 ? _a : [], readWritePermissions: (_b = v.readWritePermissions) !== null && _b !== void 0 ? _b : [], author: 'nobody' }));
89
- });
90
- const functionRevisions1 = functionRevisions.map((v) => {
91
- var _a, _b;
92
- return (Object.assign(Object.assign({}, v), { category: 'task', readPermissions: (_a = v.readPermissions) !== null && _a !== void 0 ? _a : [], readWritePermissions: (_b = v.readWritePermissions) !== null && _b !== void 0 ? _b : [], author: 'nobody' }));
93
- });
94
- const modules1 = modules.map((v, index) => {
95
- var _a, _b, _c, _d;
96
- return (Object.assign(Object.assign({}, v), { artifacts: (_a = modules[index].artifacts.map((art) => (Object.assign(Object.assign({}, art), { version: '0.0.0', id: (0, crypto_1.randomUUID)(), mimetype: '', size: 0, createdAt: '' + Date.now() })))) !== null && _a !== void 0 ? _a : [], author: 'nobody', functions: (_b = v.functions) !== null && _b !== void 0 ? _b : [], readPermissions: (_c = v.readPermissions) !== null && _c !== void 0 ? _c : [], readWritePermissions: (_d = v.readWritePermissions) !== null && _d !== void 0 ? _d : [] }));
97
- });
98
- const labels1 = labels.map((v) => {
99
- var _a, _b, _c, _d;
100
- return (Object.assign(Object.assign({}, v), { color: (_a = v.color) !== null && _a !== void 0 ? _a : '', description: (_b = v.description) !== null && _b !== void 0 ? _b : '', readPermissions: (_c = v.readPermissions) !== null && _c !== void 0 ? _c : [], readWritePermissions: (_d = v.readWritePermissions) !== null && _d !== void 0 ? _d : [] }));
101
- });
102
- const vaultSecrets1 = vault.map((v) => {
103
- var _a, _b;
104
- return (Object.assign(Object.assign({}, v), { readPermissions: (_a = v.readPermissions) !== null && _a !== void 0 ? _a : [], readWritePermissions: (_b = v.readWritePermissions) !== null && _b !== void 0 ? _b : [] }));
105
- });
106
- const notifications1 = notifications.map((v) => {
107
- var _a, _b, _c;
108
- return (Object.assign(Object.assign({}, v), { link: (_a = v.link) !== null && _a !== void 0 ? _a : '', description: (_b = v.description) !== null && _b !== void 0 ? _b : '', read: (_c = v.read) !== null && _c !== void 0 ? _c : false }));
109
- });
110
- this.assets = new asset_mock_service_1.AssetMockService(this, assets1, assetRevisions1);
111
- this.assetTypes = new assetTypes_mock_service_1.AssetTypesMockService(assetTypes, []);
112
- this.contents = new content_mock_service_1.ContentMockService(contents1, contentData);
113
- this.endpoints = new endpoint_mock_service_1.EndpointMockService(endpoint1);
114
- this.secrets = new secret_mock_service_1.SecretMockService(secrets1);
115
- this.timeSeries = new timeseries_mock_service_1.TimeseriesMockService(timeSeries1, timeSeriesValues);
116
- this.tasks = new task_mock_service_1.TaskMockService(tasks1);
117
- this.events = new events_mock_service_1.EventsMockService(events1);
118
- this.users = new user_mock_service_1.UserMockService(users);
119
- this.flows = new flow_mock_service_1.FlowMockService(flows1, diagrams1, flowRevisions1);
120
- this.flowDeployments = new flow_deployment_mock_service_1.FlowDeploymentMockService(deployments1, this);
121
- this.flowFunctions = new flow_functions_mock_service_1.FlowFunctionsMockService(functions1, functionRevisions1);
122
- this.flowModules = new flow_modules_mock_service_1.FlowModulesMockService(modules1);
123
- this.labels = new label_mock_service_1.LabelMockService(labels1);
124
- this.vault = new vault_mock_service_1.VaultMockService(vaultSecrets1);
125
- this.notifications = new notification_mock_service_1.NotificationMockService(notifications1);
126
- }
127
- }
128
- exports.MockAPI = MockAPI;
@@ -1,96 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DataMockService = void 0;
4
- const tslib_1 = require("tslib");
5
- const data_interface_1 = require("../data.interface");
6
- const data_service_1 = require("../data.service");
7
- class DataMockService extends data_service_1.DataService {
8
- constructor() {
9
- super(null, null);
10
- this.data = [];
11
- }
12
- addMany(dto) {
13
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
14
- const map = dto.map((v) => this.addOne(v));
15
- return Promise.all(map);
16
- });
17
- }
18
- addOne(dto) {
19
- this.data.push(dto);
20
- return Promise.resolve(dto);
21
- }
22
- deleteOne(id) {
23
- const index = this.data.findIndex((v) => v.id === id);
24
- const obj = this.data[index];
25
- this.data.splice(index, 1);
26
- return Promise.resolve(obj);
27
- }
28
- getMany(params) {
29
- var _a;
30
- const data = this.data;
31
- if (params === null || params === void 0 ? void 0 : params.sort) {
32
- this.sortData(data, params.sort);
33
- }
34
- const page = {
35
- docs: data,
36
- limit: (_a = params === null || params === void 0 ? void 0 : params.limit) !== null && _a !== void 0 ? _a : Number.MAX_SAFE_INTEGER,
37
- total: data.length,
38
- };
39
- return Promise.resolve(page);
40
- }
41
- getManyFiltered(filter_1) {
42
- return tslib_1.__awaiter(this, arguments, void 0, function* (filter, params = {}) {
43
- var _a;
44
- const paginated = yield 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)) ||
51
- (typeof filterValue === 'object' &&
52
- (0, data_interface_1.instanceOfTimePeriod)(filterValue) &&
53
- new Date(docValue) >= filterValue.from &&
54
- new Date(docValue) <= filterValue.to) ||
55
- (docValue instanceof Date && filterValue === docValue.toISOString()) ||
56
- (Array.isArray(filterValue) && Array.isArray(docValue) && filterValue.some((fv) => docValue.includes(fv))) ||
57
- (Array.isArray(filterValue) && filterValue.includes(docValue)) ||
58
- (Array.isArray(docValue) && docValue.includes(filterValue)) ||
59
- docValue === filterValue);
60
- }));
61
- const page = {
62
- docs: newData,
63
- limit: (_a = paginated.limit) !== null && _a !== void 0 ? _a : Number.MAX_SAFE_INTEGER,
64
- total: newData.length,
65
- };
66
- return Promise.resolve(page);
67
- });
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
- updateOne(id, dto) {
75
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
76
- yield this.deleteOne(id);
77
- const t = yield this.addOne(dto);
78
- return Promise.resolve(t);
79
- });
80
- }
81
- sortData(data, sort) {
82
- const descending = sort.startsWith('-');
83
- const sortString = descending ? sort.substring(1) : sort;
84
- const compareFn = (a, b) => {
85
- let aValue = a[sortString];
86
- let bValue = b[sortString];
87
- if (['updatedAt', 'createdAt', 'deletedAt'].includes(sortString)) {
88
- aValue = new Date(a[sortString]).valueOf();
89
- bValue = new Date(b[sortString]).valueOf();
90
- }
91
- return descending ? bValue - aValue : aValue - bValue;
92
- };
93
- data.sort(compareFn);
94
- }
95
- }
96
- exports.DataMockService = DataMockService;
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EventsMockService = void 0;
4
- const data_mock_service_1 = require("./data.mock.service");
5
- class EventsMockService extends data_mock_service_1.DataMockService {
6
- constructor(events) {
7
- super();
8
- this.data = events;
9
- }
10
- getLastEventByAssetAndGroup(assetId, group) {
11
- return Promise.resolve(this.data[this.data.length - 1]);
12
- }
13
- }
14
- exports.EventsMockService = EventsMockService;
@@ -1,142 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FlowDeploymentMockService = 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 {
11
- };
12
- BaseService = tslib_1.__decorate([
13
- (0, ts_mixer_1.mix)(data_mock_service_1.DataMockService, trash_mock_service_1.TrashMockService)
14
- ], BaseService);
15
- class FlowDeploymentMockService extends BaseService {
16
- constructor(deployments, api) {
17
- super(deployments);
18
- this.api = api;
19
- }
20
- subscribeToStatus(id, listener, errorListener) {
21
- listener(new MessageEvent('message', { data: 'running' }));
22
- return Promise.resolve((0, crypto_1.randomUUID)());
23
- }
24
- subscribeToLogs(id, listener, errorListener) {
25
- listener(new MessageEvent('message', { data: 'foo' }));
26
- return Promise.resolve((0, crypto_1.randomUUID)());
27
- }
28
- waitForRunningStatus(id) {
29
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
30
- const flowDeployment = this.data.find((v) => v.id === id);
31
- flowDeployment.actualStatus = 'running';
32
- });
33
- }
34
- updateStatus(id, desiredStatus) {
35
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
36
- const deployment = yield this.getOne(id);
37
- deployment.desiredStatus = desiredStatus;
38
- deployment.actualStatus = desiredStatus;
39
- return Promise.resolve(deployment);
40
- });
41
- }
42
- resolveReferences(id, recursive, types) {
43
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
44
- var _a;
45
- const depl = yield this.getOne(id);
46
- return (_a = depl.refs) !== null && _a !== void 0 ? _a : [];
47
- });
48
- }
49
- getDeploymentStatistics(id) {
50
- return Promise.resolve({
51
- totalErrorCount: 0,
52
- errorCountWeek: 0,
53
- eventCountWeek: 0,
54
- errorCounts: [],
55
- metrics: {
56
- cpu: 0,
57
- memory: 97931264,
58
- ctime: 16770,
59
- elapsed: 172850950,
60
- timestamp: 1648199692625,
61
- deploymentId: id,
62
- },
63
- });
64
- }
65
- getDeploymentMetrics(id, range, interval) {
66
- return Promise.resolve({
67
- metrics: [{ timestamp: Date.now(), cpu: 0, memory: Math.random() * 1000000 }],
68
- stats: {
69
- cpu: { count: 123, avg: 0, max: 0, min: 0, sum: 0 },
70
- memory: { count: 123, avg: 0, max: 0, min: 0, sum: 0 },
71
- },
72
- });
73
- }
74
- getDeploymentLogs(id) {
75
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
76
- const depl = yield this.getOne(id);
77
- return Promise.resolve([
78
- {
79
- type: 'flow.log.info',
80
- deploymentId: id,
81
- subject: 'FlowApplication',
82
- data: 'Flow Deployment is running',
83
- '@timestamp': '2022-03-23T09:14:03.129Z',
84
- eventId: 'c68b7674-b8da-46c5-85f0-8e4279d74a78',
85
- datacontenttype: 'text/plain',
86
- elementId: 'none',
87
- time: '2022-03-23T09:14:03.129Z',
88
- flowId: depl.flow,
89
- },
90
- ]);
91
- });
92
- }
93
- addOne(dto) {
94
- const _super = Object.create(null, {
95
- addOne: { get: () => super.addOne }
96
- });
97
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
98
- const flow = yield this.api.flows.getFlowWithDiagram(dto.diagramId);
99
- const refs = yield this.getReferences(dto.properties);
100
- const id = (0, crypto_1.randomUUID)();
101
- const newDepl = {
102
- actualStatus: 'generating queued',
103
- artifact: undefined,
104
- desiredStatus: 'running',
105
- diagram: dto.diagramId,
106
- flow: flow.id,
107
- flowModel: { elements: [], connections: [], properties: dto.properties },
108
- id,
109
- name: dto.name,
110
- readPermissions: [],
111
- readWritePermissions: [],
112
- target: 'executor',
113
- refs,
114
- };
115
- yield this.api.flows.updateOne(flow.id, Object.assign(Object.assign({}, flow), { deployments: [...flow.deployments, id] }));
116
- return _super.addOne.call(this, newDepl);
117
- });
118
- }
119
- deleteOne(id) {
120
- const _super = Object.create(null, {
121
- deleteOne: { get: () => super.deleteOne }
122
- });
123
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
124
- const depl = yield this.getOne(id);
125
- const flow = yield this.api.flows.getOne(depl.flow);
126
- const index = flow.deployments.findIndex((v) => v === id);
127
- flow.deployments.splice(index, 1);
128
- yield this.api.flows.updateOne(flow.id, flow);
129
- return _super.deleteOne.call(this, id);
130
- });
131
- }
132
- getReferences(properties) {
133
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
134
- return Promise.all(Object.keys(properties).map((prop) => tslib_1.__awaiter(this, void 0, void 0, function* () {
135
- if (prop !== 'assetId')
136
- throw new Error('not implemented');
137
- return { id: (yield this.api.assets.getOne(properties[prop])).id, resourceType: 'asset' };
138
- })));
139
- });
140
- }
141
- }
142
- exports.FlowDeploymentMockService = FlowDeploymentMockService;
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FlowModulesMockService = void 0;
4
- const tslib_1 = require("tslib");
5
- const data_mock_service_1 = require("./data.mock.service");
6
- class FlowModulesMockService extends data_mock_service_1.DataMockService {
7
- constructor(modules) {
8
- super();
9
- this.data = modules;
10
- }
11
- deleteArtifact(name, version) {
12
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
13
- const module = yield this.getOne(name);
14
- const index = module.artifacts.findIndex((art) => art.version === version);
15
- module.artifacts.splice(index, 1);
16
- return Promise.resolve(module);
17
- });
18
- }
19
- publish(form) {
20
- return Promise.resolve(undefined);
21
- }
22
- getOne(name, options = {}) {
23
- const t = this.data.find((v) => v.name === name);
24
- return Promise.resolve(t);
25
- }
26
- }
27
- exports.FlowModulesMockService = FlowModulesMockService;