@spinajs/fs 2.0.289 → 2.0.290

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.
@@ -110,12 +110,12 @@ export declare abstract class fs extends AsyncService implements IMappableServic
110
110
  */
111
111
  abstract upload(srcPath: string, destPath?: string): Promise<void>;
112
112
  /**
113
- *
114
- * Returns hash of file
115
- *
116
- * @param srcPath file to calculate hash
117
- * @param algo optional hash alghoritm, default is md5
118
- */
113
+ *
114
+ * Returns hash of file
115
+ *
116
+ * @param srcPath file to calculate hash
117
+ * @param algo optional hash alghoritm, default is md5
118
+ */
119
119
  hash(path: string, algo?: string): Promise<string>;
120
120
  /**
121
121
  *
@@ -166,6 +166,87 @@ export declare abstract class fs extends AsyncService implements IMappableServic
166
166
  */
167
167
  abstract isDir(path: string): Promise<boolean>;
168
168
  tmpname(): string;
169
+ /**
170
+ * -------------------------------------------------------------------------
171
+ *
172
+ * STATIC METHODS
173
+ *
174
+ * -------------------------------------------------------------------------
175
+ */
176
+ /**
177
+ * Downloads file to local storage and returns path to it.
178
+ * If used on local storage provider eg. hard drive it only returns full path to file
179
+ *
180
+ * On remote storage provivers eg. amazon s3 - it tries to download it to local disk first and returns
181
+ * full path.
182
+ *
183
+ * Returns local path to file
184
+ *
185
+ * @param path path to download
186
+ */
187
+ static download(path: string): Promise<string>;
188
+ /**
189
+ * Copies local file into fs
190
+ *
191
+ * @param srcPath source path ( full absolute path eg. file from local disk )
192
+ * @param destPath dest path ( relative to base path of provider )
193
+ */
194
+ static upload(srcPath: string, destPath?: string): Promise<void>;
195
+ /**
196
+ *
197
+ * Returns hash of file
198
+ *
199
+ * @param srcPath file to calculate hash
200
+ * @param algo optional hash alghoritm, default is md5
201
+ */
202
+ static hash(path: string, algo?: string): Promise<string>;
203
+ /**
204
+ *
205
+ * Returns full LOCAL path to file
206
+ *
207
+ * @param path path to resolve
208
+ */
209
+ static resolvePath(path: string): string;
210
+ static read(path: string, encoding?: BufferEncoding): Promise<string | Buffer>;
211
+ static readStream(path: string, encoding?: BufferEncoding): Promise<NodeJS.ReadableStream>;
212
+ static write(path: string, data: string | Uint8Array, encoding?: BufferEncoding): Promise<void>;
213
+ static writeStream(path: string, encoding?: BufferEncoding): Promise<WriteStream | PassThrough>;
214
+ static exists(path: string): Promise<boolean>;
215
+ static dirExists(path: string): Promise<boolean>;
216
+ static copy(path: string, dest: string, dstFs?: fs): Promise<void>;
217
+ static move(oldPath: string, newPath: string, dstFs?: fs): Promise<void>;
218
+ static rename(oldPath: string, newPath: string): Promise<void>;
219
+ static rm(path: string): Promise<void>;
220
+ static mkdir(path: string): Promise<void>;
221
+ static stat(path: string): Promise<IStat>;
222
+ static list(path: string): Promise<string[]>;
223
+ static tmppath(fs: string): string;
224
+ static append(path: string, data: string | Uint8Array, encoding?: BufferEncoding): Promise<void>;
225
+ /**
226
+ *
227
+ * Compress specified file or dir in provided path. If
228
+ * Dir is compressed recursively
229
+ *
230
+ * @param path - path to zip
231
+ * @param dstFile - destination file name
232
+ */
233
+ static zip(path: string, dstFs?: fs, dstFile?: string): Promise<IZipResult>;
234
+ /**
235
+ * Decompress given file to destination path
236
+ *
237
+ * @param path path to zip file
238
+ * @param destPath path to destination dir
239
+ *
240
+ * @returns path to unzipped file
241
+ */
242
+ static unzip(srcPath: string, destPath?: string, dstFs?: fs): Promise<string>;
243
+ /**
244
+ *
245
+ * Checks if given path is dir
246
+ *
247
+ * @param path path to check
248
+ */
249
+ static isDir(path: string): Promise<boolean>;
169
250
  }
