@privateaim/core-kit 0.8.20 → 0.8.22

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 (52) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/dist/domains/analysis/constants.d.ts +5 -41
  3. package/dist/domains/analysis/constants.d.ts.map +1 -1
  4. package/dist/domains/analysis/entity.d.ts +32 -5
  5. package/dist/domains/analysis/entity.d.ts.map +1 -1
  6. package/dist/domains/analysis/error.d.ts +6 -1
  7. package/dist/domains/analysis/error.d.ts.map +1 -1
  8. package/dist/domains/analysis/helpers/builder.d.ts +16 -0
  9. package/dist/domains/analysis/helpers/builder.d.ts.map +1 -0
  10. package/dist/domains/analysis/helpers/configurator.d.ts +16 -0
  11. package/dist/domains/analysis/helpers/configurator.d.ts.map +1 -0
  12. package/dist/domains/analysis/helpers/distributor.d.ts +16 -0
  13. package/dist/domains/analysis/helpers/distributor.d.ts.map +1 -0
  14. package/dist/domains/analysis/helpers/index.d.ts +4 -0
  15. package/dist/domains/analysis/helpers/index.d.ts.map +1 -0
  16. package/dist/domains/analysis-bucket/entity.d.ts +3 -3
  17. package/dist/domains/analysis-bucket/entity.d.ts.map +1 -1
  18. package/dist/domains/analysis-bucket-file/entity.d.ts +7 -5
  19. package/dist/domains/analysis-bucket-file/entity.d.ts.map +1 -1
  20. package/dist/domains/analysis-node/constants.d.ts +0 -9
  21. package/dist/domains/analysis-node/constants.d.ts.map +1 -1
  22. package/dist/domains/analysis-node/entity.d.ts +4 -2
  23. package/dist/domains/analysis-node/entity.d.ts.map +1 -1
  24. package/dist/domains/analysis-permission/entity.d.ts +2 -2
  25. package/dist/domains/analysis-permission/entity.d.ts.map +1 -1
  26. package/dist/domains/master-image/entity.d.ts +3 -0
  27. package/dist/domains/master-image/entity.d.ts.map +1 -1
  28. package/dist/domains/node/entity.d.ts +5 -1
  29. package/dist/domains/node/entity.d.ts.map +1 -1
  30. package/dist/index.mjs +129 -187
  31. package/dist/index.mjs.map +1 -1
  32. package/package.json +11 -12
  33. package/rollup.config.mjs +1 -6
  34. package/src/domains/analysis/constants.ts +4 -63
  35. package/src/domains/analysis/entity.ts +44 -9
  36. package/src/domains/analysis/error.ts +19 -1
  37. package/src/domains/analysis/helpers/builder.ts +61 -0
  38. package/src/domains/analysis/helpers/configurator.ts +68 -0
  39. package/src/domains/analysis/helpers/distributor.ts +40 -0
  40. package/src/domains/analysis/helpers/index.ts +10 -0
  41. package/src/domains/analysis-bucket/entity.ts +7 -5
  42. package/src/domains/analysis-bucket-file/entity.ts +11 -5
  43. package/src/domains/analysis-node/constants.ts +0 -15
  44. package/src/domains/analysis-node/entity.ts +5 -2
  45. package/src/domains/analysis-permission/entity.ts +2 -2
  46. package/src/domains/master-image/entity.ts +5 -0
  47. package/src/domains/node/entity.ts +6 -1
  48. package/dist/domains/analysis/helpers.d.ts +0 -15
  49. package/dist/domains/analysis/helpers.d.ts.map +0 -1
  50. package/dist/index.cjs +0 -591
  51. package/dist/index.cjs.map +0 -1
  52. package/src/domains/analysis/helpers.ts +0 -157
