@webiny/api-file-manager 0.0.0-unstable.78f581c1d2 → 0.0.0-unstable.7f63ea0744

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 (67) hide show
  1. package/handlers/download/index.js +7 -26
  2. package/handlers/download/index.js.map +1 -1
  3. package/handlers/manage/index.js +0 -16
  4. package/handlers/manage/index.js.map +1 -1
  5. package/handlers/transform/index.js +6 -16
  6. package/handlers/transform/index.js.map +1 -1
  7. package/handlers/transform/loaders/imageLoader.js +0 -17
  8. package/handlers/transform/loaders/imageLoader.js.map +1 -1
  9. package/handlers/transform/loaders/index.js +0 -3
  10. package/handlers/transform/loaders/index.js.map +1 -1
  11. package/handlers/transform/loaders/sanitizeImageTransformations.js +0 -13
  12. package/handlers/transform/loaders/sanitizeImageTransformations.js.map +1 -1
  13. package/handlers/transform/managers/imageManager.js +6 -14
  14. package/handlers/transform/managers/imageManager.js.map +1 -1
  15. package/handlers/transform/managers/index.js +0 -3
  16. package/handlers/transform/managers/index.js.map +1 -1
  17. package/handlers/transform/optimizeImage.js +0 -6
  18. package/handlers/transform/optimizeImage.js.map +1 -1
  19. package/handlers/transform/transformImage.js +0 -5
  20. package/handlers/transform/transformImage.js.map +1 -1
  21. package/handlers/transform/utils.js +0 -10
  22. package/handlers/transform/utils.js.map +1 -1
  23. package/handlers/utils/getEnvironment.js +0 -2
  24. package/handlers/utils/getEnvironment.js.map +1 -1
  25. package/handlers/utils/getObjectParams.js +0 -4
  26. package/handlers/utils/getObjectParams.js.map +1 -1
  27. package/handlers/utils/index.js +0 -3
  28. package/handlers/utils/index.js.map +1 -1
  29. package/package.json +19 -19
  30. package/plugins/crud/files/validation.js +0 -6
  31. package/plugins/crud/files/validation.js.map +1 -1
  32. package/plugins/crud/files.crud.js +2 -61
  33. package/plugins/crud/files.crud.js.map +1 -1
  34. package/plugins/crud/settings.crud.js +1 -18
  35. package/plugins/crud/settings.crud.js.map +1 -1
  36. package/plugins/crud/system.crud.js +2 -32
  37. package/plugins/crud/system.crud.js.map +1 -1
  38. package/plugins/crud/utils/checkBasePermissions.js +0 -8
  39. package/plugins/crud/utils/checkBasePermissions.js.map +1 -1
  40. package/plugins/crud/utils/createFileModel.js +0 -12
  41. package/plugins/crud/utils/createFileModel.js.map +1 -1
  42. package/plugins/crud/utils/lifecycleEvents.js +4 -12
  43. package/plugins/crud/utils/lifecycleEvents.js.map +1 -1
  44. package/plugins/definitions/FilePhysicalStoragePlugin.js +0 -11
  45. package/plugins/definitions/FilePhysicalStoragePlugin.js.map +1 -1
  46. package/plugins/definitions/FilePlugin.js +0 -18
  47. package/plugins/definitions/FilePlugin.js.map +1 -1
  48. package/plugins/definitions/FileStorageTransformPlugin.js +1 -12
  49. package/plugins/definitions/FileStorageTransformPlugin.js.map +1 -1
  50. package/plugins/definitions/FilesStorageOperationsProviderPlugin.js +0 -5
  51. package/plugins/definitions/FilesStorageOperationsProviderPlugin.js.map +1 -1
  52. package/plugins/definitions/InstallationPlugin.js +0 -11
  53. package/plugins/definitions/InstallationPlugin.js.map +1 -1
  54. package/plugins/definitions/SettingsStorageOperationsProviderPlugin.js +0 -5
  55. package/plugins/definitions/SettingsStorageOperationsProviderPlugin.js.map +1 -1
  56. package/plugins/definitions/SystemStorageOperationsProviderPlugin.js +0 -5
  57. package/plugins/definitions/SystemStorageOperationsProviderPlugin.js.map +1 -1
  58. package/plugins/graphql.js +2 -22
  59. package/plugins/graphql.js.map +1 -1
  60. package/plugins/index.js +0 -9
  61. package/plugins/index.js.map +1 -1
  62. package/plugins/storage/FileStorage.js +14 -32
  63. package/plugins/storage/FileStorage.js.map +1 -1
  64. package/plugins/storage/index.js +0 -4
  65. package/plugins/storage/index.js.map +1 -1
  66. package/utils.js +0 -2
  67. package/utils.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["canProcess","params","key","extension","SUPPORTED_IMAGES","includes","startsWith","OPTIMIZED_IMAGE_PREFIX","OPTIMIZED_TRANSFORMED_IMAGE_PREFIX","process","s3","deleteObject","getObjectParams","getImageKey","promise","SUPPORTED_TRANSFORMABLE_IMAGES","env","getEnvironment","imagesList","listObjects","Bucket","bucket","Prefix","getOptimizedTransformedImageKeyPrefix","Contents","imageObject","Key"],"sources":["imageManager.ts"],"sourcesContent":["import S3 from \"aws-sdk/clients/s3\";\nimport { 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 interface ImageManagerCanProcessParams {\n key: string;\n extension: string;\n}\nexport interface ImageManagerProcessParams {\n s3: S3;\n key: string;\n extension: string;\n}\nexport default {\n canProcess: (params: ImageManagerCanProcessParams) => {\n const { key, extension } = params;\n if (SUPPORTED_IMAGES.includes(extension) === false) {\n return false;\n }\n\n // We only want to process original images, and delete all variations of it at once.\n // We DO NOT want to process the event for the deletion of an optimized/transformed image.\n // Unfortunately, there's no way to filter those events on the S3 bucket itself, so we have to do it this way.\n return !(\n key.startsWith(OPTIMIZED_IMAGE_PREFIX) ||\n key.startsWith(OPTIMIZED_TRANSFORMED_IMAGE_PREFIX)\n );\n },\n async process({ s3, key, extension }: ImageManagerProcessParams) {\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) === false) {\n return;\n }\n const env = getEnvironment();\n const imagesList = await s3\n .listObjects({\n Bucket: env.bucket,\n Prefix: getOptimizedTransformedImageKeyPrefix(key)\n })\n .promise();\n\n if (!imagesList.Contents) {\n return;\n }\n\n for (const imageObject of imagesList.Contents) {\n if (!imageObject.Key) {\n continue;\n }\n await s3.deleteObject(getObjectParams(imageObject.Key)).promise();\n }\n }\n};\n"],"mappings":";;;;;;;AACA;;AACA;;eAkBe;EACXA,UAAU,EAAGC,MAAD,IAA0C;IAClD,MAAM;MAAEC,GAAF;MAAOC;IAAP,IAAqBF,MAA3B;;IACA,IAAIG,wBAAA,CAAiBC,QAAjB,CAA0BF,SAA1B,MAAyC,KAA7C,EAAoD;MAChD,OAAO,KAAP;IACH,CAJiD,CAMlD;IACA;IACA;;;IACA,OAAO,EACHD,GAAG,CAACI,UAAJ,CAAeC,8BAAf,KACAL,GAAG,CAACI,UAAJ,CAAeE,0CAAf,CAFG,CAAP;EAIH,CAdU;;EAeX,MAAMC,OAAN,CAAc;IAAEC,EAAF;IAAMR,GAAN;IAAWC;EAAX,CAAd,EAAiE;IAC7D;IAEA,MAAMO,EAAE,CAACC,YAAH,CAAgB,IAAAC,sBAAA,EAAgB,IAAAC,mBAAA,EAAY;MAAEX;IAAF,CAAZ,CAAhB,CAAhB,EAAuDY,OAAvD,EAAN,CAH6D,CAK7D;;IACA,IAAIC,sCAAA,CAA+BV,QAA/B,CAAwCF,SAAxC,MAAuD,KAA3D,EAAkE;MAC9D;IACH;;IACD,MAAMa,GAAG,GAAG,IAAAC,qBAAA,GAAZ;IACA,MAAMC,UAAU,GAAG,MAAMR,EAAE,CACtBS,WADoB,CACR;MACTC,MAAM,EAAEJ,GAAG,CAACK,MADH;MAETC,MAAM,EAAE,IAAAC,6CAAA,EAAsCrB,GAAtC;IAFC,CADQ,EAKpBY,OALoB,EAAzB;;IAOA,IAAI,CAACI,UAAU,CAACM,QAAhB,EAA0B;MACtB;IACH;;IAED,KAAK,MAAMC,WAAX,IAA0BP,UAAU,CAACM,QAArC,EAA+C;MAC3C,IAAI,CAACC,WAAW,CAACC,GAAjB,EAAsB;QAClB;MACH;;MACD,MAAMhB,EAAE,CAACC,YAAH,CAAgB,IAAAC,sBAAA,EAAgBa,WAAW,CAACC,GAA5B,CAAhB,EAAkDZ,OAAlD,EAAN;IACH;EACJ;;AA1CU,C"}