170
251
  /**
171
252
  * File information service, obtain file props, metadata etc.
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FileHasher = exports.FileInfoService = exports.fs = void 0;
4
4
  /* eslint-disable security/detect-non-literal-fs-filename */
5
5
  const di_1 = require("@spinajs/di");
6
+ const exceptions_1 = require("@spinajs/exceptions");
6
7
  const uuid_1 = require("uuid");
8
+ function uriToFs(path) {
9
+ const reg = /^(fs+:\/\/)+(.+)$/gm;
10
+ if (!reg.test(path)) {
11
+ throw new exceptions_1.InvalidArgument(`path is not valid filesystem URI`);
12
+ }
13
+ const args = reg.exec(path)[2].split('/');
14
+ const fsName = args[0];
15
+ const fPath = args[1];
16
+ const f = di_1.DI.resolve('__file_provider__', [fsName]);
17
+ if (!f) {
18
+ throw new exceptions_1.IOFail(`Filesystem ${fsName} not registered, check your fs configuration !`);
19
+ }
20
+ return [f, fPath];
21
+ }
7
22
  class fs extends di_1.AsyncService {
8
23
  get ServiceName() {
9
24
  return this.Name;
@@ -14,12 +29,12 @@ class fs extends di_1.AsyncService {
14
29
  return this.Name === creationOptions[0].name;
15
30
  }
16
31
  /**
17
- *
18
- * Returns hash of file
19
- *
20
- * @param srcPath file to calculate hash
21
- * @param algo optional hash alghoritm, default is md5
22
- */
32
+ *
33
+ * Returns hash of file
34
+ *
35
+ * @param srcPath file to calculate hash
36
+ * @param algo optional hash alghoritm, default is md5
37
+ */
23
38
  async hash(path, algo) {
24
39
  const hasher = di_1.DI.resolve(FileHasher, [algo]);
25
40
  return hasher.hash(this.resolvePath(path));
@@ -27,6 +42,161 @@ class fs extends di_1.AsyncService {
27
42
  tmpname() {
28
43
  return (0, uuid_1.v4)();
29
44
  }
45
+ /**
46
+ * -------------------------------------------------------------------------
47
+ *
48
+ * STATIC METHODS
49
+ *
50
+ * -------------------------------------------------------------------------
51
+ */
52
+ /**
53
+ * Downloads file to local storage and returns path to it.
54
+ * If used on local storage provider eg. hard drive it only returns full path to file
55
+ *
56
+ * On remote storage provivers eg. amazon s3 - it tries to download it to local disk first and returns
57
+ * full path.
58
+ *
59
+ * Returns local path to file
60
+ *
61
+ * @param path path to download
62
+ */
63
+ static download(path) {
64
+ const [fs, p] = uriToFs(path);
65
+ return fs.download(p);
66
+ }
67
+ /**
68
+ * Copies local file into fs
69
+ *
70
+ * @param srcPath source path ( full absolute path eg. file from local disk )
71
+ * @param destPath dest path ( relative to base path of provider )
72
+ */
73
+ static upload(srcPath, destPath) {
74
+ const [fs, p] = uriToFs(destPath);
75
+ return fs.upload(srcPath, p);
76
+ }
77
+ /**
78
+ *
79
+ * Returns hash of file
80
+ *
81
+ * @param srcPath file to calculate hash
82
+ * @param algo optional hash alghoritm, default is md5
83
+ */
84
+ static hash(path, algo) {
85
+ const [fs, p] = uriToFs(path);
86
+ return fs.hash(p, algo);
87
+ }
88
+ /**
89
+ *
90
+ * Returns full LOCAL path to file
91
+ *
92
+ * @param path path to resolve
93
+ */
94
+ static resolvePath(path) {
95
+ const [fs, p] = uriToFs(path);
96
+ return fs.resolvePath(p);
97
+ }
98
+ static read(path, encoding) {
99
+ const [fs, p] = uriToFs(path);
100
+ return fs.read(p, encoding);
101
+ }
102
+ static readStream(path, encoding) {
103
+ const [fs, p] = uriToFs(path);
104
+ return fs.readStream(p, encoding);
105
+ }
106
+ static write(path, data, encoding) {
107
+ const [fs, p] = uriToFs(path);
108
+ return fs.write(p, data, encoding);
109
+ }
110
+ static writeStream(path, readStream, encoding) {
111
+ const [fs, p] = uriToFs(path);
112
+ return fs.writeStream(p, readStream, encoding);
113
+ }
114
+ static exists(path) {
115
+ const [fs, p] = uriToFs(path);
116
+ return fs.exists(p);
117
+ }
118
+ static dirExists(path) {
119
+ const [fs, p] = uriToFs(path);
120
+ return fs.dirExists(p);
121
+ }
122
+ static copy(path, dest, dstFs) {
123
+ const [fs, p] = uriToFs(path);
124
+ const [dFs, dP] = uriToFs(dest);
125
+ return fs.copy(p, dP, dFs ?? dstFs);
126
+ }
127
+ static move(oldPath, newPath, dstFs) {
128
+ const [fs, p] = uriToFs(oldPath);
129
+ const [dFs, dP] = uriToFs(newPath);
130
+ return fs.move(p, dP, dFs ?? dstFs);
131
+ }
132
+ static rename(oldPath, newPath) {
133
+ const [fs, p] = uriToFs(oldPath);
134
+ const [, p2] = uriToFs(newPath);
135
+ return fs.rename(p, p2);
136
+ }
137
+ static rm(path) {
138
+ const [fs, p] = uriToFs(path);
139
+ return fs.rm(p);
140
+ }
141
+ static mkdir(path) {
142
+ const [fs, p] = uriToFs(path);
143
+ return fs.mkdir(p);
144
+ }
145
+ static stat(path) {
146
+ const [fs, p] = uriToFs(path);
147
+ return fs.stat(p);
148
+ }
149
+ static list(path) {
150
+ const [fs, p] = uriToFs(path);
151
+ return fs.list(p);
152
+ }
153
+ static tmppath(fs) {
154
+ const f = di_1.DI.resolve('__file_provider__', [fs]);
155
+ if (!f) {
156
+ throw new exceptions_1.IOFail(`Filesystem ${fs} not exists, check your configuration`);
157
+ }
158
+ return f.tmppath();
159
+ }
160
+ static append(path, data, encoding) {
161
+ const [fs, p] = uriToFs(path);
162
+ return fs.append(p, data, encoding);
163
+ }
164
+ /**
165
+ *
166
+ * Compress specified file or dir in provided path. If
167
+ * Dir is compressed recursively
168
+ *
169
+ * @param path - path to zip
170
+ * @param dstFile - destination file name
171
+ */
172
+ static zip(path, dstFs, dstFile) {
173
+ const [fs, p] = uriToFs(path);
174
+ const [dFs, fP] = uriToFs(dstFile);
175
+ return fs.zip(p, dFs ?? dstFs, fP);
176
+ }
177
+ /**
178
+ * Decompress given file to destination path
179
+ *
180
+ * @param path path to zip file
181
+ * @param destPath path to destination dir
182
+ *
183
+ * @returns path to unzipped file
184
+ */
185
+ static unzip(srcPath, destPath, dstFs) {
186
+ const [fs, p] = uriToFs(srcPath);
187
+ const [dFs, fP] = uriToFs(destPath);
188
+ return fs.unzip(p, fP, dFs ?? dstFs);
189
+ }
190
+ /**
191
+ *
192
+ * Checks if given path is dir
193
+ *
194
+ * @param path path to check
195
+ */
196
+ static isDir(path) {
197
+ const [fs, p] = uriToFs(path);
198
+ return fs.isDir(p);
199
+ }
30
200
  }
31
201
  exports.fs = fs;
32
202
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":";;;AAAA,4DAA4D;AAC5D,oCAAiF;AAIjF,+BAAoC;AAyGpC,MAAsB,EAAG,SAAQ,iBAAY;IAC3C,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,8DAA8D;IACvD,iBAAiB,CAAC,eAAoB;QAC3C,sEAAsE;QACtE,OAAO,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IAyBC;;;;;;KAMC;IACI,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,IAAa;QAC3C,MAAM,MAAM,GAAG,OAAE,CAAC,OAAO,CAAa,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;IAyDM,OAAO;QACZ,OAAO,IAAA,SAAM,GAAE,CAAC;IAClB,CAAC;CACF;AAxGD,gBAwGC;AAED;;;GAGG;AACH,MAAsB,eAAe;CAEpC;AAFD,0CAEC;AAED;;GAEG;AACH,MAAsB,UAAU;CAE/B;AAFD,gCAEC"}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
@@ -110,12 +110,12 @@ export declare abstract class fs extends AsyncService implements IMappableServic
110
110
  */
111
111
  abstract upload(srcPath: string, destPath?: string): Promise<void>;
112
112
  /**
113
- *
114
- * Returns hash of file
115
- *
116
- * @param srcPath file to calculate hash
117
- * @param algo optional hash alghoritm, default is md5
118
- */
113
+ *
114
+ * Returns hash of file
115
+ *
116
+ * @param srcPath file to calculate hash
117
+ * @param algo optional hash alghoritm, default is md5
118
+ */
119
119
  hash(path: string, algo?: string): Promise<string>;
120
120
  /**
121
121
  *
@@ -166,6 +166,87 @@ export declare abstract class fs extends AsyncService implements IMappableServic
166
166
  */
167
167
  abstract isDir(path: string): Promise<boolean>;
168
168
  tmpname(): string;
169
+ /**
170
+ * -------------------------------------------------------------------------
171
+ *
172
+ * STATIC METHODS
173
+ *
174
+ * -------------------------------------------------------------------------
175
+ */
176
+ /**
177
+ * Downloads file to local storage and returns path to it.
178
+ * If used on local storage provider eg. hard drive it only returns full path to file
179
+ *
180
+ * On remote storage provivers eg. amazon s3 - it tries to download it to local disk first and returns
181
+ * full path.
182
+ *
183
+ * Returns local path to file
184
+ *
185
+ * @param path path to download
186
+ */
187
+ static download(path: string): Promise<string>;
188
+ /**
189
+ * Copies local file into fs
190
+ *
191
+ * @param srcPath source path ( full absolute path eg. file from local disk )
192
+ * @param destPath dest path ( relative to base path of provider )
193
+ */
194
+ static upload(srcPath: string, destPath?: string): Promise<void>;
195
+ /**
196
+ *
197
+ * Returns hash of file
198
+ *
199
+ * @param srcPath file to calculate hash
200
+ * @param algo optional hash alghoritm, default is md5
201
+ */
202
+ static hash(path: string, algo?: string): Promise<string>;
203
+ /**
204
+ *
205
+ * Returns full LOCAL path to file
206
+ *
207
+ * @param path path to resolve
208
+ */
209
+ static resolvePath(path: string): string;
210
+ static read(path: string, encoding?: BufferEncoding): Promise<string | Buffer>;
211
+ static readStream(path: string, encoding?: BufferEncoding): Promise<NodeJS.ReadableStream>;
212
+ static write(path: string, data: string | Uint8Array, encoding?: BufferEncoding): Promise<void>;
213
+ static writeStream(path: string, encoding?: BufferEncoding): Promise<WriteStream | PassThrough>;
214
+ static exists(path: string): Promise<boolean>;
215
+ static dirExists(path: string): Promise<boolean>;
216
+ static copy(path: string, dest: string, dstFs?: fs): Promise<void>;
217
+ static move(oldPath: string, newPath: string, dstFs?: fs): Promise<void>;
218
+ static rename(oldPath: string, newPath: string): Promise<void>;
219
+ static rm(path: string): Promise<void>;
220
+ static mkdir(path: string): Promise<void>;
221
+ static stat(path: string): Promise<IStat>;
222
+ static list(path: string): Promise<string[]>;
223
+ static tmppath(fs: string): string;
224
+ static append(path: string, data: string | Uint8Array, encoding?: BufferEncoding): Promise<void>;
225
+ /**
226
+ *
227
+ * Compress specified file or dir in provided path. If
228
+ * Dir is compressed recursively
229
+ *
230
+ * @param path - path to zip
231
+ * @param dstFile - destination file name
232
+ */
233
+ static zip(path: string, dstFs?: fs, dstFile?: string): Promise<IZipResult>;
234
+ /**
235
+ * Decompress given file to destination path
236
+ *
237
+ * @param path path to zip file
238
+ * @param destPath path to destination dir
239
+ *
240
+ * @returns path to unzipped file
241
+ */
242
+ static unzip(srcPath: string, destPath?: string, dstFs?: fs): Promise<string>;
243
+ /**
244
+ *
245
+ * Checks if given path is dir
246
+ *
247
+ * @param path path to check
248
+ */
249
+ static isDir(path: string): Promise<boolean>;
169
250
  }
170
251
  /**
171
252
  * File information service, obtain file props, metadata etc.
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,21 @@
1
1
  /* eslint-disable security/detect-non-literal-fs-filename */
2
2
  import { AsyncService, DI } from '@spinajs/di';
3
+ import { InvalidArgument, IOFail } from '@spinajs/exceptions';
3
4
  import { v4 as uuidv4 } from 'uuid';
5
+ function uriToFs(path) {
6
+ const reg = /^(fs+:\/\/)+(.+)$/gm;
7
+ if (!reg.test(path)) {
8
+ throw new InvalidArgument(`path is not valid filesystem URI`);
9
+ }
10
+ const args = reg.exec(path)[2].split('/');
11
+ const fsName = args[0];
12
+ const fPath = args[1];
13
+ const f = DI.resolve('__file_provider__', [fsName]);
14
+ if (!f) {
15
+ throw new IOFail(`Filesystem ${fsName} not registered, check your fs configuration !`);
16
+ }
17
+ return [f, fPath];
18
+ }
4
19
  export class fs extends AsyncService {
5
20
  get ServiceName() {
6
21
  return this.Name;
@@ -11,12 +26,12 @@ export class fs extends AsyncService {
11
26
  return this.Name === creationOptions[0].name;
12
27
  }
13
28
  /**
14
- *
15
- * Returns hash of file
16
- *
17
- * @param srcPath file to calculate hash
18
- * @param algo optional hash alghoritm, default is md5
19
- */
29
+ *
30
+ * Returns hash of file
31
+ *
32
+ * @param srcPath file to calculate hash
33
+ * @param algo optional hash alghoritm, default is md5
34
+ */
20
35
  async hash(path, algo) {
21
36
  const hasher = DI.resolve(FileHasher, [algo]);
22
37
  return hasher.hash(this.resolvePath(path));
@@ -24,6 +39,161 @@ export class fs extends AsyncService {
24
39
  tmpname() {
25
40
  return uuidv4();
26
41
  }
42
+ /**
43
+ * -------------------------------------------------------------------------
44
+ *
45
+ * STATIC METHODS
46
+ *
47
+ * -------------------------------------------------------------------------
48
+ */
49
+ /**
50
+ * Downloads file to local storage and returns path to it.
51
+ * If used on local storage provider eg. hard drive it only returns full path to file
52
+ *
53
+ * On remote storage provivers eg. amazon s3 - it tries to download it to local disk first and returns
54
+ * full path.
55
+ *
56
+ * Returns local path to file
57
+ *
58
+ * @param path path to download
59
+ */
60
+ static download(path) {
61
+ const [fs, p] = uriToFs(path);
62
+ return fs.download(p);
63
+ }
64
+ /**
65
+ * Copies local file into fs
66
+ *
67
+ * @param srcPath source path ( full absolute path eg. file from local disk )
68
+ * @param destPath dest path ( relative to base path of provider )
69
+ */
70
+ static upload(srcPath, destPath) {
71
+ const [fs, p] = uriToFs(destPath);
72
+ return fs.upload(srcPath, p);
73
+ }
74
+ /**
75
+ *
76
+ * Returns hash of file
77
+ *
78
+ * @param srcPath file to calculate hash
79
+ * @param algo optional hash alghoritm, default is md5
80
+ */
81
+ static hash(path, algo) {
82
+ const [fs, p] = uriToFs(path);
83
+ return fs.hash(p, algo);
84
+ }
85
+ /**
86
+ *
87
+ * Returns full LOCAL path to file
88
+ *
89
+ * @param path path to resolve
90
+ */
91
+ static resolvePath(path) {
92
+ const [fs, p] = uriToFs(path);
93
+ return fs.resolvePath(p);
94
+ }
95
+ static read(path, encoding) {
96
+ const [fs, p] = uriToFs(path);
97
+ return fs.read(p, encoding);
98
+ }
99
+ static readStream(path, encoding) {
100
+ const [fs, p] = uriToFs(path);
101
+ return fs.readStream(p, encoding);
102
+ }
103
+ static write(path, data, encoding) {
104
+ const [fs, p] = uriToFs(path);
105
+ return fs.write(p, data, encoding);
106
+ }
107
+ static writeStream(path, readStream, encoding) {
108
+ const [fs, p] = uriToFs(path);
109
+ return fs.writeStream(p, readStream, encoding);
110
+ }
111
+ static exists(path) {
112
+ const [fs, p] = uriToFs(path);
113
+ return fs.exists(p);
114
+ }
115
+ static dirExists(path) {
116
+ const [fs, p] = uriToFs(path);
117
+ return fs.dirExists(p);
118
+ }
119
+ static copy(path, dest, dstFs) {
120
+ const [fs, p] = uriToFs(path);
121
+ const [dFs, dP] = uriToFs(dest);
122
+ return fs.copy(p, dP, dFs ?? dstFs);
123
+ }
124
+ static move(oldPath, newPath, dstFs) {
125
+ const [fs, p] = uriToFs(oldPath);
126
+ const [dFs, dP] = uriToFs(newPath);
127
+ return fs.move(p, dP, dFs ?? dstFs);
128
+ }
129
+ static rename(oldPath, newPath) {
130
+ const [fs, p] = uriToFs(oldPath);
131
+ const [, p2] = uriToFs(newPath);
132
+ return fs.rename(p, p2);
133
+ }
134
+ static rm(path) {
135
+ const [fs, p] = uriToFs(path);
136
+ return fs.rm(p);
137
+ }
138
+ static mkdir(path) {
139
+ const [fs, p] = uriToFs(path);
140
+ return fs.mkdir(p);
141
+ }
142
+ static stat(path) {
143
+ const [fs, p] = uriToFs(path);
144
+ return fs.stat(p);
145
+ }
146
+ static list(path) {
147
+ const [fs, p] = uriToFs(path);
148
+ return fs.list(p);
149
+ }
150
+ static tmppath(fs) {
151
+ const f = DI.resolve('__file_provider__', [fs]);
152
+ if (!f) {
153
+ throw new IOFail(`Filesystem ${fs} not exists, check your configuration`);
154
+ }
155
+ return f.tmppath();
156
+ }
157
+ static append(path, data, encoding) {
158
+ const [fs, p] = uriToFs(path);
159
+ return fs.append(p, data, encoding);
160
+ }
161
+ /**
162
+ *
163
+ * Compress specified file or dir in provided path. If
164
+ * Dir is compressed recursively
165
+ *
166
+ * @param path - path to zip
167
+ * @param dstFile - destination file name
168
+ */
169
+ static zip(path, dstFs, dstFile) {
170
+ const [fs, p] = uriToFs(path);
171
+ const [dFs, fP] = uriToFs(dstFile);
172
+ return fs.zip(p, dFs ?? dstFs, fP);
173
+ }
174
+ /**
175
+ * Decompress given file to destination path
176
+ *
177
+ * @param path path to zip file
178
+ * @param destPath path to destination dir
179
+ *
180
+ * @returns path to unzipped file
181
+ */
182
+ static unzip(srcPath, destPath, dstFs) {
183
+ const [fs, p] = uriToFs(srcPath);
184
+ const [dFs, fP] = uriToFs(destPath);
185
+ return fs.unzip(p, fP, dFs ?? dstFs);
186
+ }
187
+ /**
188
+ *
189
+ * Checks if given path is dir
190
+ *
191
+ * @param path path to check
192
+ */
193
+ static isDir(path) {
194
+ const [fs, p] = uriToFs(path);
195
+ return fs.isDir(p);
196
+ }
27
197
  }
28
198
  /**
29
199
  * File information service, obtain file props, metadata etc.