@memberjunction/storage 3.3.0 → 4.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 (47) hide show
  1. package/dist/__tests__/FileStorageBase.test.js +76 -14
  2. package/dist/__tests__/FileStorageBase.test.js.map +1 -1
  3. package/dist/__tests__/util.test.js +29 -49
  4. package/dist/__tests__/util.test.js.map +1 -1
  5. package/dist/config.js +56 -63
  6. package/dist/config.js.map +1 -1
  7. package/dist/drivers/AWSFileStorage.d.ts +28 -6
  8. package/dist/drivers/AWSFileStorage.d.ts.map +1 -1
  9. package/dist/drivers/AWSFileStorage.js +92 -73
  10. package/dist/drivers/AWSFileStorage.js.map +1 -1
  11. package/dist/drivers/AzureFileStorage.d.ts +26 -3
  12. package/dist/drivers/AzureFileStorage.d.ts.map +1 -1
  13. package/dist/drivers/AzureFileStorage.js +101 -65
  14. package/dist/drivers/AzureFileStorage.js.map +1 -1
  15. package/dist/drivers/BoxFileStorage.d.ts +21 -17
  16. package/dist/drivers/BoxFileStorage.d.ts.map +1 -1
  17. package/dist/drivers/BoxFileStorage.js +76 -107
  18. package/dist/drivers/BoxFileStorage.js.map +1 -1
  19. package/dist/drivers/DropboxFileStorage.d.ts +23 -6
  20. package/dist/drivers/DropboxFileStorage.d.ts.map +1 -1
  21. package/dist/drivers/DropboxFileStorage.js +62 -61
  22. package/dist/drivers/DropboxFileStorage.js.map +1 -1
  23. package/dist/drivers/GoogleDriveFileStorage.d.ts +23 -6
  24. package/dist/drivers/GoogleDriveFileStorage.d.ts.map +1 -1
  25. package/dist/drivers/GoogleDriveFileStorage.js +78 -61
  26. package/dist/drivers/GoogleDriveFileStorage.js.map +1 -1
  27. package/dist/drivers/GoogleFileStorage.d.ts +25 -2
  28. package/dist/drivers/GoogleFileStorage.d.ts.map +1 -1
  29. package/dist/drivers/GoogleFileStorage.js +93 -46
  30. package/dist/drivers/GoogleFileStorage.js.map +1 -1
  31. package/dist/drivers/SharePointFileStorage.d.ts +32 -8
  32. package/dist/drivers/SharePointFileStorage.d.ts.map +1 -1
  33. package/dist/drivers/SharePointFileStorage.js +92 -137
  34. package/dist/drivers/SharePointFileStorage.js.map +1 -1
  35. package/dist/generic/FileStorageBase.d.ts +77 -43
  36. package/dist/generic/FileStorageBase.d.ts.map +1 -1
  37. package/dist/generic/FileStorageBase.js +60 -52
  38. package/dist/generic/FileStorageBase.js.map +1 -1
  39. package/dist/index.d.ts +10 -10
  40. package/dist/index.js +10 -26
  41. package/dist/index.js.map +1 -1
  42. package/dist/util.d.ts +2 -2
  43. package/dist/util.d.ts.map +1 -1
  44. package/dist/util.js +30 -47
  45. package/dist/util.js.map +1 -1
  46. package/package.json +24 -23
  47. package/readme.md +103 -30
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  /**
3
2
  * Represents the payload returned by the CreatePreAuthUploadUrl method.
4
3
  * This type contains the necessary information for uploading a file to a storage provider.
@@ -216,26 +215,41 @@ export declare class UnsupportedOperationError extends Error {
216
215
  * Configuration options for initializing a storage provider.
217
216
  * This interface defines the standard configuration that can be passed to initialize().
218
217
  *
219
- * In the enterprise model, every storage driver instance is associated with a
220
- * FileStorageAccount entity. The accountId is required to link the driver to
221
- * the specific organizational storage account it operates on behalf of.
218
+ * ## Usage Patterns
219
+ *
220
+ * ### Simple Deployment (Environment Variables)
221
+ * - Omit accountId when using environment variables
222
+ * - Constructor loads credentials automatically
223
+ * - Call initialize() with no config or empty object
224
+ *
225
+ * ### Multi-Tenant Enterprise (Database)
226
+ * - Provide accountId to link driver to FileStorageAccount
227
+ * - Include decrypted credentials from database
228
+ * - Or use initializeDriverWithAccountCredentials() utility
222
229
  */
