@ostro/filesystem 1.0.3 → 2.0.0-alpha.1
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/adapter/CoreAdapter.d.ts +139 -0
- package/adapter/CoreAdapter.d.ts.map +1 -0
- package/adapter/CoreAdapter.js +164 -57
- package/adapter/CoreAdapter.js.map +1 -0
- package/adapter/azure.d.ts +36 -0
- package/adapter/azure.d.ts.map +1 -0
- package/adapter/azure.js +93 -56
- package/adapter/azure.js.map +1 -0
- package/adapter/local.d.ts +78 -0
- package/adapter/local.d.ts.map +1 -0
- package/adapter/local.js +136 -66
- package/adapter/local.js.map +1 -0
- package/adapter/s3.d.ts +36 -0
- package/adapter/s3.d.ts.map +1 -0
- package/adapter/s3.js +102 -70
- package/adapter/s3.js.map +1 -0
- package/callbackHandler.d.ts +69 -0
- package/callbackHandler.d.ts.map +1 -0
- package/callbackHandler.js +93 -23
- package/callbackHandler.js.map +1 -0
- package/clients/azure.d.ts +32 -0
- package/clients/azure.d.ts.map +1 -0
- package/clients/azure.js +43 -13
- package/clients/azure.js.map +1 -0
- package/clients/s3.d.ts +27 -0
- package/clients/s3.d.ts.map +1 -0
- package/clients/s3.js +40 -9
- package/clients/s3.js.map +1 -0
- package/directoryCreateException.d.ts +18 -0
- package/directoryCreateException.d.ts.map +1 -0
- package/directoryCreateException.js +27 -5
- package/directoryCreateException.js.map +1 -0
- package/fileDeleteException.d.ts +19 -0
- package/fileDeleteException.d.ts.map +1 -0
- package/fileDeleteException.js +28 -4
- package/fileDeleteException.js.map +1 -0
- package/fileNotFoundException.d.ts +18 -0
- package/fileNotFoundException.d.ts.map +1 -0
- package/fileNotFoundException.js +27 -5
- package/fileNotFoundException.js.map +1 -0
- package/fileUploadException.d.ts +18 -0
- package/fileUploadException.d.ts.map +1 -0
- package/fileUploadException.js +28 -5
- package/fileUploadException.js.map +1 -0
- package/filesystem.d.ts +300 -0
- package/filesystem.d.ts.map +1 -0
- package/filesystem.js +389 -192
- package/filesystem.js.map +1 -0
- package/filesystemAdapter.d.ts +91 -0
- package/filesystemAdapter.d.ts.map +1 -0
- package/filesystemAdapter.js +134 -52
- package/filesystemAdapter.js.map +1 -0
- package/filesystemManager.d.ts +94 -0
- package/filesystemManager.d.ts.map +1 -0
- package/filesystemManager.js +141 -57
- package/filesystemManager.js.map +1 -0
- package/filesystemServiceProvider.d.ts +40 -0
- package/filesystemServiceProvider.d.ts.map +1 -0
- package/filesystemServiceProvider.js +49 -21
- package/filesystemServiceProvider.js.map +1 -0
- package/invalidArgumentException.d.ts +17 -0
- package/invalidArgumentException.d.ts.map +1 -0
- package/invalidArgumentException.js +26 -4
- package/invalidArgumentException.js.map +1 -0
- package/package.json +24 -10
- package/.github/workflows/npm-publish.yml +0 -22
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import CoreAdapter from './CoreAdapter';
|
|
3
|
+
declare const kHandler: unique symbol;
|
|
4
|
+
/**
|
|
5
|
+
* Class Local.
|
|
6
|
+
*/
|
|
7
|
+
declare class Local extends CoreAdapter {
|
|
8
|
+
[kHandler]: any;
|
|
9
|
+
/**
|
|
10
|
+
* Create a new instance.
|
|
11
|
+
*
|
|
12
|
+
* @param root - Base root directory.
|
|
13
|
+
* @param $config - Configuration object.
|
|
14
|
+
*/
|
|
15
|
+
constructor(root: string, $config: Record<string, any>);
|
|
16
|
+
/**
|
|
17
|
+
* move method.
|
|
18
|
+
*
|
|
19
|
+
* @param path - Source path.
|
|
20
|
+
* @param newpath - Destination path.
|
|
21
|
+
* @param callback - Optional completion callback.
|
|
22
|
+
* @returns Promise if no callback, or void.
|
|
23
|
+
*/
|
|
24
|
+
move(path: string, newpath: any, callback?: Function): any;
|
|
25
|
+
/**
|
|
26
|
+
* delete method.
|
|
27
|
+
*
|
|
28
|
+
* @param $path - File or directory path to delete.
|
|
29
|
+
* @param options - Deletion options.
|
|
30
|
+
* @param callback - Completion callback.
|
|
31
|
+
*/
|
|
32
|
+
delete($path: string, options: Record<string, any>, callback: Function): void;
|
|
33
|
+
/**
|
|
34
|
+
* createDir method.
|
|
35
|
+
*
|
|
36
|
+
* @param $path - Directory path to create.
|
|
37
|
+
* @param options - Directory options.
|
|
38
|
+
* @param callback - Completion callback.
|
|
39
|
+
*/
|
|
40
|
+
createDir($path: string, options: Record<string, any>, callback: Function): void;
|
|
41
|
+
/**
|
|
42
|
+
* has method.
|
|
43
|
+
*
|
|
44
|
+
* @param $path - File path to check.
|
|
45
|
+
* @param options - Access options.
|
|
46
|
+
* @param callback - Result callback.
|
|
47
|
+
*/
|
|
48
|
+
has($path: string, options: {
|
|
49
|
+
constants: keyof typeof fs.constants | string;
|
|
50
|
+
}, callback: Function): void;
|
|
51
|
+
/**
|
|
52
|
+
* write method.
|
|
53
|
+
*
|
|
54
|
+
* @param $path - File path to write to.
|
|
55
|
+
* @param $contents - Content to write.
|
|
56
|
+
* @param options - Write options.
|
|
57
|
+
* @param rest - Extra arguments including callback.
|
|
58
|
+
*/
|
|
59
|
+
write($path: string, $contents: any, options?: Record<string, any>, ...rest: any[]): void;
|
|
60
|
+
/**
|
|
61
|
+
* read method.
|
|
62
|
+
*
|
|
63
|
+
* @param $path - File path to read from.
|
|
64
|
+
* @param options - Read options.
|
|
65
|
+
* @param callback - Result callback.
|
|
66
|
+
*/
|
|
67
|
+
read($path: string, options: Record<string, any>, callback: Function): void;
|
|
68
|
+
/**
|
|
69
|
+
* global method.
|
|
70
|
+
*
|
|
71
|
+
* @param $path - Optional path.
|
|
72
|
+
* @param options - Optional options.
|
|
73
|
+
* @param callback - Optional callback.
|
|
74
|
+
*/
|
|
75
|
+
global($path?: string, options?: Record<string, any>, callback?: Function): void;
|
|
76
|
+
}
|
|
77
|
+
export default Local;
|
|
78
|
+
//# sourceMappingURL=local.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/adapter/local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,WAAW,MAAM,eAAe,CAAC;AAIxC,QAAA,MAAM,QAAQ,EAAE,OAAO,MAA0B,CAAC;AAElD;;GAEG;AACH,cAAM,KAAM,SAAQ,WAAW;IAC3B,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC;IAEhB;;;;;OAKG;gBACS,IAAI,EAAE,MAAW,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAO3D;;;;;;;OAOG;IACI,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,GAAG;IAcjE;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAiBzF;;;;;;OAMG;IACI,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAgB5F;;;;;;OAMG;IACI,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,OAAO,EAAE,CAAC,SAAS,GAAG,MAAM,CAAA;KAA0B,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAiBvI;;;;;;;OAOG;IACI,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAkCpG;;;;;;OAMG;IACI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAwBvF;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI;CAE9F;AAED,eAAe,KAAK,CAAC"}
|
package/adapter/local.js
CHANGED
|
@@ -1,31 +1,62 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
7
|
+
const CoreAdapter_1 = __importDefault(require("./CoreAdapter"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const uuid_1 = require("uuid");
|
|
10
|
+
const kHandler = Symbol('handler');
|
|
11
|
+
/**
|
|
12
|
+
* Class Local.
|
|
13
|
+
*/
|
|
14
|
+
class Local extends CoreAdapter_1.default {
|
|
15
|
+
[kHandler];
|
|
16
|
+
/**
|
|
17
|
+
* Create a new instance.
|
|
18
|
+
*
|
|
19
|
+
* @param root - Base root directory.
|
|
20
|
+
* @param $config - Configuration object.
|
|
21
|
+
*/
|
|
8
22
|
constructor(root = '', $config) {
|
|
9
|
-
super()
|
|
10
|
-
this.setPathPrefix(root)
|
|
11
|
-
this.setConfig($config)
|
|
12
|
-
this[kHandler] = (typeof $config.handler == 'function' ? new $config.handler : (typeof $config.handler == 'object' ? $config.handler : {}))
|
|
23
|
+
super();
|
|
24
|
+
this.setPathPrefix(root);
|
|
25
|
+
this.setConfig($config);
|
|
26
|
+
this[kHandler] = (typeof $config.handler == 'function' ? new $config.handler() : (typeof $config.handler == 'object' ? $config.handler : {}));
|
|
13
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* move method.
|
|
30
|
+
*
|
|
31
|
+
* @param path - Source path.
|
|
32
|
+
* @param newpath - Destination path.
|
|
33
|
+
* @param callback - Optional completion callback.
|
|
34
|
+
* @returns Promise if no callback, or void.
|
|
35
|
+
*/
|
|
14
36
|
move(path, newpath, callback) {
|
|
15
|
-
if (callback)
|
|
16
|
-
return
|
|
37
|
+
if (callback) {
|
|
38
|
+
return fs_extra_1.default.move(path, newpath, {
|
|
17
39
|
overwrite: true
|
|
18
|
-
}, function(err, res) {
|
|
19
|
-
callback(err, res, newpath)
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
|
|
40
|
+
}, function (err, res) {
|
|
41
|
+
callback(err, res, newpath);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
return fs_extra_1.default.move(path, newpath, {
|
|
23
46
|
overwrite: true
|
|
24
|
-
})
|
|
47
|
+
});
|
|
48
|
+
}
|
|
25
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* delete method.
|
|
52
|
+
*
|
|
53
|
+
* @param $path - File or directory path to delete.
|
|
54
|
+
* @param options - Deletion options.
|
|
55
|
+
* @param callback - Completion callback.
|
|
56
|
+
*/
|
|
26
57
|
delete($path, options = {}, callback) {
|
|
27
|
-
|
|
28
|
-
|
|
58
|
+
const location = this.applyPathPrefix($path);
|
|
59
|
+
fs_extra_1.default.remove(location, (error) => {
|
|
29
60
|
if (typeof this[kHandler].delete == 'function') {
|
|
30
61
|
this[kHandler].delete({
|
|
31
62
|
basePath: location,
|
|
@@ -33,30 +64,46 @@ class Local extends CoreAdapter {
|
|
|
33
64
|
options,
|
|
34
65
|
callback,
|
|
35
66
|
error,
|
|
36
|
-
})
|
|
37
|
-
}
|
|
38
|
-
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
callback(error, true, location);
|
|
39
71
|
}
|
|
40
72
|
});
|
|
41
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* createDir method.
|
|
76
|
+
*
|
|
77
|
+
* @param $path - Directory path to create.
|
|
78
|
+
* @param options - Directory options.
|
|
79
|
+
* @param callback - Completion callback.
|
|
80
|
+
*/
|
|
42
81
|
createDir($path, options = {}, callback) {
|
|
43
|
-
|
|
44
|
-
|
|
82
|
+
const location = this.applyPathPrefix($path);
|
|
83
|
+
fs_extra_1.default.mkdir(location, { recursive: true }, (error) => {
|
|
45
84
|
if (typeof this[kHandler].createDir == 'function') {
|
|
46
85
|
this[kHandler].createDir({
|
|
47
86
|
path: $path,
|
|
48
87
|
options,
|
|
49
88
|
callback,
|
|
50
89
|
error,
|
|
51
|
-
})
|
|
52
|
-
}
|
|
53
|
-
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
callback(error, true, location);
|
|
54
94
|
}
|
|
55
95
|
});
|
|
56
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* has method.
|
|
99
|
+
*
|
|
100
|
+
* @param $path - File path to check.
|
|
101
|
+
* @param options - Access options.
|
|
102
|
+
* @param callback - Result callback.
|
|
103
|
+
*/
|
|
57
104
|
has($path, options = { constants: 'F_OK' }, callback) {
|
|
58
|
-
|
|
59
|
-
|
|
105
|
+
const location = this.applyPathPrefix($path);
|
|
106
|
+
fs_extra_1.default.access(location, fs_extra_1.default.constants[options.constants], (error) => {
|
|
60
107
|
if (typeof this[kHandler].has == 'function') {
|
|
61
108
|
this[kHandler].has({
|
|
62
109
|
basePath: location,
|
|
@@ -64,55 +111,66 @@ class Local extends CoreAdapter {
|
|
|
64
111
|
options,
|
|
65
112
|
callback,
|
|
66
113
|
error,
|
|
67
|
-
})
|
|
68
|
-
}
|
|
69
|
-
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
callback(error, true);
|
|
70
118
|
}
|
|
71
119
|
});
|
|
72
120
|
}
|
|
73
|
-
|
|
121
|
+
/**
|
|
122
|
+
* write method.
|
|
123
|
+
*
|
|
124
|
+
* @param $path - File path to write to.
|
|
125
|
+
* @param $contents - Content to write.
|
|
126
|
+
* @param options - Write options.
|
|
127
|
+
* @param rest - Extra arguments including callback.
|
|
128
|
+
*/
|
|
74
129
|
write($path, $contents, options = {}, ...rest) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
return path.join(location,v4())
|
|
130
|
+
const callback = Array.from(rest).find(arg => typeof arg == 'function');
|
|
131
|
+
const location = this.applyPathPrefix($path);
|
|
132
|
+
fs_extra_1.default.stat(location).then(res => {
|
|
133
|
+
if (res.isDirectory()) {
|
|
134
|
+
return path_1.default.join(location, (0, uuid_1.v4)());
|
|
81
135
|
}
|
|
82
|
-
return location
|
|
136
|
+
return location;
|
|
83
137
|
})
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
this.ensureDirectory(this.dirname(
|
|
87
|
-
|
|
138
|
+
.catch(() => location)
|
|
139
|
+
.then(loc => {
|
|
140
|
+
this.ensureDirectory(this.dirname(loc), () => {
|
|
141
|
+
fs_extra_1.default.writeFile(loc, $contents, (error, data) => {
|
|
88
142
|
if (typeof this[kHandler].write == 'function') {
|
|
89
143
|
this[kHandler].write({
|
|
90
|
-
basePath:
|
|
144
|
+
basePath: loc,
|
|
91
145
|
path: $path,
|
|
92
146
|
options,
|
|
93
147
|
callback,
|
|
94
148
|
error,
|
|
95
149
|
content: $contents
|
|
96
|
-
})
|
|
97
|
-
}
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
98
153
|
callback(error, {
|
|
99
154
|
'type': 'file',
|
|
100
155
|
'path': $path,
|
|
101
156
|
'message': 'File created successfully'
|
|
102
|
-
},
|
|
157
|
+
}, loc);
|
|
103
158
|
}
|
|
104
|
-
})
|
|
159
|
+
});
|
|
105
160
|
});
|
|
106
|
-
})
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
161
|
+
});
|
|
110
162
|
}
|
|
111
|
-
|
|
163
|
+
/**
|
|
164
|
+
* read method.
|
|
165
|
+
*
|
|
166
|
+
* @param $path - File path to read from.
|
|
167
|
+
* @param options - Read options.
|
|
168
|
+
* @param callback - Result callback.
|
|
169
|
+
*/
|
|
112
170
|
read($path, options = {}, callback) {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
encoding: (this.getConfig()
|
|
171
|
+
const location = this.applyPathPrefix($path);
|
|
172
|
+
fs_extra_1.default.readFile(location, {
|
|
173
|
+
encoding: (this.getConfig()?.encoding || (options.encoding || 'utf-8'))
|
|
116
174
|
}, (error, data) => {
|
|
117
175
|
if (typeof this[kHandler].read == 'function') {
|
|
118
176
|
this[kHandler].read({
|
|
@@ -122,20 +180,32 @@ class Local extends CoreAdapter {
|
|
|
122
180
|
callback,
|
|
123
181
|
error,
|
|
124
182
|
response: data
|
|
125
|
-
})
|
|
126
|
-
}
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
127
186
|
callback(error, {
|
|
128
187
|
'type': 'file',
|
|
129
188
|
'path': $path,
|
|
130
189
|
'contents': data
|
|
131
|
-
}, location)
|
|
190
|
+
}, location);
|
|
132
191
|
}
|
|
133
192
|
});
|
|
134
|
-
|
|
135
193
|
}
|
|
194
|
+
/**
|
|
195
|
+
* global method.
|
|
196
|
+
*
|
|
197
|
+
* @param $path - Optional path.
|
|
198
|
+
* @param options - Optional options.
|
|
199
|
+
* @param callback - Optional callback.
|
|
200
|
+
*/
|
|
136
201
|
global($path, options = {}, callback) {
|
|
137
|
-
|
|
138
202
|
}
|
|
139
|
-
|
|
140
203
|
}
|
|
141
|
-
|
|
204
|
+
exports.default = Local;
|
|
205
|
+
//# sourceMappingURL=local.js.map
|
|
206
|
+
if (exports.default) {
|
|
207
|
+
const d = exports.default;
|
|
208
|
+
module.exports = d;
|
|
209
|
+
Object.assign(module.exports, exports);
|
|
210
|
+
module.exports.default = d;
|
|
211
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/adapter/local.ts"],"names":[],"mappings":"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"}
|
package/adapter/s3.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import CoreAdapter from './CoreAdapter';
|
|
2
|
+
declare const kClient: unique symbol;
|
|
3
|
+
declare const kHandler: unique symbol;
|
|
4
|
+
/**
|
|
5
|
+
* Class S3.
|
|
6
|
+
*/
|
|
7
|
+
declare class S3 extends CoreAdapter {
|
|
8
|
+
[kClient]: any;
|
|
9
|
+
[kHandler]: any;
|
|
10
|
+
/**
|
|
11
|
+
* Create a new instance.
|
|
12
|
+
*
|
|
13
|
+
* @param $client - S3 client instance.
|
|
14
|
+
* @param $config - Configuration options.
|
|
15
|
+
*/
|
|
16
|
+
constructor($client: any, $config: Record<string, any>);
|
|
17
|
+
/**
|
|
18
|
+
* read method.
|
|
19
|
+
*
|
|
20
|
+
* @param $path - File path to read.
|
|
21
|
+
* @param options - Read options.
|
|
22
|
+
* @param callback - Completion callback.
|
|
23
|
+
*/
|
|
24
|
+
read($path: string, options: Record<string, any>, callback: Function): void;
|
|
25
|
+
/**
|
|
26
|
+
* write method.
|
|
27
|
+
*
|
|
28
|
+
* @param $path - Destination file path.
|
|
29
|
+
* @param data - File content to upload.
|
|
30
|
+
* @param options - Upload options.
|
|
31
|
+
* @param callback - Completion callback.
|
|
32
|
+
*/
|
|
33
|
+
write($path: string, data: any, options: Record<string, any>, callback: Function): void;
|
|
34
|
+
}
|
|
35
|
+
export default S3;
|
|
36
|
+
//# sourceMappingURL=s3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3.d.ts","sourceRoot":"","sources":["../../src/adapter/s3.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,QAAA,MAAM,OAAO,EAAE,OAAO,MAAyB,CAAC;AAChD,QAAA,MAAM,QAAQ,EAAE,OAAO,MAA0B,CAAC;AAElD;;GAEG;AACH,cAAM,EAAG,SAAQ,WAAW;IACxB,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC;IACf,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC;IAEhB;;;;;OAKG;gBACS,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAOtD;;;;;;OAMG;IACI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IA+BvF;;;;;;;OAOG;IACI,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAkCtG;AAED,eAAe,EAAE,CAAC"}
|
package/adapter/s3.js
CHANGED
|
@@ -1,84 +1,116 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const CoreAdapter_1 = __importDefault(require("./CoreAdapter"));
|
|
7
|
+
const kClient = Symbol('client');
|
|
8
|
+
const kHandler = Symbol('handler');
|
|
9
|
+
/**
|
|
10
|
+
* Class S3.
|
|
11
|
+
*/
|
|
12
|
+
class S3 extends CoreAdapter_1.default {
|
|
13
|
+
[kClient];
|
|
14
|
+
[kHandler];
|
|
15
|
+
/**
|
|
16
|
+
* Create a new instance.
|
|
17
|
+
*
|
|
18
|
+
* @param $client - S3 client instance.
|
|
19
|
+
* @param $config - Configuration options.
|
|
20
|
+
*/
|
|
9
21
|
constructor($client, $config) {
|
|
10
|
-
super()
|
|
22
|
+
super();
|
|
11
23
|
this[kClient] = $client;
|
|
12
|
-
this[kHandler] = typeof $config.handler == 'function' ? new $config.handler : typeof $config.handler == 'object' ? $config.handler : {};
|
|
13
|
-
this.setUrlPrefix(this[kClient].url)
|
|
24
|
+
this[kHandler] = typeof $config.handler == 'function' ? new $config.handler() : typeof $config.handler == 'object' ? $config.handler : {};
|
|
25
|
+
this.setUrlPrefix(this[kClient].url);
|
|
14
26
|
}
|
|
15
|
-
|
|
27
|
+
/**
|
|
28
|
+
* read method.
|
|
29
|
+
*
|
|
30
|
+
* @param $path - File path to read.
|
|
31
|
+
* @param options - Read options.
|
|
32
|
+
* @param callback - Completion callback.
|
|
33
|
+
*/
|
|
16
34
|
read($path, options = {}, callback) {
|
|
17
|
-
|
|
18
|
-
$path = $path.replaceAll('\\', '/')
|
|
19
|
-
if ($path.charAt(0) ==
|
|
20
|
-
$path = $path.substr(1)
|
|
35
|
+
const basePath = this.applyUrlPrefix();
|
|
36
|
+
$path = $path.replaceAll('\\', '/');
|
|
37
|
+
if ($path.charAt(0) == '/') {
|
|
38
|
+
$path = $path.substr(1);
|
|
21
39
|
}
|
|
22
40
|
this[kClient].getConnection().getObject({ Key: $path }).promise()
|
|
23
|
-
.then(response => ({ error: null, data: response.Body }))
|
|
24
|
-
.catch(error => Promise.resolve({ error, data: null }))
|
|
41
|
+
.then((response) => ({ error: null, data: response.Body }))
|
|
42
|
+
.catch((error) => Promise.resolve({ error, data: null }))
|
|
25
43
|
.then(({ error, data }) => {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
44
|
+
if (typeof this[kHandler].read == 'function') {
|
|
45
|
+
this[kHandler].read({
|
|
46
|
+
path: $path,
|
|
47
|
+
options,
|
|
48
|
+
callback,
|
|
49
|
+
error,
|
|
50
|
+
basePath,
|
|
51
|
+
contents: data
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
callback(error, function () {
|
|
56
|
+
return {
|
|
57
|
+
'type': 'file',
|
|
58
|
+
'path': $path,
|
|
59
|
+
'contents': (options.dataType == 'base64') ? data.toString('base64') : data.toString(),
|
|
60
|
+
};
|
|
61
|
+
}, basePath);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
45
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* write method.
|
|
67
|
+
*
|
|
68
|
+
* @param $path - Destination file path.
|
|
69
|
+
* @param data - File content to upload.
|
|
70
|
+
* @param options - Upload options.
|
|
71
|
+
* @param callback - Completion callback.
|
|
72
|
+
*/
|
|
46
73
|
write($path, data, options = {}, callback) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
$path = $path.substr(1)
|
|
74
|
+
$path = $path.replaceAll('\\', '/');
|
|
75
|
+
if ($path.charAt(0) == '/') {
|
|
76
|
+
$path = $path.substr(1);
|
|
51
77
|
}
|
|
52
|
-
|
|
78
|
+
const basePath = this.applyUrlPrefix();
|
|
53
79
|
this[kClient].getConnection().upload({
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
.
|
|
59
|
-
.catch(error => Promise.resolve({ error, response: null }))
|
|
80
|
+
Key: $path,
|
|
81
|
+
Body: data.toString('base64'),
|
|
82
|
+
}).promise()
|
|
83
|
+
.then((response) => ({ error: null, response }))
|
|
84
|
+
.catch((error) => Promise.resolve({ error, response: null }))
|
|
60
85
|
.then(({ error, response }) => {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
86
|
+
if (typeof this[kHandler].write == 'function') {
|
|
87
|
+
this[kHandler].write({
|
|
88
|
+
path: $path,
|
|
89
|
+
options,
|
|
90
|
+
callback,
|
|
91
|
+
error,
|
|
92
|
+
basePath,
|
|
93
|
+
response,
|
|
94
|
+
contents: data
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
callback(error, function () {
|
|
99
|
+
return {
|
|
100
|
+
'type': 'file',
|
|
101
|
+
'path': $path,
|
|
102
|
+
'message': 'File uploaded successfully'
|
|
103
|
+
};
|
|
104
|
+
}, basePath);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
81
107
|
}
|
|
82
|
-
|
|
83
108
|
}
|
|
84
|
-
|
|
109
|
+
exports.default = S3;
|
|
110
|
+
//# sourceMappingURL=s3.js.map
|
|
111
|
+
if (exports.default) {
|
|
112
|
+
const d = exports.default;
|
|
113
|
+
module.exports = d;
|
|
114
|
+
Object.assign(module.exports, exports);
|
|
115
|
+
module.exports.default = d;
|
|
116
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3.js","sourceRoot":"","sources":["../../src/adapter/s3.ts"],"names":[],"mappings":";;;;;AAAA,gEAAwC;AAExC,MAAM,OAAO,GAAkB,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChD,MAAM,QAAQ,GAAkB,MAAM,CAAC,SAAS,CAAC,CAAC;AAElD;;GAEG;AACH,MAAM,EAAG,SAAQ,qBAAW;IACxB,CAAC,OAAO,CAAC,CAAM;IACf,CAAC,QAAQ,CAAC,CAAM;IAEhB;;;;;OAKG;IACH,YAAY,OAAY,EAAE,OAA4B;QAClD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,OAAO,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1I,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;OAMG;IACI,IAAI,CAAC,KAAa,EAAE,UAA+B,EAAE,EAAE,QAAkB;QAC5E,MAAM,QAAQ,GAAW,IAAI,CAAC,cAAc,EAAE,CAAC;QAC/C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;YACzB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;aAC5D,IAAI,CAAC,CAAC,QAAa,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;aAC/D,KAAK,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;aAC7D,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAA6B,EAAE,EAAE;YACjD,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC3C,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAE,KAAK;oBACX,OAAO;oBACP,QAAQ;oBACR,KAAK;oBACL,QAAQ;oBACR,QAAQ,EAAE,IAAI;iBACjB,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,KAAK,EAAE;oBACZ,OAAO;wBACH,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,KAAK;wBACb,UAAU,EAAE,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;qBACzF,CAAC;gBACN,CAAC,EAAE,QAAQ,CAAC,CAAC;YACjB,CAAC;QACL,CAAC,CAAC,CAAC;IACX,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,KAAa,EAAE,IAAS,EAAE,UAA+B,EAAE,EAAE,QAAkB;QACxF,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;YACzB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,QAAQ,GAAW,IAAI,CAAC,cAAc,EAAE,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;YAC7B,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;SAChC,CAAC,CAAC,OAAO,EAAE;aACX,IAAI,CAAC,CAAC,QAAa,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;aACpD,KAAK,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;aACjE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAiC,EAAE,EAAE;YACzD,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,UAAU,EAAE,CAAC;gBAC5C,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;oBACjB,IAAI,EAAE,KAAK;oBACX,OAAO;oBACP,QAAQ;oBACR,KAAK;oBACL,QAAQ;oBACR,QAAQ;oBACR,QAAQ,EAAE,IAAI;iBACjB,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,KAAK,EAAE;oBACZ,OAAO;wBACH,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,4BAA4B;qBAC1C,CAAC;gBACN,CAAC,EAAE,QAAQ,CAAC,CAAC;YACjB,CAAC;QACL,CAAC,CAAC,CAAC;IACX,CAAC;CACJ;AAED,kBAAe,EAAE,CAAC"}
|