@golemio/core 1.4.1-dev.761696539 → 1.4.1-dev.762688125
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/helpers/data-access/storage/AbstractStorageService.d.ts +3 -0
- package/dist/helpers/data-access/storage/AbstractStorageService.js.map +1 -1
- package/dist/helpers/data-access/storage/AzureBlobStorageService.d.ts +3 -0
- package/dist/helpers/data-access/storage/AzureBlobStorageService.js +21 -1
- package/dist/helpers/data-access/storage/AzureBlobStorageService.js.map +1 -1
- package/dist/helpers/data-access/storage/NoopStorageService.d.ts +3 -0
- package/dist/helpers/data-access/storage/NoopStorageService.js +5 -0
- package/dist/helpers/data-access/storage/NoopStorageService.js.map +1 -1
- package/dist/input-gateway/helpers/SaveRawDataMiddleware.js +6 -2
- package/dist/input-gateway/helpers/SaveRawDataMiddleware.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
/// <reference types="node" />
|
|
3
|
+
/// <reference types="node" />
|
|
4
|
+
import { Readable } from "stream";
|
|
3
5
|
export declare abstract class AbstractStorageService {
|
|
6
|
+
abstract uploadStream(stream: Readable, pathPrefix: string, ext?: string, fileName?: string): Promise<void>;
|
|
4
7
|
abstract uploadFile(data: Buffer | string, pathPrefix: string, ext?: string, fileName?: string): Promise<void>;
|
|
5
8
|
abstract deleteFile(key: string): Promise<void>;
|
|
6
9
|
abstract getFileStream(fileKey: string): Promise<NodeJS.ReadableStream | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractStorageService.js","sourceRoot":"","sources":["../../../../src/helpers/data-access/storage/AbstractStorageService.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"AbstractStorageService.js","sourceRoot":"","sources":["../../../../src/helpers/data-access/storage/AbstractStorageService.ts"],"names":[],"mappings":";;;AAEA,MAAsB,sBAAsB;CAK3C;AALD,wDAKC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
/// <reference types="node" />
|
|
3
|
+
/// <reference types="node" />
|
|
4
|
+
import { Readable } from "stream";
|
|
3
5
|
import { ILogger } from "../../logger";
|
|
4
6
|
import { AbstractStorageService } from "./AbstractStorageService";
|
|
5
7
|
export interface IAzureBlobStorageConfig {
|
|
@@ -10,6 +12,7 @@ export declare class AzureBlobStorageService extends AbstractStorageService {
|
|
|
10
12
|
private readonly log;
|
|
11
13
|
private readonly containerClient;
|
|
12
14
|
constructor(config: IAzureBlobStorageConfig, log: ILogger);
|
|
15
|
+
uploadStream(stream: Readable, pathPrefix: string, ext?: string, fileName?: string): Promise<void>;
|
|
13
16
|
uploadFile(data: Buffer | string, pathPrefix: string, ext?: string, fileName?: string): Promise<void>;
|
|
14
17
|
deleteFile(fileKey: string): Promise<void>;
|
|
15
18
|
getFileStream(fileKey: string): Promise<NodeJS.ReadableStream | undefined>;
|
|
@@ -24,6 +24,25 @@ class AzureBlobStorageService extends AbstractStorageService_1.AbstractStorageSe
|
|
|
24
24
|
this.log.debug(`[${this.constructor.name}] Could not initialize container "${config.containerName}"`, err);
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
|
+
uploadStream(stream, pathPrefix, ext = "", fileName) {
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
const now = luxon_1.DateTime.local({ zone: "Europe/Prague" });
|
|
30
|
+
const fileNamePrefix = fileName !== null && fileName !== void 0 ? fileName : `${now.toFormat("yyyy-MM-dd")}/${now.toFormat("HH_mm_ss.SSS")}`;
|
|
31
|
+
const fileNameKey = `${pathPrefix}/${fileNamePrefix}`;
|
|
32
|
+
const fileNameExt = ext ? `.${ext}` : "";
|
|
33
|
+
try {
|
|
34
|
+
const blobClient = this.containerClient.getBlockBlobClient(`${fileNameKey}${fileNameExt}`);
|
|
35
|
+
const options = {
|
|
36
|
+
blobHTTPHeaders: { blobContentType: "application/octet-stream" },
|
|
37
|
+
onProgress: this.handleUploadProgress(fileNameKey + fileNameExt),
|
|
38
|
+
};
|
|
39
|
+
yield blobClient.uploadStream(stream, undefined, undefined, options);
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
this.log.error(`[${this.constructor.name}] Saving of data stream failed (${fileNameKey}${fileNameExt})`, err);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
27
46
|
uploadFile(data, pathPrefix, ext = "", fileName) {
|
|
28
47
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29
48
|
const now = luxon_1.DateTime.local({ zone: "Europe/Prague" });
|
|
@@ -74,7 +93,8 @@ class AzureBlobStorageService extends AbstractStorageService_1.AbstractStorageSe
|
|
|
74
93
|
}
|
|
75
94
|
handleUploadProgress(filePath, dataByteLength) {
|
|
76
95
|
return (progress) => {
|
|
77
|
-
this.log.verbose(`[${this.constructor.name}] File upload ` +
|
|
96
|
+
this.log.verbose(`[${this.constructor.name}] File upload ` +
|
|
97
|
+
`${filePath}: ${progress.loadedBytes} / ${dataByteLength !== null && dataByteLength !== void 0 ? dataByteLength : "unknown"}`);
|
|
78
98
|
};
|
|
79
99
|
}
|
|
80
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AzureBlobStorageService.js","sourceRoot":"","sources":["../../../../src/helpers/data-access/storage/AzureBlobStorageService.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"AzureBlobStorageService.js","sourceRoot":"","sources":["../../../../src/helpers/data-access/storage/AzureBlobStorageService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { Readable } from "stream";
|
|
2
4
|
import { ILogger } from "../../logger";
|
|
3
5
|
import { AbstractStorageService } from "./AbstractStorageService";
|
|
4
6
|
export declare class NoopStorageService extends AbstractStorageService {
|
|
5
7
|
private readonly log;
|
|
6
8
|
constructor(log: ILogger);
|
|
9
|
+
uploadStream(stream: Readable, pathPrefix: string, ext: string, fileName?: string): Promise<void>;
|
|
7
10
|
uploadFile(data: Buffer | string, pathPrefix: string, ext: string, fileName?: string): Promise<void>;
|
|
8
11
|
deleteFile(fileKey: string): Promise<void>;
|
|
9
12
|
getFileStream(fileKey: string): Promise<undefined>;
|
|
@@ -16,6 +16,11 @@ class NoopStorageService extends AbstractStorageService_1.AbstractStorageService
|
|
|
16
16
|
super();
|
|
17
17
|
this.log = log;
|
|
18
18
|
}
|
|
19
|
+
uploadStream(stream, pathPrefix, ext, fileName) {
|
|
20
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
+
this.log.silly("[NoopStorageService] Storage is disabled. Skipping stream upload.");
|
|
22
|
+
});
|
|
23
|
+
}
|
|
19
24
|
uploadFile(data, pathPrefix, ext, fileName) {
|
|
20
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
21
26
|
this.log.silly("[NoopStorageService] Storage is disabled. Skipping file upload.");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NoopStorageService.js","sourceRoot":"","sources":["../../../../src/helpers/data-access/storage/NoopStorageService.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"NoopStorageService.js","sourceRoot":"","sources":["../../../../src/helpers/data-access/storage/NoopStorageService.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,qEAAkE;AAElE,MAAa,kBAAmB,SAAQ,+CAAsB;IAC1D,YAA6B,GAAY;QACrC,KAAK,EAAE,CAAC;QADiB,QAAG,GAAH,GAAG,CAAS;IAEzC,CAAC;IAEY,YAAY,CAAC,MAAgB,EAAE,UAAkB,EAAE,GAAW,EAAE,QAAiB;;YAC1F,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACxF,CAAC;KAAA;IAEY,UAAU,CAAC,IAAqB,EAAE,UAAkB,EAAE,GAAW,EAAE,QAAiB;;YAC7F,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACtF,CAAC;KAAA;IAEY,UAAU,CAAC,OAAe;;YACnC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACxF,CAAC;KAAA;IAEY,aAAa,CAAC,OAAe;;YACtC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;YACpF,OAAO;QACX,CAAC;KAAA;CACJ;AArBD,gDAqBC"}
|
|
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.SaveRawDataMiddleware = void 0;
|
|
16
16
|
const tsyringe_1 = require("tsyringe");
|
|
17
17
|
const path_to_regexp_1 = require("path-to-regexp");
|
|
18
|
+
const luxon_1 = require("luxon");
|
|
18
19
|
const errors_1 = require("@golemio/errors");
|
|
19
20
|
const storage_1 = require("../../helpers/data-access/storage");
|
|
20
21
|
const CheckContentTypeMiddleware_1 = require("./CheckContentTypeMiddleware");
|
|
@@ -37,10 +38,13 @@ let SaveRawDataMiddleware = class SaveRawDataMiddleware {
|
|
|
37
38
|
errors_1.ErrorHandler.handle(new errors_1.CustomError(`Saving raw data failed. (${requestUrlPath})`, true, "SaveRawDataMiddleware", 406, new Error(`Extension for content-type ${contentType} was not found.`)), this.log);
|
|
38
39
|
return next();
|
|
39
40
|
}
|
|
40
|
-
|
|
41
|
+
const now = luxon_1.DateTime.local({ zone: "Europe/Prague" });
|
|
42
|
+
const fileName = `${now.toFormat("yyyy-MM-dd")}/${now.toFormat("HH_mm_ss.SSS")}`;
|
|
43
|
+
this.storage.uploadStream(req, `${requestUrlPath.slice(1)}`, ext, fileName);
|
|
41
44
|
// save file with headers of the matched route
|
|
42
45
|
if (whitelistRegexp.headersRegexp.exec(requestUrlPath)) {
|
|
43
|
-
|
|
46
|
+
const headerFileName = `${fileName}_headers`;
|
|
47
|
+
this.storage.uploadFile(JSON.stringify(req.headers), `${requestUrlPath.slice(1)}`, `json`, headerFileName);
|
|
44
48
|
}
|
|
45
49
|
}
|
|
46
50
|
next();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SaveRawDataMiddleware.js","sourceRoot":"","sources":["../../../src/input-gateway/helpers/SaveRawDataMiddleware.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,uCAA8C;AAC9C,mDAA8C;AAC9C,4CAA4D;AAE5D,+DAAsE;AACtE,6EAAwE;AACxE,2DAAuE;AACvE,gCAAyC;AAIzC,IAAa,qBAAqB,GAAlC,MAAa,qBAAqB;IAG9B,YACmC,MAAsB,EACL,GAAY,EACb,OAA+B;QAD9B,QAAG,GAAH,GAAG,CAAS;QACb,YAAO,GAAP,OAAO,CAAwB;QAM3E,kBAAa,GAAG,GAAG,EAAE;YACxB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAClD,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;gBACvD,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC;gBAEhC,IAAI,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;oBACnG,iCAAiC;oBACjC,MAAM,WAAW,GAAG,IAAA,2CAAc,EAAC,GAAG,CAAwC,CAAC;oBAC/E,MAAM,GAAG,GAAG,0CAAsB,CAAC,WAAW,CAAC,CAAC;oBAEhD,wBAAwB;oBACxB,IAAI,CAAC,GAAG,EAAE;wBACN,qBAAY,CAAC,MAAM,CACf,IAAI,oBAAW,CACX,4BAA4B,cAAc,GAAG,EAC7C,IAAI,EACJ,uBAAuB,EACvB,GAAG,EACH,IAAI,KAAK,CAAC,8BAA8B,WAAW,iBAAiB,CAAC,CACxE,EACD,IAAI,CAAC,GAAG,CACX,CAAC;wBACF,OAAO,IAAI,EAAE,CAAC;qBACjB;oBAED,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"SaveRawDataMiddleware.js","sourceRoot":"","sources":["../../../src/input-gateway/helpers/SaveRawDataMiddleware.ts"],"names":[],"mappings":"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"}
|