@momentumcms/storage 0.4.1 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/package.json +1 -1
- package/src/index.d.ts +1 -0
- package/src/index.js +4 -1
- package/src/index.js.map +1 -1
- package/src/lib/mime-validator.d.ts +2 -2
- package/src/lib/mime-validator.js +3 -3
- package/src/lib/mime-validator.js.map +1 -1
- package/src/lib/storage-local.js +2 -26
- package/src/lib/storage-local.js.map +1 -1
- package/src/lib/storage-s3.js +2 -26
- package/src/lib/storage-s3.js.map +1 -1
- package/src/lib/storage-utils.d.ts +8 -0
- package/src/lib/storage-utils.js +33 -0
- package/src/lib/storage-utils.js.map +1 -0
- package/src/test-setup/ensure-minio.d.ts +8 -0
- package/src/test-setup/ensure-minio.js +75 -0
- package/src/test-setup/ensure-minio.js.map +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
## 0.5.0 (2026-02-23)
|
|
2
|
+
|
|
3
|
+
This was a version bump only for storage to align it with other projects, there were no code changes.
|
|
4
|
+
|
|
5
|
+
## 0.4.1 (2026-02-22)
|
|
6
|
+
|
|
7
|
+
This was a version bump only for storage to align it with other projects, there were no code changes.
|
|
8
|
+
|
|
1
9
|
## 0.4.0 (2026-02-22)
|
|
2
10
|
|
|
3
11
|
### 🚀 Features
|
package/package.json
CHANGED
package/src/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './lib/storage.types';
|
|
2
2
|
export { localStorageAdapter } from './lib/storage-local';
|
|
3
3
|
export { s3StorageAdapter } from './lib/storage-s3';
|
|
4
|
+
export { getExtensionFromMimeType } from './lib/storage-utils';
|
|
4
5
|
export { validateMimeType, isMimeTypeAllowed, detectMimeType, mimeTypeMatches, } from './lib/mime-validator';
|
package/src/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mimeTypeMatches = exports.detectMimeType = exports.isMimeTypeAllowed = exports.validateMimeType = exports.s3StorageAdapter = exports.localStorageAdapter = void 0;
|
|
3
|
+
exports.mimeTypeMatches = exports.detectMimeType = exports.isMimeTypeAllowed = exports.validateMimeType = exports.getExtensionFromMimeType = exports.s3StorageAdapter = exports.localStorageAdapter = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
// Storage types
|
|
6
6
|
tslib_1.__exportStar(require("./lib/storage.types"), exports);
|
|
@@ -9,6 +9,9 @@ var storage_local_1 = require("./lib/storage-local");
|
|
|
9
9
|
Object.defineProperty(exports, "localStorageAdapter", { enumerable: true, get: function () { return storage_local_1.localStorageAdapter; } });
|
|
10
10
|
var storage_s3_1 = require("./lib/storage-s3");
|
|
11
11
|
Object.defineProperty(exports, "s3StorageAdapter", { enumerable: true, get: function () { return storage_s3_1.s3StorageAdapter; } });
|
|
12
|
+
// Utilities
|
|
13
|
+
var storage_utils_1 = require("./lib/storage-utils");
|
|
14
|
+
Object.defineProperty(exports, "getExtensionFromMimeType", { enumerable: true, get: function () { return storage_utils_1.getExtensionFromMimeType; } });
|
|
12
15
|
// MIME validation
|
|
13
16
|
var mime_validator_1 = require("./lib/mime-validator");
|
|
14
17
|
Object.defineProperty(exports, "validateMimeType", { enumerable: true, get: function () { return mime_validator_1.validateMimeType; } });
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/storage/src/index.ts"],"names":[],"mappings":";;;;AAAA,gBAAgB;AAChB,8DAAoC;AAEpC,mBAAmB;AACnB,qDAA0D;AAAjD,oHAAA,mBAAmB,OAAA;AAC5B,+CAAoD;AAA3C,8GAAA,gBAAgB,OAAA;AAEzB,kBAAkB;AAClB,uDAK8B;AAJ7B,kHAAA,gBAAgB,OAAA;AAChB,mHAAA,iBAAiB,OAAA;AACjB,gHAAA,cAAc,OAAA;AACd,iHAAA,eAAe,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/storage/src/index.ts"],"names":[],"mappings":";;;;AAAA,gBAAgB;AAChB,8DAAoC;AAEpC,mBAAmB;AACnB,qDAA0D;AAAjD,oHAAA,mBAAmB,OAAA;AAC5B,+CAAoD;AAA3C,8GAAA,gBAAgB,OAAA;AAEzB,YAAY;AACZ,qDAA+D;AAAtD,yHAAA,wBAAwB,OAAA;AAEjC,kBAAkB;AAClB,uDAK8B;AAJ7B,kHAAA,gBAAgB,OAAA;AAChB,mHAAA,iBAAiB,OAAA;AACjB,gHAAA,cAAc,OAAA;AACd,iHAAA,eAAe,OAAA"}
|
|
@@ -6,7 +6,7 @@ import type { MimeValidationResult } from './storage.types';
|
|
|
6
6
|
/**
|
|
7
7
|
* Detect MIME type from file buffer using magic bytes.
|
|
8
8
|
*/
|
|
9
|
-
export declare function detectMimeType(buffer:
|
|
9
|
+
export declare function detectMimeType(buffer: Uint8Array): string | null;
|
|
10
10
|
/**
|
|
11
11
|
* Check if a MIME type matches a pattern.
|
|
12
12
|
* Supports glob patterns like 'image/*' and 'video/*'.
|
|
@@ -19,4 +19,4 @@ export declare function isMimeTypeAllowed(mimeType: string, allowedTypes: string
|
|
|
19
19
|
/**
|
|
20
20
|
* Validate a file's MIME type by checking magic bytes.
|
|
21
21
|
*/
|
|
22
|
-
export declare function validateMimeType(buffer:
|
|
22
|
+
export declare function validateMimeType(buffer: Uint8Array, claimedType: string, allowedTypes?: string[]): MimeValidationResult;
|
|
@@ -64,7 +64,7 @@ function detectMimeType(buffer) {
|
|
|
64
64
|
if (sig.bytes[0] === 0x52 && sig.bytes[1] === 0x49) {
|
|
65
65
|
// Check for WEBP
|
|
66
66
|
if (buffer.length >= 12) {
|
|
67
|
-
const formatId = buffer.
|
|
67
|
+
const formatId = String.fromCharCode(...buffer.subarray(8, 12));
|
|
68
68
|
if (formatId === 'WEBP') {
|
|
69
69
|
return 'image/webp';
|
|
70
70
|
}
|
|
@@ -78,7 +78,7 @@ function detectMimeType(buffer) {
|
|
|
78
78
|
}
|
|
79
79
|
// Special handling for MP4 (check for ftyp box)
|
|
80
80
|
if (sig.mimeType === 'video/mp4' && buffer.length >= 8) {
|
|
81
|
-
const boxType = buffer.
|
|
81
|
+
const boxType = String.fromCharCode(...buffer.subarray(4, 8));
|
|
82
82
|
if (boxType === 'ftyp') {
|
|
83
83
|
return 'video/mp4';
|
|
84
84
|
}
|
|
@@ -88,7 +88,7 @@ function detectMimeType(buffer) {
|
|
|
88
88
|
}
|
|
89
89
|
// Check for text/plain or JSON
|
|
90
90
|
if (isTextContent(buffer)) {
|
|
91
|
-
const text = buffer.
|
|
91
|
+
const text = new TextDecoder().decode(buffer.subarray(0, Math.min(buffer.length, 1000)));
|
|
92
92
|
if (text.trim().startsWith('{') || text.trim().startsWith('[')) {
|
|
93
93
|
return 'application/json';
|
|
94
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mime-validator.js","sourceRoot":"","sources":["../../../../../libs/storage/src/lib/mime-validator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mime-validator.js","sourceRoot":"","sources":["../../../../../libs/storage/src/lib/mime-validator.ts"],"names":[],"mappings":"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"}
|
package/src/lib/storage-local.js
CHANGED
|
@@ -9,6 +9,7 @@ const tslib_1 = require("tslib");
|
|
|
9
9
|
const node_fs_1 = require("node:fs");
|
|
10
10
|
const node_path_1 = require("node:path");
|
|
11
11
|
const node_crypto_1 = require("node:crypto");
|
|
12
|
+
const storage_utils_1 = require("./storage-utils");
|
|
12
13
|
/**
|
|
13
14
|
* Creates a local filesystem storage adapter.
|
|
14
15
|
*
|
|
@@ -52,7 +53,7 @@ function localStorageAdapter(options) {
|
|
|
52
53
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
53
54
|
var _a;
|
|
54
55
|
// Generate unique filename
|
|
55
|
-
const ext = (0, node_path_1.extname)(file.originalName) || getExtensionFromMimeType(file.mimeType);
|
|
56
|
+
const ext = (0, node_path_1.extname)(file.originalName) || (0, storage_utils_1.getExtensionFromMimeType)(file.mimeType);
|
|
56
57
|
const filename = (uploadOptions === null || uploadOptions === void 0 ? void 0 : uploadOptions.filename)
|
|
57
58
|
? `${uploadOptions.filename}${ext}`
|
|
58
59
|
: `${(0, node_crypto_1.randomUUID)()}${ext}`;
|
|
@@ -108,29 +109,4 @@ function localStorageAdapter(options) {
|
|
|
108
109
|
},
|
|
109
110
|
};
|
|
110
111
|
}
|
|
111
|
-
/**
|
|
112
|
-
* Get file extension from MIME type.
|
|
113
|
-
*/
|
|
114
|
-
function getExtensionFromMimeType(mimeType) {
|
|
115
|
-
var _a;
|
|
116
|
-
const mimeToExt = {
|
|
117
|
-
'image/jpeg': '.jpg',
|
|
118
|
-
'image/png': '.png',
|
|
119
|
-
'image/gif': '.gif',
|
|
120
|
-
'image/webp': '.webp',
|
|
121
|
-
'image/svg+xml': '.svg',
|
|
122
|
-
'application/pdf': '.pdf',
|
|
123
|
-
'application/json': '.json',
|
|
124
|
-
'text/plain': '.txt',
|
|
125
|
-
'text/html': '.html',
|
|
126
|
-
'text/css': '.css',
|
|
127
|
-
'application/javascript': '.js',
|
|
128
|
-
'video/mp4': '.mp4',
|
|
129
|
-
'video/webm': '.webm',
|
|
130
|
-
'audio/mpeg': '.mp3',
|
|
131
|
-
'audio/wav': '.wav',
|
|
132
|
-
'application/zip': '.zip',
|
|
133
|
-
};
|
|
134
|
-
return (_a = mimeToExt[mimeType]) !== null && _a !== void 0 ? _a : '';
|
|
135
|
-
}
|
|
136
112
|
//# sourceMappingURL=storage-local.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-local.js","sourceRoot":"","sources":["../../../../../libs/storage/src/lib/storage-local.ts"],"names":[],"mappings":";AAAA;;;GAGG;;
|
|
1
|
+
{"version":3,"file":"storage-local.js","sourceRoot":"","sources":["../../../../../libs/storage/src/lib/storage-local.ts"],"names":[],"mappings":"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"}
|
package/src/lib/storage-s3.js
CHANGED
|
@@ -8,6 +8,7 @@ exports.s3StorageAdapter = s3StorageAdapter;
|
|
|
8
8
|
const tslib_1 = require("tslib");
|
|
9
9
|
const node_crypto_1 = require("node:crypto");
|
|
10
10
|
const node_path_1 = require("node:path");
|
|
11
|
+
const storage_utils_1 = require("./storage-utils");
|
|
11
12
|
// Dynamic import for AWS SDK to avoid bundling issues
|
|
12
13
|
let S3Client;
|
|
13
14
|
let PutObjectCommand;
|
|
@@ -95,7 +96,7 @@ function s3StorageAdapter(options) {
|
|
|
95
96
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
96
97
|
const s3 = yield getClient();
|
|
97
98
|
// Generate unique key
|
|
98
|
-
const ext = (0, node_path_1.extname)(file.originalName) || getExtensionFromMimeType(file.mimeType);
|
|
99
|
+
const ext = (0, node_path_1.extname)(file.originalName) || (0, storage_utils_1.getExtensionFromMimeType)(file.mimeType);
|
|
99
100
|
const filename = (uploadOptions === null || uploadOptions === void 0 ? void 0 : uploadOptions.filename)
|
|
100
101
|
? `${uploadOptions.filename}${ext}`
|
|
101
102
|
: `${(0, node_crypto_1.randomUUID)()}${ext}`;
|
|
@@ -207,29 +208,4 @@ function s3StorageAdapter(options) {
|
|
|
207
208
|
},
|
|
208
209
|
};
|
|
209
210
|
}
|
|
210
|
-
/**
|
|
211
|
-
* Get file extension from MIME type.
|
|
212
|
-
*/
|
|
213
|
-
function getExtensionFromMimeType(mimeType) {
|
|
214
|
-
var _a;
|
|
215
|
-
const mimeToExt = {
|
|
216
|
-
'image/jpeg': '.jpg',
|
|
217
|
-
'image/png': '.png',
|
|
218
|
-
'image/gif': '.gif',
|
|
219
|
-
'image/webp': '.webp',
|
|
220
|
-
'image/svg+xml': '.svg',
|
|
221
|
-
'application/pdf': '.pdf',
|
|
222
|
-
'application/json': '.json',
|
|
223
|
-
'text/plain': '.txt',
|
|
224
|
-
'text/html': '.html',
|
|
225
|
-
'text/css': '.css',
|
|
226
|
-
'application/javascript': '.js',
|
|
227
|
-
'video/mp4': '.mp4',
|
|
228
|
-
'video/webm': '.webm',
|
|
229
|
-
'audio/mpeg': '.mp3',
|
|
230
|
-
'audio/wav': '.wav',
|
|
231
|
-
'application/zip': '.zip',
|
|
232
|
-
};
|
|
233
|
-
return (_a = mimeToExt[mimeType]) !== null && _a !== void 0 ? _a : '';
|
|
234
|
-
}
|
|
235
211
|
//# sourceMappingURL=storage-s3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-s3.js","sourceRoot":"","sources":["../../../../../libs/storage/src/lib/storage-s3.ts"],"names":[],"mappings":";AAAA;;;GAGG;;
|
|
1
|
+
{"version":3,"file":"storage-s3.js","sourceRoot":"","sources":["../../../../../libs/storage/src/lib/storage-s3.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared utilities for storage adapters.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getExtensionFromMimeType = getExtensionFromMimeType;
|
|
7
|
+
const MIME_TO_EXT = {
|
|
8
|
+
'image/jpeg': '.jpg',
|
|
9
|
+
'image/png': '.png',
|
|
10
|
+
'image/gif': '.gif',
|
|
11
|
+
'image/webp': '.webp',
|
|
12
|
+
'image/svg+xml': '.svg',
|
|
13
|
+
'application/pdf': '.pdf',
|
|
14
|
+
'application/json': '.json',
|
|
15
|
+
'text/plain': '.txt',
|
|
16
|
+
'text/html': '.html',
|
|
17
|
+
'text/css': '.css',
|
|
18
|
+
'application/javascript': '.js',
|
|
19
|
+
'video/mp4': '.mp4',
|
|
20
|
+
'video/webm': '.webm',
|
|
21
|
+
'audio/mpeg': '.mp3',
|
|
22
|
+
'audio/wav': '.wav',
|
|
23
|
+
'application/zip': '.zip',
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Get file extension from MIME type.
|
|
27
|
+
* Returns empty string for unknown MIME types.
|
|
28
|
+
*/
|
|
29
|
+
function getExtensionFromMimeType(mimeType) {
|
|
30
|
+
var _a;
|
|
31
|
+
return (_a = MIME_TO_EXT[mimeType]) !== null && _a !== void 0 ? _a : '';
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=storage-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-utils.js","sourceRoot":"","sources":["../../../../../libs/storage/src/lib/storage-utils.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAyBH,4DAEC;AAzBD,MAAM,WAAW,GAA2B;IAC3C,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,MAAM;IACnB,YAAY,EAAE,OAAO;IACrB,eAAe,EAAE,MAAM;IACvB,iBAAiB,EAAE,MAAM;IACzB,kBAAkB,EAAE,OAAO;IAC3B,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,OAAO;IACpB,UAAU,EAAE,MAAM;IAClB,wBAAwB,EAAE,KAAK;IAC/B,WAAW,EAAE,MAAM;IACnB,YAAY,EAAE,OAAO;IACrB,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,MAAM;IACnB,iBAAiB,EAAE,MAAM;CACzB,CAAC;AAEF;;;GAGG;AACH,SAAgB,wBAAwB,CAAC,QAAgB;;IACxD,OAAO,MAAA,WAAW,CAAC,QAAQ,CAAC,mCAAI,EAAE,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vitest globalSetup — ensures MinIO is available for S3 integration tests.
|
|
3
|
+
*
|
|
4
|
+
* 1. Probes MinIO health endpoint (already running?)
|
|
5
|
+
* 2. If not, tries `docker compose up -d minio` and polls for readiness
|
|
6
|
+
* 3. Sets MINIO_AVAILABLE and MINIO_ENDPOINT env vars for the test suite
|
|
7
|
+
*/
|
|
8
|
+
export declare function setup(): Promise<void>;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Vitest globalSetup — ensures MinIO is available for S3 integration tests.
|
|
4
|
+
*
|
|
5
|
+
* 1. Probes MinIO health endpoint (already running?)
|
|
6
|
+
* 2. If not, tries `docker compose up -d minio` and polls for readiness
|
|
7
|
+
* 3. Sets MINIO_AVAILABLE and MINIO_ENDPOINT env vars for the test suite
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.setup = setup;
|
|
11
|
+
const tslib_1 = require("tslib");
|
|
12
|
+
/* eslint-disable local/no-direct-browser-apis */
|
|
13
|
+
const node_child_process_1 = require("node:child_process");
|
|
14
|
+
const DEFAULT_ENDPOINT = 'http://localhost:9000';
|
|
15
|
+
const HEALTH_PATH = '/minio/health/live';
|
|
16
|
+
const MAX_RETRIES = 15;
|
|
17
|
+
const RETRY_DELAY_MS = 1000;
|
|
18
|
+
function sleep(ms) {
|
|
19
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
20
|
+
}
|
|
21
|
+
function isMinioHealthy(endpoint) {
|
|
22
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
try {
|
|
24
|
+
const controller = new AbortController();
|
|
25
|
+
const timeout = setTimeout(() => controller.abort(), 2000);
|
|
26
|
+
const res = yield fetch(`${endpoint}${HEALTH_PATH}`, { signal: controller.signal });
|
|
27
|
+
clearTimeout(timeout);
|
|
28
|
+
return res.ok;
|
|
29
|
+
}
|
|
30
|
+
catch (_a) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function waitForMinio(endpoint) {
|
|
36
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
for (let i = 0; i < MAX_RETRIES; i++) {
|
|
38
|
+
if (yield isMinioHealthy(endpoint)) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
yield sleep(RETRY_DELAY_MS);
|
|
42
|
+
}
|
|
43
|
+
return false;
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
function setup() {
|
|
47
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
var _a, _b;
|
|
49
|
+
const endpoint = (_a = process.env['MINIO_ENDPOINT']) !== null && _a !== void 0 ? _a : DEFAULT_ENDPOINT;
|
|
50
|
+
// 1. Check if MinIO is already running
|
|
51
|
+
if (yield isMinioHealthy(endpoint)) {
|
|
52
|
+
process.env['MINIO_AVAILABLE'] = 'true';
|
|
53
|
+
process.env['MINIO_ENDPOINT'] = endpoint;
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
// 2. Try to start MinIO via docker compose (no shell, safe args)
|
|
57
|
+
try {
|
|
58
|
+
(0, node_child_process_1.execFileSync)('docker', ['compose', 'up', '-d', 'minio'], {
|
|
59
|
+
cwd: (_b = process.env['NX_WORKSPACE_ROOT']) !== null && _b !== void 0 ? _b : process.cwd(),
|
|
60
|
+
stdio: 'pipe',
|
|
61
|
+
timeout: 30000,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
catch (_c) {
|
|
65
|
+
// Docker not available or compose failed — skip S3 tests
|
|
66
|
+
process.env['MINIO_AVAILABLE'] = 'false';
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
// 3. Poll for readiness
|
|
70
|
+
const healthy = yield waitForMinio(endpoint);
|
|
71
|
+
process.env['MINIO_AVAILABLE'] = healthy ? 'true' : 'false';
|
|
72
|
+
process.env['MINIO_ENDPOINT'] = endpoint;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=ensure-minio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-minio.js","sourceRoot":"","sources":["../../../../../libs/storage/src/test-setup/ensure-minio.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAoCH,sBA2BC;;AA7DD,iDAAiD;AACjD,2DAAkD;AAElD,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AACjD,MAAM,WAAW,GAAG,oBAAoB,CAAC;AACzC,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,SAAS,KAAK,CAAC,EAAU;IACxB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAe,cAAc,CAAC,QAAgB;;QAC7C,IAAI,CAAC;YACJ,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;YAC3D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,GAAG,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YACpF,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,GAAG,CAAC,EAAE,CAAC;QACf,CAAC;QAAC,WAAM,CAAC;YACR,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;CAAA;AAED,SAAe,YAAY,CAAC,QAAgB;;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,MAAM,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpC,OAAO,IAAI,CAAC;YACb,CAAC;YACD,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;CAAA;AAED,SAAsB,KAAK;;;QAC1B,MAAM,QAAQ,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,mCAAI,gBAAgB,CAAC;QAEnE,uCAAuC;QACvC,IAAI,MAAM,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC;YACzC,OAAO;QACR,CAAC;QAED,iEAAiE;QACjE,IAAI,CAAC;YACJ,IAAA,iCAAY,EAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE;gBACxD,GAAG,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,mCAAI,OAAO,CAAC,GAAG,EAAE;gBACtD,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,KAAM;aACf,CAAC,CAAC;QACJ,CAAC;QAAC,WAAM,CAAC;YACR,yDAAyD;YACzD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC;YACzC,OAAO;QACR,CAAC;QAED,wBAAwB;QACxB,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC;IAC1C,CAAC;CAAA"}
|