223
230
  export interface StorageProviderConfig {
224
231
  /**
225
232
  * The ID of the FileStorageAccount entity this driver instance is operating for.
226
233
  * This links the driver to a specific organizational storage account.
227
234
  *
228
- * Required in the enterprise model - every driver instance must be associated
229
- * with a FileStorageAccount.
235
+ * **Optional**: Provide for multi-tenant mode to track account association.
236
+ * Omit for simple deployment using environment variables.
230
237
  */
231
- accountId: string;
238
+ accountId?: string;
232
239
  /**
233
240
  * The name of the account (for logging/display purposes).
241
+ *
242
+ * **Optional**: Useful for logging and debugging in multi-tenant scenarios.
234
243
  */
235
244
  accountName?: string;
236
245
  /**
237
246
  * Provider-specific configuration values (e.g., API keys, bucket names, etc.).
238
- * These are typically decrypted from the Credential entity at runtime.
247
+ *
248
+ * **Simple Deployment**: Not needed - constructor loads from environment variables.
249
+ * **Multi-Tenant**: Provide decrypted credentials from Credential entity.
250
+ *
251
+ * If provided, these values override the constructor defaults.
252
+ * If omitted, uses credentials already loaded by constructor.
239
253
  */
240
254
  [key: string]: unknown;
241
255
  }
