@golemio/core 1.2.17 → 1.2.18-dev.638541239

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 (36) hide show
  1. package/dist/helpers/data-access/storage/AbstractStorageService.d.ts +4 -0
  2. package/dist/helpers/data-access/storage/AbstractStorageService.js +7 -0
  3. package/dist/helpers/data-access/storage/AbstractStorageService.js.map +1 -0
  4. package/dist/helpers/data-access/storage/AzureBlobStorageService.d.ts +14 -0
  5. package/dist/helpers/data-access/storage/AzureBlobStorageService.js +55 -0
  6. package/dist/helpers/data-access/storage/AzureBlobStorageService.js.map +1 -0
  7. package/dist/helpers/data-access/storage/StorageServiceFactory.d.ts +17 -0
  8. package/dist/helpers/data-access/storage/StorageServiceFactory.js +24 -0
  9. package/dist/helpers/data-access/storage/StorageServiceFactory.js.map +1 -0
  10. package/dist/helpers/data-access/storage/index.d.ts +2 -0
  11. package/dist/helpers/data-access/storage/index.js +19 -0
  12. package/dist/helpers/data-access/storage/index.js.map +1 -0
  13. package/dist/integration-engine/data-access/StorageService.d.ts +10 -0
  14. package/dist/integration-engine/data-access/StorageService.js +68 -0
  15. package/dist/integration-engine/data-access/StorageService.js.map +1 -0
  16. package/dist/integration-engine/data-access/index.d.ts +1 -0
  17. package/dist/integration-engine/data-access/index.js +18 -0
  18. package/dist/integration-engine/data-access/index.js.map +1 -0
  19. package/dist/integration-engine/helpers/ContentTypeHelper.d.ts +1 -39
  20. package/dist/integration-engine/helpers/ContentTypeHelper.js.map +1 -1
  21. package/dist/integration-engine/helpers/RawDataStore.d.ts +1 -1
  22. package/dist/integration-engine/helpers/RawDataStore.js +38 -63
  23. package/dist/integration-engine/helpers/RawDataStore.js.map +1 -1
  24. package/dist/integration-engine/workers/AbstractEmptyTask.d.ts +1 -2
  25. package/dist/integration-engine/workers/AbstractEmptyTask.js +2 -2
  26. package/dist/integration-engine/workers/AbstractEmptyTask.js.map +1 -1
  27. package/dist/integration-engine/workers/AbstractTask.d.ts +3 -3
  28. package/dist/integration-engine/workers/AbstractTask.js +7 -38
  29. package/dist/integration-engine/workers/AbstractTask.js.map +1 -1
  30. package/dist/integration-engine/workers/helpers/MessageDataParser.d.ts +5 -0
  31. package/dist/integration-engine/workers/helpers/MessageDataParser.js +27 -0
  32. package/dist/integration-engine/workers/helpers/MessageDataParser.js.map +1 -0
  33. package/dist/integration-engine/workers/helpers/MessageDataValidator.d.ts +4 -0
  34. package/dist/integration-engine/workers/helpers/MessageDataValidator.js +44 -0
  35. package/dist/integration-engine/workers/helpers/MessageDataValidator.js.map +1 -0
  36. package/package.json +125 -124
