@golemio/core 1.2.18-dev.637295537 → 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.
- package/dist/helpers/data-access/storage/AbstractStorageService.d.ts +4 -0
- package/dist/helpers/data-access/storage/AbstractStorageService.js +7 -0
- package/dist/helpers/data-access/storage/AbstractStorageService.js.map +1 -0
- package/dist/helpers/data-access/storage/AzureBlobStorageService.d.ts +14 -0
- package/dist/helpers/data-access/storage/AzureBlobStorageService.js +55 -0
- package/dist/helpers/data-access/storage/AzureBlobStorageService.js.map +1 -0
- package/dist/helpers/data-access/storage/StorageServiceFactory.d.ts +17 -0
- package/dist/helpers/data-access/storage/StorageServiceFactory.js +24 -0
- package/dist/helpers/data-access/storage/StorageServiceFactory.js.map +1 -0
- package/dist/helpers/data-access/storage/index.d.ts +2 -0
- package/dist/helpers/data-access/storage/index.js +19 -0
- package/dist/helpers/data-access/storage/index.js.map +1 -0
- package/package.json +2 -1
|
@@ -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,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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@golemio/core",
|
|
3
|
-
"version": "1.2.18-dev.
|
|
3
|
+
"version": "1.2.18-dev.638541239",
|
|
4
4
|
"description": "Golemio Core Module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -65,6 +65,7 @@
|
|
|
65
65
|
"typescript": "4.6.4"
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
|
+
"@azure/storage-blob": "^12.11.0",
|
|
68
69
|
"@golemio/errors": "^1.0.1",
|
|
69
70
|
"@golemio/utils": "^1.0.0",
|
|
70
71
|
"@golemio/validator": "0.2.4",
|