express-storage 2.0.3 → 3.0.0

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 (125) hide show
  1. package/README.md +366 -34
  2. package/dist/cjs/config/index.d.ts +10 -0
  3. package/dist/cjs/config/index.d.ts.map +1 -0
  4. package/dist/cjs/config/index.js +19 -0
  5. package/dist/cjs/config/index.js.map +1 -0
  6. package/dist/cjs/drivers/azure.driver.d.ts +27 -42
  7. package/dist/cjs/drivers/azure.driver.d.ts.map +1 -1
  8. package/dist/cjs/drivers/azure.driver.js +206 -212
  9. package/dist/cjs/drivers/azure.driver.js.map +1 -1
  10. package/dist/cjs/drivers/base.driver.d.ts +69 -103
  11. package/dist/cjs/drivers/base.driver.d.ts.map +1 -1
  12. package/dist/cjs/drivers/base.driver.js +170 -167
  13. package/dist/cjs/drivers/base.driver.js.map +1 -1
  14. package/dist/cjs/drivers/gcs.driver.d.ts +20 -38
  15. package/dist/cjs/drivers/gcs.driver.d.ts.map +1 -1
  16. package/dist/cjs/drivers/gcs.driver.js +160 -176
  17. package/dist/cjs/drivers/gcs.driver.js.map +1 -1
  18. package/dist/cjs/drivers/index.d.ts +15 -0
  19. package/dist/cjs/drivers/index.d.ts.map +1 -0
  20. package/dist/cjs/drivers/index.js +26 -0
  21. package/dist/cjs/drivers/index.js.map +1 -0
  22. package/dist/cjs/drivers/local.driver.d.ts +24 -45
  23. package/dist/cjs/drivers/local.driver.d.ts.map +1 -1
  24. package/dist/cjs/drivers/local.driver.js +266 -338
  25. package/dist/cjs/drivers/local.driver.js.map +1 -1
  26. package/dist/cjs/drivers/s3.driver.d.ts +19 -39
  27. package/dist/cjs/drivers/s3.driver.d.ts.map +1 -1
  28. package/dist/cjs/drivers/s3.driver.js +205 -197
  29. package/dist/cjs/drivers/s3.driver.js.map +1 -1
  30. package/dist/cjs/factory/driver.factory.d.ts +32 -51
  31. package/dist/cjs/factory/driver.factory.d.ts.map +1 -1
  32. package/dist/cjs/factory/driver.factory.js +75 -155
  33. package/dist/cjs/factory/driver.factory.js.map +1 -1
  34. package/dist/cjs/index.d.ts +11 -15
  35. package/dist/cjs/index.d.ts.map +1 -1
  36. package/dist/cjs/index.js +14 -47
  37. package/dist/cjs/index.js.map +1 -1
  38. package/dist/cjs/storage-manager.d.ts +107 -125
  39. package/dist/cjs/storage-manager.d.ts.map +1 -1
  40. package/dist/cjs/storage-manager.js +346 -416
  41. package/dist/cjs/storage-manager.js.map +1 -1
  42. package/dist/cjs/types/storage.types.d.ts +250 -107
  43. package/dist/cjs/types/storage.types.d.ts.map +1 -1
  44. package/dist/cjs/utils/file.utils.d.ts +62 -8
  45. package/dist/cjs/utils/file.utils.d.ts.map +1 -1
  46. package/dist/cjs/utils/file.utils.js +196 -29
  47. package/dist/cjs/utils/file.utils.js.map +1 -1
  48. package/dist/cjs/utils/index.d.ts +12 -0
  49. package/dist/cjs/utils/index.d.ts.map +1 -0
  50. package/dist/cjs/utils/index.js +36 -0
  51. package/dist/cjs/utils/index.js.map +1 -0
  52. package/dist/cjs/utils/rate-limiter.d.ts +40 -0
  53. package/dist/cjs/utils/rate-limiter.d.ts.map +1 -0
  54. package/dist/cjs/utils/rate-limiter.js +87 -0
  55. package/dist/cjs/utils/rate-limiter.js.map +1 -0
  56. package/dist/esm/config/index.d.ts +10 -0
  57. package/dist/esm/config/index.d.ts.map +1 -0
  58. package/dist/esm/config/index.js +10 -0
  59. package/dist/esm/config/index.js.map +1 -0
  60. package/dist/esm/drivers/azure.driver.d.ts +27 -42
  61. package/dist/esm/drivers/azure.driver.d.ts.map +1 -1
  62. package/dist/esm/drivers/azure.driver.js +172 -210
  63. package/dist/esm/drivers/azure.driver.js.map +1 -1
  64. package/dist/esm/drivers/base.driver.d.ts +69 -103
  65. package/dist/esm/drivers/base.driver.d.ts.map +1 -1
  66. package/dist/esm/drivers/base.driver.js +171 -168
  67. package/dist/esm/drivers/base.driver.js.map +1 -1
  68. package/dist/esm/drivers/gcs.driver.d.ts +20 -38
  69. package/dist/esm/drivers/gcs.driver.d.ts.map +1 -1
  70. package/dist/esm/drivers/gcs.driver.js +126 -174
  71. package/dist/esm/drivers/gcs.driver.js.map +1 -1
  72. package/dist/esm/drivers/index.d.ts +15 -0
  73. package/dist/esm/drivers/index.d.ts.map +1 -0
  74. package/dist/esm/drivers/index.js +15 -0
  75. package/dist/esm/drivers/index.js.map +1 -0
  76. package/dist/esm/drivers/local.driver.d.ts +24 -45
  77. package/dist/esm/drivers/local.driver.d.ts.map +1 -1
  78. package/dist/esm/drivers/local.driver.js +266 -338
  79. package/dist/esm/drivers/local.driver.js.map +1 -1
  80. package/dist/esm/drivers/s3.driver.d.ts +19 -39
  81. package/dist/esm/drivers/s3.driver.d.ts.map +1 -1
  82. package/dist/esm/drivers/s3.driver.js +171 -195
  83. package/dist/esm/drivers/s3.driver.js.map +1 -1
  84. package/dist/esm/factory/driver.factory.d.ts +32 -51
  85. package/dist/esm/factory/driver.factory.d.ts.map +1 -1
  86. package/dist/esm/factory/driver.factory.js +73 -158
  87. package/dist/esm/factory/driver.factory.js.map +1 -1
  88. package/dist/esm/index.d.ts +11 -15
  89. package/dist/esm/index.d.ts.map +1 -1
  90. package/dist/esm/index.js +12 -19
  91. package/dist/esm/index.js.map +1 -1
  92. package/dist/esm/storage-manager.d.ts +107 -125
  93. package/dist/esm/storage-manager.d.ts.map +1 -1
  94. package/dist/esm/storage-manager.js +348 -418
  95. package/dist/esm/storage-manager.js.map +1 -1
  96. package/dist/esm/types/storage.types.d.ts +250 -107
  97. package/dist/esm/types/storage.types.d.ts.map +1 -1
  98. package/dist/esm/utils/file.utils.d.ts +62 -8
  99. package/dist/esm/utils/file.utils.d.ts.map +1 -1
  100. package/dist/esm/utils/file.utils.js +190 -29
  101. package/dist/esm/utils/file.utils.js.map +1 -1
  102. package/dist/esm/utils/index.d.ts +12 -0
  103. package/dist/esm/utils/index.d.ts.map +1 -0
  104. package/dist/esm/utils/index.js +11 -0
  105. package/dist/esm/utils/index.js.map +1 -0
  106. package/dist/esm/utils/rate-limiter.d.ts +40 -0
  107. package/dist/esm/utils/rate-limiter.d.ts.map +1 -0
  108. package/dist/esm/utils/rate-limiter.js +82 -0
  109. package/dist/esm/utils/rate-limiter.js.map +1 -0
  110. package/package.json +83 -48
  111. package/src/config/index.ts +17 -0
  112. package/src/drivers/azure.driver.ts +434 -0
  113. package/src/drivers/base.driver.ts +436 -0
  114. package/src/drivers/gcs.driver.ts +366 -0
  115. package/src/drivers/index.ts +15 -0
  116. package/src/drivers/local.driver.ts +626 -0
  117. package/src/drivers/s3.driver.ts +459 -0
  118. package/src/factory/driver.factory.ts +101 -0
  119. package/src/index.ts +72 -0
  120. package/src/storage-manager.ts +801 -0
  121. package/src/types/storage.types.ts +561 -0
  122. package/src/utils/config.utils.ts +229 -0
  123. package/src/utils/file.utils.ts +536 -0
  124. package/src/utils/index.ts +35 -0
  125. package/src/utils/rate-limiter.ts +94 -0
