@webiny/api-file-manager 5.17.4-beta.1 → 5.18.0-beta.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 (76) hide show
  1. package/handlers/download/index.js +1 -2
  2. package/handlers/manage/index.js +1 -2
  3. package/handlers/transform/index.js +1 -2
  4. package/handlers/transform/loaders/imageLoader.js +1 -2
  5. package/handlers/transform/loaders/index.js +1 -2
  6. package/handlers/transform/loaders/sanitizeImageTransformations.js +1 -2
  7. package/handlers/transform/managers/imageManager.js +1 -2
  8. package/handlers/transform/managers/index.js +1 -2
  9. package/handlers/transform/optimizeImage.js +1 -2
  10. package/handlers/transform/transformImage.js +1 -2
  11. package/handlers/transform/utils.js +1 -2
  12. package/handlers/utils/createHandler.d.ts +9 -0
  13. package/handlers/utils/createHandler.js +5 -3
  14. package/handlers/utils/getEnvironment.js +1 -2
  15. package/handlers/utils/getObjectParams.js +1 -2
  16. package/handlers/utils/index.js +1 -2
  17. package/package.json +17 -17
  18. package/plugins/crud/files/validation.js +1 -2
  19. package/plugins/crud/files.crud.js +30 -12
  20. package/plugins/crud/settings.crud.js +1 -2
  21. package/plugins/crud/system.crud.js +1 -2
  22. package/plugins/crud/utils/checkBasePermissions.js +1 -2
  23. package/plugins/crud/utils/createFileModel.js +1 -2
  24. package/plugins/crud/utils/lifecycleEvents.js +1 -2
  25. package/plugins/definitions/FilePhysicalStoragePlugin.js +1 -2
  26. package/plugins/definitions/FilePlugin.js +1 -2
  27. package/plugins/definitions/FileStorageTransformPlugin.js +1 -2
  28. package/plugins/definitions/FilesStorageOperationsProviderPlugin.js +1 -2
  29. package/plugins/definitions/InstallationPlugin.js +1 -2
  30. package/plugins/definitions/SettingsStorageOperationsProviderPlugin.js +1 -2
  31. package/plugins/definitions/SystemStorageOperationsProviderPlugin.js +1 -2
  32. package/plugins/graphql.js +4 -5
  33. package/plugins/index.js +1 -2
  34. package/plugins/storage/FileStorage.js +1 -2
  35. package/plugins/storage/index.js +1 -2
  36. package/types.d.ts +26 -9
  37. package/types.js +1 -2
  38. package/utils.js +1 -2
  39. package/handlers/download/index.js.map +0 -1
  40. package/handlers/manage/index.js.map +0 -1
  41. package/handlers/transform/bundle/index.d.ts +0 -1
  42. package/handlers/transform/bundle/index.js +0 -26
  43. package/handlers/transform/bundle/index.js.map +0 -1
  44. package/handlers/transform/index.js.map +0 -1
  45. package/handlers/transform/loaders/imageLoader.js.map +0 -1
  46. package/handlers/transform/loaders/index.js.map +0 -1
  47. package/handlers/transform/loaders/sanitizeImageTransformations.js.map +0 -1
  48. package/handlers/transform/managers/imageManager.js.map +0 -1
  49. package/handlers/transform/managers/index.js.map +0 -1
  50. package/handlers/transform/optimizeImage.js.map +0 -1
  51. package/handlers/transform/transformImage.js.map +0 -1
  52. package/handlers/transform/utils.js.map +0 -1
  53. package/handlers/utils/createHandler.js.map +0 -1
  54. package/handlers/utils/getEnvironment.js.map +0 -1
  55. package/handlers/utils/getObjectParams.js.map +0 -1
  56. package/handlers/utils/index.js.map +0 -1
  57. package/plugins/crud/files/validation.js.map +0 -1
  58. package/plugins/crud/files.crud.js.map +0 -1
  59. package/plugins/crud/settings.crud.js.map +0 -1
  60. package/plugins/crud/system.crud.js.map +0 -1
  61. package/plugins/crud/utils/checkBasePermissions.js.map +0 -1
  62. package/plugins/crud/utils/createFileModel.js.map +0 -1
  63. package/plugins/crud/utils/lifecycleEvents.js.map +0 -1
  64. package/plugins/definitions/FilePhysicalStoragePlugin.js.map +0 -1
  65. package/plugins/definitions/FilePlugin.js.map +0 -1
  66. package/plugins/definitions/FileStorageTransformPlugin.js.map +0 -1
  67. package/plugins/definitions/FilesStorageOperationsProviderPlugin.js.map +0 -1
  68. package/plugins/definitions/InstallationPlugin.js.map +0 -1
  69. package/plugins/definitions/SettingsStorageOperationsProviderPlugin.js.map +0 -1
  70. package/plugins/definitions/SystemStorageOperationsProviderPlugin.js.map +0 -1
  71. package/plugins/graphql.js.map +0 -1
  72. package/plugins/index.js.map +0 -1
  73. package/plugins/storage/FileStorage.js.map +0 -1
  74. package/plugins/storage/index.js.map +0 -1
  75. package/types.js.map +0 -1
  76. package/utils.js.map +0 -1
@@ -122,5 +122,4 @@ var _default = () => ({
122
122
 
123
123
  });
124
124
 
125
- exports.default = _default;
126
- //# sourceMappingURL=index.js.map
125
+ exports.default = _default;
@@ -67,5 +67,4 @@ var _default = () => ({
67
67
 
68
68
  });
69
69
 
70
- exports.default = _default;
71
- //# sourceMappingURL=index.js.map
70
+ exports.default = _default;
@@ -93,5 +93,4 @@ var _default = () => ({
93
93
 
94
94
  });
95
95
 
96
- exports.default = _default;
97
- //# sourceMappingURL=index.js.map
96
+ exports.default = _default;
@@ -103,5 +103,4 @@ var _default = {
103
103
  }
104
104
 
105
105
  };
106
- exports.default = _default;
107
- //# sourceMappingURL=imageLoader.js.map
106
+ exports.default = _default;
@@ -10,5 +10,4 @@ exports.default = void 0;
10
10
  var _imageLoader = _interopRequireDefault(require("./imageLoader"));
11
11
 
12
12
  var _default = [_imageLoader.default];
13
- exports.default = _default;
14
- //# sourceMappingURL=index.js.map
13
+ exports.default = _default;
@@ -48,5 +48,4 @@ var _default = args => {
48
48
  return null;
49
49
  };
50
50
 
51
- exports.default = _default;
52
- //# sourceMappingURL=sanitizeImageTransformations.js.map
51
+ exports.default = _default;
@@ -52,5 +52,4 @@ var _default = {
52
52
  }
53
53
 
54
54
  };
55
- exports.default = _default;
56
- //# sourceMappingURL=imageManager.js.map
55
+ exports.default = _default;
@@ -10,5 +10,4 @@ exports.default = void 0;
10
10
  var _imageManager = _interopRequireDefault(require("./imageManager"));
11
11
 
12
12
  var _default = [_imageManager.default];
13
- exports.default = _default;
14
- //# sourceMappingURL=index.js.map
13
+ exports.default = _default;
@@ -42,5 +42,4 @@ var _default = async (buffer, type) => {
42
42
  }
43
43
  };
44
44
 
45
- exports.default = _default;
46
- //# sourceMappingURL=optimizeImage.js.map
45
+ exports.default = _default;
@@ -27,5 +27,4 @@ var _default = async (buffer, transformations) => {
27
27
  }).toBuffer();
28
28
  };
29
29
 
30
- exports.default = _default;
31
- //# sourceMappingURL=transformImage.js.map
30
+ exports.default = _default;
@@ -43,5 +43,4 @@ const getImageKey = ({
43
43
  return `${prefix}${(0, _objectHash.default)(transformations)}-${key}`;
44
44
  };
45
45
 
46
- exports.getImageKey = getImageKey;
47
- //# sourceMappingURL=utils.js.map
46
+ exports.getImageKey = getImageKey;
@@ -2,6 +2,7 @@ declare const _default: (handler: any) => (event: any) => Promise<{
2
2
  body: string;
3
3
  statusCode: number;
4
4
  headers: {
5
+ "Cache-Control": string;
5
6
  "Access-Control-Allow-Origin": string;
6
7
  "Access-Control-Allow-Credentials": boolean;
7
8
  };
@@ -11,5 +12,13 @@ declare const _default: (handler: any) => (event: any) => Promise<{
11
12
  statusCode: any;
12
13
  headers: any;
13
14
  body: any;
15
+ } | {
16
+ statusCode: number;
17
+ headers: {
18
+ "Access-Control-Allow-Origin": string;
19
+ "Access-Control-Allow-Credentials": boolean;
20
+ };
21
+ body: string;
22
+ isBase64Encoded?: undefined;
14
23
  }>;
15
24
  export default _default;
@@ -21,13 +21,16 @@ const baseHeaders = {
21
21
  "Access-Control-Allow-Origin": "*",
22
22
  "Access-Control-Allow-Credentials": true
23
23
  };
24
+ const DEFAULT_CACHE_MAX_AGE = 30758400; // 1 year
24
25
 
25
26
  var _default = handler => async event => {
26
27
  if (event.httpMethod === "OPTIONS") {
27
28
  return {
28
29
  body: "",
29
30
  statusCode: 204,
30
- headers: baseHeaders
31
+ headers: _objectSpread(_objectSpread({}, baseHeaders), {}, {
32
+ "Cache-Control": "public, max-age=" + DEFAULT_CACHE_MAX_AGE
33
+ })
31
34
  };
32
35
  }
33
36
 
@@ -62,5 +65,4 @@ var _default = handler => async event => {
62
65
  }
63
66
  };
64
67
 
65
- exports.default = _default;
66
- //# sourceMappingURL=createHandler.js.map
68
+ exports.default = _default;
@@ -10,5 +10,4 @@ var _default = () => ({
10
10
  region: process.env.AWS_REGION
11
11
  });
12
12
 
13
- exports.default = _default;
14
- //# sourceMappingURL=getEnvironment.js.map
13
+ exports.default = _default;
@@ -24,5 +24,4 @@ var _default = filename => {
24
24
  };
25
25
  };
26
26
 
27
- exports.default = _default;
28
- //# sourceMappingURL=getObjectParams.js.map
27
+ exports.default = _default;
@@ -28,5 +28,4 @@ var _getEnvironment = _interopRequireDefault(require("./getEnvironment"));
28
28
 
29
29
  var _createHandler = _interopRequireDefault(require("./createHandler"));
30
30
 
31
- var _getObjectParams = _interopRequireDefault(require("./getObjectParams"));
32
- //# sourceMappingURL=index.js.map
31
+ var _getObjectParams = _interopRequireDefault(require("./getObjectParams"));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-file-manager",
3
- "version": "5.17.4-beta.1",
3
+ "version": "5.18.0-beta.2",
4
4
  "main": "index.js",
5
5
  "keywords": [
6
6
  "fm:base"
@@ -20,18 +20,18 @@
20
20
  "dependencies": {
21
21
  "@babel/runtime": "7.16.3",
22
22
  "@commodo/fields": "1.1.2-beta.20",
23
- "@webiny/api-i18n-content": "5.17.4-beta.1",
24
- "@webiny/api-security": "5.17.4-beta.1",
25
- "@webiny/api-tenancy": "5.17.4-beta.1",
26
- "@webiny/api-upgrade": "5.17.4-beta.1",
27
- "@webiny/error": "5.17.4-beta.1",
28
- "@webiny/handler": "5.17.4-beta.1",
29
- "@webiny/handler-client": "5.17.4-beta.1",
30
- "@webiny/handler-graphql": "5.17.4-beta.1",
31
- "@webiny/plugins": "5.17.4-beta.1",
32
- "@webiny/project-utils": "5.17.4-beta.1",
33
- "@webiny/validation": "5.17.4-beta.1",
34
- "aws-sdk": "2.1027.0",
23
+ "@webiny/api-i18n-content": "5.18.0-beta.2",
24
+ "@webiny/api-security": "5.18.0-beta.2",
25
+ "@webiny/api-tenancy": "5.18.0-beta.2",
26
+ "@webiny/api-upgrade": "5.18.0-beta.2",
27
+ "@webiny/error": "5.18.0-beta.2",
28
+ "@webiny/handler": "5.18.0-beta.2",
29
+ "@webiny/handler-client": "5.18.0-beta.2",
30
+ "@webiny/handler-graphql": "5.18.0-beta.2",
31
+ "@webiny/plugins": "5.18.0-beta.2",
32
+ "@webiny/project-utils": "5.18.0-beta.2",
33
+ "@webiny/validation": "5.18.0-beta.2",
34
+ "aws-sdk": "2.1032.0",
35
35
  "commodo-fields-object": "1.0.6",
36
36
  "mdbid": "1.0.0",
37
37
  "object-hash": "1.3.1",
@@ -44,9 +44,9 @@
44
44
  "@babel/plugin-transform-runtime": "^7.5.5",
45
45
  "@babel/preset-env": "^7.5.5",
46
46
  "@babel/preset-typescript": "^7.0.0",
47
- "@webiny/api-i18n": "^5.17.4-beta.1",
48
- "@webiny/api-i18n-ddb": "^5.17.4-beta.1",
49
- "@webiny/cli": "^5.17.4-beta.1",
47
+ "@webiny/api-i18n": "^5.18.0-beta.2",
48
+ "@webiny/api-i18n-ddb": "^5.18.0-beta.2",
49
+ "@webiny/cli": "^5.18.0-beta.2",
50
50
  "jest": "^26.6.3",
51
51
  "rimraf": "^3.0.2",
52
52
  "ttypescript": "^1.5.12",
@@ -71,5 +71,5 @@
71
71
  ]
72
72
  }
73
73
  },
74
- "gitHead": "42a79226fee87b18750a72c9d8399f3b32625a9a"
74
+ "gitHead": "02bb6242be1f61cbc204aea458fbc9e7c6000fc8"
75
75
  }
@@ -38,5 +38,4 @@ var _default = () => [new _FilePlugin.FilePlugin({
38
38
  }
39
39
  })];
40
40
 
41
- exports.default = _default;
42
- //# sourceMappingURL=validation.js.map
41
+ exports.default = _default;
@@ -82,7 +82,13 @@ const filesContextCrudPlugin = new _ContextPlugin.ContextPlugin(async context =>
82
82
  const permission = await (0, _checkBasePermissions.default)(context, {
83
83
  rwd: "r"
84
84
  });
85
- const file = await storageOperations.get(id);
85
+ const file = await storageOperations.get({
86
+ where: {
87
+ id,
88
+ tenant: context.tenancy.getCurrentTenant().id,
89
+ locale: getLocaleCode(context)
90
+ }
91
+ });
86
92
 
87
93
  if (!file) {
88
94
  throw new _handlerGraphql.NotFoundError(`File with id "${id}" does not exists.`);
@@ -143,7 +149,13 @@ const filesContextCrudPlugin = new _ContextPlugin.ContextPlugin(async context =>
143
149
  const permission = await (0, _checkBasePermissions.default)(context, {
144
150
  rwd: "w"
145
151
  });
146
- const original = await storageOperations.get(id);
152
+ const original = await storageOperations.get({
153
+ where: {
154
+ id,
155
+ tenant: context.tenancy.getCurrentTenant().id,
156
+ locale: getLocaleCode(context)
157
+ }
158
+ });
147
159
 
148
160
  if (!original) {
149
161
  throw new _handlerGraphql.NotFoundError(`File with id "${id}" does not exists.`);
@@ -187,7 +199,13 @@ const filesContextCrudPlugin = new _ContextPlugin.ContextPlugin(async context =>
187
199
  const permission = await (0, _checkBasePermissions.default)(context, {
188
200
  rwd: "d"
189
201
  });
190
- const file = await storageOperations.get(id);
202
+ const file = await storageOperations.get({
203
+ where: {
204
+ id,
205
+ tenant: context.tenancy.getCurrentTenant().id,
206
+ locale: getLocaleCode(context)
207
+ }
208
+ });
191
209
 
192
210
  if (!file) {
193
211
  throw new _handlerGraphql.NotFoundError(`File with id "${id}" does not exists.`);
@@ -201,7 +219,9 @@ const filesContextCrudPlugin = new _ContextPlugin.ContextPlugin(async context =>
201
219
  plugins: filePlugins,
202
220
  file
203
221
  });
204
- await storageOperations.delete(id);
222
+ await storageOperations.delete({
223
+ file
224
+ });
205
225
  await (0, _lifecycleEvents.runLifecycleEvent)("afterDelete", {
206
226
  context,
207
227
  plugins: filePlugins,
@@ -291,13 +311,11 @@ const filesContextCrudPlugin = new _ContextPlugin.ContextPlugin(async context =>
291
311
  where: initialWhere,
292
312
  sort: initialSort
293
313
  } = params;
294
- const {
295
- i18nContent
296
- } = context;
297
314
 
298
315
  const where = _objectSpread(_objectSpread({}, initialWhere), {}, {
299
316
  private: false,
300
- locale: i18nContent.locale.code
317
+ locale: context.i18nContent.getLocale().code,
318
+ tenant: context.tenancy.getCurrentTenant().id
301
319
  });
302
320
  /**
303
321
  * Always override the createdBy received from the user, if any.
@@ -322,8 +340,8 @@ const filesContextCrudPlugin = new _ContextPlugin.ContextPlugin(async context =>
322
340
  where.type_in = types;
323
341
  }
324
342
  /**
325
- * TODO: determine the change of this part.
326
- * Either assign search keyword to something meaningful or throw it out.
343
+ * We are assigning search to tag and name search.
344
+ * This should be treated as OR condition in the storage operations.
327
345
  */
328
346
 
329
347
 
@@ -375,6 +393,7 @@ const filesContextCrudPlugin = new _ContextPlugin.ContextPlugin(async context =>
375
393
  i18nContent
376
394
  } = context;
377
395
  const where = {
396
+ tenant: context.tenancy.getCurrentTenant().id,
378
397
  locale: i18nContent.locale.code
379
398
  };
380
399
  const params = {
@@ -405,5 +424,4 @@ const filesContextCrudPlugin = new _ContextPlugin.ContextPlugin(async context =>
405
424
  });
406
425
  filesContextCrudPlugin.name = "FileManagerFilesCrud";
407
426
  var _default = filesContextCrudPlugin;
408
- exports.default = _default;
409
- //# sourceMappingURL=files.crud.js.map
427
+ exports.default = _default;
@@ -112,5 +112,4 @@ const settingsCrudContextPlugin = new _ContextPlugin.ContextPlugin(async context
112
112
  });
113
113
  settingsCrudContextPlugin.name = "FileMangerSettingsCrud";
114
114
  var _default = settingsCrudContextPlugin;
115
- exports.default = _default;
116
- //# sourceMappingURL=settings.crud.js.map
115
+ exports.default = _default;
@@ -142,5 +142,4 @@ const systemCrudContextPlugin = new _ContextPlugin.ContextPlugin(async context =
142
142
  });
143
143
  systemCrudContextPlugin.name = "FileManagerSystemCrud";
144
144
  var _default = systemCrudContextPlugin;
145
- exports.default = _default;
146
- //# sourceMappingURL=system.crud.js.map
145
+ exports.default = _default;
@@ -30,5 +30,4 @@ const hasRwd = (filesFilePermission, rwd) => {
30
30
  }
31
31
 
32
32
  return filesFilePermission.rwd.includes(rwd);
33
- };
34
- //# sourceMappingURL=checkBasePermissions.js.map
33
+ };
@@ -61,5 +61,4 @@ var _default = (create = true) => {
61
61
  })();
62
62
  };
63
63
 
64
- exports.default = _default;
65
- //# sourceMappingURL=createFileModel.js.map
64
+ exports.default = _default;
@@ -30,5 +30,4 @@ const runLifecycleEvent = async (hook, params) => {
30
30
  }
31
31
  };