@@ -654,52 +668,72 @@ export declare abstract class FileStorageBase {
654
668
  */
655
669
  abstract DirectoryExists(directoryPath: string): Promise<boolean>;
656
670
  /**
657
- * Initialization method for storage providers.
671
+ * Initialize storage provider with optional configuration.
658
672
  *
659
- * This method must be called before using the storage provider. It sets up the
660
- * account association and can be overridden by subclasses to perform provider-specific
661
- * initialization such as setting up access tokens, establishing connections, or
662
- * verifying permissions.
673
+ * ## Standard Usage Pattern
663
674
  *
664
- * The base implementation extracts and stores accountId and accountName from the config.
665
- * Subclass implementations should call super.initialize(config) first to ensure these
666
- * values are properly set before performing provider-specific initialization.
675
+ * **ALWAYS call this method** after creating a provider instance.
667
676
  *
668
- * @param config - Configuration object containing account information and provider-specific
669
- * settings. The accountId property is required and links this driver instance
670
- * to a specific FileStorageAccount entity. Additional provider-specific values
671
- * (e.g., API keys, bucket names) are typically decrypted from the associated
672
- * Credential entity.
677
+ * ### Simple Deployment (Environment Variables)
678
+ * Constructor loads credentials from environment variables, then call
679
+ * initialize() with no config to complete setup:
673
680
  *
674
- * @example
675
681
  * ```typescript
676
- * // In a specific provider implementation:
677
- * public async initialize(config: StorageProviderConfig): Promise<void> {
678
- * // Always call super first to set accountId and accountName
679
- * await super.initialize(config);
680
- *
681
- * // Then handle provider-specific configuration
682
- * if (config.accessToken) {
683
- * this._client = new ProviderClient({ accessToken: config.accessToken as string });
684
- * }
685
- * await this.verifyBucketAccess();
686
- * }
682
+ * // Set environment variables:
683
+ * // STORAGE_AWS_ACCESS_KEY_ID=...
684
+ * // STORAGE_AWS_SECRET_ACCESS_KEY=...
685
+ * // STORAGE_AWS_BUCKET_NAME=...
686
+ * // STORAGE_AWS_REGION=...
687
+ *
688
+ * const storage = new AWSFileStorage(); // Constructor loads env vars
689
+ * await storage.initialize(); // No config - uses env vars
690
+ * await storage.ListObjects('/'); // Ready to use
691
+ * ```
687
692
  *
688
- * // Usage:
689
- * const storage = new MyStorageProvider();
693
+ * ### Multi-Tenant Enterprise (Database)
694
+ * Constructor loads defaults, then call initialize() with configuration
695
+ * to override with database credentials and track account:
696
+ *
697
+ * ```typescript
698
+ * // Preferred: Use infrastructure utility
699
+ * const storage = await initializeDriverWithAccountCredentials({
700
+ * accountEntity,
701
+ * providerEntity,
702
+ * contextUser
703
+ * });
704
+ *
705
+ * // Alternative: Manual initialization
706
+ * const storage = new AWSFileStorage();
690
707
  * await storage.initialize({
691
- * accountId: 'F1234567-89AB-CDEF-0123-456789ABCDEF',
692
- * accountName: 'Company AWS S3 Storage',
693
- * accessKeyId: 'AKIA...',
694
- * secretAccessKey: '...',
695
- * bucket: 'my-bucket'
708
+ * accountId: account.id,
709
+ * accountName: account.name,
710
+ * accessKeyID: creds.accessKeyID,
711
+ * secretAccessKey: creds.secretAccessKey,
712
+ * region: creds.region,
713
+ * defaultBucket: creds.bucket
696
714
  * });
697
- * // Now the provider is ready to use
698
715
  * ```
699
716
  *
700
- * @returns A Promise that resolves when initialization is complete.
717
+ * ## How It Works
718
+ *
719
+ * - **No config**: Uses credentials already loaded by constructor from environment variables
720
+ * - **With config**: Overrides constructor credentials with provided values
721
+ * - **accountId**: Optional - provide for multi-tenant tracking
722
+ *
723
+ * ## Implementation Notes for Subclasses
724
+ *
725
+ * Subclass implementations should:
726
+ * 1. Call super.initialize(config) first to set accountId and accountName
727
+ * 2. Check if config is provided before attempting to override credentials
728
+ * 3. Only override values that are present in config
729
+ * 4. Reinitialize client/connection if credentials changed
730
+ *
731
+ * @param config - Optional configuration object
732
+ * - Omit for simple deployment (uses env vars from constructor)
733
+ * - Provide for multi-tenant (overrides with database credentials)
734
+ * @returns A Promise that resolves when initialization is complete
701
735
  */
702
- initialize(config: StorageProviderConfig): Promise<void>;
736
+ initialize(config?: StorageProviderConfig): Promise<void>;
703
737
  /**
704
738
  * Checks whether this storage provider is properly configured and ready to use.
705
739
  *
@@ -1 +1 @@
1
- {"version":3,"file":"FileStorageBase.d.ts","sourceRoot":"","sources":["../../src/generic/FileStorageBase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileStorageBase.d.ts","sourceRoot":"","sources":["../../src/generic/FileStorageBase.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FileStorageBase = exports.UnsupportedOperationError = void 0;
4
1
  /**
5
2
  * Error thrown when a storage provider does not support a particular operation.
6
3
  * This custom error provides clear information about which operation was attempted
7
4
  * and which provider doesn't support it.
8
5
  */
9
- class UnsupportedOperationError extends Error {
6
+ export class UnsupportedOperationError extends Error {
10
7
  /**
11
8
  * Creates a new UnsupportedOperationError instance.
12
9
  *
@@ -18,7 +15,6 @@ class UnsupportedOperationError extends Error {
18
15
  this.name = 'UnsupportedOperationError';
19
16
  }
20
17
  }
21
- exports.UnsupportedOperationError = UnsupportedOperationError;
22
18
  /**
23
19
  * Represents an abstract base class for file storage operations.
24
20
  *
@@ -41,16 +37,7 @@ exports.UnsupportedOperationError = UnsupportedOperationError;
41
37
  * - When a storage provider doesn't support a particular operation, implementations should throw UnsupportedOperationError
42
38
  * - Each instance operates on behalf of a specific FileStorageAccount (identified by accountId)
43
39
  */
44
- class FileStorageBase {
45
- /**
46
- * The ID of the FileStorageAccount this driver instance is operating for.
47
- * Set during initialization via the config parameter.
48
- */
49
- _accountId;
50
- /**
51
- * The name of the FileStorageAccount (for logging/display purposes).
52
- */
53
- _accountName;
40
+ export class FileStorageBase {
54
41
  /**
55
42
  * Gets the account ID this driver instance is operating for.
56
43
  * Returns undefined if the driver was not initialized with an account.
@@ -76,56 +63,77 @@ class FileStorageBase {
76
63
  throw new UnsupportedOperationError(methodName, this.providerName);
77
64
  }
78
65
  /**
79
- * Initialization method for storage providers.
66
+ * Initialize storage provider with optional configuration.
80
67
  *
81
- * This method must be called before using the storage provider. It sets up the
82
- * account association and can be overridden by subclasses to perform provider-specific
83
- * initialization such as setting up access tokens, establishing connections, or
84
- * verifying permissions.
68
+ * ## Standard Usage Pattern
85
69
  *
86
- * The base implementation extracts and stores accountId and accountName from the config.
87
- * Subclass implementations should call super.initialize(config) first to ensure these
88
- * values are properly set before performing provider-specific initialization.
70
+ * **ALWAYS call this method** after creating a provider instance.
89
71
  *
90
- * @param config - Configuration object containing account information and provider-specific
91
- * settings. The accountId property is required and links this driver instance
92
- * to a specific FileStorageAccount entity. Additional provider-specific values
93
- * (e.g., API keys, bucket names) are typically decrypted from the associated
94
- * Credential entity.
72
+ * ### Simple Deployment (Environment Variables)
73
+ * Constructor loads credentials from environment variables, then call
74
+ * initialize() with no config to complete setup:
95
75
  *
96
- * @example
97
76
  * ```typescript
98
- * // In a specific provider implementation:
99
- * public async initialize(config: StorageProviderConfig): Promise<void> {
100
- * // Always call super first to set accountId and accountName
101
- * await super.initialize(config);
77
+ * // Set environment variables:
78
+ * // STORAGE_AWS_ACCESS_KEY_ID=...
79
+ * // STORAGE_AWS_SECRET_ACCESS_KEY=...
80
+ * // STORAGE_AWS_BUCKET_NAME=...
81
+ * // STORAGE_AWS_REGION=...
102
82
  *
103
- * // Then handle provider-specific configuration
104
- * if (config.accessToken) {
105
- * this._client = new ProviderClient({ accessToken: config.accessToken as string });
106
- * }
107
- * await this.verifyBucketAccess();
108
- * }
83
+ * const storage = new AWSFileStorage(); // Constructor loads env vars
84
+ * await storage.initialize(); // No config - uses env vars
85
+ * await storage.ListObjects('/'); // Ready to use
86
+ * ```
87
+ *
88
+ * ### Multi-Tenant Enterprise (Database)
89
+ * Constructor loads defaults, then call initialize() with configuration
90
+ * to override with database credentials and track account:
109
91
  *
110
- * // Usage:
111
- * const storage = new MyStorageProvider();
92
+ * ```typescript
93
+ * // Preferred: Use infrastructure utility
94
+ * const storage = await initializeDriverWithAccountCredentials({
95
+ * accountEntity,
96
+ * providerEntity,
97
+ * contextUser
98
+ * });
99
+ *
100
+ * // Alternative: Manual initialization
101
+ * const storage = new AWSFileStorage();
112
102
  * await storage.initialize({
113
- * accountId: 'F1234567-89AB-CDEF-0123-456789ABCDEF',
114
- * accountName: 'Company AWS S3 Storage',
115
- * accessKeyId: 'AKIA...',
116
- * secretAccessKey: '...',
117
- * bucket: 'my-bucket'
103
+ * accountId: account.id,
104
+ * accountName: account.name,
105
+ * accessKeyID: creds.accessKeyID,
106
+ * secretAccessKey: creds.secretAccessKey,
107
+ * region: creds.region,
108
+ * defaultBucket: creds.bucket
118
109
  * });
119
- * // Now the provider is ready to use
120
110
  * ```
121
111
  *
122
- * @returns A Promise that resolves when initialization is complete.
112
+ * ## How It Works
113
+ *
114
+ * - **No config**: Uses credentials already loaded by constructor from environment variables
115
+ * - **With config**: Overrides constructor credentials with provided values
116
+ * - **accountId**: Optional - provide for multi-tenant tracking
117
+ *
118
+ * ## Implementation Notes for Subclasses
119
+ *
120
+ * Subclass implementations should:
121
+ * 1. Call super.initialize(config) first to set accountId and accountName
122
+ * 2. Check if config is provided before attempting to override credentials
123
+ * 3. Only override values that are present in config
124
+ * 4. Reinitialize client/connection if credentials changed
125
+ *
126
+ * @param config - Optional configuration object
127
+ * - Omit for simple deployment (uses env vars from constructor)
128
+ * - Provide for multi-tenant (overrides with database credentials)
129
+ * @returns A Promise that resolves when initialization is complete
123
130
  */
124
131
  async initialize(config) {
125
- // Extract and store account information from the config
126
- this._accountId = config.accountId;
127
- this._accountName = config.accountName;
132
+ // Extract and store account information from the config if provided
133
+ if (config) {
134
+ this._accountId = config.accountId;
135
+ this._accountName = config.accountName;
136
+ }
128
137
  }
129
138
  }
130
- exports.FileStorageBase = FileStorageBase;
131
139
  //# sourceMappingURL=FileStorageBase.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileStorageBase.js","sourceRoot":"","sources":["../../src/generic/FileStorageBase.ts"],"names":[],"mappings":";;;AAkOA;;;;GAIG;AACH,MAAa,yBAA0B,SAAQ,KAAK;IAClD;;;;;OAKG;IACH,YAAY,UAAkB,EAAE,YAAoB;QAClD,KAAK,CAAC,cAAc,UAAU,6BAA6B,YAAY,WAAW,CAAC,CAAC;QACpF,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF;AAXD,8DAWC;AAgCD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAsB,eAAe;IAOnC;;;OAGG;IACO,UAAU,CAAqB;IAEzC;;OAEG;IACO,YAAY,CAAqB;IAE3C;;;OAGG;IACH,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACO,8BAA8B,CAAC,UAAkB;QACzD,MAAM,IAAI,yBAAyB,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACrE,CAAC;IAsXD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACI,KAAK,CAAC,UAAU,CAAC,MAA6B;QACnD,wDAAwD;QACxD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;IACzC,CAAC;CA8GF;AAjkBD,0CAikBC"}
1
+ {"version":3,"file":"FileStorageBase.js","sourceRoot":"","sources":["../../src/generic/FileStorageBase.ts"],"names":[],"mappings":"AAkOA;;;;GAIG;AACH,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD;;;;;OAKG;IACH,YAAY,UAAkB,EAAE,YAAoB;QAClD,KAAK,CAAC,cAAc,UAAU,6BAA6B,YAAY,WAAW,CAAC,CAAC;QACpF,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF;AA+CD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAgB,eAAe;IAkBnC;;;OAGG;IACH,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACO,8BAA8B,CAAC,UAAkB;QACzD,MAAM,IAAI,yBAAyB,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACrE,CAAC;IAsXD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiEG;IACI,KAAK,CAAC,UAAU,CAAC,MAA8B;QACpD,oEAAoE;QACpE,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;YACnC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;QACzC,CAAC;IACH,CAAC;CA8GF"}
package/dist/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
- export * from './drivers/AWSFileStorage';
2
- export * from './drivers/AzureFileStorage';
3
- export * from './drivers/GoogleFileStorage';
4
- export * from './drivers/GoogleDriveFileStorage';
5
- export * from './drivers/SharePointFileStorage';
6
- export * from './drivers/DropboxFileStorage';
7
- export * from './drivers/BoxFileStorage';
8
- export * from './generic/FileStorageBase';
9
- export * from './util';
10
- export * from './config';
1
+ export * from './drivers/AWSFileStorage.js';
2
+ export * from './drivers/AzureFileStorage.js';
3
+ export * from './drivers/GoogleFileStorage.js';
4
+ export * from './drivers/GoogleDriveFileStorage.js';
5
+ export * from './drivers/SharePointFileStorage.js';
6
+ export * from './drivers/DropboxFileStorage.js';
7
+ export * from './drivers/BoxFileStorage.js';
8
+ export * from './generic/FileStorageBase.js';
9
+ export * from './util.js';
10
+ export * from './config.js';
11
11
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,27 +1,11 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./drivers/AWSFileStorage"), exports);
18
- __exportStar(require("./drivers/AzureFileStorage"), exports);
19
- __exportStar(require("./drivers/GoogleFileStorage"), exports);
20
- __exportStar(require("./drivers/GoogleDriveFileStorage"), exports);
21
- __exportStar(require("./drivers/SharePointFileStorage"), exports);
22
- __exportStar(require("./drivers/DropboxFileStorage"), exports);
23
- __exportStar(require("./drivers/BoxFileStorage"), exports);
24
- __exportStar(require("./generic/FileStorageBase"), exports);
25
- __exportStar(require("./util"), exports);
26
- __exportStar(require("./config"), exports);
1
+ export * from './drivers/AWSFileStorage.js';
2
+ export * from './drivers/AzureFileStorage.js';
3
+ export * from './drivers/GoogleFileStorage.js';
4
+ export * from './drivers/GoogleDriveFileStorage.js';
5
+ export * from './drivers/SharePointFileStorage.js';
6
+ export * from './drivers/DropboxFileStorage.js';
7
+ export * from './drivers/BoxFileStorage.js';
8
+ export * from './generic/FileStorageBase.js';
9
+ export * from './util.js';
10
+ export * from './config.js';
27
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,6DAA2C;AAC3C,8DAA4C;AAC5C,mEAAiD;AACjD,kEAAgD;AAChD,+DAA6C;AAC7C,2DAAyC;AACzC,4DAA0C;AAC1C,yCAAuB;AACvB,2CAAyB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC"}
package/dist/util.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { FileStorageProviderEntity, FileStorageAccountEntity } from '@memberjunction/core-entities';
2
2
  import { UserInfo } from '@memberjunction/core';
3
- import { FileStorageBase, FileSearchResult } from './generic/FileStorageBase';
3
+ import { FileStorageBase, FileSearchResult } from './generic/FileStorageBase.js';
4
4
  /**
5
5
  * Callback function called when a new refresh token is issued.
6
6
  * This is important for providers like Box that issue new refresh tokens with each refresh.
@@ -329,7 +329,7 @@ export declare const deleteObject: (providerEntity: FileStorageProviderEntity, p
329
329
  * const docsResult = await listObjects(fileStorageProvider, 'documents/', '/', userContext);
330
330
  * ```
331
331
  */
332
- export declare const listObjects: (providerEntity: FileStorageProviderEntity, prefix: string, delimiter?: string, userContext?: UserContextOptions) => Promise<import('./generic/FileStorageBase').StorageListResult>;
332
+ export declare const listObjects: (providerEntity: FileStorageProviderEntity, prefix: string, delimiter?: string, userContext?: UserContextOptions) => Promise<import("./generic/FileStorageBase.js").StorageListResult>;
333
333
  /**
334
334
  * Result of a cross-provider copy operation
335
335
  */
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}