spice-js 2.7.19 → 2.7.20

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.
@@ -9,15 +9,40 @@ function _asyncToGenerator(n) { return function () { var t = this, e = arguments
9
9
  var views = require("koa-views");
10
10
  var path = require("path");
11
11
  var juice = require("juice");
12
+ function resolveStorageDriver(driver) {
13
+ var resolvedDriver = driver;
14
+ while (resolvedDriver && typeof resolvedDriver === "object" && resolvedDriver.default) {
15
+ resolvedDriver = resolvedDriver.default;
16
+ }
17
+ return resolvedDriver;
18
+ }
19
+ function resolveDriverName(requestedDriverName, providers) {
20
+ if (providers === void 0) {
21
+ providers = {};
22
+ }
23
+ if (requestedDriverName && requestedDriverName !== "sharepoint" && resolveStorageDriver(providers[requestedDriverName])) {
24
+ return requestedDriverName;
25
+ }
26
+ var fallbackDriverName = ["firebase", "s3", "minio", "local"].find(driverName => resolveStorageDriver(providers[driverName]));
27
+ if (!fallbackDriverName) {
28
+ throw new TypeError("Storage driver '" + (requestedDriverName || "unknown") + "' is not supported and no fallback driver is configured");
29
+ }
30
+ if (requestedDriverName && requestedDriverName !== fallbackDriverName) {
31
+ console.warn("Storage driver '" + requestedDriverName + "' is unsupported. Falling back to '" + fallbackDriverName + "'.");
32
+ }
33
+ return fallbackDriverName;
34
+ }
12
35
  class Storage {
13
36
  constructor(args) {
14
37
  if (args === void 0) {
15
38
  args = {};
16
39
  }
17
- this.driver_name = args.driver_name || spice.config.storage.default_driver;
40
+ this.driver_name = resolveDriverName(args.driver_name || spice.config.storage.default_driver, spice.config.storage.providers);
18
41
  this.driver_options = _lodash.default.merge(spice.config.storage.drivers[this.driver_name], args.options);
19
- //console.log(this.driver_name, spice.config.storage.providers)
20
- this.Driver = spice.config.storage.providers[this.driver_name];
42
+ this.Driver = resolveStorageDriver(spice.config.storage.providers[this.driver_name]);
43
+ if (typeof this.Driver !== "function") {
44
+ throw new TypeError("Storage driver '" + this.driver_name + "' is not a constructor");
45
+ }
21
46
  }
22
47
  save(_ref) {
23
48
  var _this = this;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spice-js",
3
- "version": "2.7.19",
3
+ "version": "2.7.20",
4
4
  "description": "spice",
5
5
  "main": "build/index.js",
6
6
  "repository": {
@@ -3,15 +3,64 @@ const path = require("path");
3
3
  const juice = require("juice");
4
4
  import _ from "lodash";
5
5
 
6
+ function resolveStorageDriver(driver) {
7
+ let resolvedDriver = driver;
8
+ while (
9
+ resolvedDriver &&
10
+ typeof resolvedDriver === "object" &&
11
+ resolvedDriver.default
12
+ ) {
13
+ resolvedDriver = resolvedDriver.default;
14
+ }
15
+ return resolvedDriver;
16
+ }
17
+
18
+ function resolveDriverName(requestedDriverName, providers = {}) {
19
+ if (
20
+ requestedDriverName &&
21
+ requestedDriverName !== "sharepoint" &&
22
+ resolveStorageDriver(providers[requestedDriverName])
23
+ ) {
24
+ return requestedDriverName;
25
+ }
26
+
27
+ const fallbackDriverName = ["firebase", "s3", "minio", "local"].find(
28
+ (driverName) => resolveStorageDriver(providers[driverName])
29
+ );
30
+
31
+ if (!fallbackDriverName) {
32
+ throw new TypeError(
33
+ `Storage driver '${requestedDriverName || "unknown"}' is not supported and no fallback driver is configured`
34
+ );
35
+ }
36
+
37
+ if (requestedDriverName && requestedDriverName !== fallbackDriverName) {
38
+ console.warn(
39
+ `Storage driver '${requestedDriverName}' is unsupported. Falling back to '${fallbackDriverName}'.`
40
+ );
41
+ }
42
+
43
+ return fallbackDriverName;
44
+ }
45
+
6
46
  export default class Storage {
7
47
  constructor(args = {}) {
8
- this.driver_name = args.driver_name || spice.config.storage.default_driver;
48
+ this.driver_name = resolveDriverName(
49
+ args.driver_name || spice.config.storage.default_driver,
50
+ spice.config.storage.providers
51
+ );
9
52
  this.driver_options = _.merge(
10
53
  spice.config.storage.drivers[this.driver_name],
11
54
  args.options
12
55
  );
13
- //console.log(this.driver_name, spice.config.storage.providers)
14
- this.Driver = spice.config.storage.providers[this.driver_name];
56
+ this.Driver = resolveStorageDriver(
57
+ spice.config.storage.providers[this.driver_name]
58
+ );
59
+ if (typeof this.Driver !== "function") {
60
+ throw new TypeError(
61
+ `Storage driver '${this.driver_name}' is not a constructor`
62
+ );
63
+ }
15
64
  }
16
65
 
17
66
  async save({ files, path, options }) {