1
+ {"version":3,"names":["canProcess","params","key","extension","SUPPORTED_IMAGES","includes","startsWith","OPTIMIZED_IMAGE_PREFIX","OPTIMIZED_TRANSFORMED_IMAGE_PREFIX","process","s3","deleteObject","getObjectParams","getImageKey","promise","SUPPORTED_TRANSFORMABLE_IMAGES","env","getEnvironment","imagesList","listObjects","Bucket","bucket","Prefix","getOptimizedTransformedImageKeyPrefix","Contents","imageObject","Key"],"sources":["imageManager.ts"],"sourcesContent":["import S3 from \"aws-sdk/clients/s3\";\nimport { 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 interface ImageManagerCanProcessParams {\n key: string;\n extension: string;\n}\nexport interface ImageManagerProcessParams {\n s3: S3;\n key: string;\n extension: string;\n}\nexport default {\n canProcess: (params: ImageManagerCanProcessParams) => {\n const { key, extension } = params;\n if (SUPPORTED_IMAGES.includes(extension) === false) {\n return false;\n }\n\n // We only want to process original images, and delete all variations of it at once.\n // We DO NOT want to process the event for the deletion of an optimized/transformed image.\n // Unfortunately, there's no way to filter those events on the S3 bucket itself, so we have to do it this way.\n return !(\n key.startsWith(OPTIMIZED_IMAGE_PREFIX) ||\n key.startsWith(OPTIMIZED_TRANSFORMED_IMAGE_PREFIX)\n );\n },\n async process({ s3, key, extension }: ImageManagerProcessParams) {\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) === false) {\n return;\n }\n const env = getEnvironment();\n const imagesList = await s3\n .listObjects({\n Bucket: env.bucket,\n Prefix: getOptimizedTransformedImageKeyPrefix(key)\n })\n .promise();\n\n if (!imagesList.Contents) {\n return;\n }\n\n for (const imageObject of imagesList.Contents) {\n if (!imageObject.Key) {\n continue;\n }\n await s3.deleteObject(getObjectParams(imageObject.Key)).promise();\n }\n }\n};\n"],"mappings":";;;;;;AACA;AACA;AAOkB,eAWH;EACXA,UAAU,EAAGC,MAAoC,IAAK;IAClD,MAAM;MAAEC,GAAG;MAAEC;IAAU,CAAC,GAAGF,MAAM;IACjC,IAAIG,wBAAgB,CAACC,QAAQ,CAACF,SAAS,CAAC,KAAK,KAAK,EAAE;MAChD,OAAO,KAAK;IAChB;;IAEA;IACA;IACA;IACA,OAAO,EACHD,GAAG,CAACI,UAAU,CAACC,8BAAsB,CAAC,IACtCL,GAAG,CAACI,UAAU,CAACE,0CAAkC,CAAC,CACrD;EACL,CAAC;EACD,MAAMC,OAAO,CAAC;IAAEC,EAAE;IAAER,GAAG;IAAEC;EAAqC,CAAC,EAAE;IAC7D;;IAEA,MAAMO,EAAE,CAACC,YAAY,CAAC,IAAAC,sBAAe,EAAC,IAAAC,mBAAW,EAAC;MAAEX;IAAI,CAAC,CAAC,CAAC,CAAC,CAACY,OAAO,EAAE;;IAEtE;IACA,IAAIC,sCAA8B,CAACV,QAAQ,CAACF,SAAS,CAAC,KAAK,KAAK,EAAE;MAC9D;IACJ;IACA,MAAMa,GAAG,GAAG,IAAAC,qBAAc,GAAE;IAC5B,MAAMC,UAAU,GAAG,MAAMR,EAAE,CACtBS,WAAW,CAAC;MACTC,MAAM,EAAEJ,GAAG,CAACK,MAAM;MAClBC,MAAM,EAAE,IAAAC,6CAAqC,EAACrB,GAAG;IACrD,CAAC,CAAC,CACDY,OAAO,EAAE;IAEd,IAAI,CAACI,UAAU,CAACM,QAAQ,EAAE;MACtB;IACJ;IAEA,KAAK,MAAMC,WAAW,IAAIP,UAAU,CAACM,QAAQ,EAAE;MAC3C,IAAI,CAACC,WAAW,CAACC,GAAG,EAAE;QAClB;MACJ;MACA,MAAMhB,EAAE,CAACC,YAAY,CAAC,IAAAC,sBAAe,EAACa,WAAW,CAACC,GAAG,CAAC,CAAC,CAACZ,OAAO,EAAE;IACrE;EACJ;AACJ,CAAC;AAAA"}
@@ -1,13 +1,10 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _imageManager = _interopRequireDefault(require("./imageManager"));
11
-
12
9
  var _default = [_imageManager.default];
