@visulima/storage 1.0.0-alpha.1 → 1.0.0-alpha.3
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 +30 -0
- package/README.md +33 -14
- package/dist/adapter/nuxt/module.d.ts +39 -0
- package/dist/adapter/nuxt/module.js +93 -0
- package/dist/adapter/nuxt/package.json +20 -0
- package/dist/handler/base/base-handler-core.d.ts +91 -0
- package/dist/handler/base/base-handler-fetch.d.ts +76 -0
- package/dist/handler/base/base-handler-node.d.ts +137 -0
- package/dist/handler/http/fetch/index.d.ts +4 -0
- package/dist/handler/http/fetch/index.js +4 -0
- package/dist/handler/http/hono/index.d.ts +67 -0
- package/dist/handler/http/hono/index.js +65 -0
- package/dist/handler/http/nextjs/index.d.ts +61 -0
- package/dist/handler/http/nextjs/index.js +37 -0
- package/dist/handler/http/node/index.d.ts +4 -0
- package/dist/handler/http/node/index.js +4 -0
- package/dist/handler/http/solid-start/index.d.ts +60 -0
- package/dist/handler/http/solid-start/index.js +44 -0
- package/dist/handler/multipart/multipart-base.d.ts +84 -0
- package/dist/handler/multipart/multipart-fetch.d.ts +64 -0
- package/dist/handler/multipart/multipart.d.ts +49 -0
- package/dist/handler/rest/rest-base.d.ts +106 -0
- package/dist/handler/rest/rest-fetch.d.ts +88 -0
- package/dist/handler/rest/rest.d.ts +93 -0
- package/dist/handler/tus/tus-base.d.ts +152 -0
- package/dist/handler/tus/tus-fetch.d.ts +72 -0
- package/dist/handler/tus/tus.d.ts +78 -0
- package/dist/handler/types.d.ts +53 -0
- package/dist/handler/utils/request-parser.d.ts +72 -0
- package/dist/handler/utils/response-builder.d.ts +83 -0
- package/dist/handler/utils/storage-utils.d.ts +10 -0
- package/dist/handler/utils/stream-utils.d.ts +29 -0
- package/dist/handler/utils/upload-handlers.d.ts +76 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.js +13 -0
- package/dist/metrics/index.d.ts +2 -0
- package/dist/metrics/no-op-metrics.d.ts +15 -0
- package/dist/metrics/opentelemetry-metrics.d.ts +55 -0
- package/dist/openapi/index.d.ts +5 -0
- package/dist/openapi/index.js +5 -0
- package/dist/openapi/rest.d.ts +7 -0
- package/dist/openapi/shared.d.ts +13 -0
- package/dist/openapi/transform.d.ts +3 -0
- package/dist/openapi/tus.d.ts +7 -0
- package/dist/openapi/xhr.d.ts +7 -0
- package/dist/packem_shared/AwsLightFile-tTneXZgG.js +11 -0
- package/dist/packem_shared/AwsLightMetaStorage-BWSOtVaN.js +4 -0
- package/dist/packem_shared/AwsLightStorage-Blv-GP4v.js +133 -0
- package/dist/packem_shared/AzureFile-CesgFzps.js +8 -0
- package/dist/packem_shared/AzureSMetaStorage-CFs-OYJT.js +88 -0
- package/dist/packem_shared/AzureStorage-B0v048hG.js +357 -0
- package/dist/packem_shared/BaseTransformer-C2gLib6v.js +82 -0
- package/dist/packem_shared/DiskStorage-BlltBst6.js +12 -0
- package/dist/packem_shared/DiskStorageWithChecksum-BJTmMklc.js +238 -0
- package/dist/packem_shared/ERRORS-D0apMqnc.js +97 -0
- package/dist/packem_shared/File-Bb3P23dr.js +69 -0
- package/dist/packem_shared/GCSConfig-vPP22kN6.js +11 -0
- package/dist/packem_shared/GCSFile-BIEunhAN.js +8 -0
- package/dist/packem_shared/GCSMetaStorage-BMFEdzJ7.js +7 -0
- package/dist/packem_shared/GCStorage-DnhiwaS9.js +406 -0
- package/dist/packem_shared/LocalMetaStorage-CZHhKkMd.js +7 -0
- package/dist/packem_shared/MediaTransformer-D6658DL1.js +1197 -0
- package/dist/packem_shared/MetaStorage-pECeFOad.js +46 -0
- package/dist/packem_shared/Metadata-DRLXeJ0F.js +89 -0
- package/dist/packem_shared/Multipart-CNFK_Okz.js +163 -0
- package/dist/packem_shared/Multipart-CtUL7BQw.js +128 -0
- package/dist/packem_shared/NetlifyBlobFile-CXzyjqrD.js +14 -0
- package/dist/packem_shared/NetlifyBlobMetaStorage-DxZ5aDvD.js +9 -0
- package/dist/packem_shared/NetlifyBlobStorage-CLPtjHqd.js +376 -0
- package/dist/packem_shared/NoOpMetrics-DhAk5rXc.js +10 -0
- package/dist/packem_shared/OpenTelemetryMetrics-BnxhqIaH.js +67 -0
- package/dist/packem_shared/Rest-CAOAEkOj.js +267 -0
- package/dist/packem_shared/Rest-DNuLwBrK.js +228 -0
- package/dist/packem_shared/S3File-DZiyk9Qt.js +11 -0
- package/dist/packem_shared/S3MetaStorage-Dz9aDabA.js +76 -0
- package/dist/packem_shared/S3Storage-DHmTk-hU.js +316 -0
- package/dist/packem_shared/TUS_RESUMABLE-GJzZ9R-f.js +434 -0
- package/dist/packem_shared/Tus-B8PmlMgR.js +200 -0
- package/dist/packem_shared/Tus-C4F1aYOl.js +195 -0
- package/dist/packem_shared/ValidationError-BfF1aE4h.js +26 -0
- package/dist/packem_shared/VercelBlobFile-BCg4aTEq.js +18 -0
- package/dist/packem_shared/VercelBlobMetaStorage-Bd9F-VFm.js +9 -0
- package/dist/packem_shared/VercelBlobStorage-DD9LMOS6.js +261 -0
- package/dist/packem_shared/_commonjsHelpers-B85MJLTf.js +5 -0
- package/dist/packem_shared/aws-light-meta-storage-DKJBgbR6.js +446 -0
- package/dist/packem_shared/backblaze-BlMnIcBC.js +20 -0
- package/dist/packem_shared/base-handler-core-BKuf4YLT.js +303 -0
- package/dist/packem_shared/base-handler-fetch-Cr0hLiqg.js +291 -0
- package/dist/packem_shared/base-handler-node-gk5aN9Cx.js +730 -0
- package/dist/packem_shared/cache-B88MXQ_2.js +18 -0
- package/dist/packem_shared/cloudflare-Bi1q8wXE.js +21 -0
- package/dist/packem_shared/defaultCloudStorageFileNameValidation-DUuacjWv.js +11 -0
- package/dist/packem_shared/digitalOcean-CWQRJM3L.js +21 -0
- package/dist/packem_shared/disk-storage-Bh2wy3YW.js +810 -0
- package/dist/packem_shared/gcs-meta-storage-0tgMNnPO.js +158 -0
- package/dist/packem_shared/has-content-CY66ehMK.js +3 -0
- package/dist/packem_shared/headers-DoS5nwM-.js +3220 -0
- package/dist/packem_shared/is-expired-CTThU1q5.js +8 -0
- package/dist/packem_shared/isRetryableError-Dycp7127.js +82 -0
- package/dist/packem_shared/isValidMediaType-BeDgiObq.js +35 -0
- package/dist/packem_shared/local-meta-storage-By-3SNBI.js +649 -0
- package/dist/packem_shared/minio-C2YBZQOw.js +22 -0
- package/dist/packem_shared/multipart-base-B3i67SSX.js +102 -0
- package/dist/packem_shared/part-match-BMNqHDYD.js +96 -0
- package/dist/packem_shared/path-CR6YkPXX-7R1-9CMk.js +161 -0
- package/dist/packem_shared/response-builder-BtnRiBUI.js +45 -0
- package/dist/packem_shared/rest-base-GRCcnan7.js +457 -0
- package/dist/packem_shared/restOpenApiSpec-CwcHHY2C.js +800 -0
- package/dist/packem_shared/s3-base-storage-C1DIHTYY.js +510 -0
- package/dist/packem_shared/sharedGet-Cpo7QUyu.js +1019 -0
- package/dist/packem_shared/storage-C6NSXb8h.js +1175 -0
- package/dist/packem_shared/tigris-Hac8TKnX.js +21 -0
- package/dist/packem_shared/transformOpenApiSpec-DWM5WtnN.js +975 -0
- package/dist/packem_shared/tusOpenApiSpec-6ohiToBy.js +740 -0
- package/dist/packem_shared/update-size-CCGm6i1J.js +8 -0
- package/dist/packem_shared/validator-BeX_lJet.js +78 -0
- package/dist/packem_shared/waitForStorage-Cscw85sx.js +18 -0
- package/dist/packem_shared/wasabi-DIyflHSd.js +21 -0
- package/dist/packem_shared/xhrOpenApiSpec-DS17brnx.js +264 -0
- package/dist/storage/aws/clients/backblaze.d.ts +12 -0
- package/dist/storage/aws/clients/cloudflare.d.ts +13 -0
- package/dist/storage/aws/clients/digital-ocean.d.ts +12 -0
- package/dist/storage/aws/clients/index.d.ts +6 -0
- package/dist/storage/aws/clients/index.js +6 -0
- package/dist/storage/aws/clients/minio.d.ts +13 -0
- package/dist/storage/aws/clients/tigris.d.ts +12 -0
- package/dist/storage/aws/clients/types.d.ts +95 -0
- package/dist/storage/aws/clients/wasabi.d.ts +12 -0
- package/dist/storage/aws/index.d.ts +4 -0
- package/dist/storage/aws/index.js +3 -0
- package/dist/storage/aws/s3-base-storage.d.ts +248 -0
- package/dist/storage/aws/s3-client-adapter.d.ts +110 -0
- package/dist/storage/aws/s3-file.d.ts +10 -0
- package/dist/storage/aws/s3-meta-storage.d.ts +15 -0
- package/dist/storage/aws/s3-storage.d.ts +70 -0
- package/dist/storage/aws/types.d.ts +119 -0
- package/dist/storage/aws-light/aws-light-api-adapter.d.ts +130 -0
- package/dist/storage/aws-light/aws-light-file.d.ts +10 -0
- package/dist/storage/aws-light/aws-light-meta-storage.d.ts +19 -0
- package/dist/storage/aws-light/aws-light-storage.d.ts +65 -0
- package/dist/storage/aws-light/index.d.ts +4 -0
- package/dist/storage/aws-light/index.js +3 -0
- package/dist/storage/aws-light/types.d.ts +37 -0
- package/dist/storage/azure/azure-file.d.ts +6 -0
- package/dist/storage/azure/azure-meta-storage.d.ts +15 -0
- package/dist/storage/azure/azure-storage.d.ts +69 -0
- package/dist/storage/azure/index.d.ts +4 -0
- package/dist/storage/azure/index.js +3 -0
- package/dist/storage/azure/types.d.ts +62 -0
- package/dist/storage/gcs/fetch-error.d.ts +11 -0
- package/dist/storage/gcs/gcs-config.d.ts +2 -0
- package/dist/storage/gcs/gcs-file.d.ts +6 -0
- package/dist/storage/gcs/gcs-meta-storage.d.ts +27 -0
- package/dist/storage/gcs/gcs-storage.d.ts +91 -0
- package/dist/storage/gcs/index.d.ts +5 -0
- package/dist/storage/gcs/index.js +4 -0
- package/dist/storage/gcs/types.d.ts +55 -0
- package/dist/storage/gcs/utils.d.ts +7 -0
- package/dist/storage/local/disk-storage-with-checksum.d.ts +15 -0
- package/dist/storage/local/disk-storage.d.ts +135 -0
- package/dist/storage/local/index.d.ts +4 -0
- package/dist/storage/local/index.js +3 -0
- package/dist/storage/local/local-meta-storage.d.ts +32 -0
- package/dist/storage/meta-storage.d.ts +30 -0
- package/dist/storage/netlify-blob/index.d.ts +4 -0
- package/dist/storage/netlify-blob/index.js +3 -0
- package/dist/storage/netlify-blob/netlify-blob-file.d.ts +12 -0
- package/dist/storage/netlify-blob/netlify-blob-meta-storage.d.ts +7 -0
- package/dist/storage/netlify-blob/netlify-blob-storage.d.ts +93 -0
- package/dist/storage/netlify-blob/types.d.ts +30 -0
- package/dist/storage/storage.d.ts +353 -0
- package/dist/storage/types.d.ts +221 -0
- package/dist/storage/utils/file/file.d.ts +25 -0
- package/dist/storage/utils/file/get-file-status.d.ts +9 -0
- package/dist/storage/utils/file/has-content.d.ts +9 -0
- package/dist/storage/utils/file/index.d.ts +10 -0
- package/dist/storage/utils/file/is-expired.d.ts +8 -0
- package/dist/storage/utils/file/metadata.d.ts +18 -0
- package/dist/storage/utils/file/part-match.d.ts +11 -0
- package/dist/storage/utils/file/types.d.ts +37 -0
- package/dist/storage/utils/file/update-metadata.d.ts +10 -0
- package/dist/storage/utils/file/update-size.d.ts +10 -0
- package/dist/storage/vercel-blob/index.d.ts +4 -0
- package/dist/storage/vercel-blob/index.js +3 -0
- package/dist/storage/vercel-blob/types.d.ts +32 -0
- package/dist/storage/vercel-blob/vercel-blob-file.d.ts +16 -0
- package/dist/storage/vercel-blob/vercel-blob-meta-storage.d.ts +7 -0
- package/dist/storage/vercel-blob/vercel-blob-storage.d.ts +76 -0
- package/dist/transformer/audio-transformer.d.ts +128 -0
- package/dist/transformer/audio-transformer.js +278 -0
- package/dist/transformer/base-transformer.d.ts +63 -0
- package/dist/transformer/image-transformer.d.ts +571 -0
- package/dist/transformer/image-transformer.js +1100 -0
- package/dist/transformer/index.d.ts +5 -0
- package/dist/transformer/index.js +4 -0
- package/dist/transformer/media-transformer.d.ts +332 -0
- package/dist/transformer/types.d.ts +652 -0
- package/dist/transformer/utils.d.ts +33 -0
- package/dist/transformer/validation-error.d.ts +23 -0
- package/dist/transformer/video-transformer.d.ts +145 -0
- package/dist/transformer/video-transformer.js +310 -0
- package/dist/utils/cache.d.ts +32 -0
- package/dist/utils/chunked-upload.d.ts +65 -0
- package/dist/utils/detect-file-type.d.ts +28 -0
- package/dist/utils/errors.d.ts +74 -0
- package/dist/utils/file-path-url-matcher.d.ts +18 -0
- package/dist/utils/headers.d.ts +111 -0
- package/dist/utils/http.d.ts +92 -0
- package/dist/utils/locker.d.ts +26 -0
- package/dist/utils/pipes/stream-checksum.d.ts +47 -0
- package/dist/utils/pipes/stream-length.d.ts +22 -0
- package/dist/utils/primitives/get-last-one.d.ts +3 -0
- package/dist/utils/primitives/is-record.d.ts +2 -0
- package/dist/utils/primitives/map-values.d.ts +9 -0
- package/dist/utils/primitives/pick.d.ts +2 -0
- package/dist/utils/primitives/to-milliseconds.d.ts +12 -0
- package/dist/utils/primitives/to-seconds.d.ts +12 -0
- package/dist/utils/range-checksum.d.ts +33 -0
- package/dist/utils/range-hasher.d.ts +46 -0
- package/dist/utils/retry.d.ts +64 -0
- package/dist/utils/types.d.ts +108 -0
- package/dist/utils/validation-error.d.ts +22 -0
- package/dist/utils/validator.d.ts +36 -0
- package/package.json +5 -5
|
@@ -0,0 +1,649 @@
|
|
|
1
|
+
import { utimes } from 'node:fs/promises';
|
|
2
|
+
import { tmpdir } from 'node:os';
|
|
3
|
+
import { throwErrorCode, ERRORS } from './ERRORS-D0apMqnc.js';
|
|
4
|
+
import MetaStorage from './MetaStorage-pECeFOad.js';
|
|
5
|
+
import { stringifyMetadata, parseMetadata } from './Metadata-DRLXeJ0F.js';
|
|
6
|
+
import { a as normalizeWindowsPath, d as dirname, n as normalize, j as join } from './path-CR6YkPXX-7R1-9CMk.js';
|
|
7
|
+
import { createRequire } from 'node:module';
|
|
8
|
+
|
|
9
|
+
const F_OK = 0;
|
|
10
|
+
const R_OK = 4;
|
|
11
|
+
|
|
12
|
+
const assertValidFileOrDirectoryPath = (fileOrDirectoryPath) => {
|
|
13
|
+
if (!fileOrDirectoryPath || !(fileOrDirectoryPath instanceof URL) && typeof fileOrDirectoryPath !== "string") {
|
|
14
|
+
throw new TypeError("Path must be a non-empty string or URL.");
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const getFileInfoType = (fileInfo) => {
|
|
19
|
+
if (fileInfo.isFile()) {
|
|
20
|
+
return "file";
|
|
21
|
+
}
|
|
22
|
+
if (fileInfo.isDirectory()) {
|
|
23
|
+
return "dir";
|
|
24
|
+
}
|
|
25
|
+
if (fileInfo.isSymbolicLink()) {
|
|
26
|
+
return "symlink";
|
|
27
|
+
}
|
|
28
|
+
return void 0;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const __cjs_require$5 = createRequire(import.meta.url);
|
|
32
|
+
const __cjs_getProcess$5 = typeof globalThis !== "undefined" && typeof globalThis.process !== "undefined" ? globalThis.process : process;
|
|
33
|
+
const __cjs_getBuiltinModule$5 = (module) => {
|
|
34
|
+
if (typeof __cjs_getProcess$5 !== "undefined" && __cjs_getProcess$5.versions && __cjs_getProcess$5.versions.node) {
|
|
35
|
+
const [major, minor] = __cjs_getProcess$5.versions.node.split(".").map(Number);
|
|
36
|
+
if (major > 22 || major === 22 && minor >= 3 || major === 20 && minor >= 16) {
|
|
37
|
+
return __cjs_getProcess$5.getBuiltinModule(module);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return __cjs_require$5(module);
|
|
41
|
+
};
|
|
42
|
+
const {
|
|
43
|
+
lstat,
|
|
44
|
+
mkdir: mkdir$1
|
|
45
|
+
} = __cjs_getBuiltinModule$5("node:fs/promises");
|
|
46
|
+
const ensureDir = async (directory) => {
|
|
47
|
+
assertValidFileOrDirectoryPath(directory);
|
|
48
|
+
try {
|
|
49
|
+
const fileInfo = await lstat(directory);
|
|
50
|
+
if (!fileInfo.isDirectory()) {
|
|
51
|
+
throw new Error(`Ensure path exists, expected 'dir', got '${getFileInfoType(fileInfo)}'`);
|
|
52
|
+
}
|
|
53
|
+
return;
|
|
54
|
+
} catch (error) {
|
|
55
|
+
if (error.code !== "ENOENT") {
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
await mkdir$1(directory, { recursive: true });
|
|
61
|
+
} catch (error) {
|
|
62
|
+
if (error.code !== "EEXIST") {
|
|
63
|
+
throw error;
|
|
64
|
+
}
|
|
65
|
+
const fileInfo = await lstat(directory);
|
|
66
|
+
if (!fileInfo.isDirectory()) {
|
|
67
|
+
throw new Error(`Ensure path exists, expected 'dir', got '${getFileInfoType(fileInfo)}'`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const __cjs_require$4 = createRequire(import.meta.url);
|
|
73
|
+
const __cjs_getProcess$4 = typeof globalThis !== "undefined" && typeof globalThis.process !== "undefined" ? globalThis.process : process;
|
|
74
|
+
const __cjs_getBuiltinModule$4 = (module) => {
|
|
75
|
+
if (typeof __cjs_getProcess$4 !== "undefined" && __cjs_getProcess$4.versions && __cjs_getProcess$4.versions.node) {
|
|
76
|
+
const [major, minor] = __cjs_getProcess$4.versions.node.split(".").map(Number);
|
|
77
|
+
if (major > 22 || major === 22 && minor >= 3 || major === 20 && minor >= 16) {
|
|
78
|
+
return __cjs_getProcess$4.getBuiltinModule(module);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return __cjs_require$4(module);
|
|
82
|
+
};
|
|
83
|
+
const {
|
|
84
|
+
fileURLToPath
|
|
85
|
+
} = __cjs_getBuiltinModule$4("node:url");
|
|
86
|
+
function getDefaultExportFromCjs(x) {
|
|
87
|
+
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
|
|
88
|
+
}
|
|
89
|
+
var binaryExtensions$1;
|
|
90
|
+
var hasRequiredBinaryExtensions;
|
|
91
|
+
function requireBinaryExtensions() {
|
|
92
|
+
if (hasRequiredBinaryExtensions) return binaryExtensions$1;
|
|
93
|
+
hasRequiredBinaryExtensions = 1;
|
|
94
|
+
binaryExtensions$1 = [
|
|
95
|
+
"3dm",
|
|
96
|
+
"3ds",
|
|
97
|
+
"3g2",
|
|
98
|
+
"3gp",
|
|
99
|
+
"7z",
|
|
100
|
+
"a",
|
|
101
|
+
"aac",
|
|
102
|
+
"adp",
|
|
103
|
+
"afdesign",
|
|
104
|
+
"afphoto",
|
|
105
|
+
"afpub",
|
|
106
|
+
"ai",
|
|
107
|
+
"aif",
|
|
108
|
+
"aiff",
|
|
109
|
+
"alz",
|
|
110
|
+
"ape",
|
|
111
|
+
"apk",
|
|
112
|
+
"appimage",
|
|
113
|
+
"ar",
|
|
114
|
+
"arj",
|
|
115
|
+
"asf",
|
|
116
|
+
"au",
|
|
117
|
+
"avi",
|
|
118
|
+
"bak",
|
|
119
|
+
"baml",
|
|
120
|
+
"bh",
|
|
121
|
+
"bin",
|
|
122
|
+
"bk",
|
|
123
|
+
"bmp",
|
|
124
|
+
"btif",
|
|
125
|
+
"bz2",
|
|
126
|
+
"bzip2",
|
|
127
|
+
"cab",
|
|
128
|
+
"caf",
|
|
129
|
+
"cgm",
|
|
130
|
+
"class",
|
|
131
|
+
"cmx",
|
|
132
|
+
"cpio",
|
|
133
|
+
"cr2",
|
|
134
|
+
"cr3",
|
|
135
|
+
"cur",
|
|
136
|
+
"dat",
|
|
137
|
+
"dcm",
|
|
138
|
+
"deb",
|
|
139
|
+
"dex",
|
|
140
|
+
"djvu",
|
|
141
|
+
"dll",
|
|
142
|
+
"dmg",
|
|
143
|
+
"dng",
|
|
144
|
+
"doc",
|
|
145
|
+
"docm",
|
|
146
|
+
"docx",
|
|
147
|
+
"dot",
|
|
148
|
+
"dotm",
|
|
149
|
+
"dra",
|
|
150
|
+
"DS_Store",
|
|
151
|
+
"dsk",
|
|
152
|
+
"dts",
|
|
153
|
+
"dtshd",
|
|
154
|
+
"dvb",
|
|
155
|
+
"dwg",
|
|
156
|
+
"dxf",
|
|
157
|
+
"ecelp4800",
|
|
158
|
+
"ecelp7470",
|
|
159
|
+
"ecelp9600",
|
|
160
|
+
"egg",
|
|
161
|
+
"eol",
|
|
162
|
+
"eot",
|
|
163
|
+
"epub",
|
|
164
|
+
"exe",
|
|
165
|
+
"f4v",
|
|
166
|
+
"fbs",
|
|
167
|
+
"fh",
|
|
168
|
+
"fla",
|
|
169
|
+
"flac",
|
|
170
|
+
"flatpak",
|
|
171
|
+
"fli",
|
|
172
|
+
"flv",
|
|
173
|
+
"fpx",
|
|
174
|
+
"fst",
|
|
175
|
+
"fvt",
|
|
176
|
+
"g3",
|
|
177
|
+
"gh",
|
|
178
|
+
"gif",
|
|
179
|
+
"graffle",
|
|
180
|
+
"gz",
|
|
181
|
+
"gzip",
|
|
182
|
+
"h261",
|
|
183
|
+
"h263",
|
|
184
|
+
"h264",
|
|
185
|
+
"icns",
|
|
186
|
+
"ico",
|
|
187
|
+
"ief",
|
|
188
|
+
"img",
|
|
189
|
+
"ipa",
|
|
190
|
+
"iso",
|
|
191
|
+
"jar",
|
|
192
|
+
"jpeg",
|
|
193
|
+
"jpg",
|
|
194
|
+
"jpgv",
|
|
195
|
+
"jpm",
|
|
196
|
+
"jxr",
|
|
197
|
+
"key",
|
|
198
|
+
"ktx",
|
|
199
|
+
"lha",
|
|
200
|
+
"lib",
|
|
201
|
+
"lvp",
|
|
202
|
+
"lz",
|
|
203
|
+
"lzh",
|
|
204
|
+
"lzma",
|
|
205
|
+
"lzo",
|
|
206
|
+
"m3u",
|
|
207
|
+
"m4a",
|
|
208
|
+
"m4v",
|
|
209
|
+
"mar",
|
|
210
|
+
"mdi",
|
|
211
|
+
"mht",
|
|
212
|
+
"mid",
|
|
213
|
+
"midi",
|
|
214
|
+
"mj2",
|
|
215
|
+
"mka",
|
|
216
|
+
"mkv",
|
|
217
|
+
"mmr",
|
|
218
|
+
"mng",
|
|
219
|
+
"mobi",
|
|
220
|
+
"mov",
|
|
221
|
+
"movie",
|
|
222
|
+
"mp3",
|
|
223
|
+
"mp4",
|
|
224
|
+
"mp4a",
|
|
225
|
+
"mpeg",
|
|
226
|
+
"mpg",
|
|
227
|
+
"mpga",
|
|
228
|
+
"mxu",
|
|
229
|
+
"nef",
|
|
230
|
+
"npx",
|
|
231
|
+
"numbers",
|
|
232
|
+
"nupkg",
|
|
233
|
+
"o",
|
|
234
|
+
"odp",
|
|
235
|
+
"ods",
|
|
236
|
+
"odt",
|
|
237
|
+
"oga",
|
|
238
|
+
"ogg",
|
|
239
|
+
"ogv",
|
|
240
|
+
"otf",
|
|
241
|
+
"ott",
|
|
242
|
+
"pages",
|
|
243
|
+
"pbm",
|
|
244
|
+
"pcx",
|
|
245
|
+
"pdb",
|
|
246
|
+
"pdf",
|
|
247
|
+
"pea",
|
|
248
|
+
"pgm",
|
|
249
|
+
"pic",
|
|
250
|
+
"png",
|
|
251
|
+
"pnm",
|
|
252
|
+
"pot",
|
|
253
|
+
"potm",
|
|
254
|
+
"potx",
|
|
255
|
+
"ppa",
|
|
256
|
+
"ppam",
|
|
257
|
+
"ppm",
|
|
258
|
+
"pps",
|
|
259
|
+
"ppsm",
|
|
260
|
+
"ppsx",
|
|
261
|
+
"ppt",
|
|
262
|
+
"pptm",
|
|
263
|
+
"pptx",
|
|
264
|
+
"psd",
|
|
265
|
+
"pya",
|
|
266
|
+
"pyc",
|
|
267
|
+
"pyo",
|
|
268
|
+
"pyv",
|
|
269
|
+
"qt",
|
|
270
|
+
"rar",
|
|
271
|
+
"ras",
|
|
272
|
+
"raw",
|
|
273
|
+
"resources",
|
|
274
|
+
"rgb",
|
|
275
|
+
"rip",
|
|
276
|
+
"rlc",
|
|
277
|
+
"rmf",
|
|
278
|
+
"rmvb",
|
|
279
|
+
"rpm",
|
|
280
|
+
"rtf",
|
|
281
|
+
"rz",
|
|
282
|
+
"s3m",
|
|
283
|
+
"s7z",
|
|
284
|
+
"scpt",
|
|
285
|
+
"sgi",
|
|
286
|
+
"shar",
|
|
287
|
+
"snap",
|
|
288
|
+
"sil",
|
|
289
|
+
"sketch",
|
|
290
|
+
"slk",
|
|
291
|
+
"smv",
|
|
292
|
+
"snk",
|
|
293
|
+
"so",
|
|
294
|
+
"stl",
|
|
295
|
+
"suo",
|
|
296
|
+
"sub",
|
|
297
|
+
"swf",
|
|
298
|
+
"tar",
|
|
299
|
+
"tbz",
|
|
300
|
+
"tbz2",
|
|
301
|
+
"tga",
|
|
302
|
+
"tgz",
|
|
303
|
+
"thmx",
|
|
304
|
+
"tif",
|
|
305
|
+
"tiff",
|
|
306
|
+
"tlz",
|
|
307
|
+
"ttc",
|
|
308
|
+
"ttf",
|
|
309
|
+
"txz",
|
|
310
|
+
"udf",
|
|
311
|
+
"uvh",
|
|
312
|
+
"uvi",
|
|
313
|
+
"uvm",
|
|
314
|
+
"uvp",
|
|
315
|
+
"uvs",
|
|
316
|
+
"uvu",
|
|
317
|
+
"viv",
|
|
318
|
+
"vob",
|
|
319
|
+
"war",
|
|
320
|
+
"wav",
|
|
321
|
+
"wax",
|
|
322
|
+
"wbmp",
|
|
323
|
+
"wdp",
|
|
324
|
+
"weba",
|
|
325
|
+
"webm",
|
|
326
|
+
"webp",
|
|
327
|
+
"whl",
|
|
328
|
+
"wim",
|
|
329
|
+
"wm",
|
|
330
|
+
"wma",
|
|
331
|
+
"wmv",
|
|
332
|
+
"wmx",
|
|
333
|
+
"woff",
|
|
334
|
+
"woff2",
|
|
335
|
+
"wrm",
|
|
336
|
+
"wvx",
|
|
337
|
+
"xbm",
|
|
338
|
+
"xif",
|
|
339
|
+
"xla",
|
|
340
|
+
"xlam",
|
|
341
|
+
"xls",
|
|
342
|
+
"xlsb",
|
|
343
|
+
"xlsm",
|
|
344
|
+
"xlsx",
|
|
345
|
+
"xlt",
|
|
346
|
+
"xltm",
|
|
347
|
+
"xltx",
|
|
348
|
+
"xm",
|
|
349
|
+
"xmind",
|
|
350
|
+
"xpi",
|
|
351
|
+
"xpm",
|
|
352
|
+
"xwd",
|
|
353
|
+
"xz",
|
|
354
|
+
"z",
|
|
355
|
+
"zip",
|
|
356
|
+
"zipx"
|
|
357
|
+
];
|
|
358
|
+
return binaryExtensions$1;
|
|
359
|
+
}
|
|
360
|
+
var binaryExtensionsExports = /* @__PURE__ */ requireBinaryExtensions();
|
|
361
|
+
const binaryExtensions = /* @__PURE__ */ getDefaultExportFromCjs(binaryExtensionsExports);
|
|
362
|
+
new Set(binaryExtensions);
|
|
363
|
+
const toPath = (urlOrPath) => normalizeWindowsPath(urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath);
|
|
364
|
+
|
|
365
|
+
const __cjs_require$3 = createRequire(import.meta.url);
|
|
366
|
+
const __cjs_getProcess$3 = typeof globalThis !== "undefined" && typeof globalThis.process !== "undefined" ? globalThis.process : process;
|
|
367
|
+
const __cjs_getBuiltinModule$3 = (module) => {
|
|
368
|
+
if (typeof __cjs_getProcess$3 !== "undefined" && __cjs_getProcess$3.versions && __cjs_getProcess$3.versions.node) {
|
|
369
|
+
const [major, minor] = __cjs_getProcess$3.versions.node.split(".").map(Number);
|
|
370
|
+
if (major > 22 || major === 22 && minor >= 3 || major === 20 && minor >= 16) {
|
|
371
|
+
return __cjs_getProcess$3.getBuiltinModule(module);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
return __cjs_require$3(module);
|
|
375
|
+
};
|
|
376
|
+
const {
|
|
377
|
+
access
|
|
378
|
+
} = __cjs_getBuiltinModule$3("node:fs/promises");
|
|
379
|
+
async function isAccessible(path, mode = F_OK) {
|
|
380
|
+
assertValidFileOrDirectoryPath(path);
|
|
381
|
+
path = toPath(path);
|
|
382
|
+
try {
|
|
383
|
+
await access(path, mode);
|
|
384
|
+
return true;
|
|
385
|
+
} catch {
|
|
386
|
+
return false;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
class PermissionError extends Error {
|
|
391
|
+
/**
|
|
392
|
+
* Creates a new instance.
|
|
393
|
+
* @param message
|
|
394
|
+
*/
|
|
395
|
+
constructor(message) {
|
|
396
|
+
super(`EPERM: Operation not permitted, ${message}`);
|
|
397
|
+
}
|
|
398
|
+
// eslint-disable-next-line class-methods-use-this
|
|
399
|
+
get code() {
|
|
400
|
+
return "EPERM";
|
|
401
|
+
}
|
|
402
|
+
// eslint-disable-next-line class-methods-use-this,@typescript-eslint/explicit-module-boundary-types
|
|
403
|
+
set code(_name) {
|
|
404
|
+
throw new Error("Cannot overwrite code EPERM");
|
|
405
|
+
}
|
|
406
|
+
// eslint-disable-next-line class-methods-use-this
|
|
407
|
+
get name() {
|
|
408
|
+
return "PermissionError";
|
|
409
|
+
}
|
|
410
|
+
// eslint-disable-next-line class-methods-use-this,@typescript-eslint/explicit-module-boundary-types
|
|
411
|
+
set name(_name) {
|
|
412
|
+
throw new Error("Cannot overwrite name of PermissionError");
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
const __cjs_require$2 = createRequire(import.meta.url);
|
|
417
|
+
const __cjs_getProcess$2 = typeof globalThis !== "undefined" && typeof globalThis.process !== "undefined" ? globalThis.process : process;
|
|
418
|
+
const __cjs_getBuiltinModule$2 = (module) => {
|
|
419
|
+
if (typeof __cjs_getProcess$2 !== "undefined" && __cjs_getProcess$2.versions && __cjs_getProcess$2.versions.node) {
|
|
420
|
+
const [major, minor] = __cjs_getProcess$2.versions.node.split(".").map(Number);
|
|
421
|
+
if (major > 22 || major === 22 && minor >= 3 || major === 20 && minor >= 16) {
|
|
422
|
+
return __cjs_getProcess$2.getBuiltinModule(module);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
return __cjs_require$2(module);
|
|
426
|
+
};
|
|
427
|
+
const {
|
|
428
|
+
readFile: readFile$1
|
|
429
|
+
} = __cjs_getBuiltinModule$2("node:fs/promises");
|
|
430
|
+
const {
|
|
431
|
+
unzip,
|
|
432
|
+
brotliDecompress
|
|
433
|
+
} = __cjs_getBuiltinModule$2("node:zlib");
|
|
434
|
+
const decompressionMethods = {
|
|
435
|
+
brotli: brotliDecompress,
|
|
436
|
+
gzip: unzip,
|
|
437
|
+
none: (buffer, callback) => {
|
|
438
|
+
callback(null, buffer);
|
|
439
|
+
}
|
|
440
|
+
};
|
|
441
|
+
const readFile = async (path, options) => {
|
|
442
|
+
assertValidFileOrDirectoryPath(path);
|
|
443
|
+
path = toPath(path);
|
|
444
|
+
if (!await isAccessible(path)) {
|
|
445
|
+
throw new PermissionError(`unable to read the non-accessible file: ${path}`);
|
|
446
|
+
}
|
|
447
|
+
if (!await isAccessible(path, R_OK)) {
|
|
448
|
+
throw new Error(`Unable to read the non-readable file: ${path}`);
|
|
449
|
+
}
|
|
450
|
+
const { buffer, compression, encoding, flag } = options ?? {};
|
|
451
|
+
return await readFile$1(path, flag ? { encoding, flag } : { encoding }).then(
|
|
452
|
+
async (content) => await new Promise((resolve, reject) => {
|
|
453
|
+
decompressionMethods[compression ?? "none"](content, (error, result) => {
|
|
454
|
+
if (error) {
|
|
455
|
+
reject(error);
|
|
456
|
+
} else {
|
|
457
|
+
resolve(buffer ? result : result.toString());
|
|
458
|
+
}
|
|
459
|
+
});
|
|
460
|
+
})
|
|
461
|
+
).catch((error) => {
|
|
462
|
+
throw error;
|
|
463
|
+
});
|
|
464
|
+
};
|
|
465
|
+
|
|
466
|
+
const __cjs_require$1 = createRequire(import.meta.url);
|
|
467
|
+
const __cjs_getProcess$1 = typeof globalThis !== "undefined" && typeof globalThis.process !== "undefined" ? globalThis.process : process;
|
|
468
|
+
const __cjs_getBuiltinModule$1 = (module) => {
|
|
469
|
+
if (typeof __cjs_getProcess$1 !== "undefined" && __cjs_getProcess$1.versions && __cjs_getProcess$1.versions.node) {
|
|
470
|
+
const [major, minor] = __cjs_getProcess$1.versions.node.split(".").map(Number);
|
|
471
|
+
if (major > 22 || major === 22 && minor >= 3 || major === 20 && minor >= 16) {
|
|
472
|
+
return __cjs_getProcess$1.getBuiltinModule(module);
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
return __cjs_require$1(module);
|
|
476
|
+
};
|
|
477
|
+
const {
|
|
478
|
+
unlink: unlink$1,
|
|
479
|
+
rm
|
|
480
|
+
} = __cjs_getBuiltinModule$1("node:fs/promises");
|
|
481
|
+
const remove = async (path, options = {}) => {
|
|
482
|
+
assertValidFileOrDirectoryPath(path);
|
|
483
|
+
try {
|
|
484
|
+
await unlink$1(path);
|
|
485
|
+
} catch {
|
|
486
|
+
}
|
|
487
|
+
try {
|
|
488
|
+
await rm(path, { force: true, maxRetries: options?.maxRetries, recursive: true, retryDelay: options?.retryDelay });
|
|
489
|
+
} catch {
|
|
490
|
+
}
|
|
491
|
+
};
|
|
492
|
+
|
|
493
|
+
const assertValidFileContents = (contents) => {
|
|
494
|
+
if (typeof contents !== "string" && !(contents instanceof ArrayBuffer) && !ArrayBuffer.isView(contents)) {
|
|
495
|
+
throw new TypeError("File contents must be a string, ArrayBuffer, or ArrayBuffer view.");
|
|
496
|
+
}
|
|
497
|
+
};
|
|
498
|
+
|
|
499
|
+
const encoder = new TextEncoder();
|
|
500
|
+
const toUint8Array = (contents) => {
|
|
501
|
+
if (contents instanceof Uint8Array) {
|
|
502
|
+
return contents;
|
|
503
|
+
}
|
|
504
|
+
if (typeof contents === "string") {
|
|
505
|
+
return encoder.encode(contents);
|
|
506
|
+
}
|
|
507
|
+
if (contents instanceof ArrayBuffer) {
|
|
508
|
+
return new Uint8Array(contents);
|
|
509
|
+
}
|
|
510
|
+
if (ArrayBuffer.isView(contents)) {
|
|
511
|
+
const bytes = contents.buffer.slice(contents.byteOffset, contents.byteOffset + contents.byteLength);
|
|
512
|
+
return new Uint8Array(bytes);
|
|
513
|
+
}
|
|
514
|
+
throw new TypeError("Invalid contents type. Expected string or ArrayBuffer.");
|
|
515
|
+
};
|
|
516
|
+
|
|
517
|
+
const __cjs_require = createRequire(import.meta.url);
|
|
518
|
+
const __cjs_getProcess = typeof globalThis !== "undefined" && typeof globalThis.process !== "undefined" ? globalThis.process : process;
|
|
519
|
+
const __cjs_getBuiltinModule = (module) => {
|
|
520
|
+
if (typeof __cjs_getProcess !== "undefined" && __cjs_getProcess.versions && __cjs_getProcess.versions.node) {
|
|
521
|
+
const [major, minor] = __cjs_getProcess.versions.node.split(".").map(Number);
|
|
522
|
+
if (major > 22 || major === 22 && minor >= 3 || major === 20 && minor >= 16) {
|
|
523
|
+
return __cjs_getProcess.getBuiltinModule(module);
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
return __cjs_require(module);
|
|
527
|
+
};
|
|
528
|
+
const {
|
|
529
|
+
mkdir,
|
|
530
|
+
writeFile: writeFile$1,
|
|
531
|
+
stat,
|
|
532
|
+
rename,
|
|
533
|
+
chown,
|
|
534
|
+
chmod,
|
|
535
|
+
unlink
|
|
536
|
+
} = __cjs_getBuiltinModule("node:fs/promises");
|
|
537
|
+
const writeFile = async (path, content, options) => {
|
|
538
|
+
options = {
|
|
539
|
+
encoding: "utf8",
|
|
540
|
+
flag: "w",
|
|
541
|
+
overwrite: true,
|
|
542
|
+
recursive: true,
|
|
543
|
+
...options
|
|
544
|
+
};
|
|
545
|
+
assertValidFileOrDirectoryPath(path);
|
|
546
|
+
assertValidFileContents(content);
|
|
547
|
+
path = toPath(path);
|
|
548
|
+
const temporaryPath = `${path}.tmp`;
|
|
549
|
+
try {
|
|
550
|
+
const pathExists = await isAccessible(path, F_OK);
|
|
551
|
+
if (!pathExists && options.recursive) {
|
|
552
|
+
const directory = dirname(path);
|
|
553
|
+
if (!await isAccessible(directory, F_OK)) {
|
|
554
|
+
await mkdir(directory, { recursive: true });
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
let stat$1;
|
|
558
|
+
await writeFile$1(temporaryPath, toUint8Array(content), { encoding: options.encoding, flag: options.flag });
|
|
559
|
+
if (pathExists && !options.overwrite) {
|
|
560
|
+
stat$1 = await stat(path);
|
|
561
|
+
if (options.chown === void 0) {
|
|
562
|
+
options.chown = { gid: stat$1.gid, uid: stat$1.uid };
|
|
563
|
+
}
|
|
564
|
+
await rename(path, `${path}.bak`);
|
|
565
|
+
}
|
|
566
|
+
if (options.chown) {
|
|
567
|
+
try {
|
|
568
|
+
await chown(temporaryPath, options.chown.uid, options.chown.gid);
|
|
569
|
+
} catch {
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
await chmod(temporaryPath, stat$1 && !options.mode ? stat$1.mode : options.mode ?? 438);
|
|
573
|
+
await rename(temporaryPath, path);
|
|
574
|
+
} catch (error) {
|
|
575
|
+
throw new Error(`Failed to write file at: ${path} - ${error.message}`, { cause: error });
|
|
576
|
+
} finally {
|
|
577
|
+
if (await isAccessible(temporaryPath)) {
|
|
578
|
+
await unlink(`${path}.tmp`);
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
};
|
|
582
|
+
|
|
583
|
+
class LocalMetaStorage extends MetaStorage {
|
|
584
|
+
directory;
|
|
585
|
+
constructor(config) {
|
|
586
|
+
super(config);
|
|
587
|
+
this.directory = normalize(config?.directory || join(tmpdir(), "Upload_meta"));
|
|
588
|
+
this.accessCheck().catch((error) => {
|
|
589
|
+
this.logger?.error("Metadata storage access check failed: %O", error);
|
|
590
|
+
});
|
|
591
|
+
}
|
|
592
|
+
/**
|
|
593
|
+
* Returns metafile path.
|
|
594
|
+
* @param id upload id
|
|
595
|
+
*/
|
|
596
|
+
getMetaPath = (id) => normalize(`${this.directory}/${this.prefix}${id}${this.suffix}`);
|
|
597
|
+
/**
|
|
598
|
+
* Returns upload id from metafile path.
|
|
599
|
+
* @internal
|
|
600
|
+
*/
|
|
601
|
+
getIdFromPath = (metaFilePath) => metaFilePath.slice(`${this.directory}/${this.prefix}`.length, -this.suffix.length);
|
|
602
|
+
async save(id, file) {
|
|
603
|
+
await this.accessCheck();
|
|
604
|
+
const transformedMetadata = { ...file };
|
|
605
|
+
if (transformedMetadata.metadata) {
|
|
606
|
+
transformedMetadata.metadata = stringifyMetadata(file.metadata);
|
|
607
|
+
}
|
|
608
|
+
await writeFile(this.getMetaPath(id), JSON.stringify(transformedMetadata), {
|
|
609
|
+
recursive: true
|
|
610
|
+
});
|
|
611
|
+
return file;
|
|
612
|
+
}
|
|
613
|
+
async touch(id, file) {
|
|
614
|
+
const time = /* @__PURE__ */ new Date();
|
|
615
|
+
await utimes(this.getMetaPath(id), time, time);
|
|
616
|
+
return file;
|
|
617
|
+
}
|
|
618
|
+
async get(id) {
|
|
619
|
+
try {
|
|
620
|
+
const json = await readFile(this.getMetaPath(id));
|
|
621
|
+
if (json === void 0) {
|
|
622
|
+
throw throwErrorCode(ERRORS.FILE_NOT_FOUND);
|
|
623
|
+
}
|
|
624
|
+
const file = JSON.parse(json);
|
|
625
|
+
if (file.metadata && typeof file.metadata === "string") {
|
|
626
|
+
file.metadata = parseMetadata(file.metadata);
|
|
627
|
+
}
|
|
628
|
+
return file;
|
|
629
|
+
} catch (error) {
|
|
630
|
+
const errorWithCode = error;
|
|
631
|
+
const isSyntaxError = error instanceof SyntaxError;
|
|
632
|
+
if (errorWithCode.code === "ENOENT" || isSyntaxError) {
|
|
633
|
+
throw throwErrorCode(ERRORS.FILE_NOT_FOUND);
|
|
634
|
+
}
|
|
635
|
+
if (error instanceof Error && "UploadErrorCode" in error) {
|
|
636
|
+
throw error;
|
|
637
|
+
}
|
|
638
|
+
throw error;
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
async delete(id) {
|
|
642
|
+
await remove(this.getMetaPath(id));
|
|
643
|
+
}
|
|
644
|
+
async accessCheck() {
|
|
645
|
+
await ensureDir(this.directory);
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
export { LocalMetaStorage as L, assertValidFileOrDirectoryPath as a, readFile as b, ensureDir as e, getFileInfoType as g, isAccessible as i, remove as r, toPath as t };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const minio = (parameters) => {
|
|
2
|
+
const { accessKeyId, endpoint, region, secretAccessKey } = parameters ?? {
|
|
3
|
+
accessKeyId: process.env.AWS_ACCESS_KEY_ID || process.env.MINIO_ACCESS_KEY_ID || process.env.MINIO_ACCESS_KEY,
|
|
4
|
+
endpoint: process.env.AWS_ENDPOINT || process.env.MINIO_ENDPOINT,
|
|
5
|
+
region: process.env.AWS_REGION || process.env.MINIO_REGION,
|
|
6
|
+
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY || process.env.MINIO_SECRET_ACCESS_KEY || process.env.MINIO_SECRET_KEY
|
|
7
|
+
};
|
|
8
|
+
if (!region || !accessKeyId || !secretAccessKey || !endpoint) {
|
|
9
|
+
throw new Error("Missing required parameters for Minio client.");
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
credentials: {
|
|
13
|
+
accessKeyId,
|
|
14
|
+
secretAccessKey
|
|
15
|
+
},
|
|
16
|
+
endpoint,
|
|
17
|
+
forcePathStyle: true,
|
|
18
|
+
region
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export { minio as default };
|