32
32
 
33
- exports.runLifecycleEvent = runLifecycleEvent;
34
- //# sourceMappingURL=lifecycleEvents.js.map
33
+ exports.runLifecycleEvent = runLifecycleEvent;
@@ -39,5 +39,4 @@ class FilePhysicalStoragePlugin extends _plugins.Plugin {
39
39
  }
40
40
 
41
41
  exports.FilePhysicalStoragePlugin = FilePhysicalStoragePlugin;
42
- (0, _defineProperty2.default)(FilePhysicalStoragePlugin, "type", "api-file-manager-storage");
43
- //# sourceMappingURL=FilePhysicalStoragePlugin.js.map
42
+ (0, _defineProperty2.default)(FilePhysicalStoragePlugin, "type", "api-file-manager-storage");
@@ -61,5 +61,4 @@ class FilePlugin extends _plugins.Plugin {
61
61
  }
62
62
 
63
63
  exports.FilePlugin = FilePlugin;
64
- (0, _defineProperty2.default)(FilePlugin, "type", "fm.file");
65
- //# sourceMappingURL=FilePlugin.js.map
64
+ (0, _defineProperty2.default)(FilePlugin, "type", "fm.file");
@@ -48,5 +48,4 @@ class FileStorageTransformPlugin extends _plugins.Plugin {
48
48
  }
49
49
 
50
50
  exports.FileStorageTransformPlugin = FileStorageTransformPlugin;
51
- (0, _defineProperty2.default)(FileStorageTransformPlugin, "type", "fm.files.storage.transform");
52
- //# sourceMappingURL=FileStorageTransformPlugin.js.map
51
+ (0, _defineProperty2.default)(FileStorageTransformPlugin, "type", "fm.files.storage.transform");
@@ -14,5 +14,4 @@ var _plugins = require("@webiny/plugins");
14
14
  class FilesStorageOperationsProviderPlugin extends _plugins.Plugin {}
15
15
 
16
16
  exports.FilesStorageOperationsProviderPlugin = FilesStorageOperationsProviderPlugin;
17
- (0, _defineProperty2.default)(FilesStorageOperationsProviderPlugin, "type", "fm.storageOperationsProvider.files");
18
- //# sourceMappingURL=FilesStorageOperationsProviderPlugin.js.map
17
+ (0, _defineProperty2.default)(FilesStorageOperationsProviderPlugin, "type", "fm.storageOperationsProvider.files");
@@ -37,5 +37,4 @@ class InstallationPlugin extends _plugins.Plugin {
37
37
  }
38
38
 
39
39
  exports.InstallationPlugin = InstallationPlugin;
40
- (0, _defineProperty2.default)(InstallationPlugin, "type", "fm.install");
41
- //# sourceMappingURL=InstallationPlugin.js.map
40
+ (0, _defineProperty2.default)(InstallationPlugin, "type", "fm.install");
@@ -14,5 +14,4 @@ var _plugins = require("@webiny/plugins");
14
14
  class SettingsStorageOperationsProviderPlugin extends _plugins.Plugin {}
15
15
 
16
16
  exports.SettingsStorageOperationsProviderPlugin = SettingsStorageOperationsProviderPlugin;
17
- (0, _defineProperty2.default)(SettingsStorageOperationsProviderPlugin, "type", "fm.storageOperationsProvider.settings");
18
- //# sourceMappingURL=SettingsStorageOperationsProviderPlugin.js.map
17
+ (0, _defineProperty2.default)(SettingsStorageOperationsProviderPlugin, "type", "fm.storageOperationsProvider.settings");
@@ -14,5 +14,4 @@ var _plugins = require("@webiny/plugins");
14
14
  class SystemStorageOperationsProviderPlugin extends _plugins.Plugin {}
15
15
 
16
16
  exports.SystemStorageOperationsProviderPlugin = SystemStorageOperationsProviderPlugin;
