@arikajs/storage 0.0.3 → 0.0.5
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/README.md +77 -19
- package/dist/Contracts/Filesystem.d.ts +16 -0
- package/dist/Contracts/Filesystem.d.ts.map +1 -1
- package/dist/Disk.d.ts +16 -0
- package/dist/Disk.d.ts.map +1 -1
- package/dist/Disk.js +69 -0
- package/dist/Disk.js.map +1 -1
- package/dist/Drivers/AzureDriver.d.ts +26 -0
- package/dist/Drivers/AzureDriver.d.ts.map +1 -0
- package/dist/Drivers/AzureDriver.js +144 -0
- package/dist/Drivers/AzureDriver.js.map +1 -0
- package/dist/Drivers/GCSDriver.d.ts +31 -0
- package/dist/Drivers/GCSDriver.d.ts.map +1 -0
- package/dist/Drivers/GCSDriver.js +138 -0
- package/dist/Drivers/GCSDriver.js.map +1 -0
- package/dist/StorageManager.d.ts +10 -0
- package/dist/StorageManager.d.ts.map +1 -1
- package/dist/StorageManager.js +29 -0
- package/dist/StorageManager.js.map +1 -1
- package/dist/src/Contracts/Filesystem.d.ts +16 -0
- package/dist/src/Contracts/Filesystem.d.ts.map +1 -1
- package/dist/src/Disk.d.ts +16 -0
- package/dist/src/Disk.d.ts.map +1 -1
- package/dist/src/Disk.js +69 -0
- package/dist/src/Disk.js.map +1 -1
- package/dist/src/Drivers/AzureDriver.d.ts +26 -0
- package/dist/src/Drivers/AzureDriver.d.ts.map +1 -0
- package/dist/src/Drivers/AzureDriver.js +144 -0
- package/dist/src/Drivers/AzureDriver.js.map +1 -0
- package/dist/src/Drivers/GCSDriver.d.ts +31 -0
- package/dist/src/Drivers/GCSDriver.d.ts.map +1 -0
- package/dist/src/Drivers/GCSDriver.js +138 -0
- package/dist/src/Drivers/GCSDriver.js.map +1 -0
- package/dist/src/StorageManager.d.ts +10 -0
- package/dist/src/StorageManager.d.ts.map +1 -1
- package/dist/src/StorageManager.js +29 -0
- package/dist/src/StorageManager.js.map +1 -1
- package/dist/tests/EnterpriseFeatures.test.d.ts +2 -0
- package/dist/tests/EnterpriseFeatures.test.d.ts.map +1 -0
- package/dist/tests/EnterpriseFeatures.test.js +143 -0
- package/dist/tests/EnterpriseFeatures.test.js.map +1 -0
- package/package.json +54 -50
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
`@arikajs/storage` is the filesystem abstraction layer for the ArikaJS framework.
|
|
4
4
|
|
|
5
|
-
It provides a clean, unified API to work with local and cloud-based storage systems using interchangeable drivers,
|
|
5
|
+
It provides a clean, unified API to work with local and cloud-based storage systems using interchangeable drivers, designed for maximum developer experience but designed for Node.js and TypeScript.
|
|
6
6
|
|
|
7
7
|
This package allows ArikaJS applications to interact with files without caring where or how they are stored.
|
|
8
8
|
|
|
@@ -12,12 +12,15 @@ This package allows ArikaJS applications to interact with files without caring w
|
|
|
12
12
|
|
|
13
13
|
- **Multiple storage disks**: Configure different storage locations
|
|
14
14
|
- **Driver-based filesystem architecture**: Pluggable storage backends
|
|
15
|
+
- **Storage Extensibility**: Register custom drivers via `extend()`
|
|
16
|
+
- **Middleware pipelines**: Intercept operations via `disk().middleware()`
|
|
15
17
|
- **Local filesystem driver**: Built-in support for local file storage (v1)
|
|
16
|
-
- **Unified file API**: `put`, `get`, `delete`, `exists`, `url`
|
|
18
|
+
- **Unified file API**: `put`, `get`, `delete`, `exists`, `url`, `copy`, `move`
|
|
19
|
+
- **File mutation API**: `append`, `prepend`
|
|
17
20
|
- **Buffer, string, and stream support**: Flexible content handling
|
|
18
21
|
- **Configuration-based disk resolution**: Easy setup via config files
|
|
19
22
|
- **TypeScript-first**: Full type safety with JavaScript compatibility
|
|
20
|
-
- **Designed for cloud drivers**: Ready for S3, GCS, Azure (
|
|
23
|
+
- **Designed for cloud drivers**: Ready for S3, GCS, Azure (S3 shipped)
|
|
21
24
|
|
|
22
25
|
---
|
|
23
26
|
|
|
@@ -97,8 +100,8 @@ export default {
|
|
|
97
100
|
| :--- | :--- |
|
|
98
101
|
| Local filesystem | ✅ Supported |
|
|
99
102
|
| Amazon S3 | ✅ Supported |
|
|
100
|
-
| Google Cloud Storage |
|
|
101
|
-
| Azure Blob Storage |
|
|
103
|
+
| Google Cloud Storage | ✅ Supported |
|
|
104
|
+
| Azure Blob Storage | ✅ Supported |
|
|
102
105
|
|
|
103
106
|
---
|
|
104
107
|
|
|
@@ -138,6 +141,38 @@ Delete a file.
|
|
|
138
141
|
await Storage.delete('file.txt');
|
|
139
142
|
```
|
|
140
143
|
|
|
144
|
+
### `Storage.copy(path, newPath)`
|
|
145
|
+
|
|
146
|
+
Copy a file to a new location.
|
|
147
|
+
|
|
148
|
+
```ts
|
|
149
|
+
await Storage.copy('file.txt', 'backup.txt');
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### `Storage.move(path, newPath)`
|
|
153
|
+
|
|
154
|
+
Move a file to a new location.
|
|
155
|
+
|
|
156
|
+
```ts
|
|
157
|
+
await Storage.move('file.txt', 'archive.txt');
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### `Storage.append(path, contents)`
|
|
161
|
+
|
|
162
|
+
Append contents to a file.
|
|
163
|
+
|
|
164
|
+
```ts
|
|
165
|
+
await Storage.append('log.txt', 'New log entry');
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### `Storage.prepend(path, contents)`
|
|
169
|
+
|
|
170
|
+
Prepend contents to a file.
|
|
171
|
+
|
|
172
|
+
```ts
|
|
173
|
+
await Storage.prepend('log.txt', 'First entry');
|
|
174
|
+
```
|
|
175
|
+
|
|
141
176
|
### `Storage.url(path)`
|
|
142
177
|
|
|
143
178
|
Get the public URL for a file.
|
|
@@ -150,26 +185,27 @@ Returns a public URL if supported by the disk.
|
|
|
150
185
|
|
|
151
186
|
---
|
|
152
187
|
|
|
153
|
-
##
|
|
188
|
+
## 🏗 Architecture
|
|
154
189
|
|
|
155
|
-
```
|
|
190
|
+
```text
|
|
156
191
|
storage/
|
|
157
192
|
├── src/
|
|
158
|
-
│ ├──
|
|
159
|
-
│
|
|
160
|
-
│ ├── Drivers
|
|
161
|
-
│ │
|
|
162
|
-
│ ├──
|
|
163
|
-
│ │
|
|
164
|
-
│
|
|
193
|
+
│ ├── Contracts
|
|
194
|
+
│ │ └── Filesystem.ts
|
|
195
|
+
│ ├── Drivers
|
|
196
|
+
│ │ ├── AzureDriver.ts
|
|
197
|
+
│ │ ├── GCSDriver.ts
|
|
198
|
+
│ │ ├── LocalDriver.ts
|
|
199
|
+
│ │ └── S3Driver.ts
|
|
200
|
+
│ ├── Exceptions
|
|
165
201
|
│ │ └── FileNotFoundException.ts
|
|
166
|
-
│
|
|
202
|
+
│ ├── Disk.ts
|
|
203
|
+
│ ├── index.ts
|
|
204
|
+
│ └── StorageManager.ts
|
|
167
205
|
├── tests/
|
|
168
|
-
│ └── Storage.test.ts
|
|
169
206
|
├── package.json
|
|
170
207
|
├── tsconfig.json
|
|
171
|
-
|
|
172
|
-
└── LICENSE
|
|
208
|
+
└── README.md
|
|
173
209
|
```
|
|
174
210
|
|
|
175
211
|
---
|
|
@@ -204,7 +240,27 @@ class CustomDriver implements Filesystem {
|
|
|
204
240
|
}
|
|
205
241
|
```
|
|
206
242
|
|
|
207
|
-
Register it inside `StorageManager
|
|
243
|
+
Register it inside `StorageManager` using the `extend()` method:
|
|
244
|
+
```ts
|
|
245
|
+
storage.extend('custom', (config) => new CustomDriver(config));
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## 🚦 Storage Middleware
|
|
251
|
+
|
|
252
|
+
You can attach disk-level middleware to intercept any storage operations (e.g., logging every write, encrypting payloads on `.put()`, etc.).
|
|
253
|
+
|
|
254
|
+
```ts
|
|
255
|
+
storage.disk('local').middleware(async (data, next) => {
|
|
256
|
+
if (data.operation === 'put') {
|
|
257
|
+
console.log(`Writing file: ${data.path}`);
|
|
258
|
+
// Optionally modify payload before saving!
|
|
259
|
+
// data.contents = encrypt(data.contents);
|
|
260
|
+
}
|
|
261
|
+
return await next(data);
|
|
262
|
+
});
|
|
263
|
+
```
|
|
208
264
|
|
|
209
265
|
---
|
|
210
266
|
|
|
@@ -229,6 +285,8 @@ The storage layer is fully testable by mocking drivers or using temporary disks.
|
|
|
229
285
|
## 🛣 Roadmap
|
|
230
286
|
|
|
231
287
|
- [x] S3 driver
|
|
288
|
+
- [x] GCS driver
|
|
289
|
+
- [x] Azure Blob driver
|
|
232
290
|
- [x] Streaming API
|
|
233
291
|
- [x] Temporary signed URLs
|
|
234
292
|
- [x] Disk-level middleware
|
|
@@ -44,5 +44,21 @@ export interface Filesystem {
|
|
|
44
44
|
* Get the mime type of the file.
|
|
45
45
|
*/
|
|
46
46
|
mimeType(path: string): Promise<string>;
|
|
47
|
+
/**
|
|
48
|
+
* Copy a file to a new location.
|
|
49
|
+
*/
|
|
50
|
+
copy?(path: string, newPath: string): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Move a file to a new location.
|
|
53
|
+
*/
|
|
54
|
+
move?(path: string, newPath: string): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Append to a file.
|
|
57
|
+
*/
|
|
58
|
+
append?(path: string, contents: string | Buffer): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Prepend to a file.
|
|
61
|
+
*/
|
|
62
|
+
prepend?(path: string, contents: string | Buffer): Promise<void>;
|
|
47
63
|
}
|
|
48
64
|
//# sourceMappingURL=Filesystem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filesystem.d.ts","sourceRoot":"","sources":["../../src/Contracts/Filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAY,MAAM,QAAQ,CAAC;AAE5C,MAAM,WAAW,UAAU;IACvB;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5D;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzD;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IAEnC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAE1B;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7D;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpC;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5C;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Filesystem.d.ts","sourceRoot":"","sources":["../../src/Contracts/Filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAY,MAAM,QAAQ,CAAC;AAE5C,MAAM,WAAW,UAAU;IACvB;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5D;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzD;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IAEnC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAE1B;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7D;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpC;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5C;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAExC;;OAEG;IACH,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD;;OAEG;IACH,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD;;OAEG;IACH,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;OAEG;IACH,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpE"}
|
package/dist/Disk.d.ts
CHANGED
|
@@ -56,5 +56,21 @@ export declare class Disk {
|
|
|
56
56
|
* Get the mime type of the file.
|
|
57
57
|
*/
|
|
58
58
|
mimeType(path: string): Promise<string>;
|
|
59
|
+
/**
|
|
60
|
+
* Copy a file to a new location.
|
|
61
|
+
*/
|
|
62
|
+
copy(path: string, newPath: string): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Move a file to a new location.
|
|
65
|
+
*/
|
|
66
|
+
move(path: string, newPath: string): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Append to a file.
|
|
69
|
+
*/
|
|
70
|
+
append(path: string, contents: string | Buffer): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Prepend to a file.
|
|
73
|
+
*/
|
|
74
|
+
prepend(path: string, contents: string | Buffer): Promise<void>;
|
|
59
75
|
}
|
|
60
76
|
//# sourceMappingURL=Disk.d.ts.map
|
package/dist/Disk.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Disk.d.ts","sourceRoot":"","sources":["../src/Disk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,qBAAa,IAAI;IACb,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,WAAW,CAAa;gBAEpB,MAAM,EAAE,UAAU;IAI9B;;OAEG;IACI,UAAU,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI;IAKxC;;OAEG;cACa,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAYlH;;OAEG;IACU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxE;;OAEG;IACU,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrE;;OAEG;IACU,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM/C;;OAEG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAOzC;;OAEG;IACU,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMnD;;OAEG;IACU,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhD;;OAEG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIhC;;OAEG;IACU,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAMzE;;OAEG;IACU,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMhD;;OAEG;IACU,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMxD;;OAEG;IACU,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"Disk.d.ts","sourceRoot":"","sources":["../src/Disk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,qBAAa,IAAI;IACb,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,WAAW,CAAa;gBAEpB,MAAM,EAAE,UAAU;IAI9B;;OAEG;IACI,UAAU,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI;IAKxC;;OAEG;cACa,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAYlH;;OAEG;IACU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxE;;OAEG;IACU,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrE;;OAEG;IACU,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM/C;;OAEG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAOzC;;OAEG;IACU,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMnD;;OAEG;IACU,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhD;;OAEG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIhC;;OAEG;IACU,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAMzE;;OAEG;IACU,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMhD;;OAEG;IACU,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMxD;;OAEG;IACU,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMpD;;OAEG;IACU,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/D;;OAEG;IACU,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY/D;;OAEG;IACU,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB3E;;OAEG;IACU,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAmB/E"}
|
package/dist/Disk.js
CHANGED
|
@@ -114,6 +114,75 @@ class Disk {
|
|
|
114
114
|
return await this.driver.mimeType(data.path);
|
|
115
115
|
});
|
|
116
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Copy a file to a new location.
|
|
119
|
+
*/
|
|
120
|
+
async copy(path, newPath) {
|
|
121
|
+
return await this.runPipeline('copy', { path, newPath }, async (data) => {
|
|
122
|
+
if (typeof this.driver.copy === 'function') {
|
|
123
|
+
return await this.driver.copy(data.path, data.newPath);
|
|
124
|
+
}
|
|
125
|
+
// Fallback
|
|
126
|
+
const content = await this.driver.get(data.path);
|
|
127
|
+
await this.driver.put(data.newPath, content);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Move a file to a new location.
|
|
132
|
+
*/
|
|
133
|
+
async move(path, newPath) {
|
|
134
|
+
return await this.runPipeline('move', { path, newPath }, async (data) => {
|
|
135
|
+
if (typeof this.driver.move === 'function') {
|
|
136
|
+
return await this.driver.move(data.path, data.newPath);
|
|
137
|
+
}
|
|
138
|
+
// Fallback
|
|
139
|
+
const content = await this.driver.get(data.path);
|
|
140
|
+
await this.driver.put(data.newPath, content);
|
|
141
|
+
await this.driver.delete(data.path);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Append to a file.
|
|
146
|
+
*/
|
|
147
|
+
async append(path, contents) {
|
|
148
|
+
return await this.runPipeline('append', { path, contents }, async (data) => {
|
|
149
|
+
if (typeof this.driver.append === 'function') {
|
|
150
|
+
return await this.driver.append(data.path, data.contents);
|
|
151
|
+
}
|
|
152
|
+
// Fallback
|
|
153
|
+
let existing = '';
|
|
154
|
+
try {
|
|
155
|
+
existing = await this.driver.get(data.path);
|
|
156
|
+
}
|
|
157
|
+
catch (e) { } // Ignore if it doesn't exist
|
|
158
|
+
const separator = existing.length > 0 ? '\n' : '';
|
|
159
|
+
const newContent = Buffer.isBuffer(existing)
|
|
160
|
+
? Buffer.concat([existing, Buffer.from(separator), Buffer.isBuffer(data.contents) ? data.contents : Buffer.from(data.contents)])
|
|
161
|
+
: existing + separator + data.contents;
|
|
162
|
+
return await this.driver.put(data.path, newContent);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Prepend to a file.
|
|
167
|
+
*/
|
|
168
|
+
async prepend(path, contents) {
|
|
169
|
+
return await this.runPipeline('prepend', { path, contents }, async (data) => {
|
|
170
|
+
if (typeof this.driver.prepend === 'function') {
|
|
171
|
+
return await this.driver.prepend(data.path, data.contents);
|
|
172
|
+
}
|
|
173
|
+
// Fallback
|
|
174
|
+
let existing = '';
|
|
175
|
+
try {
|
|
176
|
+
existing = await this.driver.get(data.path);
|
|
177
|
+
}
|
|
178
|
+
catch (e) { } // Ignore if it doesn't exist
|
|
179
|
+
const separator = existing.length > 0 ? '\n' : '';
|
|
180
|
+
const newContent = Buffer.isBuffer(existing)
|
|
181
|
+
? Buffer.concat([Buffer.isBuffer(data.contents) ? data.contents : Buffer.from(data.contents), Buffer.from(separator), existing])
|
|
182
|
+
: data.contents + separator + existing;
|
|
183
|
+
return await this.driver.put(data.path, newContent);
|
|
184
|
+
});
|
|
185
|
+
}
|
|
117
186
|
}
|
|
118
187
|
exports.Disk = Disk;
|
|
119
188
|
//# sourceMappingURL=Disk.js.map
|
package/dist/Disk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Disk.js","sourceRoot":"","sources":["../src/Disk.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Disk.js","sourceRoot":"","sources":["../src/Disk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Filesystem } from '../Contracts/Filesystem';
|
|
2
|
+
import { BlobServiceClient, ContainerClient } from '@azure/storage-blob';
|
|
3
|
+
import { Readable } from 'stream';
|
|
4
|
+
export declare class AzureDriver implements Filesystem {
|
|
5
|
+
protected client: BlobServiceClient;
|
|
6
|
+
protected container: ContainerClient;
|
|
7
|
+
protected containerName: string;
|
|
8
|
+
protected urlEndpoint?: string;
|
|
9
|
+
constructor(config: {
|
|
10
|
+
connectionString: string;
|
|
11
|
+
container: string;
|
|
12
|
+
url?: string;
|
|
13
|
+
});
|
|
14
|
+
put(path: string, contents: string | Buffer): Promise<void>;
|
|
15
|
+
putStream(path: string, stream: Readable): Promise<void>;
|
|
16
|
+
get(path: string): Promise<Buffer>;
|
|
17
|
+
readStream(path: string): Readable;
|
|
18
|
+
exists(path: string): Promise<boolean>;
|
|
19
|
+
delete(path: string): Promise<void>;
|
|
20
|
+
url(path: string): string;
|
|
21
|
+
temporaryUrl(path: string, expiresAt: Date): Promise<string>;
|
|
22
|
+
size(path: string): Promise<number>;
|
|
23
|
+
lastModified(path: string): Promise<number>;
|
|
24
|
+
mimeType(path: string): Promise<string>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=AzureDriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AzureDriver.d.ts","sourceRoot":"","sources":["../../src/Drivers/AzureDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAsB,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGlC,qBAAa,WAAY,YAAW,UAAU;IAC1C,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACpC,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC;IACrC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;gBAEnB,MAAM,EAAE;QAChB,gBAAgB,EAAE,MAAM,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;KAChB;IAOK,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3D,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYxC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAgB5B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASzC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAQnB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB5D,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMnC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM3C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAKhD"}
|
|
@@ -0,0 +1,144 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.AzureDriver = void 0;
|
|
37
|
+
const storage_blob_1 = require("@azure/storage-blob");
|
|
38
|
+
const mime = __importStar(require("mime-types"));
|
|
39
|
+
class AzureDriver {
|
|
40
|
+
constructor(config) {
|
|
41
|
+
this.client = storage_blob_1.BlobServiceClient.fromConnectionString(config.connectionString);
|
|
42
|
+
this.containerName = config.container;
|
|
43
|
+
this.container = this.client.getContainerClient(config.container);
|
|
44
|
+
this.urlEndpoint = config.url;
|
|
45
|
+
}
|
|
46
|
+
async put(path, contents) {
|
|
47
|
+
const blockBlobClient = this.container.getBlockBlobClient(path);
|
|
48
|
+
const buffer = Buffer.isBuffer(contents) ? contents : Buffer.from(contents);
|
|
49
|
+
await blockBlobClient.uploadData(buffer, {
|
|
50
|
+
blobHTTPHeaders: {
|
|
51
|
+
blobContentType: mime.lookup(path) || 'application/octet-stream'
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
async putStream(path, stream) {
|
|
56
|
+
const blockBlobClient = this.container.getBlockBlobClient(path);
|
|
57
|
+
await blockBlobClient.uploadStream(stream, 4 * 1024 * 1024, 20, {
|
|
58
|
+
blobHTTPHeaders: {
|
|
59
|
+
blobContentType: mime.lookup(path) || 'application/octet-stream'
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
async get(path) {
|
|
64
|
+
try {
|
|
65
|
+
const blockBlobClient = this.container.getBlockBlobClient(path);
|
|
66
|
+
return await blockBlobClient.downloadToBuffer();
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
if (error.statusCode === 404) {
|
|
70
|
+
throw new Error(`File not found: ${path}`);
|
|
71
|
+
}
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
readStream(path) {
|
|
76
|
+
const blockBlobClient = this.container.getBlockBlobClient(path);
|
|
77
|
+
const { PassThrough } = require('stream');
|
|
78
|
+
const passThrough = new PassThrough();
|
|
79
|
+
blockBlobClient.download().then((response) => {
|
|
80
|
+
if (response.readableStreamBody) {
|
|
81
|
+
response.readableStreamBody.pipe(passThrough);
|
|
82
|
+
}
|
|
83
|
+
}).catch((err) => {
|
|
84
|
+
passThrough.emit('error', err);
|
|
85
|
+
});
|
|
86
|
+
return passThrough;
|
|
87
|
+
}
|
|
88
|
+
async exists(path) {
|
|
89
|
+
const blockBlobClient = this.container.getBlockBlobClient(path);
|
|
90
|
+
return await blockBlobClient.exists();
|
|
91
|
+
}
|
|
92
|
+
async delete(path) {
|
|
93
|
+
try {
|
|
94
|
+
const blockBlobClient = this.container.getBlockBlobClient(path);
|
|
95
|
+
await blockBlobClient.delete();
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
if (error.statusCode !== 404)
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
url(path) {
|
|
103
|
+
if (this.urlEndpoint) {
|
|
104
|
+
return `${this.urlEndpoint}/${path}`;
|
|
105
|
+
}
|
|
106
|
+
const blockBlobClient = this.container.getBlockBlobClient(path);
|
|
107
|
+
return blockBlobClient.url;
|
|
108
|
+
}
|
|
109
|
+
async temporaryUrl(path, expiresAt) {
|
|
110
|
+
try {
|
|
111
|
+
const blockBlobClient = this.container.getBlockBlobClient(path);
|
|
112
|
+
const permissions = new storage_blob_1.BlobSASPermissions();
|
|
113
|
+
permissions.read = true;
|
|
114
|
+
const sasUrl = await blockBlobClient.generateSasUrl({
|
|
115
|
+
permissions,
|
|
116
|
+
expiresOn: expiresAt
|
|
117
|
+
});
|
|
118
|
+
return sasUrl;
|
|
119
|
+
}
|
|
120
|
+
catch (e) {
|
|
121
|
+
if (e.message?.includes('generateSasUrl') || e.message?.includes('StorageSharedKeyCredential')) {
|
|
122
|
+
throw new Error("Temporary URL requires Shared Key Credential which must be parsed from Connection String. Alternatively configure SAS manually.");
|
|
123
|
+
}
|
|
124
|
+
throw e;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
async size(path) {
|
|
128
|
+
const blockBlobClient = this.container.getBlockBlobClient(path);
|
|
129
|
+
const properties = await blockBlobClient.getProperties();
|
|
130
|
+
return properties.contentLength || 0;
|
|
131
|
+
}
|
|
132
|
+
async lastModified(path) {
|
|
133
|
+
const blockBlobClient = this.container.getBlockBlobClient(path);
|
|
134
|
+
const properties = await blockBlobClient.getProperties();
|
|
135
|
+
return properties.lastModified?.getTime() || 0;
|
|
136
|
+
}
|
|
137
|
+
async mimeType(path) {
|
|
138
|
+
const blockBlobClient = this.container.getBlockBlobClient(path);
|
|
139
|
+
const properties = await blockBlobClient.getProperties();
|
|
140
|
+
return properties.contentType || mime.lookup(path) || 'application/octet-stream';
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
exports.AzureDriver = AzureDriver;
|
|
144
|
+
//# sourceMappingURL=AzureDriver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AzureDriver.js","sourceRoot":"","sources":["../../src/Drivers/AzureDriver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Filesystem } from '../Contracts/Filesystem';
|
|
2
|
+
import { Storage as GCSStorage, Bucket } from '@google-cloud/storage';
|
|
3
|
+
import { Readable } from 'stream';
|
|
4
|
+
export declare class GCSDriver implements Filesystem {
|
|
5
|
+
protected client: GCSStorage;
|
|
6
|
+
protected bucket: Bucket;
|
|
7
|
+
protected bucketName: string;
|
|
8
|
+
protected urlEndpoint?: string;
|
|
9
|
+
constructor(config: {
|
|
10
|
+
projectId?: string;
|
|
11
|
+
keyFilename?: string;
|
|
12
|
+
bucket: string;
|
|
13
|
+
url?: string;
|
|
14
|
+
credentials?: any;
|
|
15
|
+
});
|
|
16
|
+
private getFile;
|
|
17
|
+
put(path: string, contents: string | Buffer): Promise<void>;
|
|
18
|
+
putStream(path: string, stream: Readable): Promise<void>;
|
|
19
|
+
get(path: string): Promise<Buffer>;
|
|
20
|
+
readStream(path: string): Readable;
|
|
21
|
+
exists(path: string): Promise<boolean>;
|
|
22
|
+
delete(path: string): Promise<void>;
|
|
23
|
+
url(path: string): string;
|
|
24
|
+
temporaryUrl(path: string, expiresAt: Date): Promise<string>;
|
|
25
|
+
size(path: string): Promise<number>;
|
|
26
|
+
lastModified(path: string): Promise<number>;
|
|
27
|
+
mimeType(path: string): Promise<string>;
|
|
28
|
+
copy(path: string, newPath: string): Promise<void>;
|
|
29
|
+
move(path: string, newPath: string): Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=GCSDriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GCSDriver.d.ts","sourceRoot":"","sources":["../../src/Drivers/GCSDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,EAAQ,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGlC,qBAAa,SAAU,YAAW,UAAU;IACxC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC;IAC7B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;gBAEnB,MAAM,EAAE;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,GAAG,CAAC;KACrB;IAYD,OAAO,CAAC,OAAO;IAIT,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3D,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYxC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAI5B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASzC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAOnB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAS5D,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKnC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK3C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKvC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG3D"}
|