@@ -0,0 +1,4 @@
1
+ /// <reference types="node" />
2
+ export declare abstract class AbstractStorageService {
3
+ abstract uploadFile(data: Buffer | string, pathPrefix: string, ext?: string, fileName?: string): Promise<void>;
4
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractStorageService = void 0;
4
+ class AbstractStorageService {
5
+ }
6
+ exports.AbstractStorageService = AbstractStorageService;
7
+ //# sourceMappingURL=AbstractStorageService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractStorageService.js","sourceRoot":"","sources":["../../../../src/helpers/data-access/storage/AbstractStorageService.ts"],"names":[],"mappings":";;;AAAA,MAAsB,sBAAsB;CAE3C;AAFD,wDAEC"}
@@ -0,0 +1,14 @@
1
+ /// <reference types="node" />
2
+ import { ILogger } from "../../Logger";
3
+ import { AbstractStorageService } from "./AbstractStorageService";
4
+ export interface IAzureBlobStorageConfig {
5
+ connectionString: string;
6
+ containerName: string;
7
+ }
8
+ export declare class AzureBlobStorageService extends AbstractStorageService {
9
+ private readonly containerClient;
10
+ private readonly log;
11
+ constructor(config: IAzureBlobStorageConfig, log: ILogger);
12
+ uploadFile(data: Buffer | string, pathPrefix: string, ext?: string, fileName?: string): Promise<void>;
13
+ private handleUploadProgress;
14
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AzureBlobStorageService = void 0;
13
+ const storage_blob_1 = require("@azure/storage-blob");
14
+ const luxon_1 = require("luxon");
15
+ const AbstractStorageService_1 = require("./AbstractStorageService");
16
+ class AzureBlobStorageService extends AbstractStorageService_1.AbstractStorageService {
17
+ constructor(config, log) {
18
+ super();
19
+ const blobServiceClient = storage_blob_1.BlobServiceClient.fromConnectionString(config.connectionString);
20
+ this.containerClient = blobServiceClient.getContainerClient(config.containerName);
21
+ this.containerClient.createIfNotExists().catch((err) => {
22
+ log.warn(`[${this.constructor.name}] Could not initialize container "${config.containerName}": `, err);
23
+ });
24
+ this.log = log;
25
+ }
26
+ uploadFile(data, pathPrefix, ext = "", fileName) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ const now = luxon_1.DateTime.local({ zone: "Europe/Prague" });
29
+ const fileNamePrefix = fileName !== null && fileName !== void 0 ? fileName : `${now.toFormat("yyyy-MM-dd")}/${now.toFormat("HH_mm_ss.SSS")}`;
30
+ const fileNameKey = `${pathPrefix}/${fileNamePrefix}`;
31
+ const fileNameExt = ext ? `.${ext}` : "";
32
+ try {
33
+ const blobClient = this.containerClient.getBlockBlobClient(`${fileNameKey}${fileNameExt}`);
34
+ if (!Buffer.isBuffer(data)) {
35
+ data = Buffer.from(data);
36
+ }
37
+ const options = {
38
+ blobHTTPHeaders: { blobContentType: "application/octet-stream" },
39
+ onProgress: this.handleUploadProgress(fileNameKey + fileNameExt, Buffer.byteLength(data)),
40
+ };
41
+ yield blobClient.uploadData(data, options);
42
+ }
43
+ catch (err) {
44
+ this.log.error(`[${this.constructor.name}] Saving of data failed (${fileNameKey}${fileNameExt})`, err);
45
+ }
46
+ });
47
+ }
48
+ handleUploadProgress(filePath, dataByteLength) {
49
+ return (progress) => {
50
+ this.log.verbose(`[${this.constructor.name}] File upload ` + `${filePath}: ${progress.loadedBytes} / ${dataByteLength}`);
51
+ };
52
+ }
53
+ }
54
+ exports.AzureBlobStorageService = AzureBlobStorageService;
55
+ //# sourceMappingURL=AzureBlobStorageService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AzureBlobStorageService.js","sourceRoot":"","sources":["../../../../src/helpers/data-access/storage/AzureBlobStorageService.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sDAAyG;AAEzG,iCAAiC;AAEjC,qEAAkE;AAOlE,MAAa,uBAAwB,SAAQ,+CAAsB;IAI/D,YAAY,MAA+B,EAAE,GAAY;QACrD,KAAK,EAAE,CAAC;QAER,MAAM,iBAAiB,GAAG,gCAAiB,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC1F,IAAI,CAAC,eAAe,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAClF,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACnD,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,qCAAqC,MAAM,CAAC,aAAa,KAAK,EAAE,GAAG,CAAC,CAAC;QAC3G,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IAEY,UAAU,CAAC,IAAqB,EAAE,UAAkB,EAAE,MAAc,EAAE,EAAE,QAAiB;;YAClG,MAAM,GAAG,GAAG,gBAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;YACtD,MAAM,cAAc,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACnG,MAAM,WAAW,GAAG,GAAG,UAAU,IAAI,cAAc,EAAE,CAAC;YACtD,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAEzC,IAAI;gBACA,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,GAAG,WAAW,GAAG,WAAW,EAAE,CAAC,CAAC;gBAE3F,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBACxB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC5B;gBAED,MAAM,OAAO,GAAmC;oBAC5C,eAAe,EAAE,EAAE,eAAe,EAAE,0BAA0B,EAAE;oBAChE,UAAU,EAAE,IAAI,CAAC,oBAAoB,CAAC,WAAW,GAAG,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;iBAC5F,CAAC;gBAEF,MAAM,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;aAC9C;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,4BAA4B,WAAW,GAAG,WAAW,GAAG,EAAE,GAAG,CAAC,CAAC;aAC1G;QACL,CAAC;KAAA;IAEO,oBAAoB,CAAC,QAAgB,EAAE,cAAsB;QACjE,OAAO,CAAC,QAA+B,EAAE,EAAE;YACvC,IAAI,CAAC,GAAG,CAAC,OAAO,CACZ,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,gBAAgB,GAAG,GAAG,QAAQ,KAAK,QAAQ,CAAC,WAAW,MAAM,cAAc,EAAE,CACzG,CAAC;QACN,CAAC,CAAC;IACN,CAAC;CACJ;AA/CD,0DA+CC"}
@@ -0,0 +1,17 @@
1
+ import { ILogger } from "../../Logger";
2
+ import { AbstractStorageService } from "./AbstractStorageService";
3
+ import { IAzureBlobStorageConfig } from "./AzureBlobStorageService";
4
+ export interface IStorageConfig {
5
+ enabled: boolean;
6
+ provider: {
7
+ azure: IAzureBlobStorageConfig;
8
+ };
9
+ }
10
+ export declare enum StorageProvider {
11
+ Azure = 0
12
+ }
13
+ export declare class StorageServiceFactory {
14
+ private dictionary;
15
+ constructor(config: IStorageConfig, log: ILogger);
16
+ getService(storageProvider: StorageProvider): AbstractStorageService | undefined;
17
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StorageServiceFactory = exports.StorageProvider = void 0;
4
+ const AzureBlobStorageService_1 = require("./AzureBlobStorageService");
5
+ var StorageProvider;
6
+ (function (StorageProvider) {
7
+ StorageProvider[StorageProvider["Azure"] = 0] = "Azure";
8
+ })(StorageProvider = exports.StorageProvider || (exports.StorageProvider = {}));
9
+ class StorageServiceFactory {
10
+ constructor(config, log) {
11
+ this.dictionary = new Map();
12
+ if (config.enabled) {
13
+ this.dictionary.set(StorageProvider.Azure, new AzureBlobStorageService_1.AzureBlobStorageService(config.provider.azure, log));
14
+ }
15
+ else {
16
+ log.silly("[StorageServiceFactory] Storage is disabled. Skipping");
17
+ }
18
+ }
19
+ getService(storageProvider) {
20
+ return this.dictionary.get(storageProvider);
21
+ }
22
+ }
23
+ exports.StorageServiceFactory = StorageServiceFactory;
24
+ //# sourceMappingURL=StorageServiceFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageServiceFactory.js","sourceRoot":"","sources":["../../../../src/helpers/data-access/storage/StorageServiceFactory.ts"],"names":[],"mappings":";;;AAEA,uEAA6F;AAS7F,IAAY,eAEX;AAFD,WAAY,eAAe;IACvB,uDAAK,CAAA;AACT,CAAC,EAFW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAE1B;AAED,MAAa,qBAAqB;IAG9B,YAAY,MAAsB,EAAE,GAAY;QAC5C,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAE5B,IAAI,MAAM,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,iDAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;SACvG;aAAM;YACH,GAAG,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;SACtE;IACL,CAAC;IAEM,UAAU,CAAC,eAAgC;QAC9C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAChD,CAAC;CACJ;AAhBD,sDAgBC"}
@@ -0,0 +1,2 @@
1
+ export * from "./StorageServiceFactory";
2
+ export * from "./AbstractStorageService";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./StorageServiceFactory"), exports);
18
+ __exportStar(require("./AbstractStorageService"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/helpers/data-access/storage/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC;AACxC,2DAAyC"}
@@ -0,0 +1,10 @@
1
+ declare class StorageService {
2
+ private readonly s3;
3
+ constructor();
4
+ /**
5
+ * Save data to our storage
6
+ */
7
+ saveData(data: string, pathPrefix: string, ext?: string, fileName?: string): Promise<void>;
8
+ }
9
+ export declare const storageService: StorageService;
10
+ export {};
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.storageService = void 0;
16
+ const aws_sdk_1 = require("aws-sdk");
17
+ const moment_timezone_1 = __importDefault(require("moment-timezone"));
18
+ const config_1 = require("../config");
19
+ const helpers_1 = require("../helpers");
20
+ class StorageService {
21
+ constructor() {
22
+ this.s3 = new aws_sdk_1.S3({
23
+ accessKeyId: config_1.config.s3.access_key_id,
24
+ endpoint: config_1.config.s3.endpoint,
25
+ s3ForcePathStyle: true,
26
+ secretAccessKey: config_1.config.s3.secret_access_key,
27
+ signatureVersion: "v4",
28
+ });
29
+ }
30
+ /**
31
+ * Save data to our storage
32
+ */
33
+ saveData(data, pathPrefix, ext = "", fileName) {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ if (!config_1.config.s3.enabled || !config_1.config.s3.bucket_name) {
36
+ helpers_1.log.silly("[S3] Service is disabled. Skipping");
37
+ return;
38
+ }
39
+ const now = (0, moment_timezone_1.default)().tz("Europe/Prague");
40
+ const fileNamePrefix = fileName !== null && fileName !== void 0 ? fileName : `${now.format("YYYY-MM-DD")}/${now.format("HH_mm_ss.SSS")}`;
41
+ const fileNameKey = `${pathPrefix}/${fileNamePrefix}`;
42
+ const fileNameExt = ext ? `.${ext}` : "";
43
+ const paramsBodyData = {
44
+ Body: data,
45
+ Bucket: config_1.config.s3.bucket_name,
46
+ Key: `${fileNameKey}${fileNameExt}`,
47
+ };
48
+ const options = {
49
+ partSize: config_1.config.s3.upload_part_size * 1024 * 1024,
50
+ queueSize: config_1.config.s3.upload_queue_size,
51
+ };
52
+ try {
53
+ yield this.s3
54
+ .upload(paramsBodyData, options)
55
+ .on("httpUploadProgress", (progress) => {
56
+ helpers_1.log.verbose(`[S3] Data S3 upload ` +
57
+ `\`${config_1.config.s3.bucket_name}/${fileName}: \`${progress.loaded} / ${progress.total}.`);
58
+ })
59
+ .promise();
60
+ }
61
+ catch (err) {
62
+ helpers_1.log.error(`[S3] Saving of data failed (${fileName})`, err);
63
+ }
64
+ });
65
+ }
66
+ }
67
+ exports.storageService = new StorageService();
68
+ //# sourceMappingURL=StorageService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageService.js","sourceRoot":"","sources":["../../../src/integration-engine/data-access/StorageService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,qCAA6B;AAC7B,sEAAqC;AACrC,sCAAoC;AACpC,wCAAkC;AAElC,MAAM,cAAc;IAGhB;QACI,IAAI,CAAC,EAAE,GAAG,IAAI,YAAE,CAAC;YACb,WAAW,EAAE,eAAM,CAAC,EAAE,CAAC,aAAa;YACpC,QAAQ,EAAE,eAAM,CAAC,EAAE,CAAC,QAAQ;YAC5B,gBAAgB,EAAE,IAAI;YACtB,eAAe,EAAE,eAAM,CAAC,EAAE,CAAC,iBAAiB;YAC5C,gBAAgB,EAAE,IAAI;SACzB,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACU,QAAQ,CAAC,IAAY,EAAE,UAAkB,EAAE,MAAc,EAAE,EAAE,QAAiB;;YACvF,IAAI,CAAC,eAAM,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,eAAM,CAAC,EAAE,CAAC,WAAW,EAAE;gBAC9C,aAAG,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBAChD,OAAO;aACV;YAED,MAAM,GAAG,GAAG,IAAA,yBAAM,GAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;YACzC,MAAM,cAAc,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/F,MAAM,WAAW,GAAG,GAAG,UAAU,IAAI,cAAc,EAAE,CAAC;YACtD,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAEzC,MAAM,cAAc,GAAwB;gBACxC,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,eAAM,CAAC,EAAE,CAAC,WAAW;gBAC7B,GAAG,EAAE,GAAG,WAAW,GAAG,WAAW,EAAE;aACtC,CAAC;YAEF,MAAM,OAAO,GAAG;gBACZ,QAAQ,EAAE,eAAM,CAAC,EAAE,CAAC,gBAAgB,GAAG,IAAI,GAAG,IAAI;gBAClD,SAAS,EAAE,eAAM,CAAC,EAAE,CAAC,iBAAiB;aACzC,CAAC;YAEF,IAAI;gBACA,MAAM,IAAI,CAAC,EAAE;qBACR,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC;qBAC/B,EAAE,CAAC,oBAAoB,EAAE,CAAC,QAAQ,EAAE,EAAE;oBACnC,aAAG,CAAC,OAAO,CACP,sBAAsB;wBAClB,KAAK,eAAM,CAAC,EAAE,CAAC,WAAW,IAAI,QAAQ,OAAO,QAAQ,CAAC,MAAM,MAAM,QAAQ,CAAC,KAAK,GAAG,CAC1F,CAAC;gBACN,CAAC,CAAC;qBACD,OAAO,EAAE,CAAC;aAClB;YAAC,OAAO,GAAG,EAAE;gBACV,aAAG,CAAC,KAAK,CAAC,+BAA+B,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAC;aAC9D;QACL,CAAC;KAAA;CACJ;AAEY,QAAA,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ export * from "./StorageService";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./StorageService"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integration-engine/data-access/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC"}
@@ -1,39 +1 @@
1
- export declare const contentTypeToExtension: {
2
- "application/geo+json": string;
3
- "application/gnutar": string;
4
- "application/gzip": string;
5
- "application/javascript": string;
6
- "application/json": string;
7
- "application/ld+json": string;
8
- "application/rar": string;
9
- "application/tar": string;
10
- "application/tar+gzip": string;
11
- "application/vnd.ms-excel": string;
12
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": string;
13
- "application/x-compressed": string;
14
- "application/x-gzip": string;
15
- "application/x-javascript": string;
16
- "application/x-json": string;
17
- "application/x-rar": string;
18
- "application/x-rar-compressed": string;
19
- "application/x-tar": string;
20
- "application/x-zip": string;
21
- "application/x-zip-compressed": string;
22
- "application/xml": string;
23
- "application/zip": string;
24
- "image/gif": string;
25
- "image/jpeg": string;
26
- "image/png": string;
27
- "image/tiff": string;
28
- "multipart/x-gzip": string;
29
- "multipart/x-zip": string;
30
- "text/csv": string;
31
- "text/html": string;
32
- "text/javascript": string;
33
- "text/json": string;
34
- "text/plain": string;
35
- "text/tab-separated-values": string;
36
- "text/x-javascript": string;
37
- "text/x-json": string;
38
- "text/xml": string;
39
- };
1
+ export declare const contentTypeToExtension: Record<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"ContentTypeHelper.js","sourceRoot":"","sources":["../../../src/integration-engine/helpers/ContentTypeHelper.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG;IAClC,sBAAsB,EAAE,MAAM;IAC9B,oBAAoB,EAAE,KAAK;IAC3B,kBAAkB,EAAE,IAAI;IACxB,wBAAwB,EAAE,MAAM;IAChC,kBAAkB,EAAE,MAAM;IAC1B,qBAAqB,EAAE,QAAQ;IAC/B,iBAAiB,EAAE,KAAK;IACxB,iBAAiB,EAAE,KAAK;IACxB,sBAAsB,EAAE,QAAQ;IAChC,0BAA0B,EAAE,KAAK;IACjC,mEAAmE,EAAE,MAAM;IAC3E,0BAA0B,EAAE,KAAK;IACjC,oBAAoB,EAAE,IAAI;IAC1B,0BAA0B,EAAE,MAAM;IAClC,oBAAoB,EAAE,MAAM;IAC5B,mBAAmB,EAAE,KAAK;IAC1B,8BAA8B,EAAE,KAAK;IACrC,mBAAmB,EAAE,KAAK;IAC1B,mBAAmB,EAAE,KAAK;IAC1B,8BAA8B,EAAE,KAAK;IACrC,iBAAiB,EAAE,KAAK;IACxB,iBAAiB,EAAE,KAAK;IACxB,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,KAAK;IACnB,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,MAAM;IACpB,kBAAkB,EAAE,IAAI;IACxB,iBAAiB,EAAE,KAAK;IACxB,UAAU,EAAE,KAAK;IACjB,WAAW,EAAE,MAAM;IACnB,iBAAiB,EAAE,MAAM;IACzB,WAAW,EAAE,MAAM;IACnB,YAAY,EAAE,KAAK;IACnB,2BAA2B,EAAE,KAAK;IAClC,mBAAmB,EAAE,MAAM;IAC3B,aAAa,EAAE,MAAM;IACrB,UAAU,EAAE,KAAK;CACpB,CAAC"}
1
+ {"version":3,"file":"ContentTypeHelper.js","sourceRoot":"","sources":["../../../src/integration-engine/helpers/ContentTypeHelper.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAA2B;IAC1D,sBAAsB,EAAE,MAAM;IAC9B,oBAAoB,EAAE,KAAK;IAC3B,kBAAkB,EAAE,IAAI;IACxB,wBAAwB,EAAE,MAAM;IAChC,kBAAkB,EAAE,MAAM;IAC1B,qBAAqB,EAAE,QAAQ;IAC/B,iBAAiB,EAAE,KAAK;IACxB,iBAAiB,EAAE,KAAK;IACxB,sBAAsB,EAAE,QAAQ;IAChC,0BAA0B,EAAE,KAAK;IACjC,mEAAmE,EAAE,MAAM;IAC3E,0BAA0B,EAAE,KAAK;IACjC,oBAAoB,EAAE,IAAI;IAC1B,0BAA0B,EAAE,MAAM;IAClC,oBAAoB,EAAE,MAAM;IAC5B,mBAAmB,EAAE,KAAK;IAC1B,8BAA8B,EAAE,KAAK;IACrC,mBAAmB,EAAE,KAAK;IAC1B,mBAAmB,EAAE,KAAK;IAC1B,8BAA8B,EAAE,KAAK;IACrC,iBAAiB,EAAE,KAAK;IACxB,iBAAiB,EAAE,KAAK;IACxB,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,KAAK;IACnB,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,MAAM;IACpB,kBAAkB,EAAE,IAAI;IACxB,iBAAiB,EAAE,KAAK;IACxB,UAAU,EAAE,KAAK;IACjB,WAAW,EAAE,MAAM;IACnB,iBAAiB,EAAE,MAAM;IACzB,WAAW,EAAE,MAAM;IACnB,YAAY,EAAE,KAAK;IACnB,2BAA2B,EAAE,KAAK;IAClC,mBAAmB,EAAE,MAAM;IAC3B,aAAa,EAAE,MAAM;IACrB,UAAU,EAAE,KAAK;CACpB,CAAC"}
@@ -1 +1 @@
1
- export declare const save: (data: any, meta: any, name?: string) => void;
1
+ export declare const save: (data: any, meta: any, name?: string) => Promise<void>;
@@ -1,80 +1,55 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
13
  };
5
14
  Object.defineProperty(exports, "__esModule", { value: true });
6
15
  exports.save = void 0;
7
- const aws_sdk_1 = require("aws-sdk");
8
16
  const content_type_1 = __importDefault(require("content-type"));
9
17
  const moment_timezone_1 = __importDefault(require("moment-timezone"));
10
18
  const helpers_1 = require("./");
11
19
  const config_1 = require("../config");
12
- const s3 = new aws_sdk_1.S3({
13
- accessKeyId: config_1.config.s3.access_key_id,
14
- endpoint: config_1.config.s3.endpoint,
15
- s3ForcePathStyle: true,
16
- secretAccessKey: config_1.config.s3.secret_access_key,
17
- signatureVersion: "v4",
18
- });
19
- const save = (data, meta, name = "Unknown") => {
20
- if (config_1.config.s3.enabled && config_1.config.saveRawDataWhitelist[name]) {
21
- const now = (0, moment_timezone_1.default)().tz("Europe/Prague");
22
- let ext = null;
23
- let headers = null;
24
- if (meta.headers) {
25
- try {
26
- headers = JSON.stringify(meta.headers, null, 2);
27
- }
28
- catch (_a) {
29
- null;
30
- }
31
- try {
32
- // @ts-ignore
33
- ext = `.${helpers_1.contentTypeToExtension[(content_type_1.default.parse(meta.headers["content-type"]) || {}).type]}`;
34
- }
35
- catch (_b) {
36
- null;
37
- }
20
+ const data_access_1 = require("../data-access");
21
+ const save = (data, meta, name = "Unknown") => __awaiter(void 0, void 0, void 0, function* () {
22
+ if (!config_1.config.s3.enabled || !config_1.config.saveRawDataWhitelist[name]) {
23
+ helpers_1.log.verbose(`Raw data S3 upload not enabled for \`${name}\` datasource.`);
24
+ return;
25
+ }
26
+ const now = (0, moment_timezone_1.default)().tz("Europe/Prague");
27
+ let ext = null;
28
+ let headers = null;
29
+ if (meta.headers) {
30
+ try {
31
+ headers = JSON.stringify(meta.headers, null, 2);
32
+ }
33
+ catch (_a) {
34
+ null;
38
35
  }
39
- const fileName = `${name}/${now.format("YYYY-MM-DD")}/${now.format("HH_mm_ss.SSS")}`;
40
- const paramsBodyData = {
41
- Body: data,
42
- Bucket: config_1.config.s3.bucket_name,
43
- Key: `${fileName}${ext || ""}`,
44
- };
45
- const paramsBodyHeaders = {
46
- Body: headers,
47
- Bucket: config_1.config.s3.bucket_name,
48
- Key: `${fileName}_headers.json`,
49
- };
50
- const options = {
51
- partSize: config_1.config.s3.upload_part_size * 1024 * 1024,
52
- queueSize: config_1.config.s3.upload_queue_size,
53
- };
54
- const uploadData = s3.upload(paramsBodyData, options, (err) => {
55
- if (err) {
56
- helpers_1.log.error(`Saving raw data failed. (${fileName})`, { error: err });
36
+ try {
37
+ const parsedMediaType = content_type_1.default.parse(meta.headers["content-type"]);
38
+ if (parsedMediaType === null || parsedMediaType === void 0 ? void 0 : parsedMediaType.type) {
39
+ ext = helpers_1.contentTypeToExtension[parsedMediaType.type];
57
40
  }
58
- });
59
- uploadData.on("httpUploadProgress", (progress) => {
60
- helpers_1.log.verbose(`Raw data S3 upload \`
61
- ${config_1.config.s3.bucket_name}/${fileName}: \`${progress.loaded} / ${progress.total}.`);
62
- });
63
- if (config_1.config.saveRawDataWhitelist[name].saveHeaders && headers && meta.statusCode && meta.statusCode !== 200) {
64
- const uploadHeaders = s3.upload(paramsBodyHeaders, options, (err) => {
65
- if (err) {
66
- helpers_1.log.error(`Saving raw data headers failed. (${fileName}.headers)`, { error: err });
67
- }
68
- });
69
- uploadHeaders.on("httpUploadProgress", (progress) => {
70
- helpers_1.log.verbose(`Raw data headers S3 upload \`
71
- ${config_1.config.s3.bucket_name}/${fileName}.headers: \`${progress.loaded} / ${progress.total}.`);
72
- });
41
+ }
42
+ catch (_b) {
43
+ null;
73
44
  }
74
45
  }
75
- else {
76
- helpers_1.log.verbose(`Raw data S3 upload not enabled for \`${name}\` datasource.`);
46
+ const fileName = `${now.format("YYYY-MM-DD")}/${now.format("HH_mm_ss.SSS")}`;
47
+ // Save data
48
+ yield data_access_1.storageService.saveData(data, name, ext !== null && ext !== void 0 ? ext : "", fileName);
49
+ if (config_1.config.saveRawDataWhitelist[name].saveHeaders && headers && meta.statusCode && meta.statusCode !== 200) {
50
+ // Save headers
51
+ yield data_access_1.storageService.saveData(headers, name, "json", `${fileName}_headers`);
77
52
  }
78
- };
53
+ });
79
54
  exports.save = save;
80
55
  //# sourceMappingURL=RawDataStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RawDataStore.js","sourceRoot":"","sources":["../../../src/integration-engine/helpers/RawDataStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RawDataStore.js","sourceRoot":"","sources":["../../../src/integration-engine/helpers/RawDataStore.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gEAAuC;AACvC,sEAAqC;AACrC,gCAA0D;AAC1D,sCAAoC;AACpC,gDAAiD;AAE1C,MAAM,IAAI,GAAG,CAAO,IAAS,EAAE,IAAS,EAAE,IAAI,GAAG,SAAS,EAAE,EAAE;IACjE,IAAI,CAAC,eAAM,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,eAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE;QAC1D,aAAG,CAAC,OAAO,CAAC,wCAAwC,IAAI,gBAAgB,CAAC,CAAC;QAC1E,OAAO;KACV;IAED,MAAM,GAAG,GAAG,IAAA,yBAAM,GAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;IACzC,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,IAAI,OAAO,GAAG,IAAI,CAAC;IAEnB,IAAI,IAAI,CAAC,OAAO,EAAE;QACd,IAAI;YACA,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;SACnD;QAAC,WAAM;YACJ,IAAI,CAAC;SACR;QACD,IAAI;YACA,MAAM,eAAe,GAAG,sBAAW,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;YACxE,IAAI,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,IAAI,EAAE;gBACvB,GAAG,GAAG,gCAAsB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;aACtD;SACJ;QAAC,WAAM;YACJ,IAAI,CAAC;SACR;KACJ;IAED,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;IAE7E,YAAY;IACZ,MAAM,4BAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IAE/D,IAAI,eAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,EAAE;QACxG,eAAe;QACf,MAAM,4BAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,UAAU,CAAC,CAAC;KAC/E;AACL,CAAC,CAAA,CAAC;AAnCW,QAAA,IAAI,QAmCf"}
@@ -1,5 +1,4 @@
1
1
  import { AbstractTask } from "./AbstractTask";
2
2
  export declare abstract class AbstractEmptyTask extends AbstractTask<object> {
3
- protected schema?: undefined;
4
- constructor(queuePrefix: string);
3
+ protected schema: undefined;
5
4
  }
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AbstractEmptyTask = void 0;
4
4
  const AbstractTask_1 = require("./AbstractTask");
5
5
  class AbstractEmptyTask extends AbstractTask_1.AbstractTask {
6
- constructor(queuePrefix) {
7
- super(queuePrefix);
6
+ constructor() {
7
+ super(...arguments);
8
8
  this.schema = undefined;
9
9
  }
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractEmptyTask.js","sourceRoot":"","sources":["../../../src/integration-engine/workers/AbstractEmptyTask.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAE9C,MAAsB,iBAAkB,SAAQ,2BAAoB;IAGhE,YAAY,WAAmB;QAC3B,KAAK,CAAC,WAAW,CAAC,CAAC;QAHb,WAAM,GAAI,SAAS,CAAC;IAI9B,CAAC;CACJ;AAND,8CAMC"}
1
+ {"version":3,"file":"AbstractEmptyTask.js","sourceRoot":"","sources":["../../../src/integration-engine/workers/AbstractEmptyTask.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAE9C,MAAsB,iBAAkB,SAAQ,2BAAoB;IAApE;;QACc,WAAM,GAAG,SAAS,CAAC;IACjC,CAAC;CAAA;AAFD,8CAEC"}
@@ -1,13 +1,13 @@
1
- import { Message } from "amqplib";
1
+ import { Message, MessageProperties } from "amqplib";
2
2
  import { ClassConstructor } from "class-transformer";
3
3
  import { ITask } from "./interfaces";
4
4
  export declare abstract class AbstractTask<TRawData extends object> implements ITask {
5
5
  abstract queueName: string;
6
6
  queueTtl?: number;
7
7
  queuePrefix: string;
8
- protected abstract schema?: ClassConstructor<TRawData> | undefined;
8
+ protected abstract schema: ClassConstructor<TRawData> | undefined;
9
9
  constructor(queuePrefix: string);
10
10
  validateAndExecute(msg: Message | null): Promise<void>;
11
11
  protected abstract execute(data: TRawData): void | Promise<void>;
12
- private validate;
12
+ protected abstract execute(data: TRawData, msgProperties?: MessageProperties): void | Promise<void>;
13
13
  }
@@ -10,52 +10,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.AbstractTask = void 0;
13
- const class_transformer_1 = require("class-transformer");
14
- const class_validator_1 = require("class-validator");
15
- const errors_1 = require("@golemio/errors");
16
- const helpers_1 = require("../helpers");
13
+ const MessageDataParser_1 = require("./helpers/MessageDataParser");
14
+ const MessageDataValidator_1 = require("./helpers/MessageDataValidator");
17
15
  class AbstractTask {
18
16
  constructor(queuePrefix) {
19
17
  this.queuePrefix = queuePrefix;
20
18
  }
21
19
  validateAndExecute(msg) {
22
- var _a;
23
20
  return __awaiter(this, void 0, void 0, function* () {
24
21
  if (!this.schema) {
25
- return this.execute({});
26
- }
27
- let msgContent = "";
28
- let data;
29
- try {
30
- msgContent = (_a = msg === null || msg === void 0 ? void 0 : msg.content.toString()) !== null && _a !== void 0 ? _a : "";
31
- data = (0, class_transformer_1.plainToInstance)(this.schema, JSON.parse(msgContent));
32
- }
33
- catch (err) {
34
- const exception = new errors_1.CustomError(`[${this.constructor.name}] Message parsing failed: ${`'${msgContent.substring(0, 2000)}'`}`, true, this.constructor.name, undefined, err);
35
- helpers_1.log.error(exception);
36
- throw exception;
37
- }
38
- yield this.validate(data);
39
- return this.execute(data);
40
- });
41
- }
42
- validate(data) {
43
- return __awaiter(this, void 0, void 0, function* () {
44
- let errors = [];
45
- try {
46
- errors = yield (0, class_validator_1.validate)(data);
47
- }
48
- catch (err) {
49
- const exception = new errors_1.CustomError(`[${this.constructor.name}] Message validation failed: ${err.message}`, true, this.constructor.name, undefined, err);
50
- helpers_1.log.error(exception);
51
- throw exception;
52
- }
53
- if (errors.length > 0) {
54
- const constraints = errors.flatMap(({ constraints }) => (constraints ? Object.values(constraints) : []));
55
- const exception = new errors_1.CustomError(`[${this.constructor.name}] Message validation failed: [${constraints.join(", ")}]`, true, this.constructor.name);
56
- helpers_1.log.error(exception);
57
- throw exception;
22
+ return this.execute({}, msg === null || msg === void 0 ? void 0 : msg.properties);
58
23
  }
24
+ const queueKey = `${this.queuePrefix}.${this.queueName}`;
25
+ const data = MessageDataParser_1.MessageDataParser.parse(queueKey, msg, this.schema);
26
+ yield MessageDataValidator_1.MessageDataValidator.validate(queueKey, data);
27
+ return this.execute(data, msg === null || msg === void 0 ? void 0 : msg.properties);
59
28
  });
60
29
  }
61
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractTask.js","sourceRoot":"","sources":["../../../src/integration-engine/workers/AbstractTask.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,yDAAsE;AACtE,qDAA4D;AAC5D,4CAA8C;AAC9C,wCAAkC;AAGlC,MAAsB,YAAY;IAM9B,YAAY,WAAmB;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAEY,kBAAkB,CAAC,GAAmB;;;YAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACd,OAAO,IAAI,CAAC,OAAO,CAAC,EAAc,CAAC,CAAC;aACvC;YAED,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,IAAI,IAAc,CAAC;YAEnB,IAAI;gBACA,UAAU,GAAG,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,QAAQ,EAAE,mCAAI,EAAE,CAAC;gBAC3C,IAAI,GAAG,IAAA,mCAAe,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;aAC/D;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,SAAS,GAAG,IAAI,oBAAW,CAC7B,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,6BAA6B,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAC5F,IAAI,EACJ,IAAI,CAAC,WAAW,CAAC,IAAI,EACrB,SAAS,EACT,GAAG,CACN,CAAC;gBAEF,aAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACrB,MAAM,SAAS,CAAC;aACnB;YAED,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;;KAC7B;IAIa,QAAQ,CAAC,IAAc;;YACjC,IAAI,MAAM,GAAsB,EAAE,CAAC;YACnC,IAAI;gBACA,MAAM,GAAG,MAAM,IAAA,0BAAQ,EAAC,IAAI,CAAC,CAAC;aACjC;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,SAAS,GAAG,IAAI,oBAAW,CAC7B,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,gCAAgC,GAAG,CAAC,OAAO,EAAE,EACtE,IAAI,EACJ,IAAI,CAAC,WAAW,CAAC,IAAI,EACrB,SAAS,EACT,GAAG,CACN,CAAC;gBAEF,aAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACrB,MAAM,SAAS,CAAC;aACnB;YAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnB,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACzG,MAAM,SAAS,GAAG,IAAI,oBAAW,CAC7B,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,iCAAiC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EACnF,IAAI,EACJ,IAAI,CAAC,WAAW,CAAC,IAAI,CACxB,CAAC;gBAEF,aAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACrB,MAAM,SAAS,CAAC;aACnB;QACL,CAAC;KAAA;CACJ;AArED,oCAqEC"}
1
+ {"version":3,"file":"AbstractTask.js","sourceRoot":"","sources":["../../../src/integration-engine/workers/AbstractTask.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,mEAAgE;AAChE,yEAAsE;AAGtE,MAAsB,YAAY;IAM9B,YAAY,WAAmB;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAEY,kBAAkB,CAAC,GAAmB;;YAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACd,OAAO,IAAI,CAAC,OAAO,CAAC,EAAc,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,UAAU,CAAC,CAAC;aACxD;YAED,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACzD,MAAM,IAAI,GAAG,qCAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACjE,MAAM,2CAAoB,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAEpD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,UAAU,CAAC,CAAC;QAC/C,CAAC;KAAA;CAIJ;AAxBD,oCAwBC"}
@@ -0,0 +1,5 @@
1
+ import { Message } from "amqplib";
2
+ import { ClassConstructor } from "class-transformer";
3
+ export declare class MessageDataParser {
4
+ static parse<TRawData extends object>(queueKey: string, msg: Message | null, schema: ClassConstructor<TRawData>): TRawData;
5
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessageDataParser = void 0;
4
+ const class_transformer_1 = require("class-transformer");
5
+ const errors_1 = require("@golemio/errors");
6
+ const helpers_1 = require("../../helpers");
7
+ const data_access_1 = require("../../data-access");
8
+ class MessageDataParser {
9
+ static parse(queueKey, msg, schema) {
10
+ var _a;
11
+ let msgContent = "";
12
+ let data;
13
+ try {
14
+ msgContent = (_a = msg === null || msg === void 0 ? void 0 : msg.content.toString()) !== null && _a !== void 0 ? _a : "";
15
+ data = (0, class_transformer_1.plainToInstance)(schema, JSON.parse(msgContent));
16
+ }
17
+ catch (err) {
18
+ const exception = new errors_1.CustomError(`[Queue ${queueKey}] Message parsing failed: ${`'${msgContent.substring(0, 2000)}'`}`, true, "MessageDataParser", undefined, err);
19
+ helpers_1.log.error(exception);
20
+ data_access_1.storageService.saveData(JSON.stringify({ exception: exception.toObject(), msgContent }), `validation-errors/${queueKey}`, "json");
21
+ throw exception;
22
+ }
23
+ return data;
24
+ }
25
+ }
26
+ exports.MessageDataParser = MessageDataParser;
27
+ //# sourceMappingURL=MessageDataParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageDataParser.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/helpers/MessageDataParser.ts"],"names":[],"mappings":";;;AACA,yDAAsE;AACtE,4CAA8C;AAC9C,2CAAkC;AAClC,mDAAiD;AAEjD,MAAa,iBAAiB;IACnB,MAAM,CAAC,KAAK,CACf,QAAgB,EAChB,GAAmB,EACnB,MAAkC;;QAElC,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,IAAc,CAAC;QAEnB,IAAI;YACA,UAAU,GAAG,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,QAAQ,EAAE,mCAAI,EAAE,CAAC;YAC3C,IAAI,GAAG,IAAA,mCAAe,EAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;SAC1D;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,SAAS,GAAG,IAAI,oBAAW,CAC7B,UAAU,QAAQ,6BAA6B,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EACrF,IAAI,EACJ,mBAAmB,EACnB,SAAS,EACT,GAAG,CACN,CAAC;YAEF,aAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACrB,4BAAc,CAAC,QAAQ,CACnB,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,EAC/D,qBAAqB,QAAQ,EAAE,EAC/B,MAAM,CACT,CAAC;YAEF,MAAM,SAAS,CAAC;SACnB;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAjCD,8CAiCC"}
@@ -0,0 +1,4 @@
1
+ export declare class MessageDataValidator {
2
+ static validate(queueKey: string, data: object): Promise<void>;
3
+ private static traverseValidationErrors;
4
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MessageDataValidator = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const errors_1 = require("@golemio/errors");
15
+ const helpers_1 = require("../../helpers");
16
+ const data_access_1 = require("../../data-access");
17
+ class MessageDataValidator {
18
+ static validate(queueKey, data) {
19
+ return __awaiter(this, void 0, void 0, function* () {
20
+ let validationErrors = [];
21
+ try {
22
+ validationErrors = yield (0, class_validator_1.validate)(data);
23
+ }
24
+ catch (err) {
25
+ const exception = new errors_1.CustomError(`[Queue ${queueKey}] Message validation failed: ${err.message}`, true, "MessageDataValidator", undefined, err);
26
+ helpers_1.log.error(exception);
27
+ data_access_1.storageService.saveData(JSON.stringify({ exception: exception.toObject(), data }), `validation-errors/${queueKey}`, "json");
28
+ throw exception;
29
+ }
30
+ if (validationErrors.length > 0) {
31
+ const constraints = this.traverseValidationErrors(validationErrors);
32
+ const exception = new errors_1.CustomError(`[Queue ${queueKey}] Message validation failed: [${constraints.slice(0, 10).join(", ")}]`, true, "MessageDataValidator");
33
+ helpers_1.log.error(exception);
34
+ data_access_1.storageService.saveData(JSON.stringify({ validationErrors }), `validation-errors/${queueKey}`, "json");
35
+ throw exception;
36
+ }
37
+ });
38
+ }
39
+ static traverseValidationErrors(errors) {
40
+ return errors.flatMap(({ constraints, children }) => constraints ? Object.values(constraints) : children ? this.traverseValidationErrors(children) : []);
41
+ }
42
+ }
43
+ exports.MessageDataValidator = MessageDataValidator;
44
+ //# sourceMappingURL=MessageDataValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageDataValidator.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/helpers/MessageDataValidator.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA4D;AAC5D,4CAA8C;AAC9C,2CAAkC;AAClC,mDAAiD;AAEjD,MAAa,oBAAoB;IACtB,MAAM,CAAO,QAAQ,CAAC,QAAgB,EAAE,IAAY;;YACvD,IAAI,gBAAgB,GAAsB,EAAE,CAAC;YAC7C,IAAI;gBACA,gBAAgB,GAAG,MAAM,IAAA,0BAAQ,EAAC,IAAI,CAAC,CAAC;aAC3C;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,SAAS,GAAG,IAAI,oBAAW,CAC7B,UAAU,QAAQ,gCAAgC,GAAG,CAAC,OAAO,EAAE,EAC/D,IAAI,EACJ,sBAAsB,EACtB,SAAS,EACT,GAAG,CACN,CAAC;gBAEF,aAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACrB,4BAAc,CAAC,QAAQ,CACnB,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EACzD,qBAAqB,QAAQ,EAAE,EAC/B,MAAM,CACT,CAAC;gBAEF,MAAM,SAAS,CAAC;aACnB;YAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;gBACpE,MAAM,SAAS,GAAG,IAAI,oBAAW,CAC7B,UAAU,QAAQ,iCAAiC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EACzF,IAAI,EACJ,sBAAsB,CACzB,CAAC;gBAEF,aAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACrB,4BAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,qBAAqB,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;gBAEvG,MAAM,SAAS,CAAC;aACnB;QACL,CAAC;KAAA;IAEO,MAAM,CAAC,wBAAwB,CAAC,MAAyB;QAC7D,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAChD,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CACrG,CAAC;IACN,CAAC;CACJ;AA5CD,oDA4CC"}
package/package.json CHANGED
@@ -1,126 +1,127 @@
1
1
  {
2
- "name": "@golemio/core",
3
- "version": "1.2.17",
4
- "description": "Golemio Core Module",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "bin": {
8
- "golemio-import-test-data": "bin/import-test-data.js"
9
- },
10
- "scripts": {
11
- "build": "rimraf ./dist && ttsc -p ./tsconfig.build.json",
12
- "build-minimal": "run-s 'build --sourceMap false --declaration false'",
13
- "build-watch": "run-s 'build --watch --preserveWatchOutput'",
14
- "test": "cross-env NODE_ENV=test TS_NODE_COMPILER='ttypescript' mocha --exit --check-leaks --timeout 120000 -r ts-node/register -r dotenv/config 'test/**/*.test.ts'",
15
- "test-debug": "run-s 'test --inspect-brk=9230'",
16
- "code-coverage": "nyc run-s 'test -r source-map-support/register'",
17
- "generate-docs": "typedoc --out docs/typedoc src",
18
- "lint": "eslint --cache \"{src,test}/**/*.ts\""
19
- },
20
- "keywords": [
21
- "golemio"
22
- ],
23
- "author": "Operator ICT, a.s.",
24
- "license": "MIT",
25
- "repository": {
26
- "type": "git",
27
- "url": "https://gitlab.com/operator-ict/golemio/code/modules/core"
28
- },
29
- "devDependencies": {
30
- "@commitlint/cli": "^16.2.1",
31
- "@commitlint/config-conventional": "^16.2.1",
32
- "@golemio/eslint-config": "^1.1.0",
33
- "@ovos-media/ts-transform-paths": "^1.7.18-1",
34
- "@types/amqplib": "^0.5.17",
35
- "@types/chai": "4.2.3",
36
- "@types/chai-as-promised": "7.1.2",
37
- "@types/content-type": "^1.1.3",
38
- "@types/debug": "0.0.31",
39
- "@types/decompress": "^4.2.3",
40
- "@types/mocha": "^8.2.0",
41
- "@types/morgan": "^1.9.2",
42
- "@types/node": "^16.11.35",
43
- "@types/sinon": "7.0.13",
44
- "@types/ssh2-sftp-client": "^5.3.1",
45
- "@types/supertest": "^2.0.11",
46
- "chai": "4.2.0",
47
- "chai-as-promised": "7.1.1",
48
- "cross-env": "^7.0.3",
49
- "eslint": "^8.1.1",
50
- "husky": "^4.3.7",
51
- "mocha": "^9.1.2",
52
- "nock": "^13.0.5",
53
- "npm-run-all": "^4.1.5",
54
- "nyc": "^15.1.0",
55
- "prettier": "^2.5.1",
56
- "pretty-quick": "^3.1.0",
57
- "rimraf": "^3.0.2",
58
- "sinon": "7.1.1",
59
- "source-map-support": "0.5.9",
60
- "supertest": "^6.1.6",
61
- "ts-node": "^10.7.0",
62
- "ttypescript": "^1.5.13",
63
- "typedoc": "^0.22.15",
64
- "typescript": "4.6.4"
65
- },
66
- "dependencies": {
67
- "@golemio/errors": "^1.0.1",
68
- "@golemio/utils": "^1.0.0",
69
- "@golemio/validator": "0.2.4",
70
- "@google-cloud/storage": "^5.18.0",
71
- "@opentelemetry/api": "1.0.4",
72
- "@opentelemetry/exporter-jaeger": "^1.2.0",
73
- "@opentelemetry/instrumentation-amqplib": "^0.28.0",
74
- "@opentelemetry/instrumentation-aws-sdk": "^0.6.0",
75
- "@opentelemetry/instrumentation-express": "^0.28.0",
76
- "@opentelemetry/instrumentation-http": "^0.27.0",
77
- "@opentelemetry/instrumentation-ioredis": "^0.28.0",
78
- "@opentelemetry/instrumentation-pg": "^0.28.0",
79
- "@opentelemetry/instrumentation-redis": "^0.29.0",
80
- "@opentelemetry/resources": "^1.2.0",
81
- "@opentelemetry/sdk-trace-base": "^1.2.0",
82
- "@opentelemetry/sdk-trace-node": "^1.2.0",
83
- "@sentry/node": "^6.19.7",
84
- "@sentry/tracing": "^6.19.7",
85
- "@types/express": "^4.16.0",
86
- "@types/luxon": "^2.3.1",
87
- "@types/request-promise": "^4.1.45",
88
- "ajv": "^8.10.0",
89
- "amqplib": "^0.7.1",
90
- "apicache-plus": "^2.3.1",
91
- "aws-sdk": "^2.823.0",
92
- "axios": "^0.24.0",
93
- "basic-ftp": "^4.6.6",
94
- "class-transformer": "^0.5.1",
95
- "class-validator": "^0.13.2",
96
- "content-type": "^1.0.4",
97
- "debug": "3.1.0",
98
- "decompress": "^4.2.1",
99
- "dotenv": "^8.2.0",
100
- "express": "^4.16.4",
101
- "express-validator": "^5.3.1",
102
- "fast-csv": "^4.3.6",
103
- "fast-glob": "^3.2.5",
104
- "iconv-lite": "^0.6.2",
105
- "ioredis": "^4.28.5",
106
- "lightship": "^6.7.2",
107
- "luxon": "^2.3.2",
108
- "moment-timezone": "^0.5.26",
109
- "mongodb-restore-dump": "1.0.1",
110
- "mongoose": "^6.5.3",
111
- "morgan": "^1.10.0",
112
- "opentelemetry-instrumentation-mongoose": "^0.27.1",
113
- "opentelemetry-instrumentation-sequelize": "^0.27.1",
114
- "path-to-regexp": "^6.2.0",
115
- "pg": "^8.6.0",
116
- "prom-client": "^14.0.0",
117
- "redis": "^3.1.1",
118
- "request": "2.88.0",
119
- "request-promise": "^4.2.5",
120
- "sequelize": "^6.21.2",
121
- "ssh2-sftp-client": "^7.1.0",
122
- "winston": "^3.3.3",
123
- "xml2js-es6-promise": "^1.1.1"
124
- },
125
- "resolutions": {}
2
+ "name": "@golemio/core",
3
+ "version": "1.2.18-dev.638541239",
4
+ "description": "Golemio Core Module",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "golemio-import-test-data": "bin/import-test-data.js"
9
+ },
10
+ "scripts": {
11
+ "build": "rimraf ./dist && ttsc -p ./tsconfig.build.json",
12
+ "build-minimal": "run-s 'build --sourceMap false --declaration false'",
13
+ "build-watch": "run-s 'build --watch --preserveWatchOutput'",
14
+ "test": "cross-env NODE_ENV=test TS_NODE_COMPILER='ttypescript' mocha --exit --check-leaks --timeout 120000 -r ts-node/register -r dotenv/config 'test/**/*.test.ts'",
15
+ "test-debug": "run-s 'test --inspect-brk=9230'",
16
+ "code-coverage": "nyc run-s 'test -r source-map-support/register'",
17
+ "generate-docs": "typedoc --out docs/typedoc src",
18
+ "lint": "eslint --cache \"{src,test}/**/*.ts\""
19
+ },
20
+ "keywords": [
21
+ "golemio"
22
+ ],
23
+ "author": "Operator ICT, a.s.",
24
+ "license": "MIT",
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "https://gitlab.com/operator-ict/golemio/code/modules/core"
28
+ },
29
+ "devDependencies": {
30
+ "@commitlint/cli": "^16.2.1",
31
+ "@commitlint/config-conventional": "^16.2.1",
32
+ "@golemio/eslint-config": "^1.1.0",
33
+ "@ovos-media/ts-transform-paths": "^1.7.18-1",
34
+ "@types/amqplib": "^0.5.17",
35
+ "@types/chai": "4.2.3",
36
+ "@types/chai-as-promised": "7.1.2",
37
+ "@types/content-type": "^1.1.3",
38
+ "@types/debug": "0.0.31",
39
+ "@types/decompress": "^4.2.3",
40
+ "@types/mocha": "^8.2.0",
41
+ "@types/morgan": "^1.9.2",
42
+ "@types/node": "^16.11.35",
43
+ "@types/sinon": "7.0.13",
44
+ "@types/ssh2-sftp-client": "^5.3.1",
45
+ "@types/supertest": "^2.0.11",
46
+ "chai": "4.2.0",
47
+ "chai-as-promised": "7.1.1",
48
+ "cross-env": "^7.0.3",
49
+ "eslint": "^8.1.1",
50
+ "husky": "^4.3.7",
51
+ "mocha": "^9.1.2",
52
+ "nock": "^13.0.5",
53
+ "npm-run-all": "^4.1.5",
54
+ "nyc": "^15.1.0",
55
+ "prettier": "^2.5.1",
56
+ "pretty-quick": "^3.1.0",
57
+ "reflect-metadata": "^0.1.13",
58
+ "rimraf": "^3.0.2",
59
+ "sinon": "7.1.1",
60
+ "source-map-support": "0.5.9",
61
+ "supertest": "^6.1.6",
62
+ "ts-node": "^10.7.0",
63
+ "ttypescript": "^1.5.13",
64
+ "typedoc": "^0.22.15",
65
+ "typescript": "4.6.4"
66
+ },
67
+ "dependencies": {
68
+ "@azure/storage-blob": "^12.11.0",
69
+ "@golemio/errors": "^1.0.1",
70
+ "@golemio/utils": "^1.0.0",
71
+ "@golemio/validator": "0.2.4",
72
+ "@google-cloud/storage": "^5.18.0",
73
+ "@opentelemetry/api": "1.0.4",
74
+ "@opentelemetry/exporter-jaeger": "^1.2.0",
75
+ "@opentelemetry/instrumentation-amqplib": "^0.28.0",
76
+ "@opentelemetry/instrumentation-aws-sdk": "^0.6.0",
77
+ "@opentelemetry/instrumentation-express": "^0.28.0",
78
+ "@opentelemetry/instrumentation-http": "^0.27.0",
79
+ "@opentelemetry/instrumentation-ioredis": "^0.28.0",
80
+ "@opentelemetry/instrumentation-redis": "^0.29.0",
81
+ "@opentelemetry/resources": "^1.2.0",
82
+ "@opentelemetry/sdk-trace-base": "^1.2.0",
83
+ "@opentelemetry/sdk-trace-node": "^1.2.0",
84
+ "@sentry/node": "^6.19.7",
85
+ "@sentry/tracing": "^6.19.7",
86
+ "@types/express": "^4.16.0",
87
+ "@types/luxon": "^2.3.1",
88
+ "@types/request-promise": "^4.1.45",
89
+ "ajv": "^8.10.0",
90
+ "amqplib": "^0.7.1",
91
+ "apicache-plus": "^2.3.1",
92
+ "aws-sdk": "^2.823.0",
93
+ "axios": "^0.24.0",
94
+ "basic-ftp": "^4.6.6",
95
+ "class-transformer": "^0.5.1",
96
+ "class-validator": "^0.13.2",
97
+ "content-type": "^1.0.4",
98
+ "debug": "3.1.0",
99
+ "decompress": "^4.2.1",
100
+ "dotenv": "^8.2.0",
101
+ "express": "^4.16.4",
102
+ "express-validator": "^5.3.1",
103
+ "fast-csv": "^4.3.6",
104
+ "fast-glob": "^3.2.5",
105
+ "iconv-lite": "^0.6.2",
106
+ "ioredis": "^4.28.5",
107
+ "lightship": "^6.7.2",
108
+ "luxon": "^2.3.2",
109
+ "moment-timezone": "^0.5.26",
110
+ "mongodb-restore-dump": "1.0.1",
111
+ "mongoose": "^6.5.3",
112
+ "morgan": "^1.10.0",
113
+ "opentelemetry-instrumentation-mongoose": "^0.27.1",
114
+ "opentelemetry-instrumentation-sequelize": "^0.27.1",
115
+ "path-to-regexp": "^6.2.0",
116
+ "pg": "^8.6.0",
117
+ "prom-client": "^14.0.0",
118
+ "redis": "^3.1.1",
119
+ "request": "2.88.0",
120
+ "request-promise": "^4.2.5",
121
+ "sequelize": "^6.21.2",
122
+ "ssh2-sftp-client": "^7.1.0",
123
+ "winston": "^3.3.3",
124
+ "xml2js-es6-promise": "^1.1.1"
125
+ },
126
+ "resolutions": {}
126
127
  }