17
- (0, _defineProperty2.default)(SystemStorageOperationsProviderPlugin, "type", "fm.storageOperationsProvider.system");
18
- //# sourceMappingURL=SystemStorageOperationsProviderPlugin.js.map
17
+ (0, _defineProperty2.default)(SystemStorageOperationsProviderPlugin, "type", "fm.storageOperationsProvider.system");
@@ -176,7 +176,7 @@ const plugin = {
176
176
  `,
177
177
  resolvers: {
178
178
  File: {
179
- async src(file, args, context) {
179
+ async src(file, _, context) {
180
180
  const settings = await context.fileManager.settings.getSettings();
181
181
  return settings.srcPrefix + file.key;
182
182
  }
@@ -210,7 +210,7 @@ const plugin = {
210
210
  }
211
211
  },
212
212
 
213
- async version(_, args, context) {
213
+ async version(_, __, context) {
214
214
  const {
215
215
  i18nContent,
216
216
  tenancy,
@@ -224,7 +224,7 @@ const plugin = {
224
224
  return await fileManager.system.getVersion();
225
225
  },
226
226
 
227
- async getSettings(_, args, context) {
227
+ async getSettings(_, __, context) {
228
228
  return resolve(() => context.fileManager.settings.getSettings());
229
229
  }
230
230
 
@@ -271,5 +271,4 @@ const plugin = {
271
271
  }
272
272
  };
273
273
  var _default = plugin;
274
- exports.default = _default;
275
- //# sourceMappingURL=graphql.js.map
274
+ exports.default = _default;
package/plugins/index.js CHANGED
@@ -21,5 +21,4 @@ var _storage = _interopRequireDefault(require("./storage"));
21
21
 
22
22
  var _default = () => [_system.default, _settings.default, _files.default, _storage.default, _graphql.default, (0, _validation.default)()];
23
23
 
24
- exports.default = _default;
25
- //# sourceMappingURL=index.js.map
24
+ exports.default = _default;
@@ -92,5 +92,4 @@ class FileStorage {
92
92
 
93
93
  }
94
94
 
95
- exports.FileStorage = FileStorage;
96
- //# sourceMappingURL=FileStorage.js.map
95
+ exports.FileStorage = FileStorage;
@@ -19,5 +19,4 @@ const fileStorageContextPlugin = new _ContextPlugin.ContextPlugin(async context
19
19
  });
20
20
  });
21
21
  var _default = fileStorageContextPlugin;
22
- exports.default = _default;
23
- //# sourceMappingURL=index.js.map
22
+ exports.default = _default;
package/types.d.ts CHANGED
@@ -211,6 +211,18 @@ export interface FileManagerSettingsStorageOperations {
211
211
  */
212
212
  delete: () => Promise<void>;
213
213
  }
214
+ /**
215
+ * @category StorageOperations
216
+ * @category FilesStorageOperations
217
+ * @category FilesStorageOperationsParams
218
+ */
219
+ export interface FileManagerFilesStorageOperationsGetParams {
220
+ where: {
221
+ id: string;
222
+ tenant: string;
223
+ locale: string;
224
+ };
225
+ }
214
226
  /**
215
227
  * @category StorageOperations
216
228
  * @category FilesStorageOperations
@@ -228,6 +240,14 @@ export interface FileManagerFilesStorageOperationsUpdateParams {
228
240
  original: File;
229
241
  file: File;
230
242
  }
243
+ /**
244
+ * @category StorageOperations
245
+ * @category FilesStorageOperations
246
+ * @category FilesStorageOperationsParams
247
+ */
248
+ export interface FileManagerFilesStorageOperationsDeleteParams {
249
+ file: File;
250
+ }
231
251
  /**
232
252
  * @category StorageOperations
233
253
  * @category FilesStorageOperations
@@ -249,16 +269,13 @@ export interface FileManagerFilesStorageOperationsListParamsWhere {
249
269
  tag?: string;
250
270
  tag_contains?: string;
251
271
  tag_in?: string[];
252
- /**
253
- * TODO: determine if to remove the search and use name or tag params.
254
- */
255
- search?: string;
256
272
  createdBy?: string;
257
- locale?: string;
258
- tenant?: string;
273
+ locale: string;
274
+ tenant: string;
259
275
  private?: boolean;
260
276
  type?: string;
261
277
  type_in?: string[];
278
+ search?: string;
262
279
  }
263
280
  /**
264
281
  * @category StorageOperations
@@ -291,7 +308,7 @@ export declare type FileManagerFilesStorageOperationsTagsResponse = [
291
308
  ];
292
309
  export interface FileManagerFilesStorageOperationsTagsParamsWhere extends FilesCrudListTagsWhere {
293
310
  locale: string;
294
- tenant?: string;
311
+ tenant: string;
295
312
  }
296
313
  /**
297
314
  * @category StorageOperations
@@ -311,7 +328,7 @@ export interface FileManagerFilesStorageOperations {
311
328
  /**
312
329
  * Get a single file with given ID from the storage.
313
330
  */
314
- get: (id: string) => Promise<File | null>;
331
+ get: (params: FileManagerFilesStorageOperationsGetParams) => Promise<File | null>;
315
332
  /**
316
333
  * Insert the file data into the database.
317
334
  */
@@ -323,7 +340,7 @@ export interface FileManagerFilesStorageOperations {
323
340
  /**
324
341
  * Delete the file from the database.
325
342
  */
326
- delete: (id: string) => Promise<void>;
343
+ delete: (params: FileManagerFilesStorageOperationsDeleteParams) => Promise<void>;
327
344
  /**
328
345
  * Store multiple files at once to the database.
329
346
  */
package/types.js CHANGED
@@ -2,5 +2,4 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
- });
6
- //# sourceMappingURL=types.js.map
5
+ });
package/utils.js CHANGED
@@ -13,5 +13,4 @@ const executeCallbacks = async (plugins, hook, args) => {
13
13
  }
14
14
  };
15
15
 
16
- exports.executeCallbacks = executeCallbacks;
17
- //# sourceMappingURL=utils.js.map
16
+ exports.executeCallbacks = executeCallbacks;
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/handlers/download/index.ts"],"names":["MAX_RETURN_CONTENT_LENGTH","DEFAULT_CACHE_MAX_AGE","extractFilenameOptions","event","path","pathParameters","filename","decodeURI","options","queryStringParameters","extension","pathLib","extname","getS3Object","s3","context","i","loaders","length","loader","canProcess","file","name","process","params","object","getObject","promise","type","handle","invocationArgs","handler","region","S3","ContentLength","data","Body","headers","ContentType","putObjectAcl","Bucket","ACL","Key","statusCode","Location"],"mappings":"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","sourcesContent":["import { HandlerPlugin } from \"@webiny/handler/types\";\nimport S3 from \"aws-sdk/clients/s3\";\nimport sanitizeFilename from \"sanitize-filename\";\nimport pathLib from \"path\";\nimport { createHandler, getEnvironment, getObjectParams } from \"../utils\";\nimport loaders from \"../transform/loaders\";\n\nconst MAX_RETURN_CONTENT_LENGTH = 5000000; // ~4.77MB\nconst DEFAULT_CACHE_MAX_AGE = 30758400; // 1 year\n\n/**\n * Based on given path, extracts file key and additional options sent via query params.\n * @param event\n */\nconst extractFilenameOptions = event => {\n const path = sanitizeFilename(event.pathParameters.path);\n return {\n filename: decodeURI(path),\n options: event.queryStringParameters,\n extension: pathLib.extname(path)\n };\n};\n\nconst getS3Object = async (event, s3, context) => {\n const { options, filename, extension } = extractFilenameOptions(event);\n\n for (let i = 0; i < loaders.length; i++) {\n const loader = loaders[i];\n const canProcess = loader.canProcess({\n context,\n s3,\n options,\n file: {\n name: filename,\n extension\n }\n });\n\n if (canProcess) {\n return loader.process({\n context,\n s3,\n options,\n file: {\n name: filename,\n extension\n }\n });\n }\n }\n\n // If no processors handled the file request, just return the S3 object by default.\n const params = getObjectParams(filename);\n return {\n object: await s3.getObject(params).promise(),\n params: params\n };\n};\n\nexport default (): HandlerPlugin => ({\n type: \"handler\",\n name: \"handler-download-file\",\n async handle(context) {\n const event = context.invocationArgs;\n\n const handler = createHandler(async event => {\n const { region } = getEnvironment();\n const s3 = new S3({ region });\n\n const { params, object } = await getS3Object(event, s3, context);\n\n if (object.ContentLength < MAX_RETURN_CONTENT_LENGTH) {\n return {\n data: object.Body,\n headers: {\n \"Content-Type\": object.ContentType,\n \"Cache-Control\": \"public, max-age=\" + DEFAULT_CACHE_MAX_AGE\n }\n };\n }\n\n // Lambda can return max 6MB of content, so if our object's size is larger, we are sending\n // a 301 Redirect, redirecting the user to the public URL of the object in S3.\n await s3\n .putObjectAcl({\n Bucket: params.Bucket,\n ACL: \"public-read\",\n Key: params.Key\n })\n .promise();\n\n return {\n statusCode: 301,\n headers: {\n Location: `https://${params.Bucket}.s3.amazonaws.com/${params.Key}`\n }\n };\n });\n\n return await handler(event);\n }\n});\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/handlers/manage/index.ts"],"names":["type","name","handle","context","event","invocationArgs","handler","keys","i","Records","length","record","s3","object","key","push","region","S3","extension","path","extname","j","managers","manager","canProcess","process"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;eAEe,OAAsB;AACjCA,EAAAA,IAAI,EAAE,SAD2B;AAEjCC,EAAAA,IAAI,EAAE,uBAF2B;;AAGjC,QAAMC,MAAN,CAAaC,OAAb,EAAsB;AAClB,UAAMC,KAAK,GAAGD,OAAO,CAACE,cAAtB;AAEA,UAAMC,OAAO,GAAG,0BAAc,MAAMF,KAAN,IAAe;AACzC,YAAMG,IAAI,GAAG,EAAb;;AACA,WAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,KAAK,CAACK,OAAN,CAAcC,MAAlC,EAA0CF,CAAC,EAA3C,EAA+C;AAC3C,cAAMG,MAAM,GAAGP,KAAK,CAACK,OAAN,CAAcD,CAAd,CAAf;;AACA,YAAI,OAAOG,MAAM,CAACC,EAAP,CAAUC,MAAV,CAAiBC,GAAxB,KAAgC,QAApC,EAA8C;AAC1CP,UAAAA,IAAI,CAACQ,IAAL,CAAUJ,MAAM,CAACC,EAAP,CAAUC,MAAV,CAAiBC,GAA3B;AACH;AACJ;;AAED,YAAM;AAAEE,QAAAA;AAAF,UAAa,4BAAnB;AACA,YAAMJ,EAAE,GAAG,IAAIK,UAAJ,CAAO;AAAED,QAAAA;AAAF,OAAP,CAAX;;AAEA,WAAK,IAAIR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,IAAI,CAACG,MAAzB,EAAiCF,CAAC,EAAlC,EAAsC;AAClC,cAAMM,GAAG,GAAGP,IAAI,CAACC,CAAD,CAAhB;;AACA,cAAMU,SAAS,GAAGC,cAAKC,OAAL,CAAaN,GAAb,CAAlB;;AAEA,aAAK,IAAIO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGC,kBAASZ,MAA7B,EAAqCW,CAAC,EAAtC,EAA0C;AACtC,gBAAME,OAAO,GAAGD,kBAASD,CAAT,CAAhB;AACA,gBAAMG,UAAU,GAAGD,OAAO,CAACC,UAAR,CAAmB;AAClCZ,YAAAA,EADkC;AAElCE,YAAAA,GAFkC;AAGlCI,YAAAA;AAHkC,WAAnB,CAAnB;;AAMA,cAAIM,UAAJ,EAAgB;AACZ,kBAAMD,OAAO,CAACE,OAAR,CAAgB;AAClBb,cAAAA,EADkB;AAElBE,cAAAA,GAFkB;AAGlBI,cAAAA;AAHkB,aAAhB,CAAN;AAKH;AACJ;AACJ;AACJ,KAjCe,CAAhB;AAmCA,WAAO,MAAMZ,OAAO,CAACF,KAAD,CAApB;AACH;;AA1CgC,CAAtB,C","sourcesContent":["import path from \"path\";\nimport S3 from \"aws-sdk/clients/s3\";\nimport { HandlerPlugin } from \"@webiny/handler/types\";\nimport { createHandler, getEnvironment } from \"../utils\";\nimport managers from \"../transform/managers\";\n\nexport default (): HandlerPlugin => ({\n type: \"handler\",\n name: \"handler-download-file\",\n async handle(context) {\n const event = context.invocationArgs;\n\n const handler = createHandler(async event => {\n const keys = [];\n for (let i = 0; i < event.Records.length; i++) {\n const record = event.Records[i];\n if (typeof record.s3.object.key === \"string\") {\n keys.push(record.s3.object.key);\n }\n }\n\n const { region } = getEnvironment();\n const s3 = new S3({ region });\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const extension = path.extname(key);\n\n for (let j = 0; j < managers.length; j++) {\n const manager = managers[j];\n const canProcess = manager.canProcess({\n s3,\n key,\n extension\n });\n\n if (canProcess) {\n await manager.process({\n s3,\n key,\n extension\n });\n }\n }\n }\n });\n\n return await handler(event);\n }\n});\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- export declare const buildFunction: (options: any, context: any) => Promise<void>;
@@ -1,26 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.buildFunction = void 0;
7
-
8
- var _projectUtils = require("@webiny/project-utils");
9
-
10
- const buildFunction = async (options, context) => {
11
- const userWebpack = options.webpack;
12
-
13
- options.webpack = config => {
14
- if (typeof userWebpack === "function") {
15
- config = userWebpack(config);
16
- }
17
-
18
- config.externals.push("sharp");
19
- return config;
20
- };
21
-
22
- await (0, _projectUtils.buildFunction)(options, context);
23
- };
24
-
25
- exports.buildFunction = buildFunction;
26
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/handlers/transform/bundle/index.ts"],"names":["buildFunction","options","context","userWebpack","webpack","config","externals","push"],"mappings":";;;;;;;AAAA;;AAEO,MAAMA,aAAa,GAAG,OAAOC,OAAP,EAAgBC,OAAhB,KAA4B;AACrD,QAAMC,WAAW,GAAGF,OAAO,CAACG,OAA5B;;AAEAH,EAAAA,OAAO,CAACG,OAAR,GAAkBC,MAAM,IAAI;AACxB,QAAI,OAAOF,WAAP,KAAuB,UAA3B,EAAuC;AACnCE,MAAAA,MAAM,GAAGF,WAAW,CAACE,MAAD,CAApB;AACH;;AAEDA,IAAAA,MAAM,CAACC,SAAP,CAAiBC,IAAjB,CAAsB,OAAtB;AAEA,WAAOF,MAAP;AACH,GARD;;AAUA,QAAM,iCAAMJ,OAAN,EAAeC,OAAf,CAAN;AACH,CAdM","sourcesContent":["import { buildFunction as build } from \"@webiny/project-utils\";\n\nexport const buildFunction = async (options, context) => {\n const userWebpack = options.webpack;\n\n options.webpack = config => {\n if (typeof userWebpack === \"function\") {\n config = userWebpack(config);\n }\n\n config.externals.push(\"sharp\");\n\n return config;\n };\n\n await build(options, context);\n};\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/handlers/transform/index.ts"],"names":["type","name","handle","context","event","invocationArgs","handler","body","transformations","key","env","s3","S3","region","optimizedImageObject","params","initial","optimized","optimizedTransformed","getObject","promise","e","putObject","ContentType","Body","error","message"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;eAGe,OAAsB;AACjCA,EAAAA,IAAI,EAAE,SAD2B;AAEjCC,EAAAA,IAAI,EAAE,uBAF2B;;AAGjC,QAAMC,MAAN,CAAaC,OAAb,EAAsB;AAClB,UAAMC,KAAK,GAAGD,OAAO,CAACE,cAAtB;AAEA,UAAMC,OAAO,GAAG,0BAAc,OAAO;AAAEC,MAAAA,IAAI,EAAE;AAAEC,QAAAA,eAAF;AAAmBC,QAAAA;AAAnB;AAAR,KAAP,KAA8C;AACxE,UAAI;AACA,cAAMC,GAAG,GAAG,4BAAZ;AACA,cAAMC,EAAE,GAAG,IAAIC,UAAJ,CAAO;AAAEC,UAAAA,MAAM,EAAEH,GAAG,CAACG;AAAd,SAAP,CAAX;AAEA,YAAIC,oBAAJ;AAEA,cAAMC,MAAM,GAAG;AACXC,UAAAA,OAAO,EAAE,4BAAgBP,GAAhB,CADE;AAEXQ,UAAAA,SAAS,EAAE,4BAAgB,yBAAY;AAAER,YAAAA;AAAF,WAAZ,CAAhB,CAFA;AAGXS,UAAAA,oBAAoB,EAAE,4BAAgB,yBAAY;AAAET,YAAAA,GAAF;AAAOD,YAAAA;AAAP,WAAZ,CAAhB;AAHX,SAAf,CANA,CAYA;;AACA,YAAI;AACAM,UAAAA,oBAAoB,GAAG,MAAMH,EAAE,CAACQ,SAAH,CAAaJ,MAAM,CAACE,SAApB,EAA+BG,OAA/B,EAA7B;AACH,SAFD,CAEE,OAAOC,CAAP,EAAU;AACR;AACAP,UAAAA,oBAAoB,GAAG,MAAMH,EAAE,CAACQ,SAAH,CAAaJ,MAAM,CAACC,OAApB,EAA6BI,OAA7B,EAA7B;AAEA,gBAAMT,EAAE,CACHW,SADC,iCAEKP,MAAM,CAACE,SAFZ;AAGEM,YAAAA,WAAW,EAAET,oBAAoB,CAACS,WAHpC;AAIEC,YAAAA,IAAI,EAAE,MAAM,4BACRV,oBAAoB,CAACU,IADb,EAERV,oBAAoB,CAACS,WAFb;AAJd,cASDH,OATC,EAAN;AAWAN,UAAAA,oBAAoB,GAAG,MAAMH,EAAE,CAACQ,SAAH,CAAaJ,MAAM,CAACE,SAApB,EAA+BG,OAA/B,EAA7B;AACH,SA/BD,CAiCA;;;AACA,YAAI,CAACZ,eAAL,EAAsB;AAClB,iBAAO;AAAEiB,YAAAA,KAAK,EAAE,KAAT;AAAgBC,YAAAA,OAAO,EAAE;AAAzB,WAAP;AACH,SApCD,CAsCA;;;AACA,cAAMf,EAAE,CACHW,SADC,iCAEKP,MAAM,CAACG,oBAFZ;AAGEK,UAAAA,WAAW,EAAET,oBAAoB,CAACS,WAHpC;AAIEC,UAAAA,IAAI,EAAE,MAAM,6BAAeV,oBAAoB,CAACU,IAApC,EAA0ChB,eAA1C;AAJd,YAMDY,OANC,EAAN;AAQA,eAAO;AAAEK,UAAAA,KAAK,EAAE,KAAT;AAAgBC,UAAAA,OAAO,EAAE;AAAzB,SAAP;AACH,OAhDD,CAgDE,OAAOL,CAAP,EAAU;AACR,eAAO;AAAEI,UAAAA,KAAK,EAAE,IAAT;AAAeC,UAAAA,OAAO,EAAEL,CAAC,CAACK;AAA1B,SAAP;AACH;AACJ,KApDe,CAAhB;AAsDA,WAAO,MAAMpB,OAAO,CAACF,KAAD,CAApB;AACH;;AA7DgC,CAAtB,C","sourcesContent":["import S3 from \"aws-sdk/clients/s3\";\nimport transformImage from \"./transformImage\";\nimport optimizeImage from \"./optimizeImage\";\nimport { createHandler, getEnvironment, getObjectParams } from \"../utils\";\nimport { getImageKey } from \"./utils\";\nimport { HandlerPlugin } from \"@webiny/handler/types\";\n\nexport default (): HandlerPlugin => ({\n type: \"handler\",\n name: \"handler-download-file\",\n async handle(context) {\n const event = context.invocationArgs;\n\n const handler = createHandler(async ({ body: { transformations, key } }) => {\n try {\n const env = getEnvironment();\n const s3 = new S3({ region: env.region });\n\n let optimizedImageObject;\n\n const params = {\n initial: getObjectParams(key),\n optimized: getObjectParams(getImageKey({ key })),\n optimizedTransformed: getObjectParams(getImageKey({ key, transformations }))\n };\n\n // 1. Get optimized image.\n try {\n optimizedImageObject = await s3.getObject(params.optimized).promise();\n } catch (e) {\n // If not found, try to create it by loading the initially uploaded image.\n optimizedImageObject = await s3.getObject(params.initial).promise();\n\n await s3\n .putObject({\n ...params.optimized,\n ContentType: optimizedImageObject.ContentType,\n Body: await optimizeImage(\n optimizedImageObject.Body,\n optimizedImageObject.ContentType\n )\n })\n .promise();\n\n optimizedImageObject = await s3.getObject(params.optimized).promise();\n }\n\n // 2. If no transformations requested, just exit.\n if (!transformations) {\n return { error: false, message: \"\" };\n }\n\n // 3. If transformations requested, apply them in save it into the bucket.\n await s3\n .putObject({\n ...params.optimizedTransformed,\n ContentType: optimizedImageObject.ContentType,\n Body: await transformImage(optimizedImageObject.Body, transformations)\n })\n .promise();\n\n return { error: false, message: \"\" };\n } catch (e) {\n return { error: true, message: e.message };\n }\n });\n\n return await handler(event);\n }\n});\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/handlers/transform/loaders/imageLoader.ts"],"names":["IMAGE_TRANSFORMER_FUNCTION","process","env","callImageTransformerLambda","key","transformations","context","handlerClient","invoke","name","payload","body","canProcess","opts","SUPPORTED_IMAGES","includes","file","extension","s3","options","objectParams","SUPPORTED_TRANSFORMABLE_IMAGES","object","getObject","promise","params","e","imageTransformerLambdaResponse","error","Error","message"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AAIA;AACA,MAAMA,0BAA0B,GAAGC,OAAO,CAACC,GAAR,CAAYF,0BAA/C;;AAQA,MAAMG,0BAA0B,GAAG,OAAO;AAAEC,EAAAA,GAAF;AAAOC,EAAAA,eAAP;AAAwBC,EAAAA;AAAxB,CAAP,KAAgE;AAC/F,SAAO,MAAMA,OAAO,CAACC,aAAR,CAAsBC,MAAtB,CAA6B;AACtCC,IAAAA,IAAI,EAAET,0BADgC;AAEtCU,IAAAA,OAAO,EAAE;AACLC,MAAAA,IAAI,EAAE;AACFP,QAAAA,GADE;AAEFC,QAAAA;AAFE;AADD;AAF6B,GAA7B,CAAb;AASH,CAVD;;eAYe;AACXO,EAAAA,UAAU,EAAEC,IAAI,IAAI;AAChB,WAAOC,yBAAiBC,QAAjB,CAA0BF,IAAI,CAACG,IAAL,CAAUC,SAApC,CAAP;AACH,GAHU;;AAIX,QAAMhB,OAAN,CAAc;AAAEiB,IAAAA,EAAF;AAAMF,IAAAA,IAAN;AAAYG,IAAAA,OAAZ;AAAqBb,IAAAA;AAArB,GAAd,EAA8C;AAC1C;AACA,QAAIc,YAAJ;AAEA,UAAMf,eAAe,GAAG,2CAA6Bc,OAA7B,CAAxB;;AAEA,QAAId,eAAe,IAAIgB,uCAA+BN,QAA/B,CAAwCC,IAAI,CAACC,SAA7C,CAAvB,EAAgF;AAC5EG,MAAAA,YAAY,GAAG,4BAAgB,yBAAY;AAAEhB,QAAAA,GAAG,EAAEY,IAAI,CAACP,IAAZ;AAAkBJ,QAAAA;AAAlB,OAAZ,CAAhB,CAAf;;AACA,UAAI;AACA,eAAO;AACHiB,UAAAA,MAAM,EAAE,MAAMJ,EAAE,CAACK,SAAH,CAAaH,YAAb,EAA2BI,OAA3B,EADX;AAEHC,UAAAA,MAAM,EAAEL;AAFL,SAAP;AAIH,OALD,CAKE,OAAOM,CAAP,EAAU;AACR,cAAMC,8BAA8B,GAAG,MAAMxB,0BAA0B,CAAC;AACpEC,UAAAA,GAAG,EAAEY,IAAI,CAACP,IAD0D;AAEpEJ,UAAAA,eAFoE;AAGpEC,UAAAA;AAHoE,SAAD,CAAvE;;AAMA,YAAIqB,8BAA8B,CAACC,KAAnC,EAA0C;AACtC,gBAAMC,KAAK,CAACF,8BAA8B,CAACG,OAAhC,CAAX;AACH;;AAED,eAAO;AACHR,UAAAA,MAAM,EAAE,MAAMJ,EAAE,CAACK,SAAH,CAAaH,YAAb,EAA2BI,OAA3B,EADX;AAEHC,UAAAA,MAAM,EAAEL;AAFL,SAAP;AAIH;AACJ;;AAEDA,IAAAA,YAAY,GAAG,4BAAgB,yBAAY;AAAEhB,MAAAA,GAAG,EAAEY,IAAI,CAACP;AAAZ,KAAZ,CAAhB,CAAf;;AACA,QAAI;AACA,aAAO;AACHa,QAAAA,MAAM,EAAE,MAAMJ,EAAE,CAACK,SAAH,CAAaH,YAAb,EAA2BI,OAA3B,EADX;AAEHC,QAAAA,MAAM,EAAEL;AAFL,OAAP;AAIH,KALD,CAKE,OAAOM,CAAP,EAAU;AACR,YAAMC,8BAA8B,GAAG,MAAMxB,0BAA0B,CAAC;AACpEC,QAAAA,GAAG,EAAEY,IAAI,CAACP,IAD0D;AAEpEH,QAAAA;AAFoE,OAAD,CAAvE;;AAKA,UAAIqB,8BAA8B,CAACC,KAAnC,EAA0C;AACtC,cAAMC,KAAK,CAACF,8BAA8B,CAACG,OAAhC,CAAX;AACH;;AAED,aAAO;AACHR,QAAAA,MAAM,EAAE,MAAMJ,EAAE,CAACK,SAAH,CAAaH,YAAb,EAA2BI,OAA3B,EADX;AAEHC,QAAAA,MAAM,EAAEL;AAFL,OAAP;AAIH;AACJ;;AAxDU,C","sourcesContent":["import sanitizeImageTransformations from \"./sanitizeImageTransformations\";\nimport { getObjectParams } from \"../../utils\";\nimport { SUPPORTED_IMAGES, SUPPORTED_TRANSFORMABLE_IMAGES, getImageKey } from \"../utils\";\nimport { Context } from \"@webiny/handler/types\";\nimport { ClientContext } from \"@webiny/handler-client/types\";\n\n// @ts-ignore\nconst IMAGE_TRANSFORMER_FUNCTION = process.env.IMAGE_TRANSFORMER_FUNCTION;\n\ninterface TransformerParams {\n context: Context & ClientContext;\n key: string;\n transformations?: any;\n}\n\nconst callImageTransformerLambda = async ({ key, transformations, context }: TransformerParams) => {\n return await context.handlerClient.invoke({\n name: IMAGE_TRANSFORMER_FUNCTION,\n payload: {\n body: {\n key,\n transformations\n }\n }\n });\n};\n\nexport default {\n canProcess: opts => {\n return SUPPORTED_IMAGES.includes(opts.file.extension);\n },\n async process({ s3, file, options, context }) {\n // Loaders must return {object, params} object.\n let objectParams;\n\n const transformations = sanitizeImageTransformations(options);\n\n if (transformations && SUPPORTED_TRANSFORMABLE_IMAGES.includes(file.extension)) {\n objectParams = getObjectParams(getImageKey({ key: file.name, transformations }));\n try {\n return {\n object: await s3.getObject(objectParams).promise(),\n params: objectParams\n };\n } catch (e) {\n const imageTransformerLambdaResponse = await callImageTransformerLambda({\n key: file.name,\n transformations,\n context\n });\n\n if (imageTransformerLambdaResponse.error) {\n throw Error(imageTransformerLambdaResponse.message);\n }\n\n return {\n object: await s3.getObject(objectParams).promise(),\n params: objectParams\n };\n }\n }\n\n objectParams = getObjectParams(getImageKey({ key: file.name }));\n try {\n return {\n object: await s3.getObject(objectParams).promise(),\n params: objectParams\n };\n } catch (e) {\n const imageTransformerLambdaResponse = await callImageTransformerLambda({\n key: file.name,\n context\n });\n\n if (imageTransformerLambdaResponse.error) {\n throw Error(imageTransformerLambdaResponse.message);\n }\n\n return {\n object: await s3.getObject(objectParams).promise(),\n params: objectParams\n };\n }\n }\n};\n"],"file":"imageLoader.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/handlers/transform/loaders/index.ts"],"names":["imageLoader"],"mappings":";;;;;;;;;AAAA;;eAEe,CAACA,oBAAD,C","sourcesContent":["import imageLoader from \"./imageLoader\";\n\nexport default [imageLoader];\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/handlers/transform/loaders/sanitizeImageTransformations.ts"],"names":["SUPPORTED_IMAGE_RESIZE_WIDTHS","args","transformations","width","parseInt","i","length","Object","keys"],"mappings":";;;;;;AAAA,MAAMA,6BAA6B,GAAG,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,IAArB,EAA2B,IAA3B,EAAiC,IAAjC,CAAtC;AAEA;AACA;AACA;;eACeC,IAAI,IAAI;AACnB,QAAMC,eAAuC,GAAG,EAAhD;;AAEA,MAAID,IAAJ,EAAU;AACN,UAAME,KAAK,GAAGC,QAAQ,CAACH,IAAI,CAACE,KAAN,CAAtB;;AACA,QAAIA,KAAK,GAAG,CAAZ,EAAe;AACXD,MAAAA,eAAe,CAACC,KAAhB,GAAwBH,6BAA6B,CAAC,CAAD,CAArD;AACA,UAAIK,CAAC,GAAGL,6BAA6B,CAACM,MAAtC;;AACA,aAAOD,CAAC,IAAI,CAAZ,EAAe;AACX,YAAIF,KAAK,KAAKH,6BAA6B,CAACK,CAAD,CAA3C,EAAgD;AAC5CH,UAAAA,eAAe,CAACC,KAAhB,GAAwBH,6BAA6B,CAACK,CAAD,CAArD;AACA;AACH;;AAED,YAAIF,KAAK,GAAGH,6BAA6B,CAACK,CAAD,CAAzC,EAA8C;AAC1C;AACAH,UAAAA,eAAe,CAACC,KAAhB,GAAwBH,6BAA6B,CAACK,CAAC,GAAG,CAAL,CAArD;;AACA,cAAI,CAACH,eAAe,CAACC,KAArB,EAA4B;AACxBD,YAAAA,eAAe,CAACC,KAAhB,GAAwBH,6BAA6B,CAACK,CAAD,CAArD;AACH;;AACD;AACH;;AAEDA,QAAAA,CAAC;AACJ;AACJ;AACJ;;AAED,MAAIE,MAAM,CAACC,IAAP,CAAYN,eAAZ,EAA6BI,MAA7B,GAAsC,CAA1C,EAA6C;AACzC,WAAOJ,eAAP;AACH;;AAED,SAAO,IAAP;AACH,C","sourcesContent":["const SUPPORTED_IMAGE_RESIZE_WIDTHS = [100, 300, 500, 750, 1000, 1500, 2500];\n\n/**\n * Takes only allowed transformations into consideration, and discards the rest.\n */\nexport default args => {\n const transformations: { [key: string]: any } = {};\n\n if (args) {\n const width = parseInt(args.width);\n if (width > 0) {\n transformations.width = SUPPORTED_IMAGE_RESIZE_WIDTHS[0];\n let i = SUPPORTED_IMAGE_RESIZE_WIDTHS.length;\n while (i >= 0) {\n if (width === SUPPORTED_IMAGE_RESIZE_WIDTHS[i]) {\n transformations.width = SUPPORTED_IMAGE_RESIZE_WIDTHS[i];\n break;\n }\n\n if (width > SUPPORTED_IMAGE_RESIZE_WIDTHS[i]) {\n // Use next larger width. If there isn't any, use current.\n transformations.width = SUPPORTED_IMAGE_RESIZE_WIDTHS[i + 1];\n if (!transformations.width) {\n transformations.width = SUPPORTED_IMAGE_RESIZE_WIDTHS[i];\n }\n break;\n }\n\n i--;\n }\n }\n }\n\n if (Object.keys(transformations).length > 0) {\n return transformations;\n }\n\n return null;\n};\n"],"file":"sanitizeImageTransformations.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/handlers/transform/managers/imageManager.ts"],"names":["canProcess","opts","key","extension","SUPPORTED_IMAGES","includes","startsWith","OPTIMIZED_IMAGE_PREFIX","OPTIMIZED_TRANSFORMED_IMAGE_PREFIX","process","s3","deleteObject","promise","SUPPORTED_TRANSFORMABLE_IMAGES","env","imagesList","listObjects","Bucket","bucket","Prefix","i","Contents","length","imageObject","Key"],"mappings":";;;;;;;AAAA;;AACA;;eASe;AACXA,EAAAA,UAAU,EAAEC,IAAI,IAAI;AAChB,UAAM;AAAEC,MAAAA,GAAF;AAAOC,MAAAA;AAAP,QAAqBF,IAA3B;;AACA,QAAI,CAACG,yBAAiBC,QAAjB,CAA0BF,SAA1B,CAAL,EAA2C;AACvC,aAAO,KAAP;AACH;;AAED,QACID,GAAG,CAACI,UAAJ,CACIC,kCAA0BL,GAAG,CAACI,UAAJ,CAAeE,0CAAf,CAD9B,CADJ,EAIE;AACE,aAAO,KAAP;AACH;;AAED,WAAO,IAAP;AACH,GAhBU;;AAiBX,QAAMC,OAAN,CAAc;AAAEC,IAAAA,EAAF;AAAMR,IAAAA,GAAN;AAAWC,IAAAA;AAAX,GAAd,EAAsC;AAClC;AAEA,UAAMO,EAAE,CAACC,YAAH,CAAgB,4BAAgB,yBAAY;AAAET,MAAAA;AAAF,KAAZ,CAAhB,CAAhB,EAAuDU,OAAvD,EAAN,CAHkC,CAKlC;;AACA,QAAIC,uCAA+BR,QAA/B,CAAwCF,SAAxC,CAAJ,EAAwD;AACpD,YAAMW,GAAG,GAAG,4BAAZ;AACA,YAAMC,UAAU,GAAG,MAAML,EAAE,CACtBM,WADoB,CACR;AACTC,QAAAA,MAAM,EAAEH,GAAG,CAACI,MADH;AAETC,QAAAA,MAAM,EAAE,mDAAsCjB,GAAtC;AAFC,OADQ,EAKpBU,OALoB,EAAzB;;AAOA,WAAK,IAAIQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGL,UAAU,CAACM,QAAX,CAAoBC,MAAxC,EAAgDF,CAAC,EAAjD,EAAqD;AACjD,cAAMG,WAAW,GAAGR,UAAU,CAACM,QAAX,CAAoBD,CAApB,CAApB;AACA,cAAMV,EAAE,CAACC,YAAH,CAAgB,4BAAgBY,WAAW,CAACC,GAA5B,CAAhB,EAAkDZ,OAAlD,EAAN;AACH;AACJ;AACJ;;AArCU,C","sourcesContent":["import { getObjectParams, getEnvironment } from \"~/handlers/utils\";\nimport {\n SUPPORTED_IMAGES,\n SUPPORTED_TRANSFORMABLE_IMAGES,\n OPTIMIZED_IMAGE_PREFIX,\n OPTIMIZED_TRANSFORMED_IMAGE_PREFIX,\n getImageKey,\n getOptimizedTransformedImageKeyPrefix\n} from \"../utils\";\n\nexport default {\n canProcess: opts => {\n const { key, extension } = opts;\n if (!SUPPORTED_IMAGES.includes(extension)) {\n return false;\n }\n\n if (\n key.startsWith(\n OPTIMIZED_IMAGE_PREFIX || key.startsWith(OPTIMIZED_TRANSFORMED_IMAGE_PREFIX)\n )\n ) {\n return false;\n }\n\n return true;\n },\n async process({ s3, key, extension }) {\n // 1. Get optimized image's key.\n\n await s3.deleteObject(getObjectParams(getImageKey({ key }))).promise();\n\n // 2. Search for all transformed images and delete those too.\n if (SUPPORTED_TRANSFORMABLE_IMAGES.includes(extension)) {\n const env = getEnvironment();\n const imagesList = await s3\n .listObjects({\n Bucket: env.bucket,\n Prefix: getOptimizedTransformedImageKeyPrefix(key)\n })\n .promise();\n\n for (let i = 0; i < imagesList.Contents.length; i++) {\n const imageObject = imagesList.Contents[i];\n await s3.deleteObject(getObjectParams(imageObject.Key)).promise();\n }\n }\n }\n};\n"],"file":"imageManager.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/handlers/transform/managers/index.ts"],"names":["imageManager"],"mappings":";;;;;;;;;AAAA;;eAEe,CAACA,qBAAD,C","sourcesContent":["import imageManager from \"./imageManager\";\n\nexport default [imageManager];\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/handlers/transform/optimizeImage.ts"],"names":["buffer","type","resize","width","withoutEnlargement","fit","png","compressionLevel","adaptiveFiltering","force","withMetadata","toBuffer","toFormat","quality"],"mappings":";;;;;;;;;AACA;;AADA;eAGe,OAAOA,MAAP,EAAeC,IAAf,KAAwB;AACnC,UAAQA,IAAR;AACI,SAAK,WAAL;AAAkB;AACd,eAAO,MAAM,oBAAMD,MAAN,EACRE,MADQ,CACD;AAAEC,UAAAA,KAAK,EAAE,IAAT;AAAeC,UAAAA,kBAAkB,EAAE,IAAnC;AAAyCC,UAAAA,GAAG,EAAE;AAA9C,SADC,EAERC,GAFQ,CAEJ;AAAEC,UAAAA,gBAAgB,EAAE,CAApB;AAAuBC,UAAAA,iBAAiB,EAAE,IAA1C;AAAgDC,UAAAA,KAAK,EAAE;AAAvD,SAFI,EAGRC,YAHQ,GAIRC,QAJQ,EAAb;AAKH;;AACD,SAAK,YAAL;AACA,SAAK,WAAL;AAAkB;AACd,eAAO,MAAM,oBAAMX,MAAN,EACRE,MADQ,CACD;AAAEC,UAAAA,KAAK,EAAE,IAAT;AAAeC,UAAAA,kBAAkB,EAAE,IAAnC;AAAyCC,UAAAA,GAAG,EAAE;AAA9C,SADC,EAERO,QAFQ,CAEC,MAFD,EAES;AAAEC,UAAAA,OAAO,EAAE;AAAX,SAFT,EAGRF,QAHQ,EAAb;AAIH;;AACD;AACI,aAAOX,MAAP;AAhBR;AAkBH,C","sourcesContent":["// @ts-ignore\nimport sharp from \"sharp\";\n\nexport default async (buffer, type) => {\n switch (type) {\n case \"image/png\": {\n return await sharp(buffer)\n .resize({ width: 2560, withoutEnlargement: true, fit: \"inside\" })\n .png({ compressionLevel: 9, adaptiveFiltering: true, force: true })\n .withMetadata()\n .toBuffer();\n }\n case \"image/jpeg\":\n case \"image/jpg\": {\n return await sharp(buffer)\n .resize({ width: 2560, withoutEnlargement: true, fit: \"inside\" })\n .toFormat(\"jpeg\", { quality: 90 })\n .toBuffer();\n }\n default:\n return buffer;\n }\n};\n"],"file":"optimizeImage.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/handlers/transform/transformImage.ts"],"names":["buffer","transformations","width","resize","toBuffer"],"mappings":";;;;;;;;;AACA;;AADA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;eACe,OAAOA,MAAP,EAAeC,eAAf,KAAmC;AAC9C,QAAM;AAAEC,IAAAA;AAAF,MAAYD,eAAlB;AACA,SAAO,MAAM,oBAAMD,MAAN,EAAcG,MAAd,CAAqB;AAAED,IAAAA;AAAF,GAArB,EAAgCE,QAAhC,EAAb;AACH,C","sourcesContent":["// @ts-ignore\nimport sharp from \"sharp\";\n\n/**\n * Only processing \"width\" at the moment.\n * Check \"sanitizeImageTransformations.js\" to allow additional image processing transformations.\n * @param buffer\n * @param transformations\n * @returns {Promise<Buffer>}\n */\nexport default async (buffer, transformations) => {\n const { width } = transformations;\n return await sharp(buffer).resize({ width }).toBuffer();\n};\n"],"file":"transformImage.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/handlers/transform/utils.ts"],"names":["SUPPORTED_IMAGES","SUPPORTED_TRANSFORMABLE_IMAGES","OPTIMIZED_TRANSFORMED_IMAGE_PREFIX","OPTIMIZED_IMAGE_PREFIX","getOptimizedImageKeyPrefix","key","getOptimizedTransformedImageKeyPrefix","getImageKey","transformations","prefix"],"mappings":";;;;;;;;;AAAA;;AAEA,MAAMA,gBAAgB,GAAG,CAAC,MAAD,EAAS,OAAT,EAAkB,MAAlB,EAA0B,MAA1B,EAAkC,MAAlC,CAAzB;;AACA,MAAMC,8BAA8B,GAAG,CAAC,MAAD,EAAS,OAAT,EAAkB,MAAlB,CAAvC;;AAEA,MAAMC,kCAAkC,GAAG,UAA3C;;AACA,MAAMC,sBAAsB,GAAG,QAA/B;;;AAEA,MAAMC,0BAA0B,GAAGC,GAAG,IAAI;AACtC,SAAQ,GAAEF,sBAAuB,GAAE,yBAAWE,GAAX,CAAgB,GAAnD;AACH,CAFD;;;;AAIA,MAAMC,qCAAqC,GAAGD,GAAG,IAAI;AACjD,SAAQ,GAAEH,kCAAmC,GAAE,yBAAWG,GAAX,CAAgB,GAA/D;AACH,CAFD;;;;AASA,MAAME,WAAW,GAAG,CAAC;AAAEF,EAAAA,GAAF;AAAOG,EAAAA;AAAP,CAAD,KAAiD;AACjE,MAAI,CAACA,eAAL,EAAsB;AAClB,UAAMC,MAAM,GAAGL,0BAA0B,CAACC,GAAD,CAAzC;AACA,WAAOI,MAAM,GAAGJ,GAAhB;AACH;;AAED,QAAMI,MAAM,GAAGH,qCAAqC,CAACD,GAAD,CAApD;AACA,SAAQ,GAAEI,MAAO,GAAE,yBAAWD,eAAX,CAA4B,IAAGH,GAAI,EAAtD;AACH,CARD","sourcesContent":["import objectHash from \"object-hash\";\n\nconst SUPPORTED_IMAGES = [\".jpg\", \".jpeg\", \".png\", \".svg\", \".gif\"];\nconst SUPPORTED_TRANSFORMABLE_IMAGES = [\".jpg\", \".jpeg\", \".png\"];\n\nconst OPTIMIZED_TRANSFORMED_IMAGE_PREFIX = \"img-o-t-\";\nconst OPTIMIZED_IMAGE_PREFIX = \"img-o-\";\n\nconst getOptimizedImageKeyPrefix = key => {\n return `${OPTIMIZED_IMAGE_PREFIX}${objectHash(key)}-`;\n};\n\nconst getOptimizedTransformedImageKeyPrefix = key => {\n return `${OPTIMIZED_TRANSFORMED_IMAGE_PREFIX}${objectHash(key)}-`;\n};\n\ninterface GetImageKeyParams {\n key: string;\n transformations?: any;\n}\n\nconst getImageKey = ({ key, transformations }: GetImageKeyParams) => {\n if (!transformations) {\n const prefix = getOptimizedImageKeyPrefix(key);\n return prefix + key;\n }\n\n const prefix = getOptimizedTransformedImageKeyPrefix(key);\n return `${prefix}${objectHash(transformations)}-${key}`;\n};\n\nexport {\n SUPPORTED_IMAGES,\n SUPPORTED_TRANSFORMABLE_IMAGES,\n OPTIMIZED_TRANSFORMED_IMAGE_PREFIX,\n OPTIMIZED_IMAGE_PREFIX,\n getImageKey,\n getOptimizedImageKeyPrefix,\n getOptimizedTransformedImageKeyPrefix\n};\n"],"file":"utils.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/handlers/utils/createHandler.ts"],"names":["baseHeaders","handler","event","httpMethod","body","statusCode","headers","data","isBuffer","Buffer","toString","JSON","stringify","error","message","isBase64Encoded","e"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA,MAAMA,WAAW,GAAG;AAChB,iCAA+B,GADf;AAEhB,sCAAoC;AAFpB,CAApB;;eAKeC,OAAO,IAAI,MAAMC,KAAN,IAAe;AACrC,MAAIA,KAAK,CAACC,UAAN,KAAqB,SAAzB,EAAoC;AAChC,WAAO;AACHC,MAAAA,IAAI,EAAE,EADH;AAEHC,MAAAA,UAAU,EAAE,GAFT;AAGHC,MAAAA,OAAO,EAAEN;AAHN,KAAP;AAKH;;AAED,MAAI;AACA,UAAM;AAAEO,MAAAA,IAAF;AAAQF,MAAAA,UAAR;AAAoBC,MAAAA,OAAO,GAAG;AAA9B,QAAqC,MAAML,OAAO,CAACC,KAAD,CAAxD;AACA,UAAMM,QAAQ,GAAGC,MAAM,CAACD,QAAP,CAAgBD,IAAhB,CAAjB;AACA,UAAMH,IAAI,GAAGI,QAAQ,GACfD,IAAI,CAACG,QAAL,CAAc,QAAd,CADe,GAEfC,IAAI,CAACC,SAAL,CAAe;AACXC,MAAAA,KAAK,EAAE,KADI;AAEXN,MAAAA,IAFW;AAGXO,MAAAA,OAAO,EAAE;AAHE,KAAf,CAFN;AAQA,WAAO;AACHC,MAAAA,eAAe,EAAEP,QADd;AAEHH,MAAAA,UAAU,EAAEA,UAAU,IAAI,GAFvB;AAGHC,MAAAA,OAAO,kCAAON,WAAP,GAAuBM,OAAvB,CAHJ;AAIHF,MAAAA;AAJG,KAAP;AAMH,GAjBD,CAiBE,OAAOY,CAAP,EAAU;AACR,WAAO;AACHX,MAAAA,UAAU,EAAE,GADT;AAEHC,MAAAA,OAAO,EAAEN,WAFN;AAGHI,MAAAA,IAAI,EAAEO,IAAI,CAACC,SAAL,CAAe;AACjBC,QAAAA,KAAK,EAAE,IADU;AAEjBN,QAAAA,IAAI,EAAE,IAFW;AAGjBO,QAAAA,OAAO,EAAEE,CAAC,CAACF;AAHM,OAAf;AAHH,KAAP;AASH;AACJ,C","sourcesContent":["/**\n * We need to respond with adequate CORS headers.\n * @type {{\"Access-Control-Allow-Origin\": string, \"Access-Control-Allow-Credentials\": boolean}}\n */\nconst baseHeaders = {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Credentials\": true\n};\n\nexport default handler => async event => {\n if (event.httpMethod === \"OPTIONS\") {\n return {\n body: \"\",\n statusCode: 204,\n headers: baseHeaders\n };\n }\n\n try {\n const { data, statusCode, headers = {} } = await handler(event);\n const isBuffer = Buffer.isBuffer(data);\n const body = isBuffer\n ? data.toString(\"base64\")\n : JSON.stringify({\n error: false,\n data,\n message: null\n });\n\n return {\n isBase64Encoded: isBuffer,\n statusCode: statusCode || 200,\n headers: { ...baseHeaders, ...headers },\n body\n };\n } catch (e) {\n return {\n statusCode: 500,\n headers: baseHeaders,\n body: JSON.stringify({\n error: true,\n data: null,\n message: e.message\n })\n };\n }\n};\n"],"file":"createHandler.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/handlers/utils/getEnvironment.ts"],"names":["bucket","process","env","S3_BUCKET","region","AWS_REGION"],"mappings":";;;;;;;eAAe,OAAO;AAClBA,EAAAA,MAAM,EAAEC,OAAO,CAACC,GAAR,CAAYC,SADF;AAElBC,EAAAA,MAAM,EAAEH,OAAO,CAACC,GAAR,CAAYG;AAFF,CAAP,C","sourcesContent":["export default () => ({\n bucket: process.env.S3_BUCKET,\n region: process.env.AWS_REGION\n});\n"],"file":"getEnvironment.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/handlers/utils/getObjectParams.ts"],"names":["filename","bucket","Bucket","Key"],"mappings":";;;;;;;;;AAAA;;AAEA;AACA;AACA;AACA;AACA;eACeA,QAAQ,IAAI;AACvB,QAAM;AAAEC,IAAAA,MAAM,EAAEC;AAAV,MAAqB,8BAA3B;AAEA,SAAO;AACHA,IAAAA,MADG;AAEHC,IAAAA,GAAG,EAAG,GAAEH,QAAS;AAFd,GAAP;AAIH,C","sourcesContent":["import getEnvironment from \"./getEnvironment\";\n\n/**\n * Returns website's Bucket and file's Key values.\n * @param filename\n * @returns {{Bucket: string, Key: string}}\n */\nexport default filename => {\n const { bucket: Bucket } = getEnvironment();\n\n return {\n Bucket,\n Key: `${filename}`\n };\n};\n"],"file":"getObjectParams.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/handlers/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA","sourcesContent":["export { default as getEnvironment } from \"./getEnvironment\";\nexport { default as createHandler } from \"./createHandler\";\nexport { default as getObjectParams } from \"./getObjectParams\";\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/plugins/crud/files/validation.ts"],"names":["FilePlugin","beforeCreate","data","FileModel","fileData","populate","validate","beforeUpdate","updatedFileData","beforeBatchCreate","input","fileInstance"],"mappings":";;;;;;;;;AAAA;;AACA;;eAEe,MAAM,CACjB,IAAIA,sBAAJ,CAAe;AACXC,EAAAA,YAAY,EAAE,OAAO;AAAEC,IAAAA;AAAF,GAAP,KAAoB;AAC9B,UAAMC,SAAS,GAAG,+BAAlB;AACA,UAAMC,QAAQ,GAAG,IAAID,SAAJ,GAAgBE,QAAhB,CAAyBH,IAAzB,CAAjB;AACA,UAAME,QAAQ,CAACE,QAAT,EAAN;AACH,GALU;AAMXC,EAAAA,YAAY,EAAE,OAAO;AAAEL,IAAAA;AAAF,GAAP,KAAoB;AAC9B,UAAMC,SAAS,GAAG,8BAAgB,KAAhB,CAAlB;AACA,UAAMK,eAAe,GAAG,IAAIL,SAAJ,GAAgBE,QAAhB,CAAyBH,IAAzB,CAAxB;AACA,UAAMM,eAAe,CAACF,QAAhB,EAAN;AACH,GAVU;AAWXG,EAAAA,iBAAiB,EAAE,OAAO;AAAEP,IAAAA;AAAF,GAAP,KAAoB;AACnC,UAAMC,SAAS,GAAG,+BAAlB;;AACA,SAAK,MAAMO,KAAX,IAAoBR,IAApB,EAA0B;AACtB,YAAMS,YAAY,GAAG,IAAIR,SAAJ,GAAgBE,QAAhB,CAAyBK,KAAzB,CAArB;AACA,YAAMC,YAAY,CAACL,QAAb,EAAN;AACH;AACJ;AAjBU,CAAf,CADiB,C","sourcesContent":["import { FilePlugin } from \"~/plugins/definitions/FilePlugin\";\nimport createFileModel from \"~/plugins/crud/utils/createFileModel\";\n\nexport default () => [\n new FilePlugin({\n beforeCreate: async ({ data }) => {\n const FileModel = createFileModel();\n const fileData = new FileModel().populate(data);\n await fileData.validate();\n },\n beforeUpdate: async ({ data }) => {\n const FileModel = createFileModel(false);\n const updatedFileData = new FileModel().populate(data);\n await updatedFileData.validate();\n },\n beforeBatchCreate: async ({ data }) => {\n const FileModel = createFileModel();\n for (const input of data) {\n const fileInstance = new FileModel().populate(input);\n await fileInstance.validate();\n }\n }\n })\n];\n"],"file":"validation.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/plugins/crud/files.crud.ts"],"names":["BATCH_CREATE_MAX_FILES","checkOwnership","file","permission","context","own","identity","security","getIdentity","createdBy","id","NotAuthorizedError","getLocaleCode","i18nContent","WebinyError","locale","code","filesContextCrudPlugin","ContextPlugin","pluginType","FilesStorageOperationsProviderPlugin","type","providerPlugin","plugins","byType","find","storageOperations","provide","fileManager","filePlugins","FilePlugin","files","getFile","rwd","get","NotFoundError","createFile","input","tenant","tenancy","getCurrentTenant","meta","private","createdOn","Date","toISOString","displayName","webinyVersion","WEBINY_VERSION","data","result","create","ex","message","updateFile","original","update","deleteFile","delete","createFilesInBatch","inputs","Array","isArray","Error","length","map","results","createBatch","listFiles","params","limit","search","types","tags","ids","after","where","initialWhere","sort","initialSort","type_in","tag_in","tag","toLowerCase","id_in","list","listTags","name"],"mappings":"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","sourcesContent":["import mdbid from \"mdbid\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\nimport Error from \"@webiny/error\";\nimport {\n File,\n FileManagerContext,\n FileManagerFilesStorageOperationsListParamsWhere,\n FileManagerFilesStorageOperationsTagsParamsWhere,\n FilePermission\n} from \"~/types\";\nimport checkBasePermissions from \"./utils/checkBasePermissions\";\nimport { ContextPlugin } from \"@webiny/handler/plugins/ContextPlugin\";\nimport { FilePlugin } from \"~/plugins/definitions/FilePlugin\";\nimport { FilesStorageOperationsProviderPlugin } from \"~/plugins/definitions/FilesStorageOperationsProviderPlugin\";\nimport WebinyError from \"@webiny/error\";\nimport { runLifecycleEvent } from \"~/plugins/crud/utils/lifecycleEvents\";\n\nconst BATCH_CREATE_MAX_FILES = 20;\n\n/**\n * If permission is limited to \"own\" files only, check that current identity owns the file.\n */\nconst checkOwnership = (file: File, permission: FilePermission, context: FileManagerContext) => {\n if (permission?.own === true) {\n const identity = context.security.getIdentity();\n if (file.createdBy.id !== identity.id) {\n throw new NotAuthorizedError();\n }\n }\n};\n\nconst getLocaleCode = (context: FileManagerContext): string => {\n if (!context.i18nContent) {\n throw new WebinyError(\n \"Missing i18nContent on the FileManagerContext.\",\n \"MISSING_I18N_CONTENT\"\n );\n } else if (!context.i18nContent.locale) {\n throw new WebinyError(\n \"Missing i18nContent.locale on the FileManagerContext.\",\n \"MISSING_I18N_CONTENT_LOCALE\"\n );\n } else if (!context.i18nContent.locale.code) {\n throw new WebinyError(\n \"Missing i18nContent.locale.code on the FileManagerContext.\",\n \"MISSING_I18N_CONTENT_LOCALE_CODE\"\n );\n }\n return context.i18nContent.locale.code;\n};\n\nconst filesContextCrudPlugin = new ContextPlugin<FileManagerContext>(async context => {\n const pluginType = FilesStorageOperationsProviderPlugin.type;\n\n const providerPlugin = context.plugins\n .byType<FilesStorageOperationsProviderPlugin>(pluginType)\n .find(() => true);\n\n if (!providerPlugin) {\n throw new WebinyError(`Missing \"${pluginType}\" plugin.`, \"PLUGIN_NOT_FOUND\", {\n type: pluginType\n });\n }\n\n const storageOperations = await providerPlugin.provide({\n context\n });\n\n if (!context.fileManager) {\n context.fileManager = {} as any;\n }\n\n const filePlugins = context.plugins.byType<FilePlugin>(FilePlugin.type);\n\n context.fileManager.files = {\n async getFile(id: string) {\n const permission = await checkBasePermissions(context, { rwd: \"r\" });\n\n const file = await storageOperations.get(id);\n\n if (!file) {\n throw new NotFoundError(`File with id \"${id}\" does not exists.`);\n }\n\n checkOwnership(file, permission, context);\n\n return file;\n },\n async createFile(input) {\n await checkBasePermissions(context, { rwd: \"w\" });\n const identity = context.security.getIdentity();\n const tenant = context.tenancy.getCurrentTenant();\n\n const id = mdbid();\n\n const file: File = {\n ...input,\n id,\n meta: {\n private: false,\n ...(input.meta || {})\n },\n tenant: tenant.id,\n createdOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n locale: getLocaleCode(context),\n webinyVersion: context.WEBINY_VERSION\n };\n\n try {\n await runLifecycleEvent(\"beforeCreate\", {\n context,\n plugins: filePlugins,\n data: file\n });\n const result = await storageOperations.create({\n file\n });\n await runLifecycleEvent(\"afterCreate\", {\n context,\n plugins: filePlugins,\n data: file,\n file: result\n });\n return result;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create a file.\",\n ex.code || \"CREATE_FILE_ERROR\",\n {\n ...(ex.data || {}),\n file\n }\n );\n }\n },\n async updateFile(id, input) {\n const permission = await checkBasePermissions(context, { rwd: \"w\" });\n\n const original = await storageOperations.get(id);\n\n if (!original) {\n throw new NotFoundError(`File with id \"${id}\" does not exists.`);\n }\n\n checkOwnership(original, permission, context);\n\n const file = {\n ...original,\n ...input,\n id: original.id,\n webinyVersion: context.WEBINY_VERSION\n };\n\n try {\n await runLifecycleEvent(\"beforeUpdate\", {\n context,\n plugins: filePlugins,\n original,\n data: file\n });\n const result = await storageOperations.update({\n original,\n file\n });\n await runLifecycleEvent(\"afterUpdate\", {\n context,\n plugins: filePlugins,\n original,\n data: file,\n file: result\n });\n return result;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update a file.\",\n ex.code || \"UPDATE_FILE_ERROR\",\n {\n ...(ex.data || {}),\n original,\n file\n }\n );\n }\n },\n async deleteFile(id) {\n const permission = await checkBasePermissions(context, { rwd: \"d\" });\n\n const file = await storageOperations.get(id);\n if (!file) {\n throw new NotFoundError(`File with id \"${id}\" does not exists.`);\n }\n\n checkOwnership(file, permission, context);\n\n try {\n await runLifecycleEvent(\"beforeDelete\", {\n context,\n plugins: filePlugins,\n file\n });\n await storageOperations.delete(id);\n await runLifecycleEvent(\"afterDelete\", {\n context,\n plugins: filePlugins,\n file\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete a file.\",\n ex.code || \"DELETE_FILE_ERROR\",\n {\n ...(ex.data || {}),\n id,\n file\n }\n );\n }\n\n return true;\n },\n async createFilesInBatch(inputs) {\n if (!Array.isArray(inputs)) {\n throw new Error(`\"data\" must be an array.`, \"CREATE_FILES_NON_ARRAY\");\n }\n\n if (inputs.length === 0) {\n throw new Error(\n `\"data\" argument must contain at least one file.`,\n \"CREATE_FILES_MIN_FILES\"\n );\n }\n\n if (inputs.length > BATCH_CREATE_MAX_FILES) {\n throw new Error(\n `\"data\" argument must not contain more than ${BATCH_CREATE_MAX_FILES} files.`,\n \"CREATE_FILES_MAX_FILES\"\n );\n }\n\n await checkBasePermissions(context, { rwd: \"w\" });\n\n const identity = context.security.getIdentity();\n const tenant = context.tenancy.getCurrentTenant();\n const createdBy = {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n };\n\n const files: File[] = inputs.map(input => {\n return {\n ...input,\n meta: {\n private: false,\n ...(input.meta || {})\n },\n id: mdbid(),\n tenant: tenant.id,\n createdOn: new Date().toISOString(),\n createdBy,\n locale: getLocaleCode(context),\n webinyVersion: context.WEBINY_VERSION\n };\n });\n\n try {\n await runLifecycleEvent(\"beforeBatchCreate\", {\n context,\n plugins: filePlugins,\n data: files\n });\n const results = await storageOperations.createBatch({\n files\n });\n await runLifecycleEvent(\"afterBatchCreate\", {\n context,\n plugins: filePlugins,\n data: files,\n files: results\n });\n return results;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create a batch of files.\",\n ex.code || \"CREATE_FILES_ERROR\",\n {\n ...(ex.data || {}),\n files\n }\n );\n }\n },\n async listFiles(params = {}) {\n const permission = await checkBasePermissions(context, { rwd: \"r\" });\n\n const {\n limit = 40,\n search = \"\",\n types = [],\n tags = [],\n ids = [],\n after = null,\n where: initialWhere,\n sort: initialSort\n } = params;\n\n const { i18nContent } = context;\n\n const where: FileManagerFilesStorageOperationsListParamsWhere = {\n ...initialWhere,\n private: false,\n locale: i18nContent.locale.code\n };\n /**\n * Always override the createdBy received from the user, if any.\n */\n if (permission.own === true) {\n const identity = context.security.getIdentity();\n where.createdBy = identity.id;\n }\n /**\n * We need to map the old GraphQL definition to the new one.\n * That GQL definition is marked as deprecated.\n */\n /**\n * To have standardized where objects across the applications, we transform the types into type_in.\n */\n if (Array.isArray(types) && types.length > 0 && !where.type_in) {\n where.type_in = types;\n }\n /**\n * TODO: determine the change of this part.\n * Either assign search keyword to something meaningful or throw it out.\n */\n if (search && !where.search) {\n where.search = search;\n }\n /**\n * Same as on types/type_in.\n */\n if (Array.isArray(tags) && tags.length > 0 && !where.tag_in) {\n where.tag_in = tags.map(tag => tag.toLowerCase());\n }\n /**\n * Same as on types/type_in.\n */\n if (Array.isArray(ids) && ids.length > 0 && !where.id_in) {\n where.id_in = ids;\n }\n\n const sort =\n Array.isArray(initialSort) && initialSort.length > 0 ? initialSort : [\"id_DESC\"];\n try {\n return await storageOperations.list({\n where,\n after,\n limit,\n sort\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list files by given parameters.\",\n ex.code || \"FILE_TAG_SEARCH_ERROR\",\n {\n ...(ex.data || {}),\n where,\n after,\n limit,\n sort\n }\n );\n }\n },\n async listTags({ after, limit }) {\n await checkBasePermissions(context);\n const { i18nContent } = context;\n\n const where: FileManagerFilesStorageOperationsTagsParamsWhere = {\n locale: i18nContent.locale.code\n };\n\n const params = {\n where,\n limit: limit || 100000,\n after\n };\n\n try {\n /**\n * There is a meta object on the second key.\n * TODO: use when changing GraphQL output of the tags.\n */\n const [tags] = await storageOperations.tags(params);\n /**\n * just to keep it standardized, sort by the tag ASC\n */\n return tags.sort();\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not search for tags.\",\n ex.code || \"FILE_TAG_SEARCH_ERROR\",\n {\n ...(ex.data || {}),\n params\n }\n );\n }\n }\n };\n});\n\nfilesContextCrudPlugin.name = \"FileManagerFilesCrud\";\n\nexport default filesContextCrudPlugin;\n"],"file":"files.crud.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/plugins/crud/settings.crud.ts"],"names":["SETTINGS_KEY","CreateDataModel","uploadMinFileSize","value","validation","create","uploadMaxFileSize","srcPrefix","endsWith","UpdateDataModel","settingsCrudContextPlugin","ContextPlugin","context","pluginType","SettingsStorageOperationsProviderPlugin","type","providerPlugin","plugins","byType","find","WebinyError","storageOperations","provide","fileManager","settings","getSettings","get","createSettings","data","populate","validate","settingsData","toJSON","updateSettings","updatedValue","existingSettings","updatedSettings","onlyDirty","update","original","deleteSettings","delete","name"],"mappings":"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","sourcesContent":["import { withFields, string, number, onSet } from \"@commodo/fields\";\nimport { validation } from \"@webiny/validation\";\nimport { FileManagerContext, FileManagerSettings } from \"~/types\";\nimport { SettingsStorageOperationsProviderPlugin } from \"~/plugins/definitions/SettingsStorageOperationsProviderPlugin\";\nimport WebinyError from \"@webiny/error\";\nimport { ContextPlugin } from \"@webiny/handler/plugins/ContextPlugin\";\n\nexport const SETTINGS_KEY = \"file-manager\";\n\nconst CreateDataModel = withFields({\n uploadMinFileSize: number({ value: 0, validation: validation.create(\"gte:0\") }),\n uploadMaxFileSize: number({ value: 26214401 }),\n srcPrefix: onSet(value => {\n // Make sure srcPrefix always ends with forward slash.\n if (typeof value === \"string\") {\n return value.endsWith(\"/\") ? value : value + \"/\";\n }\n return value;\n })(string({ value: \"/files/\" }))\n})();\n\nconst UpdateDataModel = withFields({\n uploadMinFileSize: number({\n validation: validation.create(\"gte:0\")\n }),\n uploadMaxFileSize: number(),\n srcPrefix: onSet(value => {\n // Make sure srcPrefix always ends with forward slash.\n if (typeof value === \"string\") {\n return value.endsWith(\"/\") ? value : value + \"/\";\n }\n return value;\n })(string())\n})();\n\nconst settingsCrudContextPlugin = new ContextPlugin<FileManagerContext>(async context => {\n const pluginType = SettingsStorageOperationsProviderPlugin.type;\n\n const providerPlugin = context.plugins\n .byType<SettingsStorageOperationsProviderPlugin>(pluginType)\n .find(() => true);\n\n if (!providerPlugin) {\n throw new WebinyError(`Missing \"${pluginType}\" plugin.`, \"PLUGIN_NOT_FOUND\", {\n type: pluginType\n });\n }\n\n const storageOperations = await providerPlugin.provide({\n context\n });\n\n if (!context.fileManager) {\n context.fileManager = {} as any;\n }\n\n context.fileManager.settings = {\n async getSettings() {\n return storageOperations.get();\n },\n async createSettings(data) {\n const settings = new CreateDataModel().populate(data);\n await settings.validate();\n\n const settingsData: FileManagerSettings = await settings.toJSON();\n\n return storageOperations.create({\n data: settingsData\n });\n },\n async updateSettings(data) {\n const updatedValue = new UpdateDataModel().populate(data);\n await updatedValue.validate();\n\n const existingSettings = await storageOperations.get();\n\n const updatedSettings: Partial<FileManagerSettings> = await updatedValue.toJSON({\n onlyDirty: true\n });\n\n return storageOperations.update({\n original: existingSettings,\n data: {\n ...existingSettings,\n ...updatedSettings\n }\n });\n },\n async deleteSettings() {\n await storageOperations.delete();\n\n return true;\n }\n };\n});\n\nsettingsCrudContextPlugin.name = \"FileMangerSettingsCrud\";\n\nexport default settingsCrudContextPlugin;\n"],"file":"settings.crud.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/plugins/crud/system.crud.ts"],"names":["systemCrudContextPlugin","ContextPlugin","context","pluginType","SystemStorageOperationsProviderPlugin","type","providerPlugin","plugins","byType","find","WebinyError","storageOperations","provide","fileManager","system","getVersion","get","version","setVersion","data","update","original","ex","create","install","srcPrefix","Error","installationPlugins","InstallationPlugin","settings","createSettings","WEBINY_VERSION","upgrade","identity","security","getIdentity","NotAuthorizedError","upgradePlugins","filter","pl","app","plugin","deployedVersion","installedAppVersion","upgradeToVersion","apply","name"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AAIA;;AACA;;AACA;;AACA;;;;;;AAEA,MAAMA,uBAAuB,GAAG,IAAIC,4BAAJ,CAAsC,MAAMC,OAAN,IAAiB;AACnF,QAAMC,UAAU,GAAGC,6EAAsCC,IAAzD;AACA,QAAMC,cAAc,GAAGJ,OAAO,CAACK,OAAR,CAClBC,MADkB,CAC4BL,UAD5B,EAElBM,IAFkB,CAEb,MAAM,IAFO,CAAvB;;AAIA,MAAI,CAACH,cAAL,EAAqB;AACjB,UAAM,IAAII,cAAJ,CAAiB,YAAWP,UAAW,WAAvC,EAAmD,kBAAnD,EAAuE;AACzEE,MAAAA,IAAI,EAAEF;AADmE,KAAvE,CAAN;AAGH;;AAED,QAAMQ,iBAAiB,GAAG,MAAML,cAAc,CAACM,OAAf,CAAuB;AACnDV,IAAAA;AADmD,GAAvB,CAAhC;;AAIA,MAAI,CAACA,OAAO,CAACW,WAAb,EAA0B;AACtBX,IAAAA,OAAO,CAACW,WAAR,GAAsB,EAAtB;AACH;;AAEDX,EAAAA,OAAO,CAACW,WAAR,CAAoBC,MAApB,GAA6B;AACzB,UAAMC,UAAN,GAAmB;AACf,YAAMD,MAAM,GAAG,MAAMH,iBAAiB,CAACK,GAAlB,EAArB;AAEA,aAAOF,MAAM,GAAGA,MAAM,CAACG,OAAV,GAAoB,IAAjC;AACH,KALwB;;AAMzB,UAAMC,UAAN,CAAiBD,OAAjB,EAAkC;AAC9B,YAAMH,MAAM,GAAG,MAAMH,iBAAiB,CAACK,GAAlB,EAArB;;AAEA,UAAIF,MAAJ,EAAY;AACR,cAAMK,IAAI,mCACHL,MADG;AAENG,UAAAA;AAFM,UAAV;;AAIA,YAAI;AACA,gBAAMN,iBAAiB,CAACS,MAAlB,CAAyB;AAC3BC,YAAAA,QAAQ,EAAEP,MADiB;AAE3BK,YAAAA;AAF2B,WAAzB,CAAN;AAIA;AACH,SAND,CAME,OAAOG,EAAP,EAAW;AACT,gBAAM,IAAIZ,cAAJ,CACF,mCADE,EAEF,qBAFE,EAGF;AACIS,YAAAA;AADJ,WAHE,CAAN;AAOH;AACJ;;AAED,YAAMA,IAAI,GAAG;AACTF,QAAAA;AADS,OAAb;;AAGA,UAAI;AACA,cAAMN,iBAAiB,CAACY,MAAlB,CAAyB;AAC3BJ,UAAAA;AAD2B,SAAzB,CAAN;AAGA;AACH,OALD,CAKE,OAAOG,EAAP,EAAW;AACT,cAAM,IAAIZ,cAAJ,CAAgB,mCAAhB,EAAqD,qBAArD,EAA4E;AAC9ES,UAAAA;AAD8E,SAA5E,CAAN;AAGH;AACJ,KA5CwB;;AA6CzB,UAAMK,OAAN,CAAc;AAAEC,MAAAA;AAAF,KAAd,EAA6B;AACzB,YAAM;AAAEZ,QAAAA;AAAF,UAAkBX,OAAxB;AACA,YAAMe,OAAO,GAAG,MAAMJ,WAAW,CAACC,MAAZ,CAAmBC,UAAnB,EAAtB;;AAEA,UAAIE,OAAJ,EAAa;AACT,cAAM,IAAIS,cAAJ,CAAU,oCAAV,EAAgD,uBAAhD,CAAN;AACH;;AAED,YAAMP,IAAkC,GAAG,EAA3C;;AAEA,UAAIM,SAAJ,EAAe;AACXN,QAAAA,IAAI,CAACM,SAAL,GAAiBA,SAAjB;AACH;;AAED,YAAME,mBAAmB,GAAGzB,OAAO,CAACK,OAAR,CAAgBC,MAAhB,CACxBoB,uCAAmBvB,IADK,CAA5B;AAIA,YAAM,6BACFsB,mBADE,EAEF,eAFE,EAGF;AACIzB,QAAAA;AADJ,OAHE,CAAN;AAQA,YAAMW,WAAW,CAACgB,QAAZ,CAAqBC,cAArB,CAAoCX,IAApC,CAAN;AAEA,YAAMN,WAAW,CAACC,MAAZ,CAAmBI,UAAnB,CAA8BhB,OAAO,CAAC6B,cAAtC,CAAN;AAEA,YAAM,6BACFJ,mBADE,EAEF,cAFE,EAGF;AACIzB,QAAAA;AADJ,OAHE,CAAN;AAQA,aAAO,IAAP;AACH,KApFwB;;AAqFzB,UAAM8B,OAAN,CAAcf,OAAd,EAAuB;AACnB,YAAMgB,QAAQ,GAAG/B,OAAO,CAACgC,QAAR,CAAiBC,WAAjB,EAAjB;;AACA,UAAI,CAACF,QAAL,EAAe;AACX,cAAM,IAAIG,+BAAJ,EAAN;AACH;;AAED,YAAMC,cAAc,GAAGnC,OAAO,CAACK,OAAR,CAClBC,MADkB,CACI,aADJ,EAElB8B,MAFkB,CAEXC,EAAE,IAAIA,EAAE,CAACC,GAAH,KAAW,cAFN,CAAvB;AAIA,YAAMC,MAAM,GAAG,qCAAoB;AAC/BC,QAAAA,eAAe,EAAExC,OAAO,CAAC6B,cADM;AAE/BY,QAAAA,mBAAmB,EAAE,MAAM,KAAK5B,UAAL,EAFI;AAG/BsB,QAAAA,cAH+B;AAI/BO,QAAAA,gBAAgB,EAAE3B;AAJa,OAApB,CAAf;AAOA,YAAMwB,MAAM,CAACI,KAAP,CAAa3C,OAAb,CAAN,CAjBmB,CAmBnB;;AACA,YAAMA,OAAO,CAACW,WAAR,CAAoBC,MAApB,CAA2BI,UAA3B,CAAsCD,OAAtC,CAAN;AAEA,aAAO,IAAP;AACH;;AA5GwB,GAA7B;AA8GH,CAlI+B,CAAhC;AAoIAjB,uBAAuB,CAAC8C,IAAxB,GAA+B,uBAA/B;eAEe9C,uB","sourcesContent":["import { NotAuthorizedError } from \"@webiny/api-security\";\nimport { getApplicablePlugin } from \"@webiny/api-upgrade\";\nimport Error from \"@webiny/error\";\nimport { FileManagerContext, FileManagerSettings } from \"~/types\";\nimport { UpgradePlugin } from \"@webiny/api-upgrade/types\";\nimport WebinyError from \"@webiny/error\";\nimport { ContextPlugin } from \"@webiny/handler/plugins/ContextPlugin\";\nimport { executeCallbacks } from \"~/utils\";\nimport { InstallationPlugin } from \"~/plugins/definitions/InstallationPlugin\";\nimport { SystemStorageOperationsProviderPlugin } from \"~/plugins/definitions/SystemStorageOperationsProviderPlugin\";\n\nconst systemCrudContextPlugin = new ContextPlugin<FileManagerContext>(async context => {\n const pluginType = SystemStorageOperationsProviderPlugin.type;\n const providerPlugin = context.plugins\n .byType<SystemStorageOperationsProviderPlugin>(pluginType)\n .find(() => true);\n\n if (!providerPlugin) {\n throw new WebinyError(`Missing \"${pluginType}\" plugin.`, \"PLUGIN_NOT_FOUND\", {\n type: pluginType\n });\n }\n\n const storageOperations = await providerPlugin.provide({\n context\n });\n\n if (!context.fileManager) {\n context.fileManager = {} as any;\n }\n\n context.fileManager.system = {\n async getVersion() {\n const system = await storageOperations.get();\n\n return system ? system.version : null;\n },\n async setVersion(version: string) {\n const system = await storageOperations.get();\n\n if (system) {\n const data = {\n ...system,\n version\n };\n try {\n await storageOperations.update({\n original: system,\n data\n });\n return;\n } catch (ex) {\n throw new WebinyError(\n \"Could not update the system data.\",\n \"SYSTEM_UPDATE_ERROR\",\n {\n data\n }\n );\n }\n }\n\n const data = {\n version\n };\n try {\n await storageOperations.create({\n data\n });\n return;\n } catch (ex) {\n throw new WebinyError(\"Could not create the system data.\", \"SYSTEM_CREATE_ERROR\", {\n data\n });\n }\n },\n async install({ srcPrefix }) {\n const { fileManager } = context;\n const version = await fileManager.system.getVersion();\n\n if (version) {\n throw new Error(\"File Manager is already installed.\", \"FILES_INSTALL_ABORTED\");\n }\n\n const data: Partial<FileManagerSettings> = {};\n\n if (srcPrefix) {\n data.srcPrefix = srcPrefix;\n }\n\n const installationPlugins = context.plugins.byType<InstallationPlugin>(\n InstallationPlugin.type\n );\n\n await executeCallbacks<InstallationPlugin[\"beforeInstall\"]>(\n installationPlugins,\n \"beforeInstall\",\n {\n context\n }\n );\n\n await fileManager.settings.createSettings(data);\n\n await fileManager.system.setVersion(context.WEBINY_VERSION);\n\n await executeCallbacks<InstallationPlugin[\"afterInstall\"]>(\n installationPlugins,\n \"afterInstall\",\n {\n context\n }\n );\n\n return true;\n },\n async upgrade(version) {\n const identity = context.security.getIdentity();\n if (!identity) {\n throw new NotAuthorizedError();\n }\n\n const upgradePlugins = context.plugins\n .byType<UpgradePlugin>(\"api-upgrade\")\n .filter(pl => pl.app === \"file-manager\");\n\n const plugin = getApplicablePlugin({\n deployedVersion: context.WEBINY_VERSION,\n installedAppVersion: await this.getVersion(),\n upgradePlugins,\n upgradeToVersion: version\n });\n\n await plugin.apply(context);\n\n // Store new app version\n await context.fileManager.system.setVersion(version);\n\n return true;\n }\n };\n});\n\nsystemCrudContextPlugin.name = \"FileManagerSystemCrud\";\n\nexport default systemCrudContextPlugin;\n"],"file":"system.crud.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/plugins/crud/utils/checkBasePermissions.ts"],"names":["context","check","i18nContent","checkI18NContentPermission","filePermission","security","getPermission","NotAuthorizedError","rwd","hasRwd","filesFilePermission","includes"],"mappings":";;;;;;;AACA;;eAEe,OACXA,OADW,EAEXC,KAAuB,GAAG,EAFf,KAGe;AAC1B,QAAMD,OAAO,CAACE,WAAR,CAAoBC,0BAApB,EAAN;AACA,QAAMC,cAAc,GAAG,MAAMJ,OAAO,CAACK,QAAR,CAAiBC,aAAjB,CAA+C,SAA/C,CAA7B;;AACA,MAAI,CAACF,cAAL,EAAqB;AACjB,UAAM,IAAIG,+BAAJ,EAAN;AACH;;AACD,MAAIN,KAAK,CAACO,GAAN,IAAa,CAACC,MAAM,CAACL,cAAD,EAAiBH,KAAK,CAACO,GAAvB,CAAxB,EAAqD;AACjD,UAAM,IAAID,+BAAJ,EAAN;AACH;;AAED,SAAOH,cAAP;AACH,C;;;;AAED,MAAMK,MAAM,GAAG,CAACC,mBAAD,EAAsBF,GAAtB,KAA8B;AACzC,MAAI,OAAOE,mBAAmB,CAACF,GAA3B,KAAmC,QAAvC,EAAiD;AAC7C,WAAO,IAAP;AACH;;AAED,SAAOE,mBAAmB,CAACF,GAApB,CAAwBG,QAAxB,CAAiCH,GAAjC,CAAP;AACH,CAND","sourcesContent":["import { FileManagerContext, FilePermission } from \"~/types\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\n\nexport default async (\n context: FileManagerContext,\n check: { rwd?: string } = {}\n): Promise<FilePermission> => {\n await context.i18nContent.checkI18NContentPermission();\n const filePermission = await context.security.getPermission<FilePermission>(\"fm.file\");\n if (!filePermission) {\n throw new NotAuthorizedError();\n }\n if (check.rwd && !hasRwd(filePermission, check.rwd)) {\n throw new NotAuthorizedError();\n }\n\n return filePermission;\n};\n\nconst hasRwd = (filesFilePermission, rwd) => {\n if (typeof filesFilePermission.rwd !== \"string\") {\n return true;\n }\n\n return filesFilePermission.rwd.includes(rwd);\n};\n"],"file":"checkBasePermissions.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/plugins/crud/utils/createFileModel.ts"],"names":["create","key","validation","name","size","type","meta","value","private","tags","Array","isArray","map","item","toLowerCase","list","length","Error","i","tag"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;eAEe,CAACA,MAAM,GAAG,IAAV,KAAmB;AAC9B,SAAO,wBAAW;AACdC,IAAAA,GAAG,EAAE,oBAAO;AACRC,MAAAA,UAAU,EAAEA,uBAAWF,MAAX,CAAmB,GAAEA,MAAM,GAAG,WAAH,GAAiB,EAAG,gBAA/C;AADJ,KAAP,CADS;AAIdG,IAAAA,IAAI,EAAE,oBAAO;AAAED,MAAAA,UAAU,EAAEA,uBAAWF,MAAX,CAAkB,gBAAlB;AAAd,KAAP,CAJQ;AAKdI,IAAAA,IAAI,EAAE,qBALQ;AAMdC,IAAAA,IAAI,EAAE,oBAAO;AAAEH,MAAAA,UAAU,EAAEA,uBAAWF,MAAX,CAAkB,eAAlB;AAAd,KAAP,CANQ;AAOdM,IAAAA,IAAI,EAAE,iCAAO;AAAEC,MAAAA,KAAK,EAAE;AAAEC,QAAAA,OAAO,EAAE;AAAX;AAAT,KAAP,CAPQ;AAQdC,IAAAA,IAAI,EAAE,mBAAMF,KAAK,IAAI;AACjB,UAAI,CAACG,KAAK,CAACC,OAAN,CAAcJ,KAAd,CAAL,EAA2B;AACvB,eAAO,IAAP;AACH;;AAED,aAAOA,KAAK,CAACK,GAAN,CAAUC,IAAI,IAAIA,IAAI,CAACC,WAAL,EAAlB,CAAP;AACH,KANK,EAOF,oBAAO;AACHC,MAAAA,IAAI,EAAE,IADH;AAEHb,MAAAA,UAAU,EAAEO,IAAI,IAAI;AAChB,YAAI,CAACC,KAAK,CAACC,OAAN,CAAcF,IAAd,CAAL,EAA0B;AACtB;AACH;;AAED,YAAIA,IAAI,CAACO,MAAL,GAAc,EAAlB,EAAsB;AAClB,gBAAMC,KAAK,CAAC,mCAAD,CAAX;AACH;;AAED,aAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGT,IAAI,CAACO,MAAzB,EAAiCE,CAAC,EAAlC,EAAsC;AAClC,gBAAMC,GAAG,GAAGV,IAAI,CAACS,CAAD,CAAhB;;AACA,cAAI,OAAOC,GAAP,KAAe,QAAnB,EAA6B;AACzB,kBAAMF,KAAK,CAAC,4BAAD,CAAX;AACH;;AAED,cAAIE,GAAG,CAACH,MAAJ,GAAa,EAAjB,EAAqB;AACjB,kBAAMC,KAAK,CAAE,OAAME,GAAI,mCAAZ,CAAX;AACH;AACJ;AACJ;AArBE,KAAP,CAPE;AARQ,GAAX,GAAP;AAwCH,C","sourcesContent":["import { withFields, string, number, onSet } from \"@commodo/fields\";\nimport { object } from \"commodo-fields-object\";\nimport { validation } from \"@webiny/validation\";\n\nexport default (create = true) => {\n return withFields({\n key: string({\n validation: validation.create(`${create ? \"required,\" : \"\"}maxLength:1000`)\n }),\n name: string({ validation: validation.create(\"maxLength:1000\") }),\n size: number(),\n type: string({ validation: validation.create(\"maxLength:255\") }),\n meta: object({ value: { private: false } }),\n tags: onSet(value => {\n if (!Array.isArray(value)) {\n return null;\n }\n\n return value.map(item => item.toLowerCase());\n })(\n string({\n list: true,\n validation: tags => {\n if (!Array.isArray(tags)) {\n return;\n }\n\n if (tags.length > 15) {\n throw Error(\"You cannot set more than 15 tags.\");\n }\n\n for (let i = 0; i < tags.length; i++) {\n const tag = tags[i];\n if (typeof tag !== \"string\") {\n throw Error(\"Tag must be typeof string.\");\n }\n\n if (tag.length > 50) {\n throw Error(`Tag ${tag} is more than 50 characters long.`);\n }\n }\n }\n })\n )\n })();\n};\n"],"file":"createFileModel.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/plugins/crud/utils/lifecycleEvents.ts"],"names":["runLifecycleEvent","hook","params","plugins","rest","length","plugin"],"mappings":";;;;;;;;;;;;;AAGO,MAAMA,iBAAiB,GAAG,OAC7BC,IAD6B,EAE7BC,MAF6B,KAGb;AAChB,QAAM;AAAEC,IAAAA;AAAF,MAAuBD,MAA7B;AAAA,QAAoBE,IAApB,0CAA6BF,MAA7B;;AACA,MAAIC,OAAO,CAACE,MAAR,KAAmB,CAAvB,EAA0B;AACtB;AACH;;AACD,OAAK,MAAMC,MAAX,IAAqBH,OAArB,EAA8B;AAC1B,QAAI,CAACG,MAAM,CAACL,IAAD,CAAX,EAAmB;AACf;AACH;;AACD,UAAMK,MAAM,CAACL,IAAD,CAAN,CAAaG,IAAb,CAAN;AACH;AACJ,CAdM","sourcesContent":["import { FilePlugin } from \"~/plugins/definitions/FilePlugin\";\nimport { FileManagerContext } from \"~/types\";\n\nexport const runLifecycleEvent = async (\n hook: string,\n params: { context: FileManagerContext; plugins: FilePlugin[] } & Record<string, any>\n): Promise<void> => {\n const { plugins, ...rest } = params;\n if (plugins.length === 0) {\n return;\n }\n for (const plugin of plugins) {\n if (!plugin[hook]) {\n continue;\n }\n await plugin[hook](rest);\n }\n};\n"],"file":"lifecycleEvents.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/plugins/definitions/FilePhysicalStoragePlugin.ts"],"names":["FilePhysicalStoragePlugin","Plugin","constructor","params","_params","upload","WebinyError","delete"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAkBO,MAAMA,yBAAN,SAAwCC,eAAxC,CAA+C;AAI3CC,EAAAA,WAAW,CAACC,MAAD,EAAiB;AAC/B;AAD+B;AAE/B,SAAKC,OAAL,GAAeD,MAAf;AACH;;AAEkB,QAANE,MAAM,CAACF,MAAD,EAAqC;AACpD,QAAI,CAAC,KAAKC,OAAL,CAAaC,MAAlB,EAA0B;AACtB,YAAM,IAAIC,cAAJ,CACD,qDADC,EAEF,qBAFE,CAAN;AAIH;;AACD,WAAO,KAAKF,OAAL,CAAaC,MAAb,CAAoBF,MAApB,CAAP;AACH;;AAEkB,QAANI,MAAM,CAACJ,MAAD,EAAqC;AACpD,QAAI,CAAC,KAAKC,OAAL,CAAaG,MAAlB,EAA0B;AACtB,YAAM,IAAID,cAAJ,CACD,qDADC,EAEF,qBAFE,CAAN;AAIH;;AACD,WAAO,KAAKF,OAAL,CAAaG,MAAb,CAAoBJ,MAApB,CAAP;AACH;;AA3BiD;;;8BAAzCH,yB,UACqB,0B","sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport WebinyError from \"@webiny/error\";\nimport { FileManagerSettings } from \"~/types\";\n\nexport interface Params {\n upload: (args: UploadParams) => Promise<any>;\n delete: (args: DeleteParams) => Promise<void>;\n}\n\nexport interface UploadParams {\n settings: FileManagerSettings;\n buffer: Buffer;\n [key: string]: any;\n}\n\nexport interface DeleteParams {\n key: string;\n}\n\nexport class FilePhysicalStoragePlugin extends Plugin {\n public static readonly type = \"api-file-manager-storage\";\n private readonly _params: Params;\n\n public constructor(params: Params) {\n super();\n this._params = params;\n }\n\n public async upload(params: UploadParams): Promise<any> {\n if (!this._params.upload) {\n throw new WebinyError(\n `You must define the \"upload\" method of this plugin.`,\n \"UPLOAD_METHOD_ERROR\"\n );\n }\n return this._params.upload(params);\n }\n\n public async delete(params: DeleteParams): Promise<any> {\n if (!this._params.delete) {\n throw new WebinyError(\n `You must define the \"delete\" method of this plugin.`,\n \"DELETE_METHOD_ERROR\"\n );\n }\n return this._params.delete(params);\n }\n}\n"],"file":"FilePhysicalStoragePlugin.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/plugins/definitions/FilePlugin.ts"],"names":["FilePlugin","Plugin","constructor","params","_params","beforeCreate","_execute","afterCreate","beforeUpdate","afterUpdate","beforeBatchCreate","afterBatchCreate","beforeDelete","afterDelete","callback"],"mappings":";;;;;;;;;;;AAAA;;AA2HO,MAAMA,UAAN,SAAyBC,eAAzB,CAAgC;AAI5BC,EAAAA,WAAW,CAACC,MAAD,EAAkB;AAChC;AADgC;AAEhC,SAAKC,OAAL,GAAeD,MAAM,IAAK,EAA1B;AACH;;AAEwB,QAAZE,YAAY,CAACF,MAAD,EAA4C;AACjE,UAAM,KAAKG,QAAL,CAAc,cAAd,EAA8BH,MAA9B,CAAN;AACH;;AAEuB,QAAXI,WAAW,CAACJ,MAAD,EAA2C;AAC/D,UAAM,KAAKG,QAAL,CAAc,aAAd,EAA6BH,MAA7B,CAAN;AACH;;AAEwB,QAAZK,YAAY,CAACL,MAAD,EAA4C;AACjE,UAAM,KAAKG,QAAL,CAAc,cAAd,EAA8BH,MAA9B,CAAN;AACH;;AAEuB,QAAXM,WAAW,CAACN,MAAD,EAA2C;AAC/D,UAAM,KAAKG,QAAL,CAAc,aAAd,EAA6BH,MAA7B,CAAN;AACH;;AAE6B,QAAjBO,iBAAiB,CAACP,MAAD,EAAiD;AAC3E,UAAM,KAAKG,QAAL,CAAc,mBAAd,EAAmCH,MAAnC,CAAN;AACH;;AAE4B,QAAhBQ,gBAAgB,CAACR,MAAD,EAAgD;AACzE,UAAM,KAAKG,QAAL,CAAc,kBAAd,EAAkCH,MAAlC,CAAN;AACH;;AAEwB,QAAZS,YAAY,CAACT,MAAD,EAA4C;AACjE,UAAM,KAAKG,QAAL,CAAc,cAAd,EAA8BH,MAA9B,CAAN;AACH;;AAEuB,QAAXU,WAAW,CAACV,MAAD,EAA2C;AAC/D,UAAM,KAAKG,QAAL,CAAc,aAAd,EAA6BH,MAA7B,CAAN;AACH;;AAEqB,QAARG,QAAQ,CAACQ,QAAD,EAAmBX,MAAnB,EAA+C;AACjE,QAAI,OAAO,KAAKC,OAAL,CAAaU,QAAb,CAAP,KAAkC,UAAtC,EAAkD;AAC9C;AACH;;AACD,UAAM,KAAKV,OAAL,CAAaU,QAAb,EAAuBX,MAAvB,CAAN;AACH;;AA9CkC;;;8BAA1BH,U,UACqB,S","sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { File, FileManagerContext } from \"~/types\";\n\n/**\n * Parameters for beforeCreate lifecycle.\n */\nexport interface BeforeCreateParams {\n context: FileManagerContext;\n /**\n * Data to be inserted into the storage.\n */\n data: File;\n}\n/**\n * Parameters for afterCreate lifecycle.\n */\nexport interface AfterCreateParams {\n context: FileManagerContext;\n /**\n * Data that was inserted into the storage.\n */\n data: File;\n /**\n * Result of the storage operations create method.\n * Possibly changed something on the \"data\".\n */\n file: File;\n}\n/**\n * Parameters for beforeUpdate lifecycle.\n */\nexport interface BeforeUpdateParams {\n context: FileManagerContext;\n /**\n * Original file from the storage.\n */\n original: File;\n /**\n * Data to be updated to the storage.\n */\n data: File;\n}\n/**\n * Parameters for afterUpdate lifecycle.\n */\nexport interface AfterUpdateParams {\n context: FileManagerContext;\n /**\n * Original file from the storage.\n */\n original: File;\n /**\n * Data that was updated in the storage.\n */\n data: File;\n /**\n * Result of the storage operations update method.\n * Possibly changed something on the \"data\".\n */\n file: File;\n}\n/**\n * Parameters for beforeBatchCreate lifecycle.\n */\nexport interface BeforeBatchCreateParams {\n context: FileManagerContext;\n /**\n * Files to be inserted into the storage.\n */\n data: File[];\n}\n\n/**\n * Parameters for afterBatchCreate lifecycle.\n */\nexport interface AfterBatchCreateParams {\n context: FileManagerContext;\n /**\n * Files that were inserted into the storage.\n */\n data: File[];\n /**\n * Results of the insert.\n */\n files: File[];\n}\n/**\n * Parameters for beforeDelete lifecycle.\n */\nexport interface BeforeDeleteParams {\n context: FileManagerContext;\n /**\n * File to be deleted from the storage.\n */\n file: File;\n}\n/**\n * Parameters for afterDelete lifecycle.\n */\nexport interface AfterDeleteParams {\n context: FileManagerContext;\n /**\n * File that was deleted from the storage.\n */\n file: File;\n}\n\n/**\n * Definition for the constructor parameters of the FilePlugin.\n *\n * @category FilePlugin\n */\nexport interface Params {\n beforeCreate?: (params: BeforeCreateParams) => Promise<void>;\n afterCreate?: (params: AfterCreateParams) => Promise<void>;\n beforeUpdate?: (params: BeforeUpdateParams) => Promise<void>;\n afterUpdate?: (params: AfterUpdateParams) => Promise<void>;\n beforeBatchCreate?: (params: BeforeBatchCreateParams) => Promise<void>;\n afterBatchCreate?: (params: AfterBatchCreateParams) => Promise<void>;\n beforeDelete?: (params: BeforeDeleteParams) => Promise<void>;\n afterDelete?: (params: AfterDeleteParams) => Promise<void>;\n}\n\nexport class FilePlugin extends Plugin {\n public static readonly type = \"fm.file\";\n private readonly _params: Params;\n\n public constructor(params?: Params) {\n super();\n this._params = params || ({} as any);\n }\n\n public async beforeCreate(params: BeforeCreateParams): Promise<void> {\n await this._execute(\"beforeCreate\", params);\n }\n\n public async afterCreate(params: AfterCreateParams): Promise<void> {\n await this._execute(\"afterCreate\", params);\n }\n\n public async beforeUpdate(params: BeforeUpdateParams): Promise<void> {\n await this._execute(\"beforeUpdate\", params);\n }\n\n public async afterUpdate(params: AfterUpdateParams): Promise<void> {\n await this._execute(\"afterUpdate\", params);\n }\n\n public async beforeBatchCreate(params: BeforeBatchCreateParams): Promise<void> {\n await this._execute(\"beforeBatchCreate\", params);\n }\n\n public async afterBatchCreate(params: AfterBatchCreateParams): Promise<void> {\n await this._execute(\"afterBatchCreate\", params);\n }\n\n public async beforeDelete(params: BeforeDeleteParams): Promise<void> {\n await this._execute(\"beforeDelete\", params);\n }\n\n public async afterDelete(params: AfterDeleteParams): Promise<void> {\n await this._execute(\"afterDelete\", params);\n }\n\n private async _execute(callback: string, params: any): Promise<void> {\n if (typeof this._params[callback] !== \"function\") {\n return;\n }\n await this._params[callback](params);\n }\n}\n"],"file":"FilePlugin.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/plugins/definitions/FileStorageTransformPlugin.ts"],"names":["FileStorageTransformPlugin","Plugin","constructor","params","_params","toStorage","file","fromStorage"],"mappings":";;;;;;;;;;;AAAA;;AAsBO,MAAMA,0BAAN,SAAyCC,eAAzC,CAAgD;AAI5CC,EAAAA,WAAW,CAACC,MAAD,EAAiB;AAC/B;AAD+B;AAG/B,SAAKC,OAAL,GAAeD,MAAf;AACH;AAED;AACJ;AACA;AACA;;;AAC0B,QAATE,SAAS,CAACF,MAAD,EAAwD;AAC1E,QAAI,CAAC,KAAKC,OAAL,CAAaC,SAAlB,EAA6B;AACzB,aAAOF,MAAM,CAACG,IAAd;AACH;;AACD,WAAO,KAAKF,OAAL,CAAaC,SAAb,CAAuBF,MAAvB,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;;;AAC4B,QAAXI,WAAW,CAACJ,MAAD,EAA0D;AAC9E,QAAI,CAAC,KAAKC,OAAL,CAAaG,WAAlB,EAA+B;AAC3B,aAAOJ,MAAM,CAACG,IAAd;AACH;;AACD,WAAO,KAAKF,OAAL,CAAaG,WAAb,CAAyBJ,MAAzB,CAAP;AACH;;AA9BkD;;;8BAA1CH,0B,UACqB,4B","sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { File } from \"~/types\";\n\nexport interface ToParams {\n /**\n * File that is being sent to the storage operations method.\n */\n file: File & Record<string, any>;\n}\n\nexport interface FromParams {\n /**\n * File that was fetched from the storage operations method.\n */\n file: File & Record<string, any>;\n}\n\nexport interface Params {\n toStorage?: (params: ToParams) => Promise<File & Record<string, any>>;\n fromStorage?: (params: FromParams) => Promise<File & Record<string, any>>;\n}\n\nexport class FileStorageTransformPlugin extends Plugin {\n public static readonly type = \"fm.files.storage.transform\";\n private readonly _params: Params;\n\n public constructor(params: Params) {\n super();\n\n this._params = params;\n }\n\n /**\n * Transform the file value into something that can be stored.\n * Be aware that you must return the whole file object.\n */\n public async toStorage(params: ToParams): Promise<File & Record<string, any>> {\n if (!this._params.toStorage) {\n return params.file;\n }\n return this._params.toStorage(params);\n }\n /**\n * Transform the file value from the storage type to one required by our system.\n * Be aware that you must return the whole file object.\n * This method MUST reverse what ever toStorage method changed on the file object.\n */\n public async fromStorage(params: FromParams): Promise<File & Record<string, any>> {\n if (!this._params.fromStorage) {\n return params.file;\n }\n return this._params.fromStorage(params);\n }\n}\n"],"file":"FileStorageTransformPlugin.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/plugins/definitions/FilesStorageOperationsProviderPlugin.ts"],"names":["FilesStorageOperationsProviderPlugin","Plugin"],"mappings":";;;;;;;;;;;AAAA;;AAOO,MAAeA,oCAAf,SAA4DC,eAA5D,CAAmE;;;8BAApDD,oC,UACY,oC","sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { FileManagerContext, FileManagerFilesStorageOperations } from \"~/types\";\n\nexport interface Params {\n context: FileManagerContext;\n}\n\nexport abstract class FilesStorageOperationsProviderPlugin extends Plugin {\n public static readonly type = \"fm.storageOperationsProvider.files\";\n\n public abstract provide(params: Params): Promise<FileManagerFilesStorageOperations>;\n}\n"],"file":"FilesStorageOperationsProviderPlugin.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/plugins/definitions/InstallationPlugin.ts"],"names":["InstallationPlugin","Plugin","constructor","config","_config","beforeInstall","params","_execute","afterInstall","callback"],"mappings":";;;;;;;;;;;AACA;;AAaO,MAAeA,kBAAf,SAA0CC,eAA1C,CAAiD;AAIpDC,EAAAA,WAAW,CAACC,MAAD,EAA2B;AAClC;AADkC;AAElC,SAAKC,OAAL,GAAeD,MAAM,IAAI,EAAzB;AACH;;AAEyB,QAAbE,aAAa,CAACC,MAAD,EAAgC;AACtD,WAAO,KAAKC,QAAL,CAAc,eAAd,EAA+BD,MAA/B,CAAP;AACH;;AAEwB,QAAZE,YAAY,CAACF,MAAD,EAAgC;AACrD,WAAO,KAAKC,QAAL,CAAc,cAAd,EAA8BD,MAA9B,CAAP;AACH;;AAEqB,QAARC,QAAQ,CAACE,QAAD,EAAWH,MAAX,EAAkC;AACpD,QAAI,OAAO,KAAKF,OAAL,CAAaK,QAAb,CAAP,KAAkC,UAAtC,EAAkD;AAC9C;AACH;;AACD,WAAO,KAAKL,OAAL,CAAaK,QAAb,EAAuBH,MAAvB,CAAP;AACH;;AAtBmD;;;8BAAlCN,kB,UACY,Y","sourcesContent":["import { FileManagerContext } from \"~/types\";\nimport { Plugin } from \"@webiny/plugins\";\n\nexport type CallbackFunction<TParams> = (params: TParams) => Promise<void>;\n\nexport interface Params {\n context: FileManagerContext;\n}\n\ninterface Config {\n beforeInstall?: CallbackFunction<Params>;\n afterInstall?: CallbackFunction<Params>;\n}\n\nexport abstract class InstallationPlugin extends Plugin {\n public static readonly type = \"fm.install\";\n private readonly _config: Partial<Config>;\n\n constructor(config?: Partial<Config>) {\n super();\n this._config = config || {};\n }\n\n public async beforeInstall(params: Params): Promise<void> {\n return this._execute(\"beforeInstall\", params);\n }\n\n public async afterInstall(params: Params): Promise<void> {\n return this._execute(\"afterInstall\", params);\n }\n\n private async _execute(callback, params): Promise<void> {\n if (typeof this._config[callback] !== \"function\") {\n return;\n }\n return this._config[callback](params);\n }\n}\n"],"file":"InstallationPlugin.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/plugins/definitions/SettingsStorageOperationsProviderPlugin.ts"],"names":["SettingsStorageOperationsProviderPlugin","Plugin"],"mappings":";;;;;;;;;;;AAAA;;AAOO,MAAeA,uCAAf,SAA+DC,eAA/D,CAAsE;;;8BAAvDD,uC,UACY,uC","sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { FileManagerContext, FileManagerSettingsStorageOperations } from \"~/types\";\n\nexport interface Params {\n context: FileManagerContext;\n}\n\nexport abstract class SettingsStorageOperationsProviderPlugin extends Plugin {\n public static readonly type = \"fm.storageOperationsProvider.settings\";\n\n public abstract provide(params: Params): Promise<FileManagerSettingsStorageOperations>;\n}\n"],"file":"SettingsStorageOperationsProviderPlugin.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/plugins/definitions/SystemStorageOperationsProviderPlugin.ts"],"names":["SystemStorageOperationsProviderPlugin","Plugin"],"mappings":";;;;;;;;;;;AAAA;;AAOO,MAAeA,qCAAf,SAA6DC,eAA7D,CAAoE;;;8BAArDD,qC,UACY,qC","sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { FileManagerContext, FileManagerSystemStorageOperations } from \"~/types\";\n\nexport interface Params {\n context: FileManagerContext;\n}\n\nexport abstract class SystemStorageOperationsProviderPlugin extends Plugin {\n public static readonly type = \"fm.storageOperationsProvider.system\";\n\n public abstract provide(params: Params): Promise<FileManagerSystemStorageOperations>;\n}\n"],"file":"SystemStorageOperationsProviderPlugin.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/plugins/graphql.ts"],"names":["emptyResolver","resolve","fn","Response","e","ErrorResponse","plugin","type","schema","typeDefs","resolvers","File","src","file","args","context","settings","fileManager","getSettings","srcPrefix","key","Query","Mutation","FmQuery","getFile","_","files","id","listFiles","data","meta","ListResponse","listTags","error","version","i18nContent","tenancy","getCurrentTenant","getLocale","system","getVersion","FmMutation","createFile","updateFile","createFiles","createFilesInBatch","deleteFile","storage","delete","install","upgrade","updateSettings"],"mappings":";;;;;;;AAAA;;AAIA,MAAMA,aAAa,GAAG,OAAO,EAAP,CAAtB;;AAEA,MAAMC,OAAO,GAAG,MAAMC,EAAN,IAAY;AACxB,MAAI;AACA,WAAO,IAAIC,wBAAJ,CAAa,MAAMD,EAAE,EAArB,CAAP;AACH,GAFD,CAEE,OAAOE,CAAP,EAAU;AACR,WAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;AACH;AACJ,CAND;;AAQA,MAAME,MAA+C,GAAG;AACpDC,EAAAA,IAAI,EAAE,gBAD8C;AAEpDC,EAAAA,MAAM,EAAE;AACJC,IAAAA,QAAQ;AAAE;AAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAxJY;AAyJJC,IAAAA,SAAS,EAAE;AACPC,MAAAA,IAAI,EAAE;AACF,cAAMC,GAAN,CAAUC,IAAV,EAAgBC,IAAhB,EAAsBC,OAAtB,EAA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","sourcesContent":["import { Response, ErrorResponse, ListResponse } from \"@webiny/handler-graphql\";\nimport { FileInput, FileManagerContext, FilesListOpts, FileManagerSettings } from \"~/types\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/types\";\n\nconst emptyResolver = () => ({});\n\nconst resolve = async fn => {\n try {\n return new Response(await fn());\n } catch (e) {\n return new ErrorResponse(e);\n }\n};\n\nconst plugin: GraphQLSchemaPlugin<FileManagerContext> = {\n type: \"graphql-schema\",\n schema: {\n typeDefs: /* GraphQL */ `\n type FmCreatedBy {\n id: ID\n displayName: String\n }\n\n input FileInput {\n key: String\n name: String\n size: Int\n type: String\n tags: [String]\n meta: JSON\n }\n\n type UploadFileResponseDataFile {\n name: String\n type: String\n size: Int\n key: String\n }\n\n type UploadFileResponseData {\n # Contains data that is necessary for initiating a file upload.\n data: JSON\n file: UploadFileResponseDataFile\n }\n\n type FileListMeta {\n cursor: String\n totalCount: Int\n hasMoreItems: Boolean\n }\n\n type FileError {\n code: String\n message: String\n data: JSON\n }\n\n type FileListResponse {\n data: [File]\n meta: FileListMeta\n error: FileError\n }\n\n type FileResponse {\n data: File\n error: FileError\n }\n\n type CreateFilesResponse {\n data: [File]!\n error: FileError\n }\n\n type File {\n id: ID\n key: String\n name: String\n size: Int\n type: String\n src: String\n tags: [String]\n meta: JSON\n createdOn: DateTime\n createdBy: FmCreatedBy\n }\n\n type FileManagerBooleanResponse {\n data: Boolean\n error: FileError\n }\n\n type FileManagerSettings {\n uploadMinFileSize: Number\n uploadMaxFileSize: Number\n }\n\n input FileManagerSettingsInput {\n uploadMinFileSize: Number\n uploadMaxFileSize: Number\n }\n\n type FileManagerSettingsResponse {\n data: FileManagerSettings\n error: FileError\n }\n\n input FileWhereInput {\n search: String\n type: String\n type_in: [String!]\n tag: String\n tag_in: [String!]\n tag_and_in: [String!]\n id_in: [ID!]\n id: ID\n }\n\n type FmQuery {\n getFile(id: ID, where: JSON, sort: String): FileResponse\n\n listFiles(\n limit: Int\n after: String\n types: [String]\n tags: [String]\n ids: [ID]\n search: String\n where: FileWhereInput\n ): FileListResponse\n\n listTags: [String]\n\n # Get installed version\n version: String\n\n getSettings: FileManagerSettingsResponse\n }\n\n type FilesDeleteResponse {\n data: Boolean\n error: FileError\n }\n\n type FmMutation {\n createFile(data: FileInput!): FileResponse\n createFiles(data: [FileInput]!): CreateFilesResponse\n updateFile(id: ID!, data: FileInput!): FileResponse\n deleteFile(id: ID!): FilesDeleteResponse\n\n # Install File manager\n install(srcPrefix: String): FileManagerBooleanResponse\n\n upgrade(version: String!): FileManagerBooleanResponse\n\n updateSettings(data: FileManagerSettingsInput): FileManagerSettingsResponse\n }\n\n input FilesInstallInput {\n srcPrefix: String!\n }\n\n extend type Query {\n fileManager: FmQuery\n }\n\n extend type Mutation {\n fileManager: FmMutation\n }\n `,\n resolvers: {\n File: {\n async src(file, args, context: FileManagerContext) {\n const settings = await context.fileManager.settings.getSettings();\n return settings.srcPrefix + file.key;\n }\n },\n Query: {\n fileManager: emptyResolver\n },\n Mutation: {\n fileManager: emptyResolver\n },\n FmQuery: {\n getFile(_, args: { id: string }, context) {\n return resolve(() => context.fileManager.files.getFile(args.id));\n },\n async listFiles(_, args: FilesListOpts, context) {\n try {\n const [data, meta] = await context.fileManager.files.listFiles(args);\n return new ListResponse(data, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n async listTags(_, args, context) {\n try {\n return await context.fileManager.files.listTags(args || {});\n } catch (error) {\n return new ErrorResponse(error);\n }\n },\n async version(_, args, context) {\n const { i18nContent, tenancy, fileManager } = context;\n if (!tenancy.getCurrentTenant() || !i18nContent.getLocale()) {\n return null;\n }\n\n return await fileManager.system.getVersion();\n },\n async getSettings(_, args, context) {\n return resolve(() => context.fileManager.settings.getSettings());\n }\n },\n FmMutation: {\n async createFile(_, args: { data: FileInput }, context) {\n return resolve(() => context.fileManager.files.createFile(args.data));\n },\n async updateFile(_, args, context) {\n return resolve(() => context.fileManager.files.updateFile(args.id, args.data));\n },\n async createFiles(_, args, context) {\n return resolve(() => context.fileManager.files.createFilesInBatch(args.data));\n },\n async deleteFile(_, args, context) {\n return resolve(async () => {\n const file = await context.fileManager.files.getFile(args.id);\n return await context.fileManager.storage.delete({\n id: file.id,\n key: file.key\n });\n });\n },\n async install(_, args, context) {\n return resolve(() =>\n context.fileManager.system.install({ srcPrefix: args.srcPrefix })\n );\n },\n async upgrade(_, args, context) {\n return resolve(() => context.fileManager.system.upgrade(args.version));\n },\n async updateSettings(_, args: { data: Partial<FileManagerSettings> }, context) {\n return resolve(() => context.fileManager.settings.updateSettings(args.data));\n }\n }\n }\n }\n};\n\nexport default plugin;\n"],"file":"graphql.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/plugins/index.ts"],"names":["systemCRUD","settingsCRUD","filesCRUD","storage","graphql"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;eAEe,MAAM,CACjBA,eADiB,EAEjBC,iBAFiB,EAGjBC,cAHiB,EAIjBC,gBAJiB,EAKjBC,gBALiB,EAMjB,0BANiB,C","sourcesContent":["import graphql from \"./graphql\";\nimport filesCRUD from \"./crud/files.crud\";\nimport fileValidationPlugin from \"./crud/files/validation\";\nimport settingsCRUD from \"./crud/settings.crud\";\nimport systemCRUD from \"./crud/system.crud\";\nimport storage from \"./storage\";\n\nexport default () => [\n systemCRUD,\n settingsCRUD,\n filesCRUD,\n storage,\n graphql,\n fileValidationPlugin()\n];\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/plugins/storage/FileStorage.ts"],"names":["storagePluginType","FileStorage","constructor","context","storagePlugin","plugins","byType","pop","WebinyError","upload","args","settings","fileManager","getSettings","file","fileData","files","createFile","meta","private","Boolean","hideInFileManager","tags","Array","isArray","uploadFiles","promises","i","length","item","push","uploadFileResponses","Promise","all","filesData","map","response","createFilesInBatch","delete","id","key","deleteFile"],"mappings":";;;;;;;;;;;AACA;;;;;;AAmBA,MAAMA,iBAAiB,GAAG,0BAA1B;;AAEO,MAAMC,WAAN,CAAkB;AAIrBC,EAAAA,WAAW,CAAC;AAAEC,IAAAA;AAAF,GAAD,EAAc;AAAA;AAAA;AACrB,SAAKC,aAAL,GAAqBD,OAAO,CAACE,OAAR,CAAgBC,MAAhB,CAAuBN,iBAAvB,EAA0CO,GAA1C,EAArB;;AACA,QAAI,CAAC,KAAKH,aAAV,EAAyB;AACrB,YAAM,IAAII,cAAJ,CACD,2BAA0BR,iBAAkB,IAD3C,EAEF,sBAFE,CAAN;AAIH;;AACD,SAAKG,OAAL,GAAeA,OAAf;AACH;;AAEW,QAANM,MAAM,CAACC,IAAD,EAAwB;AAChC,UAAMC,QAAQ,GAAG,MAAM,KAAKR,OAAL,CAAaS,WAAb,CAAyBD,QAAzB,CAAkCE,WAAlC,EAAvB,CADgC,CAEhC;;AACA,UAAM;AAAEC,MAAAA,IAAI,EAAEC;AAAR,QAAqB,MAAM,KAAKX,aAAL,CAAmBK,MAAnB,iCAC1BC,IAD0B;AAE7BC,MAAAA;AAF6B,OAAjC;AAKA,UAAM;AAAEC,MAAAA;AAAF,QAAkB,KAAKT,OAA7B,CARgC,CAUhC;;AACA,WAAO,MAAMS,WAAW,CAACI,KAAZ,CAAkBC,UAAlB,iCACNF,QADM;AAETG,MAAAA,IAAI,EAAE;AAAEC,QAAAA,OAAO,EAAEC,OAAO,CAACV,IAAI,CAACW,iBAAN;AAAlB,OAFG;AAGTC,MAAAA,IAAI,EAAEC,KAAK,CAACC,OAAN,CAAcd,IAAI,CAACY,IAAnB,IAA2BZ,IAAI,CAACY,IAAhC,GAAuC;AAHpC,OAAb;AAKH;;AAEgB,QAAXG,WAAW,CAACf,IAAD,EAAO;AACpB,UAAMC,QAAQ,GAAG,MAAM,KAAKR,OAAL,CAAaS,WAAb,CAAyBD,QAAzB,CAAkCE,WAAlC,EAAvB,CADoB,CAEpB;;AACA,UAAMa,QAAQ,GAAG,EAAjB;;AACA,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGjB,IAAI,CAACM,KAAL,CAAWY,MAA/B,EAAuCD,CAAC,EAAxC,EAA4C;AACxC,YAAME,IAAI,GAAGnB,IAAI,CAACM,KAAL,CAAWW,CAAX,CAAb;AACAD,MAAAA,QAAQ,CAACI,IAAT,CACI,KAAK1B,aAAL,CAAmBK,MAAnB,iCACOoB,IADP;AAEIlB,QAAAA;AAFJ,SADJ;AAMH,KAZmB,CAapB;;;AACA,UAAMoB,mBAAmB,GAAG,MAAMC,OAAO,CAACC,GAAR,CAAYP,QAAZ,CAAlC;AAEA,UAAMQ,SAAS,GAAGH,mBAAmB,CAACI,GAApB,CAAwBC,QAAQ,IAAIA,QAAQ,CAACtB,IAA7C,CAAlB;AAEA,UAAM;AAAEF,MAAAA;AAAF,QAAkB,KAAKT,OAA7B,CAlBoB,CAmBpB;;AACA,WAAOS,WAAW,CAACI,KAAZ,CAAkBqB,kBAAlB,CAAqCH,SAArC,CAAP;AACH;;AAEW,QAANI,MAAM,CAAC5B,IAAD,EAAoC;AAC5C,UAAM;AAAE6B,MAAAA,EAAF;AAAMC,MAAAA;AAAN,QAAc9B,IAApB;AACA,UAAM;AAAEE,MAAAA;AAAF,QAAkB,KAAKT,OAA7B,CAF4C,CAG5C;;AACA,UAAM,KAAKC,aAAL,CAAmBkC,MAAnB,CAA0B;AAC5BE,MAAAA;AAD4B,KAA1B,CAAN,CAJ4C,CAO5C;;AACA,WAAO,MAAM5B,WAAW,CAACI,KAAZ,CAAkByB,UAAlB,CAA6BF,EAA7B,CAAb;AACH;;AAjEoB","sourcesContent":["import { FileManagerContext } from \"~/types\";\nimport WebinyError from \"@webiny/error\";\n\nexport type Args = {\n name: string;\n type: string;\n size: number;\n buffer: Buffer;\n keyPrefix?: string;\n hideInFileManager?: boolean;\n tags?: string[];\n};\n\nexport type Result = Record<string, any>;\n\nexport interface FileStoragePlugin {\n upload: (args: Args) => Promise<Result>;\n delete: (args: { key: string }) => Promise<void>;\n}\n\nconst storagePluginType = \"api-file-manager-storage\";\n\nexport class FileStorage {\n storagePlugin: FileStoragePlugin;\n context: FileManagerContext;\n\n constructor({ context }) {\n this.storagePlugin = context.plugins.byType(storagePluginType).pop();\n if (!this.storagePlugin) {\n throw new WebinyError(\n `Missing plugin of type \"${storagePluginType}\".`,\n \"STORAGE_PLUGIN_ERROR\"\n );\n }\n this.context = context;\n }\n\n async upload(args): Promise<Result> {\n const settings = await this.context.fileManager.settings.getSettings();\n // Add file to cloud storage.\n const { file: fileData } = await this.storagePlugin.upload({\n ...args,\n settings\n });\n\n const { fileManager } = this.context;\n\n // Save file in DB.\n return await fileManager.files.createFile({\n ...fileData,\n meta: { private: Boolean(args.hideInFileManager) },\n tags: Array.isArray(args.tags) ? args.tags : []\n });\n }\n\n async uploadFiles(args) {\n const settings = await this.context.fileManager.settings.getSettings();\n // Upload files to cloud storage.\n const promises = [];\n for (let i = 0; i < args.files.length; i++) {\n const item = args.files[i];\n promises.push(\n this.storagePlugin.upload({\n ...item,\n settings\n })\n );\n }\n // Wait for all to resolve.\n const uploadFileResponses = await Promise.all(promises);\n\n const filesData = uploadFileResponses.map(response => response.file);\n\n const { fileManager } = this.context;\n // Save files in DB.\n return fileManager.files.createFilesInBatch(filesData);\n }\n\n async delete(args: { id: string; key: string }) {\n const { id, key } = args;\n const { fileManager } = this.context;\n // Delete file from cloud storage.\n await this.storagePlugin.delete({\n key\n });\n // Delete file from the DB.\n return await fileManager.files.deleteFile(id);\n }\n}\n"],"file":"FileStorage.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/plugins/storage/index.ts"],"names":["fileStorageContextPlugin","ContextPlugin","context","fileManager","storage","FileStorage"],"mappings":";;;;;;;AACA;;AACA;;AAEA,MAAMA,wBAAwB,GAAG,IAAIC,4BAAJ,CAAsC,MAAMC,OAAN,IAAiB;AACpF,MAAI,CAACA,OAAO,CAACC,WAAb,EAA0B;AACtBD,IAAAA,OAAO,CAACC,WAAR,GAAsB,EAAtB;AACH;;AACDD,EAAAA,OAAO,CAACC,WAAR,CAAoBC,OAApB,GAA8B,IAAIC,wBAAJ,CAAgB;AAC1CH,IAAAA;AAD0C,GAAhB,CAA9B;AAGH,CAPgC,CAAjC;eASeF,wB","sourcesContent":["import { FileManagerContext } from \"~/types\";\nimport { ContextPlugin } from \"@webiny/handler/plugins/ContextPlugin\";\nimport { FileStorage } from \"./FileStorage\";\n\nconst fileStorageContextPlugin = new ContextPlugin<FileManagerContext>(async context => {\n if (!context.fileManager) {\n context.fileManager = {} as any;\n }\n context.fileManager.storage = new FileStorage({\n context\n });\n});\n\nexport default fileStorageContextPlugin;\n"],"file":"index.js"}
package/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"}
package/utils.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils.ts"],"names":["executeCallbacks","plugins","hook","args","plugin"],"mappings":";;;;;;;AAIO,MAAMA,gBAAgB,GAAG,OAG5BC,OAH4B,EAI5BC,IAJ4B,EAK5BC,IAL4B,KAM3B;AACD,OAAK,MAAMC,MAAX,IAAqBH,OAArB,EAA8B;AAC1B,QAAI,OAAOG,MAAM,CAACF,IAAD,CAAb,KAAwB,UAA5B,EAAwC;AACpC,YAAME,MAAM,CAACF,IAAD,CAAN,CAAaC,IAAb,CAAN;AACH;AACJ;AACJ,CAZM","sourcesContent":["import { Plugin } from \"@webiny/plugins/types\";\n\ntype CallbackFallback = (args: any) => void | Promise<void>;\n\nexport const executeCallbacks = async <\n TCallbackFunction extends CallbackFallback = CallbackFallback\n>(\n plugins: Plugin[],\n hook: string,\n args: Parameters<TCallbackFunction>[0]\n) => {\n for (const plugin of plugins) {\n if (typeof plugin[hook] === \"function\") {\n await plugin[hook](args);\n }\n }\n};\n"],"file":"utils.js"}