@privateaim/core-kit 0.8.18 → 0.8.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,36 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.8.20](https://github.com/PrivateAIM/hub/compare/v0.8.19...v0.8.20) (2025-10-29)
4
+
5
+
6
+ ### Features
7
+
8
+ * analysis aggregated configuration columns ([#1267](https://github.com/PrivateAIM/hub/issues/1267)) ([e60c460](https://github.com/PrivateAIM/hub/commit/e60c460c1f701f8b73450e7c618d00de27f8462a))
9
+
10
+
11
+ ### Dependencies
12
+
13
+ * The following workspace dependencies were updated
14
+ * devDependencies
15
+ * @privateaim/kit bumped from ^0.8.19 to ^0.8.20
16
+ * @privateaim/telemetry-kit bumped from ^0.8.19 to ^0.8.20
17
+ * peerDependencies
18
+ * @privateaim/kit bumped from ^0.8.19 to ^0.8.20
19
+ * @privateaim/telemetry-kit bumped from ^0.8.19 to ^0.8.20
20
+
21
+ ## [0.8.19](https://github.com/PrivateAIM/hub/compare/v0.8.18...v0.8.19) (2025-09-24)
22
+
23
+
24
+ ### Dependencies
25
+
26
+ * The following workspace dependencies were updated
27
+ * devDependencies
28
+ * @privateaim/kit bumped from ^0.8.18 to ^0.8.19
29
+ * @privateaim/telemetry-kit bumped from ^0.8.18 to ^0.8.19
30
+ * peerDependencies
31
+ * @privateaim/kit bumped from ^0.8.18 to ^0.8.19
32
+ * @privateaim/telemetry-kit bumped from ^0.8.18 to ^0.8.19
33
+
3
34
  ## [0.8.18](https://github.com/PrivateAIM/hub/compare/v0.8.17...v0.8.18) (2025-09-16)
4
35
 
5
36
 
@@ -10,9 +10,32 @@ export interface Analysis {
10
10
  nodes: number;
11
11
  configuration_locked: boolean;
12
12
  /**
13
- * todo: rename to distribution_status
13
+ * A root code bucket file is linked for the analysis.
14
14
  */
15
+ configuration_entrypoint_valid: boolean;
16
+ /**
17
+ * Master image is assigned.
18
+ */
19
+ configuration_image_valid: boolean;
20
+ /**
21
+ * One or more default nodes are assigned.
22
+ */
23
+ configuration_node_default_valid: boolean;
24
+ /**
25
+ * An aggregator is assigned.
26
+ */
27
+ configuration_node_aggregator_valid: boolean;
28
+ /**
29
+ * A default node as well an aggregator node is assigned.
30
+ */
31
+ configuration_nodes_valid: boolean;
15
32
  build_status: AnalysisBuildStatus | null;
33
+ /**
34
+ * todo: add distribution_status
35
+ */
36
+ /**
37
+ * todo: rename to execution_status
38
+ */
16
39
  run_status: AnalysisRunStatus | null;
17
40
  created_at: Date;
18
41
  updated_at: Date;
@@ -1 +1 @@
1
- {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../src/domains/analysis/entity.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EACR,mBAAmB,EACnB,iBAAiB,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,KAAK,EAAE,MAAM,CAAC;IAId,oBAAoB,EAAE,OAAO,CAAC;IAI9B;;OAEG;IACH,YAAY,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAIzC,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAIrC,UAAU,EAAE,IAAI,CAAC;IAEjB,UAAU,EAAE,IAAI,CAAC;IAIjB,QAAQ,EAAE,QAAQ,CAAC;IAEnB,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAI5B,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAEtB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAIpB,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B,OAAO,EAAE,OAAO,CAAC;IAIjB,uBAAuB,EAAE,0BAA0B,EAAE,GAAG,IAAI,CAAC;IAI7D,eAAe,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE1C,YAAY,EAAE,WAAW,CAAC;CAC7B"}
1
+ {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../src/domains/analysis/entity.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EACR,mBAAmB,EACnB,iBAAiB,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,KAAK,EAAE,MAAM,CAAC;IAId,oBAAoB,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,8BAA8B,EAAG,OAAO,CAAC;IAEzC;;OAEG;IACH,yBAAyB,EAAE,OAAO,CAAC;IAEnC;;OAEG;IACH,gCAAgC,EAAE,OAAO,CAAC;IAE1C;;OAEG;IACH,mCAAmC,EAAE,OAAO,CAAC;IAE7C;;OAEG;IACH,yBAAyB,EAAE,OAAO,CAAC;IAInC,YAAY,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAIzC;;OAEG;IAGH;;OAEG;IACH,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAIrC,UAAU,EAAE,IAAI,CAAC;IAEjB,UAAU,EAAE,IAAI,CAAC;IAIjB,QAAQ,EAAE,QAAQ,CAAC;IAEnB,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAI5B,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAEtB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAIpB,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B,OAAO,EAAE,OAAO,CAAC;IAIjB,uBAAuB,EAAE,0BAA0B,EAAE,GAAG,IAAI,CAAC;IAI7D,eAAe,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE1C,YAAY,EAAE,WAAW,CAAC;CAC7B"}
@@ -0,0 +1,8 @@
1
+ export declare class AnalysisError extends Error {
2
+ static defaultNodeRequired(): AnalysisError;
3
+ static aggregatorNodeRequired(): AnalysisError;
4
+ static imageAssignmentRequired(): AnalysisError;
5
+ static configurationLocked(): AnalysisError;
6
+ static buildInitialized(): AnalysisError;
7
+ }
8
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../src/domains/analysis/error.ts"],"names":[],"mappings":"AAOA,qBAAa,aAAc,SAAQ,KAAK;IACpC,MAAM,CAAC,mBAAmB;IAI1B,MAAM,CAAC,sBAAsB;IAI7B,MAAM,CAAC,uBAAuB;IAI9B,MAAM,CAAC,mBAAmB;IAI1B,MAAM,CAAC,gBAAgB;CAG1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/domains/analysis/helpers.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAuB,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,KAAK,SAAS,GAAG;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC1C,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,GAAG,kBAAkB,EAAE,GAChC,SAAS,CA0HZ"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/domains/analysis/helpers.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAuB,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGzC,KAAK,SAAS,GAAG;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC1C,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,GAAG,kBAAkB,EAAE,GAChC,SAAS,CAmIZ"}
@@ -1,4 +1,5 @@
1
1
  export * from './entity';
2
+ export * from './error';
2
3
  export * from './helpers';
3
4
  export * from './constants';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domains/analysis/index.ts"],"names":[],"mappings":"AAOA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domains/analysis/index.ts"],"names":[],"mappings":"AAOA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
package/dist/index.cjs CHANGED
@@ -40,6 +40,29 @@ var kit = require('@privateaim/kit');
40
40
  }
41
41
  }
42
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
+
43
66
  /*
44
67
  * Copyright (c) 2021-2024.
45
68
  * Author Peter Placzek (tada5hi)
@@ -167,20 +190,28 @@ var AnalysisContainerPath = /*#__PURE__*/ function(AnalysisContainerPath) {
167
190
  case AnalysisAPICommand.CONFIGURATION_LOCK:
168
191
  {
169
192
  if (entity.configuration_locked) {
170
- output.message = 'The analysis configuration is already locked.';
193
+ const error = AnalysisError.configurationLocked();
194
+ output.message = error.message;
171
195
  return output;
172
196
  }
173
197
  if (entity.build_status) {
174
- output.message = 'The analysis build process has already been initialized.';
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;
175
205
  return output;
176
206
  }
177
- // todo: unknown if one of them is an aggregator.
178
- if (entity.nodes < 2) {
179
- output.message = 'The analysis requires at least two nodes.';
207
+ if (!entity.configuration_node_aggregator_valid) {
208
+ const error = AnalysisError.aggregatorNodeRequired();
209
+ output.message = error.message;
180
210
  return output;
181
211
  }
182
- if (!entity.master_image_id) {
183
- output.message = 'A master image must be assigned to the analysis.';
212
+ if (!entity.configuration_image_valid) {
213
+ const error = AnalysisError.imageAssignmentRequired();
214
+ output.message = error.message;
184
215
  return output;
185
216
  }
186
217
  output.success = true;
@@ -518,6 +549,7 @@ exports.AnalysisBucketType = AnalysisBucketType;
518
549
  exports.AnalysisBuildStatus = AnalysisBuildStatus;
519
550
  exports.AnalysisConfigurationStatus = AnalysisConfigurationStatus;
520
551
  exports.AnalysisContainerPath = AnalysisContainerPath;
552
+ exports.AnalysisError = AnalysisError;
521
553
  exports.AnalysisNodeApprovalCommand = AnalysisNodeApprovalCommand;
522
554
  exports.AnalysisNodeApprovalStatus = AnalysisNodeApprovalStatus;
523
555
  exports.AnalysisNodeRunStatus = AnalysisNodeRunStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/error/constants.ts","../src/error/entities/connection-string.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) 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';\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 output.message = 'The analysis configuration is already locked.';\n return output;\n }\n\n if (entity.build_status) {\n output.message = 'The analysis build process has already been initialized.';\n return output;\n }\n\n // todo: unknown if one of them is an aggregator.\n if (entity.nodes < 2) {\n output.message = 'The analysis requires at least two nodes.';\n return output;\n }\n\n if (!entity.master_image_id) {\n output.message = 'A master image must be assigned to the analysis.';\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","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","nodes","master_image_id","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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"}
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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"}
package/dist/index.mjs CHANGED
@@ -38,6 +38,29 @@ import { createNanoID, DomainEventNamespace } from '@privateaim/kit';
38
38
  }
39
39
  }
40
40
 
41
+ /*
42
+ * Copyright (c) 2025.
43
+ * Author Peter Placzek (tada5hi)
44
+ * For the full copyright and license information,
45
+ * view the LICENSE file that was distributed with this source code.
46
+ */ class AnalysisError extends Error {
47
+ static defaultNodeRequired() {
48
+ return new AnalysisError('At least one default node must be selected.');
49
+ }
50
+ static aggregatorNodeRequired() {
51
+ return new AnalysisError('An aggregator node node must be selected.');
52
+ }
53
+ static imageAssignmentRequired() {
54
+ return new AnalysisError('A master image must be assigned to the analysis.');
55
+ }
56
+ static configurationLocked() {
57
+ return new AnalysisError('The analysis configuration is locked.');
58
+ }
59
+ static buildInitialized() {
60
+ return new AnalysisError('The analysis build process has already been initialized.');
61
+ }
62
+ }
63
+
41
64
  /*
42
65
  * Copyright (c) 2021-2024.
43
66
  * Author Peter Placzek (tada5hi)
@@ -165,20 +188,28 @@ var AnalysisContainerPath = /*#__PURE__*/ function(AnalysisContainerPath) {
165
188
  case AnalysisAPICommand.CONFIGURATION_LOCK:
166
189
  {
167
190
  if (entity.configuration_locked) {
168
- output.message = 'The analysis configuration is already locked.';
191
+ const error = AnalysisError.configurationLocked();
192
+ output.message = error.message;
169
193
  return output;
170
194
  }
171
195
  if (entity.build_status) {
172
- output.message = 'The analysis build process has already been initialized.';
196
+ const error = AnalysisError.buildInitialized();
197
+ output.message = error.message;
198
+ return output;
199
+ }
200
+ if (!entity.configuration_node_default_valid) {
201
+ const error = AnalysisError.defaultNodeRequired();
202
+ output.message = error.message;
173
203
  return output;
174
204
  }
175
- // todo: unknown if one of them is an aggregator.
176
- if (entity.nodes < 2) {
177
- output.message = 'The analysis requires at least two nodes.';
205
+ if (!entity.configuration_node_aggregator_valid) {
206
+ const error = AnalysisError.aggregatorNodeRequired();
207
+ output.message = error.message;
178
208
  return output;
179
209
  }
180
- if (!entity.master_image_id) {
181
- output.message = 'A master image must be assigned to the analysis.';
210
+ if (!entity.configuration_image_valid) {
211
+ const error = AnalysisError.imageAssignmentRequired();
212
+ output.message = error.message;
182
213
  return output;
183
214
  }
184
215
  output.success = true;
@@ -510,5 +541,5 @@ function buildDomainNamespaceName(id) {
510
541
  return EnvironmentName;
511
542
  }({});
512
543
 
513
- export { APIConnectionStringError, AnalysisAPICommand, AnalysisBucketType, AnalysisBuildStatus, AnalysisConfigurationStatus, AnalysisContainerPath, AnalysisNodeApprovalCommand, AnalysisNodeApprovalStatus, AnalysisNodeRunStatus, AnalysisResultStatus, AnalysisRunStatus, DomainEventName, DomainEventSubscriptionName, DomainSubType, DomainType, EnvironmentName, ErrorCode, MasterImageCommand, MasterImageGroupType, NodeSocketClientEventName, NodeSocketServerEventName, NodeType, ProjectNodeApprovalCommand, ProjectNodeApprovalStatus, REGISTRY_ARTIFACT_TAG_BASE, REGISTRY_ARTIFACT_TAG_LATEST, REGISTRY_INCOMING_PROJECT_NAME, REGISTRY_MASTER_IMAGE_PROJECT_NAME, REGISTRY_OUTGOING_PROJECT_NAME, RegistryAPICommand, RegistryProjectType, SecretStorageAPICommand, ServiceID, StationRegistryAPICommand, buildAnalysisBucketName, buildDomainChannelName, buildDomainNamespaceName, buildRegistryClientConnectionStringFromRegistry, buildSocketRealmNamespaceName, buildSocketRegistryProjectRoomName, generateRegistryProjectId, isAnalysisAPICommandExecutable, parseSocketRealmNamespaceName, registryRobotSecretRegex };
544
+ export { APIConnectionStringError, AnalysisAPICommand, AnalysisBucketType, AnalysisBuildStatus, AnalysisConfigurationStatus, AnalysisContainerPath, AnalysisError, AnalysisNodeApprovalCommand, AnalysisNodeApprovalStatus, AnalysisNodeRunStatus, AnalysisResultStatus, AnalysisRunStatus, DomainEventName, DomainEventSubscriptionName, DomainSubType, DomainType, EnvironmentName, ErrorCode, MasterImageCommand, MasterImageGroupType, NodeSocketClientEventName, NodeSocketServerEventName, NodeType, ProjectNodeApprovalCommand, ProjectNodeApprovalStatus, REGISTRY_ARTIFACT_TAG_BASE, REGISTRY_ARTIFACT_TAG_LATEST, REGISTRY_INCOMING_PROJECT_NAME, REGISTRY_MASTER_IMAGE_PROJECT_NAME, REGISTRY_OUTGOING_PROJECT_NAME, RegistryAPICommand, RegistryProjectType, SecretStorageAPICommand, ServiceID, StationRegistryAPICommand, buildAnalysisBucketName, buildDomainChannelName, buildDomainNamespaceName, buildRegistryClientConnectionStringFromRegistry, buildSocketRealmNamespaceName, buildSocketRegistryProjectRoomName, generateRegistryProjectId, isAnalysisAPICommandExecutable, parseSocketRealmNamespaceName, registryRobotSecretRegex };
514
545
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/error/constants.ts","../src/error/entities/connection-string.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) 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';\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 output.message = 'The analysis configuration is already locked.';\n return output;\n }\n\n if (entity.build_status) {\n output.message = 'The analysis build process has already been initialized.';\n return output;\n }\n\n // todo: unknown if one of them is an aggregator.\n if (entity.nodes < 2) {\n output.message = 'The analysis requires at least two nodes.';\n return output;\n }\n\n if (!entity.master_image_id) {\n output.message = 'A master image must be assigned to the analysis.';\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","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","nodes","master_image_id","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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"}
1
+ {"version":3,"file":"index.mjs","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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@privateaim/core-kit",
3
- "version": "0.8.18",
3
+ "version": "0.8.20",
4
4
  "license": "Apache-2.0",
5
5
  "description": "",
6
6
  "exports": {
@@ -27,13 +27,13 @@
27
27
  },
28
28
  "devDependencies": {
29
29
  "@authup/core-kit": "^1.0.0-beta.27",
30
- "@privateaim/kit": "^0.8.18",
31
- "@privateaim/telemetry-kit": "^0.8.18"
30
+ "@privateaim/kit": "^0.8.20",
31
+ "@privateaim/telemetry-kit": "^0.8.20"
32
32
  },
33
33
  "peerDependencies": {
34
34
  "@authup/core-kit": "^1.0.0-beta.27",
35
- "@privateaim/kit": "^0.8.18",
36
- "@privateaim/telemetry-kit": "^0.8.18"
35
+ "@privateaim/kit": "^0.8.20",
36
+ "@privateaim/telemetry-kit": "^0.8.20"
37
37
  },
38
38
  "gitHead": "5d3b6f4ce1edf2383bdfbf66e913a08c8a3a2e40",
39
39
  "publishConfig": {
@@ -27,15 +27,45 @@ export interface Analysis {
27
27
 
28
28
  configuration_locked: boolean;
29
29
 
30
- // ------------------------------------------------------------------
30
+ /**
31
+ * A root code bucket file is linked for the analysis.
32
+ */
33
+ configuration_entrypoint_valid : boolean;
34
+
35
+ /**
36
+ * Master image is assigned.
37
+ */
38
+ configuration_image_valid: boolean;
31
39
 
32
40
  /**
33
- * todo: rename to distribution_status
41
+ * One or more default nodes are assigned.
34
42
  */
43
+ configuration_node_default_valid: boolean;
44
+
45
+ /**
46
+ * An aggregator is assigned.
47
+ */
48
+ configuration_node_aggregator_valid: boolean;
49
+
50
+ /**
51
+ * A default node as well an aggregator node is assigned.
52
+ */
53
+ configuration_nodes_valid: boolean;
54
+
55
+ // ------------------------------------------------------------------
56
+
35
57
  build_status: AnalysisBuildStatus | null;
36
58
 
37
59
  // ------------------------------------------------------------------
38
60
 
61
+ /**
62
+ * todo: add distribution_status
63
+ */
64
+
65
+ // ------------------------------------------------------------------
66
+ /**
67
+ * todo: rename to execution_status
68
+ */
39
69
  run_status: AnalysisRunStatus | null;
40
70
 
41
71
  // ------------------------------------------------------------------
@@ -0,0 +1,28 @@
1
+ /*
2
+ * Copyright (c) 2025.
3
+ * Author Peter Placzek (tada5hi)
4
+ * For the full copyright and license information,
5
+ * view the LICENSE file that was distributed with this source code.
6
+ */
7
+
8
+ export class AnalysisError extends Error {
9
+ static defaultNodeRequired() {
10
+ return new AnalysisError('At least one default node must be selected.');
11
+ }
12
+
13
+ static aggregatorNodeRequired() {
14
+ return new AnalysisError('An aggregator node node must be selected.');
15
+ }
16
+
17
+ static imageAssignmentRequired() {
18
+ return new AnalysisError('A master image must be assigned to the analysis.');
19
+ }
20
+
21
+ static configurationLocked() {
22
+ return new AnalysisError('The analysis configuration is locked.');
23
+ }
24
+
25
+ static buildInitialized() {
26
+ return new AnalysisError('The analysis build process has already been initialized.');
27
+ }
28
+ }
@@ -7,6 +7,7 @@
7
7
 
8
8
  import { AnalysisAPICommand, AnalysisBuildStatus } from './constants';
9
9
  import type { Analysis } from './entity';
10
+ import { AnalysisError } from './error';
10
11
 
11
12
  type CanResult = {
12
13
  success: boolean,
@@ -95,23 +96,32 @@ export function isAnalysisAPICommandExecutable(
95
96
  }
96
97
  case AnalysisAPICommand.CONFIGURATION_LOCK: {
97
98
  if (entity.configuration_locked) {
98
- output.message = 'The analysis configuration is already locked.';
99
+ const error = AnalysisError.configurationLocked();
100
+ output.message = error.message;
99
101
  return output;
100
102
  }
101
103
 
102
104
  if (entity.build_status) {
103
- output.message = 'The analysis build process has already been initialized.';
105
+ const error = AnalysisError.buildInitialized();
106
+ output.message = error.message;
104
107
  return output;
105
108
  }
106
109
 
107
- // todo: unknown if one of them is an aggregator.
108
- if (entity.nodes < 2) {
109
- output.message = 'The analysis requires at least two nodes.';
110
+ if (!entity.configuration_node_default_valid) {
111
+ const error = AnalysisError.defaultNodeRequired();
112
+ output.message = error.message;
110
113
  return output;
111
114
  }
112
115
 
113
- if (!entity.master_image_id) {
114
- output.message = 'A master image must be assigned to the analysis.';
116
+ if (!entity.configuration_node_aggregator_valid) {
117
+ const error = AnalysisError.aggregatorNodeRequired();
118
+ output.message = error.message;
119
+ return output;
120
+ }
121
+
122
+ if (!entity.configuration_image_valid) {
123
+ const error = AnalysisError.imageAssignmentRequired();
124
+ output.message = error.message;
115
125
  return output;
116
126
  }
117
127
 
@@ -6,5 +6,6 @@
6
6
  */
7
7
 
8
8
  export * from './entity';
9
+ export * from './error';
9
10
  export * from './helpers';
10
11
  export * from './constants';