13
10
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["imageManager"],"sources":["index.ts"],"sourcesContent":["import imageManager from \"./imageManager\";\n\nexport default [imageManager];\n"],"mappings":";;;;;;;;;AAAA;;eAEe,CAACA,qBAAD,C"}
1
+ {"version":3,"names":["imageManager"],"sources":["index.ts"],"sourcesContent":["import imageManager from \"./imageManager\";\n\nexport default [imageManager];\n"],"mappings":";;;;;;;AAAA;AAA0C,eAE3B,CAACA,qBAAY,CAAC;AAAA"}
@@ -1,14 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _sharp = _interopRequireDefault(require("sharp"));
11
-
12
9
  /**
13
10
  * Sharp is included in the AWS Lambda layer
14
11
  */
@@ -27,7 +24,6 @@ var _default = async (buffer, type) => {
27
24
  force: true
28
25
  }).withMetadata().toBuffer();
29
26
  }
30
-
31
27
  case "image/jpeg":
32
28
  case "image/jpg":
33
29
  {
@@ -39,10 +35,8 @@ var _default = async (buffer, type) => {
39
35
  quality: 90
40
36
  }).toBuffer();
41
37
  }
42
-
43
38
  default:
44
39
  return buffer;
45
40
  }
46
41
  };
47
-
48
42
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["buffer","type","sharp","resize","width","withoutEnlargement","fit","png","compressionLevel","adaptiveFiltering","force","withMetadata","toBuffer","toFormat","quality"],"sources":["optimizeImage.ts"],"sourcesContent":["/**\n * Sharp is included in the AWS Lambda layer\n */\n// @ts-ignore\nimport sharp from \"sharp\";\nimport { Body } from \"aws-sdk/clients/s3\";\n\nexport default async (buffer: Body, type: string): Promise<Body> => {\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"],"mappings":";;;;;;;;;AAIA;;AAJA;AACA;AACA;AACA;eAIe,OAAOA,MAAP,EAAqBC,IAArB,KAAqD;EAChE,QAAQA,IAAR;IACI,KAAK,WAAL;MAAkB;QACd,OAAO,MAAM,IAAAC,cAAA,EAAMF,MAAN,EACRG,MADQ,CACD;UAAEC,KAAK,EAAE,IAAT;UAAeC,kBAAkB,EAAE,IAAnC;UAAyCC,GAAG,EAAE;QAA9C,CADC,EAERC,GAFQ,CAEJ;UAAEC,gBAAgB,EAAE,CAApB;UAAuBC,iBAAiB,EAAE,IAA1C;UAAgDC,KAAK,EAAE;QAAvD,CAFI,EAGRC,YAHQ,GAIRC,QAJQ,EAAb;MAKH;;IACD,KAAK,YAAL;IACA,KAAK,WAAL;MAAkB;QACd,OAAO,MAAM,IAAAV,cAAA,EAAMF,MAAN,EACRG,MADQ,CACD;UAAEC,KAAK,EAAE,IAAT;UAAeC,kBAAkB,EAAE,IAAnC;UAAyCC,GAAG,EAAE;QAA9C,CADC,EAERO,QAFQ,CAEC,MAFD,EAES;UAAEC,OAAO,EAAE;QAAX,CAFT,EAGRF,QAHQ,EAAb;MAIH;;IACD;MACI,OAAOZ,MAAP;EAhBR;AAkBH,C"}
1
+ {"version":3,"names":["buffer","type","sharp","resize","width","withoutEnlargement","fit","png","compressionLevel","adaptiveFiltering","force","withMetadata","toBuffer","toFormat","quality"],"sources":["optimizeImage.ts"],"sourcesContent":["/**\n * Sharp is included in the AWS Lambda layer\n */\n// @ts-ignore\nimport sharp from \"sharp\";\nimport { Body } from \"aws-sdk/clients/s3\";\n\nexport default async (buffer: Body, type: string): Promise<Body> => {\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"],"mappings":";;;;;;;AAIA;AAJA;AACA;AACA;AACA;AAAA,eAIe,OAAOA,MAAY,EAAEC,IAAY,KAAoB;EAChE,QAAQA,IAAI;IACR,KAAK,WAAW;MAAE;QACd,OAAO,MAAM,IAAAC,cAAK,EAACF,MAAM,CAAC,CACrBG,MAAM,CAAC;UAAEC,KAAK,EAAE,IAAI;UAAEC,kBAAkB,EAAE,IAAI;UAAEC,GAAG,EAAE;QAAS,CAAC,CAAC,CAChEC,GAAG,CAAC;UAAEC,gBAAgB,EAAE,CAAC;UAAEC,iBAAiB,EAAE,IAAI;UAAEC,KAAK,EAAE;QAAK,CAAC,CAAC,CAClEC,YAAY,EAAE,CACdC,QAAQ,EAAE;MACnB;IACA,KAAK,YAAY;IACjB,KAAK,WAAW;MAAE;QACd,OAAO,MAAM,IAAAV,cAAK,EAACF,MAAM,CAAC,CACrBG,MAAM,CAAC;UAAEC,KAAK,EAAE,IAAI;UAAEC,kBAAkB,EAAE,IAAI;UAAEC,GAAG,EAAE;QAAS,CAAC,CAAC,CAChEO,QAAQ,CAAC,MAAM,EAAE;UAAEC,OAAO,EAAE;QAAG,CAAC,CAAC,CACjCF,QAAQ,EAAE;MACnB;IACA;MACI,OAAOZ,MAAM;EAAC;AAE1B,CAAC;AAAA"}
@@ -1,19 +1,15 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _sharp = _interopRequireDefault(require("sharp"));
11
-
12
9
  /**
13
10
  * Sharp is included in the AWS Lambda layer
14
11
  */
15
12
  // @ts-ignore
