@privateaim/server-core-worker-kit 0.7.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/CHANGELOG.md +472 -0
  2. package/LICENSE +202 -0
  3. package/dist/components/builder/constants.d.ts +32 -0
  4. package/dist/components/builder/constants.d.ts.map +1 -0
  5. package/dist/components/builder/index.d.ts +4 -0
  6. package/dist/components/builder/index.d.ts.map +1 -0
  7. package/dist/components/builder/queue.d.ts +5 -0
  8. package/dist/components/builder/queue.d.ts.map +1 -0
  9. package/dist/components/builder/types.d.ts +35 -0
  10. package/dist/components/builder/types.d.ts.map +1 -0
  11. package/dist/components/core/constants.d.ts +24 -0
  12. package/dist/components/core/constants.d.ts.map +1 -0
  13. package/dist/components/core/index.d.ts +4 -0
  14. package/dist/components/core/index.d.ts.map +1 -0
  15. package/dist/components/core/queue.d.ts +5 -0
  16. package/dist/components/core/queue.d.ts.map +1 -0
  17. package/dist/components/core/types.d.ts +41 -0
  18. package/dist/components/core/types.d.ts.map +1 -0
  19. package/dist/components/index.d.ts +4 -0
  20. package/dist/components/index.d.ts.map +1 -0
  21. package/dist/components/master-images/build/index.d.ts +2 -0
  22. package/dist/components/master-images/build/index.d.ts.map +1 -0
  23. package/dist/components/master-images/build/types.d.ts +18 -0
  24. package/dist/components/master-images/build/types.d.ts.map +1 -0
  25. package/dist/components/master-images/constants.d.ts +26 -0
  26. package/dist/components/master-images/constants.d.ts.map +1 -0
  27. package/dist/components/master-images/index.d.ts +7 -0
  28. package/dist/components/master-images/index.d.ts.map +1 -0
  29. package/dist/components/master-images/push/index.d.ts +2 -0
  30. package/dist/components/master-images/push/index.d.ts.map +1 -0
  31. package/dist/components/master-images/push/types.d.ts +17 -0
  32. package/dist/components/master-images/push/types.d.ts.map +1 -0
  33. package/dist/components/master-images/service/index.d.ts +3 -0
  34. package/dist/components/master-images/service/index.d.ts.map +1 -0
  35. package/dist/components/master-images/service/module.d.ts +16 -0
  36. package/dist/components/master-images/service/module.d.ts.map +1 -0
  37. package/dist/components/master-images/service/singleton.d.ts +3 -0
  38. package/dist/components/master-images/service/singleton.d.ts.map +1 -0
  39. package/dist/components/master-images/synchronize/index.d.ts +2 -0
  40. package/dist/components/master-images/synchronize/index.d.ts.map +1 -0
  41. package/dist/components/master-images/synchronize/types.d.ts +26 -0
  42. package/dist/components/master-images/synchronize/types.d.ts.map +1 -0
  43. package/dist/components/master-images/types.d.ts +40 -0
  44. package/dist/components/master-images/types.d.ts.map +1 -0
  45. package/dist/constants.d.ts +12 -0
  46. package/dist/constants.d.ts.map +1 -0
  47. package/dist/index.cjs +287 -0
  48. package/dist/index.cjs.map +1 -0
  49. package/dist/index.d.ts +3 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.mjs +265 -0
  52. package/dist/index.mjs.map +1 -0
  53. package/dist/utils.d.ts +2 -0
  54. package/dist/utils.d.ts.map +1 -0
  55. package/package.json +41 -0
  56. package/rollup.config.mjs +14 -0
  57. package/src/components/builder/constants.ts +46 -0
  58. package/src/components/builder/index.ts +10 -0
  59. package/src/components/builder/queue.ts +39 -0
  60. package/src/components/builder/types.ts +57 -0
  61. package/src/components/core/constants.ts +38 -0
  62. package/src/components/core/index.ts +10 -0
  63. package/src/components/core/queue.ts +36 -0
  64. package/src/components/core/types.ts +66 -0
  65. package/src/components/index.ts +10 -0
  66. package/src/components/master-images/build/index.ts +8 -0
  67. package/src/components/master-images/build/types.ts +28 -0
  68. package/src/components/master-images/constants.ts +38 -0
  69. package/src/components/master-images/index.ts +14 -0
  70. package/src/components/master-images/push/index.ts +8 -0
  71. package/src/components/master-images/push/types.ts +25 -0
  72. package/src/components/master-images/service/index.ts +9 -0
  73. package/src/components/master-images/service/module.ts +125 -0
  74. package/src/components/master-images/service/singleton.ts +18 -0
  75. package/src/components/master-images/synchronize/index.ts +8 -0
  76. package/src/components/master-images/synchronize/types.ts +37 -0
  77. package/src/components/master-images/types.ts +67 -0
  78. package/src/constants.ts +19 -0
  79. package/src/index.ts +9 -0
  80. package/src/utils.ts +20 -0
  81. package/tsconfig.build.json +11 -0
  82. package/tsconfig.json +10 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/master-images/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACR,+BAA+B,EAAE,mCAAmC,EACpE,gCAAgC,EAChC,6BAA6B,EAChC,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,KAAK,EACR,8BAA8B,EAC9B,4BAA4B,EAAE,kCAAkC,EACnE,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EACR,6CAA6C,EAAE,qCAAqC,EACpF,mCAAmC,EACtC,MAAM,eAAe,CAAC;AAIvB,KAAK,yBAAyB,GAAG;IAC7B,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,+BAA+B,CAAC;IAC7D,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,8BAA8B,CAAC;IAC3D,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,qCAAqC,CAAC;CAC5E,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;KAChC,CAAC,IAAI,MAAM,yBAAyB,IAAI,GAAG,CAAC,EAAE,GAAG,yBAAyB,CAAC,CAAC,CAAC;CACjF,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;KACpC,CAAC,IAAI,MAAM,sBAAsB,GAAG;QACjC,OAAO,EAAE,CAAC,CAAC;QACX,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAA;KAClC;CACJ,CAAC,MAAM,sBAAsB,CAAC,CAAC;AAIhC,KAAK,uBAAuB,GAAG;IAC3B,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,gCAAgC,CAAC;IAC/D,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,6BAA6B,CAAC;IACzD,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,mCAAmC,CAAC;IAEtE,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,4BAA4B,CAAC;IAC1D,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,4BAA4B,CAAC;IACzD,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,kCAAkC,CAAC;IAEpE,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvD,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,mCAAmC,CAAC;IACtE,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,EAAE,6CAA6C,CAAA;CAC5F,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;KAC9B,CAAC,IAAI,MAAM,uBAAuB,IAAI,GAAG,CAAC,EAAE,GAAG,uBAAuB,CAAC,CAAC,CAAC;CAC7E,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;KAClC,CAAC,IAAI,MAAM,oBAAoB,GAAG;QAC/B,KAAK,EAAE,CAAC,CAAC;QACT,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAA;KAChC;CACJ,CAAC,MAAM,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ export declare enum ComponentName {
2
+ BUILDER = "builder",
3
+ CORE = "core",
4
+ MASTER_IMAGES = "masterImages"
5
+ }
6
+ export declare enum ErrorCode {
7
+ NOT_FOUND = "notFound",
8
+ REGISTRY_NOT_FOUND = "registryNotFound",
9
+ REGISTRY_PROJECT_NOT_FOUND = "registryProjectNotFound",
10
+ NONE = "none"
11
+ }
12
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAOA,oBAAY,aAAa;IACrB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,aAAa,iBAAiB;CACjC;AAED,oBAAY,SAAS;IACjB,SAAS,aAAa;IACtB,kBAAkB,qBAAqB;IACvC,0BAA0B,4BAA4B;IACtD,IAAI,SAAS;CAChB"}
package/dist/index.cjs ADDED
@@ -0,0 +1,287 @@
1
+ 'use strict';
2
+
3
+ var serverKit = require('@privateaim/server-kit');
4
+ var kit = require('@privateaim/kit');
5
+ var singa = require('singa');
6
+
7
+ var BuilderEvent = /*#__PURE__*/ function(BuilderEvent) {
8
+ BuilderEvent["BUILD_FAILED"] = "buildFailed";
9
+ BuilderEvent["BUILDING"] = "building";
10
+ BuilderEvent["BUILT"] = "built";
11
+ BuilderEvent["PUSH_FAILED"] = "pushFailed";
12
+ BuilderEvent["PUSHING"] = "pushing";
13
+ BuilderEvent["PUSHED"] = "pushed";
14
+ BuilderEvent["CHECK_FAILED"] = "checkFailed";
15
+ BuilderEvent["CHECKING"] = "checking";
16
+ BuilderEvent["CHECKED"] = "checked";
17
+ BuilderEvent["NONE"] = "none";
18
+ return BuilderEvent;
19
+ }({});
20
+ var BuilderCommand = /*#__PURE__*/ function(BuilderCommand) {
21
+ BuilderCommand["BUILD"] = "build";
22
+ BuilderCommand["CHECK"] = "check";
23
+ BuilderCommand["PUSH"] = "push";
24
+ return BuilderCommand;
25
+ }({});
26
+ var BuilderErrorCode = /*#__PURE__*/ function(BuilderErrorCode) {
27
+ BuilderErrorCode["ENTRYPOINT_NOT_FOUND"] = "entrypointNotFound";
28
+ BuilderErrorCode["MASTER_IMAGE_NOT_FOUND"] = "masterImageNotFound";
29
+ BuilderErrorCode["UNKNOWN"] = "unknown";
30
+ return BuilderErrorCode;
31
+ }({});
32
+ const BuilderEventQueueRouterRouting = {
33
+ type: serverKit.QueueRouterRoutingType.PUB_SUB,
34
+ key: 'analysisBuilderEvents'
35
+ };
36
+ const BuilderTaskQueueRouterRouting = {
37
+ type: serverKit.QueueRouterRoutingType.WORK,
38
+ key: 'analysisBuilderCommands'
39
+ };
40
+
41
+ function cleanupPayload(payload) {
42
+ if (kit.hasOwnProperty(payload, 'entity')) {
43
+ delete payload.entity;
44
+ }
45
+ if (kit.hasOwnProperty(payload, 'registry')) {
46
+ delete payload.registry;
47
+ }
48
+ return payload;
49
+ }
50
+
51
+ function buildBuilderTaskQueueRouterPayload(context) {
52
+ return serverKit.buildQueueRouterPublishPayload({
53
+ type: context.command,
54
+ data: cleanupPayload(context.data),
55
+ metadata: {
56
+ routing: BuilderTaskQueueRouterRouting
57
+ }
58
+ });
59
+ }
60
+ function buildBuilderEventQueueRouterPayload(context) {
61
+ return serverKit.buildQueueRouterPublishPayload({
62
+ type: context.event,
63
+ data: cleanupPayload(context.data),
64
+ metadata: {
65
+ routing: BuilderEventQueueRouterRouting
66
+ }
67
+ });
68
+ }
69
+
70
+ var CoreEvent = /*#__PURE__*/ function(CoreEvent) {
71
+ CoreEvent["BUCKET_CREATED"] = "bucketCreated";
72
+ CoreEvent["BUCKET_DELETED"] = "bucketDeleted";
73
+ CoreEvent["CONFIGURING"] = "configuring";
74
+ CoreEvent["CONFIGURED"] = "configured";
75
+ CoreEvent["DESTROYING"] = "destroying";
76
+ CoreEvent["DESTROYED"] = "destroyed";
77
+ CoreEvent["FAILED"] = "failed";
78
+ CoreEvent["NONE"] = "none";
79
+ return CoreEvent;
80
+ }({});
81
+ var CoreCommand = /*#__PURE__*/ function(CoreCommand) {
82
+ CoreCommand["CONFIGURE"] = "configure";
83
+ CoreCommand["DESTROY"] = "destroy";
84
+ return CoreCommand;
85
+ }({});
86
+ const CoreEventQueueRouterRouting = {
87
+ type: serverKit.QueueRouterRoutingType.PUB_SUB,
88
+ key: 'analysisCoreEvents'
89
+ };
90
+ const CoreTaskQueueRouterRouting = {
91
+ type: serverKit.QueueRouterRoutingType.WORK,
92
+ key: 'analysisCoreCommands'
93
+ };
94
+
95
+ function buildCoreTaskQueueRouterPayload(context) {
96
+ return serverKit.buildQueueRouterPublishPayload({
97
+ type: context.command,
98
+ data: cleanupPayload(context.data),
99
+ metadata: {
100
+ routing: CoreTaskQueueRouterRouting
101
+ }
102
+ });
103
+ }
104
+ function buildCoreEventQueueRouterPayload(context) {
105
+ return serverKit.buildQueueRouterPublishPayload({
106
+ type: context.event,
107
+ data: cleanupPayload(context.data),
108
+ metadata: {
109
+ routing: CoreEventQueueRouterRouting
110
+ }
111
+ });
112
+ }
113
+
114
+ var MasterImagesEvent = /*#__PURE__*/ function(MasterImagesEvent) {
115
+ MasterImagesEvent["SYNCHRONIZING"] = "synchronizing";
116
+ MasterImagesEvent["SYNCHRONIZED"] = "synchronized";
117
+ MasterImagesEvent["SYNCHRONIZATION_FAILED"] = "synchronizationFailed";
118
+ MasterImagesEvent["BUILDING"] = "building";
119
+ MasterImagesEvent["BUILT"] = "built";
120
+ MasterImagesEvent["BUILD_FAILED"] = "buildFailed";
121
+ MasterImagesEvent["PUSHING"] = "pushing";
122
+ MasterImagesEvent["PUSHED"] = "pushed";
123
+ MasterImagesEvent["PUSH_FAILED"] = "pushFailed";
124
+ return MasterImagesEvent;
125
+ }({});
126
+ var MasterImagesCommand = /*#__PURE__*/ function(MasterImagesCommand) {
127
+ MasterImagesCommand["SYNCHRONIZE"] = "synchronize";
128
+ MasterImagesCommand["BUILD"] = "build";
129
+ MasterImagesCommand["PUSH"] = "push";
130
+ return MasterImagesCommand;
131
+ }({});
132
+ const MasterImagesEventQueueRouterRouting = {
133
+ type: serverKit.QueueRouterRoutingType.PUB_SUB,
134
+ key: 'analysisMasterImagesEvents'
135
+ };
136
+ const MasterImagesTaskQueueRouterRouting = {
137
+ type: serverKit.QueueRouterRoutingType.WORK,
138
+ key: 'analysisMasterImagesCommands'
139
+ };
140
+
141
+ /*
142
+ * Copyright (c) 2024.
143
+ * Author Peter Placzek (tada5hi)
144
+ * For the full copyright and license information,
145
+ * view the LICENSE file that was distributed with this source code.
146
+ */ function _define_property(obj, key, value) {
147
+ if (key in obj) {
148
+ Object.defineProperty(obj, key, {
149
+ value: value,
150
+ enumerable: true,
151
+ configurable: true,
152
+ writable: true
153
+ });
154
+ } else {
155
+ obj[key] = value;
156
+ }
157
+ return obj;
158
+ }
159
+ class MasterImageQueueService {
160
+ // -------------------------------------------------
161
+ async publishCommand(ctx) {
162
+ const isLocked = await this.isCommandLocked(ctx.command);
163
+ if (isLocked) {
164
+ throw new Error('The command is locked and can therefore not be executed.');
165
+ }
166
+ const routerPayload = this.buildRouterPayloadForCommand(ctx);
167
+ await this.queueRouter.publish(routerPayload);
168
+ if (ctx.command === MasterImagesCommand.SYNCHRONIZE) {
169
+ await this.setCommandLock(ctx.command);
170
+ }
171
+ }
172
+ async consumeCommands(handlers) {
173
+ await this.queueRouter.consume(MasterImagesTaskQueueRouterRouting, {
174
+ $any: async (message)=>{
175
+ if (handlers[message.type]) {
176
+ await handlers[message.type](message, this);
177
+ }
178
+ if (handlers.$any) {
179
+ await handlers.$any(message);
180
+ }
181
+ }
182
+ });
183
+ }
184
+ // -------------------------------------------------
185
+ async publishEvent(ctx) {
186
+ const routerPayload = this.buildRouterPayloadForEvent(ctx);
187
+ await this.queueRouter.publish(routerPayload);
188
+ }
189
+ async consumeEvents(handlers) {
190
+ await this.queueRouter.consume(MasterImagesEventQueueRouterRouting, {
191
+ $any: async (message)=>{
192
+ await this.setCommandLock(MasterImagesCommand.SYNCHRONIZE);
193
+ if (handlers[message.type]) {
194
+ await handlers[message.type](message);
195
+ }
196
+ if (handlers.$any) {
197
+ await handlers.$any(message);
198
+ }
199
+ }
200
+ });
201
+ }
202
+ // -------------------------------------------------
203
+ async setCommandLock(command) {
204
+ await this.cache.set(`master-images-command:${command}`, true, {
205
+ ttl: 1000 * 60
206
+ });
207
+ }
208
+ async isCommandLocked(command) {
209
+ const isActive = await this.cache.get(`master-images-command:${command}`);
210
+ return !!isActive;
211
+ }
212
+ // -------------------------------------------------
213
+ buildRouterPayloadForEvent(context) {
214
+ return serverKit.buildQueueRouterPublishPayload({
215
+ type: context.event,
216
+ data: cleanupPayload(context.data),
217
+ metadata: {
218
+ routing: MasterImagesEventQueueRouterRouting
219
+ }
220
+ });
221
+ }
222
+ buildRouterPayloadForCommand(context) {
223
+ return serverKit.buildQueueRouterPublishPayload({
224
+ type: context.command,
225
+ data: cleanupPayload(context.data),
226
+ metadata: {
227
+ routing: MasterImagesTaskQueueRouterRouting
228
+ }
229
+ });
230
+ }
231
+ constructor(){
232
+ _define_property(this, "cache", void 0);
233
+ _define_property(this, "queueRouter", void 0);
234
+ this.cache = serverKit.useCache();
235
+ this.queueRouter = serverKit.useQueueRouter();
236
+ }
237
+ }
238
+
239
+ const instance = singa.singa({
240
+ name: 'masterImageQueue',
241
+ factory: ()=>new MasterImageQueueService()
242
+ });
243
+ function useMasterImageQueueService() {
244
+ return instance.use();
245
+ }
246
+
247
+ /*
248
+ * Copyright (c) 2024.
249
+ * Author Peter Placzek (tada5hi)
250
+ * For the full copyright and license information,
251
+ * view the LICENSE file that was distributed with this source code.
252
+ */ var ComponentName = /*#__PURE__*/ function(ComponentName) {
253
+ ComponentName["BUILDER"] = "builder";
254
+ ComponentName["CORE"] = "core";
255
+ ComponentName["MASTER_IMAGES"] = "masterImages";
256
+ return ComponentName;
257
+ }({});
258
+ var ErrorCode = /*#__PURE__*/ function(ErrorCode) {
259
+ ErrorCode["NOT_FOUND"] = "notFound";
260
+ ErrorCode["REGISTRY_NOT_FOUND"] = "registryNotFound";
261
+ ErrorCode["REGISTRY_PROJECT_NOT_FOUND"] = "registryProjectNotFound";
262
+ ErrorCode["NONE"] = "none";
263
+ return ErrorCode;
264
+ }({});
265
+
266
+ exports.BuilderCommand = BuilderCommand;
267
+ exports.BuilderErrorCode = BuilderErrorCode;
268
+ exports.BuilderEvent = BuilderEvent;
269
+ exports.BuilderEventQueueRouterRouting = BuilderEventQueueRouterRouting;
270
+ exports.BuilderTaskQueueRouterRouting = BuilderTaskQueueRouterRouting;
271
+ exports.ComponentName = ComponentName;
272
+ exports.CoreCommand = CoreCommand;
273
+ exports.CoreEvent = CoreEvent;
274
+ exports.CoreEventQueueRouterRouting = CoreEventQueueRouterRouting;
275
+ exports.CoreTaskQueueRouterRouting = CoreTaskQueueRouterRouting;
276
+ exports.ErrorCode = ErrorCode;
277
+ exports.MasterImageQueueService = MasterImageQueueService;
278
+ exports.MasterImagesCommand = MasterImagesCommand;
279
+ exports.MasterImagesEvent = MasterImagesEvent;
280
+ exports.MasterImagesEventQueueRouterRouting = MasterImagesEventQueueRouterRouting;
281
+ exports.MasterImagesTaskQueueRouterRouting = MasterImagesTaskQueueRouterRouting;
282
+ exports.buildBuilderEventQueueRouterPayload = buildBuilderEventQueueRouterPayload;
283
+ exports.buildBuilderTaskQueueRouterPayload = buildBuilderTaskQueueRouterPayload;
284
+ exports.buildCoreEventQueueRouterPayload = buildCoreEventQueueRouterPayload;
285
+ exports.buildCoreTaskQueueRouterPayload = buildCoreTaskQueueRouterPayload;
286
+ exports.useMasterImageQueueService = useMasterImageQueueService;
287
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/components/builder/constants.ts","../src/utils.ts","../src/components/builder/queue.ts","../src/components/core/constants.ts","../src/components/core/queue.ts","../src/components/master-images/constants.ts","../src/components/master-images/service/module.ts","../src/components/master-images/service/singleton.ts","../src/constants.ts"],"sourcesContent":["/*\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 { QueueRouterRoutingType } from '@privateaim/server-kit';\n\nexport enum BuilderEvent {\n BUILD_FAILED = 'buildFailed',\n BUILDING = 'building',\n BUILT = 'built',\n\n PUSH_FAILED = 'pushFailed',\n PUSHING = 'pushing',\n PUSHED = 'pushed',\n\n CHECK_FAILED = 'checkFailed',\n CHECKING = 'checking',\n CHECKED = 'checked',\n\n NONE = 'none',\n}\n\nexport enum BuilderCommand {\n BUILD = 'build',\n CHECK = 'check',\n PUSH = 'push',\n}\n\nexport enum BuilderErrorCode {\n ENTRYPOINT_NOT_FOUND = 'entrypointNotFound',\n MASTER_IMAGE_NOT_FOUND = 'masterImageNotFound',\n UNKNOWN = 'unknown',\n}\n\nexport const BuilderEventQueueRouterRouting = {\n type: QueueRouterRoutingType.PUB_SUB,\n key: 'analysisBuilderEvents',\n};\n\nexport const BuilderTaskQueueRouterRouting = {\n type: QueueRouterRoutingType.WORK,\n key: 'analysisBuilderCommands',\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 { hasOwnProperty } from '@privateaim/kit';\n\nexport function cleanupPayload<T extends Record<string, any>>(payload: T): T {\n if (hasOwnProperty(payload, 'entity')) {\n delete payload.entity;\n }\n\n if (hasOwnProperty(payload, 'registry')) {\n delete payload.registry;\n }\n\n return payload;\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 { QueueRouterPayload } from '@privateaim/server-kit';\nimport { buildQueueRouterPublishPayload } from '@privateaim/server-kit';\nimport { cleanupPayload } from '../../utils';\nimport {\n BuilderEventQueueRouterRouting,\n BuilderTaskQueueRouterRouting,\n} from './constants';\nimport type { BuilderCommandContext, BuilderEventContext } from './types';\n\nexport function buildBuilderTaskQueueRouterPayload(\n context: BuilderCommandContext,\n) : QueueRouterPayload {\n return buildQueueRouterPublishPayload({\n type: context.command,\n data: cleanupPayload(context.data),\n metadata: {\n routing: BuilderTaskQueueRouterRouting,\n },\n });\n}\n\nexport function buildBuilderEventQueueRouterPayload(\n context: BuilderEventContext,\n) : QueueRouterPayload {\n return buildQueueRouterPublishPayload({\n type: context.event,\n data: cleanupPayload(context.data),\n metadata: {\n routing: BuilderEventQueueRouterRouting,\n },\n });\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 { QueueRouterRoutingType } from '@privateaim/server-kit';\n\nexport enum CoreEvent {\n BUCKET_CREATED = 'bucketCreated',\n BUCKET_DELETED = 'bucketDeleted',\n\n CONFIGURING = 'configuring',\n CONFIGURED = 'configured',\n\n DESTROYING = 'destroying',\n DESTROYED = 'destroyed',\n\n FAILED = 'failed',\n\n NONE = 'none',\n}\n\nexport enum CoreCommand {\n CONFIGURE = 'configure',\n DESTROY = 'destroy',\n}\n\nexport const CoreEventQueueRouterRouting = {\n type: QueueRouterRoutingType.PUB_SUB,\n key: 'analysisCoreEvents',\n};\n\nexport const CoreTaskQueueRouterRouting = {\n type: QueueRouterRoutingType.WORK,\n key: 'analysisCoreCommands',\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 type { QueueRouterPayload } from '@privateaim/server-kit';\nimport { buildQueueRouterPublishPayload } from '@privateaim/server-kit';\nimport { cleanupPayload } from '../../utils';\nimport { CoreEventQueueRouterRouting, CoreTaskQueueRouterRouting } from './constants';\nimport type { CoreCommandContext, CoreEventContext } from './types';\n\nexport function buildCoreTaskQueueRouterPayload(\n context: CoreCommandContext,\n) : QueueRouterPayload {\n return buildQueueRouterPublishPayload({\n type: context.command,\n data: cleanupPayload(context.data),\n metadata: {\n routing: CoreTaskQueueRouterRouting,\n },\n });\n}\n\nexport function buildCoreEventQueueRouterPayload(\n context: CoreEventContext,\n) : QueueRouterPayload {\n return buildQueueRouterPublishPayload({\n type: context.event,\n data: cleanupPayload(context.data),\n metadata: {\n routing: CoreEventQueueRouterRouting,\n },\n });\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 { QueueRouterRoutingType } from '@privateaim/server-kit';\n\nexport enum MasterImagesEvent {\n SYNCHRONIZING = 'synchronizing',\n SYNCHRONIZED = 'synchronized',\n SYNCHRONIZATION_FAILED = 'synchronizationFailed',\n\n BUILDING = 'building',\n BUILT = 'built',\n BUILD_FAILED = 'buildFailed',\n\n PUSHING = 'pushing',\n PUSHED = 'pushed',\n PUSH_FAILED = 'pushFailed',\n}\n\nexport enum MasterImagesCommand {\n SYNCHRONIZE = 'synchronize',\n BUILD = 'build',\n PUSH = 'push',\n}\n\nexport const MasterImagesEventQueueRouterRouting = {\n type: QueueRouterRoutingType.PUB_SUB,\n key: 'analysisMasterImagesEvents',\n};\n\nexport const MasterImagesTaskQueueRouterRouting = {\n type: QueueRouterRoutingType.WORK,\n key: 'analysisMasterImagesCommands',\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 { Cache, QueueRouter, QueueRouterHandlers } from '@privateaim/server-kit';\nimport { buildQueueRouterPublishPayload, useCache, useQueueRouter } from '@privateaim/server-kit';\nimport { cleanupPayload } from '../../../utils';\nimport {\n MasterImagesCommand,\n MasterImagesEventQueueRouterRouting,\n MasterImagesTaskQueueRouterRouting,\n} from '../constants';\nimport type {\n MasterImagesCommandContext,\n MasterImagesCommandMap,\n MasterImagesEventContext,\n MasterImagesEventMap,\n} from '../types';\n\nexport class MasterImageQueueService {\n protected cache : Cache;\n\n protected queueRouter : QueueRouter;\n\n constructor() {\n this.cache = useCache();\n this.queueRouter = useQueueRouter();\n }\n\n // -------------------------------------------------\n\n async publishCommand(ctx: MasterImagesCommandContext) {\n const isLocked = await this.isCommandLocked(ctx.command);\n if (isLocked) {\n throw new Error('The command is locked and can therefore not be executed.');\n }\n\n const routerPayload = this.buildRouterPayloadForCommand(ctx);\n await this.queueRouter.publish(routerPayload);\n\n if (ctx.command === MasterImagesCommand.SYNCHRONIZE) {\n await this.setCommandLock(ctx.command);\n }\n }\n\n async consumeCommands(\n handlers: QueueRouterHandlers<Partial<MasterImagesCommandMap>>,\n ) {\n await this.queueRouter.consume(MasterImagesTaskQueueRouterRouting, {\n $any: async (message) => {\n if (handlers[message.type]) {\n await handlers[message.type](message, this);\n }\n\n if (handlers.$any) {\n await handlers.$any(message);\n }\n },\n });\n }\n\n // -------------------------------------------------\n\n async publishEvent(ctx: MasterImagesEventContext) {\n const routerPayload = this.buildRouterPayloadForEvent(ctx);\n await this.queueRouter.publish(routerPayload);\n }\n\n async consumeEvents(\n handlers: QueueRouterHandlers<Partial<MasterImagesEventMap>>,\n ) {\n await this.queueRouter.consume(MasterImagesEventQueueRouterRouting, {\n $any: async (message) => {\n await this.setCommandLock(MasterImagesCommand.SYNCHRONIZE);\n\n if (handlers[message.type]) {\n await handlers[message.type](message);\n }\n\n if (handlers.$any) {\n await handlers.$any(message);\n }\n },\n });\n }\n\n // -------------------------------------------------\n\n protected async setCommandLock(command: string) {\n await this.cache.set(`master-images-command:${command}`, true, {\n ttl: 1000 * 60,\n });\n }\n\n protected async isCommandLocked(command: string) {\n const isActive = await this.cache.get(`master-images-command:${command}`);\n\n return !!isActive;\n }\n\n // -------------------------------------------------\n\n protected buildRouterPayloadForEvent(context: MasterImagesEventContext) {\n return buildQueueRouterPublishPayload({\n type: context.event,\n data: cleanupPayload(context.data),\n metadata: {\n routing: MasterImagesEventQueueRouterRouting,\n },\n });\n }\n\n protected buildRouterPayloadForCommand(context: MasterImagesCommandContext) {\n return buildQueueRouterPublishPayload({\n type: context.command,\n data: cleanupPayload(context.data),\n metadata: {\n routing: MasterImagesTaskQueueRouterRouting,\n },\n });\n }\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 { singa } from 'singa';\nimport { MasterImageQueueService } from './module';\n\nconst instance = singa<MasterImageQueueService>({\n name: 'masterImageQueue',\n factory: () => new MasterImageQueueService(),\n});\n\nexport function useMasterImageQueueService() {\n return instance.use();\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 ComponentName {\n BUILDER = 'builder',\n CORE = 'core',\n MASTER_IMAGES = 'masterImages',\n}\n\nexport enum ErrorCode {\n NOT_FOUND = 'notFound',\n REGISTRY_NOT_FOUND = 'registryNotFound',\n REGISTRY_PROJECT_NOT_FOUND = 'registryProjectNotFound',\n NONE = 'none',\n}\n"],"names":["BuilderEvent","BuilderCommand","BuilderErrorCode","BuilderEventQueueRouterRouting","type","QueueRouterRoutingType","PUB_SUB","key","BuilderTaskQueueRouterRouting","WORK","cleanupPayload","payload","hasOwnProperty","entity","registry","buildBuilderTaskQueueRouterPayload","context","buildQueueRouterPublishPayload","command","data","metadata","routing","buildBuilderEventQueueRouterPayload","event","CoreEvent","CoreCommand","CoreEventQueueRouterRouting","CoreTaskQueueRouterRouting","buildCoreTaskQueueRouterPayload","buildCoreEventQueueRouterPayload","MasterImagesEvent","MasterImagesCommand","MasterImagesEventQueueRouterRouting","MasterImagesTaskQueueRouterRouting","MasterImageQueueService","publishCommand","ctx","isLocked","isCommandLocked","Error","routerPayload","buildRouterPayloadForCommand","queueRouter","publish","SYNCHRONIZE","setCommandLock","consumeCommands","handlers","consume","$any","message","publishEvent","buildRouterPayloadForEvent","consumeEvents","cache","set","ttl","isActive","get","useCache","useQueueRouter","instance","singa","name","factory","useMasterImageQueueService","use","ComponentName","ErrorCode"],"mappings":";;;;;;AASO,IAAA,YAAKA,iBAAAA,SAAAA,YAAAA,EAAAA;;;;;;;;;;;AAAAA,IAAAA,OAAAA,YAAAA;AAcX,CAAA,CAAA,EAAA;AAEM,IAAA,cAAKC,iBAAAA,SAAAA,cAAAA,EAAAA;;;;AAAAA,IAAAA,OAAAA,cAAAA;AAIX,CAAA,CAAA,EAAA;AAEM,IAAA,gBAAKC,iBAAAA,SAAAA,gBAAAA,EAAAA;;;;AAAAA,IAAAA,OAAAA,gBAAAA;AAIX,CAAA,CAAA,EAAA;MAEYC,8BAAAA,GAAiC;AAC1CC,IAAAA,IAAAA,EAAMC,iCAAuBC,OAAO;IACpCC,GAAAA,EAAK;AACT;MAEaC,6BAAAA,GAAgC;AACzCJ,IAAAA,IAAAA,EAAMC,iCAAuBI,IAAI;IACjCF,GAAAA,EAAK;AACT;;ACpCO,SAASG,eAA8CC,OAAU,EAAA;IACpE,IAAIC,kBAAAA,CAAeD,SAAS,QAAA,CAAA,EAAW;AACnC,QAAA,OAAOA,QAAQE,MAAM;AACzB,IAAA;IAEA,IAAID,kBAAAA,CAAeD,SAAS,UAAA,CAAA,EAAa;AACrC,QAAA,OAAOA,QAAQG,QAAQ;AAC3B,IAAA;IAEA,OAAOH,OAAAA;AACX;;ACHO,SAASI,mCACZC,OAA8B,EAAA;AAE9B,IAAA,OAAOC,wCAAAA,CAA+B;AAClCb,QAAAA,IAAAA,EAAMY,QAAQE,OAAO;QACrBC,IAAAA,EAAMT,cAAAA,CAAeM,QAAQG,IAAI,CAAA;QACjCC,QAAAA,EAAU;YACNC,OAAAA,EAASb;AACb;AACJ,KAAA,CAAA;AACJ;AAEO,SAASc,oCACZN,OAA4B,EAAA;AAE5B,IAAA,OAAOC,wCAAAA,CAA+B;AAClCb,QAAAA,IAAAA,EAAMY,QAAQO,KAAK;QACnBJ,IAAAA,EAAMT,cAAAA,CAAeM,QAAQG,IAAI,CAAA;QACjCC,QAAAA,EAAU;YACNC,OAAAA,EAASlB;AACb;AACJ,KAAA,CAAA;AACJ;;AC7BO,IAAA,SAAKqB,iBAAAA,SAAAA,SAAAA,EAAAA;;;;;;;;;AAAAA,IAAAA,OAAAA,SAAAA;AAaX,CAAA,CAAA,EAAA;AAEM,IAAA,WAAKC,iBAAAA,SAAAA,WAAAA,EAAAA;;;AAAAA,IAAAA,OAAAA,WAAAA;AAGX,CAAA,CAAA,EAAA;MAEYC,2BAAAA,GAA8B;AACvCtB,IAAAA,IAAAA,EAAMC,iCAAuBC,OAAO;IACpCC,GAAAA,EAAK;AACT;MAEaoB,0BAAAA,GAA6B;AACtCvB,IAAAA,IAAAA,EAAMC,iCAAuBI,IAAI;IACjCF,GAAAA,EAAK;AACT;;ACxBO,SAASqB,gCACZZ,OAA2B,EAAA;AAE3B,IAAA,OAAOC,wCAAAA,CAA+B;AAClCb,QAAAA,IAAAA,EAAMY,QAAQE,OAAO;QACrBC,IAAAA,EAAMT,cAAAA,CAAeM,QAAQG,IAAI,CAAA;QACjCC,QAAAA,EAAU;YACNC,OAAAA,EAASM;AACb;AACJ,KAAA,CAAA;AACJ;AAEO,SAASE,iCACZb,OAAyB,EAAA;AAEzB,IAAA,OAAOC,wCAAAA,CAA+B;AAClCb,QAAAA,IAAAA,EAAMY,QAAQO,KAAK;QACnBJ,IAAAA,EAAMT,cAAAA,CAAeM,QAAQG,IAAI,CAAA;QACjCC,QAAAA,EAAU;YACNC,OAAAA,EAASK;AACb;AACJ,KAAA,CAAA;AACJ;;AC1BO,IAAA,iBAAKI,iBAAAA,SAAAA,iBAAAA,EAAAA;;;;;;;;;;AAAAA,IAAAA,OAAAA,iBAAAA;AAYX,CAAA,CAAA,EAAA;AAEM,IAAA,mBAAKC,iBAAAA,SAAAA,mBAAAA,EAAAA;;;;AAAAA,IAAAA,OAAAA,mBAAAA;AAIX,CAAA,CAAA,EAAA;MAEYC,mCAAAA,GAAsC;AAC/C5B,IAAAA,IAAAA,EAAMC,iCAAuBC,OAAO;IACpCC,GAAAA,EAAK;AACT;MAEa0B,kCAAAA,GAAqC;AAC9C7B,IAAAA,IAAAA,EAAMC,iCAAuBI,IAAI;IACjCF,GAAAA,EAAK;AACT;;ACrCA;;;;;AAKC,IAAA,SAAA,gBAAA,CAAA,GAAA,EAAA,GAAA,EAAA,KAAA,EAAA;;;;;;;;;;;;;AAiBM,MAAM2B,uBAAAA,CAAAA;;IAYT,MAAMC,cAAAA,CAAeC,GAA+B,EAAE;AAClD,QAAA,MAAMC,WAAW,MAAM,IAAI,CAACC,eAAe,CAACF,IAAIlB,OAAO,CAAA;AACvD,QAAA,IAAImB,QAAAA,EAAU;AACV,YAAA,MAAM,IAAIE,KAAAA,CAAM,0DAAA,CAAA;AACpB,QAAA;AAEA,QAAA,MAAMC,aAAAA,GAAgB,IAAI,CAACC,4BAA4B,CAACL,GAAAA,CAAAA;AACxD,QAAA,MAAM,IAAI,CAACM,WAAW,CAACC,OAAO,CAACH,aAAAA,CAAAA;AAE/B,QAAA,IAAIJ,GAAAA,CAAIlB,OAAO,KAAKa,mBAAAA,CAAoBa,WAAW,EAAE;AACjD,YAAA,MAAM,IAAI,CAACC,cAAc,CAACT,IAAIlB,OAAO,CAAA;AACzC,QAAA;AACJ,IAAA;IAEA,MAAM4B,eAAAA,CACFC,QAA8D,EAChE;AACE,QAAA,MAAM,IAAI,CAACL,WAAW,CAACM,OAAO,CAACf,kCAAAA,EAAoC;AAC/DgB,YAAAA,IAAAA,EAAM,OAAOC,OAAAA,GAAAA;AACT,gBAAA,IAAIH,QAAQ,CAACG,OAAAA,CAAQ9C,IAAI,CAAC,EAAE;AACxB,oBAAA,MAAM2C,QAAQ,CAACG,OAAAA,CAAQ9C,IAAI,CAAC,CAAC8C,SAAS,IAAI,CAAA;AAC9C,gBAAA;gBAEA,IAAIH,QAAAA,CAASE,IAAI,EAAE;oBACf,MAAMF,QAAAA,CAASE,IAAI,CAACC,OAAAA,CAAAA;AACxB,gBAAA;AACJ,YAAA;AACJ,SAAA,CAAA;AACJ,IAAA;;IAIA,MAAMC,YAAAA,CAAaf,GAA6B,EAAE;AAC9C,QAAA,MAAMI,aAAAA,GAAgB,IAAI,CAACY,0BAA0B,CAAChB,GAAAA,CAAAA;AACtD,QAAA,MAAM,IAAI,CAACM,WAAW,CAACC,OAAO,CAACH,aAAAA,CAAAA;AACnC,IAAA;IAEA,MAAMa,aAAAA,CACFN,QAA4D,EAC9D;AACE,QAAA,MAAM,IAAI,CAACL,WAAW,CAACM,OAAO,CAAChB,mCAAAA,EAAqC;AAChEiB,YAAAA,IAAAA,EAAM,OAAOC,OAAAA,GAAAA;AACT,gBAAA,MAAM,IAAI,CAACL,cAAc,CAACd,oBAAoBa,WAAW,CAAA;AAEzD,gBAAA,IAAIG,QAAQ,CAACG,OAAAA,CAAQ9C,IAAI,CAAC,EAAE;AACxB,oBAAA,MAAM2C,QAAQ,CAACG,OAAAA,CAAQ9C,IAAI,CAAC,CAAC8C,OAAAA,CAAAA;AACjC,gBAAA;gBAEA,IAAIH,QAAAA,CAASE,IAAI,EAAE;oBACf,MAAMF,QAAAA,CAASE,IAAI,CAACC,OAAAA,CAAAA;AACxB,gBAAA;AACJ,YAAA;AACJ,SAAA,CAAA;AACJ,IAAA;;IAIA,MAAgBL,cAAAA,CAAe3B,OAAe,EAAE;QAC5C,MAAM,IAAI,CAACoC,KAAK,CAACC,GAAG,CAAC,CAAC,sBAAsB,EAAErC,OAAAA,CAAAA,CAAS,EAAE,IAAA,EAAM;AAC3DsC,YAAAA,GAAAA,EAAK,IAAA,GAAO;AAChB,SAAA,CAAA;AACJ,IAAA;IAEA,MAAgBlB,eAAAA,CAAgBpB,OAAe,EAAE;QAC7C,MAAMuC,QAAAA,GAAW,MAAM,IAAI,CAACH,KAAK,CAACI,GAAG,CAAC,CAAC,sBAAsB,EAAExC,OAAAA,CAAAA,CAAS,CAAA;AAExE,QAAA,OAAO,CAAC,CAACuC,QAAAA;AACb,IAAA;;AAIUL,IAAAA,0BAAAA,CAA2BpC,OAAiC,EAAE;AACpE,QAAA,OAAOC,wCAAAA,CAA+B;AAClCb,YAAAA,IAAAA,EAAMY,QAAQO,KAAK;YACnBJ,IAAAA,EAAMT,cAAAA,CAAeM,QAAQG,IAAI,CAAA;YACjCC,QAAAA,EAAU;gBACNC,OAAAA,EAASW;AACb;AACJ,SAAA,CAAA;AACJ,IAAA;AAEUS,IAAAA,4BAAAA,CAA6BzB,OAAmC,EAAE;AACxE,QAAA,OAAOC,wCAAAA,CAA+B;AAClCb,YAAAA,IAAAA,EAAMY,QAAQE,OAAO;YACrBC,IAAAA,EAAMT,cAAAA,CAAeM,QAAQG,IAAI,CAAA;YACjCC,QAAAA,EAAU;gBACNC,OAAAA,EAASY;AACb;AACJ,SAAA,CAAA;AACJ,IAAA;IAhGA,WAAA,EAAc;AAJd,QAAA,gBAAA,CAAA,IAAA,EAAUqB,SAAV,MAAA,CAAA;AAEA,QAAA,gBAAA,CAAA,IAAA,EAAUZ,eAAV,MAAA,CAAA;QAGI,IAAI,CAACY,KAAK,GAAGK,kBAAAA,EAAAA;QACb,IAAI,CAACjB,WAAW,GAAGkB,wBAAAA,EAAAA;AACvB,IAAA;AA8FJ;;AClHA,MAAMC,WAAWC,WAAAA,CAA+B;IAC5CC,IAAAA,EAAM,kBAAA;AACNC,IAAAA,OAAAA,EAAS,IAAM,IAAI9B,uBAAAA;AACvB,CAAA,CAAA;AAEO,SAAS+B,0BAAAA,GAAAA;AACZ,IAAA,OAAOJ,SAASK,GAAG,EAAA;AACvB;;ACjBA;;;;;IAOO,IAAKC,aAAAA,iBAAAA,SAAAA,aAAAA,EAAAA;;;;AAAAA,IAAAA,OAAAA,aAAAA;AAIX,CAAA,CAAA,EAAA;AAEM,IAAA,SAAKC,iBAAAA,SAAAA,SAAAA,EAAAA;;;;;AAAAA,IAAAA,OAAAA,SAAAA;AAKX,CAAA,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,3 @@
1
+ export * from './components';
2
+ export * from './constants';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
package/dist/index.mjs ADDED
@@ -0,0 +1,265 @@
1
+ import { QueueRouterRoutingType, buildQueueRouterPublishPayload, useCache, useQueueRouter } from '@privateaim/server-kit';
2
+ import { hasOwnProperty } from '@privateaim/kit';
3
+ import { singa } from 'singa';
4
+
5
+ var BuilderEvent = /*#__PURE__*/ function(BuilderEvent) {
6
+ BuilderEvent["BUILD_FAILED"] = "buildFailed";
7
+ BuilderEvent["BUILDING"] = "building";
8
+ BuilderEvent["BUILT"] = "built";
9
+ BuilderEvent["PUSH_FAILED"] = "pushFailed";
10
+ BuilderEvent["PUSHING"] = "pushing";
11
+ BuilderEvent["PUSHED"] = "pushed";
12
+ BuilderEvent["CHECK_FAILED"] = "checkFailed";
13
+ BuilderEvent["CHECKING"] = "checking";
14
+ BuilderEvent["CHECKED"] = "checked";
15
+ BuilderEvent["NONE"] = "none";
16
+ return BuilderEvent;
17
+ }({});
18
+ var BuilderCommand = /*#__PURE__*/ function(BuilderCommand) {
19
+ BuilderCommand["BUILD"] = "build";
20
+ BuilderCommand["CHECK"] = "check";
21
+ BuilderCommand["PUSH"] = "push";
22
+ return BuilderCommand;
23
+ }({});
24
+ var BuilderErrorCode = /*#__PURE__*/ function(BuilderErrorCode) {
25
+ BuilderErrorCode["ENTRYPOINT_NOT_FOUND"] = "entrypointNotFound";
26
+ BuilderErrorCode["MASTER_IMAGE_NOT_FOUND"] = "masterImageNotFound";
27
+ BuilderErrorCode["UNKNOWN"] = "unknown";
28
+ return BuilderErrorCode;
29
+ }({});
30
+ const BuilderEventQueueRouterRouting = {
31
+ type: QueueRouterRoutingType.PUB_SUB,
32
+ key: 'analysisBuilderEvents'
33
+ };
34
+ const BuilderTaskQueueRouterRouting = {
35
+ type: QueueRouterRoutingType.WORK,
36
+ key: 'analysisBuilderCommands'
37
+ };
38
+
39
+ function cleanupPayload(payload) {
40
+ if (hasOwnProperty(payload, 'entity')) {
41
+ delete payload.entity;
42
+ }
43
+ if (hasOwnProperty(payload, 'registry')) {
44
+ delete payload.registry;
45
+ }
46
+ return payload;
47
+ }
48
+
49
+ function buildBuilderTaskQueueRouterPayload(context) {
50
+ return buildQueueRouterPublishPayload({
51
+ type: context.command,
52
+ data: cleanupPayload(context.data),
53
+ metadata: {
54
+ routing: BuilderTaskQueueRouterRouting
55
+ }
56
+ });
57
+ }
58
+ function buildBuilderEventQueueRouterPayload(context) {
59
+ return buildQueueRouterPublishPayload({
60
+ type: context.event,
61
+ data: cleanupPayload(context.data),
62
+ metadata: {
63
+ routing: BuilderEventQueueRouterRouting
64
+ }
65
+ });
66
+ }
67
+
68
+ var CoreEvent = /*#__PURE__*/ function(CoreEvent) {
69
+ CoreEvent["BUCKET_CREATED"] = "bucketCreated";
70
+ CoreEvent["BUCKET_DELETED"] = "bucketDeleted";
71
+ CoreEvent["CONFIGURING"] = "configuring";
72
+ CoreEvent["CONFIGURED"] = "configured";
73
+ CoreEvent["DESTROYING"] = "destroying";
74
+ CoreEvent["DESTROYED"] = "destroyed";
75
+ CoreEvent["FAILED"] = "failed";
76
+ CoreEvent["NONE"] = "none";
77
+ return CoreEvent;
78
+ }({});
79
+ var CoreCommand = /*#__PURE__*/ function(CoreCommand) {
80
+ CoreCommand["CONFIGURE"] = "configure";
81
+ CoreCommand["DESTROY"] = "destroy";
82
+ return CoreCommand;
83
+ }({});
84
+ const CoreEventQueueRouterRouting = {
85
+ type: QueueRouterRoutingType.PUB_SUB,
86
+ key: 'analysisCoreEvents'
87
+ };
88
+ const CoreTaskQueueRouterRouting = {
89
+ type: QueueRouterRoutingType.WORK,
90
+ key: 'analysisCoreCommands'
91
+ };
92
+
93
+ function buildCoreTaskQueueRouterPayload(context) {
94
+ return buildQueueRouterPublishPayload({
95
+ type: context.command,
96
+ data: cleanupPayload(context.data),
97
+ metadata: {
98
+ routing: CoreTaskQueueRouterRouting
99
+ }
100
+ });
101
+ }
102
+ function buildCoreEventQueueRouterPayload(context) {
103
+ return buildQueueRouterPublishPayload({
104
+ type: context.event,
105
+ data: cleanupPayload(context.data),
106
+ metadata: {
107
+ routing: CoreEventQueueRouterRouting
108
+ }
109
+ });
110
+ }
111
+
112
+ var MasterImagesEvent = /*#__PURE__*/ function(MasterImagesEvent) {
113
+ MasterImagesEvent["SYNCHRONIZING"] = "synchronizing";
114
+ MasterImagesEvent["SYNCHRONIZED"] = "synchronized";
115
+ MasterImagesEvent["SYNCHRONIZATION_FAILED"] = "synchronizationFailed";
116
+ MasterImagesEvent["BUILDING"] = "building";
117
+ MasterImagesEvent["BUILT"] = "built";
118
+ MasterImagesEvent["BUILD_FAILED"] = "buildFailed";
119
+ MasterImagesEvent["PUSHING"] = "pushing";
120
+ MasterImagesEvent["PUSHED"] = "pushed";
121
+ MasterImagesEvent["PUSH_FAILED"] = "pushFailed";
122
+ return MasterImagesEvent;
123
+ }({});
124
+ var MasterImagesCommand = /*#__PURE__*/ function(MasterImagesCommand) {
125
+ MasterImagesCommand["SYNCHRONIZE"] = "synchronize";
126
+ MasterImagesCommand["BUILD"] = "build";
127
+ MasterImagesCommand["PUSH"] = "push";
128
+ return MasterImagesCommand;
129
+ }({});
130
+ const MasterImagesEventQueueRouterRouting = {
131
+ type: QueueRouterRoutingType.PUB_SUB,
132
+ key: 'analysisMasterImagesEvents'
133
+ };
134
+ const MasterImagesTaskQueueRouterRouting = {
135
+ type: QueueRouterRoutingType.WORK,
136
+ key: 'analysisMasterImagesCommands'
137
+ };
138
+
139
+ /*
140
+ * Copyright (c) 2024.
141
+ * Author Peter Placzek (tada5hi)
142
+ * For the full copyright and license information,
143
+ * view the LICENSE file that was distributed with this source code.
144
+ */ function _define_property(obj, key, value) {
145
+ if (key in obj) {
146
+ Object.defineProperty(obj, key, {
147
+ value: value,
148
+ enumerable: true,
149
+ configurable: true,
150
+ writable: true
151
+ });
152
+ } else {
153
+ obj[key] = value;
154
+ }
155
+ return obj;
156
+ }
157
+ class MasterImageQueueService {
158
+ // -------------------------------------------------
159
+ async publishCommand(ctx) {
160
+ const isLocked = await this.isCommandLocked(ctx.command);
161
+ if (isLocked) {
162
+ throw new Error('The command is locked and can therefore not be executed.');
163
+ }
164
+ const routerPayload = this.buildRouterPayloadForCommand(ctx);
165
+ await this.queueRouter.publish(routerPayload);
166
+ if (ctx.command === MasterImagesCommand.SYNCHRONIZE) {
167
+ await this.setCommandLock(ctx.command);
168
+ }
169
+ }
170
+ async consumeCommands(handlers) {
171
+ await this.queueRouter.consume(MasterImagesTaskQueueRouterRouting, {
172
+ $any: async (message)=>{
173
+ if (handlers[message.type]) {
174
+ await handlers[message.type](message, this);
175
+ }
176
+ if (handlers.$any) {
177
+ await handlers.$any(message);
178
+ }
179
+ }
180
+ });
181
+ }
182
+ // -------------------------------------------------
183
+ async publishEvent(ctx) {
184
+ const routerPayload = this.buildRouterPayloadForEvent(ctx);
185
+ await this.queueRouter.publish(routerPayload);
186
+ }
187
+ async consumeEvents(handlers) {
188
+ await this.queueRouter.consume(MasterImagesEventQueueRouterRouting, {
189
+ $any: async (message)=>{
190
+ await this.setCommandLock(MasterImagesCommand.SYNCHRONIZE);
191
+ if (handlers[message.type]) {
192
+ await handlers[message.type](message);
193
+ }
194
+ if (handlers.$any) {
195
+ await handlers.$any(message);
196
+ }
197
+ }
198
+ });
199
+ }
200
+ // -------------------------------------------------
201
+ async setCommandLock(command) {
202
+ await this.cache.set(`master-images-command:${command}`, true, {
203
+ ttl: 1000 * 60
204
+ });
205
+ }
206
+ async isCommandLocked(command) {
207
+ const isActive = await this.cache.get(`master-images-command:${command}`);
208
+ return !!isActive;
209
+ }
210
+ // -------------------------------------------------
211
+ buildRouterPayloadForEvent(context) {
212
+ return buildQueueRouterPublishPayload({
213
+ type: context.event,
214
+ data: cleanupPayload(context.data),
215
+ metadata: {
216
+ routing: MasterImagesEventQueueRouterRouting
217
+ }
218
+ });
219
+ }
220
+ buildRouterPayloadForCommand(context) {
221
+ return buildQueueRouterPublishPayload({
222
+ type: context.command,
223
+ data: cleanupPayload(context.data),
224
+ metadata: {
225
+ routing: MasterImagesTaskQueueRouterRouting
226
+ }
227
+ });
228
+ }
229
+ constructor(){
230
+ _define_property(this, "cache", void 0);
231
+ _define_property(this, "queueRouter", void 0);
232
+ this.cache = useCache();
233
+ this.queueRouter = useQueueRouter();
234
+ }
235
+ }
236
+
237
+ const instance = singa({
238
+ name: 'masterImageQueue',
239
+ factory: ()=>new MasterImageQueueService()
240
+ });
241
+ function useMasterImageQueueService() {
242
+ return instance.use();
243
+ }
244
+
245
+ /*
246
+ * Copyright (c) 2024.
247
+ * Author Peter Placzek (tada5hi)
248
+ * For the full copyright and license information,
249
+ * view the LICENSE file that was distributed with this source code.
250
+ */ var ComponentName = /*#__PURE__*/ function(ComponentName) {
251
+ ComponentName["BUILDER"] = "builder";
252
+ ComponentName["CORE"] = "core";
253
+ ComponentName["MASTER_IMAGES"] = "masterImages";
254
+ return ComponentName;
255
+ }({});
256
+ var ErrorCode = /*#__PURE__*/ function(ErrorCode) {
257
+ ErrorCode["NOT_FOUND"] = "notFound";
258
+ ErrorCode["REGISTRY_NOT_FOUND"] = "registryNotFound";
259
+ ErrorCode["REGISTRY_PROJECT_NOT_FOUND"] = "registryProjectNotFound";
260
+ ErrorCode["NONE"] = "none";
261
+ return ErrorCode;
262
+ }({});
263
+
264
+ export { BuilderCommand, BuilderErrorCode, BuilderEvent, BuilderEventQueueRouterRouting, BuilderTaskQueueRouterRouting, ComponentName, CoreCommand, CoreEvent, CoreEventQueueRouterRouting, CoreTaskQueueRouterRouting, ErrorCode, MasterImageQueueService, MasterImagesCommand, MasterImagesEvent, MasterImagesEventQueueRouterRouting, MasterImagesTaskQueueRouterRouting, buildBuilderEventQueueRouterPayload, buildBuilderTaskQueueRouterPayload, buildCoreEventQueueRouterPayload, buildCoreTaskQueueRouterPayload, useMasterImageQueueService };
265
+ //# sourceMappingURL=index.mjs.map