@ostro/filesystem 1.0.4 → 2.0.0-alpha.2

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.
Files changed (66) hide show
  1. package/adapter/CoreAdapter.js +164 -57
  2. package/adapter/CoreAdapter.js.map +1 -0
  3. package/adapter/azure.js +93 -56
  4. package/adapter/azure.js.map +1 -0
  5. package/adapter/local.js +136 -66
  6. package/adapter/local.js.map +1 -0
  7. package/adapter/s3.js +102 -70
  8. package/adapter/s3.js.map +1 -0
  9. package/callbackHandler.js +93 -23
  10. package/callbackHandler.js.map +1 -0
  11. package/clients/azure.js +43 -13
  12. package/clients/azure.js.map +1 -0
  13. package/clients/s3.js +40 -9
  14. package/clients/s3.js.map +1 -0
  15. package/directoryCreateException.js +27 -5
  16. package/directoryCreateException.js.map +1 -0
  17. package/fileDeleteException.js +28 -4
  18. package/fileDeleteException.js.map +1 -0
  19. package/fileNotFoundException.js +27 -5
  20. package/fileNotFoundException.js.map +1 -0
  21. package/fileUploadException.js +28 -5
  22. package/fileUploadException.js.map +1 -0
  23. package/filesystem.js +388 -193
  24. package/filesystem.js.map +1 -0
  25. package/filesystemAdapter.js +134 -52
  26. package/filesystemAdapter.js.map +1 -0
  27. package/filesystemManager.js +140 -57
  28. package/filesystemManager.js.map +1 -0
  29. package/filesystemServiceProvider.js +49 -21
  30. package/filesystemServiceProvider.js.map +1 -0
  31. package/invalidArgumentException.js +26 -4
  32. package/invalidArgumentException.js.map +1 -0
  33. package/package.json +24 -10
  34. package/types/adapter/CoreAdapter.d.ts +139 -0
  35. package/types/adapter/CoreAdapter.d.ts.map +1 -0
  36. package/types/adapter/azure.d.ts +36 -0
  37. package/types/adapter/azure.d.ts.map +1 -0
  38. package/types/adapter/local.d.ts +78 -0
  39. package/types/adapter/local.d.ts.map +1 -0
  40. package/types/adapter/s3.d.ts +36 -0
  41. package/types/adapter/s3.d.ts.map +1 -0
  42. package/types/callbackHandler.d.ts +69 -0
  43. package/types/callbackHandler.d.ts.map +1 -0
  44. package/types/clients/azure.d.ts +32 -0
  45. package/types/clients/azure.d.ts.map +1 -0
  46. package/types/clients/s3.d.ts +27 -0
  47. package/types/clients/s3.d.ts.map +1 -0
  48. package/types/directoryCreateException.d.ts +18 -0
  49. package/types/directoryCreateException.d.ts.map +1 -0
  50. package/types/fileDeleteException.d.ts +19 -0
  51. package/types/fileDeleteException.d.ts.map +1 -0
  52. package/types/fileNotFoundException.d.ts +18 -0
  53. package/types/fileNotFoundException.d.ts.map +1 -0
  54. package/types/fileUploadException.d.ts +18 -0
  55. package/types/fileUploadException.d.ts.map +1 -0
  56. package/types/filesystem.d.ts +300 -0
  57. package/types/filesystem.d.ts.map +1 -0
  58. package/types/filesystemAdapter.d.ts +91 -0
  59. package/types/filesystemAdapter.d.ts.map +1 -0
  60. package/types/filesystemManager.d.ts +93 -0
  61. package/types/filesystemManager.d.ts.map +1 -0
  62. package/types/filesystemServiceProvider.d.ts +40 -0
  63. package/types/filesystemServiceProvider.d.ts.map +1 -0
  64. package/types/invalidArgumentException.d.ts +17 -0
  65. package/types/invalidArgumentException.d.ts.map +1 -0
  66. package/.github/workflows/npm-publish.yml +0 -22
