@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.
- package/handlers/download/index.js +7 -26
- package/handlers/download/index.js.map +1 -1
- package/handlers/manage/index.js +0 -16
- package/handlers/manage/index.js.map +1 -1
- package/handlers/transform/index.js +6 -16
- package/handlers/transform/index.js.map +1 -1
- package/handlers/transform/loaders/imageLoader.js +0 -17
- package/handlers/transform/loaders/imageLoader.js.map +1 -1
- package/handlers/transform/loaders/index.js +0 -3
- package/handlers/transform/loaders/index.js.map +1 -1
- package/handlers/transform/loaders/sanitizeImageTransformations.js +0 -13
- package/handlers/transform/loaders/sanitizeImageTransformations.js.map +1 -1
- package/handlers/transform/managers/imageManager.js +6 -14
- package/handlers/transform/managers/imageManager.js.map +1 -1
- package/handlers/transform/managers/index.js +0 -3
- package/handlers/transform/managers/index.js.map +1 -1
- package/handlers/transform/optimizeImage.js +0 -6
- package/handlers/transform/optimizeImage.js.map +1 -1
- package/handlers/transform/transformImage.js +0 -5
- package/handlers/transform/transformImage.js.map +1 -1
- package/handlers/transform/utils.js +0 -10
- package/handlers/transform/utils.js.map +1 -1
- package/handlers/utils/getEnvironment.js +0 -2
- package/handlers/utils/getEnvironment.js.map +1 -1
- package/handlers/utils/getObjectParams.js +0 -4
- package/handlers/utils/getObjectParams.js.map +1 -1
- package/handlers/utils/index.js +0 -3
- package/handlers/utils/index.js.map +1 -1
- package/package.json +19 -19
- package/plugins/crud/files/validation.js +0 -6
- package/plugins/crud/files/validation.js.map +1 -1
- package/plugins/crud/files.crud.js +2 -61
- package/plugins/crud/files.crud.js.map +1 -1
- package/plugins/crud/settings.crud.js +1 -18
- package/plugins/crud/settings.crud.js.map +1 -1
- package/plugins/crud/system.crud.js +2 -32
- package/plugins/crud/system.crud.js.map +1 -1
- package/plugins/crud/utils/checkBasePermissions.js +0 -8
- package/plugins/crud/utils/checkBasePermissions.js.map +1 -1
- package/plugins/crud/utils/createFileModel.js +0 -12
- package/plugins/crud/utils/createFileModel.js.map +1 -1
- package/plugins/crud/utils/lifecycleEvents.js +4 -12
- package/plugins/crud/utils/lifecycleEvents.js.map +1 -1
- package/plugins/definitions/FilePhysicalStoragePlugin.js +0 -11
- package/plugins/definitions/FilePhysicalStoragePlugin.js.map +1 -1
- package/plugins/definitions/FilePlugin.js +0 -18
- package/plugins/definitions/FilePlugin.js.map +1 -1
- package/plugins/definitions/FileStorageTransformPlugin.js +1 -12
- package/plugins/definitions/FileStorageTransformPlugin.js.map +1 -1
- package/plugins/definitions/FilesStorageOperationsProviderPlugin.js +0 -5
- package/plugins/definitions/FilesStorageOperationsProviderPlugin.js.map +1 -1
- package/plugins/definitions/InstallationPlugin.js +0 -11
- package/plugins/definitions/InstallationPlugin.js.map +1 -1
- package/plugins/definitions/SettingsStorageOperationsProviderPlugin.js +0 -5
- package/plugins/definitions/SettingsStorageOperationsProviderPlugin.js.map +1 -1
- package/plugins/definitions/SystemStorageOperationsProviderPlugin.js +0 -5
- package/plugins/definitions/SystemStorageOperationsProviderPlugin.js.map +1 -1
- package/plugins/graphql.js +2 -22
- package/plugins/graphql.js.map +1 -1
- package/plugins/index.js +0 -9
- package/plugins/index.js.map +1 -1
- package/plugins/storage/FileStorage.js +14 -32
- package/plugins/storage/FileStorage.js.map +1 -1
- package/plugins/storage/index.js +0 -4
- package/plugins/storage/index.js.map +1 -1
- package/utils.js +0 -2
- 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":"
|
|
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":"
|
|
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":"
|
|
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":"
|
|
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":"
|
|
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"}
|
|
@@ -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":"
|
|
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":"
|
|
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"}
|
package/handlers/utils/index.js
CHANGED
|
@@ -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":"
|
|
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.
|
|
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.
|
|
21
|
+
"@babel/runtime": "7.20.13",
|
|
22
22
|
"@commodo/fields": "1.1.2-beta.20",
|
|
23
|
-
"@webiny/api": "0.0.0-unstable.
|
|
24
|
-
"@webiny/api-security": "0.0.0-unstable.
|
|
25
|
-
"@webiny/api-tenancy": "0.0.0-unstable.
|
|
26
|
-
"@webiny/api-upgrade": "0.0.0-unstable.
|
|
27
|
-
"@webiny/error": "0.0.0-unstable.
|
|
28
|
-
"@webiny/handler": "0.0.0-unstable.
|
|
29
|
-
"@webiny/handler-aws": "0.0.0-unstable.
|
|
30
|
-
"@webiny/handler-client": "0.0.0-unstable.
|
|
31
|
-
"@webiny/handler-graphql": "0.0.0-unstable.
|
|
32
|
-
"@webiny/plugins": "0.0.0-unstable.
|
|
33
|
-
"@webiny/project-utils": "0.0.0-unstable.
|
|
34
|
-
"@webiny/validation": "0.0.0-unstable.
|
|
35
|
-
"aws-sdk": "2.
|
|
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.
|
|
49
|
-
"@webiny/api-i18n-ddb": "^0.0.0-unstable.
|
|
50
|
-
"@webiny/cli": "^0.0.0-unstable.
|
|
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": "
|
|
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":"
|
|
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";
|