nest-multi-storage 1.1.1 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/drivers/azure-blob.driver.d.ts.map +1 -1
- package/dist/drivers/azure-blob.driver.js +15 -1
- package/dist/drivers/azure-blob.driver.js.map +1 -1
- package/dist/drivers/local.driver.d.ts.map +1 -1
- package/dist/drivers/local.driver.js +31 -4
- package/dist/drivers/local.driver.js.map +1 -1
- package/dist/drivers/s3.driver.d.ts +3 -0
- package/dist/drivers/s3.driver.d.ts.map +1 -1
- package/dist/drivers/s3.driver.js +31 -1
- package/dist/drivers/s3.driver.js.map +1 -1
- package/dist/storage.module.d.ts.map +1 -1
- package/dist/storage.module.js +35 -3
- package/dist/storage.module.js.map +1 -1
- package/dist/utils/path.utils.d.ts +2 -0
- package/dist/utils/path.utils.d.ts.map +1 -1
- package/dist/utils/path.utils.js +24 -0
- package/dist/utils/path.utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"azure-blob.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/azure-blob.driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAQlC,OAAO,EACH,aAAa,EACb,UAAU,EACV,eAAe,EACf,SAAS,EACZ,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAO7E,qBAAa,eAAgB,YAAW,aAAa;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAS;gBAE1B,OAAO,EAAE,kBAAkB;IAYjC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5C,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,gBAAgB;IAMlB,GAAG,CACL,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GAAG,QAAQ,EAC1B,OAAO,CAAC,EAAE,UAAU,GACrB,OAAO,CAAC,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"azure-blob.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/azure-blob.driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAQlC,OAAO,EACH,aAAa,EACb,UAAU,EACV,eAAe,EACf,SAAS,EACZ,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAO7E,qBAAa,eAAgB,YAAW,aAAa;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAS;gBAE1B,OAAO,EAAE,kBAAkB;IAYjC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5C,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,gBAAgB;IAMlB,GAAG,CACL,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GAAG,QAAQ,EAC1B,OAAO,CAAC,EAAE,UAAU,GACrB,OAAO,CAAC,eAAe,CAAC;IA2BrB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBlC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAS1C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAatC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAM7C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ5C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAOnB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA+B5D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAmBxD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQxD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAetC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAUjD"}
|
|
@@ -33,6 +33,7 @@ class AzureBlobDriver {
|
|
|
33
33
|
return match?.[1];
|
|
34
34
|
}
|
|
35
35
|
async put(path, content, options) {
|
|
36
|
+
(0, path_utils_1.validatePath)(path);
|
|
36
37
|
const blobName = this.normalizeBlobName(path);
|
|
37
38
|
const blockBlobClient = this.containerClient.getBlockBlobClient(blobName);
|
|
38
39
|
if (Buffer.isBuffer(content)) {
|
|
@@ -57,6 +58,7 @@ class AzureBlobDriver {
|
|
|
57
58
|
};
|
|
58
59
|
}
|
|
59
60
|
async get(path) {
|
|
61
|
+
(0, path_utils_1.validatePath)(path);
|
|
60
62
|
const blobName = this.normalizeBlobName(path);
|
|
61
63
|
const blockBlobClient = this.containerClient.getBlockBlobClient(blobName);
|
|
62
64
|
const downloadResponse = await blockBlobClient.download();
|
|
@@ -69,12 +71,14 @@ class AzureBlobDriver {
|
|
|
69
71
|
});
|
|
70
72
|
}
|
|
71
73
|
async getStream(path) {
|
|
74
|
+
(0, path_utils_1.validatePath)(path);
|
|
72
75
|
const blobName = this.normalizeBlobName(path);
|
|
73
76
|
const blockBlobClient = this.containerClient.getBlockBlobClient(blobName);
|
|
74
77
|
const downloadResponse = await blockBlobClient.download();
|
|
75
78
|
return downloadResponse.readableStreamBody;
|
|
76
79
|
}
|
|
77
80
|
async delete(path) {
|
|
81
|
+
(0, path_utils_1.validatePath)(path);
|
|
78
82
|
const blobName = this.normalizeBlobName(path);
|
|
79
83
|
const blockBlobClient = this.containerClient.getBlockBlobClient(blobName);
|
|
80
84
|
try {
|
|
@@ -86,20 +90,24 @@ class AzureBlobDriver {
|
|
|
86
90
|
}
|
|
87
91
|
}
|
|
88
92
|
async deleteMany(paths) {
|
|
93
|
+
(0, path_utils_1.validatePaths)(paths);
|
|
89
94
|
const results = await Promise.all(paths.map((p) => this.delete(p)));
|
|
90
95
|
return results.every((r) => r);
|
|
91
96
|
}
|
|
92
97
|
async exists(path) {
|
|
98
|
+
(0, path_utils_1.validatePath)(path);
|
|
93
99
|
const blobName = this.normalizeBlobName(path);
|
|
94
100
|
const blockBlobClient = this.containerClient.getBlockBlobClient(blobName);
|
|
95
101
|
return blockBlobClient.exists();
|
|
96
102
|
}
|
|
97
103
|
url(path) {
|
|
104
|
+
(0, path_utils_1.validatePath)(path);
|
|
98
105
|
const blobName = this.normalizeBlobName(path);
|
|
99
106
|
const blockBlobClient = this.containerClient.getBlockBlobClient(blobName);
|
|
100
107
|
return blockBlobClient.url;
|
|
101
108
|
}
|
|
102
109
|
async signedUrl(path, expiresIn) {
|
|
110
|
+
(0, path_utils_1.validatePath)(path);
|
|
103
111
|
const blobName = this.normalizeBlobName(path);
|
|
104
112
|
const expiry = expiresIn ?? this.sasUrlExpiry;
|
|
105
113
|
const accountName = this.parseAccountName();
|
|
@@ -120,22 +128,28 @@ class AzureBlobDriver {
|
|
|
120
128
|
return `${this.url(blobName)}?${sasToken}`;
|
|
121
129
|
}
|
|
122
130
|
async copy(from, to) {
|
|
131
|
+
(0, path_utils_1.validatePath)(from, 'from');
|
|
132
|
+
(0, path_utils_1.validatePath)(to, 'to');
|
|
123
133
|
const fromBlobName = this.normalizeBlobName(from);
|
|
124
134
|
const toBlobName = this.normalizeBlobName(to);
|
|
125
135
|
const sourceClient = this.containerClient.getBlockBlobClient(fromBlobName);
|
|
126
136
|
const destClient = this.containerClient.getBlockBlobClient(toBlobName);
|
|
127
|
-
await destClient.beginCopyFromURL(sourceClient.url);
|
|
137
|
+
const poller = await destClient.beginCopyFromURL(sourceClient.url);
|
|
138
|
+
await poller.pollUntilDone();
|
|
128
139
|
return {
|
|
129
140
|
path: toBlobName,
|
|
130
141
|
url: this.url(toBlobName),
|
|
131
142
|
};
|
|
132
143
|
}
|
|
133
144
|
async move(from, to) {
|
|
145
|
+
(0, path_utils_1.validatePath)(from, 'from');
|
|
146
|
+
(0, path_utils_1.validatePath)(to, 'to');
|
|
134
147
|
const result = await this.copy(from, to);
|
|
135
148
|
await this.delete(from);
|
|
136
149
|
return result;
|
|
137
150
|
}
|
|
138
151
|
async stat(path) {
|
|
152
|
+
(0, path_utils_1.validatePath)(path);
|
|
139
153
|
const blobName = this.normalizeBlobName(path);
|
|
140
154
|
const blockBlobClient = this.containerClient.getBlockBlobClient(blobName);
|
|
141
155
|
const properties = await blockBlobClient.getProperties();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"azure-blob.driver.js","sourceRoot":"","sources":["../../src/drivers/azure-blob.driver.ts"],"names":[],"mappings":";;;AACA,sDAM6B;AAQ7B,4DAAiE;AACjE,
|
|
1
|
+
{"version":3,"file":"azure-blob.driver.js","sourceRoot":"","sources":["../../src/drivers/azure-blob.driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/local.driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAIlC,OAAO,EACH,aAAa,EACb,UAAU,EACV,eAAe,EACf,SAAS,EACZ,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAM7E,qBAAa,WAAY,YAAW,aAAa;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAS;gBAEtB,OAAO,EAAE,kBAAkB;IAQvC,OAAO,CAAC,WAAW;
|
|
1
|
+
{"version":3,"file":"local.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/local.driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAIlC,OAAO,EACH,aAAa,EACb,UAAU,EACV,eAAe,EACf,SAAS,EACZ,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAM7E,qBAAa,WAAY,YAAW,aAAa;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAS;gBAEtB,OAAO,EAAE,kBAAkB;IAQvC,OAAO,CAAC,WAAW;YAeL,SAAS;IAKjB,GAAG,CACL,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,QAAQ,EAC1B,OAAO,CAAC,EAAE,UAAU,GACrB,OAAO,CAAC,eAAe,CAAC;IAkCrB,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMtC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAM9C,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW1C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAM7C,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWhD,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAQvB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUjE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAaxD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAaxD,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAU1C,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAwBjD"}
|
|
@@ -44,13 +44,19 @@ class LocalDriver {
|
|
|
44
44
|
this.baseUrl = options.baseUrl ? (0, path_utils_1.trimTrailingSlash)(options.baseUrl) : undefined;
|
|
45
45
|
}
|
|
46
46
|
getFullPath(filePath) {
|
|
47
|
-
|
|
47
|
+
const normalizedPath = (0, path_utils_1.trimLeadingSlash)(filePath);
|
|
48
|
+
const fullPath = path.resolve(this.basePath, normalizedPath);
|
|
49
|
+
if (!fullPath.startsWith(this.basePath + path.sep) && fullPath !== this.basePath) {
|
|
50
|
+
throw new Error(`Path traversal detected: ${filePath}`);
|
|
51
|
+
}
|
|
52
|
+
return fullPath;
|
|
48
53
|
}
|
|
49
54
|
async ensureDir(filePath) {
|
|
50
55
|
const dir = (0, path_utils_1.dirname)(filePath);
|
|
51
56
|
await fs.mkdir(dir, { recursive: true });
|
|
52
57
|
}
|
|
53
58
|
async put(filePath, content, options) {
|
|
59
|
+
(0, path_utils_1.validatePath)(filePath, 'filePath');
|
|
54
60
|
const fullPath = this.getFullPath(filePath);
|
|
55
61
|
await this.ensureDir(fullPath);
|
|
56
62
|
if (Buffer.isBuffer(content)) {
|
|
@@ -59,9 +65,15 @@ class LocalDriver {
|
|
|
59
65
|
else {
|
|
60
66
|
await new Promise((resolve, reject) => {
|
|
61
67
|
const writeStream = fsSync.createWriteStream(fullPath);
|
|
62
|
-
|
|
68
|
+
const cleanup = (error) => {
|
|
69
|
+
writeStream.destroy();
|
|
70
|
+
content.destroy();
|
|
71
|
+
reject(error);
|
|
72
|
+
};
|
|
63
73
|
writeStream.on('finish', resolve);
|
|
64
|
-
writeStream.on('error',
|
|
74
|
+
writeStream.on('error', cleanup);
|
|
75
|
+
content.on('error', cleanup);
|
|
76
|
+
content.pipe(writeStream);
|
|
65
77
|
});
|
|
66
78
|
}
|
|
67
79
|
return {
|
|
@@ -70,14 +82,17 @@ class LocalDriver {
|
|
|
70
82
|
};
|
|
71
83
|
}
|
|
72
84
|
async get(filePath) {
|
|
85
|
+
(0, path_utils_1.validatePath)(filePath, 'filePath');
|
|
73
86
|
const fullPath = this.getFullPath(filePath);
|
|
74
87
|
return fs.readFile(fullPath);
|
|
75
88
|
}
|
|
76
89
|
async getStream(filePath) {
|
|
90
|
+
(0, path_utils_1.validatePath)(filePath, 'filePath');
|
|
77
91
|
const fullPath = this.getFullPath(filePath);
|
|
78
92
|
return fsSync.createReadStream(fullPath);
|
|
79
93
|
}
|
|
80
94
|
async delete(filePath) {
|
|
95
|
+
(0, path_utils_1.validatePath)(filePath, 'filePath');
|
|
81
96
|
const fullPath = this.getFullPath(filePath);
|
|
82
97
|
try {
|
|
83
98
|
await fs.unlink(fullPath);
|
|
@@ -88,10 +103,12 @@ class LocalDriver {
|
|
|
88
103
|
}
|
|
89
104
|
}
|
|
90
105
|
async deleteMany(paths) {
|
|
106
|
+
(0, path_utils_1.validatePaths)(paths, 'paths');
|
|
91
107
|
const results = await Promise.all(paths.map((p) => this.delete(p)));
|
|
92
108
|
return results.every((r) => r);
|
|
93
109
|
}
|
|
94
110
|
async exists(filePath) {
|
|
111
|
+
(0, path_utils_1.validatePath)(filePath, 'filePath');
|
|
95
112
|
const fullPath = this.getFullPath(filePath);
|
|
96
113
|
try {
|
|
97
114
|
await fs.access(fullPath);
|
|
@@ -102,15 +119,22 @@ class LocalDriver {
|
|
|
102
119
|
}
|
|
103
120
|
}
|
|
104
121
|
url(filePath) {
|
|
122
|
+
(0, path_utils_1.validatePath)(filePath, 'filePath');
|
|
105
123
|
if (this.baseUrl) {
|
|
106
124
|
return `${this.baseUrl}/${(0, path_utils_1.trimLeadingSlash)(filePath)}`;
|
|
107
125
|
}
|
|
108
126
|
return this.getFullPath(filePath);
|
|
109
127
|
}
|
|
110
128
|
async signedUrl(filePath, _expiresIn) {
|
|
129
|
+
(0, path_utils_1.validatePath)(filePath, 'filePath');
|
|
130
|
+
if (process.env.NODE_ENV !== 'test') {
|
|
131
|
+
console.warn('LocalDriver does not support signed URLs. Returning regular URL instead.');
|
|
132
|
+
}
|
|
111
133
|
return this.url(filePath);
|
|
112
134
|
}
|
|
113
135
|
async copy(from, to) {
|
|
136
|
+
(0, path_utils_1.validatePath)(from, 'from');
|
|
137
|
+
(0, path_utils_1.validatePath)(to, 'to');
|
|
114
138
|
const fromPath = this.getFullPath(from);
|
|
115
139
|
const toPath = this.getFullPath(to);
|
|
116
140
|
await this.ensureDir(toPath);
|
|
@@ -121,6 +145,8 @@ class LocalDriver {
|
|
|
121
145
|
};
|
|
122
146
|
}
|
|
123
147
|
async move(from, to) {
|
|
148
|
+
(0, path_utils_1.validatePath)(from, 'from');
|
|
149
|
+
(0, path_utils_1.validatePath)(to, 'to');
|
|
124
150
|
const fromPath = this.getFullPath(from);
|
|
125
151
|
const toPath = this.getFullPath(to);
|
|
126
152
|
await this.ensureDir(toPath);
|
|
@@ -131,6 +157,7 @@ class LocalDriver {
|
|
|
131
157
|
};
|
|
132
158
|
}
|
|
133
159
|
async stat(filePath) {
|
|
160
|
+
(0, path_utils_1.validatePath)(filePath, 'filePath');
|
|
134
161
|
const fullPath = this.getFullPath(filePath);
|
|
135
162
|
const stats = await fs.stat(fullPath);
|
|
136
163
|
return {
|
|
@@ -147,7 +174,7 @@ class LocalDriver {
|
|
|
147
174
|
const entryPath = prefix
|
|
148
175
|
? `${(0, path_utils_1.trimLeadingSlash)(prefix)}/${entry.name}`
|
|
149
176
|
: entry.name;
|
|
150
|
-
if (entry.isFile()) {
|
|
177
|
+
if (entry.isFile() || entry.isSymbolicLink()) {
|
|
151
178
|
files.push(entryPath);
|
|
152
179
|
}
|
|
153
180
|
else if (entry.isDirectory()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.driver.js","sourceRoot":"","sources":["../../src/drivers/local.driver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,gDAAkC;AAClC,2CAA6B;AAC7B,2CAA6B;AAQ7B,
|
|
1
|
+
{"version":3,"file":"local.driver.js","sourceRoot":"","sources":["../../src/drivers/local.driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,11 @@ export declare class S3Driver implements StorageDriver {
|
|
|
6
6
|
private readonly bucket;
|
|
7
7
|
private readonly cdnUrl?;
|
|
8
8
|
private readonly signedUrlExpiry;
|
|
9
|
+
private readonly endpoint?;
|
|
9
10
|
constructor(options: S3DriverOptions);
|
|
11
|
+
destroy(): Promise<void>;
|
|
10
12
|
private normalizeKey;
|
|
13
|
+
ensureBucketExists(): Promise<void>;
|
|
11
14
|
put(path: string, content: Buffer | Readable, options?: PutOptions): Promise<StorageResponse>;
|
|
12
15
|
get(path: string): Promise<Buffer>;
|
|
13
16
|
getStream(path: string): Promise<Readable>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/s3.driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"s3.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/s3.driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAclC,OAAO,EACH,aAAa,EACb,UAAU,EACV,eAAe,EACf,SAAS,EACZ,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAO1E,qBAAa,QAAS,YAAW,aAAa;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAS;gBAEvB,OAAO,EAAE,eAAe;IAgB9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B,OAAO,CAAC,YAAY;IAOd,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQnC,GAAG,CACL,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GAAG,QAAQ,EAC1B,OAAO,CAAC,EAAE,UAAU,GACrB,OAAO,CAAC,eAAe,CAAC;IAqBrB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBlC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAa1C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBtC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB7C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB5C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAiBnB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAc5D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAwBxD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQxD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAmBtC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAuBjD"}
|
|
@@ -16,11 +16,24 @@ class S3Driver {
|
|
|
16
16
|
this.bucket = options.bucket;
|
|
17
17
|
this.cdnUrl = options.cdnUrl ? (0, path_utils_1.trimTrailingSlash)(options.cdnUrl) : undefined;
|
|
18
18
|
this.signedUrlExpiry = options.signedUrlExpiry ?? storage_constants_1.DEFAULT_SIGNED_URL_EXPIRY;
|
|
19
|
+
this.endpoint = options.endpoint ? (0, path_utils_1.trimTrailingSlash)(options.endpoint) : undefined;
|
|
20
|
+
}
|
|
21
|
+
async destroy() {
|
|
22
|
+
this.client.destroy();
|
|
19
23
|
}
|
|
20
24
|
normalizeKey(key) {
|
|
21
25
|
return (0, path_utils_1.trimLeadingSlash)(key);
|
|
22
26
|
}
|
|
27
|
+
async ensureBucketExists() {
|
|
28
|
+
try {
|
|
29
|
+
await this.client.send(new client_s3_1.HeadBucketCommand({ Bucket: this.bucket }));
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
await this.client.send(new client_s3_1.CreateBucketCommand({ Bucket: this.bucket }));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
23
35
|
async put(path, content, options) {
|
|
36
|
+
(0, path_utils_1.validatePath)(path);
|
|
24
37
|
const key = this.normalizeKey(path);
|
|
25
38
|
const command = new client_s3_1.PutObjectCommand({
|
|
26
39
|
Bucket: this.bucket,
|
|
@@ -37,6 +50,7 @@ class S3Driver {
|
|
|
37
50
|
};
|
|
38
51
|
}
|
|
39
52
|
async get(path) {
|
|
53
|
+
(0, path_utils_1.validatePath)(path);
|
|
40
54
|
const key = this.normalizeKey(path);
|
|
41
55
|
const command = new client_s3_1.GetObjectCommand({
|
|
42
56
|
Bucket: this.bucket,
|
|
@@ -52,6 +66,7 @@ class S3Driver {
|
|
|
52
66
|
});
|
|
53
67
|
}
|
|
54
68
|
async getStream(path) {
|
|
69
|
+
(0, path_utils_1.validatePath)(path);
|
|
55
70
|
const key = this.normalizeKey(path);
|
|
56
71
|
const command = new client_s3_1.GetObjectCommand({
|
|
57
72
|
Bucket: this.bucket,
|
|
@@ -61,6 +76,7 @@ class S3Driver {
|
|
|
61
76
|
return response.Body;
|
|
62
77
|
}
|
|
63
78
|
async delete(path) {
|
|
79
|
+
(0, path_utils_1.validatePath)(path);
|
|
64
80
|
const key = this.normalizeKey(path);
|
|
65
81
|
const command = new client_s3_1.DeleteObjectCommand({
|
|
66
82
|
Bucket: this.bucket,
|
|
@@ -75,6 +91,7 @@ class S3Driver {
|
|
|
75
91
|
}
|
|
76
92
|
}
|
|
77
93
|
async deleteMany(paths) {
|
|
94
|
+
(0, path_utils_1.validatePaths)(paths);
|
|
78
95
|
if (paths.length === 0)
|
|
79
96
|
return true;
|
|
80
97
|
const command = new client_s3_1.DeleteObjectsCommand({
|
|
@@ -92,6 +109,7 @@ class S3Driver {
|
|
|
92
109
|
}
|
|
93
110
|
}
|
|
94
111
|
async exists(path) {
|
|
112
|
+
(0, path_utils_1.validatePath)(path);
|
|
95
113
|
const key = this.normalizeKey(path);
|
|
96
114
|
const command = new client_s3_1.HeadObjectCommand({
|
|
97
115
|
Bucket: this.bucket,
|
|
@@ -106,13 +124,18 @@ class S3Driver {
|
|
|
106
124
|
}
|
|
107
125
|
}
|
|
108
126
|
url(path) {
|
|
127
|
+
(0, path_utils_1.validatePath)(path);
|
|
109
128
|
const key = this.normalizeKey(path);
|
|
110
129
|
if (this.cdnUrl) {
|
|
111
130
|
return `${this.cdnUrl}/${key}`;
|
|
112
131
|
}
|
|
132
|
+
if (this.endpoint) {
|
|
133
|
+
return `${this.endpoint}/${this.bucket}/${key}`;
|
|
134
|
+
}
|
|
113
135
|
return `https://${this.bucket}.s3.amazonaws.com/${key}`;
|
|
114
136
|
}
|
|
115
137
|
async signedUrl(path, expiresIn) {
|
|
138
|
+
(0, path_utils_1.validatePath)(path);
|
|
116
139
|
const key = this.normalizeKey(path);
|
|
117
140
|
const command = new client_s3_1.GetObjectCommand({
|
|
118
141
|
Bucket: this.bucket,
|
|
@@ -123,11 +146,15 @@ class S3Driver {
|
|
|
123
146
|
});
|
|
124
147
|
}
|
|
125
148
|
async copy(from, to) {
|
|
149
|
+
(0, path_utils_1.validatePath)(from, 'from');
|
|
150
|
+
(0, path_utils_1.validatePath)(to, 'to');
|
|
126
151
|
const fromKey = this.normalizeKey(from);
|
|
127
152
|
const toKey = this.normalizeKey(to);
|
|
153
|
+
const encodedFromKey = encodeURIComponent(fromKey);
|
|
154
|
+
const copySource = `${this.bucket}/${encodedFromKey}`;
|
|
128
155
|
const command = new client_s3_1.CopyObjectCommand({
|
|
129
156
|
Bucket: this.bucket,
|
|
130
|
-
CopySource:
|
|
157
|
+
CopySource: copySource,
|
|
131
158
|
Key: toKey,
|
|
132
159
|
});
|
|
133
160
|
await this.client.send(command);
|
|
@@ -137,11 +164,14 @@ class S3Driver {
|
|
|
137
164
|
};
|
|
138
165
|
}
|
|
139
166
|
async move(from, to) {
|
|
167
|
+
(0, path_utils_1.validatePath)(from, 'from');
|
|
168
|
+
(0, path_utils_1.validatePath)(to, 'to');
|
|
140
169
|
const result = await this.copy(from, to);
|
|
141
170
|
await this.delete(from);
|
|
142
171
|
return result;
|
|
143
172
|
}
|
|
144
173
|
async stat(path) {
|
|
174
|
+
(0, path_utils_1.validatePath)(path);
|
|
145
175
|
const key = this.normalizeKey(path);
|
|
146
176
|
const command = new client_s3_1.HeadObjectCommand({
|
|
147
177
|
Bucket: this.bucket,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.driver.js","sourceRoot":"","sources":["../../src/drivers/s3.driver.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"s3.driver.js","sourceRoot":"","sources":["../../src/drivers/s3.driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.module.d.ts","sourceRoot":"","sources":["../src/storage.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"storage.module.d.ts","sourceRoot":"","sources":["../src/storage.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA6C,MAAM,gBAAgB,CAAC;AAG1F,OAAO,EACH,oBAAoB,EACpB,yBAAyB,EAG5B,MAAM,cAAc,CAAC;AAwEtB,qBACa,aAAa;IAKtB,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa;IA6B5D,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,yBAAyB,GAAG,aAAa;IA2BtE,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAqBnC,OAAO,CAAC,MAAM,CAAC,0BAA0B;CAsB5C"}
|
package/dist/storage.module.js
CHANGED
|
@@ -21,7 +21,9 @@ async function createDriver(config) {
|
|
|
21
21
|
driver = new local_driver_1.LocalDriver(config);
|
|
22
22
|
break;
|
|
23
23
|
case 's3':
|
|
24
|
-
|
|
24
|
+
const s3Driver = new s3_driver_1.S3Driver(config);
|
|
25
|
+
await s3Driver.ensureBucketExists();
|
|
26
|
+
driver = s3Driver;
|
|
25
27
|
break;
|
|
26
28
|
case 'azure':
|
|
27
29
|
const azureDriver = new azure_blob_driver_1.AzureBlobDriver(config);
|
|
@@ -41,6 +43,26 @@ async function createDriversMap(options) {
|
|
|
41
43
|
}
|
|
42
44
|
return drivers;
|
|
43
45
|
}
|
|
46
|
+
class StorageDriversCleaner {
|
|
47
|
+
constructor(drivers) {
|
|
48
|
+
this.drivers = drivers;
|
|
49
|
+
this.logger = new common_1.Logger(StorageDriversCleaner.name);
|
|
50
|
+
}
|
|
51
|
+
async onModuleDestroy() {
|
|
52
|
+
this.logger.log('Cleaning up storage drivers...');
|
|
53
|
+
for (const [diskName, driver] of this.drivers) {
|
|
54
|
+
try {
|
|
55
|
+
if (driver instanceof s3_driver_1.S3Driver) {
|
|
56
|
+
await driver.destroy();
|
|
57
|
+
this.logger.debug(`Destroyed S3 driver for disk: ${diskName}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
this.logger.error(`Failed to destroy driver for disk ${diskName}: ${error}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
44
66
|
let StorageModule = StorageModule_1 = class StorageModule {
|
|
45
67
|
static forRoot(options) {
|
|
46
68
|
const driversProvider = {
|
|
@@ -51,10 +73,15 @@ let StorageModule = StorageModule_1 = class StorageModule {
|
|
|
51
73
|
provide: storage_constants_1.STORAGE_MODULE_OPTIONS,
|
|
52
74
|
useValue: options,
|
|
53
75
|
};
|
|
76
|
+
const cleanerProvider = {
|
|
77
|
+
provide: StorageDriversCleaner,
|
|
78
|
+
useFactory: (drivers) => new StorageDriversCleaner(drivers),
|
|
79
|
+
inject: [storage_constants_1.STORAGE_DRIVERS],
|
|
80
|
+
};
|
|
54
81
|
return {
|
|
55
82
|
module: StorageModule_1,
|
|
56
83
|
global: true,
|
|
57
|
-
providers: [optionsProvider, driversProvider, storage_service_1.StorageService],
|
|
84
|
+
providers: [optionsProvider, driversProvider, cleanerProvider, storage_service_1.StorageService],
|
|
58
85
|
exports: [storage_service_1.StorageService],
|
|
59
86
|
};
|
|
60
87
|
}
|
|
@@ -65,11 +92,16 @@ let StorageModule = StorageModule_1 = class StorageModule {
|
|
|
65
92
|
useFactory: async (moduleOptions) => await createDriversMap(moduleOptions),
|
|
66
93
|
inject: [storage_constants_1.STORAGE_MODULE_OPTIONS],
|
|
67
94
|
};
|
|
95
|
+
const cleanerProvider = {
|
|
96
|
+
provide: StorageDriversCleaner,
|
|
97
|
+
useFactory: (drivers) => new StorageDriversCleaner(drivers),
|
|
98
|
+
inject: [storage_constants_1.STORAGE_DRIVERS],
|
|
99
|
+
};
|
|
68
100
|
return {
|
|
69
101
|
module: StorageModule_1,
|
|
70
102
|
global: true,
|
|
71
103
|
imports: options.imports || [],
|
|
72
|
-
providers: [...asyncProviders, driversProvider, storage_service_1.StorageService],
|
|
104
|
+
providers: [...asyncProviders, driversProvider, cleanerProvider, storage_service_1.StorageService],
|
|
73
105
|
exports: [storage_service_1.StorageService],
|
|
74
106
|
};
|
|
75
107
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.module.js","sourceRoot":"","sources":["../src/storage.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"storage.module.js","sourceRoot":"","sources":["../src/storage.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,4 +4,6 @@ export declare function dirname(filePath: string): string;
|
|
|
4
4
|
export declare function trimLeadingSlash(filePath: string): string;
|
|
5
5
|
export declare function trimTrailingSlash(filePath: string): string;
|
|
6
6
|
export declare function ensureTrailingSlash(filePath: string): string;
|
|
7
|
+
export declare function validatePath(filePath: string, paramName?: string): void;
|
|
8
|
+
export declare function validatePaths(paths: string[], paramName?: string): void;
|
|
7
9
|
//# sourceMappingURL=path.utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path.utils.d.ts","sourceRoot":"","sources":["../../src/utils/path.utils.ts"],"names":[],"mappings":"AAKA,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD;AAKD,wBAAgB,QAAQ,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAEnD;AAKD,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhD;AAKD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzD;AAKD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAKD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D"}
|
|
1
|
+
{"version":3,"file":"path.utils.d.ts","sourceRoot":"","sources":["../../src/utils/path.utils.ts"],"names":[],"mappings":"AAKA,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD;AAKD,wBAAgB,QAAQ,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAEnD;AAKD,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhD;AAKD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzD;AAKD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAKD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D;AAMD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,GAAG,IAAI,CAU/E;AAMD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,GAAE,MAAgB,GAAG,IAAI,CAUhF"}
|
package/dist/utils/path.utils.js
CHANGED
|
@@ -39,6 +39,8 @@ exports.dirname = dirname;
|
|
|
39
39
|
exports.trimLeadingSlash = trimLeadingSlash;
|
|
40
40
|
exports.trimTrailingSlash = trimTrailingSlash;
|
|
41
41
|
exports.ensureTrailingSlash = ensureTrailingSlash;
|
|
42
|
+
exports.validatePath = validatePath;
|
|
43
|
+
exports.validatePaths = validatePaths;
|
|
42
44
|
const path = __importStar(require("path"));
|
|
43
45
|
function normalizePath(filePath) {
|
|
44
46
|
return filePath.replace(/\\/g, '/');
|
|
@@ -58,4 +60,26 @@ function trimTrailingSlash(filePath) {
|
|
|
58
60
|
function ensureTrailingSlash(filePath) {
|
|
59
61
|
return trimTrailingSlash(filePath) + '/';
|
|
60
62
|
}
|
|
63
|
+
function validatePath(filePath, paramName = 'path') {
|
|
64
|
+
if (filePath === undefined || filePath === null) {
|
|
65
|
+
throw new Error(`${paramName} is required`);
|
|
66
|
+
}
|
|
67
|
+
if (typeof filePath !== 'string') {
|
|
68
|
+
throw new Error(`${paramName} must be a string`);
|
|
69
|
+
}
|
|
70
|
+
if (filePath.trim() === '') {
|
|
71
|
+
throw new Error(`${paramName} cannot be empty`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function validatePaths(paths, paramName = 'paths') {
|
|
75
|
+
if (paths === undefined || paths === null) {
|
|
76
|
+
throw new Error(`${paramName} is required`);
|
|
77
|
+
}
|
|
78
|
+
if (!Array.isArray(paths)) {
|
|
79
|
+
throw new Error(`${paramName} must be an array`);
|
|
80
|
+
}
|
|
81
|
+
paths.forEach((p, index) => {
|
|
82
|
+
validatePath(p, `${paramName}[${index}]`);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
61
85
|
//# sourceMappingURL=path.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path.utils.js","sourceRoot":"","sources":["../../src/utils/path.utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,sCAEC;AAKD,4BAEC;AAKD,0BAEC;AAKD,4CAEC;AAKD,8CAEC;AAKD,kDAEC;
|
|
1
|
+
{"version":3,"file":"path.utils.js","sourceRoot":"","sources":["../../src/utils/path.utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,sCAEC;AAKD,4BAEC;AAKD,0BAEC;AAKD,4CAEC;AAKD,8CAEC;AAKD,kDAEC;AAMD,oCAUC;AAMD,sCAUC;AA1ED,2CAA6B;AAK7B,SAAgB,aAAa,CAAC,QAAgB;IAC1C,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC;AAKD,SAAgB,QAAQ,CAAC,GAAG,KAAe;IACvC,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAC9C,CAAC;AAKD,SAAgB,OAAO,CAAC,QAAgB;IACpC,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjD,CAAC;AAKD,SAAgB,gBAAgB,CAAC,QAAgB;IAC7C,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAKD,SAAgB,iBAAiB,CAAC,QAAgB;IAC9C,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAKD,SAAgB,mBAAmB,CAAC,QAAgB;IAChD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;AAC7C,CAAC;AAMD,SAAgB,YAAY,CAAC,QAAgB,EAAE,YAAoB,MAAM;IACrE,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,cAAc,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,mBAAmB,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,kBAAkB,CAAC,CAAC;IACpD,CAAC;AACL,CAAC;AAMD,SAAgB,aAAa,CAAC,KAAe,EAAE,YAAoB,OAAO;IACtE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,cAAc,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,mBAAmB,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QACvB,YAAY,CAAC,CAAC,EAAE,GAAG,SAAS,IAAI,KAAK,GAAG,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/package.json
CHANGED