@@ -1,98 +1,180 @@
1
- const path = require('path')
2
- const FileNotFoundException = require('./fileNotFoundException')
3
- const FileDeleteException = require('./fileDeleteException')
4
- const FileUploadException = require('./fileUploadException')
5
- const DirectoryCreateException = require('./directoryCreateException')
6
- const kAdapter = Symbol('adapter')
7
- const kHandler = Symbol('handler')
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 path_1 = __importDefault(require("path"));
7
+ const fileNotFoundException_1 = __importDefault(require("./fileNotFoundException"));
8
+ const fileDeleteException_1 = __importDefault(require("./fileDeleteException"));
9
+ const fileUploadException_1 = __importDefault(require("./fileUploadException"));
10
+ const directoryCreateException_1 = __importDefault(require("./directoryCreateException"));
11
+ const kAdapter = Symbol('adapter');
12
+ const kHandler = Symbol('handler');
13
+ /**
14
+ * Class FilesystemAdapter.
15
+ */
8
16
  class FilesystemAdapter {
17
+ [kAdapter];
18
+ [kHandler];
19
+ /**
20
+ * Create a new instance.
21
+ *
22
+ * @param $adapter - Adapter instance.
23
+ * @param $handler - Callback handler instance.
24
+ */
9
25
  constructor($adapter, $handler) {
10
26
  this[kAdapter] = $adapter;
11
27
  this[kHandler] = $handler;
12
28
  }
13
-
29
+ /**
30
+ * exists method.
31
+ *
32
+ * @param $path - File path to check.
33
+ * @param options - Check options.
34
+ * @returns Promise resolving to boolean.
35
+ */
14
36
  exists($path, options) {
15
-
16
- return new Promise((resolve, reject) => {
37
+ return new Promise((resolve) => {
17
38
  this[kAdapter].has($path, options, (err, data, basePath) => {
18
- this[kHandler].exists(null, (err ? false : true), resolve, $path, options, basePath)
19
- })
20
- })
39
+ this[kHandler].exists(null, err ? false : true, resolve, $path, options, basePath);
40
+ });
41
+ });
21
42
  }
22
-
43
+ /**
44
+ * path method.
45
+ *
46
+ * @param $path - Relative path.
47
+ * @returns Resolved path.
48
+ */
23
49
  path($path) {
24
- return this[kAdapter].getAdapter().getPathPrefix().$path;
50
+ if (typeof this[kAdapter].applyPathPrefix == 'function') {
51
+ return this[kAdapter].applyPathPrefix($path);
52
+ }
53
+ return this[kAdapter].getAdapter().getPathPrefix()[$path];
25
54
  }
26
-
55
+ /**
56
+ * get method.
57
+ *
58
+ * @param $path - File path to read.
59
+ * @param options - Read options.
60
+ * @returns Promise resolving to file contents.
61
+ */
27
62
  get($path, options) {
28
-
29
63
  return new Promise((resolve, reject) => {
30
64
  this[kAdapter].read($path, options, (err, data, basePath) => {
31
65
  if (err) {
32
- this[kHandler].get(new FileNotFoundException(err), null, reject, $path, options, basePath)
33
- } else {
34
- this[kHandler].get(null, (typeof data == 'function' ? data() : data), resolve, $path, options, basePath)
66
+ this[kHandler].get(new fileNotFoundException_1.default(err), null, reject, $path, options, basePath);
35
67
  }
36
- })
37
- })
68
+ else {
69
+ this[kHandler].get(null, (typeof data == 'function' ? data() : data), resolve, $path, options, basePath);
70
+ }
71
+ });
72
+ });
38
73
  }
