@memberjunction/storage 3.1.0 → 3.2.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.
- package/dist/__tests__/FileStorageBase.test.d.ts +6 -0
- package/dist/__tests__/FileStorageBase.test.d.ts.map +1 -0
- package/dist/__tests__/FileStorageBase.test.js +213 -0
- package/dist/__tests__/FileStorageBase.test.js.map +1 -0
- package/dist/__tests__/util.test.d.ts +7 -0
- package/dist/__tests__/util.test.d.ts.map +1 -0
- package/dist/__tests__/util.test.js +326 -0
- package/dist/__tests__/util.test.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +28 -14
- package/dist/config.js.map +1 -1
- package/dist/drivers/AWSFileStorage.d.ts +20 -0
- package/dist/drivers/AWSFileStorage.d.ts.map +1 -1
- package/dist/drivers/AWSFileStorage.js +43 -18
- package/dist/drivers/AWSFileStorage.js.map +1 -1
- package/dist/drivers/AzureFileStorage.d.ts +1 -1
- package/dist/drivers/AzureFileStorage.d.ts.map +1 -1
- package/dist/drivers/AzureFileStorage.js +17 -17
- package/dist/drivers/AzureFileStorage.js.map +1 -1
- package/dist/drivers/BoxFileStorage.d.ts +47 -1
- package/dist/drivers/BoxFileStorage.d.ts.map +1 -1
- package/dist/drivers/BoxFileStorage.js +219 -95
- package/dist/drivers/BoxFileStorage.js.map +1 -1
- package/dist/drivers/DropboxFileStorage.d.ts +59 -0
- package/dist/drivers/DropboxFileStorage.d.ts.map +1 -1
- package/dist/drivers/DropboxFileStorage.js +314 -62
- package/dist/drivers/DropboxFileStorage.js.map +1 -1
- package/dist/drivers/GoogleDriveFileStorage.d.ts +29 -0
- package/dist/drivers/GoogleDriveFileStorage.d.ts.map +1 -1
- package/dist/drivers/GoogleDriveFileStorage.js +220 -72
- package/dist/drivers/GoogleDriveFileStorage.js.map +1 -1
- package/dist/drivers/GoogleFileStorage.d.ts.map +1 -1
- package/dist/drivers/GoogleFileStorage.js +12 -12
- package/dist/drivers/GoogleFileStorage.js.map +1 -1
- package/dist/drivers/SharePointFileStorage.d.ts +64 -5
- package/dist/drivers/SharePointFileStorage.d.ts.map +1 -1
- package/dist/drivers/SharePointFileStorage.js +265 -94
- package/dist/drivers/SharePointFileStorage.js.map +1 -1
- package/dist/generic/FileStorageBase.d.ts +79 -13
- package/dist/generic/FileStorageBase.d.ts.map +1 -1
- package/dist/generic/FileStorageBase.js +57 -12
- package/dist/generic/FileStorageBase.js.map +1 -1
- package/dist/util.d.ts +429 -11
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +677 -16
- package/dist/util.js.map +1 -1
- package/package.json +11 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileStorageBase.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/FileStorageBase.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Unit tests for the FileStorageBase class.
|
|
4
|
+
* These tests focus on the initialize() method and account information handling.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const FileStorageBase_1 = require("../generic/FileStorageBase");
|
|
8
|
+
/**
|
|
9
|
+
* Concrete implementation of FileStorageBase for testing purposes.
|
|
10
|
+
* This class implements all abstract methods with minimal functionality
|
|
11
|
+
* to allow testing the base class behavior.
|
|
12
|
+
*/
|
|
13
|
+
class TestableFileStorageDriver extends FileStorageBase_1.FileStorageBase {
|
|
14
|
+
providerName = 'TestableProvider';
|
|
15
|
+
_isConfigured = false;
|
|
16
|
+
configPassedToInitialize = null;
|
|
17
|
+
async initialize(config) {
|
|
18
|
+
// Call the base implementation
|
|
19
|
+
await super.initialize(config);
|
|
20
|
+
// Store the config for test verification
|
|
21
|
+
this.configPassedToInitialize = config;
|
|
22
|
+
this._isConfigured = true;
|
|
23
|
+
}
|
|
24
|
+
get IsConfigured() {
|
|
25
|
+
return this._isConfigured;
|
|
26
|
+
}
|
|
27
|
+
// Minimal implementations of abstract methods
|
|
28
|
+
async CreatePreAuthUploadUrl(objectName) {
|
|
29
|
+
return { UploadUrl: `https://test.url/${objectName}` };
|
|
30
|
+
}
|
|
31
|
+
async CreatePreAuthDownloadUrl(objectName) {
|
|
32
|
+
return `https://test.url/${objectName}`;
|
|
33
|
+
}
|
|
34
|
+
async MoveObject(oldObjectName, newObjectName) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
async DeleteObject(objectName) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
async ListObjects(prefix, delimiter) {
|
|
41
|
+
return { objects: [], prefixes: [] };
|
|
42
|
+
}
|
|
43
|
+
async CreateDirectory(directoryPath) {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
async DeleteDirectory(directoryPath, recursive) {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
async GetObjectMetadata(params) {
|
|
50
|
+
return {
|
|
51
|
+
name: 'test.txt',
|
|
52
|
+
path: '/',
|
|
53
|
+
fullPath: '/test.txt',
|
|
54
|
+
size: 0,
|
|
55
|
+
contentType: 'text/plain',
|
|
56
|
+
lastModified: new Date(),
|
|
57
|
+
isDirectory: false,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
async GetObject(params) {
|
|
61
|
+
return Buffer.from('');
|
|
62
|
+
}
|
|
63
|
+
async PutObject(objectName, data, contentType, metadata) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
async CopyObject(sourceObjectName, destinationObjectName) {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
async ObjectExists(objectName) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
async DirectoryExists(directoryPath) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
async SearchFiles(query, options) {
|
|
76
|
+
return { results: [], hasMore: false };
|
|
77
|
+
}
|
|
78
|
+
// Expose the protected method for testing
|
|
79
|
+
testThrowUnsupportedOperationError(methodName) {
|
|
80
|
+
return this.throwUnsupportedOperationError(methodName);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
describe('FileStorageBase', () => {
|
|
84
|
+
let driver;
|
|
85
|
+
beforeEach(() => {
|
|
86
|
+
driver = new TestableFileStorageDriver();
|
|
87
|
+
});
|
|
88
|
+
describe('initialize()', () => {
|
|
89
|
+
it('should store accountId from config', async () => {
|
|
90
|
+
const config = {
|
|
91
|
+
accountId: 'test-account-id-123',
|
|
92
|
+
};
|
|
93
|
+
await driver.initialize(config);
|
|
94
|
+
expect(driver.AccountId).toBe('test-account-id-123');
|
|
95
|
+
});
|
|
96
|
+
it('should store accountName from config when provided', async () => {
|
|
97
|
+
const config = {
|
|
98
|
+
accountId: 'test-account-id-123',
|
|
99
|
+
accountName: 'My Test Storage Account',
|
|
100
|
+
};
|
|
101
|
+
await driver.initialize(config);
|
|
102
|
+
expect(driver.AccountName).toBe('My Test Storage Account');
|
|
103
|
+
});
|
|
104
|
+
it('should handle undefined accountName gracefully', async () => {
|
|
105
|
+
const config = {
|
|
106
|
+
accountId: 'test-account-id-123',
|
|
107
|
+
// accountName intentionally omitted
|
|
108
|
+
};
|
|
109
|
+
await driver.initialize(config);
|
|
110
|
+
expect(driver.AccountId).toBe('test-account-id-123');
|
|
111
|
+
expect(driver.AccountName).toBeUndefined();
|
|
112
|
+
});
|
|
113
|
+
it('should allow additional provider-specific config values', async () => {
|
|
114
|
+
const config = {
|
|
115
|
+
accountId: 'account-456',
|
|
116
|
+
accountName: 'S3 Bucket Account',
|
|
117
|
+
bucket: 'my-bucket',
|
|
118
|
+
region: 'us-west-2',
|
|
119
|
+
accessKeyId: 'AKIA...',
|
|
120
|
+
};
|
|
121
|
+
await driver.initialize(config);
|
|
122
|
+
// Verify base properties are set
|
|
123
|
+
expect(driver.AccountId).toBe('account-456');
|
|
124
|
+
expect(driver.AccountName).toBe('S3 Bucket Account');
|
|
125
|
+
// Verify the full config was passed through
|
|
126
|
+
expect(driver.configPassedToInitialize).toEqual({
|
|
127
|
+
accountId: 'account-456',
|
|
128
|
+
accountName: 'S3 Bucket Account',
|
|
129
|
+
bucket: 'my-bucket',
|
|
130
|
+
region: 'us-west-2',
|
|
131
|
+
accessKeyId: 'AKIA...',
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
describe('AccountId getter', () => {
|
|
136
|
+
it('should return undefined before initialization', () => {
|
|
137
|
+
expect(driver.AccountId).toBeUndefined();
|
|
138
|
+
});
|
|
139
|
+
it('should return the accountId after initialization', async () => {
|
|
140
|
+
await driver.initialize({ accountId: 'my-account-id' });
|
|
141
|
+
expect(driver.AccountId).toBe('my-account-id');
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
describe('AccountName getter', () => {
|
|
145
|
+
it('should return undefined before initialization', () => {
|
|
146
|
+
expect(driver.AccountName).toBeUndefined();
|
|
147
|
+
});
|
|
148
|
+
it('should return the accountName after initialization', async () => {
|
|
149
|
+
await driver.initialize({
|
|
150
|
+
accountId: 'my-account-id',
|
|
151
|
+
accountName: 'Production S3 Account',
|
|
152
|
+
});
|
|
153
|
+
expect(driver.AccountName).toBe('Production S3 Account');
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
describe('UnsupportedOperationError', () => {
|
|
157
|
+
it('should create error with correct message format', () => {
|
|
158
|
+
const error = new FileStorageBase_1.UnsupportedOperationError('SearchFiles', 'AWS S3');
|
|
159
|
+
expect(error.message).toBe("Operation 'SearchFiles' is not supported by the AWS S3 provider");
|
|
160
|
+
expect(error.name).toBe('UnsupportedOperationError');
|
|
161
|
+
});
|
|
162
|
+
it('should throw UnsupportedOperationError via helper method', () => {
|
|
163
|
+
expect(() => {
|
|
164
|
+
driver.testThrowUnsupportedOperationError('TestMethod');
|
|
165
|
+
}).toThrow(FileStorageBase_1.UnsupportedOperationError);
|
|
166
|
+
expect(() => {
|
|
167
|
+
driver.testThrowUnsupportedOperationError('TestMethod');
|
|
168
|
+
}).toThrow("Operation 'TestMethod' is not supported by the TestableProvider provider");
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
describe('IsConfigured', () => {
|
|
172
|
+
it('should return false before initialization', () => {
|
|
173
|
+
expect(driver.IsConfigured).toBe(false);
|
|
174
|
+
});
|
|
175
|
+
it('should return true after initialization', async () => {
|
|
176
|
+
await driver.initialize({ accountId: 'test' });
|
|
177
|
+
expect(driver.IsConfigured).toBe(true);
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
describe('StorageProviderConfig interface', () => {
|
|
182
|
+
it('should require accountId property', () => {
|
|
183
|
+
// This is a compile-time check - if the type is wrong, TypeScript will error
|
|
184
|
+
const validConfig = {
|
|
185
|
+
accountId: 'required-account-id',
|
|
186
|
+
};
|
|
187
|
+
expect(validConfig.accountId).toBe('required-account-id');
|
|
188
|
+
});
|
|
189
|
+
it('should allow optional accountName property', () => {
|
|
190
|
+
const configWithName = {
|
|
191
|
+
accountId: 'account-1',
|
|
192
|
+
accountName: 'Optional Name',
|
|
193
|
+
};
|
|
194
|
+
const configWithoutName = {
|
|
195
|
+
accountId: 'account-2',
|
|
196
|
+
};
|
|
197
|
+
expect(configWithName.accountName).toBe('Optional Name');
|
|
198
|
+
expect(configWithoutName.accountName).toBeUndefined();
|
|
199
|
+
});
|
|
200
|
+
it('should allow additional provider-specific properties', () => {
|
|
201
|
+
const s3Config = {
|
|
202
|
+
accountId: 'aws-account',
|
|
203
|
+
accountName: 'AWS S3 Account',
|
|
204
|
+
bucket: 'my-bucket',
|
|
205
|
+
region: 'us-east-1',
|
|
206
|
+
accessKeyId: 'AKIA...',
|
|
207
|
+
secretAccessKey: 'secret...',
|
|
208
|
+
};
|
|
209
|
+
expect(s3Config.bucket).toBe('my-bucket');
|
|
210
|
+
expect(s3Config.region).toBe('us-east-1');
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
//# sourceMappingURL=FileStorageBase.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileStorageBase.test.js","sourceRoot":"","sources":["../../src/__tests__/FileStorageBase.test.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAEH,gEAWoC;AAEpC;;;;GAIG;AACH,MAAM,yBAA0B,SAAQ,iCAAe;IAClC,YAAY,GAAG,kBAAkB,CAAC;IAE7C,aAAa,GAAG,KAAK,CAAC;IACvB,wBAAwB,GAAiC,IAAI,CAAC;IAE9D,KAAK,CAAC,UAAU,CAAC,MAA6B;QACnD,+BAA+B;QAC/B,MAAM,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/B,yCAAyC;QACzC,IAAI,CAAC,wBAAwB,GAAG,MAAM,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,8CAA8C;IACvC,KAAK,CAAC,sBAAsB,CAAC,UAAkB;QACpD,OAAO,EAAE,SAAS,EAAE,oBAAoB,UAAU,EAAE,EAAE,CAAC;IACzD,CAAC;IAEM,KAAK,CAAC,wBAAwB,CAAC,UAAkB;QACtD,OAAO,oBAAoB,UAAU,EAAE,CAAC;IAC1C,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,aAAqB,EAAE,aAAqB;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,UAAkB;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,SAAkB;QACzD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACvC,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,aAAqB;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,aAAqB,EAAE,SAAmB;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,MAA+B;QAC5D,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,WAAW;YACrB,IAAI,EAAE,CAAC;YACP,WAAW,EAAE,YAAY;YACzB,YAAY,EAAE,IAAI,IAAI,EAAE;YACxB,WAAW,EAAE,KAAK;SACnB,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,MAAuB;QAC5C,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,UAAkB,EAAE,IAAY,EAAE,WAAoB,EAAE,QAAiC;QAC9G,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,gBAAwB,EAAE,qBAA6B;QAC7E,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,UAAkB;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,aAAqB;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,OAA2B;QACjE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACzC,CAAC;IAED,0CAA0C;IACnC,kCAAkC,CAAC,UAAkB;QAC1D,OAAO,IAAI,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;CACF;AAED,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,MAAiC,CAAC;IAEtC,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,MAAM,GAA0B;gBACpC,SAAS,EAAE,qBAAqB;aACjC,CAAC;YAEF,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAEhC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,MAAM,GAA0B;gBACpC,SAAS,EAAE,qBAAqB;gBAChC,WAAW,EAAE,yBAAyB;aACvC,CAAC;YAEF,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAEhC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,MAAM,GAA0B;gBACpC,SAAS,EAAE,qBAAqB;gBAChC,oCAAoC;aACrC,CAAC;YAEF,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAEhC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,MAAM,GAA0B;gBACpC,SAAS,EAAE,aAAa;gBACxB,WAAW,EAAE,mBAAmB;gBAChC,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,WAAW;gBACnB,WAAW,EAAE,SAAS;aACvB,CAAC;YAEF,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAEhC,iCAAiC;YACjC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAErD,4CAA4C;YAC5C,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,OAAO,CAAC;gBAC9C,SAAS,EAAE,aAAa;gBACxB,WAAW,EAAE,mBAAmB;gBAChC,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,WAAW;gBACnB,WAAW,EAAE,SAAS;aACvB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;YAExD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,MAAM,CAAC,UAAU,CAAC;gBACtB,SAAS,EAAE,eAAe;gBAC1B,WAAW,EAAE,uBAAuB;aACrC,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,KAAK,GAAG,IAAI,2CAAyB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;YAErE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;YAC9F,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAClE,MAAM,CAAC,GAAG,EAAE;gBACV,MAAM,CAAC,kCAAkC,CAAC,YAAY,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC,OAAO,CAAC,2CAAyB,CAAC,CAAC;YAEtC,MAAM,CAAC,GAAG,EAAE;gBACV,MAAM,CAAC,kCAAkC,CAAC,YAAY,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC,OAAO,CAAC,0EAA0E,CAAC,CAAC;QACzF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;YAE/C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,6EAA6E;QAC7E,MAAM,WAAW,GAA0B;YACzC,SAAS,EAAE,qBAAqB;SACjC,CAAC;QAEF,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,cAAc,GAA0B;YAC5C,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,eAAe;SAC7B,CAAC;QAEF,MAAM,iBAAiB,GAA0B;YAC/C,SAAS,EAAE,WAAW;SACvB,CAAC;QAEF,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACzD,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,QAAQ,GAA0B;YACtC,SAAS,EAAE,aAAa;YACxB,WAAW,EAAE,gBAAgB;YAC7B,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,WAAW;YACnB,WAAW,EAAE,SAAS;YACtB,eAAe,EAAE,WAAW;SAC7B,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/util.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Unit tests for the MJStorage utility functions.
|
|
4
|
+
* These tests focus on the initializeDriverWithAccountCredentials function
|
|
5
|
+
* which is the core enterprise model for initializing storage drivers.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
24
|
+
if (mod && mod.__esModule) return mod;
|
|
25
|
+
var result = {};
|
|
26
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
27
|
+
__setModuleDefault(result, mod);
|
|
28
|
+
return result;
|
|
29
|
+
};
|
|
30
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
const FileStorageBase_1 = require("../generic/FileStorageBase");
|
|
32
|
+
const global_1 = require("@memberjunction/global");
|
|
33
|
+
// Mock the external dependencies
|
|
34
|
+
jest.mock('@memberjunction/global', () => {
|
|
35
|
+
const actualGlobal = jest.requireActual('@memberjunction/global');
|
|
36
|
+
return {
|
|
37
|
+
...actualGlobal,
|
|
38
|
+
MJGlobal: {
|
|
39
|
+
Instance: {
|
|
40
|
+
ClassFactory: {
|
|
41
|
+
CreateInstance: jest.fn(),
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
});
|
|
47
|
+
jest.mock('@memberjunction/credentials', () => ({
|
|
48
|
+
CredentialEngine: {
|
|
49
|
+
Instance: {
|
|
50
|
+
Config: jest.fn().mockResolvedValue(undefined),
|
|
51
|
+
getCredentialById: jest.fn(),
|
|
52
|
+
getCredential: jest.fn(),
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
}));
|
|
56
|
+
jest.mock('@memberjunction/core', () => ({
|
|
57
|
+
LogStatus: jest.fn(),
|
|
58
|
+
UserInfo: class MockUserInfo {
|
|
59
|
+
ID = 'test-user-id';
|
|
60
|
+
Name = 'Test User';
|
|
61
|
+
},
|
|
62
|
+
}));
|
|
63
|
+
// Create a concrete implementation of FileStorageBase for testing
|
|
64
|
+
class MockFileStorageDriver extends FileStorageBase_1.FileStorageBase {
|
|
65
|
+
providerName = 'MockProvider';
|
|
66
|
+
initializeCalledWith = null;
|
|
67
|
+
_isConfigured = false;
|
|
68
|
+
async initialize(config) {
|
|
69
|
+
await super.initialize(config);
|
|
70
|
+
this.initializeCalledWith = config;
|
|
71
|
+
this._isConfigured = true;
|
|
72
|
+
}
|
|
73
|
+
get IsConfigured() {
|
|
74
|
+
return this._isConfigured;
|
|
75
|
+
}
|
|
76
|
+
// Implement all abstract methods with minimal implementations
|
|
77
|
+
async CreatePreAuthUploadUrl(objectName) {
|
|
78
|
+
return { UploadUrl: `https://mock.upload.url/${objectName}` };
|
|
79
|
+
}
|
|
80
|
+
async CreatePreAuthDownloadUrl(objectName) {
|
|
81
|
+
return `https://mock.download.url/${objectName}`;
|
|
82
|
+
}
|
|
83
|
+
async MoveObject(oldObjectName, newObjectName) {
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
async DeleteObject(objectName) {
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
async ListObjects(prefix, delimiter) {
|
|
90
|
+
return { objects: [], prefixes: [] };
|
|
91
|
+
}
|
|
92
|
+
async CreateDirectory(directoryPath) {
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
async DeleteDirectory(directoryPath, recursive) {
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
async GetObjectMetadata(params) {
|
|
99
|
+
return {
|
|
100
|
+
name: 'test.txt',
|
|
101
|
+
path: '/',
|
|
102
|
+
fullPath: '/test.txt',
|
|
103
|
+
size: 100,
|
|
104
|
+
contentType: 'text/plain',
|
|
105
|
+
lastModified: new Date(),
|
|
106
|
+
isDirectory: false,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
async GetObject(params) {
|
|
110
|
+
return Buffer.from('test content');
|
|
111
|
+
}
|
|
112
|
+
async PutObject(objectName, data, contentType, metadata) {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
async CopyObject(sourceObjectName, destinationObjectName) {
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
async ObjectExists(objectName) {
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
async DirectoryExists(directoryPath) {
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
async SearchFiles(query, options) {
|
|
125
|
+
return { results: [], hasMore: false };
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
describe('initializeDriverWithAccountCredentials', () => {
|
|
129
|
+
let mockDriver;
|
|
130
|
+
let mockAccountEntity;
|
|
131
|
+
let mockProviderEntity;
|
|
132
|
+
let mockContextUser;
|
|
133
|
+
beforeEach(() => {
|
|
134
|
+
// Reset all mocks
|
|
135
|
+
jest.clearAllMocks();
|
|
136
|
+
// Create fresh mock instances
|
|
137
|
+
mockDriver = new MockFileStorageDriver();
|
|
138
|
+
// Setup the ClassFactory to return our mock driver
|
|
139
|
+
global_1.MJGlobal.Instance.ClassFactory.CreateInstance.mockReturnValue(mockDriver);
|
|
140
|
+
mockAccountEntity = {
|
|
141
|
+
ID: 'account-123',
|
|
142
|
+
Name: 'Test Storage Account',
|
|
143
|
+
CredentialID: null,
|
|
144
|
+
};
|
|
145
|
+
mockProviderEntity = {
|
|
146
|
+
Name: 'Test Provider',
|
|
147
|
+
ServerDriverKey: 'TestDriver',
|
|
148
|
+
Configuration: null,
|
|
149
|
+
};
|
|
150
|
+
mockContextUser = {
|
|
151
|
+
ID: 'user-123',
|
|
152
|
+
Name: 'Test User',
|
|
153
|
+
};
|
|
154
|
+
});
|
|
155
|
+
describe('driver creation', () => {
|
|
156
|
+
it('should create a driver instance using the provider ServerDriverKey', async () => {
|
|
157
|
+
// Import the function we're testing
|
|
158
|
+
const { initializeDriverWithAccountCredentials } = await Promise.resolve().then(() => __importStar(require('../util')));
|
|
159
|
+
await initializeDriverWithAccountCredentials({
|
|
160
|
+
accountEntity: mockAccountEntity,
|
|
161
|
+
providerEntity: mockProviderEntity,
|
|
162
|
+
contextUser: mockContextUser,
|
|
163
|
+
});
|
|
164
|
+
expect(global_1.MJGlobal.Instance.ClassFactory.CreateInstance).toHaveBeenCalledWith(FileStorageBase_1.FileStorageBase, 'TestDriver');
|
|
165
|
+
});
|
|
166
|
+
it('should throw an error if driver creation fails', async () => {
|
|
167
|
+
global_1.MJGlobal.Instance.ClassFactory.CreateInstance.mockReturnValue(null);
|
|
168
|
+
const { initializeDriverWithAccountCredentials } = await Promise.resolve().then(() => __importStar(require('../util')));
|
|
169
|
+
await expect(initializeDriverWithAccountCredentials({
|
|
170
|
+
accountEntity: mockAccountEntity,
|
|
171
|
+
providerEntity: mockProviderEntity,
|
|
172
|
+
contextUser: mockContextUser,
|
|
173
|
+
})).rejects.toThrow(/Failed to create storage driver/);
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
describe('account information', () => {
|
|
177
|
+
it('should pass accountId from the account entity to the driver', async () => {
|
|
178
|
+
const { initializeDriverWithAccountCredentials } = await Promise.resolve().then(() => __importStar(require('../util')));
|
|
179
|
+
await initializeDriverWithAccountCredentials({
|
|
180
|
+
accountEntity: mockAccountEntity,
|
|
181
|
+
providerEntity: mockProviderEntity,
|
|
182
|
+
contextUser: mockContextUser,
|
|
183
|
+
});
|
|
184
|
+
expect(mockDriver.initializeCalledWith).toBeDefined();
|
|
185
|
+
expect(mockDriver.initializeCalledWith.accountId).toBe('account-123');
|
|
186
|
+
});
|
|
187
|
+
it('should pass accountName from the account entity to the driver', async () => {
|
|
188
|
+
const { initializeDriverWithAccountCredentials } = await Promise.resolve().then(() => __importStar(require('../util')));
|
|
189
|
+
await initializeDriverWithAccountCredentials({
|
|
190
|
+
accountEntity: mockAccountEntity,
|
|
191
|
+
providerEntity: mockProviderEntity,
|
|
192
|
+
contextUser: mockContextUser,
|
|
193
|
+
});
|
|
194
|
+
expect(mockDriver.initializeCalledWith).toBeDefined();
|
|
195
|
+
expect(mockDriver.initializeCalledWith.accountName).toBe('Test Storage Account');
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
describe('credential handling', () => {
|
|
199
|
+
it('should use Credential Engine when account has a CredentialID', async () => {
|
|
200
|
+
const { CredentialEngine } = await Promise.resolve().then(() => __importStar(require('@memberjunction/credentials')));
|
|
201
|
+
mockAccountEntity.CredentialID = 'credential-456';
|
|
202
|
+
// Setup credential engine mocks
|
|
203
|
+
CredentialEngine.Instance.getCredentialById.mockReturnValue({
|
|
204
|
+
ID: 'credential-456',
|
|
205
|
+
Name: 'Test Credential',
|
|
206
|
+
});
|
|
207
|
+
CredentialEngine.Instance.getCredential.mockResolvedValue({
|
|
208
|
+
values: {
|
|
209
|
+
accessKey: 'test-access-key',
|
|
210
|
+
secretKey: 'test-secret-key',
|
|
211
|
+
bucket: 'test-bucket',
|
|
212
|
+
},
|
|
213
|
+
});
|
|
214
|
+
const { initializeDriverWithAccountCredentials } = await Promise.resolve().then(() => __importStar(require('../util')));
|
|
215
|
+
await initializeDriverWithAccountCredentials({
|
|
216
|
+
accountEntity: mockAccountEntity,
|
|
217
|
+
providerEntity: mockProviderEntity,
|
|
218
|
+
contextUser: mockContextUser,
|
|
219
|
+
});
|
|
220
|
+
// Verify Credential Engine was configured
|
|
221
|
+
expect(CredentialEngine.Instance.Config).toHaveBeenCalledWith(false, mockContextUser);
|
|
222
|
+
// Verify credential was looked up by ID
|
|
223
|
+
expect(CredentialEngine.Instance.getCredentialById).toHaveBeenCalledWith('credential-456');
|
|
224
|
+
// Verify getCredential was called with correct parameters
|
|
225
|
+
expect(CredentialEngine.Instance.getCredential).toHaveBeenCalledWith('Test Credential', expect.objectContaining({
|
|
226
|
+
credentialId: 'credential-456',
|
|
227
|
+
contextUser: mockContextUser,
|
|
228
|
+
subsystem: 'FileStorage',
|
|
229
|
+
}));
|
|
230
|
+
});
|
|
231
|
+
it('should merge credential values with account info in driver config', async () => {
|
|
232
|
+
const { CredentialEngine } = await Promise.resolve().then(() => __importStar(require('@memberjunction/credentials')));
|
|
233
|
+
mockAccountEntity.CredentialID = 'credential-456';
|
|
234
|
+
CredentialEngine.Instance.getCredentialById.mockReturnValue({
|
|
235
|
+
ID: 'credential-456',
|
|
236
|
+
Name: 'Test Credential',
|
|
237
|
+
});
|
|
238
|
+
CredentialEngine.Instance.getCredential.mockResolvedValue({
|
|
239
|
+
values: {
|
|
240
|
+
accessKey: 'decrypted-access-key',
|
|
241
|
+
secretKey: 'decrypted-secret-key',
|
|
242
|
+
region: 'us-west-2',
|
|
243
|
+
},
|
|
244
|
+
});
|
|
245
|
+
const { initializeDriverWithAccountCredentials } = await Promise.resolve().then(() => __importStar(require('../util')));
|
|
246
|
+
await initializeDriverWithAccountCredentials({
|
|
247
|
+
accountEntity: mockAccountEntity,
|
|
248
|
+
providerEntity: mockProviderEntity,
|
|
249
|
+
contextUser: mockContextUser,
|
|
250
|
+
});
|
|
251
|
+
// Verify driver was initialized with merged config
|
|
252
|
+
expect(mockDriver.initializeCalledWith).toMatchObject({
|
|
253
|
+
accountId: 'account-123',
|
|
254
|
+
accountName: 'Test Storage Account',
|
|
255
|
+
accessKey: 'decrypted-access-key',
|
|
256
|
+
secretKey: 'decrypted-secret-key',
|
|
257
|
+
region: 'us-west-2',
|
|
258
|
+
});
|
|
259
|
+
// Verify that onTokenRefresh callback was added
|
|
260
|
+
expect(mockDriver.initializeCalledWith.onTokenRefresh).toBeDefined();
|
|
261
|
+
expect(typeof mockDriver.initializeCalledWith.onTokenRefresh).toBe('function');
|
|
262
|
+
});
|
|
263
|
+
it('should throw error if credential lookup fails', async () => {
|
|
264
|
+
const { CredentialEngine } = await Promise.resolve().then(() => __importStar(require('@memberjunction/credentials')));
|
|
265
|
+
mockAccountEntity.CredentialID = 'credential-456';
|
|
266
|
+
// Return null to simulate credential not found
|
|
267
|
+
CredentialEngine.Instance.getCredentialById.mockReturnValue(null);
|
|
268
|
+
const { initializeDriverWithAccountCredentials } = await Promise.resolve().then(() => __importStar(require('../util')));
|
|
269
|
+
await expect(initializeDriverWithAccountCredentials({
|
|
270
|
+
accountEntity: mockAccountEntity,
|
|
271
|
+
providerEntity: mockProviderEntity,
|
|
272
|
+
contextUser: mockContextUser,
|
|
273
|
+
})).rejects.toThrow(/Credential with ID credential-456 not found/);
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
describe('fallback to provider configuration', () => {
|
|
277
|
+
it('should use provider Configuration when no CredentialID', async () => {
|
|
278
|
+
mockAccountEntity.CredentialID = null;
|
|
279
|
+
mockProviderEntity.Configuration = JSON.stringify({
|
|
280
|
+
defaultBucket: 'provider-default-bucket',
|
|
281
|
+
defaultRegion: 'us-east-1',
|
|
282
|
+
});
|
|
283
|
+
const { initializeDriverWithAccountCredentials } = await Promise.resolve().then(() => __importStar(require('../util')));
|
|
284
|
+
await initializeDriverWithAccountCredentials({
|
|
285
|
+
accountEntity: mockAccountEntity,
|
|
286
|
+
providerEntity: mockProviderEntity,
|
|
287
|
+
contextUser: mockContextUser,
|
|
288
|
+
});
|
|
289
|
+
// Verify driver was initialized with provider config merged with account info
|
|
290
|
+
expect(mockDriver.initializeCalledWith).toEqual({
|
|
291
|
+
accountId: 'account-123',
|
|
292
|
+
accountName: 'Test Storage Account',
|
|
293
|
+
defaultBucket: 'provider-default-bucket',
|
|
294
|
+
defaultRegion: 'us-east-1',
|
|
295
|
+
});
|
|
296
|
+
});
|
|
297
|
+
it('should initialize with just account info when no credential or provider config', async () => {
|
|
298
|
+
mockAccountEntity.CredentialID = null;
|
|
299
|
+
mockProviderEntity.Configuration = null;
|
|
300
|
+
const { initializeDriverWithAccountCredentials } = await Promise.resolve().then(() => __importStar(require('../util')));
|
|
301
|
+
await initializeDriverWithAccountCredentials({
|
|
302
|
+
accountEntity: mockAccountEntity,
|
|
303
|
+
providerEntity: mockProviderEntity,
|
|
304
|
+
contextUser: mockContextUser,
|
|
305
|
+
});
|
|
306
|
+
// Verify driver was initialized with only account info
|
|
307
|
+
expect(mockDriver.initializeCalledWith).toEqual({
|
|
308
|
+
accountId: 'account-123',
|
|
309
|
+
accountName: 'Test Storage Account',
|
|
310
|
+
});
|
|
311
|
+
});
|
|
312
|
+
});
|
|
313
|
+
describe('return value', () => {
|
|
314
|
+
it('should return the initialized driver', async () => {
|
|
315
|
+
const { initializeDriverWithAccountCredentials } = await Promise.resolve().then(() => __importStar(require('../util')));
|
|
316
|
+
const result = await initializeDriverWithAccountCredentials({
|
|
317
|
+
accountEntity: mockAccountEntity,
|
|
318
|
+
providerEntity: mockProviderEntity,
|
|
319
|
+
contextUser: mockContextUser,
|
|
320
|
+
});
|
|
321
|
+
expect(result).toBe(mockDriver);
|
|
322
|
+
expect(mockDriver.IsConfigured).toBe(true);
|
|
323
|
+
});
|
|
324
|
+
});
|
|
325
|
+
});
|
|
326
|
+
//# sourceMappingURL=util.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.test.js","sourceRoot":"","sources":["../../src/__tests__/util.test.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;GAEG;AACH,QAAA,MAAM,sBAAsB;IAC1B;;;OAGG;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;GAEG;AACH,QAAA,MAAM,sBAAsB;IAC1B;;;OAGG;;;;;;;;;;;;;;;;;;;;IAWH;;;OAGG;;;;;;;;;;;;;;;;;IAUH;;;OAGG;;;;;;;;;;;;;;;;;IAUH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;IAeH;;;OAGG;;;;;;;;;;;;;;;;;;;;IAWH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;IAYH;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWH,CAAC;AAEH;;GAEG;AACH,QAAA,MAAM,mBAAmB;IACvB;;OAEG;;QA/GH;;;WAGG;;;;;;;;;;;;;;;;;;;;QAWH;;;WAGG;;;;;;;;;;;;;;;;;QAUH;;;WAGG;;;;;;;;;;;;;;;;;QAUH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;QAeH;;;WAGG;;;;;;;;;;;;;;;;;;;;QAWH;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;QAYH;;;WAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBH,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAI5E;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAgFhD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,sBAAsB,CAGlE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAAE,QAAQ,EAAE,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAGhH;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|