package/dist/index.cjs DELETED
@@ -1,591 +0,0 @@
1
- 'use strict';
2
-
3
- var kit = require('@privateaim/kit');
4
-
5
- /*
6
- * Copyright (c) 2022-2024.
7
- * Author Peter Placzek (tada5hi)
8
- * For the full copyright and license information,
9
- * view the LICENSE file that was distributed with this source code.
10
- */ var ErrorCode = /*#__PURE__*/ function(ErrorCode) {
11
- ErrorCode["LICENSE_AGREEMENT"] = "license_agreement";
12
- return ErrorCode;
13
- }({});
14
-
15
- /*
16
- * Copyright (c) 2021-2024.
17
- * Author Peter Placzek (tada5hi)
18
- * For the full copyright and license information,
19
- * view the LICENSE file that was distributed with this source code.
20
- */ class APIConnectionStringError extends Error {
21
- static connectionStringMissing(serviceName) {
22
- const parts = [
23
- 'The'
24
- ];
25
- if (typeof serviceName === 'string') {
26
- parts.push(serviceName);
27
- }
28
- parts.push('connection string is not specified.');
29
- return new this(parts.join(' '));
30
- }
31
- static connectionStringInvalid(serviceName) {
32
- const parts = [
33
- 'The'
34
- ];
35
- if (typeof serviceName === 'string') {
36
- parts.push(serviceName);
37
- }
38
- parts.push('connection string is not valid.');
39
- return new this(parts.join(' '));
40
- }
41
- }
42
-
43
- /*
44
- * Copyright (c) 2025.
45
- * Author Peter Placzek (tada5hi)
46
- * For the full copyright and license information,
47
- * view the LICENSE file that was distributed with this source code.
48
- */ class AnalysisError extends Error {
49
- static defaultNodeRequired() {
50
- return new AnalysisError('At least one default node must be selected.');
51
- }
52
- static aggregatorNodeRequired() {
53
- return new AnalysisError('An aggregator node node must be selected.');
54
- }
55
- static imageAssignmentRequired() {
56
- return new AnalysisError('A master image must be assigned to the analysis.');
57
- }
58
- static configurationLocked() {
59
- return new AnalysisError('The analysis configuration is locked.');
60
- }
61
- static buildInitialized() {
62
- return new AnalysisError('The analysis build process has already been initialized.');
63
- }
64
- }
65
-
66
- /*
67
- * Copyright (c) 2021-2024.
68
- * Author Peter Placzek (tada5hi)
69
- * For the full copyright and license information,
70
- * view the LICENSE file that was distributed with this source code.
71
- */ var AnalysisBuildStatus = /*#__PURE__*/ function(AnalysisBuildStatus) {
72
- AnalysisBuildStatus["STARTING"] = "starting";
73
- AnalysisBuildStatus["STARTED"] = "started";
74
- AnalysisBuildStatus["STOPPING"] = "stopping";
75
- AnalysisBuildStatus["STOPPED"] = "stopped";
76
- AnalysisBuildStatus["FINISHED"] = "finished";
77
- AnalysisBuildStatus["FAILED"] = "failed";
78
- return AnalysisBuildStatus;
79
- }({});
80
- // -------------------------------------------------------------------------
81
- var AnalysisConfigurationStatus = /*#__PURE__*/ function(AnalysisConfigurationStatus) {
82
- AnalysisConfigurationStatus["NODES"] = "nodes";
83
- AnalysisConfigurationStatus["MASTER_IMAGE"] = "masterImage";
84
- AnalysisConfigurationStatus["FILES"] = "files";
85
- AnalysisConfigurationStatus["FINISHED"] = "finished";
86
- return AnalysisConfigurationStatus;
87
- }({});
88
- // -------------------------------------------------------------------------
89
- var AnalysisRunStatus = /*#__PURE__*/ function(AnalysisRunStatus) {
90
- AnalysisRunStatus["STARTING"] = "starting";
91
- AnalysisRunStatus["STARTED"] = "started";
92
- AnalysisRunStatus["RUNNING"] = "running";
93
- AnalysisRunStatus["STOPPING"] = "stopping";
94
- AnalysisRunStatus["STOPPED"] = "stopped";
95
- AnalysisRunStatus["FINISHED"] = "finished";
96
- AnalysisRunStatus["FAILED"] = "failed";
97
- return AnalysisRunStatus;
98
- }({});
99
- // -------------------------------------------------------------------------
100
- var AnalysisResultStatus = /*#__PURE__*/ function(AnalysisResultStatus) {
101
- AnalysisResultStatus["STARTED"] = "started";
102
- AnalysisResultStatus["DOWNLOADING"] = "downloading";
103
- AnalysisResultStatus["DOWNLOADED"] = "downloaded";
104
- AnalysisResultStatus["PROCESSING"] = "extracting";
105
- AnalysisResultStatus["PROCESSED"] = "extracted";
106
- AnalysisResultStatus["FINISHED"] = "finished";
107
- AnalysisResultStatus["FAILED"] = "failed";
108
- return AnalysisResultStatus;
109
- }({});
110
- // -------------------------------------------------------------------------
111
- var AnalysisAPICommand = /*#__PURE__*/ function(AnalysisAPICommand) {
112
- AnalysisAPICommand["SPIN_UP"] = "spinUp";
113
- AnalysisAPICommand["TEAR_DOWN"] = "tearDown";
114
- AnalysisAPICommand["BUILD_START"] = "buildStart";
115
- AnalysisAPICommand["BUILD_STOP"] = "buildStop";
116
- AnalysisAPICommand["BUILD_STATUS"] = "buildStatus";
117
- AnalysisAPICommand["CONFIGURATION_LOCK"] = "configurationLock";
118
- AnalysisAPICommand["CONFIGURATION_UNLOCK"] = "configurationUnlock";
119
- return AnalysisAPICommand;
120
- }({});
121
- // -------------------------------------------------------------------------
122
- var AnalysisContainerPath = /*#__PURE__*/ function(AnalysisContainerPath) {
123
- AnalysisContainerPath["CODE"] = "/opt/code/";
124
- return AnalysisContainerPath;
125
- }({});
126
-
127
- /**
128
- * Check if an analysis can be build based on analysis attributes (build_status, configuration_locked, ...)
129
- *
130
- * @param entity
131
- * @param command
132
- */ function isAnalysisAPICommandExecutable(entity, command) {
133
- const output = {
134
- success: false,
135
- message: `The analysis command ${command} cannot be executed.`
136
- };
137
- switch(command){
138
- case AnalysisAPICommand.BUILD_START:
139
- {
140
- if (!entity.configuration_locked) {
141
- output.success = false;
142
- output.message = 'The analysis configuration must be locked before starting the build.';
143
- return output;
144
- }
145
- if (!entity.build_status) {
146
- output.success = true;
147
- return output;
148
- }
149
- if (entity.build_status === AnalysisBuildStatus.FAILED || entity.build_status === AnalysisBuildStatus.STOPPED) {
150
- output.success = true;
151
- return output;
152
- }
153
- output.message = `The current analysis build status "${entity.build_status}" does not allow a build start.`;
154
- return output;
155
- }
156
- case AnalysisAPICommand.BUILD_STOP:
157
- {
158
- if (!entity.configuration_locked) {
159
- output.message = 'The analysis configuration must be locked before stopping the build.';
160
- return output;
161
- }
162
- if (!entity.build_status) {
163
- output.message = 'The analysis build process has not been initialized.';
164
- return output;
165
- }
166
- if (entity.build_status === AnalysisBuildStatus.STOPPING || entity.build_status === AnalysisBuildStatus.STARTED || entity.build_status === AnalysisBuildStatus.STARTING) {
167
- output.success = true;
168
- return output;
169
- }
170
- output.message = `The current analysis build status "${entity.build_status}" does not allow a build stop.`;
171
- return output;
172
- }
173
- case AnalysisAPICommand.BUILD_STATUS:
174
- {
175
- if (!entity.configuration_locked) {
176
- output.message = 'The analysis configuration must be locked before checking the build status.';
177
- return output;
178
- }
179
- if (!entity.build_status) {
180
- output.message = 'The analysis build process has not been initialized.';
181
- return output;
182
- }
183
- if (entity.build_status === AnalysisBuildStatus.FINISHED) {
184
- output.message = 'The analysis build process has already been successfully completed.';
185
- return output;
186
- }
187
- output.success = true;
188
- return output;
189
- }
190
- case AnalysisAPICommand.CONFIGURATION_LOCK:
191
- {
192
- if (entity.configuration_locked) {
193
- const error = AnalysisError.configurationLocked();
194
- output.message = error.message;
195
- return output;
196
- }
197
- if (entity.build_status) {
198
- const error = AnalysisError.buildInitialized();
199
- output.message = error.message;
200
- return output;
201
- }
202
- if (!entity.configuration_node_default_valid) {
203
- const error = AnalysisError.defaultNodeRequired();
204
- output.message = error.message;
205
- return output;
206
- }
207
- if (!entity.configuration_node_aggregator_valid) {
208
- const error = AnalysisError.aggregatorNodeRequired();
209
- output.message = error.message;
210
- return output;
211
- }
212
- if (!entity.configuration_image_valid) {
213
- const error = AnalysisError.imageAssignmentRequired();
214
- output.message = error.message;
215
- return output;
216
- }
217
- output.success = true;
218
- return output;
219
- }
220
- case AnalysisAPICommand.CONFIGURATION_UNLOCK:
221
- {
222
- if (!entity.configuration_locked) {
223
- output.message = 'The analysis configuration is already unlocked.';
224
- return output;
225
- }
226
- if (!entity.build_status) {
227
- output.success = true;
228
- return output;
229
- }
230
- if (entity.build_status === AnalysisBuildStatus.FAILED || entity.build_status === AnalysisBuildStatus.STOPPED || entity.build_status === AnalysisBuildStatus.STOPPING) {
231
- output.success = true;
232
- return output;
233
- }
234
- output.message = `The current analysis build status "${entity.build_status}" does not allow unlocking the configuration.`;
235
- return output;
236
- }
237
- }
238
- return output;
239
- }
240
-
241
- /*
242
- * Copyright (c) 2024.
243
- * Author Peter Placzek (tada5hi)
244
- * For the full copyright and license information,
245
- * view the LICENSE file that was distributed with this source code.
246
- */ var AnalysisBucketType = /*#__PURE__*/ function(AnalysisBucketType) {
247
- AnalysisBucketType["CODE"] = "CODE";
248
- AnalysisBucketType["RESULT"] = "RESULT";
249
- AnalysisBucketType["TEMP"] = "TEMP";
250
- return AnalysisBucketType;
251
- }({});
252
-
253
- function buildAnalysisBucketName(type, id) {
254
- switch(type){
255
- case AnalysisBucketType.CODE:
256
- {
257
- return `analysis-code-files.${id}`;
258
- }
259
- case AnalysisBucketType.TEMP:
260
- {
261
- return `analysis-temp-files.${id}`;
262
- }
263
- case AnalysisBucketType.RESULT:
264
- {
265
- return `analysis-result-files.${id}`;
266
- }
267
- }
268
- throw new SyntaxError('The argument can only have any bucket type value.');
269
- }
270
-
271
- /*
272
- * Copyright (c) 2021-2024.
273
- * Author Peter Placzek (tada5hi)
274
- * For the full copyright and license information,
275
- * view the LICENSE file that was distributed with this source code.
276
- */ var AnalysisNodeApprovalCommand = /*#__PURE__*/ function(AnalysisNodeApprovalCommand) {
277
- AnalysisNodeApprovalCommand["APPROVE"] = "approve";
278
- AnalysisNodeApprovalCommand["REJECT"] = "reject";
279
- return AnalysisNodeApprovalCommand;
280
- }({});
281
- var AnalysisNodeApprovalStatus = /*#__PURE__*/ function(AnalysisNodeApprovalStatus) {
282
- AnalysisNodeApprovalStatus["REJECTED"] = "rejected";
283
- AnalysisNodeApprovalStatus["APPROVED"] = "approved";
284
- return AnalysisNodeApprovalStatus;
285
- }({});
286
- // -------------------------------------------------------------------------
287
- var AnalysisNodeRunStatus = /*#__PURE__*/ function(AnalysisNodeRunStatus) {
288
- AnalysisNodeRunStatus["STARTING"] = "starting";
289
- AnalysisNodeRunStatus["STARTED"] = "started";
290
- AnalysisNodeRunStatus["STOPPING"] = "stopping";
291
- AnalysisNodeRunStatus["STOPPED"] = "stopped";
292
- AnalysisNodeRunStatus["RUNNING"] = "running";
293
- AnalysisNodeRunStatus["FINISHED"] = "finished";
294
- AnalysisNodeRunStatus["FAILED"] = "failed";
295
- return AnalysisNodeRunStatus;
296
- }({});
297
-
298
- /*
299
- * Copyright (c) 2022-2024.
300
- * Author Peter Placzek (tada5hi)
301
- * For the full copyright and license information,
302
- * view the LICENSE file that was distributed with this source code.
303
- */ function buildSocketRealmNamespaceName(realmId) {
304
- return `/resources#${realmId}`;
305
- }
306
- function parseSocketRealmNamespaceName(name) {
307
- return name.startsWith('/resources#') ? name.substring('/resources#'.length) : name;
308
- }
309
-
310
- /*
311
- * Copyright (c) 2021-2024.
312
- * Author Peter Placzek (tada5hi)
313
- * For the full copyright and license information,
314
- * view the LICENSE file that was distributed with this source code.
315
- */ var MasterImageCommand = /*#__PURE__*/ function(MasterImageCommand) {
316
- MasterImageCommand["SYNC"] = "sync";
317
- return MasterImageCommand;
318
- }({});
319
- var MasterImageGroupType = /*#__PURE__*/ function(MasterImageGroupType) {
320
- MasterImageGroupType["LANGUAGE"] = "language";
321
- MasterImageGroupType["DEFAULT"] = "default";
322
- return MasterImageGroupType;
323
- }({});
324
-
325
- /*
326
- * Copyright (c) 2021-2024.
327
- * Author Peter Placzek (tada5hi)
328
- * For the full copyright and license information,
329
- * view the LICENSE file that was distributed with this source code.
330
- */ var ProjectNodeApprovalCommand = /*#__PURE__*/ function(ProjectNodeApprovalCommand) {
331
- ProjectNodeApprovalCommand["APPROVE"] = "approve";
332
- ProjectNodeApprovalCommand["REJECT"] = "reject";
333
- return ProjectNodeApprovalCommand;
334
- }({});
335
- var ProjectNodeApprovalStatus = /*#__PURE__*/ function(ProjectNodeApprovalStatus) {
336
- ProjectNodeApprovalStatus["REJECTED"] = "rejected";
337
- ProjectNodeApprovalStatus["APPROVED"] = "approved";
338
- return ProjectNodeApprovalStatus;
339
- }({});
340
-
341
- /*
342
- * Copyright (c) 2024.
343
- * Author Peter Placzek (tada5hi)
344
- * For the full copyright and license information,
345
- * view the LICENSE file that was distributed with this source code.
346
- */ const registryRobotSecretRegex = /^(?=.*[A-Z])(?=.*[a-z])(?=.*\d).{8,}$/;
347
-
348
- /*
349
- * Copyright (c) 2022-2024.
350
- * Author Peter Placzek (tada5hi)
351
- * For the full copyright and license information,
352
- * view the LICENSE file that was distributed with this source code.
353
- */ function buildRegistryClientConnectionStringFromRegistry(entity) {
354
- // todo: support other registries beside harbor and v2.0
355
- const url = `https://${entity.host}/api/v2.0/`;
356
- return `${entity.account_name}:${entity.account_secret}@${url}`;
357
- }
358
-
359
- /*
360
- * Copyright (c) 2022-2024.
361
- * Author Peter Placzek (tada5hi)
362
- * For the full copyright and license information,
363
- * view the LICENSE file that was distributed with this source code.
364
- */ var RegistryProjectType = /*#__PURE__*/ function(RegistryProjectType) {
365
- RegistryProjectType["DEFAULT"] = "default";
366
- RegistryProjectType["AGGREGATOR"] = "aggregator";
367
- RegistryProjectType["INCOMING"] = "incoming";
368
- RegistryProjectType["OUTGOING"] = "outgoing";
369
- RegistryProjectType["MASTER_IMAGES"] = "masterImages";
370
- RegistryProjectType["NODE"] = "node";
371
- return RegistryProjectType;
372
- }({});
373
-
374
- /*
375
- * Copyright (c) 2021-2024.
376
- * Author Peter Placzek (tada5hi)
377
- * For the full copyright and license information,
378
- * view the LICENSE file that was distributed with this source code.
379
- */ function buildSocketRegistryProjectRoomName(id) {
380
- return `registry-projects${id ? `#${id}` : ''}`;
381
- }
382
-
383
- function generateRegistryProjectId() {
384
- return kit.createNanoID('0123456789abcdefghijklmnopqrstuvwxyz');
385
- }
386
-
387
- /*
388
- * Copyright (c) 2024.
389
- * Author Peter Placzek (tada5hi)
390
- * For the full copyright and license information,
391
- * view the LICENSE file that was distributed with this source code.
392
- */ var NodeType = /*#__PURE__*/ function(NodeType) {
393
- NodeType["AGGREGATOR"] = "aggregator";
394
- NodeType["DEFAULT"] = "default";
395
- return NodeType;
396
- }({});
397
- var NodeSocketClientEventName = /*#__PURE__*/ function(NodeSocketClientEventName) {
398
- NodeSocketClientEventName["CONNECT"] = "nodeConnect";
399
- NodeSocketClientEventName["DISCONNECT"] = "nodeDisconnect";
400
- NodeSocketClientEventName["MESSAGE"] = "nodeMessage";
401
- return NodeSocketClientEventName;
402
- }({});
403
- var NodeSocketServerEventName = /*#__PURE__*/ function(NodeSocketServerEventName) {
404
- NodeSocketServerEventName["CONNECTED"] = "nodeConnected";
405
- NodeSocketServerEventName["DISCONNECTED"] = "nodeDisconnected";
406
- NodeSocketServerEventName["MESSAGE"] = "nodeMessage";
407
- return NodeSocketServerEventName;
408
- }({});
409
-
410
- /*
411
- * Copyright (c) 2021-2024.
412
- * Author Peter Placzek (tada5hi)
413
- * For the full copyright and license information,
414
- * view the LICENSE file that was distributed with this source code.
415
- */ var RegistryAPICommand = /*#__PURE__*/ function(RegistryAPICommand) {
416
- RegistryAPICommand["SETUP"] = "setup";
417
- RegistryAPICommand["CLEANUP"] = "cleanup";
418
- RegistryAPICommand["DELETE"] = "delete";
419
- RegistryAPICommand["PROJECT_LINK"] = "projectLink";
420
- RegistryAPICommand["PROJECT_UNLINK"] = "projectUnlink";
421
- return RegistryAPICommand;
422
- }({});
423
- /**
424
- * Incoming train project name
425
- */ const REGISTRY_INCOMING_PROJECT_NAME = 'incoming';
426
- /**
427
- * Outgoing train project name
428
- */ const REGISTRY_OUTGOING_PROJECT_NAME = 'outgoing';
429
- /**
430
- * Master Image project name
431
- */ const REGISTRY_MASTER_IMAGE_PROJECT_NAME = 'master';
432
- /**
433
- * Latest image tag
434
- */ const REGISTRY_ARTIFACT_TAG_LATEST = 'latest';
435
- /**
436
- * base image tag
437
- */ const REGISTRY_ARTIFACT_TAG_BASE = 'base';
438
-
439
- /*
440
- * Copyright (c) 2021-2024.
441
- * Author Peter Placzek (tada5hi)
442
- * For the full copyright and license information,
443
- * view the LICENSE file that was distributed with this source code.
444
- */ var SecretStorageAPICommand = /*#__PURE__*/ function(SecretStorageAPICommand) {
445
- SecretStorageAPICommand["ENGINE_CREATE"] = "engineCreate";
446
- SecretStorageAPICommand["ENGINE_KEY_SAVE"] = "engineKeySave";
447
- SecretStorageAPICommand["ENGINE_KEY_PULL"] = "engineKeyPull";
448
- SecretStorageAPICommand["ENGINE_KEY_DROP"] = "engineKeyDrop";
449
- return SecretStorageAPICommand;
450
- }({});
451
-
452
- /*
453
- * Copyright (c) 2021-2024.
454
- * Author Peter Placzek (tada5hi)
455
- * For the full copyright and license information,
456
- * view the LICENSE file that was distributed with this source code.
457
- */ var ServiceID = /*#__PURE__*/ function(ServiceID) {
458
- // Core Service(s)
459
- ServiceID["SYSTEM"] = "system";
460
- // Third Party Service(s)
461
- ServiceID["REGISTRY"] = "registry";
462
- return ServiceID;
463
- }({});
464
-
465
- /*
466
- * Copyright (c) 2021-2024.
467
- * Author Peter Placzek (tada5hi)
468
- * For the full copyright and license information,
469
- * view the LICENSE file that was distributed with this source code.
470
- */ var StationRegistryAPICommand = /*#__PURE__*/ function(StationRegistryAPICommand) {
471
- StationRegistryAPICommand["SYNC"] = "sync";
472
- return StationRegistryAPICommand;
473
- }({});
474
-
475
- /*
476
- * Copyright (c) 2023-2024.
477
- * Author Peter Placzek (tada5hi)
478
- * For the full copyright and license information,
479
- * view the LICENSE file that was distributed with this source code.
480
- */ var DomainType = /*#__PURE__*/ function(DomainType) {
481
- DomainType["MASTER_IMAGE"] = "masterImage";
482
- DomainType["MASTER_IMAGE_GROUP"] = "masterImageGroup";
483
- DomainType["PROJECT"] = "project";
484
- DomainType["PROJECT_NODE"] = "projectNode";
485
- DomainType["REGISTRY"] = "registry";
486
- DomainType["REGISTRY_PROJECT"] = "registryProject";
487
- DomainType["NODE"] = "node";
488
- DomainType["ANALYSIS"] = "analysis";
489
- DomainType["ANALYSIS_BUCKET"] = "analysisBucket";
490
- DomainType["ANALYSIS_BUCKET_FILE"] = "analysisBucketFile";
491
- DomainType["ANALYSIS_LOG"] = "analysisLog";
492
- DomainType["ANALYSIS_NODE"] = "analysisNode";
493
- DomainType["ANALYSIS_NODE_EVENT"] = "analysisNodeEvent";
494
- DomainType["ANALYSIS_NODE_LOG"] = "analysisNodeLog";
495
- DomainType["ANALYSIS_PERMISSION"] = "analysisPermission";
496
- return DomainType;
497
- }({});
498
- var DomainSubType = /*#__PURE__*/ function(DomainSubType) {
499
- DomainSubType["PROJECT_NODE_IN"] = "projectNodeIn";
500
- DomainSubType["PROJECT_NODE_OUT"] = "projectNodeOut";
501
- DomainSubType["ANALYSIS_NODE_IN"] = "analysisNodeIn";
502
- DomainSubType["ANALYSIS_NODE_OUT"] = "analysisNodeOut";
503
- return DomainSubType;
504
- }({});
505
- var DomainEventName = /*#__PURE__*/ function(DomainEventName) {
506
- DomainEventName["CREATED"] = "created";
507
- DomainEventName["DELETED"] = "deleted";
508
- DomainEventName["UPDATED"] = "updated";
509
- return DomainEventName;
510
- }({});
511
- var DomainEventSubscriptionName = /*#__PURE__*/ function(DomainEventSubscriptionName) {
512
- DomainEventSubscriptionName["SUBSCRIBE"] = "subscribe";
513
- DomainEventSubscriptionName["UNSUBSCRIBE"] = "unsubscribe";
514
- return DomainEventSubscriptionName;
515
- }({});
516
-
517
- /*
518
- * Copyright (c) 2022-2024.
519
- * Author Peter Placzek (tada5hi)
520
- * For the full copyright and license information,
521
- * view the LICENSE file that was distributed with this source code.
522
- */ // todo: rename to buildEntityChannelName
523
- function buildDomainChannelName(domain, id) {
524
- if (typeof id === 'string' || typeof id === 'number') {
525
- return `${domain}/${id}`;
526
- }
527
- return domain;
528
- }
529
- // todo: rename to buildEntityNamespaceName
530
- function buildDomainNamespaceName(id) {
531
- return id ? `/${kit.DomainEventNamespace}/${id}` : `/${kit.DomainEventNamespace}`;
532
- }
533
-
534
- /*
535
- * Copyright (c) 2024.
536
- * Author Peter Placzek (tada5hi)
537
- * For the full copyright and license information,
538
- * view the LICENSE file that was distributed with this source code.
539
- */ var EnvironmentName = /*#__PURE__*/ function(EnvironmentName) {
540
- EnvironmentName["TEST"] = "test";
541
- EnvironmentName["DEVELOPMENT"] = "development";
542
- EnvironmentName["PRODUCTION"] = "production";
543
- return EnvironmentName;
544
- }({});
545
-
546
- exports.APIConnectionStringError = APIConnectionStringError;
547
- exports.AnalysisAPICommand = AnalysisAPICommand;
548
- exports.AnalysisBucketType = AnalysisBucketType;
549
- exports.AnalysisBuildStatus = AnalysisBuildStatus;
550
- exports.AnalysisConfigurationStatus = AnalysisConfigurationStatus;
551
- exports.AnalysisContainerPath = AnalysisContainerPath;
552
- exports.AnalysisError = AnalysisError;
553
- exports.AnalysisNodeApprovalCommand = AnalysisNodeApprovalCommand;
554
- exports.AnalysisNodeApprovalStatus = AnalysisNodeApprovalStatus;
555
- exports.AnalysisNodeRunStatus = AnalysisNodeRunStatus;
556
- exports.AnalysisResultStatus = AnalysisResultStatus;
557
- exports.AnalysisRunStatus = AnalysisRunStatus;
558
- exports.DomainEventName = DomainEventName;
559
- exports.DomainEventSubscriptionName = DomainEventSubscriptionName;
560
- exports.DomainSubType = DomainSubType;
561
- exports.DomainType = DomainType;
562
- exports.EnvironmentName = EnvironmentName;
563
- exports.ErrorCode = ErrorCode;
564
- exports.MasterImageCommand = MasterImageCommand;
565
- exports.MasterImageGroupType = MasterImageGroupType;
566
- exports.NodeSocketClientEventName = NodeSocketClientEventName;
567
- exports.NodeSocketServerEventName = NodeSocketServerEventName;
568
- exports.NodeType = NodeType;
569
- exports.ProjectNodeApprovalCommand = ProjectNodeApprovalCommand;
570
- exports.ProjectNodeApprovalStatus = ProjectNodeApprovalStatus;
571
- exports.REGISTRY_ARTIFACT_TAG_BASE = REGISTRY_ARTIFACT_TAG_BASE;
572
- exports.REGISTRY_ARTIFACT_TAG_LATEST = REGISTRY_ARTIFACT_TAG_LATEST;
573
- exports.REGISTRY_INCOMING_PROJECT_NAME = REGISTRY_INCOMING_PROJECT_NAME;
574
- exports.REGISTRY_MASTER_IMAGE_PROJECT_NAME = REGISTRY_MASTER_IMAGE_PROJECT_NAME;
575
- exports.REGISTRY_OUTGOING_PROJECT_NAME = REGISTRY_OUTGOING_PROJECT_NAME;
576
- exports.RegistryAPICommand = RegistryAPICommand;
577
- exports.RegistryProjectType = RegistryProjectType;
578
- exports.SecretStorageAPICommand = SecretStorageAPICommand;
579
- exports.ServiceID = ServiceID;
580
- exports.StationRegistryAPICommand = StationRegistryAPICommand;
581
- exports.buildAnalysisBucketName = buildAnalysisBucketName;
582
- exports.buildDomainChannelName = buildDomainChannelName;
583
- exports.buildDomainNamespaceName = buildDomainNamespaceName;
584
- exports.buildRegistryClientConnectionStringFromRegistry = buildRegistryClientConnectionStringFromRegistry;
585
- exports.buildSocketRealmNamespaceName = buildSocketRealmNamespaceName;
586
- exports.buildSocketRegistryProjectRoomName = buildSocketRegistryProjectRoomName;
587
- exports.generateRegistryProjectId = generateRegistryProjectId;
588
- exports.isAnalysisAPICommandExecutable = isAnalysisAPICommandExecutable;
589
- exports.parseSocketRealmNamespaceName = parseSocketRealmNamespaceName;
590
- exports.registryRobotSecretRegex = registryRobotSecretRegex;
591
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/error/constants.ts","../src/error/entities/connection-string.ts","../src/domains/analysis/error.ts","../src/domains/analysis/constants.ts","../src/domains/analysis/helpers.ts","../src/domains/analysis-bucket/constants.ts","../src/domains/analysis-bucket/utils.ts","../src/domains/analysis-node/constants.ts","../src/domains/realm/socket.ts","../src/domains/master-image/constants.ts","../src/domains/project-node/constants.ts","../src/domains/registry/constants.ts","../src/domains/registry/utils.ts","../src/domains/registry-project/constants.ts","../src/domains/registry-project/socket.ts","../src/domains/registry-project/utils.ts","../src/domains/node/constants.ts","../src/domains/service/registry/constants.ts","../src/domains/service/secret-engine/constants.ts","../src/domains/service/constants.ts","../src/domains/service/station-registry/constants.ts","../src/domains/constants.ts","../src/domains/utils.ts","../src/constants.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum ErrorCode {\n LICENSE_AGREEMENT = 'license_agreement',\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport class APIConnectionStringError extends Error {\n static connectionStringMissing(serviceName?: string) {\n const parts : string[] = ['The'];\n if (typeof serviceName === 'string') {\n parts.push(serviceName);\n }\n parts.push('connection string is not specified.');\n return new this(parts.join(' '));\n }\n\n static connectionStringInvalid(serviceName?: string) {\n const parts : string[] = ['The'];\n if (typeof serviceName === 'string') {\n parts.push(serviceName);\n }\n parts.push('connection string is not valid.');\n return new this(parts.join(' '));\n }\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport class AnalysisError extends Error {\n static defaultNodeRequired() {\n return new AnalysisError('At least one default node must be selected.');\n }\n\n static aggregatorNodeRequired() {\n return new AnalysisError('An aggregator node node must be selected.');\n }\n\n static imageAssignmentRequired() {\n return new AnalysisError('A master image must be assigned to the analysis.');\n }\n\n static configurationLocked() {\n return new AnalysisError('The analysis configuration is locked.');\n }\n\n static buildInitialized() {\n return new AnalysisError('The analysis build process has already been initialized.');\n }\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum AnalysisBuildStatus {\n STARTING = 'starting', // ui trigger\n STARTED = 'started', // tb trigger\n\n STOPPING = 'stopping', // ui trigger\n STOPPED = 'stopped', // tb trigger\n\n FINISHED = 'finished', // tb trigger\n FAILED = 'failed', // tb trigger\n}\n\n// -------------------------------------------------------------------------\n\nexport enum AnalysisConfigurationStatus {\n NODES = 'nodes',\n MASTER_IMAGE = 'masterImage',\n FILES = 'files',\n FINISHED = 'finished',\n}\n\n// -------------------------------------------------------------------------\n\nexport enum AnalysisRunStatus {\n STARTING = 'starting',\n STARTED = 'started',\n\n RUNNING = 'running',\n\n STOPPING = 'stopping',\n STOPPED = 'stopped',\n\n FINISHED = 'finished',\n FAILED = 'failed',\n}\n\n// -------------------------------------------------------------------------\n\nexport enum AnalysisResultStatus {\n STARTED = 'started',\n\n DOWNLOADING = 'downloading',\n DOWNLOADED = 'downloaded',\n\n PROCESSING = 'extracting',\n PROCESSED = 'extracted',\n\n FINISHED = 'finished',\n FAILED = 'failed',\n}\n\n// -------------------------------------------------------------------------\n\nexport enum AnalysisAPICommand {\n SPIN_UP = 'spinUp',\n TEAR_DOWN = 'tearDown',\n\n BUILD_START = 'buildStart',\n BUILD_STOP = 'buildStop',\n BUILD_STATUS = 'buildStatus',\n\n CONFIGURATION_LOCK = 'configurationLock',\n CONFIGURATION_UNLOCK = 'configurationUnlock',\n}\n\n// -------------------------------------------------------------------------\n\nexport enum AnalysisContainerPath {\n CODE = '/opt/code/',\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { AnalysisAPICommand, AnalysisBuildStatus } from './constants';\nimport type { Analysis } from './entity';\nimport { AnalysisError } from './error';\n\ntype CanResult = {\n success: boolean,\n message: string,\n};\n\n/**\n * Check if an analysis can be build based on analysis attributes (build_status, configuration_locked, ...)\n *\n * @param entity\n * @param command\n */\nexport function isAnalysisAPICommandExecutable(\n entity: Analysis,\n command: `${AnalysisAPICommand}`,\n) : CanResult {\n const output : CanResult = {\n success: false,\n message: `The analysis command ${command} cannot be executed.`,\n };\n\n switch (command) {\n case AnalysisAPICommand.BUILD_START: {\n if (!entity.configuration_locked) {\n output.success = false;\n output.message = 'The analysis configuration must be locked before starting the build.';\n return output;\n }\n\n if (!entity.build_status) {\n output.success = true;\n return output;\n }\n\n if (\n entity.build_status === AnalysisBuildStatus.FAILED ||\n entity.build_status === AnalysisBuildStatus.STOPPED\n ) {\n output.success = true;\n return output;\n }\n\n output.message = `The current analysis build status \"${entity.build_status}\" does not allow a build start.`;\n return output;\n }\n case AnalysisAPICommand.BUILD_STOP: {\n if (!entity.configuration_locked) {\n output.message = 'The analysis configuration must be locked before stopping the build.';\n return output;\n }\n\n if (!entity.build_status) {\n output.message = 'The analysis build process has not been initialized.';\n return output;\n }\n\n if (entity.build_status === AnalysisBuildStatus.STOPPING ||\n entity.build_status === AnalysisBuildStatus.STARTED ||\n entity.build_status === AnalysisBuildStatus.STARTING\n ) {\n output.success = true;\n return output;\n }\n\n output.message = `The current analysis build status \"${entity.build_status}\" does not allow a build stop.`;\n return output;\n }\n case AnalysisAPICommand.BUILD_STATUS: {\n if (!entity.configuration_locked) {\n output.message = 'The analysis configuration must be locked before checking the build status.';\n return output;\n }\n\n if (!entity.build_status) {\n output.message = 'The analysis build process has not been initialized.';\n return output;\n }\n\n if (entity.build_status === AnalysisBuildStatus.FINISHED) {\n output.message = 'The analysis build process has already been successfully completed.';\n return output;\n }\n\n output.success = true;\n return output;\n }\n case AnalysisAPICommand.CONFIGURATION_LOCK: {\n if (entity.configuration_locked) {\n const error = AnalysisError.configurationLocked();\n output.message = error.message;\n return output;\n }\n\n if (entity.build_status) {\n const error = AnalysisError.buildInitialized();\n output.message = error.message;\n return output;\n }\n\n if (!entity.configuration_node_default_valid) {\n const error = AnalysisError.defaultNodeRequired();\n output.message = error.message;\n return output;\n }\n\n if (!entity.configuration_node_aggregator_valid) {\n const error = AnalysisError.aggregatorNodeRequired();\n output.message = error.message;\n return output;\n }\n\n if (!entity.configuration_image_valid) {\n const error = AnalysisError.imageAssignmentRequired();\n output.message = error.message;\n return output;\n }\n\n output.success = true;\n return output;\n }\n case AnalysisAPICommand.CONFIGURATION_UNLOCK: {\n if (!entity.configuration_locked) {\n output.message = 'The analysis configuration is already unlocked.';\n return output;\n }\n\n if (!entity.build_status) {\n output.success = true;\n return output;\n }\n\n if (\n entity.build_status === AnalysisBuildStatus.FAILED ||\n entity.build_status === AnalysisBuildStatus.STOPPED ||\n entity.build_status === AnalysisBuildStatus.STOPPING\n ) {\n output.success = true;\n return output;\n }\n\n output.message = `The current analysis build status \"${entity.build_status}\" does not allow unlocking the configuration.`;\n return output;\n }\n }\n\n return output;\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum AnalysisBucketType {\n CODE = 'CODE',\n RESULT = 'RESULT',\n TEMP = 'TEMP',\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Analysis } from '../analysis';\nimport { AnalysisBucketType } from './constants';\n\nexport function buildAnalysisBucketName(\n type: `${AnalysisBucketType}`,\n id: Analysis['id'],\n) {\n switch (type) {\n case AnalysisBucketType.CODE: {\n return `analysis-code-files.${id}`;\n }\n case AnalysisBucketType.TEMP: {\n return `analysis-temp-files.${id}`;\n }\n case AnalysisBucketType.RESULT: {\n return `analysis-result-files.${id}`;\n }\n }\n\n throw new SyntaxError('The argument can only have any bucket type value.');\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum AnalysisNodeApprovalCommand {\n APPROVE = 'approve',\n REJECT = 'reject',\n}\n\nexport enum AnalysisNodeApprovalStatus {\n REJECTED = 'rejected',\n APPROVED = 'approved',\n}\n\n// -------------------------------------------------------------------------\n\nexport enum AnalysisNodeRunStatus {\n STARTING = 'starting',\n STARTED = 'started',\n\n STOPPING = 'stopping',\n STOPPED = 'stopped',\n\n RUNNING = 'running',\n FINISHED = 'finished',\n\n FAILED = 'failed',\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Realm } from '@authup/core-kit';\n\nexport function buildSocketRealmNamespaceName(realmId: Realm['id']) {\n return `/resources#${realmId}`;\n}\n\nexport function parseSocketRealmNamespaceName(name: string) : string | undefined {\n return name.startsWith('/resources#') ?\n name.substring('/resources#'.length) :\n name;\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum MasterImageCommand {\n SYNC = 'sync',\n}\n\nexport enum MasterImageGroupType {\n LANGUAGE = 'language',\n DEFAULT = 'default',\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum ProjectNodeApprovalCommand {\n APPROVE = 'approve',\n REJECT = 'reject',\n}\n\nexport enum ProjectNodeApprovalStatus {\n REJECTED = 'rejected',\n APPROVED = 'approved',\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport const registryRobotSecretRegex = /^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d).{8,}$/;\n","/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Registry } from './entity';\n\nexport function buildRegistryClientConnectionStringFromRegistry(entity: Registry) {\n // todo: support other registries beside harbor and v2.0\n\n const url = `https://${entity.host}/api/v2.0/`;\n return `${entity.account_name}:${entity.account_secret}@${url}`;\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum RegistryProjectType {\n DEFAULT = 'default',\n AGGREGATOR = 'aggregator',\n INCOMING = 'incoming',\n OUTGOING = 'outgoing',\n MASTER_IMAGES = 'masterImages',\n NODE = 'node',\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { RegistryProject } from './entity';\n\nexport function buildSocketRegistryProjectRoomName(id?: RegistryProject['id']) {\n return `registry-projects${id ? `#${id}` : ''}`;\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createNanoID } from '@privateaim/kit';\n\nexport function generateRegistryProjectId() {\n return createNanoID('0123456789abcdefghijklmnopqrstuvwxyz');\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum NodeType {\n AGGREGATOR = 'aggregator',\n DEFAULT = 'default',\n}\n\nexport enum NodeSocketClientEventName {\n CONNECT = 'nodeConnect',\n DISCONNECT = 'nodeDisconnect',\n MESSAGE = 'nodeMessage',\n}\n\nexport enum NodeSocketServerEventName {\n CONNECTED = 'nodeConnected',\n DISCONNECTED = 'nodeDisconnected',\n MESSAGE = 'nodeMessage',\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum RegistryAPICommand {\n SETUP = 'setup',\n CLEANUP = 'cleanup',\n DELETE = 'delete',\n\n PROJECT_LINK = 'projectLink',\n PROJECT_UNLINK = 'projectUnlink',\n}\n\n/**\n * Incoming train project name\n */\nexport const REGISTRY_INCOMING_PROJECT_NAME = 'incoming';\n\n/**\n * Outgoing train project name\n */\nexport const REGISTRY_OUTGOING_PROJECT_NAME = 'outgoing';\n\n/**\n * Master Image project name\n */\nexport const REGISTRY_MASTER_IMAGE_PROJECT_NAME = 'master';\n\n/**\n * Latest image tag\n */\nexport const REGISTRY_ARTIFACT_TAG_LATEST = 'latest';\n\n/**\n * base image tag\n */\nexport const REGISTRY_ARTIFACT_TAG_BASE = 'base';\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum SecretStorageAPICommand {\n ENGINE_CREATE = 'engineCreate',\n\n ENGINE_KEY_SAVE = 'engineKeySave',\n ENGINE_KEY_PULL = 'engineKeyPull',\n ENGINE_KEY_DROP = 'engineKeyDrop',\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum ServiceID {\n // Core Service(s)\n SYSTEM = 'system',\n\n // Third Party Service(s)\n REGISTRY = 'registry',\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum StationRegistryAPICommand {\n SYNC = 'sync',\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum DomainType {\n MASTER_IMAGE = 'masterImage',\n MASTER_IMAGE_GROUP = 'masterImageGroup',\n PROJECT = 'project',\n PROJECT_NODE = 'projectNode',\n REGISTRY = 'registry',\n REGISTRY_PROJECT = 'registryProject',\n NODE = 'node',\n ANALYSIS = 'analysis',\n ANALYSIS_BUCKET = 'analysisBucket',\n ANALYSIS_BUCKET_FILE = 'analysisBucketFile',\n ANALYSIS_LOG = 'analysisLog',\n ANALYSIS_NODE = 'analysisNode',\n ANALYSIS_NODE_EVENT = 'analysisNodeEvent',\n ANALYSIS_NODE_LOG = 'analysisNodeLog',\n ANALYSIS_PERMISSION = 'analysisPermission',\n}\n\nexport enum DomainSubType {\n PROJECT_NODE_IN = 'projectNodeIn',\n PROJECT_NODE_OUT = 'projectNodeOut',\n ANALYSIS_NODE_IN = 'analysisNodeIn',\n ANALYSIS_NODE_OUT = 'analysisNodeOut',\n}\n\nexport enum DomainEventName {\n CREATED = 'created',\n DELETED = 'deleted',\n UPDATED = 'updated',\n}\n\nexport enum DomainEventSubscriptionName {\n SUBSCRIBE = 'subscribe',\n UNSUBSCRIBE = 'unsubscribe',\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\n// todo: rename to buildEntityChannelName\nimport { DomainEventNamespace } from '@privateaim/kit';\n\nexport function buildDomainChannelName(domain: string, id?: string | number) {\n if (typeof id === 'string' || typeof id === 'number') {\n return `${domain}/${id}`;\n }\n\n return domain;\n}\n\n// todo: rename to buildEntityNamespaceName\nexport function buildDomainNamespaceName(id?: string | number) {\n return id ?\n `/${DomainEventNamespace}/${id}` :\n `/${DomainEventNamespace}`;\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum EnvironmentName {\n TEST = 'test',\n DEVELOPMENT = 'development',\n PRODUCTION = 'production',\n}\n"],"names":["ErrorCode","APIConnectionStringError","Error","connectionStringMissing","serviceName","parts","push","join","connectionStringInvalid","AnalysisError","defaultNodeRequired","aggregatorNodeRequired","imageAssignmentRequired","configurationLocked","buildInitialized","AnalysisBuildStatus","AnalysisConfigurationStatus","AnalysisRunStatus","AnalysisResultStatus","AnalysisAPICommand","AnalysisContainerPath","isAnalysisAPICommandExecutable","entity","command","output","success","message","BUILD_START","configuration_locked","build_status","FAILED","STOPPED","BUILD_STOP","STOPPING","STARTED","STARTING","BUILD_STATUS","FINISHED","CONFIGURATION_LOCK","error","configuration_node_default_valid","configuration_node_aggregator_valid","configuration_image_valid","CONFIGURATION_UNLOCK","AnalysisBucketType","buildAnalysisBucketName","type","id","CODE","TEMP","RESULT","SyntaxError","AnalysisNodeApprovalCommand","AnalysisNodeApprovalStatus","AnalysisNodeRunStatus","buildSocketRealmNamespaceName","realmId","parseSocketRealmNamespaceName","name","startsWith","substring","length","MasterImageCommand","MasterImageGroupType","ProjectNodeApprovalCommand","ProjectNodeApprovalStatus","registryRobotSecretRegex","buildRegistryClientConnectionStringFromRegistry","url","host","account_name","account_secret","RegistryProjectType","buildSocketRegistryProjectRoomName","generateRegistryProjectId","createNanoID","NodeType","NodeSocketClientEventName","NodeSocketServerEventName","RegistryAPICommand","REGISTRY_INCOMING_PROJECT_NAME","REGISTRY_OUTGOING_PROJECT_NAME","REGISTRY_MASTER_IMAGE_PROJECT_NAME","REGISTRY_ARTIFACT_TAG_LATEST","REGISTRY_ARTIFACT_TAG_BASE","SecretStorageAPICommand","ServiceID","StationRegistryAPICommand","DomainType","DomainSubType","DomainEventName","DomainEventSubscriptionName","buildDomainChannelName","domain","buildDomainNamespaceName","DomainEventNamespace","EnvironmentName"],"mappings":"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"}