16
-
17
13
  /**
18
14
  * Only processing "width" at the moment.
19
15
  * Check "sanitizeImageTransformations.js" to allow additional image processing transformations.
@@ -26,5 +22,4 @@ var _default = async (buffer, transformations) => {
26
22
  width
27
23
  }).toBuffer();
28
24
  };
29
-
30
25
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["buffer","transformations","width","sharp","resize","toBuffer"],"sources":["transformImage.ts"],"sourcesContent":["/**\n * Sharp is included in the AWS Lambda layer\n */\n// @ts-ignore\nimport sharp from \"sharp\";\nimport { Body } from \"aws-sdk/clients/s3\";\n\ninterface Transformation {\n width: string;\n}\n/**\n * Only processing \"width\" at the moment.\n * Check \"sanitizeImageTransformations.js\" to allow additional image processing transformations.\n */\nexport default async (buffer: Body, transformations: Transformation): Promise<Body> => {\n const { width } = transformations;\n return await sharp(buffer).resize({ width }).toBuffer();\n};\n"],"mappings":";;;;;;;;;AAIA;;AAJA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;eACe,OAAOA,MAAP,EAAqBC,eAArB,KAAwE;EACnF,MAAM;IAAEC;EAAF,IAAYD,eAAlB;EACA,OAAO,MAAM,IAAAE,cAAA,EAAMH,MAAN,EAAcI,MAAd,CAAqB;IAAEF;EAAF,CAArB,EAAgCG,QAAhC,EAAb;AACH,C"}
1
+ {"version":3,"names":["buffer","transformations","width","sharp","resize","toBuffer"],"sources":["transformImage.ts"],"sourcesContent":["/**\n * Sharp is included in the AWS Lambda layer\n */\n// @ts-ignore\nimport sharp from \"sharp\";\nimport { Body } from \"aws-sdk/clients/s3\";\n\ninterface Transformation {\n width: string;\n}\n/**\n * Only processing \"width\" at the moment.\n * Check \"sanitizeImageTransformations.js\" to allow additional image processing transformations.\n */\nexport default async (buffer: Body, transformations: Transformation): Promise<Body> => {\n const { width } = transformations;\n return await sharp(buffer).resize({ width }).toBuffer();\n};\n"],"mappings":";;;;;;;AAIA;AAJA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AAHA,eAIe,OAAOA,MAAY,EAAEC,eAA+B,KAAoB;EACnF,MAAM;IAAEC;EAAM,CAAC,GAAGD,eAAe;EACjC,OAAO,MAAM,IAAAE,cAAK,EAACH,MAAM,CAAC,CAACI,MAAM,CAAC;IAAEF;EAAM,CAAC,CAAC,CAACG,QAAQ,EAAE;AAC3D,CAAC;AAAA"}
@@ -1,14 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.getOptimizedTransformedImageKeyPrefix = exports.getOptimizedImageKeyPrefix = exports.getImageKey = exports.SUPPORTED_TRANSFORMABLE_IMAGES = exports.SUPPORTED_IMAGES = exports.OPTIMIZED_TRANSFORMED_IMAGE_PREFIX = exports.OPTIMIZED_IMAGE_PREFIX = void 0;
9
-
10
8
  var _objectHash = _interopRequireDefault(require("object-hash"));
11
-
12
9
  const SUPPORTED_IMAGES = [".jpg", ".jpeg", ".png", ".svg", ".gif"];
13
10
  exports.SUPPORTED_IMAGES = SUPPORTED_IMAGES;
14
11
  const SUPPORTED_TRANSFORMABLE_IMAGES = [".jpg", ".jpeg", ".png"];
@@ -17,19 +14,14 @@ const OPTIMIZED_TRANSFORMED_IMAGE_PREFIX = "img-o-t-";
17
14
  exports.OPTIMIZED_TRANSFORMED_IMAGE_PREFIX = OPTIMIZED_TRANSFORMED_IMAGE_PREFIX;
18
15
  const OPTIMIZED_IMAGE_PREFIX = "img-o-";
19
16
  exports.OPTIMIZED_IMAGE_PREFIX = OPTIMIZED_IMAGE_PREFIX;
20
-
21
17
  const getOptimizedImageKeyPrefix = key => {
22
18
  return `${OPTIMIZED_IMAGE_PREFIX}${(0, _objectHash.default)(key)}-`;
23
19
  };
24
-
25
20
  exports.getOptimizedImageKeyPrefix = getOptimizedImageKeyPrefix;
26
-
27
21
  const getOptimizedTransformedImageKeyPrefix = key => {
28
22
  return `${OPTIMIZED_TRANSFORMED_IMAGE_PREFIX}${(0, _objectHash.default)(key)}-`;
29
23
  };
30
-
31
24
  exports.getOptimizedTransformedImageKeyPrefix = getOptimizedTransformedImageKeyPrefix;
32
-
33
25
  const getImageKey = ({
34
26
  key,
35
27
  transformations
@@ -38,9 +30,7 @@ const getImageKey = ({
38
30
  const prefix = getOptimizedImageKeyPrefix(key);
39
31
  return prefix + key;
40
32
  }
41
-
42
33
  const prefix = getOptimizedTransformedImageKeyPrefix(key);
43
34
  return `${prefix}${(0, _objectHash.default)(transformations)}-${key}`;
44
35
  };
45
-
46
36
  exports.getImageKey = getImageKey;
@@ -1 +1 @@
1
- {"version":3,"names":["SUPPORTED_IMAGES","SUPPORTED_TRANSFORMABLE_IMAGES","OPTIMIZED_TRANSFORMED_IMAGE_PREFIX","OPTIMIZED_IMAGE_PREFIX","getOptimizedImageKeyPrefix","key","objectHash","getOptimizedTransformedImageKeyPrefix","getImageKey","transformations","prefix"],"sources":["utils.ts"],"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: string): string => {\n return `${OPTIMIZED_IMAGE_PREFIX}${objectHash(key)}-`;\n};\n\nconst getOptimizedTransformedImageKeyPrefix = (key: string): string => {\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): string => {\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"],"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,GAAIC,GAAD,IAAyB;EACxD,OAAQ,GAAEF,sBAAuB,GAAE,IAAAG,mBAAA,EAAWD,GAAX,CAAgB,GAAnD;AACH,CAFD;;;;AAIA,MAAME,qCAAqC,GAAIF,GAAD,IAAyB;EACnE,OAAQ,GAAEH,kCAAmC,GAAE,IAAAI,mBAAA,EAAWD,GAAX,CAAgB,GAA/D;AACH,CAFD;;;;AASA,MAAMG,WAAW,GAAG,CAAC;EAAEH,GAAF;EAAOI;AAAP,CAAD,KAAyD;EACzE,IAAI,CAACA,eAAL,EAAsB;IAClB,MAAMC,MAAM,GAAGN,0BAA0B,CAACC,GAAD,CAAzC;IACA,OAAOK,MAAM,GAAGL,GAAhB;EACH;;EAED,MAAMK,MAAM,GAAGH,qCAAqC,CAACF,GAAD,CAApD;EACA,OAAQ,GAAEK,MAAO,GAAE,IAAAJ,mBAAA,EAAWG,eAAX,CAA4B,IAAGJ,GAAI,EAAtD;AACH,CARD"}
1
+ {"version":3,"names":["SUPPORTED_IMAGES","SUPPORTED_TRANSFORMABLE_IMAGES","OPTIMIZED_TRANSFORMED_IMAGE_PREFIX","OPTIMIZED_IMAGE_PREFIX","getOptimizedImageKeyPrefix","key","objectHash","getOptimizedTransformedImageKeyPrefix","getImageKey","transformations","prefix"],"sources":["utils.ts"],"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: string): string => {\n return `${OPTIMIZED_IMAGE_PREFIX}${objectHash(key)}-`;\n};\n\nconst getOptimizedTransformedImageKeyPrefix = (key: string): string => {\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): string => {\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"],"mappings":";;;;;;;AAAA;AAEA,MAAMA,gBAAgB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AAAC;AACnE,MAAMC,8BAA8B,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;AAAC;AAEjE,MAAMC,kCAAkC,GAAG,UAAU;AAAC;AACtD,MAAMC,sBAAsB,GAAG,QAAQ;AAAC;AAExC,MAAMC,0BAA0B,GAAIC,GAAW,IAAa;EACxD,OAAQ,GAAEF,sBAAuB,GAAE,IAAAG,mBAAU,EAACD,GAAG,CAAE,GAAE;AACzD,CAAC;AAAC;AAEF,MAAME,qCAAqC,GAAIF,GAAW,IAAa;EACnE,OAAQ,GAAEH,kCAAmC,GAAE,IAAAI,mBAAU,EAACD,GAAG,CAAE,GAAE;AACrE,CAAC;AAAC;AAOF,MAAMG,WAAW,GAAG,CAAC;EAAEH,GAAG;EAAEI;AAAmC,CAAC,KAAa;EACzE,IAAI,CAACA,eAAe,EAAE;IAClB,MAAMC,MAAM,GAAGN,0BAA0B,CAACC,GAAG,CAAC;IAC9C,OAAOK,MAAM,GAAGL,GAAG;EACvB;EAEA,MAAMK,MAAM,GAAGH,qCAAqC,CAACF,GAAG,CAAC;EACzD,OAAQ,GAAEK,MAAO,GAAE,IAAAJ,mBAAU,EAACG,eAAe,CAAE,IAAGJ,GAAI,EAAC;AAC3D,CAAC;AAAC"}
@@ -4,10 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _default = () => ({
9
8
  bucket: process.env.S3_BUCKET,
10
9
  region: process.env.AWS_REGION
11
10
  });