@@ -1,62 +1,43 @@
1
1
  import { StorageConfig, IStorageDriver } from '../types/storage.types.js';
2
2
  /**
3
- * StorageDriverFactory - Creates and caches storage driver instances.
3
+ * Creates a driver instance for the given configuration (no caching).
4
4
  *
5
- * Drivers are cached to avoid recreating connections for the same configuration.
6
- * The cache is limited to 100 drivers to prevent memory issues in long-running apps.
5
+ * Presigned variants (e.g., 's3-presigned') map to the same driver class
6
+ * as their direct counterparts the base class detects presigned mode
7
+ * from the driver string and adjusts upload() behavior accordingly.
8
+ */
9
+ export declare function createDriver(config: StorageConfig): IStorageDriver;
10
+ /**
11
+ * Returns a list of all supported driver type strings.
12
+ */
13
+ export declare function getAvailableDrivers(): string[];
14
+ /**
15
+ * StorageDriverFactory - Simple driver cache for reusing SDK client connections.
16
+ *
17
+ * Each instance maintains its own private Map of driver instances keyed by
18
+ * a SHA-256 hash of the config. Use this when you want multiple components
19
+ * to share the same driver instance for a given configuration.
20
+ *
21
+ * StorageManager does NOT use this — each manager creates its own driver
22
+ * via `createDriver()`, ensuring full isolation. The factory exists for
23
+ * advanced use cases like multi-tenant driver pools.
7
24
  *
8
- * When the cache is full, the least recently used driver gets evicted.
25
+ * @example
26
+ * const factory = new StorageDriverFactory();
27
+ * const driver1 = factory.getOrCreate(config); // creates new
28
+ * const driver2 = factory.getOrCreate(config); // returns cached
9
29
  */