39
-
74
+ /**
75
+ * delete method.
76
+ *
77
+ * @param $path - File path to delete.
78
+ * @param rest - Optional callback and options.
79
+ * @returns Promise or adapter result.
80
+ */
40
81
  delete($path, ...rest) {
41
- rest = Array.from(rest)
42
- let callback = rest.find(arg => typeof arg == 'function')
43
- let options = rest.find(arg => typeof arg == 'object') || {}
44
- if (callback)
45
- return this[kAdapter].delete($path, options, callback)
82
+ const restArr = Array.from(rest);
83
+ const callback = restArr.find(arg => typeof arg == 'function');
84
+ const options = restArr.find(arg => typeof arg == 'object') || {};
85
+ if (callback) {
86
+ return this[kAdapter].delete($path, options, callback);
87
+ }
46
88
  else {
47
89
  return new Promise((resolve, reject) => {
48
90
  this[kAdapter].delete($path, options, (err, data, basePath) => {
49
91
  if (err) {
50
- this[kHandler].delete(new FileDeleteException(err), null, reject, $path, options, basePath)
51
- } else {
52
- this[kHandler].delete(null, (typeof data == 'function' ? data() : data), resolve, $path, options, basePath)
92
+ this[kHandler].delete(new fileDeleteException_1.default(err), null, reject, $path, options, basePath);
53
93
  }
54
- })
55
- })
94
+ else {
95
+ this[kHandler].delete(null, (typeof data == 'function' ? data() : data), resolve, $path, options, basePath);
96
+ }
97
+ });
98
+ });
56
99
  }
57
100
  }
58
-
101
+ /**
102
+ * makeDirectory method.
103
+ *
104
+ * @param $path - Directory path to create.
105
+ * @param options - Directory options.
106
+ * @returns Promise resolving on completion.
107
+ */
59
108
  makeDirectory($path, options) {
60
109
  return new Promise((resolve, reject) => {
61
110
  this[kAdapter].createDir($path, options, (err, data, basePath) => {
62
111
  if (err) {
63
- this[kHandler].createDir(new DirectoryCreateException(err), null, reject, $path, options, basePath)
64
- } else {
65
- this[kHandler].createDir(null, (typeof data == 'function' ? data() : data), resolve, $path, options, basePath)
112
+ this[kHandler].createDir(new directoryCreateException_1.default(err), null, reject, $path, options, basePath);
113
+ }
114
+ else {
115
+ this[kHandler].createDir(null, (typeof data == 'function' ? data() : data), resolve, $path, options, basePath);
66
116
  }
67
- })
68
- })
117
+ });
118
+ });
69
119
  }
70
-
120
+ /**
121
+ * put method.
122
+ *
123
+ * @param $path - File path to write.
124
+ * @param content - File contents.
125
+ * @param options - Write options.
126
+ * @returns Promise resolving on completion.
127
+ */
71
128
  put($path, content, options = {}) {
72
-
73
129
  return new Promise((resolve, reject) => {
74
130
  this[kAdapter].write($path, content, options, (err, data, basePath) => {
75
131
  if (err) {
76
- this[kHandler].delete(new FileUploadException(err), null, reject, $path, options, basePath, content)
77
- } else {
78
- this[kHandler].put(null, (typeof data == 'function' ? data() : data), resolve, $path, options, basePath)
132
+ this[kHandler].delete(new fileUploadException_1.default(err), null, reject, $path, options, basePath, content);
79
133
  }
80
- })
81
- })
134
+ else {
135
+ this[kHandler].put(null, (typeof data == 'function' ? data() : data), resolve, $path, options, basePath);
136
+ }
137
+ });
138
+ });
82
139
  }
83
-
140
+ /**
141
+ * putFile method.
142
+ *
143
+ * @param $path - Directory path.
144
+ * @param $file - File object.
145
+ * @param $options - Write options.
146
+ * @returns Promise resolving to write result.
147
+ */
84
148
  putFile($path, $file, $options = {}) {
85
149
  return this.putFileAs($path, $file, $file.getHashname(), $options);
86
150
  }
87
-
151
+ /**
152
+ * putFileAs method.
153
+ *
154
+ * @param $path - Directory path.
155
+ * @param $file - File object.
156
+ * @param $name - Filename.
157
+ * @param $options - Write options.
158
+ * @returns Promise resolving to write result.
159
+ */
88
160
  putFileAs($path, $file, $name, $options = {}) {
89
- $path = path.join($path, $name)
161
+ $path = path_1.default.join($path, $name);
90
162
  return this.put($path, $file.getBufferData(), $options);
91
163
  }
