@webiny/api-file-manager 0.0.0-unstable.e3f4727c56 → 0.0.0-unstable.eb196ccd2f
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/FileManagerContextSetup.d.ts +13 -0
- package/FileManagerContextSetup.js +115 -0
- package/FileManagerContextSetup.js.map +1 -0
- package/README.md +1 -1
- package/cmsFileStorage/CmsFilesStorage.d.ts +27 -0
- package/cmsFileStorage/CmsFilesStorage.js +164 -0
- package/cmsFileStorage/CmsFilesStorage.js.map +1 -0
- package/cmsFileStorage/ListFilesWhereProcessor.d.ts +7 -0
- package/cmsFileStorage/ListFilesWhereProcessor.js +33 -0
- package/cmsFileStorage/ListFilesWhereProcessor.js.map +1 -0
- package/cmsFileStorage/ListTagsWhereProcessor.d.ts +7 -0
- package/cmsFileStorage/ListTagsWhereProcessor.js +33 -0
- package/cmsFileStorage/ListTagsWhereProcessor.js.map +1 -0
- package/cmsFileStorage/file.model.d.ts +6 -0
- package/cmsFileStorage/file.model.js +158 -0
- package/cmsFileStorage/file.model.js.map +1 -0
- package/contants.d.ts +1 -0
- package/contants.js +9 -0
- package/contants.js.map +1 -0
- package/createFileManager/files.crud.d.ts +3 -0
- package/createFileManager/files.crud.js +328 -0
- package/createFileManager/files.crud.js.map +1 -0
- package/createFileManager/index.d.ts +3 -0
- package/createFileManager/index.js +23 -0
- package/createFileManager/index.js.map +1 -0
- package/createFileManager/permissions/FilesPermissions.d.ts +4 -0
- package/createFileManager/permissions/FilesPermissions.js +11 -0
- package/createFileManager/permissions/FilesPermissions.js.map +1 -0
- package/createFileManager/permissions/SettingsPermissions.d.ts +4 -0
- package/createFileManager/permissions/SettingsPermissions.js +11 -0
- package/createFileManager/permissions/SettingsPermissions.js.map +1 -0
- package/createFileManager/settings.crud.d.ts +3 -0
- package/createFileManager/settings.crud.js +117 -0
- package/createFileManager/settings.crud.js.map +1 -0
- package/createFileManager/system.crud.d.ts +3 -0
- package/createFileManager/system.crud.js +88 -0
- package/createFileManager/system.crud.js.map +1 -0
- package/createFileManager/types.d.ts +16 -0
- package/createFileManager/types.js +7 -0
- package/createFileManager/types.js.map +1 -0
- package/delivery/AssetDelivery/AliasAssetRequestResolver.d.ts +11 -0
- package/delivery/AssetDelivery/AliasAssetRequestResolver.js +74 -0
- package/delivery/AssetDelivery/AliasAssetRequestResolver.js.map +1 -0
- package/delivery/AssetDelivery/Asset.d.ts +32 -0
- package/delivery/AssetDelivery/Asset.js +69 -0
- package/delivery/AssetDelivery/Asset.js.map +1 -0
- package/delivery/AssetDelivery/AssetDeliveryConfig.d.ts +63 -0
- package/delivery/AssetDelivery/AssetDeliveryConfig.js +102 -0
- package/delivery/AssetDelivery/AssetDeliveryConfig.js.map +1 -0
- package/delivery/AssetDelivery/AssetRequest.d.ts +25 -0
- package/delivery/AssetDelivery/AssetRequest.js +29 -0
- package/delivery/AssetDelivery/AssetRequest.js.map +1 -0
- package/delivery/AssetDelivery/FilesAssetRequestResolver.d.ts +6 -0
- package/delivery/AssetDelivery/FilesAssetRequestResolver.js +37 -0
- package/delivery/AssetDelivery/FilesAssetRequestResolver.js.map +1 -0
- package/delivery/AssetDelivery/NullAssetOutputStrategy.d.ts +4 -0
- package/delivery/AssetDelivery/NullAssetOutputStrategy.js +15 -0
- package/delivery/AssetDelivery/NullAssetOutputStrategy.js.map +1 -0
- package/delivery/AssetDelivery/NullAssetReply.d.ts +4 -0
- package/delivery/AssetDelivery/NullAssetReply.js +20 -0
- package/delivery/AssetDelivery/NullAssetReply.js.map +1 -0
- package/delivery/AssetDelivery/NullAssetResolver.d.ts +5 -0
- package/delivery/AssetDelivery/NullAssetResolver.js +14 -0
- package/delivery/AssetDelivery/NullAssetResolver.js.map +1 -0
- package/delivery/AssetDelivery/NullRequestResolver.d.ts +4 -0
- package/delivery/AssetDelivery/NullRequestResolver.js +14 -0
- package/delivery/AssetDelivery/NullRequestResolver.js.map +1 -0
- package/delivery/AssetDelivery/SetCacheControlHeaders.d.ts +8 -0
- package/delivery/AssetDelivery/SetCacheControlHeaders.js +25 -0
- package/delivery/AssetDelivery/SetCacheControlHeaders.js.map +1 -0
- package/delivery/AssetDelivery/SetResponseHeaders.d.ts +18 -0
- package/delivery/AssetDelivery/SetResponseHeaders.js +25 -0
- package/delivery/AssetDelivery/SetResponseHeaders.js.map +1 -0
- package/delivery/AssetDelivery/abstractions/AssetContentsReader.d.ts +6 -0
- package/delivery/AssetDelivery/abstractions/AssetContentsReader.js +7 -0
- package/delivery/AssetDelivery/abstractions/AssetContentsReader.js.map +1 -0
- package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.d.ts +4 -0
- package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js +7 -0
- package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js.map +1 -0
- package/delivery/AssetDelivery/abstractions/AssetProcessor.d.ts +4 -0
- package/delivery/AssetDelivery/abstractions/AssetProcessor.js +7 -0
- package/delivery/AssetDelivery/abstractions/AssetProcessor.js.map +1 -0
- package/delivery/AssetDelivery/abstractions/AssetReply.d.ts +25 -0
- package/delivery/AssetDelivery/abstractions/AssetReply.js +38 -0
- package/delivery/AssetDelivery/abstractions/AssetReply.js.map +1 -0
- package/delivery/AssetDelivery/abstractions/AssetRequestResolver.d.ts +5 -0
- package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js +7 -0
- package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js.map +1 -0
- package/delivery/AssetDelivery/abstractions/AssetResolver.d.ts +4 -0
- package/delivery/AssetDelivery/abstractions/AssetResolver.js +7 -0
- package/delivery/AssetDelivery/abstractions/AssetResolver.js.map +1 -0
- package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.d.ts +4 -0
- package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js +7 -0
- package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js.map +1 -0
- package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.d.ts +2 -0
- package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js +15 -0
- package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.d.ts +4 -0
- package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js +7 -0
- package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.d.ts +4 -0
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js +26 -0
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.d.ts +4 -0
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js +15 -0
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.d.ts +7 -0
- package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js +28 -0
- package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/PrivateCache.d.ts +6 -0
- package/delivery/AssetDelivery/privateFiles/PrivateCache.js +28 -0
- package/delivery/AssetDelivery/privateFiles/PrivateCache.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.d.ts +8 -0
- package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js +37 -0
- package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.d.ts +13 -0
- package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js +63 -0
- package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/PublicCache.d.ts +6 -0
- package/delivery/AssetDelivery/privateFiles/PublicCache.js +28 -0
- package/delivery/AssetDelivery/privateFiles/PublicCache.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.d.ts +7 -0
- package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js +27 -0
- package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.d.ts +7 -0
- package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js +27 -0
- package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/internalIdentity.d.ts +7 -0
- package/delivery/AssetDelivery/privateFiles/internalIdentity.js +18 -0
- package/delivery/AssetDelivery/privateFiles/internalIdentity.js.map +1 -0
- package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.d.ts +4 -0
- package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js +14 -0
- package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js.map +1 -0
- package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.d.ts +4 -0
- package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js +14 -0
- package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js.map +1 -0
- package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.d.ts +6 -0
- package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js +26 -0
- package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js.map +1 -0
- package/delivery/index.d.ts +17 -0
- package/delivery/index.js +194 -0
- package/delivery/index.js.map +1 -0
- package/delivery/setupAssetDelivery.d.ts +6 -0
- package/delivery/setupAssetDelivery.js +128 -0
- package/delivery/setupAssetDelivery.js.map +1 -0
- package/enterprise/applyThreatScanning.d.ts +2 -0
- package/enterprise/applyThreatScanning.js +20 -0
- package/enterprise/applyThreatScanning.js.map +1 -0
- package/graphql/baseSchema.d.ts +3 -0
- package/graphql/baseSchema.js +121 -0
- package/graphql/baseSchema.js.map +1 -0
- package/graphql/createFilesTypeDefs.d.ts +7 -0
- package/graphql/createFilesTypeDefs.js +184 -0
- package/graphql/createFilesTypeDefs.js.map +1 -0
- package/graphql/filesSchema.d.ts +4 -0
- package/graphql/filesSchema.js +89 -0
- package/graphql/filesSchema.js.map +1 -0
- package/graphql/getFileByUrl.d.ts +3 -0
- package/graphql/getFileByUrl.js +78 -0
- package/graphql/getFileByUrl.js.map +1 -0
- package/graphql/index.d.ts +4 -0
- package/graphql/index.js +55 -0
- package/graphql/index.js.map +1 -0
- package/graphql/utils.d.ts +11 -0
- package/graphql/utils.js +24 -0
- package/graphql/utils.js.map +1 -0
- package/handlers/{transform/managers → manage}/imageManager.d.ts +2 -3
- package/handlers/manage/imageManager.js +75 -0
- package/handlers/manage/imageManager.js.map +1 -0
- package/handlers/manage/index.d.ts +1 -1
- package/handlers/manage/index.js +9 -5
- package/handlers/manage/index.js.map +1 -1
- package/handlers/{transform/utils.js → manage/legacyUtils.js} +7 -9
- package/handlers/manage/legacyUtils.js.map +1 -0
- package/handlers/manage/utils.d.ts +12 -0
- package/handlers/manage/utils.js +34 -0
- package/handlers/manage/utils.js.map +1 -0
- package/handlers/types.d.ts +1 -1
- package/handlers/types.js +3 -1
- package/handlers/types.js.map +1 -1
- package/handlers/utils/getEnvironment.js +3 -1
- package/handlers/utils/getEnvironment.js.map +1 -1
- package/handlers/utils/getObjectParams.js +3 -1
- package/handlers/utils/getObjectParams.js.map +1 -1
- package/handlers/utils/index.js +3 -1
- package/handlers/utils/index.js.map +1 -1
- package/index.d.ts +10 -0
- package/index.js +76 -0
- package/index.js.map +1 -0
- package/modelModifier/CmsModelModifier.d.ts +26 -0
- package/modelModifier/CmsModelModifier.js +62 -0
- package/modelModifier/CmsModelModifier.js.map +1 -0
- package/package.json +26 -36
- package/plugins/{definitions/FilePhysicalStoragePlugin.d.ts → FilePhysicalStoragePlugin.d.ts} +2 -1
- package/plugins/{definitions/FilePhysicalStoragePlugin.js → FilePhysicalStoragePlugin.js} +3 -3
- package/plugins/FilePhysicalStoragePlugin.js.map +1 -0
- package/plugins/{definitions/FileStorageTransformPlugin.d.ts → FileStorageTransformPlugin.d.ts} +1 -1
- package/plugins/{definitions/FileStorageTransformPlugin.js → FileStorageTransformPlugin.js} +3 -4
- package/plugins/FileStorageTransformPlugin.js.map +1 -0
- package/plugins/index.d.ts +2 -2
- package/plugins/index.js +24 -10
- package/plugins/index.js.map +1 -1
- package/{plugins/storage → storage}/FileStorage.d.ts +10 -6
- package/storage/FileStorage.js +90 -0
- package/storage/FileStorage.js.map +1 -0
- package/types/file.d.ts +49 -0
- package/types/file.js +7 -0
- package/types/file.js.map +1 -0
- package/types/file.lifecycle.d.ts +44 -0
- package/types/file.lifecycle.js +7 -0
- package/types/file.lifecycle.js.map +1 -0
- package/types.d.ts +92 -80
- package/types.js +25 -1
- package/types.js.map +1 -1
- package/handlers/download/index.d.ts +0 -3
- package/handlers/download/index.js +0 -113
- package/handlers/download/index.js.map +0 -1
- package/handlers/transform/index.d.ts +0 -2
- package/handlers/transform/index.js +0 -81
- package/handlers/transform/index.js.map +0 -1
- package/handlers/transform/loaders/imageLoader.d.ts +0 -30
- package/handlers/transform/loaders/imageLoader.js +0 -88
- package/handlers/transform/loaders/imageLoader.js.map +0 -1
- package/handlers/transform/loaders/index.d.ts +0 -8
- package/handlers/transform/loaders/index.js +0 -10
- package/handlers/transform/loaders/index.js.map +0 -1
- package/handlers/transform/loaders/sanitizeImageTransformations.d.ts +0 -11
- package/handlers/transform/loaders/sanitizeImageTransformations.js +0 -45
- package/handlers/transform/loaders/sanitizeImageTransformations.js.map +0 -1
- package/handlers/transform/managers/imageManager.js +0 -55
- package/handlers/transform/managers/imageManager.js.map +0 -1
- package/handlers/transform/managers/index.d.ts +0 -5
- package/handlers/transform/managers/index.js +0 -10
- package/handlers/transform/managers/index.js.map +0 -1
- package/handlers/transform/optimizeImage.d.ts +0 -3
- package/handlers/transform/optimizeImage.js +0 -42
- package/handlers/transform/optimizeImage.js.map +0 -1
- package/handlers/transform/transformImage.d.ts +0 -10
- package/handlers/transform/transformImage.js +0 -25
- package/handlers/transform/transformImage.js.map +0 -1
- package/handlers/transform/utils.js.map +0 -1
- package/plugins/crud/files/validation.d.ts +0 -3
- package/plugins/crud/files/validation.js +0 -35
- package/plugins/crud/files/validation.js.map +0 -1
- package/plugins/crud/files.crud.d.ts +0 -4
- package/plugins/crud/files.crud.js +0 -372
- package/plugins/crud/files.crud.js.map +0 -1
- package/plugins/crud/settings.crud.d.ts +0 -5
- package/plugins/crud/settings.crud.js +0 -99
- package/plugins/crud/settings.crud.js.map +0 -1
- package/plugins/crud/system.crud.d.ts +0 -4
- package/plugins/crud/system.crud.js +0 -104
- package/plugins/crud/system.crud.js.map +0 -1
- package/plugins/crud/utils/checkBasePermissions.d.ts +0 -5
- package/plugins/crud/utils/checkBasePermissions.js +0 -25
- package/plugins/crud/utils/checkBasePermissions.js.map +0 -1
- package/plugins/crud/utils/createFileModel.d.ts +0 -5
- package/plugins/crud/utils/createFileModel.js +0 -65
- package/plugins/crud/utils/createFileModel.js.map +0 -1
- package/plugins/crud/utils/lifecycleEvents.d.ts +0 -6
- package/plugins/crud/utils/lifecycleEvents.js +0 -30
- package/plugins/crud/utils/lifecycleEvents.js.map +0 -1
- package/plugins/definitions/FilePhysicalStoragePlugin.js.map +0 -1
- package/plugins/definitions/FilePlugin.d.ts +0 -136
- package/plugins/definitions/FilePlugin.js +0 -52
- package/plugins/definitions/FilePlugin.js.map +0 -1
- package/plugins/definitions/FileStorageTransformPlugin.js.map +0 -1
- package/plugins/definitions/FilesStorageOperationsProviderPlugin.d.ts +0 -9
- package/plugins/definitions/FilesStorageOperationsProviderPlugin.js +0 -12
- package/plugins/definitions/FilesStorageOperationsProviderPlugin.js.map +0 -1
- package/plugins/definitions/InstallationPlugin.d.ts +0 -19
- package/plugins/definitions/InstallationPlugin.js +0 -31
- package/plugins/definitions/InstallationPlugin.js.map +0 -1
- package/plugins/definitions/SettingsStorageOperationsProviderPlugin.d.ts +0 -9
- package/plugins/definitions/SettingsStorageOperationsProviderPlugin.js +0 -12
- package/plugins/definitions/SettingsStorageOperationsProviderPlugin.js.map +0 -1
- package/plugins/definitions/SystemStorageOperationsProviderPlugin.d.ts +0 -9
- package/plugins/definitions/SystemStorageOperationsProviderPlugin.js +0 -12
- package/plugins/definitions/SystemStorageOperationsProviderPlugin.js.map +0 -1
- package/plugins/graphql.d.ts +0 -4
- package/plugins/graphql.js +0 -262
- package/plugins/graphql.js.map +0 -1
- package/plugins/storage/FileStorage.js +0 -85
- package/plugins/storage/FileStorage.js.map +0 -1
- package/plugins/storage/index.d.ts +0 -4
- package/plugins/storage/index.js +0 -22
- package/plugins/storage/index.js.map +0 -1
- package/utils.d.ts +0 -4
- package/utils.js +0 -14
- package/utils.js.map +0 -1
- /package/handlers/{transform/utils.d.ts → manage/legacyUtils.d.ts} +0 -0
package/types.d.ts
CHANGED
|
@@ -1,74 +1,61 @@
|
|
|
1
|
-
import { I18NContext } from "@webiny/api-i18n/types";
|
|
2
|
-
import { FileStorage } from "./
|
|
3
|
-
import { TenancyContext } from "@webiny/api-tenancy/types";
|
|
4
|
-
import { SecurityContext, SecurityPermission } from "@webiny/api-security/types";
|
|
5
|
-
import { Context } from "@webiny/api/types";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import type { I18NContext } from "@webiny/api-i18n/types";
|
|
2
|
+
import type { FileStorage } from "./storage/FileStorage";
|
|
3
|
+
import type { TenancyContext } from "@webiny/api-tenancy/types";
|
|
4
|
+
import type { SecurityContext, SecurityPermission } from "@webiny/api-security/types";
|
|
5
|
+
import type { Context } from "@webiny/api/types";
|
|
6
|
+
import type { FileLifecycleEvents } from "./types/file.lifecycle";
|
|
7
|
+
import type { CreatedBy, File } from "./types/file";
|
|
8
|
+
import type { Topic } from "@webiny/pubsub/types";
|
|
9
|
+
import type { CmsContext, CmsEntryListSort } from "@webiny/api-headless-cms/types";
|
|
10
|
+
import type { Context as TasksContext } from "@webiny/tasks/types";
|
|
11
|
+
export * from "./types/file.lifecycle";
|
|
12
|
+
export * from "./types/file";
|
|
13
|
+
export * from "./types/file";
|
|
14
|
+
export interface FileManagerContextObject extends FilesCRUD, SettingsCRUD, SystemCRUD {
|
|
15
|
+
storage: FileStorage;
|
|
16
|
+
}
|
|
17
|
+
export interface FileManagerContext extends Context, SecurityContext, TenancyContext, I18NContext, CmsContext, TasksContext {
|
|
18
|
+
fileManager: FileManagerContextObject;
|
|
13
19
|
}
|
|
14
20
|
export interface FilePermission extends SecurityPermission {
|
|
15
21
|
name: "fm.file";
|
|
16
22
|
rwd?: string;
|
|
17
23
|
own?: boolean;
|
|
18
24
|
}
|
|
19
|
-
export interface
|
|
20
|
-
|
|
21
|
-
key: string;
|
|
22
|
-
size: number;
|
|
23
|
-
type: string;
|
|
24
|
-
name: string;
|
|
25
|
-
meta: Record<string, any>;
|
|
26
|
-
tags: string[];
|
|
27
|
-
createdOn: string;
|
|
28
|
-
createdBy: CreatedBy;
|
|
29
|
-
/**
|
|
30
|
-
* Added with new storage operations refactoring.
|
|
31
|
-
*/
|
|
32
|
-
tenant: string;
|
|
33
|
-
locale: string;
|
|
34
|
-
webinyVersion: string;
|
|
35
|
-
/**
|
|
36
|
-
* User can add new fields to the File object so we must allow it in the types.
|
|
37
|
-
*/
|
|
38
|
-
[key: string]: any;
|
|
39
|
-
}
|
|
40
|
-
export interface CreatedBy {
|
|
41
|
-
id: string;
|
|
42
|
-
displayName: string | null;
|
|
43
|
-
type: string;
|
|
25
|
+
export interface SettingsPermission extends SecurityPermission {
|
|
26
|
+
name: "fm.setting";
|
|
44
27
|
}
|
|
45
28
|
export interface FileInput {
|
|
29
|
+
id: string;
|
|
30
|
+
createdOn?: string | Date | null;
|
|
31
|
+
modifiedOn?: string | Date | null;
|
|
32
|
+
savedOn?: string | Date | null;
|
|
33
|
+
createdBy?: CreatedBy | null;
|
|
34
|
+
modifiedBy?: CreatedBy | null;
|
|
35
|
+
savedBy?: CreatedBy | null;
|
|
46
36
|
key: string;
|
|
47
37
|
name: string;
|
|
48
38
|
size: number;
|
|
49
39
|
type: string;
|
|
50
40
|
meta: Record<string, any>;
|
|
41
|
+
location?: {
|
|
42
|
+
folderId: string;
|
|
43
|
+
};
|
|
51
44
|
tags: string[];
|
|
45
|
+
aliases: string[];
|
|
46
|
+
extensions?: Record<string, any>;
|
|
52
47
|
}
|
|
53
48
|
export interface FileListWhereParams {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
tag?: string;
|
|
58
|
-
tag_in?: string[];
|
|
59
|
-
tag_and_in?: string[];
|
|
60
|
-
id_in?: string[];
|
|
61
|
-
id?: string;
|
|
49
|
+
AND?: FileListWhereParams[];
|
|
50
|
+
OR?: FileListWhereParams[];
|
|
51
|
+
[key: string]: any;
|
|
62
52
|
}
|
|
63
53
|
export interface FilesListOpts {
|
|
64
54
|
search?: string;
|
|
65
|
-
types?: string[];
|
|
66
|
-
tags?: string[];
|
|
67
|
-
ids?: string[];
|
|
68
55
|
limit?: number;
|
|
69
56
|
after?: string;
|
|
70
57
|
where?: FileListWhereParams;
|
|
71
|
-
sort?:
|
|
58
|
+
sort?: CmsEntryListSort;
|
|
72
59
|
}
|
|
73
60
|
export interface FileListMeta {
|
|
74
61
|
cursor: string | null;
|
|
@@ -87,16 +74,22 @@ interface FilesCrudListTagsParams {
|
|
|
87
74
|
limit?: number;
|
|
88
75
|
after?: string;
|
|
89
76
|
}
|
|
90
|
-
export interface
|
|
77
|
+
export interface ListTagsResponse {
|
|
78
|
+
tag: string;
|
|
79
|
+
count: number;
|
|
80
|
+
}
|
|
81
|
+
export interface FilesCRUD extends FileLifecycleEvents {
|
|
91
82
|
getFile(id: string): Promise<File>;
|
|
92
83
|
listFiles(opts?: FilesListOpts): Promise<[File[], FileListMeta]>;
|
|
93
|
-
listTags(params: FilesCrudListTagsParams): Promise<
|
|
94
|
-
createFile(data: FileInput): Promise<File>;
|
|
84
|
+
listTags(params: FilesCrudListTagsParams): Promise<ListTagsResponse[]>;
|
|
85
|
+
createFile(data: FileInput, meta?: Record<string, any>): Promise<File>;
|
|
95
86
|
updateFile(id: string, data: Partial<FileInput>): Promise<File>;
|
|
96
87
|
deleteFile(id: string): Promise<boolean>;
|
|
97
|
-
createFilesInBatch(data: FileInput[]): Promise<File[]>;
|
|
88
|
+
createFilesInBatch(data: FileInput[], meta?: Record<string, any>): Promise<File[]>;
|
|
98
89
|
}
|
|
99
90
|
export interface SystemCRUD {
|
|
91
|
+
onSystemBeforeInstall: Topic;
|
|
92
|
+
onSystemAfterInstall: Topic;
|
|
100
93
|
getVersion(): Promise<string | null>;
|
|
101
94
|
setVersion(version: string): Promise<void>;
|
|
102
95
|
install(args: {
|
|
@@ -104,7 +97,7 @@ export interface SystemCRUD {
|
|
|
104
97
|
}): Promise<boolean>;
|
|
105
98
|
}
|
|
106
99
|
export interface FileManagerSettings {
|
|
107
|
-
|
|
100
|
+
tenant: string;
|
|
108
101
|
uploadMinFileSize: number;
|
|
109
102
|
uploadMaxFileSize: number;
|
|
110
103
|
srcPrefix: string;
|
|
@@ -113,11 +106,23 @@ export interface FileManagerSystem {
|
|
|
113
106
|
version: string;
|
|
114
107
|
tenant: string;
|
|
115
108
|
}
|
|
116
|
-
export
|
|
109
|
+
export interface OnSettingsBeforeUpdateTopicParams {
|
|
110
|
+
input: Partial<FileManagerSettings>;
|
|
111
|
+
original: FileManagerSettings;
|
|
112
|
+
settings: FileManagerSettings;
|
|
113
|
+
}
|
|
114
|
+
export interface OnSettingsAfterUpdateTopicParams {
|
|
115
|
+
input: Partial<FileManagerSettings>;
|
|
116
|
+
original: FileManagerSettings;
|
|
117
|
+
settings: FileManagerSettings;
|
|
118
|
+
}
|
|
119
|
+
export type SettingsCRUD = {
|
|
117
120
|
getSettings(): Promise<FileManagerSettings | null>;
|
|
118
121
|
createSettings(data?: Partial<FileManagerSettings>): Promise<FileManagerSettings>;
|
|
119
122
|
updateSettings(data: Partial<FileManagerSettings>): Promise<FileManagerSettings>;
|
|
120
123
|
deleteSettings(): Promise<boolean>;
|
|
124
|
+
onSettingsBeforeUpdate: Topic<OnSettingsBeforeUpdateTopicParams>;
|
|
125
|
+
onSettingsAfterUpdate: Topic<OnSettingsAfterUpdateTopicParams>;
|
|
121
126
|
};
|
|
122
127
|
/********
|
|
123
128
|
* Storage operations
|
|
@@ -148,6 +153,9 @@ export interface FileManagerSystemStorageOperationsCreateParams {
|
|
|
148
153
|
*/
|
|
149
154
|
data: FileManagerSystem;
|
|
150
155
|
}
|
|
156
|
+
export interface FileManagerSystemStorageOperationsGetParams {
|
|
157
|
+
tenant: string;
|
|
158
|
+
}
|
|
151
159
|
/**
|
|
152
160
|
* @category StorageOperations
|
|
153
161
|
* @category SystemStorageOperations
|
|
@@ -156,7 +164,7 @@ export interface FileManagerSystemStorageOperations {
|
|
|
156
164
|
/**
|
|
157
165
|
* Get the FileManager system data.
|
|
158
166
|
*/
|
|
159
|
-
get: () => Promise<FileManagerSystem | null>;
|
|
167
|
+
get: (params: FileManagerSystemStorageOperationsGetParams) => Promise<FileManagerSystem | null>;
|
|
160
168
|
/**
|
|
161
169
|
* Update the FileManager system data..
|
|
162
170
|
*/
|
|
@@ -192,6 +200,12 @@ export interface FileManagerSettingsStorageOperationsCreateParams {
|
|
|
192
200
|
*/
|
|
193
201
|
data: FileManagerSettings;
|
|
194
202
|
}
|
|
203
|
+
export interface FileManagerStorageOperationsGetSettingsParams {
|
|
204
|
+
tenant: string;
|
|
205
|
+
}
|
|
206
|
+
export interface FileManagerStorageOperationsDeleteSettings {
|
|
207
|
+
tenant: string;
|
|
208
|
+
}
|
|
195
209
|
/**
|
|
196
210
|
* @category StorageOperations
|
|
197
211
|
* @category SettingsStorageOperations
|
|
@@ -200,7 +214,7 @@ export interface FileManagerSettingsStorageOperations {
|
|
|
200
214
|
/**
|
|
201
215
|
* Get the FileManager system data.
|
|
202
216
|
*/
|
|
203
|
-
get: () => Promise<FileManagerSettings | null>;
|
|
217
|
+
get: (params: FileManagerStorageOperationsGetSettingsParams) => Promise<FileManagerSettings | null>;
|
|
204
218
|
/**
|
|
205
219
|
* Create the FileManagerSettingsData
|
|
206
220
|
*/
|
|
@@ -212,7 +226,7 @@ export interface FileManagerSettingsStorageOperations {
|
|
|
212
226
|
/**
|
|
213
227
|
* Delete the existing settings.
|
|
214
228
|
*/
|
|
215
|
-
delete: () => Promise<void>;
|
|
229
|
+
delete: (params: FileManagerStorageOperationsDeleteSettings) => Promise<void>;
|
|
216
230
|
}
|
|
217
231
|
/**
|
|
218
232
|
* @category StorageOperations
|
|
@@ -265,20 +279,7 @@ export interface FileManagerFilesStorageOperationsCreateBatchParams {
|
|
|
265
279
|
* @category FilesStorageOperationsParams
|
|
266
280
|
*/
|
|
267
281
|
export interface FileManagerFilesStorageOperationsListParamsWhere {
|
|
268
|
-
|
|
269
|
-
id_in?: string[];
|
|
270
|
-
name?: string;
|
|
271
|
-
name_contains?: string;
|
|
272
|
-
tag?: string;
|
|
273
|
-
tag_contains?: string;
|
|
274
|
-
tag_in?: string[];
|
|
275
|
-
createdBy?: string;
|
|
276
|
-
locale: string;
|
|
277
|
-
tenant: string;
|
|
278
|
-
private?: boolean;
|
|
279
|
-
type?: string;
|
|
280
|
-
type_in?: string[];
|
|
281
|
-
search?: string;
|
|
282
|
+
[key: string]: any;
|
|
282
283
|
}
|
|
283
284
|
/**
|
|
284
285
|
* @category StorageOperations
|
|
@@ -287,9 +288,10 @@ export interface FileManagerFilesStorageOperationsListParamsWhere {
|
|
|
287
288
|
*/
|
|
288
289
|
export interface FileManagerFilesStorageOperationsListParams {
|
|
289
290
|
where: FileManagerFilesStorageOperationsListParamsWhere;
|
|
290
|
-
sort:
|
|
291
|
+
sort: CmsEntryListSort;
|
|
291
292
|
limit: number;
|
|
292
293
|
after: string | null;
|
|
294
|
+
search?: string;
|
|
293
295
|
}
|
|
294
296
|
/**
|
|
295
297
|
* @category StorageOperations
|
|
@@ -301,14 +303,14 @@ export interface FileManagerFilesStorageOperationsListResponseMeta {
|
|
|
301
303
|
totalCount: number;
|
|
302
304
|
cursor: string | null;
|
|
303
305
|
}
|
|
304
|
-
export
|
|
306
|
+
export type FileManagerFilesStorageOperationsListResponse = [
|
|
305
307
|
File[],
|
|
306
308
|
FileManagerFilesStorageOperationsListResponseMeta
|
|
307
309
|
];
|
|
308
|
-
export
|
|
309
|
-
string
|
|
310
|
-
|
|
311
|
-
|
|
310
|
+
export interface FileManagerFilesStorageOperationsTagsResponse {
|
|
311
|
+
tag: string;
|
|
312
|
+
count: number;
|
|
313
|
+
}
|
|
312
314
|
export interface FileManagerFilesStorageOperationsTagsParamsWhere extends FilesCrudListTagsWhere {
|
|
313
315
|
locale: string;
|
|
314
316
|
tenant: string;
|
|
@@ -355,6 +357,16 @@ export interface FileManagerFilesStorageOperations {
|
|
|
355
357
|
/**
|
|
356
358
|
* Get a list of all file tags filtered by given parameters.
|
|
357
359
|
*/
|
|
358
|
-
tags: (params: FileManagerFilesStorageOperationsTagsParams) => Promise<FileManagerFilesStorageOperationsTagsResponse>;
|
|
360
|
+
tags: (params: FileManagerFilesStorageOperationsTagsParams) => Promise<FileManagerFilesStorageOperationsTagsResponse[]>;
|
|
361
|
+
}
|
|
362
|
+
export interface FileManagerAliasesStorageOperations {
|
|
363
|
+
storeAliases(file: File): Promise<void>;
|
|
364
|
+
deleteAliases(file: File): Promise<void>;
|
|
365
|
+
}
|
|
366
|
+
export interface FileManagerStorageOperations<TContext = FileManagerContext> {
|
|
367
|
+
beforeInit?: (context: TContext) => Promise<void>;
|
|
368
|
+
files: FileManagerFilesStorageOperations;
|
|
369
|
+
aliases: FileManagerAliasesStorageOperations;
|
|
370
|
+
settings: FileManagerSettingsStorageOperations;
|
|
371
|
+
system: FileManagerSystemStorageOperations;
|
|
359
372
|
}
|
|
360
|
-
export {};
|
package/types.js
CHANGED
|
@@ -2,4 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
|
-
});
|
|
5
|
+
});
|
|
6
|
+
var _file = require("./types/file.lifecycle");
|
|
7
|
+
Object.keys(_file).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _file[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _file[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
var _file2 = require("./types/file");
|
|
18
|
+
Object.keys(_file2).forEach(function (key) {
|
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
|
20
|
+
if (key in exports && exports[key] === _file2[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _file2[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=types.js.map
|
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { I18NContext } from \"@webiny/api-i18n/types\";\nimport { FileStorage } from \"./plugins/storage/FileStorage\";\nimport { TenancyContext } from \"@webiny/api-tenancy/types\";\nimport { SecurityContext, SecurityPermission } from \"@webiny/api-security/types\";\nimport { Context } from \"@webiny/api/types\";\n\nexport interface FileManagerContext extends Context, SecurityContext, TenancyContext, I18NContext {\n fileManager: {\n files: FilesCRUD;\n settings: SettingsCRUD;\n storage: FileStorage;\n system: SystemCRUD;\n };\n}\n\nexport interface FilePermission extends SecurityPermission {\n name: \"fm.file\";\n rwd?: string;\n own?: boolean;\n}\n\nexport interface File {\n id: string;\n key: string;\n size: number;\n type: string;\n name: string;\n meta: Record<string, any>;\n tags: string[];\n createdOn: string;\n createdBy: CreatedBy;\n /**\n * Added with new storage operations refactoring.\n */\n tenant: string;\n locale: string;\n webinyVersion: string;\n /**\n * User can add new fields to the File object so we must allow it in the types.\n */\n [key: string]: any;\n}\n\nexport interface CreatedBy {\n id: string;\n displayName: string | null;\n type: string;\n}\n\nexport interface FileInput {\n key: string;\n name: string;\n size: number;\n type: string;\n meta: Record<string, any>;\n tags: string[];\n}\n\nexport interface FileListWhereParams {\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?: string[];\n id?: string;\n}\nexport interface FilesListOpts {\n search?: string;\n types?: string[];\n tags?: string[];\n ids?: string[];\n limit?: number;\n after?: string;\n where?: FileListWhereParams;\n sort?: string[];\n}\n\nexport interface FileListMeta {\n cursor: string | null;\n totalCount: number;\n hasMoreItems: boolean;\n}\n\ninterface FilesCrudListTagsWhere {\n tag?: string;\n tag_contains?: string;\n tag_in?: string[];\n tag_not_startsWith?: string;\n tag_startsWith?: string;\n}\ninterface FilesCrudListTagsParams {\n where?: FilesCrudListTagsWhere;\n limit?: number;\n after?: string;\n}\n\nexport interface FilesCRUD {\n getFile(id: string): Promise<File>;\n listFiles(opts?: FilesListOpts): Promise<[File[], FileListMeta]>;\n listTags(params: FilesCrudListTagsParams): Promise<string[]>;\n createFile(data: FileInput): Promise<File>;\n updateFile(id: string, data: Partial<FileInput>): Promise<File>;\n deleteFile(id: string): Promise<boolean>;\n createFilesInBatch(data: FileInput[]): Promise<File[]>;\n}\n\nexport interface SystemCRUD {\n getVersion(): Promise<string | null>;\n setVersion(version: string): Promise<void>;\n install(args: { srcPrefix: string }): Promise<boolean>;\n}\n\nexport interface FileManagerSettings {\n key: string;\n uploadMinFileSize: number;\n uploadMaxFileSize: number;\n srcPrefix: string;\n}\n\nexport interface FileManagerSystem {\n version: string;\n tenant: string;\n}\n\nexport type SettingsCRUD = {\n getSettings(): Promise<FileManagerSettings | null>;\n createSettings(data?: Partial<FileManagerSettings>): Promise<FileManagerSettings>;\n updateSettings(data: Partial<FileManagerSettings>): Promise<FileManagerSettings>;\n deleteSettings(): Promise<boolean>;\n};\n/********\n * Storage operations\n *******/\n\n/**\n * @category StorageOperations\n * @category SystemStorageOperations\n * @category SystemStorageOperationsParams\n */\nexport interface FileManagerSystemStorageOperationsUpdateParams {\n /**\n * The system data to be updated.\n */\n original: FileManagerSystem;\n /**\n * The system data with the updated fields.\n */\n data: FileManagerSystem;\n}\n/**\n * @category StorageOperations\n * @category SystemStorageOperations\n * @category SystemStorageOperationsParams\n */\nexport interface FileManagerSystemStorageOperationsCreateParams {\n /**\n * The system fields.\n */\n data: FileManagerSystem;\n}\n\n/**\n * @category StorageOperations\n * @category SystemStorageOperations\n */\nexport interface FileManagerSystemStorageOperations {\n /**\n * Get the FileManager system data.\n */\n get: () => Promise<FileManagerSystem | null>;\n /**\n * Update the FileManager system data..\n */\n update: (params: FileManagerSystemStorageOperationsUpdateParams) => Promise<FileManagerSystem>;\n /**\n * Create the FileManagerSystemData\n */\n create: (params: FileManagerSystemStorageOperationsCreateParams) => Promise<FileManagerSystem>;\n}\n\n/**\n * @category StorageOperations\n * @category SettingsStorageOperations\n * @category SettingsStorageOperationsParams\n */\nexport interface FileManagerSettingsStorageOperationsUpdateParams {\n /**\n * Original settings to be updated.\n */\n original: FileManagerSettings;\n /**\n * The settings with the updated fields.\n */\n data: FileManagerSettings;\n}\n/**\n * @category StorageOperations\n * @category SettingsStorageOperations\n * @category SettingsStorageOperationsParams\n */\nexport interface FileManagerSettingsStorageOperationsCreateParams {\n /**\n * The settings fields.\n */\n data: FileManagerSettings;\n}\n\n/**\n * @category StorageOperations\n * @category SettingsStorageOperations\n */\nexport interface FileManagerSettingsStorageOperations {\n /**\n * Get the FileManager system data.\n */\n get: () => Promise<FileManagerSettings | null>;\n /**\n * Create the FileManagerSettingsData\n */\n create: (\n params: FileManagerSettingsStorageOperationsCreateParams\n ) => Promise<FileManagerSettings>;\n /**\n * Update the FileManager system data..\n */\n update: (\n params: FileManagerSettingsStorageOperationsUpdateParams\n ) => Promise<FileManagerSettings>;\n /**\n * Delete the existing settings.\n */\n delete: () => Promise<void>;\n}\n\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsGetParams {\n where: {\n id: string;\n tenant: string;\n locale: string;\n };\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsCreateParams {\n file: File;\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsUpdateParams {\n original: File;\n file: File;\n}\n\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsDeleteParams {\n file: File;\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsCreateBatchParams {\n files: File[];\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsListParamsWhere {\n id?: string;\n id_in?: string[];\n name?: string;\n name_contains?: string;\n tag?: string;\n tag_contains?: string;\n tag_in?: string[];\n createdBy?: string;\n locale: string;\n tenant: string;\n private?: boolean;\n type?: string;\n type_in?: string[];\n search?: string;\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsListParams {\n where: FileManagerFilesStorageOperationsListParamsWhere;\n sort: string[];\n limit: number;\n after: string | null;\n}\n\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsListResponseMeta {\n hasMoreItems: boolean;\n totalCount: number;\n cursor: string | null;\n}\nexport type FileManagerFilesStorageOperationsListResponse = [\n File[],\n FileManagerFilesStorageOperationsListResponseMeta\n];\n\nexport type FileManagerFilesStorageOperationsTagsResponse = [\n string[],\n FileManagerFilesStorageOperationsListResponseMeta\n];\n\nexport interface FileManagerFilesStorageOperationsTagsParamsWhere extends FilesCrudListTagsWhere {\n locale: string;\n tenant: string;\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsTagsParams {\n where: FileManagerFilesStorageOperationsTagsParamsWhere;\n limit: number;\n after?: string;\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n */\nexport interface FileManagerFilesStorageOperations {\n /**\n * Get a single file with given ID from the storage.\n */\n get: (params: FileManagerFilesStorageOperationsGetParams) => Promise<File | null>;\n /**\n * Insert the file data into the database.\n */\n create: (params: FileManagerFilesStorageOperationsCreateParams) => Promise<File>;\n /**\n * Update the file data in the database.\n */\n update: (params: FileManagerFilesStorageOperationsUpdateParams) => Promise<File>;\n /**\n * Delete the file from the database.\n */\n delete: (params: FileManagerFilesStorageOperationsDeleteParams) => Promise<void>;\n /**\n * Store multiple files at once to the database.\n */\n createBatch: (params: FileManagerFilesStorageOperationsCreateBatchParams) => Promise<File[]>;\n /**\n * Get a list of files filtered by given parameters.\n */\n list: (\n params: FileManagerFilesStorageOperationsListParams\n ) => Promise<FileManagerFilesStorageOperationsListResponse>;\n /**\n * Get a list of all file tags filtered by given parameters.\n */\n tags: (\n params: FileManagerFilesStorageOperationsTagsParams\n ) => Promise<FileManagerFilesStorageOperationsTagsResponse>;\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"names":["_file","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_file2"],"sources":["types.ts"],"sourcesContent":["import type { I18NContext } from \"@webiny/api-i18n/types\";\nimport type { FileStorage } from \"./storage/FileStorage\";\nimport type { TenancyContext } from \"@webiny/api-tenancy/types\";\nimport type { SecurityContext, SecurityPermission } from \"@webiny/api-security/types\";\nimport type { Context } from \"@webiny/api/types\";\nimport type { FileLifecycleEvents } from \"./types/file.lifecycle\";\nimport type { CreatedBy, File } from \"./types/file\";\nimport type { Topic } from \"@webiny/pubsub/types\";\nimport type { CmsContext, CmsEntryListSort } from \"@webiny/api-headless-cms/types\";\nimport type { Context as TasksContext } from \"@webiny/tasks/types\";\n\nexport * from \"./types/file.lifecycle\";\nexport * from \"./types/file\";\nexport * from \"./types/file\";\n\nexport interface FileManagerContextObject extends FilesCRUD, SettingsCRUD, SystemCRUD {\n storage: FileStorage;\n}\n\nexport interface FileManagerContext\n extends Context,\n SecurityContext,\n TenancyContext,\n I18NContext,\n CmsContext,\n TasksContext {\n fileManager: FileManagerContextObject;\n}\n\nexport interface FilePermission extends SecurityPermission {\n name: \"fm.file\";\n rwd?: string;\n own?: boolean;\n}\n\nexport interface SettingsPermission extends SecurityPermission {\n name: \"fm.setting\";\n}\n\nexport interface FileInput {\n id: string;\n\n // In the background, we're actually mapping these to entry-level fields.\n // This is fine since we don't use revisions for files.\n createdOn?: string | Date | null;\n modifiedOn?: string | Date | null;\n savedOn?: string | Date | null;\n createdBy?: CreatedBy | null;\n modifiedBy?: CreatedBy | null;\n savedBy?: CreatedBy | null;\n\n key: string;\n name: string;\n size: number;\n type: string;\n meta: Record<string, any>;\n location?: {\n folderId: string;\n };\n tags: string[];\n aliases: string[];\n extensions?: Record<string, any>;\n}\n\nexport interface FileListWhereParams {\n AND?: FileListWhereParams[];\n OR?: FileListWhereParams[];\n [key: string]: any;\n}\nexport interface FilesListOpts {\n search?: string;\n limit?: number;\n after?: string;\n where?: FileListWhereParams;\n sort?: CmsEntryListSort;\n}\n\nexport interface FileListMeta {\n cursor: string | null;\n totalCount: number;\n hasMoreItems: boolean;\n}\n\ninterface FilesCrudListTagsWhere {\n tag?: string;\n tag_contains?: string;\n tag_in?: string[];\n tag_not_startsWith?: string;\n tag_startsWith?: string;\n}\ninterface FilesCrudListTagsParams {\n where?: FilesCrudListTagsWhere;\n limit?: number;\n after?: string;\n}\n\nexport interface ListTagsResponse {\n tag: string;\n count: number;\n}\nexport interface FilesCRUD extends FileLifecycleEvents {\n getFile(id: string): Promise<File>;\n listFiles(opts?: FilesListOpts): Promise<[File[], FileListMeta]>;\n listTags(params: FilesCrudListTagsParams): Promise<ListTagsResponse[]>;\n createFile(data: FileInput, meta?: Record<string, any>): Promise<File>;\n updateFile(id: string, data: Partial<FileInput>): Promise<File>;\n deleteFile(id: string): Promise<boolean>;\n createFilesInBatch(data: FileInput[], meta?: Record<string, any>): Promise<File[]>;\n}\n\nexport interface SystemCRUD {\n onSystemBeforeInstall: Topic;\n onSystemAfterInstall: Topic;\n getVersion(): Promise<string | null>;\n setVersion(version: string): Promise<void>;\n install(args: { srcPrefix: string }): Promise<boolean>;\n}\n\nexport interface FileManagerSettings {\n tenant: string;\n uploadMinFileSize: number;\n uploadMaxFileSize: number;\n srcPrefix: string;\n}\n\nexport interface FileManagerSystem {\n version: string;\n tenant: string;\n}\n\nexport interface OnSettingsBeforeUpdateTopicParams {\n input: Partial<FileManagerSettings>;\n original: FileManagerSettings;\n settings: FileManagerSettings;\n}\n\nexport interface OnSettingsAfterUpdateTopicParams {\n input: Partial<FileManagerSettings>;\n original: FileManagerSettings;\n settings: FileManagerSettings;\n}\n\nexport type SettingsCRUD = {\n getSettings(): Promise<FileManagerSettings | null>;\n createSettings(data?: Partial<FileManagerSettings>): Promise<FileManagerSettings>;\n updateSettings(data: Partial<FileManagerSettings>): Promise<FileManagerSettings>;\n deleteSettings(): Promise<boolean>;\n\n onSettingsBeforeUpdate: Topic<OnSettingsBeforeUpdateTopicParams>;\n onSettingsAfterUpdate: Topic<OnSettingsAfterUpdateTopicParams>;\n};\n/********\n * Storage operations\n *******/\n\n/**\n * @category StorageOperations\n * @category SystemStorageOperations\n * @category SystemStorageOperationsParams\n */\nexport interface FileManagerSystemStorageOperationsUpdateParams {\n /**\n * The system data to be updated.\n */\n original: FileManagerSystem;\n /**\n * The system data with the updated fields.\n */\n data: FileManagerSystem;\n}\n/**\n * @category StorageOperations\n * @category SystemStorageOperations\n * @category SystemStorageOperationsParams\n */\nexport interface FileManagerSystemStorageOperationsCreateParams {\n /**\n * The system fields.\n */\n data: FileManagerSystem;\n}\n\nexport interface FileManagerSystemStorageOperationsGetParams {\n tenant: string;\n}\n\n/**\n * @category StorageOperations\n * @category SystemStorageOperations\n */\nexport interface FileManagerSystemStorageOperations {\n /**\n * Get the FileManager system data.\n */\n get: (params: FileManagerSystemStorageOperationsGetParams) => Promise<FileManagerSystem | null>;\n /**\n * Update the FileManager system data..\n */\n update: (params: FileManagerSystemStorageOperationsUpdateParams) => Promise<FileManagerSystem>;\n /**\n * Create the FileManagerSystemData\n */\n create: (params: FileManagerSystemStorageOperationsCreateParams) => Promise<FileManagerSystem>;\n}\n\n/**\n * @category StorageOperations\n * @category SettingsStorageOperations\n * @category SettingsStorageOperationsParams\n */\nexport interface FileManagerSettingsStorageOperationsUpdateParams {\n /**\n * Original settings to be updated.\n */\n original: FileManagerSettings;\n /**\n * The settings with the updated fields.\n */\n data: FileManagerSettings;\n}\n/**\n * @category StorageOperations\n * @category SettingsStorageOperations\n * @category SettingsStorageOperationsParams\n */\nexport interface FileManagerSettingsStorageOperationsCreateParams {\n /**\n * The settings fields.\n */\n data: FileManagerSettings;\n}\n\nexport interface FileManagerStorageOperationsGetSettingsParams {\n tenant: string;\n}\n\nexport interface FileManagerStorageOperationsDeleteSettings {\n tenant: string;\n}\n\n/**\n * @category StorageOperations\n * @category SettingsStorageOperations\n */\nexport interface FileManagerSettingsStorageOperations {\n /**\n * Get the FileManager system data.\n */\n get: (\n params: FileManagerStorageOperationsGetSettingsParams\n ) => Promise<FileManagerSettings | null>;\n /**\n * Create the FileManagerSettingsData\n */\n create: (\n params: FileManagerSettingsStorageOperationsCreateParams\n ) => Promise<FileManagerSettings>;\n /**\n * Update the FileManager system data..\n */\n update: (\n params: FileManagerSettingsStorageOperationsUpdateParams\n ) => Promise<FileManagerSettings>;\n /**\n * Delete the existing settings.\n */\n delete: (params: FileManagerStorageOperationsDeleteSettings) => Promise<void>;\n}\n\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsGetParams {\n where: {\n id: string;\n tenant: string;\n locale: string;\n };\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsCreateParams {\n file: File;\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsUpdateParams {\n original: File;\n file: File;\n}\n\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsDeleteParams {\n file: File;\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsCreateBatchParams {\n files: File[];\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsListParamsWhere {\n [key: string]: any;\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsListParams {\n where: FileManagerFilesStorageOperationsListParamsWhere;\n sort: CmsEntryListSort;\n limit: number;\n after: string | null;\n search?: string;\n}\n\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsListResponseMeta {\n hasMoreItems: boolean;\n totalCount: number;\n cursor: string | null;\n}\nexport type FileManagerFilesStorageOperationsListResponse = [\n File[],\n FileManagerFilesStorageOperationsListResponseMeta\n];\n\nexport interface FileManagerFilesStorageOperationsTagsResponse {\n tag: string;\n count: number;\n}\n\nexport interface FileManagerFilesStorageOperationsTagsParamsWhere extends FilesCrudListTagsWhere {\n locale: string;\n tenant: string;\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n * @category FilesStorageOperationsParams\n */\nexport interface FileManagerFilesStorageOperationsTagsParams {\n where: FileManagerFilesStorageOperationsTagsParamsWhere;\n limit: number;\n after?: string;\n}\n/**\n * @category StorageOperations\n * @category FilesStorageOperations\n */\nexport interface FileManagerFilesStorageOperations {\n /**\n * Get a single file with given ID from the storage.\n */\n get: (params: FileManagerFilesStorageOperationsGetParams) => Promise<File | null>;\n /**\n * Insert the file data into the database.\n */\n create: (params: FileManagerFilesStorageOperationsCreateParams) => Promise<File>;\n /**\n * Update the file data in the database.\n */\n update: (params: FileManagerFilesStorageOperationsUpdateParams) => Promise<File>;\n /**\n * Delete the file from the database.\n */\n delete: (params: FileManagerFilesStorageOperationsDeleteParams) => Promise<void>;\n /**\n * Store multiple files at once to the database.\n */\n createBatch: (params: FileManagerFilesStorageOperationsCreateBatchParams) => Promise<File[]>;\n /**\n * Get a list of files filtered by given parameters.\n */\n list: (\n params: FileManagerFilesStorageOperationsListParams\n ) => Promise<FileManagerFilesStorageOperationsListResponse>;\n /**\n * Get a list of all file tags filtered by given parameters.\n */\n tags: (\n params: FileManagerFilesStorageOperationsTagsParams\n ) => Promise<FileManagerFilesStorageOperationsTagsResponse[]>;\n}\n\nexport interface FileManagerAliasesStorageOperations {\n storeAliases(file: File): Promise<void>;\n deleteAliases(file: File): Promise<void>;\n}\n\nexport interface FileManagerStorageOperations<TContext = FileManagerContext> {\n beforeInit?: (context: TContext) => Promise<void>;\n files: FileManagerFilesStorageOperations;\n aliases: FileManagerAliasesStorageOperations;\n settings: FileManagerSettingsStorageOperations;\n system: FileManagerSystemStorageOperations;\n}\n"],"mappings":";;;;;AAWA,IAAAA,KAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,KAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,KAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,KAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,MAAA,GAAAT,OAAA;AACAC,MAAA,CAAAC,IAAA,CAAAO,MAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,MAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,MAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.createDownloadFilePlugins = void 0;
|
|
8
|
-
var _s = _interopRequireDefault(require("aws-sdk/clients/s3"));
|
|
9
|
-
var _sanitizeFilename = _interopRequireDefault(require("sanitize-filename"));
|
|
10
|
-
var _path = _interopRequireDefault(require("path"));
|
|
11
|
-
var _utils = require("../utils");
|
|
12
|
-
var _loaders = _interopRequireDefault(require("../transform/loaders"));
|
|
13
|
-
var _gateway = require("@webiny/handler-aws/gateway");
|
|
14
|
-
const MAX_RETURN_CONTENT_LENGTH = 5000000; // ~4.77MB
|
|
15
|
-
const DEFAULT_CACHE_MAX_AGE = 30758400; // 1 year
|
|
16
|
-
const PRESIGNED_URL_EXPIRATION = 900; // 15 minutes
|
|
17
|
-
/**
|
|
18
|
-
* Based on given path, extracts file key and additional options sent via query params.
|
|
19
|
-
*/
|
|
20
|
-
const extractFilenameOptions = request => {
|
|
21
|
-
const path = (0, _sanitizeFilename.default)(request.params.path);
|
|
22
|
-
return {
|
|
23
|
-
filename: decodeURI(path),
|
|
24
|
-
options: request.query,
|
|
25
|
-
extension: _path.default.extname(path)
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
const getS3Object = async (request, s3, context) => {
|
|
29
|
-
const {
|
|
30
|
-
options,
|
|
31
|
-
filename,
|
|
32
|
-
extension
|
|
33
|
-
} = extractFilenameOptions(request);
|
|
34
|
-
const params = (0, _utils.getObjectParams)(filename);
|
|
35
|
-
const objectHead = await s3.headObject(params).promise();
|
|
36
|
-
const contentLength = objectHead.ContentLength ? objectHead.ContentLength : 0;
|
|
37
|
-
for (const loader of _loaders.default) {
|
|
38
|
-
const canProcess = loader.canProcess({
|
|
39
|
-
context,
|
|
40
|
-
s3,
|
|
41
|
-
options,
|
|
42
|
-
file: {
|
|
43
|
-
name: filename,
|
|
44
|
-
extension,
|
|
45
|
-
contentLength
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
if (!canProcess) {
|
|
49
|
-
continue;
|
|
50
|
-
}
|
|
51
|
-
return loader.process({
|
|
52
|
-
context,
|
|
53
|
-
s3,
|
|
54
|
-
options,
|
|
55
|
-
file: {
|
|
56
|
-
name: filename,
|
|
57
|
-
extension,
|
|
58
|
-
contentLength
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// If no processors handled the file request, just return the S3 object taking its size into consideration.
|
|
64
|
-
let object;
|
|
65
|
-
if (contentLength < MAX_RETURN_CONTENT_LENGTH) {
|
|
66
|
-
object = await s3.getObject(params).promise();
|
|
67
|
-
}
|
|
68
|
-
return {
|
|
69
|
-
object,
|
|
70
|
-
params
|
|
71
|
-
};
|
|
72
|
-
};
|
|
73
|
-
const createDownloadFilePlugins = () => {
|
|
74
|
-
return [new _gateway.RoutePlugin(({
|
|
75
|
-
onGet,
|
|
76
|
-
context
|
|
77
|
-
}) => {
|
|
78
|
-
onGet("/files/:path", async (request, reply) => {
|
|
79
|
-
const {
|
|
80
|
-
region
|
|
81
|
-
} = (0, _utils.getEnvironment)();
|
|
82
|
-
const s3 = new _s.default({
|
|
83
|
-
region
|
|
84
|
-
});
|
|
85
|
-
const {
|
|
86
|
-
params,
|
|
87
|
-
object
|
|
88
|
-
} = await getS3Object(request, s3, context);
|
|
89
|
-
|
|
90
|
-
// If there's an "object", it means we can return its body directly.
|
|
91
|
-
if (object) {
|
|
92
|
-
return reply.headers({
|
|
93
|
-
"Content-Type": object.ContentType,
|
|
94
|
-
"Cache-Control": `public, max-age=${DEFAULT_CACHE_MAX_AGE}`,
|
|
95
|
-
"x-webiny-base64-encoded": true
|
|
96
|
-
}).send(object.Body || "");
|
|
97
|
-
}
|
|
98
|
-
const presignedUrl = s3.getSignedUrl("getObject", {
|
|
99
|
-
Bucket: params.Bucket,
|
|
100
|
-
Key: params.Key,
|
|
101
|
-
Expires: PRESIGNED_URL_EXPIRATION
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
// Lambda can return max 6MB of content, so if our object's size is larger, we are sending
|
|
105
|
-
// a 301 Redirect, redirecting the user to the public URL of the object in S3.
|
|
106
|
-
return reply.code(301).headers({
|
|
107
|
-
Location: presignedUrl,
|
|
108
|
-
"Cache-Control": "public, max-age=" + PRESIGNED_URL_EXPIRATION
|
|
109
|
-
}).send("");
|
|
110
|
-
});
|
|
111
|
-
})];
|
|
112
|
-
};
|
|
113
|
-
exports.createDownloadFilePlugins = createDownloadFilePlugins;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["MAX_RETURN_CONTENT_LENGTH","DEFAULT_CACHE_MAX_AGE","PRESIGNED_URL_EXPIRATION","extractFilenameOptions","request","path","sanitizeFilename","params","filename","decodeURI","options","query","extension","pathLib","extname","getS3Object","s3","context","getObjectParams","objectHead","headObject","promise","contentLength","ContentLength","loader","loaders","canProcess","file","name","process","object","getObject","createDownloadFilePlugins","RoutePlugin","onGet","reply","region","getEnvironment","S3","headers","ContentType","send","Body","presignedUrl","getSignedUrl","Bucket","Key","Expires","code","Location"],"sources":["index.ts"],"sourcesContent":["import S3 from \"aws-sdk/clients/s3\";\nimport sanitizeFilename from \"sanitize-filename\";\nimport pathLib from \"path\";\nimport { getEnvironment, getObjectParams } from \"../utils\";\nimport loaders from \"../transform/loaders\";\nimport { RoutePlugin } from \"@webiny/handler-aws/gateway\";\nimport { Context, Request } from \"@webiny/handler/types\";\nimport { ObjectParamsResponse } from \"~/handlers/utils/getObjectParams\";\n\nconst MAX_RETURN_CONTENT_LENGTH = 5000000; // ~4.77MB\nconst DEFAULT_CACHE_MAX_AGE = 30758400; // 1 year\nconst PRESIGNED_URL_EXPIRATION = 900; // 15 minutes\n/**\n * Based on given path, extracts file key and additional options sent via query params.\n */\nconst extractFilenameOptions = (request: Request) => {\n const path = sanitizeFilename((request.params as any).path);\n return {\n filename: decodeURI(path),\n options: request.query as any,\n extension: pathLib.extname(path)\n };\n};\n\ninterface S3Object {\n object?: S3.Types.GetObjectOutput;\n params: ObjectParamsResponse;\n}\n\nconst getS3Object = async (request: Request, s3: S3, context: Context): Promise<S3Object> => {\n const { options, filename, extension } = extractFilenameOptions(request);\n const params = getObjectParams(filename);\n const objectHead = await s3.headObject(params).promise();\n const contentLength = objectHead.ContentLength ? objectHead.ContentLength : 0;\n\n for (const loader of loaders) {\n const canProcess = loader.canProcess({\n context,\n s3,\n options,\n file: {\n name: filename,\n extension,\n contentLength\n }\n });\n\n if (!canProcess) {\n continue;\n }\n return loader.process({\n context,\n s3,\n options,\n file: {\n name: filename,\n extension,\n contentLength\n }\n });\n }\n\n // If no processors handled the file request, just return the S3 object taking its size into consideration.\n let object;\n if (contentLength < MAX_RETURN_CONTENT_LENGTH) {\n object = await s3.getObject(params).promise();\n }\n\n return { object, params };\n};\n\nexport const createDownloadFilePlugins = () => {\n return [\n new RoutePlugin(({ onGet, context }) => {\n onGet(\"/files/:path\", async (request, reply) => {\n const { region } = getEnvironment();\n const s3 = new S3({ region });\n\n const { params, object } = await getS3Object(request, s3, context);\n\n // If there's an \"object\", it means we can return its body directly.\n if (object) {\n return reply\n .headers({\n \"Content-Type\": object.ContentType,\n \"Cache-Control\": `public, max-age=${DEFAULT_CACHE_MAX_AGE}`,\n \"x-webiny-base64-encoded\": true\n })\n .send(object.Body || \"\");\n }\n\n const presignedUrl = s3.getSignedUrl(\"getObject\", {\n Bucket: params.Bucket,\n Key: params.Key,\n Expires: PRESIGNED_URL_EXPIRATION\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 return reply\n .code(301)\n .headers({\n Location: presignedUrl,\n \"Cache-Control\": \"public, max-age=\" + PRESIGNED_URL_EXPIRATION\n })\n .send(\"\");\n });\n })\n ];\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AAIA,MAAMA,yBAAyB,GAAG,OAAO,CAAC,CAAC;AAC3C,MAAMC,qBAAqB,GAAG,QAAQ,CAAC,CAAC;AACxC,MAAMC,wBAAwB,GAAG,GAAG,CAAC,CAAC;AACtC;AACA;AACA;AACA,MAAMC,sBAAsB,GAAIC,OAAgB,IAAK;EACjD,MAAMC,IAAI,GAAG,IAAAC,yBAAgB,EAAEF,OAAO,CAACG,MAAM,CAASF,IAAI,CAAC;EAC3D,OAAO;IACHG,QAAQ,EAAEC,SAAS,CAACJ,IAAI,CAAC;IACzBK,OAAO,EAAEN,OAAO,CAACO,KAAY;IAC7BC,SAAS,EAAEC,aAAO,CAACC,OAAO,CAACT,IAAI;EACnC,CAAC;AACL,CAAC;AAOD,MAAMU,WAAW,GAAG,OAAOX,OAAgB,EAAEY,EAAM,EAAEC,OAAgB,KAAwB;EACzF,MAAM;IAAEP,OAAO;IAAEF,QAAQ;IAAEI;EAAU,CAAC,GAAGT,sBAAsB,CAACC,OAAO,CAAC;EACxE,MAAMG,MAAM,GAAG,IAAAW,sBAAe,EAACV,QAAQ,CAAC;EACxC,MAAMW,UAAU,GAAG,MAAMH,EAAE,CAACI,UAAU,CAACb,MAAM,CAAC,CAACc,OAAO,EAAE;EACxD,MAAMC,aAAa,GAAGH,UAAU,CAACI,aAAa,GAAGJ,UAAU,CAACI,aAAa,GAAG,CAAC;EAE7E,KAAK,MAAMC,MAAM,IAAIC,gBAAO,EAAE;IAC1B,MAAMC,UAAU,GAAGF,MAAM,CAACE,UAAU,CAAC;MACjCT,OAAO;MACPD,EAAE;MACFN,OAAO;MACPiB,IAAI,EAAE;QACFC,IAAI,EAAEpB,QAAQ;QACdI,SAAS;QACTU;MACJ;IACJ,CAAC,CAAC;IAEF,IAAI,CAACI,UAAU,EAAE;MACb;IACJ;IACA,OAAOF,MAAM,CAACK,OAAO,CAAC;MAClBZ,OAAO;MACPD,EAAE;MACFN,OAAO;MACPiB,IAAI,EAAE;QACFC,IAAI,EAAEpB,QAAQ;QACdI,SAAS;QACTU;MACJ;IACJ,CAAC,CAAC;EACN;;EAEA;EACA,IAAIQ,MAAM;EACV,IAAIR,aAAa,GAAGtB,yBAAyB,EAAE;IAC3C8B,MAAM,GAAG,MAAMd,EAAE,CAACe,SAAS,CAACxB,MAAM,CAAC,CAACc,OAAO,EAAE;EACjD;EAEA,OAAO;IAAES,MAAM;IAAEvB;EAAO,CAAC;AAC7B,CAAC;AAEM,MAAMyB,yBAAyB,GAAG,MAAM;EAC3C,OAAO,CACH,IAAIC,oBAAW,CAAC,CAAC;IAAEC,KAAK;IAAEjB;EAAQ,CAAC,KAAK;IACpCiB,KAAK,CAAC,cAAc,EAAE,OAAO9B,OAAO,EAAE+B,KAAK,KAAK;MAC5C,MAAM;QAAEC;MAAO,CAAC,GAAG,IAAAC,qBAAc,GAAE;MACnC,MAAMrB,EAAE,GAAG,IAAIsB,UAAE,CAAC;QAAEF;MAAO,CAAC,CAAC;MAE7B,MAAM;QAAE7B,MAAM;QAAEuB;MAAO,CAAC,GAAG,MAAMf,WAAW,CAACX,OAAO,EAAEY,EAAE,EAAEC,OAAO,CAAC;;MAElE;MACA,IAAIa,MAAM,EAAE;QACR,OAAOK,KAAK,CACPI,OAAO,CAAC;UACL,cAAc,EAAET,MAAM,CAACU,WAAW;UAClC,eAAe,EAAG,mBAAkBvC,qBAAsB,EAAC;UAC3D,yBAAyB,EAAE;QAC/B,CAAC,CAAC,CACDwC,IAAI,CAACX,MAAM,CAACY,IAAI,IAAI,EAAE,CAAC;MAChC;MAEA,MAAMC,YAAY,GAAG3B,EAAE,CAAC4B,YAAY,CAAC,WAAW,EAAE;QAC9CC,MAAM,EAAEtC,MAAM,CAACsC,MAAM;QACrBC,GAAG,EAAEvC,MAAM,CAACuC,GAAG;QACfC,OAAO,EAAE7C;MACb,CAAC,CAAC;;MAEF;MACA;MACA,OAAOiC,KAAK,CACPa,IAAI,CAAC,GAAG,CAAC,CACTT,OAAO,CAAC;QACLU,QAAQ,EAAEN,YAAY;QACtB,eAAe,EAAE,kBAAkB,GAAGzC;MAC1C,CAAC,CAAC,CACDuC,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC,CAAC;EACN,CAAC,CAAC,CACL;AACL,CAAC;AAAC"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.createTransformFilePlugins = void 0;
|
|
8
|
-
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
|
-
var _s = _interopRequireDefault(require("aws-sdk/clients/s3"));
|
|
10
|
-
var _transformImage = _interopRequireDefault(require("./transformImage"));
|
|
11
|
-
var _optimizeImage = _interopRequireDefault(require("./optimizeImage"));
|
|
12
|
-
var _utils = require("../utils");
|
|
13
|
-
var _utils2 = require("./utils");
|
|
14
|
-
var _handler = require("@webiny/handler");
|
|
15
|
-
const createTransformFilePlugins = () => {
|
|
16
|
-
return [(0, _handler.createEvent)(async ({
|
|
17
|
-
payload
|
|
18
|
-
}) => {
|
|
19
|
-
const {
|
|
20
|
-
body
|
|
21
|
-
} = payload;
|
|
22
|
-
const {
|
|
23
|
-
key,
|
|
24
|
-
transformations
|
|
25
|
-
} = body;
|
|
26
|
-
try {
|
|
27
|
-
const env = (0, _utils.getEnvironment)();
|
|
28
|
-
const s3 = new _s.default({
|
|
29
|
-
region: env.region
|
|
30
|
-
});
|
|
31
|
-
let optimizedImageObject;
|
|
32
|
-
const params = {
|
|
33
|
-
initial: (0, _utils.getObjectParams)(key),
|
|
34
|
-
optimized: (0, _utils.getObjectParams)((0, _utils2.getImageKey)({
|
|
35
|
-
key
|
|
36
|
-
})),
|
|
37
|
-
optimizedTransformed: (0, _utils.getObjectParams)((0, _utils2.getImageKey)({
|
|
38
|
-
key,
|
|
39
|
-
transformations
|
|
40
|
-
}))
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
// 1. Get optimized image.
|
|
44
|
-
try {
|
|
45
|
-
optimizedImageObject = await s3.getObject(params.optimized).promise();
|
|
46
|
-
} catch (e) {
|
|
47
|
-
// If not found, try to create it by loading the initially uploaded image.
|
|
48
|
-
optimizedImageObject = await s3.getObject(params.initial).promise();
|
|
49
|
-
await s3.putObject((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params.optimized), {}, {
|
|
50
|
-
ContentType: optimizedImageObject.ContentType,
|
|
51
|
-
Body: await (0, _optimizeImage.default)(optimizedImageObject.Body, optimizedImageObject.ContentType)
|
|
52
|
-
})).promise();
|
|
53
|
-
optimizedImageObject = await s3.getObject(params.optimized).promise();
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// 2. If no transformations requested, just exit.
|
|
57
|
-
if (!transformations) {
|
|
58
|
-
return {
|
|
59
|
-
error: false,
|
|
60
|
-
message: ""
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// 3. If transformations requested, apply them in save it into the bucket.
|
|
65
|
-
await s3.putObject((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params.optimizedTransformed), {}, {
|
|
66
|
-
ContentType: optimizedImageObject.ContentType,
|
|
67
|
-
Body: await (0, _transformImage.default)(optimizedImageObject.Body, transformations)
|
|
68
|
-
})).promise();
|
|
69
|
-
return {
|
|
70
|
-
error: false,
|
|
71
|
-
message: ""
|
|
72
|
-
};
|
|
73
|
-
} catch (e) {
|
|
74
|
-
return {
|
|
75
|
-
error: true,
|
|
76
|
-
message: e.message
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
})];
|
|
80
|
-
};
|
|
81
|
-
exports.createTransformFilePlugins = createTransformFilePlugins;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["createTransformFilePlugins","createEvent","payload","body","key","transformations","env","getEnvironment","s3","S3","region","optimizedImageObject","params","initial","getObjectParams","optimized","getImageKey","optimizedTransformed","getObject","promise","e","putObject","ContentType","Body","optimizeImage","error","message","transformImage"],"sources":["index.ts"],"sourcesContent":["import S3 from \"aws-sdk/clients/s3\";\nimport transformImage from \"./transformImage\";\nimport optimizeImage from \"./optimizeImage\";\nimport { getEnvironment, getObjectParams } from \"../utils\";\nimport { getImageKey } from \"./utils\";\nimport { TransformHandlerEventPayload } from \"~/handlers/types\";\nimport { createEvent } from \"@webiny/handler\";\n\nexport const createTransformFilePlugins = () => {\n return [\n createEvent<TransformHandlerEventPayload>(async ({ payload }) => {\n const { body } = payload;\n const { key, transformations } = body;\n try {\n const env = getEnvironment();\n const s3 = new S3({ region: env.region });\n\n let optimizedImageObject: S3.Types.GetObjectOutput;\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 as Buffer,\n optimizedImageObject.ContentType as string\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 {\n error: false,\n message: \"\"\n };\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(\n optimizedImageObject.Body as Buffer,\n transformations\n )\n })\n .promise();\n\n return {\n error: false,\n message: \"\"\n };\n } catch (e) {\n return {\n error: true,\n message: e.message\n };\n }\n })\n ];\n};\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AAEA;AAEO,MAAMA,0BAA0B,GAAG,MAAM;EAC5C,OAAO,CACH,IAAAC,oBAAW,EAA+B,OAAO;IAAEC;EAAQ,CAAC,KAAK;IAC7D,MAAM;MAAEC;IAAK,CAAC,GAAGD,OAAO;IACxB,MAAM;MAAEE,GAAG;MAAEC;IAAgB,CAAC,GAAGF,IAAI;IACrC,IAAI;MACA,MAAMG,GAAG,GAAG,IAAAC,qBAAc,GAAE;MAC5B,MAAMC,EAAE,GAAG,IAAIC,UAAE,CAAC;QAAEC,MAAM,EAAEJ,GAAG,CAACI;MAAO,CAAC,CAAC;MAEzC,IAAIC,oBAA8C;MAElD,MAAMC,MAAM,GAAG;QACXC,OAAO,EAAE,IAAAC,sBAAe,EAACV,GAAG,CAAC;QAC7BW,SAAS,EAAE,IAAAD,sBAAe,EAAC,IAAAE,mBAAW,EAAC;UAAEZ;QAAI,CAAC,CAAC,CAAC;QAChDa,oBAAoB,EAAE,IAAAH,sBAAe,EAAC,IAAAE,mBAAW,EAAC;UAAEZ,GAAG;UAAEC;QAAgB,CAAC,CAAC;MAC/E,CAAC;;MAED;MACA,IAAI;QACAM,oBAAoB,GAAG,MAAMH,EAAE,CAACU,SAAS,CAACN,MAAM,CAACG,SAAS,CAAC,CAACI,OAAO,EAAE;MACzE,CAAC,CAAC,OAAOC,CAAC,EAAE;QACR;QACAT,oBAAoB,GAAG,MAAMH,EAAE,CAACU,SAAS,CAACN,MAAM,CAACC,OAAO,CAAC,CAACM,OAAO,EAAE;QAEnE,MAAMX,EAAE,CACHa,SAAS,6DACHT,MAAM,CAACG,SAAS;UACnBO,WAAW,EAAEX,oBAAoB,CAACW,WAAW;UAC7CC,IAAI,EAAE,MAAM,IAAAC,sBAAa,EACrBb,oBAAoB,CAACY,IAAI,EACzBZ,oBAAoB,CAACW,WAAW;QACnC,GACH,CACDH,OAAO,EAAE;QAEdR,oBAAoB,GAAG,MAAMH,EAAE,CAACU,SAAS,CAACN,MAAM,CAACG,SAAS,CAAC,CAACI,OAAO,EAAE;MACzE;;MAEA;MACA,IAAI,CAACd,eAAe,EAAE;QAClB,OAAO;UACHoB,KAAK,EAAE,KAAK;UACZC,OAAO,EAAE;QACb,CAAC;MACL;;MAEA;MACA,MAAMlB,EAAE,CACHa,SAAS,6DACHT,MAAM,CAACK,oBAAoB;QAC9BK,WAAW,EAAEX,oBAAoB,CAACW,WAAW;QAC7CC,IAAI,EAAE,MAAM,IAAAI,uBAAc,EACtBhB,oBAAoB,CAACY,IAAI,EACzBlB,eAAe;MAClB,GACH,CACDc,OAAO,EAAE;MAEd,OAAO;QACHM,KAAK,EAAE,KAAK;QACZC,OAAO,EAAE;MACb,CAAC;IACL,CAAC,CAAC,OAAON,CAAC,EAAE;MACR,OAAO;QACHK,KAAK,EAAE,IAAI;QACXC,OAAO,EAAEN,CAAC,CAACM;MACf,CAAC;IACL;EACJ,CAAC,CAAC,CACL;AACL,CAAC;AAAC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { ClientContext } from "@webiny/handler-client/types";
|
|
2
|
-
import S3 from "aws-sdk/clients/s3";
|
|
3
|
-
interface File {
|
|
4
|
-
extension: string;
|
|
5
|
-
name: string;
|
|
6
|
-
contentLength: number;
|
|
7
|
-
}
|
|
8
|
-
interface Options {
|
|
9
|
-
width?: string;
|
|
10
|
-
}
|
|
11
|
-
export interface CanProcessParams {
|
|
12
|
-
s3: S3;
|
|
13
|
-
file: File;
|
|
14
|
-
options?: Options;
|
|
15
|
-
context: ClientContext;
|
|
16
|
-
}
|
|
17
|
-
export interface ProcessParams {
|
|
18
|
-
s3: S3;
|
|
19
|
-
file: File;
|
|
20
|
-
options?: Options;
|
|
21
|
-
context: ClientContext;
|
|
22
|
-
}
|
|
23
|
-
declare const _default: {
|
|
24
|
-
canProcess: (params: CanProcessParams) => boolean;
|
|
25
|
-
process({ s3, file, options, context }: ProcessParams): Promise<{
|
|
26
|
-
object: import("aws-sdk/lib/request").PromiseResult<S3.GetObjectOutput, import("aws-sdk/lib/error").AWSError>;
|
|
27
|
-
params: import("../../utils/getObjectParams").ObjectParamsResponse;
|
|
28
|
-
}>;
|
|
29
|
-
};
|
|
30
|
-
export default _default;
|