10
30
  export declare class StorageDriverFactory {
11
- private static drivers;
12
- /**
13
- * Gets or creates a driver for the given configuration.
14
- *
15
- * If a driver for this exact configuration already exists, it's reused.
16
- * Otherwise, a new driver is created and cached.
17
- */
18
- static createDriver(config: StorageConfig): IStorageDriver;
19
- /**
20
- * Removes the oldest (least recently accessed) driver from the cache.
21
- */
22
- private static evictLRU;
23
- /**
24
- * Creates a new driver instance based on the config's driver type.
25
- */
26
- private static createNewDriver;
27
- /**
28
- * Creates a fingerprint of a string for cache key comparison.
29
- * Uses triple hash approach (length + two FNV-1a hashes + checksum) for maximum collision resistance.
30
- *
31
- * The triple hash approach with length and checksum significantly reduces collision probability:
32
- * - Single 32-bit hash: ~77k items for 50% collision probability
33
- * - This approach: effectively ~128+ bits of entropy, negligible collision probability
34
- *
35
- * For credentials, we also include a prefix checksum to detect similar keys early.
36
- */
37
- private static secureHash;
38
- /**
39
- * Generates a unique cache key for a configuration.
40
- * Includes all properties that affect driver behavior.
41
- */
42
- private static getDriverKey;
43
- /**
44
- * Clears all cached drivers.
45
- * Useful in tests or when you've rotated credentials.
46
- */
47
- static clearCache(): void;
48
- /**
49
- * Returns the number of cached drivers.
50
- */
51
- static getCacheSize(): number;
52
- /**
53
- * Removes a specific driver from the cache.
54
- * Useful when credentials have changed for a specific configuration.
55
- */
56
- static removeFromCache(config: StorageConfig): boolean;
31
+ private readonly drivers;
32
+ private hashConfig;
33
+ getOrCreate(config: StorageConfig): IStorageDriver;
57
34
  /**
58
- * Returns a list of all supported driver types.
35
+ * Destroys all cached drivers and clears the cache.
36
+ * Always call this instead of letting the factory be garbage-collected,
37
+ * otherwise cloud SDK connections may leak.
59
38
  */
39
+ clearCache(): void;
40
+ getCacheSize(): number;
60
41
  static getAvailableDrivers(): string[];
61
42
  }
62
43
  //# sourceMappingURL=driver.factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"driver.factory.d.ts","sourceRoot":"","sources":["../../../src/factory/driver.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAa1E;;;;;;;GAOG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAsC;IAE5D;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc;IAuB1D;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ;IAgBvB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAqB9B;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAmCzB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAsB3B;;;OAGG;IACH,MAAM,CAAC,UAAU,IAAI,IAAI;IAIzB;;OAEG;IACH,MAAM,CAAC,YAAY,IAAI,MAAM;IAI7B;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAKtD;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,MAAM,EAAE;CAWvC"}