92
-
164
+ /**
165
+ * getAdapter method.
166
+ *
167
+ * @returns Underlying adapter instance.
168
+ */
93
169
  getAdapter() {
94
170
  return this[kAdapter];
95
171
  }
96
-
97
172
  }
98
- module.exports = FilesystemAdapter
173
+ exports.default = FilesystemAdapter;
174
+ //# sourceMappingURL=filesystemAdapter.js.map
175
+ if (exports.default) {
176
+ const d = exports.default;
177
+ module.exports = d;
178
+ Object.assign(module.exports, exports);
179
+ module.exports.default = d;
180
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystemAdapter.js","sourceRoot":"","sources":["../src/filesystemAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,88 +1,171 @@
1
- require('@ostro/support/helpers')
2
- const Manager = require('@ostro/support/manager')
3
- const InvalidArgumentException = require('./invalidArgumentException')
4
- const FilesystemAdapter = require('./filesystemAdapter')
5
- const callbackHandler = require('./callbackHandler')
6
- const kHandler = Symbol('handler')
7
- class FileSystemManager extends Manager {
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 util_1 = __importDefault(require("util"));
7
+ const manager_1 = __importDefault(require("@ostro/support/manager"));
8
+ const invalidArgumentException_1 = __importDefault(require("./invalidArgumentException"));
9
+ const filesystemAdapter_1 = __importDefault(require("./filesystemAdapter"));
10
+ const callbackHandler_1 = __importDefault(require("./callbackHandler"));
11
+ const local_1 = __importDefault(require("./adapter/local"));
12
+ const azure_1 = __importDefault(require("./adapter/azure"));
13
+ const s3_1 = __importDefault(require("./adapter/s3"));
14
+ const azure_2 = __importDefault(require("./clients/azure"));
15
+ const s3_2 = __importDefault(require("./clients/s3"));
16
+ const kHandler = Symbol('handler');
17
+ /**
18
+ * Class FileSystemManager.
19
+ */
20
+ class FileSystemManager extends manager_1.default {
9
21
  $type = 'filesystem';
10
-
22
+ [kHandler];
23
+ /**
24
+ * Create a new instance.
25
+ *
26
+ * @param $app - Application instance.
27
+ */
11
28
  constructor($app) {
12
- super($app)
13
- this[kHandler] = this.getConfig('handler')
14
- if (typeof this[kHandler] != 'function' || typeof this[kHandler] != 'object') {
15
- this[kHandler] = callbackHandler
16
- } else if (typeof this[kHandler] != 'object') {
17
- this[kHandler] = this[kHandler].constructor
18
- util.inherits(this[kHandler], callbackHandler)
19
- } else {
20
- util.inherits(this[kHandler], callbackHandler)
29
+ super($app);
30
+ this[kHandler] = this.getConfig('handler');
31
+ if (!this[kHandler]) {
32
+ this[kHandler] = new callbackHandler_1.default();
33
+ }
34
+ else if (typeof this[kHandler] == 'function') {
35
+ util_1.default.inherits(this[kHandler], callbackHandler_1.default);
36
+ this[kHandler] = new this[kHandler]();
37
+ }
38
+ else if (typeof this[kHandler] == 'object') {
39
+ let HandlerClass = this[kHandler].constructor;
40
+ if (HandlerClass && HandlerClass !== Object) {
41
+ util_1.default.inherits(HandlerClass, callbackHandler_1.default);
42
+ this[kHandler] = Object.assign(new HandlerClass(), this[kHandler]);
43
+ }
44
+ else {
45
+ this[kHandler] = Object.assign(new callbackHandler_1.default(), this[kHandler]);
46
+ }
21
47
  }
22
- this[kHandler] = new this[kHandler]
23
48
  }
24
-
49
+ /**
50
+ * drive method.
51
+ *
52
+ * @param $name - Driver or disk name.
53
+ * @returns FilesystemAdapter instance.
54
+ */
25
55
  drive($name = null) {
26
56
  return this.driver($name);
27
57
  }
28
-
58
+ /**
59
+ * disk method.
60
+ *
61
+ * @param name - Disk name.
62
+ * @returns FilesystemAdapter instance.
63
+ */
29
64
  disk(name = null) {
30
- return this.driver(name)
65
+ return this.driver(name);
31
66
  }
32
-
67
+ /**
68
+ * cloud method.
69
+ *
70
+ * @returns Default cloud FilesystemAdapter instance.
71
+ */
33
72
  cloud() {
34
- var name = this.getDefaultCloudDriver();
35
- return this.disk(name)
73
+ const name = this.getDefaultCloudDriver();
74
+ return this.disk(name);
36
75
  }
37
-
76
+ /**
77
+ * resolve method.
78
+ *
79
+ * @param $name - Disk name to resolve.
80
+ * @returns Resolved FilesystemAdapter instance.
81
+ */
38
82
  resolve($name) {
39
- var $config = this.getConfig($name);
83
+ const $config = this.getConfig($name);
40
84
  if (!$config) {
41
- throw new InvalidArgumentException("Disk [{" + $name + "}] was not available.");
85
+ throw new invalidArgumentException_1.default("Disk [" + $name + "] was not available.");
42
86
  }
43
- return super.resolve($name, $config)
87
+ return super.resolve($name, $config);
44
88
  }
45
-
46
-
89
+ /**
90
+ * createLocalDriver method.
91
+ *
92
+ * @param $config - Driver configuration.
93
+ * @returns FilesystemAdapter for local storage.
94
+ */
47
95
  createLocalDriver($config) {
48
- return this.adapt(new(require('./adapter/local'))($config['root'], $config), $config);
96
+ return this.adapt(new local_1.default($config['root'], $config), $config);
49
97
  }
50
-
98
+ /**
99
+ * createAzureDriver method.
100
+ *
101
+ * @param $config - Driver configuration.
102
+ * @returns FilesystemAdapter for Azure storage.
103
+ */
51
104
  createAzureDriver($config) {
52
- return this.adapt(new(require('./adapter/azure'))(new(require('./clients/azure'))($config), $config), $config);
105
+ return this.adapt(new azure_1.default(new azure_2.default($config), $config), $config);
53
106
  }
54
-
107
+ /**
108
+ * createS3Driver method.
109
+ *
110
+ * @param $config - Driver configuration.
111
+ * @returns FilesystemAdapter for S3 storage.
112
+ */
55
113
  createS3Driver($config) {
56
- return this.adapt(new(require('./adapter/s3'))(new(require('./clients/s3'))($config), $config), $config);
114
+ return this.adapt(new s3_1.default(new s3_2.default($config), $config), $config);
57
115
  }
58
-
116
+ /**
117
+ * adapt method.
118
+ *
119
+ * @param adapter - Core adapter instance.
120
+ * @param config - Driver configuration.
121
+ * @returns FilesystemAdapter wrapping core adapter.
122
+ */
59
123
  adapt(adapter, config) {
60
- return new FilesystemAdapter(adapter, this[kHandler]);
124
+ return new filesystemAdapter_1.default(adapter, this[kHandler]);
61
125
  }
62
-
126
+ /**
127
+ * getConfig method.
128
+ *
129
+ * @param name - Disk configuration key.
130
+ * @returns Configuration object.
131
+ */
63
132
  getConfig(name) {
64
- return super.getConfig(`disks.${name}`);
133
+ return super.getConfig(`disks.${name}`) || super.getConfig(name);
65
134
  }
66
-
135
+ /**
136
+ * getDefaultCloudDriver method.
137
+ *
138
+ * @returns Name of default cloud driver.
139
+ */
67
140
  getDefaultCloudDriver() {
68
141
  return super.getConfig('cloud');
69
142
  }
70
-
143
+ /**
144
+ * registerToRequest method.
145
+ *
146
+ * @param FileRequest - Request constructor to extend.
147
+ */
71
148
  registerToRequest(FileRequest) {
72
- let self = this
73
- FileRequest.prototype.store = function(dir = '', disk = '', options = {}) {
74
- options = typeof disk == 'object' ? disk : options
75
- disk = typeof disk == 'object' ? '' : disk
76
- return self.disk((disk || self.getDefaultDriver())).putFile(dir, this, options)
77
- }
78
- FileRequest.prototype.storeAs = function(dir = '', filename, disk = '', options = {}) {
79
- options = typeof disk == 'object' ? disk : options
80
- disk = typeof disk == 'object' ? '' : disk
81
- return self.disk((disk || self.getDefaultDriver())).putFileAs(dir, this, filename, options)
82
- }
83
-
149
+ const self = this;
150
+ FileRequest.prototype.store = function (dir, disk, options) {
151
+ dir = dir || '';
152
+ options = typeof disk == 'object' ? disk : (options || {});
153
+ disk = typeof disk == 'object' ? '' : (disk || '');
154
+ return self.disk((disk || self.getDefaultDriver())).putFile(dir, this, options);
155
+ };
156
+ FileRequest.prototype.storeAs = function (dir, filename, disk, options) {
157
+ dir = dir || '';
158
+ options = typeof disk == 'object' ? disk : (options || {});
159
+ disk = typeof disk == 'object' ? '' : (disk || '');
160
+ return self.disk((disk || self.getDefaultDriver())).putFileAs(dir, this, filename, options);
161
+ };
84
162
  }
85
-
86
163
  }
87
-
88
- module.exports = FileSystemManager
164
+ exports.default = FileSystemManager;
165
+ //# sourceMappingURL=filesystemManager.js.map
166
+ if (exports.default) {
167
+ const d = exports.default;
168
+ module.exports = d;
169
+ Object.assign(module.exports, exports);
170
+ module.exports.default = d;
171
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystemManager.js","sourceRoot":"","sources":["../src/filesystemManager.ts"],"names":[],"mappings":"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"}
@@ -1,49 +1,77 @@
1
- const ServiceProvider = require('@ostro/support/serviceProvider');
2
- const FilesystemManager = require('./filesystemManager');
3
- const Filesystem = require('./filesystem');
4
- class filesystemServiceProvider extends ServiceProvider {
5
-
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 serviceProvider_1 = __importDefault(require("@ostro/support/serviceProvider"));
7
+ const filesystemManager_1 = __importDefault(require("./filesystemManager"));
8
+ const filesystem_1 = __importDefault(require("./filesystem"));
9
+ /**
10
+ * Class filesystemServiceProvider.
11
+ */
12
+ class filesystemServiceProvider extends serviceProvider_1.default {
13
+ /**
14
+ * register method.
15
+ */
6
16
  register() {
7
17
  this.registerNativeFilesystem();
8
-
9
18
  this.registerFlysystem();
10
19
  }
11
-
20
+ /**
21
+ * registerNativeFilesystem method.
22
+ */
12
23
  registerNativeFilesystem() {
13
- this.$app.singleton('files', function() {
14
- return new Filesystem;
24
+ this.$app.singleton('files', function () {
25
+ return new filesystem_1.default();
15
26
  });
16
27
  }
17
-
28
+ /**
29
+ * registerFlysystem method.
30
+ */
18
31
  registerFlysystem() {
19
32
  this.registerManager();
20
-
21
33
  this.$app.singleton('filesystem.disk', ($app) => {
22
34
  return $app['filesystem'].disk(this.getDefaultDriver());
23
35
  });
24
-
25
36
  this.$app.singleton('filesystem.cloud', ($app) => {
26
37
  return $app['filesystem'].disk(this.getCloudDriver());
27
38
  });
28
39
  }
29
-
40
+ /**
41
+ * registerManager method.
42
+ */
30
43
  registerManager() {
31
- this.$app.singleton('filesystem', function($app) {
32
- return new FilesystemManager($app);
44
+ this.$app.singleton('filesystem', function ($app) {
45
+ return new filesystemManager_1.default($app);
33
46
  });
34
47
  }
35
-
48
+ /**
49
+ * getDefaultDriver method.
50
+ *
51
+ * @returns Default driver name.
52
+ */
36
53
  getDefaultDriver() {
37
54
  return this.$app['config']['filesystems.default'];
38
55
  }
39
-
56
+ /**
57
+ * getCloudDriver method.
58
+ *
59
+ * @returns Cloud driver name.
60
+ */
40
61
  getCloudDriver() {
41
62
  return this.$app['config']['filesystems.cloud'];
42
63
  }
43
-
64
+ /**
65
+ * boot method.
66
+ */
44
67
  boot() {
45
-
46
68
  }
47
-
48
69
  }
49
- module.exports = filesystemServiceProvider
70
+ exports.default = filesystemServiceProvider;
71
+ //# sourceMappingURL=filesystemServiceProvider.js.map
72
+ if (exports.default) {
73
+ const d = exports.default;
74
+ module.exports = d;
75
+ Object.assign(module.exports, exports);
76
+ module.exports.default = d;
77
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystemServiceProvider.js","sourceRoot":"","sources":["../src/filesystemServiceProvider.ts"],"names":[],"mappings":";;;;;AAAA,qFAA6D;AAC7D,4EAAoD;AACpD,8DAAsC;AAEtC;;GAEG;AACH,MAAM,yBAA0B,SAAQ,yBAAe;IAEnD;;OAEG;IACI,QAAQ;QACX,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,wBAAwB;QAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACzB,OAAO,IAAI,oBAAU,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,iBAAiB;QACpB,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,IAAS,EAAO,EAAE;YACtD,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC,IAAS,EAAO,EAAE;YACvD,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,eAAe;QAClB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,UAAS,IAAS;YAChD,OAAO,IAAI,2BAAiB,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACI,gBAAgB;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC;IACtD,CAAC;IAED;;;;OAIG;IACI,cAAc;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACI,IAAI;IACX,CAAC;CACJ;AAED,kBAAe,yBAAyB,CAAC"}
@@ -1,12 +1,34 @@
1
- const InvalidArgumentExceptionContract = require('@ostro/contracts/exception/invalidArgumentException')
2
- class InvalidArgumentException extends InvalidArgumentExceptionContract {
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 invalidArgumentException_1 = __importDefault(require("@ostro/contracts/exception/invalidArgumentException"));
7
+ /**
8
+ * Class InvalidArgumentException.
9
+ */
10
+ class InvalidArgumentException extends invalidArgumentException_1.default {
11
+ name;
12
+ message;
13
+ statusCode;
14
+ /**
15
+ * Create a new instance.
16
+ *
17
+ * @param error - Error message.
18
+ */
3
19
  constructor(error) {
4
20
  super();
5
21
  this.name = this.constructor.name;
6
22
  this.message = error;
7
23
  this.statusCode = 500;
8
24
  Error.captureStackTrace(this, this.constructor);
9
-
10
25
  }
11
26
  }
12
- module.exports = InvalidArgumentException
27
+ exports.default = InvalidArgumentException;
28
+ //# sourceMappingURL=invalidArgumentException.js.map
29
+ if (exports.default) {
30
+ const d = exports.default;
31
+ module.exports = d;
32
+ Object.assign(module.exports, exports);
33
+ module.exports.default = d;
34
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invalidArgumentException.js","sourceRoot":"","sources":["../src/invalidArgumentException.ts"],"names":[],"mappings":";;;;;AAAA,mHAAmG;AAEnG;;GAEG;AACH,MAAM,wBAAyB,SAAQ,kCAAgC;IAC5D,IAAI,CAAS;IACb,OAAO,CAAS;IAChB,UAAU,CAAS;IAE1B;;;;OAIG;IACH,YAAY,KAAa;QACrB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;QACtB,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;CACJ;AAED,kBAAe,wBAAwB,CAAC"}