express-storage 2.0.2 → 2.0.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.
Files changed (113) hide show
  1. package/dist/cjs/drivers/azure.driver.d.ts.map +1 -0
  2. package/dist/cjs/drivers/azure.driver.js +396 -0
  3. package/dist/cjs/drivers/azure.driver.js.map +1 -0
  4. package/dist/cjs/drivers/base.driver.d.ts.map +1 -0
  5. package/dist/cjs/drivers/base.driver.js +354 -0
  6. package/dist/cjs/drivers/base.driver.js.map +1 -0
  7. package/dist/cjs/drivers/gcs.driver.d.ts.map +1 -0
  8. package/dist/cjs/drivers/gcs.driver.js +359 -0
  9. package/dist/cjs/drivers/gcs.driver.js.map +1 -0
  10. package/dist/cjs/drivers/local.driver.d.ts.map +1 -0
  11. package/dist/cjs/drivers/local.driver.js +628 -0
  12. package/dist/cjs/drivers/local.driver.js.map +1 -0
  13. package/dist/cjs/drivers/s3.driver.d.ts.map +1 -0
  14. package/dist/cjs/drivers/s3.driver.js +392 -0
  15. package/dist/cjs/drivers/s3.driver.js.map +1 -0
  16. package/dist/cjs/factory/driver.factory.d.ts.map +1 -0
  17. package/dist/cjs/factory/driver.factory.js +181 -0
  18. package/dist/cjs/factory/driver.factory.js.map +1 -0
  19. package/dist/cjs/index.d.ts.map +1 -0
  20. package/dist/cjs/index.js +64 -0
  21. package/dist/cjs/index.js.map +1 -0
  22. package/dist/cjs/package.json +1 -0
  23. package/dist/cjs/storage-manager.d.ts.map +1 -0
  24. package/dist/cjs/storage-manager.js +719 -0
  25. package/dist/cjs/storage-manager.js.map +1 -0
  26. package/dist/cjs/types/storage.types.d.ts.map +1 -0
  27. package/dist/cjs/types/storage.types.js +3 -0
  28. package/dist/cjs/types/storage.types.js.map +1 -0
  29. package/dist/cjs/utils/config.utils.d.ts.map +1 -0
  30. package/dist/cjs/utils/config.utils.js +213 -0
  31. package/dist/cjs/utils/config.utils.js.map +1 -0
  32. package/dist/cjs/utils/file.utils.d.ts.map +1 -0
  33. package/dist/cjs/utils/file.utils.js +297 -0
  34. package/dist/cjs/utils/file.utils.js.map +1 -0
  35. package/dist/esm/drivers/azure.driver.d.ts +88 -0
  36. package/dist/esm/drivers/azure.driver.d.ts.map +1 -0
  37. package/dist/esm/drivers/azure.driver.js.map +1 -0
  38. package/dist/esm/drivers/base.driver.d.ts +170 -0
  39. package/dist/esm/drivers/base.driver.d.ts.map +1 -0
  40. package/dist/esm/drivers/base.driver.js.map +1 -0
  41. package/dist/esm/drivers/gcs.driver.d.ts +86 -0
  42. package/dist/esm/drivers/gcs.driver.d.ts.map +1 -0
  43. package/dist/esm/drivers/gcs.driver.js.map +1 -0
  44. package/dist/esm/drivers/local.driver.d.ts +107 -0
  45. package/dist/esm/drivers/local.driver.d.ts.map +1 -0
  46. package/dist/esm/drivers/local.driver.js.map +1 -0
  47. package/dist/esm/drivers/s3.driver.d.ts +89 -0
  48. package/dist/esm/drivers/s3.driver.d.ts.map +1 -0
  49. package/dist/esm/drivers/s3.driver.js.map +1 -0
  50. package/dist/esm/factory/driver.factory.d.ts +62 -0
  51. package/dist/esm/factory/driver.factory.d.ts.map +1 -0
  52. package/dist/esm/factory/driver.factory.js.map +1 -0
  53. package/dist/esm/index.d.ts +30 -0
  54. package/dist/esm/index.d.ts.map +1 -0
  55. package/dist/esm/index.js.map +1 -0
  56. package/dist/esm/package.json +1 -0
  57. package/dist/esm/storage-manager.d.ts +228 -0
  58. package/dist/esm/storage-manager.d.ts.map +1 -0
  59. package/dist/esm/storage-manager.js.map +1 -0
  60. package/dist/esm/types/storage.types.d.ts +295 -0
  61. package/dist/esm/types/storage.types.d.ts.map +1 -0
  62. package/dist/esm/types/storage.types.js.map +1 -0
  63. package/dist/esm/utils/config.utils.d.ts +45 -0
  64. package/dist/esm/utils/config.utils.d.ts.map +1 -0
  65. package/dist/esm/utils/config.utils.js.map +1 -0
  66. package/dist/esm/utils/file.utils.d.ts +142 -0
  67. package/dist/esm/utils/file.utils.d.ts.map +1 -0
  68. package/dist/esm/utils/file.utils.js.map +1 -0
  69. package/package.json +13 -10
  70. package/dist/drivers/azure.driver.d.ts.map +0 -1
  71. package/dist/drivers/azure.driver.js.map +0 -1
  72. package/dist/drivers/base.driver.d.ts.map +0 -1
  73. package/dist/drivers/base.driver.js.map +0 -1
  74. package/dist/drivers/gcs.driver.d.ts.map +0 -1
  75. package/dist/drivers/gcs.driver.js.map +0 -1
  76. package/dist/drivers/local.driver.d.ts.map +0 -1
  77. package/dist/drivers/local.driver.js.map +0 -1
  78. package/dist/drivers/s3.driver.d.ts.map +0 -1
  79. package/dist/drivers/s3.driver.js.map +0 -1
  80. package/dist/factory/driver.factory.d.ts.map +0 -1
  81. package/dist/factory/driver.factory.js.map +0 -1
  82. package/dist/index.d.ts.map +0 -1
  83. package/dist/index.js.map +0 -1
  84. package/dist/storage-manager.d.ts.map +0 -1
  85. package/dist/storage-manager.js.map +0 -1
  86. package/dist/types/storage.types.d.ts.map +0 -1
  87. package/dist/types/storage.types.js.map +0 -1
  88. package/dist/utils/config.utils.d.ts.map +0 -1
  89. package/dist/utils/config.utils.js.map +0 -1
  90. package/dist/utils/file.utils.d.ts.map +0 -1
  91. package/dist/utils/file.utils.js.map +0 -1
  92. /package/dist/{drivers → cjs/drivers}/azure.driver.d.ts +0 -0
  93. /package/dist/{drivers → cjs/drivers}/base.driver.d.ts +0 -0
  94. /package/dist/{drivers → cjs/drivers}/gcs.driver.d.ts +0 -0
  95. /package/dist/{drivers → cjs/drivers}/local.driver.d.ts +0 -0
  96. /package/dist/{drivers → cjs/drivers}/s3.driver.d.ts +0 -0
  97. /package/dist/{factory → cjs/factory}/driver.factory.d.ts +0 -0
  98. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  99. /package/dist/{storage-manager.d.ts → cjs/storage-manager.d.ts} +0 -0
  100. /package/dist/{types → cjs/types}/storage.types.d.ts +0 -0
  101. /package/dist/{utils → cjs/utils}/config.utils.d.ts +0 -0
  102. /package/dist/{utils → cjs/utils}/file.utils.d.ts +0 -0
  103. /package/dist/{drivers → esm/drivers}/azure.driver.js +0 -0
  104. /package/dist/{drivers → esm/drivers}/base.driver.js +0 -0
  105. /package/dist/{drivers → esm/drivers}/gcs.driver.js +0 -0
  106. /package/dist/{drivers → esm/drivers}/local.driver.js +0 -0
  107. /package/dist/{drivers → esm/drivers}/s3.driver.js +0 -0
  108. /package/dist/{factory → esm/factory}/driver.factory.js +0 -0
  109. /package/dist/{index.js → esm/index.js} +0 -0
  110. /package/dist/{storage-manager.js → esm/storage-manager.js} +0 -0
  111. /package/dist/{types → esm/types}/storage.types.js +0 -0
  112. /package/dist/{utils → esm/utils}/config.utils.js +0 -0
  113. /package/dist/{utils → esm/utils}/file.utils.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-manager.js","sourceRoot":"","sources":["../../src/storage-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.types.d.ts","sourceRoot":"","sources":["../../../src/types/storage.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=storage.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.types.js","sourceRoot":"","sources":["../../../src/types/storage.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.utils.d.ts","sourceRoot":"","sources":["../../../src/utils/config.utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAI/F;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC;AA2BD;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,iBAAiB,CAsBzD;AAuBD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,iBAAiB,GAAG,aAAa,CAuBtF;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,gBAAgB,CA2E7E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,gBAAgB,CAAA;CAAE,CAM/F;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD"}
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.initializeDotenv = initializeDotenv;
7
+ exports.loadEnvironmentConfig = loadEnvironmentConfig;
8
+ exports.environmentToStorageConfig = environmentToStorageConfig;
9
+ exports.validateStorageConfig = validateStorageConfig;
10
+ exports.loadAndValidateConfig = loadAndValidateConfig;
11
+ exports.resetDotenvInitialization = resetDotenvInitialization;
12
+ const dotenv_1 = __importDefault(require("dotenv"));
13
+ let dotenvInitialized = false;
14
+ /**
15
+ * Loads your .env file if it hasn't been loaded already.
16
+ * Safe to call multiple times — it only runs once.
17
+ */
18
+ function initializeDotenv() {
19
+ if (!dotenvInitialized) {
20
+ dotenv_1.default.config();
21
+ dotenvInitialized = true;
22
+ }
23
+ }
24
+ const ENV_KEYS = {
25
+ FILE_DRIVER: 'FILE_DRIVER',
26
+ BUCKET_NAME: 'BUCKET_NAME',
27
+ BUCKET_PATH: 'BUCKET_PATH',
28
+ LOCAL_PATH: 'LOCAL_PATH',
29
+ PRESIGNED_URL_EXPIRY: 'PRESIGNED_URL_EXPIRY',
30
+ MAX_FILE_SIZE: 'MAX_FILE_SIZE',
31
+ AWS_REGION: 'AWS_REGION',
32
+ AWS_ACCESS_KEY: 'AWS_ACCESS_KEY',
33
+ AWS_SECRET_KEY: 'AWS_SECRET_KEY',
34
+ GCS_PROJECT_ID: 'GCS_PROJECT_ID',
35
+ GCS_CREDENTIALS: 'GCS_CREDENTIALS',
36
+ AZURE_CONNECTION_STRING: 'AZURE_CONNECTION_STRING',
37
+ AZURE_ACCOUNT_NAME: 'AZURE_ACCOUNT_NAME',
38
+ AZURE_ACCOUNT_KEY: 'AZURE_ACCOUNT_KEY',
39
+ };
40
+ const DEFAULT_CONFIG = {
41
+ presignedUrlExpiry: 600,
42
+ localPath: 'public/express-storage',
43
+ };
44
+ /**
45
+ * Reads storage configuration from environment variables.
46
+ * Automatically loads .env on first call.
47
+ */
48
+ function loadEnvironmentConfig() {
49
+ initializeDotenv();
50
+ return {
51
+ FILE_DRIVER: process.env[ENV_KEYS.FILE_DRIVER] || '',
52
+ BUCKET_NAME: process.env[ENV_KEYS.BUCKET_NAME] || undefined,
53
+ BUCKET_PATH: process.env[ENV_KEYS.BUCKET_PATH] || undefined,
54
+ LOCAL_PATH: process.env[ENV_KEYS.LOCAL_PATH] || undefined,
55
+ PRESIGNED_URL_EXPIRY: process.env[ENV_KEYS.PRESIGNED_URL_EXPIRY] || undefined,
56
+ MAX_FILE_SIZE: process.env[ENV_KEYS.MAX_FILE_SIZE] || undefined,
57
+ AWS_REGION: process.env[ENV_KEYS.AWS_REGION] || undefined,
58
+ AWS_ACCESS_KEY: process.env[ENV_KEYS.AWS_ACCESS_KEY] || undefined,
59
+ AWS_SECRET_KEY: process.env[ENV_KEYS.AWS_SECRET_KEY] || undefined,
60
+ GCS_PROJECT_ID: process.env[ENV_KEYS.GCS_PROJECT_ID] || undefined,
61
+ GCS_CREDENTIALS: process.env[ENV_KEYS.GCS_CREDENTIALS] || undefined,
62
+ AZURE_CONNECTION_STRING: process.env[ENV_KEYS.AZURE_CONNECTION_STRING] || undefined,
63
+ AZURE_ACCOUNT_NAME: process.env[ENV_KEYS.AZURE_ACCOUNT_NAME] || undefined,
64
+ AZURE_ACCOUNT_KEY: process.env[ENV_KEYS.AZURE_ACCOUNT_KEY] || undefined,
65
+ };
66
+ }
67
+ /**
68
+ * Safely parses a string to an integer, returning a default for invalid values.
69
+ *
70
+ * Unlike parseInt(), this function rejects strings with trailing non-numeric characters.
71
+ * For example, "100abc" returns the default value, not 100.
72
+ */
73
+ function parseIntSafe(value, defaultValue) {
74
+ if (!value)
75
+ return defaultValue;
76
+ // Trim whitespace and check if the entire string is a valid integer
77
+ const trimmed = value.trim();
78
+ // Check if the string matches a valid integer pattern (optional sign followed by digits)
79
+ if (!/^-?\d+$/.test(trimmed)) {
80
+ return defaultValue;
81
+ }
82
+ const parsed = parseInt(trimmed, 10);
83
+ return Number.isNaN(parsed) ? defaultValue : parsed;
84
+ }
85
+ /**
86
+ * Converts environment variables into a StorageConfig object.
87
+ */
88
+ function environmentToStorageConfig(envConfig) {
89
+ const config = {
90
+ driver: envConfig.FILE_DRIVER,
91
+ bucketName: envConfig.BUCKET_NAME,
92
+ bucketPath: envConfig.BUCKET_PATH || '',
93
+ localPath: envConfig.LOCAL_PATH || DEFAULT_CONFIG.localPath,
94
+ presignedUrlExpiry: parseIntSafe(envConfig.PRESIGNED_URL_EXPIRY, DEFAULT_CONFIG.presignedUrlExpiry),
95
+ maxFileSize: parseIntSafe(envConfig.MAX_FILE_SIZE, undefined),
96
+ awsRegion: envConfig.AWS_REGION,
97
+ awsAccessKey: envConfig.AWS_ACCESS_KEY,
98
+ awsSecretKey: envConfig.AWS_SECRET_KEY,
99
+ gcsProjectId: envConfig.GCS_PROJECT_ID,
100
+ gcsCredentials: envConfig.GCS_CREDENTIALS,
101
+ azureConnectionString: envConfig.AZURE_CONNECTION_STRING,
102
+ azureAccountName: envConfig.AZURE_ACCOUNT_NAME,
103
+ azureAccountKey: envConfig.AZURE_ACCOUNT_KEY,
104
+ azureContainerName: envConfig.BUCKET_NAME, // Use BUCKET_NAME for Azure container
105
+ };
106
+ return config;
107
+ }
108
+ /**
109
+ * Validates a storage configuration.
110
+ *
111
+ * Checks that:
112
+ * - A valid driver is specified
113
+ * - Required credentials are present for the chosen driver
114
+ * - Numeric values are within acceptable ranges
115
+ *
116
+ * Returns an object with isValid and an array of error messages.
117
+ */
118
+ function validateStorageConfig(config) {
119
+ const errors = [];
120
+ // Check driver
121
+ if (!config.driver) {
122
+ errors.push('FILE_DRIVER is required');
123
+ }
124
+ else if (!['s3', 's3-presigned', 'gcs', 'gcs-presigned', 'azure', 'azure-presigned', 'local'].includes(config.driver)) {
125
+ errors.push(`Invalid FILE_DRIVER: ${config.driver}. Must be one of: s3, s3-presigned, gcs, gcs-presigned, azure, azure-presigned, local`);
126
+ }
127
+ // S3 requirements
128
+ if (config.driver?.includes('s3')) {
129
+ if (!config.bucketName)
130
+ errors.push('BUCKET_NAME is required for S3');
131
+ if (!config.awsRegion)
132
+ errors.push('AWS_REGION is required for S3');
133
+ // Access keys are optional — IAM roles work when running on AWS
134
+ }
135
+ // GCS requirements
136
+ if (config.driver?.includes('gcs')) {
137
+ if (!config.bucketName)
138
+ errors.push('BUCKET_NAME is required for GCS');
139
+ if (!config.gcsProjectId)
140
+ errors.push('GCS_PROJECT_ID is required for GCS');
141
+ // Credentials are optional — ADC works when running on GCP
142
+ }
143
+ // Azure requirements
144
+ if (config.driver?.includes('azure')) {
145
+ const hasConnectionString = !!config.azureConnectionString;
146
+ const hasAccountKey = config.azureAccountName && config.azureAccountKey;
147
+ const hasManagedIdentity = config.azureAccountName && !config.azureAccountKey;
148
+ if (config.driver === 'azure-presigned') {
149
+ // Presigned mode needs account key for SAS URL generation
150
+ if (!hasConnectionString && !hasAccountKey) {
151
+ errors.push('Azure presigned driver requires either AZURE_CONNECTION_STRING or both AZURE_ACCOUNT_NAME and AZURE_ACCOUNT_KEY (Managed Identity cannot generate SAS URLs)');
152
+ }
153
+ }
154
+ else {
155
+ // Direct mode supports any authentication method
156
+ if (!hasConnectionString && !hasAccountKey && !hasManagedIdentity) {
157
+ errors.push('Azure requires AZURE_CONNECTION_STRING, AZURE_ACCOUNT_NAME + AZURE_ACCOUNT_KEY, or AZURE_ACCOUNT_NAME only (for Managed Identity)');
158
+ }
159
+ }
160
+ if (!config.azureContainerName) {
161
+ errors.push('BUCKET_NAME is required for Azure');
162
+ }
163
+ }
164
+ // Validate URL expiry time
165
+ if (config.presignedUrlExpiry !== undefined) {
166
+ if (Number.isNaN(config.presignedUrlExpiry) || config.presignedUrlExpiry <= 0) {
167
+ errors.push('PRESIGNED_URL_EXPIRY must be a positive number greater than 0');
168
+ }
169
+ // Max 7 days — that's the cloud provider limit
170
+ const MAX_EXPIRY = 604800;
171
+ if (!Number.isNaN(config.presignedUrlExpiry) && config.presignedUrlExpiry > MAX_EXPIRY) {
172
+ errors.push(`PRESIGNED_URL_EXPIRY cannot exceed ${MAX_EXPIRY} seconds (7 days). Cloud providers enforce this limit.`);
173
+ }
174
+ }
175
+ // Validate max file size
176
+ if (config.maxFileSize !== undefined) {
177
+ if (Number.isNaN(config.maxFileSize) || config.maxFileSize <= 0) {
178
+ errors.push('MAX_FILE_SIZE must be a positive number greater than 0');
179
+ }
180
+ // Max 5TB — reasonable limit for single uploads
181
+ const MAX_FILE_SIZE_LIMIT = 5 * 1024 * 1024 * 1024 * 1024;
182
+ if (!Number.isNaN(config.maxFileSize) && config.maxFileSize > MAX_FILE_SIZE_LIMIT) {
183
+ errors.push(`MAX_FILE_SIZE cannot exceed ${MAX_FILE_SIZE_LIMIT} bytes (5TB). Consider using multipart uploads for larger files.`);
184
+ }
185
+ }
186
+ return {
187
+ isValid: errors.length === 0,
188
+ errors,
189
+ };
190
+ }
191
+ /**
192
+ * Convenience function that loads and validates config in one call.
193
+ * Returns both the config and validation result.
194
+ */
195
+ function loadAndValidateConfig() {
196
+ const envConfig = loadEnvironmentConfig();
197
+ const config = environmentToStorageConfig(envConfig);
198
+ const validation = validateStorageConfig(config);
199
+ return { config, validation };
200
+ }
201
+ /**
202
+ * Resets the dotenv initialization flag.
203
+ *
204
+ * This is primarily useful for testing scenarios where you need to
205
+ * reinitialize dotenv with different environment variables.
206
+ *
207
+ * WARNING: This does not clear previously loaded environment variables.
208
+ * It only allows initializeDotenv() to run again.
209
+ */
210
+ function resetDotenvInitialization() {
211
+ dotenvInitialized = false;
212
+ }
213
+ //# sourceMappingURL=config.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.utils.js","sourceRoot":"","sources":["../../../src/utils/config.utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.utils.d.ts","sourceRoot":"","sources":["../../../src/utils/file.utils.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAsBnE;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAuBhE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM7D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAI3D;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAwBpD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAE3E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAElF;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CASzD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAWxD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,CAAC,CAAC,CA2BZ;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAC7C,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EACjD,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC,CAyCd"}
@@ -0,0 +1,297 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generateUniqueFileName = generateUniqueFileName;
7
+ exports.sanitizeFileName = sanitizeFileName;
8
+ exports.validateFileName = validateFileName;
9
+ exports.createMonthBasedPath = createMonthBasedPath;
10
+ exports.ensureDirectoryExists = ensureDirectoryExists;
11
+ exports.formatFileSize = formatFileSize;
12
+ exports.validateFileSize = validateFileSize;
13
+ exports.validateFileType = validateFileType;
14
+ exports.getFileExtension = getFileExtension;
15
+ exports.isImageFile = isImageFile;
16
+ exports.isDocumentFile = isDocumentFile;
17
+ exports.withRetry = withRetry;
18
+ exports.sleep = sleep;
19
+ exports.withConcurrencyLimit = withConcurrencyLimit;
20
+ const path_1 = __importDefault(require("path"));
21
+ const fs_1 = __importDefault(require("fs"));
22
+ const crypto_1 = __importDefault(require("crypto"));
23
+ /**
24
+ * Creates a unique filename that won't collide with existing files.
25
+ *
26
+ * Format: {timestamp}_{random}_{sanitized_name}.{extension}
27
+ * Example: 1769104576000_a1b2c3d4e5_my_image.jpeg
28
+ *
29
+ * The random part uses crypto.randomBytes() for extra collision resistance
30
+ * in high-throughput scenarios.
31
+ */
32
+ function generateUniqueFileName(originalName) {
33
+ const timestamp = Date.now();
34
+ const randomSuffix = crypto_1.default.randomBytes(6).toString('hex').substring(0, 10);
35
+ // Handle dotfiles like .gitignore or .env (they have no extension)
36
+ let extension;
37
+ let baseName;
38
+ if (originalName.startsWith('.') && !originalName.slice(1).includes('.')) {
39
+ extension = '';
40
+ baseName = sanitizeFileName(originalName);
41
+ }
42
+ else {
43
+ extension = path_1.default.extname(originalName).toLowerCase();
44
+ const sanitizedName = sanitizeFileName(originalName);
45
+ baseName = path_1.default.basename(sanitizedName, path_1.default.extname(sanitizedName));
46
+ }
47
+ if (!baseName || baseName.trim() === '') {
48
+ baseName = 'file';
49
+ }
50
+ return `${timestamp}_${randomSuffix}_${baseName}${extension}`;
51
+ }
52
+ /**
53
+ * Makes a filename safe for storage by removing problematic characters.
54
+ *
55
+ * Replaces anything that isn't alphanumeric, a dot, or a hyphen with underscores.
56
+ * This ensures compatibility with all filesystems and cloud storage providers.
57
+ *
58
+ * Note: Unicode characters like Chinese or emojis become underscores.
59
+ * If you need to preserve these, consider using your own sanitization function.
60
+ */
61
+ function sanitizeFileName(fileName) {
62
+ const sanitized = fileName
63
+ .normalize('NFC')
64
+ .replace(/[^a-zA-Z0-9.-]/g, '_')
65
+ .replace(/_{2,}/g, '_')
66
+ .replace(/^_+|_+$/g, '');
67
+ return sanitized || 'file';
68
+ }
69
+ /**
70
+ * Checks if a filename is safe to use.
71
+ *
72
+ * Rejects:
73
+ * - Empty filenames
74
+ * - Filenames over 255 characters
75
+ * - Path traversal attempts (../, /, \)
76
+ * - Null bytes
77
+ *
78
+ * Returns an error message if invalid, null if OK.
79
+ */
80
+ function validateFileName(fileName) {
81
+ if (!fileName || typeof fileName !== 'string') {
82
+ return 'Filename is required';
83
+ }
84
+ const trimmed = fileName.trim();
85
+ if (trimmed.length === 0) {
86
+ return 'Filename cannot be empty';
87
+ }
88
+ if (trimmed.length > 255) {
89
+ return 'Filename is too long (max 255 characters)';
90
+ }
91
+ if (trimmed.includes('..') || trimmed.includes('/') || trimmed.includes('\\')) {
92
+ return 'Filename cannot contain path separators or traversal sequences';
93
+ }
94
+ if (trimmed.includes('\0')) {
95
+ return 'Filename cannot contain null bytes';
96
+ }
97
+ return null;
98
+ }
99
+ /**
100
+ * Creates a date-based folder path: YYYY/MM
101
+ *
102
+ * Uses UTC to keep things consistent across timezones.
103
+ * Example: For January 2026 -> 'uploads/2026/01'
104
+ */
105
+ function createMonthBasedPath(basePath) {
106
+ const now = new Date();
107
+ const year = now.getUTCFullYear();
108
+ const month = String(now.getUTCMonth() + 1).padStart(2, '0');
109
+ return path_1.default.join(basePath, year.toString(), month);
110
+ }
111
+ /**
112
+ * Creates a directory if it doesn't exist.
113
+ * Also creates any parent directories needed (recursive).
114
+ */
115
+ function ensureDirectoryExists(dirPath) {
116
+ if (!fs_1.default.existsSync(dirPath)) {
117
+ fs_1.default.mkdirSync(dirPath, { recursive: true });
118
+ }
119
+ }
120
+ /**
121
+ * Converts bytes to a human-readable string.
122
+ *
123
+ * Examples:
124
+ * - 1024 -> "1 KB"
125
+ * - 1048576 -> "1 MB"
126
+ * - 0 -> "0 Bytes"
127
+ */
128
+ function formatFileSize(bytes) {
129
+ const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
130
+ if (typeof bytes !== 'number' || Number.isNaN(bytes)) {
131
+ return 'Invalid size';
132
+ }
133
+ if (!Number.isFinite(bytes)) {
134
+ return bytes > 0 ? 'Infinite' : 'Invalid size';
135
+ }
136
+ if (bytes < 0) {
137
+ return 'Invalid size (negative)';
138
+ }
139
+ if (bytes === 0) {
140
+ return '0 Bytes';
141
+ }
142
+ let i = 0;
143
+ let size = bytes;
144
+ while (size >= 1024 && i < sizes.length - 1) {
145
+ size /= 1024;
146
+ i++;
147
+ }
148
+ return Math.round(size * 100) / 100 + ' ' + sizes[i];
149
+ }
150
+ /**
151
+ * Checks if a file size is within the allowed limit.
152
+ */
153
+ function validateFileSize(fileSize, maxSize) {
154
+ return fileSize <= maxSize;
155
+ }
156
+ /**
157
+ * Checks if a MIME type is in the allowed list.
158
+ */
159
+ function validateFileType(mimeType, allowedTypes) {
160
+ return allowedTypes.includes(mimeType);
161
+ }
162
+ /**
163
+ * Extracts the file extension (lowercase, includes the dot).
164
+ *
165
+ * Examples:
166
+ * - 'photo.jpg' -> '.jpg'
167
+ * - '.gitignore' -> '' (dotfiles have no extension)
168
+ * - 'archive.tar.gz' -> '.gz' (only the last extension)
169
+ */
170
+ function getFileExtension(fileName) {
171
+ if (!fileName)
172
+ return '';
173
+ // Dotfiles like .gitignore don't have extensions
174
+ if (fileName.startsWith('.') && !fileName.slice(1).includes('.')) {
175
+ return '';
176
+ }
177
+ return path_1.default.extname(fileName).toLowerCase();
178
+ }
179
+ /**
180
+ * Checks if a MIME type indicates an image.
181
+ */
182
+ function isImageFile(mimeType) {
183
+ return mimeType.startsWith('image/');
184
+ }
185
+ /**
186
+ * Checks if a MIME type indicates a document (PDF, Word, Excel, etc.).
187
+ */
188
+ function isDocumentFile(mimeType) {
189
+ const documentTypes = [
190
+ 'application/pdf',
191
+ 'application/msword',
192
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
193
+ 'application/vnd.ms-excel',
194
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
195
+ 'text/plain',
196
+ 'text/csv'
197
+ ];
198
+ return documentTypes.includes(mimeType);
199
+ }
200
+ /**
201
+ * Retries an async operation with exponential backoff.
202
+ *
203
+ * Great for cloud operations that might fail due to network blips
204
+ * or rate limiting.
205
+ *
206
+ * @example
207
+ * // Retry up to 3 times with increasing delays
208
+ * const result = await withRetry(() => storage.uploadFile(file));
209
+ *
210
+ * // More aggressive retry strategy
211
+ * const result = await withRetry(() => fetchData(), {
212
+ * maxAttempts: 5,
213
+ * baseDelay: 500
214
+ * });
215
+ */
216
+ async function withRetry(operation, options = {}) {
217
+ const { maxAttempts = 3, baseDelay = 1000, maxDelay = 10000, exponentialBackoff = true, } = options;
218
+ let lastError;
219
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
220
+ try {
221
+ return await operation();
222
+ }
223
+ catch (error) {
224
+ lastError = error instanceof Error ? error : new Error(String(error));
225
+ if (attempt < maxAttempts) {
226
+ const delay = exponentialBackoff
227
+ ? Math.min(baseDelay * Math.pow(2, attempt - 1), maxDelay)
228
+ : baseDelay;
229
+ await sleep(delay);
230
+ }
231
+ }
232
+ }
233
+ throw lastError || new Error(`Operation failed after ${maxAttempts} attempts`);
234
+ }
235
+ /**
236
+ * Pauses execution for the specified number of milliseconds.
237
+ */
238
+ function sleep(ms) {
239
+ return new Promise(resolve => globalThis.setTimeout(resolve, ms));
240
+ }
241
+ /**
242
+ * Processes an array with a concurrency limit.
243
+ *
244
+ * Prevents overwhelming APIs or running out of resources by limiting
245
+ * how many operations run at once.
246
+ *
247
+ * Implementation uses pre-assigned chunk-based processing to avoid any
248
+ * potential race conditions with shared index counters. Each worker gets
249
+ * its own set of indices to process.
250
+ *
251
+ * Note: The input array is snapshotted at the start to prevent issues
252
+ * if the caller modifies it during processing.
253
+ *
254
+ * @example
255
+ * // Upload 100 files, but only 10 at a time
256
+ * const results = await withConcurrencyLimit(
257
+ * files,
258
+ * (file) => uploadFile(file),
259
+ * { maxConcurrent: 10 }
260
+ * );
261
+ */
262
+ async function withConcurrencyLimit(items, operation, options = {}) {
263
+ const { maxConcurrent = 10 } = options;
264
+ if (items.length === 0) {
265
+ return [];
266
+ }
267
+ // Snapshot the array to prevent issues if caller modifies it during processing
268
+ const itemsCopy = [...items];
269
+ const itemCount = itemsCopy.length;
270
+ // For small batches, just process everything at once
271
+ if (itemCount <= maxConcurrent) {
272
+ return Promise.all(itemsCopy.map((item, index) => operation(item, index)));
273
+ }
274
+ const results = new Array(itemCount);
275
+ const workerCount = Math.min(maxConcurrent, itemCount);
276
+ // Pre-assign indices to each worker to avoid any race conditions
277
+ // Each worker gets a dedicated set of indices: worker 0 gets [0, workerCount, 2*workerCount, ...],
278
+ // worker 1 gets [1, workerCount+1, 2*workerCount+1, ...], etc.
279
+ const createWorker = (workerId) => {
280
+ return (async () => {
281
+ for (let index = workerId; index < itemCount; index += workerCount) {
282
+ const item = itemsCopy[index];
283
+ if (item !== undefined) {
284
+ results[index] = await operation(item, index);
285
+ }
286
+ }
287
+ })();
288
+ };
289
+ // Start all workers with their pre-assigned index ranges
290
+ const workers = [];
291
+ for (let i = 0; i < workerCount; i++) {
292
+ workers.push(createWorker(i));
293
+ }
294
+ await Promise.all(workers);
295
+ return results;
296
+ }
297
+ //# sourceMappingURL=file.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.utils.js","sourceRoot":"","sources":["../../../src/utils/file.utils.ts"],"names":[],"mappings":"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"}