1
+ {"version":3,"file":"driver.factory.d.ts","sourceRoot":"","sources":["../../../src/factory/driver.factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAM1E;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,CAgBlE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAU9C;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;IAElE,OAAO,CAAC,UAAU;IAIlB,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc;IAWlD;;;;OAIG;IACH,UAAU,IAAI,IAAI;IAOlB,YAAY,IAAI,MAAM;IAItB,MAAM,CAAC,mBAAmB,IAAI,MAAM,EAAE;CAGvC"}
@@ -1,181 +1,101 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.StorageDriverFactory = void 0;
7
+ exports.createDriver = createDriver;
8
+ exports.getAvailableDrivers = getAvailableDrivers;
9
+ const crypto_1 = __importDefault(require("crypto"));
4
10
  const local_driver_js_1 = require("../drivers/local.driver.js");
5
11
  const s3_driver_js_1 = require("../drivers/s3.driver.js");
6
12
  const gcs_driver_js_1 = require("../drivers/gcs.driver.js");
7
13
  const azure_driver_js_1 = require("../drivers/azure.driver.js");
8
- const MAX_CACHED_DRIVERS = 100;
9
14
  /**
10
- * StorageDriverFactory - Creates and caches storage driver instances.
15
+ * Creates a driver instance for the given configuration (no caching).
11
16
  *
12
- * Drivers are cached to avoid recreating connections for the same configuration.
13
- * The cache is limited to 100 drivers to prevent memory issues in long-running apps.
17
+ * Presigned variants (e.g., 's3-presigned') map to the same driver class
18
+ * as their direct counterparts the base class detects presigned mode
19
+ * from the driver string and adjusts upload() behavior accordingly.
20
+ */
21
+ function createDriver(config) {
22
+ switch (config.driver) {
23
+ case 'local':
24
+ return new local_driver_js_1.LocalStorageDriver(config);
25
+ case 's3':
26
+ case 's3-presigned':
27
+ return new s3_driver_js_1.S3StorageDriver(config);
28
+ case 'gcs':
29
+ case 'gcs-presigned':
30
+ return new gcs_driver_js_1.GCSStorageDriver(config);
31
+ case 'azure':
32
+ case 'azure-presigned':
33
+ return new azure_driver_js_1.AzureStorageDriver(config);
34
+ default:
35
+ throw new Error(`Unsupported storage driver: ${config.driver}`);
36
+ }
37
+ }
38
+ /**
39
+ * Returns a list of all supported driver type strings.
40
+ */
41
+ function getAvailableDrivers() {
42
+ return [
43
+ 'local',
44
+ 's3',
45
+ 's3-presigned',
46
+ 'gcs',
47
+ 'gcs-presigned',
48
+ 'azure',
49
+ 'azure-presigned'
50
+ ];
51
+ }
52
+ /**
53
+ * StorageDriverFactory - Simple driver cache for reusing SDK client connections.
54
+ *
55
+ * Each instance maintains its own private Map of driver instances keyed by
56
+ * a SHA-256 hash of the config. Use this when you want multiple components
57
+ * to share the same driver instance for a given configuration.
14
58
  *
15
- * When the cache is full, the least recently used driver gets evicted.
59
+ * StorageManager does NOT use this each manager creates its own driver
60
+ * via `createDriver()`, ensuring full isolation. The factory exists for
61
+ * advanced use cases like multi-tenant driver pools.
62
+ *
63
+ * @example
64
+ * const factory = new StorageDriverFactory();
65
+ * const driver1 = factory.getOrCreate(config); // creates new
66
+ * const driver2 = factory.getOrCreate(config); // returns cached
16
67
  */
17
68
  class StorageDriverFactory {
18
- /**
19
- * Gets or creates a driver for the given configuration.
20
- *
21
- * If a driver for this exact configuration already exists, it's reused.
22
- * Otherwise, a new driver is created and cached.
23
- */
24
- static createDriver(config) {
25
- const driverKey = this.getDriverKey(config);
26
- const existing = this.drivers.get(driverKey);
27
- if (existing) {
28
- existing.lastAccess = Date.now();
29
- return existing.driver;
30
- }
31
- if (this.drivers.size >= MAX_CACHED_DRIVERS) {
32
- this.evictLRU();
33
- }
34
- const driver = this.createNewDriver(config);
35
- this.drivers.set(driverKey, {
36
- driver,
37
- lastAccess: Date.now(),
38
- });
39
- return driver;
40
- }
41
- /**
42
- * Removes the oldest (least recently accessed) driver from the cache.
43
- */
44
- static evictLRU() {
45
- let oldestKey = null;
46
- let oldestTime = Infinity;
47
- for (const [key, entry] of this.drivers.entries()) {
48
- if (entry.lastAccess < oldestTime) {
49
- oldestTime = entry.lastAccess;
50
- oldestKey = key;
51
- }
52
- }
53
- if (oldestKey) {
54
- this.drivers.delete(oldestKey);
55
- }
69
+ drivers = new Map();
70
+ hashConfig(config) {
71
+ return crypto_1.default.createHash('sha256').update(JSON.stringify(config)).digest('hex');
56
72
  }
57
- /**
58
- * Creates a new driver instance based on the config's driver type.
59
- */
60
- static createNewDriver(config) {
61
- switch (config.driver) {
62
- case 'local':
63
- return new local_driver_js_1.LocalStorageDriver(config);
64
- case 's3':
65
- return new s3_driver_js_1.S3StorageDriver(config);
66
- case 's3-presigned':
67
- return new s3_driver_js_1.S3PresignedStorageDriver(config);
68
- case 'gcs':
69
- return new gcs_driver_js_1.GCSStorageDriver(config);
70
- case 'gcs-presigned':
71
- return new gcs_driver_js_1.GCSPresignedStorageDriver(config);
72
- case 'azure':
73
- return new azure_driver_js_1.AzureStorageDriver(config);
74
- case 'azure-presigned':
75
- return new azure_driver_js_1.AzurePresignedStorageDriver(config);
76
- default:
77
- throw new Error(`Unsupported storage driver: ${config.driver}`);
78
- }
73
+ getOrCreate(config) {
74
+ const key = this.hashConfig(config);
75
+ const existing = this.drivers.get(key);
76
+ if (existing)
77
+ return existing;
78
+ const driver = createDriver(config);
79
+ this.drivers.set(key, driver);
80
+ return driver;
79
81
  }
80
82
  /**
81
- * Creates a fingerprint of a string for cache key comparison.
82
- * Uses triple hash approach (length + two FNV-1a hashes + checksum) for maximum collision resistance.
83
- *
84
- * The triple hash approach with length and checksum significantly reduces collision probability:
85
- * - Single 32-bit hash: ~77k items for 50% collision probability
86
- * - This approach: effectively ~128+ bits of entropy, negligible collision probability
87
- *
88
- * For credentials, we also include a prefix checksum to detect similar keys early.
83
+ * Destroys all cached drivers and clears the cache.
84
+ * Always call this instead of letting the factory be garbage-collected,
85
+ * otherwise cloud SDK connections may leak.
89
86
  */
90
- static secureHash(str) {
91
- if (!str)
92
- return '0:0:0:0';
93
- const length = str.length;
94
- // First hash with standard FNV-1a offset basis
95
- const FNV_OFFSET_BASIS_1 = 2166136261;
96
- const FNV_PRIME = 16777619;
97
- let hash1 = FNV_OFFSET_BASIS_1;
98
- for (let i = 0; i < str.length; i++) {
99
- hash1 ^= str.charCodeAt(i);
100
- hash1 = Math.imul(hash1, FNV_PRIME);
101
- }
102
- // Second hash with different seed (XOR first hash into offset basis)
103
- // This creates a completely different hash even for similar strings
104
- const FNV_OFFSET_BASIS_2 = 0x811c9dc5 ^ (hash1 >>> 0);
105
- let hash2 = FNV_OFFSET_BASIS_2;
106
- for (let i = str.length - 1; i >= 0; i--) { // Reverse direction for different bit mixing
107
- hash2 ^= str.charCodeAt(i);
108
- hash2 = Math.imul(hash2, FNV_PRIME);
87
+ clearCache() {
88
+ for (const driver of this.drivers.values()) {
89
+ driver.destroy();
109
90
  }
110
- // Third component: simple additive checksum of character codes
111
- // Provides additional collision resistance with minimal computation
112
- let checksum = 0;
113
- for (let i = 0; i < str.length; i++) {
114
- checksum = (checksum + str.charCodeAt(i) * (i + 1)) >>> 0;
115
- }
116
- // Return length:hash1:hash2:checksum format - collision requires matching all four
117
- return `${length}:${(hash1 >>> 0).toString(16)}:${(hash2 >>> 0).toString(16)}:${(checksum >>> 0).toString(16)}`;
118
- }
119
- /**
120
- * Generates a unique cache key for a configuration.
121
- * Includes all properties that affect driver behavior.
122
- */
123
- static getDriverKey(config) {
124
- const keyParts = [
125
- config.driver,
126
- config.bucketName || 'local',
127
- config.localPath || 'default',
128
- config.bucketPath || '',
129
- (config.presignedUrlExpiry || 600).toString(),
130
- (config.maxFileSize || 5368709120).toString(),
131
- config.awsRegion || '',
132
- this.secureHash(config.awsAccessKey || ''),
133
- this.secureHash(config.awsSecretKey || ''),
134
- config.gcsProjectId || '',
135
- this.secureHash(config.gcsCredentials || ''),
136
- config.azureAccountName || '',
137
- config.azureContainerName || '',
138
- this.secureHash(config.azureConnectionString || ''),
139
- this.secureHash(config.azureAccountKey || ''),
140
- ];
141
- return keyParts.join('_');
142
- }
143
- /**
144
- * Clears all cached drivers.
145
- * Useful in tests or when you've rotated credentials.
146
- */
147
- static clearCache() {
148
91
  this.drivers.clear();
149
92
  }
150
- /**
151
- * Returns the number of cached drivers.
152
- */
153
- static getCacheSize() {
93
+ getCacheSize() {
154
94
  return this.drivers.size;
155
95
  }
156
- /**
157
- * Removes a specific driver from the cache.
158
- * Useful when credentials have changed for a specific configuration.
159
- */
160
- static removeFromCache(config) {
161
- const driverKey = this.getDriverKey(config);
162
- return this.drivers.delete(driverKey);
163
- }
164
- /**
165
- * Returns a list of all supported driver types.
166
- */
167
96
  static getAvailableDrivers() {
168
- return [
169
- 'local',
170
- 's3',
171
- 's3-presigned',
172
- 'gcs',
173
- 'gcs-presigned',
174
- 'azure',
175
- 'azure-presigned'
176
- ];
97
+ return getAvailableDrivers();
177
98
  }
178
99
  }
179
100
  exports.StorageDriverFactory = StorageDriverFactory;
180
- StorageDriverFactory.drivers = new Map();
181
101
  //# sourceMappingURL=driver.factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"driver.factory.js","sourceRoot":"","sources":["../../../src/factory/driver.factory.ts"],"names":[],"mappings":";;;AACA,gEAAgE;AAChE,0DAAoF;AACpF,4DAAuF;AACvF,gEAA6F;AAE7F,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAO/B;;;;;;;GAOG;AACH,MAAa,oBAAoB;IAG/B;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,MAAqB;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAE5C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjC,OAAO,QAAQ,CAAC,MAAM,CAAC;QACzB,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,kBAAkB,EAAE,CAAC;YAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAE5C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE;YAC1B,MAAM;YACN,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;SACvB,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,QAAQ;QACrB,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,IAAI,UAAU,GAAG,QAAQ,CAAC;QAE1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAClD,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC;gBAClC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;gBAC9B,SAAS,GAAG,GAAG,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,eAAe,CAAC,MAAqB;QAClD,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,OAAO;gBACV,OAAO,IAAI,oCAAkB,CAAC,MAAM,CAAC,CAAC;YACxC,KAAK,IAAI;gBACP,OAAO,IAAI,8BAAe,CAAC,MAAM,CAAC,CAAC;YACrC,KAAK,cAAc;gBACjB,OAAO,IAAI,uCAAwB,CAAC,MAAM,CAAC,CAAC;YAC9C,KAAK,KAAK;gBACR,OAAO,IAAI,gCAAgB,CAAC,MAAM,CAAC,CAAC;YACtC,KAAK,eAAe;gBAClB,OAAO,IAAI,yCAAyB,CAAC,MAAM,CAAC,CAAC;YAC/C,KAAK,OAAO;gBACV,OAAO,IAAI,oCAAkB,CAAC,MAAM,CAAC,CAAC;YACxC,KAAK,iBAAiB;gBACpB,OAAO,IAAI,6CAA2B,CAAC,MAAM,CAAC,CAAC;YACjD;gBACE,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACK,MAAM,CAAC,UAAU,CAAC,GAAW;QACnC,IAAI,CAAC,GAAG;YAAE,OAAO,SAAS,CAAC;QAE3B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAE1B,+CAA+C;QAC/C,MAAM,kBAAkB,GAAG,UAAU,CAAC;QACtC,MAAM,SAAS,GAAG,QAAQ,CAAC;QAE3B,IAAI,KAAK,GAAG,kBAAkB,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,KAAK,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC3B,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACtC,CAAC;QAED,qEAAqE;QACrE,oEAAoE;QACpE,MAAM,kBAAkB,GAAG,UAAU,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;QACtD,IAAI,KAAK,GAAG,kBAAkB,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,6CAA6C;YACvF,KAAK,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC3B,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACtC,CAAC;QAED,+DAA+D;QAC/D,oEAAoE;QACpE,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,QAAQ,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC;QAED,mFAAmF;QACnF,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IAClH,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,YAAY,CAAC,MAAqB;QAC/C,MAAM,QAAQ,GAAG;YACf,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,UAAU,IAAI,OAAO;YAC5B,MAAM,CAAC,SAAS,IAAI,SAAS;YAC7B,MAAM,CAAC,UAAU,IAAI,EAAE;YACvB,CAAC,MAAM,CAAC,kBAAkB,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE;YAC7C,CAAC,MAAM,CAAC,WAAW,IAAI,UAAU,CAAC,CAAC,QAAQ,EAAE;YAC7C,MAAM,CAAC,SAAS,IAAI,EAAE;YACtB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;YAC1C,MAAM,CAAC,YAAY,IAAI,EAAE;YACzB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC;YAC5C,MAAM,CAAC,gBAAgB,IAAI,EAAE;YAC7B,MAAM,CAAC,kBAAkB,IAAI,EAAE;YAC/B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,qBAAqB,IAAI,EAAE,CAAC;YACnD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;SAC9C,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,UAAU;QACf,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,MAAqB;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,mBAAmB;QACxB,OAAO;YACL,OAAO;YACP,IAAI;YACJ,cAAc;YACd,KAAK;YACL,eAAe;YACf,OAAO;YACP,iBAAiB;SAClB,CAAC;IACJ,CAAC;;AAvLH,oDAwLC;AAvLgB,4BAAO,GAA4B,IAAI,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"driver.factory.js","sourceRoot":"","sources":["../../../src/factory/driver.factory.ts"],"names":[],"mappings":";;;;;;AAcA,oCAgBC;AAKD,kDAUC;AA7CD,oDAA4B;AAE5B,gEAAgE;AAChE,0DAA0D;AAC1D,4DAA4D;AAC5D,gEAAgE;AAEhE;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,MAAqB;IAChD,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,OAAO;YACV,OAAO,IAAI,oCAAkB,CAAC,MAAM,CAAC,CAAC;QACxC,KAAK,IAAI,CAAC;QACV,KAAK,cAAc;YACjB,OAAO,IAAI,8BAAe,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,KAAK,CAAC;QACX,KAAK,eAAe;YAClB,OAAO,IAAI,gCAAgB,CAAC,MAAM,CAAC,CAAC;QACtC,KAAK,OAAO,CAAC;QACb,KAAK,iBAAiB;YACpB,OAAO,IAAI,oCAAkB,CAAC,MAAM,CAAC,CAAC;QACxC;YACE,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB;IACjC,OAAO;QACL,OAAO;QACP,IAAI;QACJ,cAAc;QACd,KAAK;QACL,eAAe;QACf,OAAO;QACP,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAa,oBAAoB;IACd,OAAO,GAAgC,IAAI,GAAG,EAAE,CAAC;IAE1D,UAAU,CAAC,MAAqB;QACtC,OAAO,gBAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClF,CAAC;IAED,WAAW,CAAC,MAAqB;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAE9B,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,mBAAmB;QACxB,OAAO,mBAAmB,EAAE,CAAC;IAC/B,CAAC;CACF;AArCD,oDAqCC"}
@@ -7,24 +7,20 @@
7
7
  * @example
8
8
  * import { StorageManager } from 'express-storage';
9
9
  *
10
- * // Initialize (reads from environment variables)
11
- * const storage = new StorageManager();
12
- *
13
- * // Upload a file
10
+ * const storage = new StorageManager({ driver: 'local' });
14
11
  * const result = await storage.uploadFile(req.file);
15
12
  *
16
- * // Generate presigned URL for client-side upload
17
- * const url = await storage.generateUploadUrl('photo.jpg', 'image/jpeg', 12345);
13
+ * if (result.success) {
14
+ * console.log(result.reference); // stored file path
15
+ * }
16
+ *
17
+ * // Advanced imports:
18
+ * // import { withRetry, formatFileSize } from 'express-storage/utils';
19
+ * // import { BaseStorageDriver } from 'express-storage/drivers';
20
+ * // import { validateStorageConfig } from 'express-storage/config';
18
21
  */
19
22
  export { StorageManager } from './storage-manager.js';
20
- export { StorageDriverFactory } from './factory/driver.factory.js';
21
- export type { StorageDriver, FileUploadResult, DeleteResult, PresignedUrlResult, StorageConfig, StorageOptions, StorageCredentials, FileValidationOptions, UploadOptions, FileMetadata, FileInput, SingleFileInput, MultipleFilesInput, IStorageDriver, ValidationResult, EnvironmentConfig, BlobValidationOptions, BlobValidationResult, ListFilesResult, FileInfo, Logger, RateLimitOptions } from './types/storage.types.js';
22
- export { loadAndValidateConfig, validateStorageConfig, initializeDotenv, resetDotenvInitialization } from './utils/config.utils.js';
23
- export { generateUniqueFileName, sanitizeFileName, validateFileName, createMonthBasedPath, ensureDirectoryExists, formatFileSize, validateFileSize, validateFileType, getFileExtension, isImageFile, isDocumentFile, withRetry, sleep, withConcurrencyLimit } from './utils/file.utils.js';
23
+ export { InMemoryRateLimiter } from './utils/rate-limiter.js';
24
+ export type { StorageDriver, StorageErrorCode, FileUploadResult, FileUploadSuccess, FileUploadError, DeleteResult, DeleteSuccess, DeleteError, PresignedUrlResult, PresignedUrlSuccess, PresignedUrlError, PresignedUploadUrlResult, PresignedUploadUrlSuccess, PresignedViewUrlResult, PresignedViewUrlSuccess, BlobValidationResult, BlobValidationSuccess, BlobValidationError, ListFilesResult, ListFilesSuccess, ListFilesError, StorageConfig, PublicStorageConfig, StorageOptions, StorageCredentials, FileValidationOptions, UploadOptions, FileMetadata, IStorageDriver, ValidationResult, EnvironmentConfig, BlobValidationOptions, FileInfo, Logger, RateLimitOptions, RateLimiterAdapter, StorageHooks, HookErrorContext, BatchOptions, } from './types/storage.types.js';
24
25
  export type { RetryOptions, ConcurrencyOptions } from './utils/file.utils.js';
25
- export { BaseStorageDriver } from './drivers/base.driver.js';
26
- export { LocalStorageDriver } from './drivers/local.driver.js';
27
- export { S3StorageDriver, S3PresignedStorageDriver } from './drivers/s3.driver.js';
28
- export { GCSStorageDriver, GCSPresignedStorageDriver } from './drivers/gcs.driver.js';
29
- export { AzureStorageDriver, AzurePresignedStorageDriver } from './drivers/azure.driver.js';
30
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,QAAQ,EACR,MAAM,EACN,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAGpI,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,SAAS,EACT,KAAK,EACL,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,QAAQ,EACR,MAAM,EACN,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,YAAY,GACb,MAAM,0BAA0B,CAAC;AAElC,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -8,57 +8,24 @@
8
8
  * @example
9
9
  * import { StorageManager } from 'express-storage';
10
10
  *
11
- * // Initialize (reads from environment variables)
12
- * const storage = new StorageManager();
13
- *
14
- * // Upload a file
11
+ * const storage = new StorageManager({ driver: 'local' });
15
12
  * const result = await storage.uploadFile(req.file);
16
13
  *
17
- * // Generate presigned URL for client-side upload
18
- * const url = await storage.generateUploadUrl('photo.jpg', 'image/jpeg', 12345);
14
+ * if (result.success) {
15
+ * console.log(result.reference); // stored file path
16
+ * }
17
+ *
18
+ * // Advanced imports:
19
+ * // import { withRetry, formatFileSize } from 'express-storage/utils';
20
+ * // import { BaseStorageDriver } from 'express-storage/drivers';
21
+ * // import { validateStorageConfig } from 'express-storage/config';
19
22
  */
20
23
  Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.AzurePresignedStorageDriver = exports.AzureStorageDriver = exports.GCSPresignedStorageDriver = exports.GCSStorageDriver = exports.S3PresignedStorageDriver = exports.S3StorageDriver = exports.LocalStorageDriver = exports.BaseStorageDriver = exports.withConcurrencyLimit = exports.sleep = exports.withRetry = exports.isDocumentFile = exports.isImageFile = exports.getFileExtension = exports.validateFileType = exports.validateFileSize = exports.formatFileSize = exports.ensureDirectoryExists = exports.createMonthBasedPath = exports.validateFileName = exports.sanitizeFileName = exports.generateUniqueFileName = exports.resetDotenvInitialization = exports.initializeDotenv = exports.validateStorageConfig = exports.loadAndValidateConfig = exports.StorageDriverFactory = exports.StorageManager = void 0;
22
- // Main class
24
+ exports.InMemoryRateLimiter = exports.StorageManager = void 0;
25
+ // Core class
23
26
  var storage_manager_js_1 = require("./storage-manager.js");
24
27
  Object.defineProperty(exports, "StorageManager", { enumerable: true, get: function () { return storage_manager_js_1.StorageManager; } });
25
- // Factory
26
- var driver_factory_js_1 = require("./factory/driver.factory.js");
27
- Object.defineProperty(exports, "StorageDriverFactory", { enumerable: true, get: function () { return driver_factory_js_1.StorageDriverFactory; } });
28
- // Configuration utilities
29
- var config_utils_js_1 = require("./utils/config.utils.js");
30
- Object.defineProperty(exports, "loadAndValidateConfig", { enumerable: true, get: function () { return config_utils_js_1.loadAndValidateConfig; } });
31
- Object.defineProperty(exports, "validateStorageConfig", { enumerable: true, get: function () { return config_utils_js_1.validateStorageConfig; } });
32
- Object.defineProperty(exports, "initializeDotenv", { enumerable: true, get: function () { return config_utils_js_1.initializeDotenv; } });
33
- Object.defineProperty(exports, "resetDotenvInitialization", { enumerable: true, get: function () { return config_utils_js_1.resetDotenvInitialization; } });
34
- // File utilities
35
- var file_utils_js_1 = require("./utils/file.utils.js");
36
- Object.defineProperty(exports, "generateUniqueFileName", { enumerable: true, get: function () { return file_utils_js_1.generateUniqueFileName; } });
37
- Object.defineProperty(exports, "sanitizeFileName", { enumerable: true, get: function () { return file_utils_js_1.sanitizeFileName; } });
38
- Object.defineProperty(exports, "validateFileName", { enumerable: true, get: function () { return file_utils_js_1.validateFileName; } });
39
- Object.defineProperty(exports, "createMonthBasedPath", { enumerable: true, get: function () { return file_utils_js_1.createMonthBasedPath; } });
40
- Object.defineProperty(exports, "ensureDirectoryExists", { enumerable: true, get: function () { return file_utils_js_1.ensureDirectoryExists; } });
41
- Object.defineProperty(exports, "formatFileSize", { enumerable: true, get: function () { return file_utils_js_1.formatFileSize; } });
42
- Object.defineProperty(exports, "validateFileSize", { enumerable: true, get: function () { return file_utils_js_1.validateFileSize; } });
43
- Object.defineProperty(exports, "validateFileType", { enumerable: true, get: function () { return file_utils_js_1.validateFileType; } });
44
- Object.defineProperty(exports, "getFileExtension", { enumerable: true, get: function () { return file_utils_js_1.getFileExtension; } });
45
- Object.defineProperty(exports, "isImageFile", { enumerable: true, get: function () { return file_utils_js_1.isImageFile; } });
46
- Object.defineProperty(exports, "isDocumentFile", { enumerable: true, get: function () { return file_utils_js_1.isDocumentFile; } });
47
- Object.defineProperty(exports, "withRetry", { enumerable: true, get: function () { return file_utils_js_1.withRetry; } });
48
- Object.defineProperty(exports, "sleep", { enumerable: true, get: function () { return file_utils_js_1.sleep; } });
49
- Object.defineProperty(exports, "withConcurrencyLimit", { enumerable: true, get: function () { return file_utils_js_1.withConcurrencyLimit; } });
50
- // Driver classes (for custom implementations or direct use)
51
- var base_driver_js_1 = require("./drivers/base.driver.js");
52
- Object.defineProperty(exports, "BaseStorageDriver", { enumerable: true, get: function () { return base_driver_js_1.BaseStorageDriver; } });
53
- var local_driver_js_1 = require("./drivers/local.driver.js");
54
- Object.defineProperty(exports, "LocalStorageDriver", { enumerable: true, get: function () { return local_driver_js_1.LocalStorageDriver; } });
55
- var s3_driver_js_1 = require("./drivers/s3.driver.js");
56
- Object.defineProperty(exports, "S3StorageDriver", { enumerable: true, get: function () { return s3_driver_js_1.S3StorageDriver; } });
57
- Object.defineProperty(exports, "S3PresignedStorageDriver", { enumerable: true, get: function () { return s3_driver_js_1.S3PresignedStorageDriver; } });
58
- var gcs_driver_js_1 = require("./drivers/gcs.driver.js");
59
- Object.defineProperty(exports, "GCSStorageDriver", { enumerable: true, get: function () { return gcs_driver_js_1.GCSStorageDriver; } });
60
- Object.defineProperty(exports, "GCSPresignedStorageDriver", { enumerable: true, get: function () { return gcs_driver_js_1.GCSPresignedStorageDriver; } });
61
- var azure_driver_js_1 = require("./drivers/azure.driver.js");
62
- Object.defineProperty(exports, "AzureStorageDriver", { enumerable: true, get: function () { return azure_driver_js_1.AzureStorageDriver; } });
63
- Object.defineProperty(exports, "AzurePresignedStorageDriver", { enumerable: true, get: function () { return azure_driver_js_1.AzurePresignedStorageDriver; } });
28
+ // Rate limiter (needed for StorageOptions.rateLimiter)
29
+ var rate_limiter_js_1 = require("./utils/rate-limiter.js");
30
+ Object.defineProperty(exports, "InMemoryRateLimiter", { enumerable: true, get: function () { return rate_limiter_js_1.InMemoryRateLimiter; } });
64
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;AAEH,aAAa;AACb,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AAEvB,UAAU;AACV,iEAAmE;AAA1D,yHAAA,oBAAoB,OAAA;AA4B7B,0BAA0B;AAC1B,2DAAoI;AAA3H,wHAAA,qBAAqB,OAAA;AAAE,wHAAA,qBAAqB,OAAA;AAAE,mHAAA,gBAAgB,OAAA;AAAE,4HAAA,yBAAyB,OAAA;AAElG,iBAAiB;AACjB,uDAe+B;AAd7B,uHAAA,sBAAsB,OAAA;AACtB,iHAAA,gBAAgB,OAAA;AAChB,iHAAA,gBAAgB,OAAA;AAChB,qHAAA,oBAAoB,OAAA;AACpB,sHAAA,qBAAqB,OAAA;AACrB,+GAAA,cAAc,OAAA;AACd,iHAAA,gBAAgB,OAAA;AAChB,iHAAA,gBAAgB,OAAA;AAChB,iHAAA,gBAAgB,OAAA;AAChB,4GAAA,WAAW,OAAA;AACX,+GAAA,cAAc,OAAA;AACd,0GAAA,SAAS,OAAA;AACT,sGAAA,KAAK,OAAA;AACL,qHAAA,oBAAoB,OAAA;AAItB,4DAA4D;AAC5D,2DAA6D;AAApD,mHAAA,iBAAiB,OAAA;AAC1B,6DAA+D;AAAtD,qHAAA,kBAAkB,OAAA;AAC3B,uDAAmF;AAA1E,+GAAA,eAAe,OAAA;AAAE,wHAAA,wBAAwB,OAAA;AAClD,yDAAsF;AAA7E,iHAAA,gBAAgB,OAAA;AAAE,0HAAA,yBAAyB,OAAA;AACpD,6DAA4F;AAAnF,qHAAA,kBAAkB,OAAA;AAAE,8HAAA,2BAA2B,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;AAEH,aAAa;AACb,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AAEvB,uDAAuD;AACvD,2DAA8D;AAArD,sHAAA,mBAAmB,OAAA"}