12
-
13
11
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["bucket","process","env","S3_BUCKET","region","AWS_REGION"],"sources":["getEnvironment.ts"],"sourcesContent":["export default () => ({\n bucket: process.env.S3_BUCKET as string,\n region: process.env.AWS_REGION as string\n});\n"],"mappings":";;;;;;;eAAe,OAAO;EAClBA,MAAM,EAAEC,OAAO,CAACC,GAAR,CAAYC,SADF;EAElBC,MAAM,EAAEH,OAAO,CAACC,GAAR,CAAYG;AAFF,CAAP,C"}
1
+ {"version":3,"names":["bucket","process","env","S3_BUCKET","region","AWS_REGION"],"sources":["getEnvironment.ts"],"sourcesContent":["export default () => ({\n bucket: process.env.S3_BUCKET as string,\n region: process.env.AWS_REGION as string\n});\n"],"mappings":";;;;;;eAAe,OAAO;EAClBA,MAAM,EAAEC,OAAO,CAACC,GAAG,CAACC,SAAmB;EACvCC,MAAM,EAAEH,OAAO,CAACC,GAAG,CAACG;AACxB,CAAC,CAAC;AAAA"}
@@ -1,14 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _getEnvironment = _interopRequireDefault(require("./getEnvironment"));
11
-
12
9
  /**
13
10
  * Returns website's Bucket and file's Key values.
14
11
  */
@@ -21,5 +18,4 @@ var _default = filename => {
21
18
  Key: `${filename}`
22
19
  };
23
20
  };
24
-
25
21
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["filename","bucket","Bucket","getEnvironment","Key"],"sources":["getObjectParams.ts"],"sourcesContent":["import getEnvironment from \"./getEnvironment\";\n\nexport interface ObjectParamsResponse {\n Bucket: string;\n Key: string;\n}\n/**\n * Returns website's Bucket and file's Key values.\n */\nexport default (filename: string): ObjectParamsResponse => {\n const { bucket: Bucket } = getEnvironment();\n\n return {\n Bucket,\n Key: `${filename}`\n };\n};\n"],"mappings":";;;;;;;;;AAAA;;AAMA;AACA;AACA;eACgBA,QAAD,IAA4C;EACvD,MAAM;IAAEC,MAAM,EAAEC;EAAV,IAAqB,IAAAC,uBAAA,GAA3B;EAEA,OAAO;IACHD,MADG;IAEHE,GAAG,EAAG,GAAEJ,QAAS;EAFd,CAAP;AAIH,C"}
1
+ {"version":3,"names":["filename","bucket","Bucket","getEnvironment","Key"],"sources":["getObjectParams.ts"],"sourcesContent":["import getEnvironment from \"./getEnvironment\";\n\nexport interface ObjectParamsResponse {\n Bucket: string;\n Key: string;\n}\n/**\n * Returns website's Bucket and file's Key values.\n */\nexport default (filename: string): ObjectParamsResponse => {\n const { bucket: Bucket } = getEnvironment();\n\n return {\n Bucket,\n Key: `${filename}`\n };\n};\n"],"mappings":";;;;;;;AAAA;AAMA;AACA;AACA;AAFA,eAGgBA,QAAgB,IAA2B;EACvD,MAAM;IAAEC,MAAM,EAAEC;EAAO,CAAC,GAAG,IAAAC,uBAAc,GAAE;EAE3C,OAAO;IACHD,MAAM;IACNE,GAAG,EAAG,GAAEJ,QAAS;EACrB,CAAC;AACL,CAAC;AAAA"}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
@@ -17,7 +16,5 @@ Object.defineProperty(exports, "getObjectParams", {
17
16
  return _getObjectParams.default;
18
17
  }
19
18
  });
20
-
21
19
  var _getEnvironment = _interopRequireDefault(require("./getEnvironment"));
22
-
23
20
  var _getObjectParams = _interopRequireDefault(require("./getObjectParams"));
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { default as getEnvironment } from \"./getEnvironment\";\nexport { default as getObjectParams } from \"./getObjectParams\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;AACA"}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { default as getEnvironment } from \"./getEnvironment\";\nexport { default as getObjectParams } from \"./getObjectParams\";\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AACA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-file-manager",
3
- "version": "0.0.0-unstable.78f581c1d2",
3
+ "version": "0.0.0-unstable.7f63ea0744",
4
4
  "main": "index.js",
5
5
  "keywords": [
6
6
  "fm:base"
@@ -18,21 +18,21 @@
18
18
  ],
19
19
  "license": "MIT",
20
20
  "dependencies": {
21
- "@babel/runtime": "7.19.0",
21
+ "@babel/runtime": "7.20.13",
22
22
  "@commodo/fields": "1.1.2-beta.20",
23
- "@webiny/api": "0.0.0-unstable.78f581c1d2",
24
- "@webiny/api-security": "0.0.0-unstable.78f581c1d2",
25
- "@webiny/api-tenancy": "0.0.0-unstable.78f581c1d2",
26
- "@webiny/api-upgrade": "0.0.0-unstable.78f581c1d2",
27
- "@webiny/error": "0.0.0-unstable.78f581c1d2",
28
- "@webiny/handler": "0.0.0-unstable.78f581c1d2",
29
- "@webiny/handler-aws": "0.0.0-unstable.78f581c1d2",
30
- "@webiny/handler-client": "0.0.0-unstable.78f581c1d2",
31
- "@webiny/handler-graphql": "0.0.0-unstable.78f581c1d2",
32
- "@webiny/plugins": "0.0.0-unstable.78f581c1d2",
33
- "@webiny/project-utils": "0.0.0-unstable.78f581c1d2",
34
- "@webiny/validation": "0.0.0-unstable.78f581c1d2",
35
- "aws-sdk": "2.1230.0",
23
+ "@webiny/api": "0.0.0-unstable.7f63ea0744",
24
+ "@webiny/api-security": "0.0.0-unstable.7f63ea0744",
25
+ "@webiny/api-tenancy": "0.0.0-unstable.7f63ea0744",
26
+ "@webiny/api-upgrade": "0.0.0-unstable.7f63ea0744",
27
+ "@webiny/error": "0.0.0-unstable.7f63ea0744",
28
+ "@webiny/handler": "0.0.0-unstable.7f63ea0744",
29
+ "@webiny/handler-aws": "0.0.0-unstable.7f63ea0744",
30
+ "@webiny/handler-client": "0.0.0-unstable.7f63ea0744",
31
+ "@webiny/handler-graphql": "0.0.0-unstable.7f63ea0744",
32
+ "@webiny/plugins": "0.0.0-unstable.7f63ea0744",
33
+ "@webiny/project-utils": "0.0.0-unstable.7f63ea0744",
34
+ "@webiny/validation": "0.0.0-unstable.7f63ea0744",
35
+ "aws-sdk": "2.1310.0",
36
36
  "commodo-fields-object": "1.0.6",
37
37
  "mdbid": "1.0.0",
38
38
  "object-hash": "2.2.0",
@@ -45,9 +45,9 @@
45
45
  "@babel/plugin-transform-runtime": "^7.16.4",
46
46
  "@babel/preset-env": "^7.19.4",
47
47
  "@babel/preset-typescript": "^7.18.6",
48
- "@webiny/api-i18n": "^0.0.0-unstable.78f581c1d2",
49
- "@webiny/api-i18n-ddb": "^0.0.0-unstable.78f581c1d2",
50
- "@webiny/cli": "^0.0.0-unstable.78f581c1d2",
48
+ "@webiny/api-i18n": "^0.0.0-unstable.7f63ea0744",
49
+ "@webiny/api-i18n-ddb": "^0.0.0-unstable.7f63ea0744",
50
+ "@webiny/cli": "^0.0.0-unstable.7f63ea0744",
51
51
  "jest": "^28.1.0",
52
52
  "rimraf": "^3.0.2",
53
53
  "ttypescript": "^1.5.12",
@@ -72,5 +72,5 @@
72
72
  ]
73
73
  }
74
74
  },
75
- "gitHead": "78f581c1d2e5e6936aa11b9452a66d2a3652a1b2"
75
+ "gitHead": "7f63ea0744c9e31977e5dabb95538d22b4db585c"
76
76
  }
@@ -1,16 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _FilePlugin = require("../../definitions/FilePlugin");
11
-
12
9
  var _createFileModel = _interopRequireDefault(require("../utils/createFileModel"));
13
-
14
10
  var _default = () => [new _FilePlugin.FilePlugin({
15
11
  beforeCreate: async ({
16
12
  data
@@ -30,12 +26,10 @@ var _default = () => [new _FilePlugin.FilePlugin({
30
26
  data
31
27
  }) => {
32
28
  const FileModel = (0, _createFileModel.default)();
33
-
34
29
  for (const input of data) {
35
30
  const fileInstance = new FileModel().populate(input);
36
31
  await fileInstance.validate();
37
32
  }
38
33
  }
39
34
  })];
40
-
41
35
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["FilePlugin","beforeCreate","data","FileModel","createFileModel","fileData","populate","validate","beforeUpdate","updatedFileData","beforeBatchCreate","input","fileInstance"],"sources":["validation.ts"],"sourcesContent":["import { FilePlugin } from \"~/plugins/definitions/FilePlugin\";\nimport createFileModel from \"~/plugins/crud/utils/createFileModel\";\n\nexport default (): FilePlugin[] => [\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"],"mappings":";;;;;;;;;AAAA;;AACA;;eAEe,MAAoB,CAC/B,IAAIA,sBAAJ,CAAe;EACXC,YAAY,EAAE,OAAO;IAAEC;EAAF,CAAP,KAAoB;IAC9B,MAAMC,SAAS,GAAG,IAAAC,wBAAA,GAAlB;IACA,MAAMC,QAAQ,GAAG,IAAIF,SAAJ,GAAgBG,QAAhB,CAAyBJ,IAAzB,CAAjB;IACA,MAAMG,QAAQ,CAACE,QAAT,EAAN;EACH,CALU;EAMXC,YAAY,EAAE,OAAO;IAAEN;EAAF,CAAP,KAAoB;IAC9B,MAAMC,SAAS,GAAG,IAAAC,wBAAA,EAAgB,KAAhB,CAAlB;IACA,MAAMK,eAAe,GAAG,IAAIN,SAAJ,GAAgBG,QAAhB,CAAyBJ,IAAzB,CAAxB;IACA,MAAMO,eAAe,CAACF,QAAhB,EAAN;EACH,CAVU;EAWXG,iBAAiB,EAAE,OAAO;IAAER;EAAF,CAAP,KAAoB;IACnC,MAAMC,SAAS,GAAG,IAAAC,wBAAA,GAAlB;;IACA,KAAK,MAAMO,KAAX,IAAoBT,IAApB,EAA0B;MACtB,MAAMU,YAAY,GAAG,IAAIT,SAAJ,GAAgBG,QAAhB,CAAyBK,KAAzB,CAArB;MACA,MAAMC,YAAY,CAACL,QAAb,EAAN;IACH;EACJ;AAjBU,CAAf,CAD+B,C"}
1
+ {"version":3,"names":["FilePlugin","beforeCreate","data","FileModel","createFileModel","fileData","populate","validate","beforeUpdate","updatedFileData","beforeBatchCreate","input","fileInstance"],"sources":["validation.ts"],"sourcesContent":["import { FilePlugin } from \"~/plugins/definitions/FilePlugin\";\nimport createFileModel from \"~/plugins/crud/utils/createFileModel\";\n\nexport default (): FilePlugin[] => [\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"],"mappings":";;;;;;;AAAA;AACA;AAAmE,eAEpD,MAAoB,CAC/B,IAAIA,sBAAU,CAAC;EACXC,YAAY,EAAE,OAAO;IAAEC;EAAK,CAAC,KAAK;IAC9B,MAAMC,SAAS,GAAG,IAAAC,wBAAe,GAAE;IACnC,MAAMC,QAAQ,GAAG,IAAIF,SAAS,EAAE,CAACG,QAAQ,CAACJ,IAAI,CAAC;IAC/C,MAAMG,QAAQ,CAACE,QAAQ,EAAE;EAC7B,CAAC;EACDC,YAAY,EAAE,OAAO;IAAEN;EAAK,CAAC,KAAK;IAC9B,MAAMC,SAAS,GAAG,IAAAC,wBAAe,EAAC,KAAK,CAAC;IACxC,MAAMK,eAAe,GAAG,IAAIN,SAAS,EAAE,CAACG,QAAQ,CAACJ,IAAI,CAAC;IACtD,MAAMO,eAAe,CAACF,QAAQ,EAAE;EACpC,CAAC;EACDG,iBAAiB,EAAE,OAAO;IAAER;EAAK,CAAC,KAAK;IACnC,MAAMC,SAAS,GAAG,IAAAC,wBAAe,GAAE;IACnC,KAAK,MAAMO,KAAK,IAAIT,IAAI,EAAE;MACtB,MAAMU,YAAY,GAAG,IAAIT,SAAS,EAAE,CAACG,QAAQ,CAACK,KAAK,CAAC;MACpD,MAAMC,YAAY,CAACL,QAAQ,EAAE;IACjC;EACJ;AACJ,CAAC,CAAC,CACL;AAAA"}
@@ -1,87 +1,65 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
9
  var _mdbid = _interopRequireDefault(require("mdbid"));
13
-
14
10
  var _handlerGraphql = require("@webiny/handler-graphql");
15
-
16
11
  var _apiSecurity = require("@webiny/api-security");
17
-
18
12
  var _checkBasePermissions = _interopRequireDefault(require("./utils/checkBasePermissions"));
19
-
20
13
  var _api = require("@webiny/api");
21
-
22
14
  var _FilePlugin = require("../definitions/FilePlugin");
23
-
24
15
  var _FilesStorageOperationsProviderPlugin = require("../definitions/FilesStorageOperationsProviderPlugin");
25
-
26
16
  var _error = _interopRequireDefault(require("@webiny/error"));
27
-
28
17
  var _lifecycleEvents = require("./utils/lifecycleEvents");
29
-
30
18
  /**
31
19
  * Package mdbid does not have types.
32
20
  */
33
21
  // @ts-ignore
22
+
34
23
  const BATCH_CREATE_MAX_FILES = 20;
24
+
35
25
  /**
36
26
  * If permission is limited to "own" files only, check that current identity owns the file.
37
27
  */
38
-
39
28
  const checkOwnership = (file, permission, context) => {
40
29
  if ((permission === null || permission === void 0 ? void 0 : permission.own) === true) {
41
30
  const identity = context.security.getIdentity();
42
-
43
31
  if (file.createdBy.id !== identity.id) {
44
32
  throw new _apiSecurity.NotAuthorizedError();
45
33
  }
46
34
  }
47
35
  };
48
-
49
36
  const getLocaleCode = context => {
50
37
  if (!context.i18n) {
51
38
  throw new _error.default("Missing i18n on the FileManagerContext.", "MISSING_I18N");
52
39
  }
53
-
54
40
  const locale = context.i18n.getContentLocale();
55
-
56
41
  if (!locale) {
57
42
  throw new _error.default("Missing content locale on the FileManagerContext.", "MISSING_I18N_CONTENT_LOCALE");
58
43
  }
59
-
60
44
  if (!locale.code) {
61
45
  throw new _error.default("Missing content locale code on the FileManagerContext.", "MISSING_I18N_CONTENT_LOCALE_CODE");
62
46
  }
63
-
64
47
  return locale.code;
65
48
  };
66
-
67
49
  const filesContextCrudPlugin = new _api.ContextPlugin(async context => {
68
50
  const pluginType = _FilesStorageOperationsProviderPlugin.FilesStorageOperationsProviderPlugin.type;
69
51
  const providerPlugin = context.plugins.byType(pluginType).find(() => true);
70
-
71
52
  if (!providerPlugin) {
72
53
  throw new _error.default(`Missing "${pluginType}" plugin.`, "PLUGIN_NOT_FOUND", {
73
54
  type: pluginType
74
55
  });
75
56
  }
76
-
77
57
  const storageOperations = await providerPlugin.provide({
78
58
  context
79
59
  });
80
-
81
60
  if (!context.fileManager) {
82
61
  context.fileManager = {};
83
62
  }
84
-
85
63
  const filePlugins = context.plugins.byType(_FilePlugin.FilePlugin.type);
86
64
  context.fileManager.files = {
87
65
  async getFile(id) {
@@ -95,15 +73,12 @@ const filesContextCrudPlugin = new _api.ContextPlugin(async context => {
95
73
  locale: getLocaleCode(context)
96
74
  }
97
75
  });
98
-
99
76
  if (!file) {
100
77
  throw new _handlerGraphql.NotFoundError(`File with id "${id}" does not exists.`);
101
78
  }
102
-
103
79
  checkOwnership(file, permission, context);
104
80
  return file;
105
81
  },
106
-
107
82
  async createFile(input) {
108
83
  await (0, _checkBasePermissions.default)(context, {
109
84
  rwd: "w"
@@ -127,7 +102,6 @@ const filesContextCrudPlugin = new _api.ContextPlugin(async context => {
127
102
  locale: getLocaleCode(context),
128
103
  webinyVersion: context.WEBINY_VERSION
129
104
  });
130
-
131
105
  try {
132
106
  await (0, _lifecycleEvents.runLifecycleEvent)("beforeCreate", {
133
107
  context,
@@ -150,7 +124,6 @@ const filesContextCrudPlugin = new _api.ContextPlugin(async context => {
150
124
  }));
151
125
  }
152
126
  },
153
-
154
127
  async updateFile(id, input) {
155
128
  const permission = await (0, _checkBasePermissions.default)(context, {
156
129
  rwd: "w"
@@ -162,18 +135,15 @@ const filesContextCrudPlugin = new _api.ContextPlugin(async context => {
162
135
  locale: getLocaleCode(context)
163
136
  }
164
137
  });
165
-
166
138
  if (!original) {
167
139
  throw new _handlerGraphql.NotFoundError(`File with id "${id}" does not exists.`);
168
140
  }
169
-
170
141
  checkOwnership(original, permission, context);
171
142
  const file = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), input), {}, {
172
143
  tags: Array.isArray(input.tags) ? input.tags : Array.isArray(original.tags) ? original.tags : [],
173
144
  id: original.id,
174
145
  webinyVersion: context.WEBINY_VERSION
175
146
  });
176
-
177
147
  try {
178
148
  await (0, _lifecycleEvents.runLifecycleEvent)("beforeUpdate", {
179
149
  context,
@@ -200,7 +170,6 @@ const filesContextCrudPlugin = new _api.ContextPlugin(async context => {
200
170
  }));
201
171
  }
202
172
  },
203
-
204
173
  async deleteFile(id) {
205
174
  const permission = await (0, _checkBasePermissions.default)(context, {
206
175
  rwd: "d"
@@ -212,13 +181,10 @@ const filesContextCrudPlugin = new _api.ContextPlugin(async context => {
212
181
  locale: getLocaleCode(context)
213
182
  }
214
183
  });
215
-
216
184
  if (!file) {
217
185
  throw new _handlerGraphql.NotFoundError(`File with id "${id}" does not exists.`);
218
186
  }
219
-
220
187
  checkOwnership(file, permission, context);
221
-
222
188
  try {
223
189
  await (0, _lifecycleEvents.runLifecycleEvent)("beforeDelete", {
224
190
  context,
@@ -239,23 +205,18 @@ const filesContextCrudPlugin = new _api.ContextPlugin(async context => {
239
205
  file
240
206
  }));
241
207
  }
242
-
243
208
  return true;
244
209
  },
245
-
246
210
  async createFilesInBatch(inputs) {
247
211
  if (!Array.isArray(inputs)) {
248
212
  throw new _error.default(`"data" must be an array.`, "CREATE_FILES_NON_ARRAY");
249
213
  }
250
-
251
214
  if (inputs.length === 0) {
252
215
  throw new _error.default(`"data" argument must contain at least one file.`, "CREATE_FILES_MIN_FILES");
253
216
  }
254
-
255
217
  if (inputs.length > BATCH_CREATE_MAX_FILES) {
256
218
  throw new _error.default(`"data" argument must not contain more than ${BATCH_CREATE_MAX_FILES} files.`, "CREATE_FILES_MAX_FILES");
257
219
  }
258
-
259
220
  await (0, _checkBasePermissions.default)(context, {
260
221
  rwd: "w"
261
222
  });
@@ -280,7 +241,6 @@ const filesContextCrudPlugin = new _api.ContextPlugin(async context => {
280
241
  webinyVersion: context.WEBINY_VERSION
281
242
  });
282
243
  });
283
-
284
244
  try {
285
245
  await (0, _lifecycleEvents.runLifecycleEvent)("beforeBatchCreate", {
286
246
  context,
@@ -303,7 +263,6 @@ const filesContextCrudPlugin = new _api.ContextPlugin(async context => {
303
263
  }));
304
264
  }
305
265
  },
306
-
307
266
  async listFiles(params = {}) {
308
267
  const permission = await (0, _checkBasePermissions.default)(context, {
309
268
  rwd: "r"
@@ -326,7 +285,6 @@ const filesContextCrudPlugin = new _api.ContextPlugin(async context => {
326
285
  /**
327
286
  * Always override the createdBy received from the user, if any.
328
287
  */
329
-
330
288
  if (permission.own === true) {
331
289
  const identity = context.security.getIdentity();
332
290
  where.createdBy = identity.id;
@@ -335,12 +293,9 @@ const filesContextCrudPlugin = new _api.ContextPlugin(async context => {
335
293
  * We need to map the old GraphQL definition to the new one.
336
294
  * That GQL definition is marked as deprecated.
337
295
  */
338
-
339
296
  /**
340
297
  * To have standardized where objects across the applications, we transform the types into type_in.
341
298
  */
342
-
343
-
344
299
  if (Array.isArray(types) && types.length > 0 && !where.type_in) {
345
300
  where.type_in = types;
346
301
  }
@@ -348,30 +303,22 @@ const filesContextCrudPlugin = new _api.ContextPlugin(async context => {
348
303
  * We are assigning search to tag and name search.
349
304
  * This should be treated as OR condition in the storage operations.
350
305
  */
351
-
352
-
353
306
  if (search && !where.search) {
354
307
  where.search = search;
355
308
  }
356
309
  /**
357
310
  * Same as on types/type_in.
358
311
  */
359
-
360
-
361
312
  if (Array.isArray(tags) && tags.length > 0 && !where.tag_in) {
362
313
  where.tag_in = tags.map(tag => tag.toLowerCase());
363
314
  }
364
315
  /**
365
316
  * Same as on types/type_in.
366
317
  */
367
-
368
-
369
318
  if (Array.isArray(ids) && ids.length > 0 && !where.id_in) {
370
319
  where.id_in = ids;
371
320
  }
372
-
373
321
  const sort = Array.isArray(initialSort) && initialSort.length > 0 ? initialSort : ["id_DESC"];
374
-
375
322
  try {
376
323
  return await storageOperations.list({
377
324
  where,
@@ -388,7 +335,6 @@ const filesContextCrudPlugin = new _api.ContextPlugin(async context => {
388
335
  }));
389
336
  }
390
337
  },
391
-
392
338
  async listTags({
393
339
  where: initialWhere,
394
340
  after,
@@ -404,18 +350,14 @@ const filesContextCrudPlugin = new _api.ContextPlugin(async context => {
404
350
  limit: limit || 100000,
405
351
  after
406
352
  };
407
-
408
353
  try {
409
354
  const [tags] = await storageOperations.tags(params);
410
-
411
355
  if (Array.isArray(tags) === false) {
412
356
  return [];
413
357
  }
414
358
  /**
415
359
  * just to keep it standardized, sort by the tag ASC
416
360
  */
417
-
418
-
419
361
  return tags.sort();
420
362
  } catch (ex) {
421
363
  throw new _error.default(ex.message || "Could not search for tags.", ex.code || "FILE_TAG_SEARCH_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
@@ -423,7 +365,6 @@ const filesContextCrudPlugin = new _api.ContextPlugin(async context => {
423
365
  }));
424
366
  }
425
367
  }
426
-
427
368
  };
428
369
  });
429
370
  filesContextCrudPlugin.name = "FileManagerFilesCrud";