@webiny/api-file-manager 6.4.11 → 6.6.0-alpha.1
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/FileManagerAppFeature.d.ts +5 -0
- package/FileManagerAppFeature.js +21 -0
- package/FileManagerAppFeature.js.map +1 -0
- package/delivery/AssetDelivery/AssetRequest.d.ts +1 -1
- package/delivery/AssetDelivery/AssetRequest.js.map +1 -1
- package/delivery/AssetDeliveryRoute.d.ts +23 -0
- package/delivery/AssetDeliveryRoute.js +58 -0
- package/delivery/AssetDeliveryRoute.js.map +1 -0
- package/delivery/setupAssetDelivery.d.ts +1 -1
- package/delivery/setupAssetDelivery.js +1 -66
- package/delivery/setupAssetDelivery.js.map +1 -1
- package/domain/file/abstractions.d.ts +13 -5
- package/domain/file/abstractions.js +2 -2
- package/domain/file/abstractions.js.map +1 -1
- package/domain/file/file.model.d.ts +3 -3
- package/domain/file/file.model.js +10 -6
- package/domain/file/file.model.js.map +1 -1
- package/domain/settings/validation.js +1 -1
- package/domain/settings/validation.js.map +1 -1
- package/exports/api/file-manager/assetDelivery.d.ts +10 -0
- package/exports/api/file-manager/assetDelivery.js +8 -0
- package/exports/api/file-manager/file.d.ts +1 -0
- package/exports/api/file-manager/file.js +1 -0
- package/features/FileManagerFeature.js +6 -0
- package/features/FileManagerFeature.js.map +1 -1
- package/features/assetDelivery/Asset/Asset.d.ts +8 -0
- package/features/assetDelivery/Asset/Asset.js +14 -0
- package/features/assetDelivery/Asset/Asset.js.map +1 -0
- package/features/assetDelivery/Asset/abstractions.d.ts +10 -0
- package/features/assetDelivery/Asset/abstractions.js +5 -0
- package/features/assetDelivery/Asset/abstractions.js.map +1 -0
- package/features/assetDelivery/Asset/index.d.ts +1 -0
- package/features/assetDelivery/Asset/index.js +1 -0
- package/features/assetDelivery/FilesAssetRequestResolver.js +2 -2
- package/features/assetDelivery/FilesAssetRequestResolver.js.map +1 -1
- package/features/assetDelivery/ObjectKey/ObjectKey.d.ts +8 -0
- package/features/assetDelivery/ObjectKey/ObjectKey.js +28 -0
- package/features/assetDelivery/ObjectKey/ObjectKey.js.map +1 -0
- package/features/assetDelivery/ObjectKey/abstractions.d.ts +12 -0
- package/features/assetDelivery/ObjectKey/abstractions.js +5 -0
- package/features/assetDelivery/ObjectKey/abstractions.js.map +1 -0
- package/features/assetDelivery/ObjectKey/index.d.ts +1 -0
- package/features/assetDelivery/ObjectKey/index.js +1 -0
- package/features/assetDelivery/StreamAssetReply/StreamAssetReply.d.ts +8 -0
- package/features/assetDelivery/StreamAssetReply/StreamAssetReply.js +22 -0
- package/features/assetDelivery/StreamAssetReply/StreamAssetReply.js.map +1 -0
- package/features/assetDelivery/StreamAssetReply/abstractions.d.ts +11 -0
- package/features/assetDelivery/StreamAssetReply/abstractions.js +5 -0
- package/features/assetDelivery/StreamAssetReply/abstractions.js.map +1 -0
- package/features/assetDelivery/StreamAssetReply/index.d.ts +1 -0
- package/features/assetDelivery/StreamAssetReply/index.js +1 -0
- package/features/assetDelivery/abstractions/AssetType.d.ts +17 -0
- package/features/assetDelivery/abstractions/AssetType.js +5 -0
- package/features/assetDelivery/abstractions/AssetType.js.map +1 -0
- package/features/assetDelivery/abstractions.d.ts +23 -12
- package/features/assetDelivery/abstractions.js.map +1 -1
- package/features/assetDelivery/assetTypes/image/AssetKeyGenerator.d.ts +12 -0
- package/features/assetDelivery/assetTypes/image/AssetKeyGenerator.js +30 -0
- package/features/assetDelivery/assetTypes/image/AssetKeyGenerator.js.map +1 -0
- package/features/assetDelivery/assetTypes/image/ImageAssetType.d.ts +9 -0
- package/features/assetDelivery/assetTypes/image/ImageAssetType.js +18 -0
- package/features/assetDelivery/assetTypes/image/ImageAssetType.js.map +1 -0
- package/features/assetDelivery/assetTypes/image/ImageAssetTypeHandler.d.ts +5 -0
- package/features/assetDelivery/assetTypes/image/ImageAssetTypeHandler.js +5 -0
- package/features/assetDelivery/assetTypes/image/ImageAssetTypeHandler.js.map +1 -0
- package/features/assetDelivery/assetTypes/image/SharpTransformer.d.ts +18 -0
- package/features/assetDelivery/assetTypes/image/SharpTransformer.js +47 -0
- package/features/assetDelivery/assetTypes/image/SharpTransformer.js.map +1 -0
- package/features/assetDelivery/assetTypes/image/WidthCollection.d.ts +8 -0
- package/features/assetDelivery/assetTypes/image/WidthCollection.js +22 -0
- package/features/assetDelivery/assetTypes/image/WidthCollection.js.map +1 -0
- package/features/assetDelivery/assetTypes/image/imageFormat.d.ts +26 -0
- package/features/assetDelivery/assetTypes/image/imageFormat.js +51 -0
- package/features/assetDelivery/assetTypes/image/imageFormat.js.map +1 -0
- package/features/assetDelivery/assetTypes/image/imageTypes.d.ts +39 -0
- package/features/assetDelivery/assetTypes/image/imageTypes.js +0 -0
- package/features/assetDelivery/assetTypes/image/index.d.ts +5 -0
- package/features/assetDelivery/assetTypes/image/index.js +4 -0
- package/features/assetDelivery/assetTypes/image/normalizeImageOptions.d.ts +6 -0
- package/features/assetDelivery/assetTypes/image/normalizeImageOptions.js +56 -0
- package/features/assetDelivery/assetTypes/image/normalizeImageOptions.js.map +1 -0
- package/features/assetDelivery/assetTypes/image/transformImage.d.ts +59 -0
- package/features/assetDelivery/assetTypes/image/transformImage.js +146 -0
- package/features/assetDelivery/assetTypes/image/transformImage.js.map +1 -0
- package/features/assetDelivery/assetTypes/image/utils.d.ts +26 -0
- package/features/assetDelivery/assetTypes/image/utils.js +47 -0
- package/features/assetDelivery/assetTypes/image/utils.js.map +1 -0
- package/features/assetDelivery/feature.js +13 -7
- package/features/assetDelivery/feature.js.map +1 -1
- package/features/assetDelivery/privateFiles/PrivateFileAssetRequestResolver.js +2 -2
- package/features/assetDelivery/privateFiles/PrivateFileAssetRequestResolver.js.map +1 -1
- package/features/assetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +1 -1
- package/features/assetDelivery/transformation/CallableContentsReader.d.ts +11 -0
- package/features/assetDelivery/transformation/CallableContentsReader.js +14 -0
- package/features/assetDelivery/transformation/CallableContentsReader.js.map +1 -0
- package/features/assetDelivery/transformation/TransformationAssetProcessor.d.ts +4 -6
- package/features/assetDelivery/transformation/TransformationAssetProcessor.js +13 -11
- package/features/assetDelivery/transformation/TransformationAssetProcessor.js.map +1 -1
- package/features/assetDelivery/transformation/index.d.ts +5 -0
- package/features/assetDelivery/transformation/index.js +4 -0
- package/features/extractMetadata/ExtractMetadataHandler.d.ts +11 -0
- package/features/extractMetadata/ExtractMetadataHandler.js +25 -0
- package/features/extractMetadata/ExtractMetadataHandler.js.map +1 -0
- package/features/extractMetadata/ExtractMetadataInput.d.ts +3 -0
- package/features/extractMetadata/ExtractMetadataInput.js +0 -0
- package/features/file/CreateFile/CreateFileRepository.d.ts +3 -3
- package/features/file/CreateFile/CreateFileRepository.js +6 -5
- package/features/file/CreateFile/CreateFileRepository.js.map +1 -1
- package/features/file/DeleteFile/DeleteFileRepository.d.ts +3 -3
- package/features/file/DeleteFile/DeleteFileRepository.js +6 -5
- package/features/file/DeleteFile/DeleteFileRepository.js.map +1 -1
- package/features/file/FileModelProvider.d.ts +31 -0
- package/features/file/FileModelProvider.js +22 -0
- package/features/file/FileModelProvider.js.map +1 -0
- package/features/file/FileUrlGenerator/FileUrlGenerator.d.ts +14 -0
- package/features/file/FileUrlGenerator/FileUrlGenerator.js +25 -0
- package/features/file/FileUrlGenerator/FileUrlGenerator.js.map +1 -0
- package/features/file/FileUrlGenerator/abstractions.d.ts +3 -3
- package/features/file/FileUrlGenerator/abstractions.js +1 -1
- package/features/file/FileUrlGenerator/abstractions.js.map +1 -1
- package/features/file/FileUrlGenerator/feature.d.ts +4 -0
- package/features/file/FileUrlGenerator/feature.js +11 -0
- package/features/file/FileUrlGenerator/feature.js.map +1 -0
- package/features/file/FileUrlGenerator/index.d.ts +1 -0
- package/features/file/FileUrlGenerator/index.js +1 -0
- package/features/file/GetFile/GetFileRepository.d.ts +3 -3
- package/features/file/GetFile/GetFileRepository.js +6 -5
- package/features/file/GetFile/GetFileRepository.js.map +1 -1
- package/features/file/GetFileByUrl/GetFileByUrlUseCase.d.ts +15 -0
- package/features/file/GetFileByUrl/GetFileByUrlUseCase.js +37 -0
- package/features/file/GetFileByUrl/GetFileByUrlUseCase.js.map +1 -0
- package/features/file/GetFileByUrl/abstractions.d.ts +18 -0
- package/features/file/GetFileByUrl/abstractions.js +5 -0
- package/features/file/GetFileByUrl/abstractions.js.map +1 -0
- package/features/file/GetFileByUrl/feature.d.ts +4 -0
- package/features/file/GetFileByUrl/feature.js +11 -0
- package/features/file/GetFileByUrl/feature.js.map +1 -0
- package/features/file/GetFileByUrl/index.d.ts +1 -0
- package/features/file/GetFileByUrl/index.js +1 -0
- package/features/file/ListFiles/ListFilesRepository.d.ts +3 -3
- package/features/file/ListFiles/ListFilesRepository.js +8 -7
- package/features/file/ListFiles/ListFilesRepository.js.map +1 -1
- package/features/file/ListImagesByTagTool/ListImagesByTagTool.d.ts +5 -0
- package/features/file/ListImagesByTagTool/ListImagesByTagTool.js +5 -0
- package/features/file/ListImagesByTagTool/ListImagesByTagTool.js.map +1 -1
- package/features/file/ListTags/ListTagsRepository.d.ts +3 -3
- package/features/file/ListTags/ListTagsRepository.js +7 -6
- package/features/file/ListTags/ListTagsRepository.js.map +1 -1
- package/features/file/UpdateFile/UpdateFileRepository.d.ts +3 -3
- package/features/file/UpdateFile/UpdateFileRepository.js +6 -5
- package/features/file/UpdateFile/UpdateFileRepository.js.map +1 -1
- package/features/settings/SettingsInstaller/SettingsInstaller.d.ts +3 -1
- package/features/settings/SettingsInstaller/SettingsInstaller.js +7 -4
- package/features/settings/SettingsInstaller/SettingsInstaller.js.map +1 -1
- package/features/settings/UpdateSettings/UpdateSettingsUseCase.js +0 -1
- package/features/settings/UpdateSettings/UpdateSettingsUseCase.js.map +1 -1
- package/features/upload/CompleteMultiPartUpload/abstractions.d.ts +12 -0
- package/features/upload/CompleteMultiPartUpload/abstractions.js +5 -0
- package/features/upload/CompleteMultiPartUpload/abstractions.js.map +1 -0
- package/features/upload/CompleteMultiPartUpload/index.d.ts +1 -0
- package/features/upload/CompleteMultiPartUpload/index.js +1 -0
- package/features/upload/CreateMultiPartUpload/abstractions.d.ts +14 -0
- package/features/upload/CreateMultiPartUpload/abstractions.js +5 -0
- package/features/upload/CreateMultiPartUpload/abstractions.js.map +1 -0
- package/features/upload/CreateMultiPartUpload/index.d.ts +1 -0
- package/features/upload/CreateMultiPartUpload/index.js +1 -0
- package/features/upload/GetUploadPayload/abstractions.d.ts +10 -0
- package/features/upload/GetUploadPayload/abstractions.js +5 -0
- package/features/upload/GetUploadPayload/abstractions.js.map +1 -0
- package/features/upload/GetUploadPayload/index.d.ts +1 -0
- package/features/upload/GetUploadPayload/index.js +1 -0
- package/features/upload/ReadFileMetadata/MetadataReader.d.ts +11 -0
- package/features/upload/ReadFileMetadata/MetadataReader.js +21 -0
- package/features/upload/ReadFileMetadata/MetadataReader.js.map +1 -0
- package/features/upload/ReadFileMetadata/abstractions.d.ts +15 -0
- package/features/upload/ReadFileMetadata/abstractions.js +5 -0
- package/features/upload/ReadFileMetadata/abstractions.js.map +1 -0
- package/features/upload/ReadFileMetadata/feature.d.ts +4 -0
- package/features/upload/ReadFileMetadata/feature.js +11 -0
- package/features/upload/ReadFileMetadata/feature.js.map +1 -0
- package/features/upload/ReadFileMetadata/index.d.ts +1 -0
- package/features/upload/ReadFileMetadata/index.js +1 -0
- package/features/upload/WriteFileMetadata/MetadataWriter.d.ts +14 -0
- package/features/upload/WriteFileMetadata/MetadataWriter.js +36 -0
- package/features/upload/WriteFileMetadata/MetadataWriter.js.map +1 -0
- package/features/upload/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.d.ts +11 -0
- package/features/upload/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.js +20 -0
- package/features/upload/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.js.map +1 -0
- package/features/upload/WriteFileMetadata/WriteMetadataAfterCreateHandler.d.ts +11 -0
- package/features/upload/WriteFileMetadata/WriteMetadataAfterCreateHandler.js +22 -0
- package/features/upload/WriteFileMetadata/WriteMetadataAfterCreateHandler.js.map +1 -0
- package/features/upload/WriteFileMetadata/WriteMetadataAfterUpdateHandler.d.ts +11 -0
- package/features/upload/WriteFileMetadata/WriteMetadataAfterUpdateHandler.js +22 -0
- package/features/upload/WriteFileMetadata/WriteMetadataAfterUpdateHandler.js.map +1 -0
- package/features/upload/WriteFileMetadata/abstractions.d.ts +9 -0
- package/features/upload/WriteFileMetadata/abstractions.js +5 -0
- package/features/upload/WriteFileMetadata/abstractions.js.map +1 -0
- package/features/upload/WriteFileMetadata/feature.d.ts +4 -0
- package/features/upload/WriteFileMetadata/feature.js +17 -0
- package/features/upload/WriteFileMetadata/feature.js.map +1 -0
- package/features/upload/index.d.ts +17 -0
- package/features/upload/index.js +10 -0
- package/features/upload/types.d.ts +28 -0
- package/features/upload/types.js +0 -0
- package/features/upload/utils/FileExtension.d.ts +6 -0
- package/features/upload/utils/FileExtension.js +16 -0
- package/features/upload/utils/FileExtension.js.map +1 -0
- package/features/upload/utils/FileKey.d.ts +11 -0
- package/features/upload/utils/FileKey.js +33 -0
- package/features/upload/utils/FileKey.js.map +1 -0
- package/features/upload/utils/FileNormalizer.d.ts +13 -0
- package/features/upload/utils/FileNormalizer.js +41 -0
- package/features/upload/utils/FileNormalizer.js.map +1 -0
- package/features/upload/utils/FileUploadModifier.d.ts +30 -0
- package/features/upload/utils/FileUploadModifier.js +39 -0
- package/features/upload/utils/FileUploadModifier.js.map +1 -0
- package/features/upload/utils/checkPermissions.d.ts +5 -0
- package/features/upload/utils/checkPermissions.js +22 -0
- package/features/upload/utils/checkPermissions.js.map +1 -0
- package/features/upload/utils/createFileNormalizerFromContext.d.ts +3 -0
- package/features/upload/utils/createFileNormalizerFromContext.js +9 -0
- package/features/upload/utils/createFileNormalizerFromContext.js.map +1 -0
- package/features/upload/utils/mimeTypes.d.ts +1 -0
- package/features/upload/utils/mimeTypes.js +9 -0
- package/features/upload/utils/mimeTypes.js.map +1 -0
- package/graphql/FmGraphQLSchema.d.ts +25 -0
- package/graphql/FmGraphQLSchema.js +452 -0
- package/graphql/FmGraphQLSchema.js.map +1 -0
- package/index.d.ts +3 -6
- package/index.js +3 -33
- package/index.js.map +1 -1
- package/package.json +23 -17
- package/features/assetDelivery/transformation/PassthroughAssetTransformationStrategy.d.ts +0 -9
- package/features/assetDelivery/transformation/PassthroughAssetTransformationStrategy.js +0 -13
- package/features/assetDelivery/transformation/PassthroughAssetTransformationStrategy.js.map +0 -1
- package/graphql/baseSchema.d.ts +0 -3
- package/graphql/baseSchema.js +0 -100
- package/graphql/baseSchema.js.map +0 -1
- package/graphql/createFilesTypeDefs.d.ts +0 -8
- package/graphql/createFilesTypeDefs.js +0 -191
- package/graphql/createFilesTypeDefs.js.map +0 -1
- package/graphql/filesSchema.d.ts +0 -4
- package/graphql/filesSchema.js +0 -97
- package/graphql/filesSchema.js.map +0 -1
- package/graphql/getFileByUrl.d.ts +0 -3
- package/graphql/getFileByUrl.js +0 -64
- package/graphql/getFileByUrl.js.map +0 -1
- package/graphql/index.d.ts +0 -4
- package/graphql/index.js +0 -48
- package/graphql/index.js.map +0 -1
- package/graphql/utils.d.ts +0 -11
- package/graphql/utils.js +0 -12
- package/graphql/utils.js.map +0 -1
- package/modelModifier/CmsModelModifier.d.ts +0 -26
- package/modelModifier/CmsModelModifier.js +0 -51
- package/modelModifier/CmsModelModifier.js.map +0 -1
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { AssetDeliveryFeature } from "./features/assetDelivery/feature.js";
|
|
3
|
+
import { AssetDeliveryRouteDefinition } from "./delivery/AssetDeliveryRoute.js";
|
|
4
|
+
import { FileModel } from "./domain/file/file.model.js";
|
|
5
|
+
import { FmPermissionsFeature } from "./features/permissions/feature.js";
|
|
6
|
+
import { FileManagerFeature } from "./features/FileManagerFeature.js";
|
|
7
|
+
import { FileModelProvider } from "./features/file/FileModelProvider.js";
|
|
8
|
+
const FileManagerAppFeature = createFeature({
|
|
9
|
+
name: "FileManagerApp",
|
|
10
|
+
register (container) {
|
|
11
|
+
AssetDeliveryFeature.register(container);
|
|
12
|
+
container.register(AssetDeliveryRouteDefinition);
|
|
13
|
+
container.register(FileModel);
|
|
14
|
+
FmPermissionsFeature.register(container);
|
|
15
|
+
FileManagerFeature.register(container);
|
|
16
|
+
container.register(FileModelProvider);
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
export { FileManagerAppFeature };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=FileManagerAppFeature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileManagerAppFeature.js","sources":["../src/FileManagerAppFeature.ts"],"sourcesContent":["import { type Container, createFeature } from \"@webiny/feature/api\";\nimport { AssetDeliveryFeature } from \"~/features/assetDelivery/feature.js\";\nimport { AssetDeliveryRouteDefinition } from \"./delivery/AssetDeliveryRoute.js\";\nimport { FileModel } from \"~/domain/file/file.model.js\";\nimport { FmPermissionsFeature } from \"~/features/permissions/feature.js\";\nimport { FileManagerFeature } from \"~/features/FileManagerFeature.js\";\nimport { FileModelProvider } from \"~/features/file/FileModelProvider.js\";\n\nexport const FileManagerAppFeature = createFeature({\n name: \"FileManagerApp\",\n register(container: Container) {\n AssetDeliveryFeature.register(container);\n container.register(AssetDeliveryRouteDefinition);\n container.register(FileModel);\n FmPermissionsFeature.register(container);\n FileManagerFeature.register(container);\n\n // Stateless — the model list is already cached per request by the CMS (`ModelCache`), so the\n // provider holds nothing and needs no lifetime of its own.\n container.register(FileModelProvider);\n }\n});\n"],"names":["FileManagerAppFeature","createFeature","container","AssetDeliveryFeature","AssetDeliveryRouteDefinition","FileModel","FmPermissionsFeature","FileManagerFeature","FileModelProvider"],"mappings":";;;;;;;AAQO,MAAMA,wBAAwBC,cAAc;IAC/C,MAAM;IACN,UAASC,SAAoB;QACzBC,qBAAqB,QAAQ,CAACD;QAC9BA,UAAU,QAAQ,CAACE;QACnBF,UAAU,QAAQ,CAACG;QACnBC,qBAAqB,QAAQ,CAACJ;QAC9BK,mBAAmB,QAAQ,CAACL;QAI5BA,UAAU,QAAQ,CAACM;IACvB;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery/AssetDelivery/AssetRequest.js","sources":["../../../src/delivery/AssetDelivery/AssetRequest.ts"],"sourcesContent":["import type { GenericRecord } from \"@webiny/api/types.js\";\n\nexport interface AssetRequestOptions {\n original?: boolean;\n
|
|
1
|
+
{"version":3,"file":"delivery/AssetDelivery/AssetRequest.js","sources":["../../../src/delivery/AssetDelivery/AssetRequest.ts"],"sourcesContent":["import type { GenericRecord } from \"@webiny/api/types.js\";\n\nexport interface AssetRequestOptions {\n original?: boolean;\n [key: string]: unknown;\n}\n\nexport type AssetRequestContext<T extends GenericRecord = GenericRecord> = T & {\n /**\n * Asset request URL.\n */\n url: string;\n};\n\nexport interface AssetRequestData<TOptions> {\n key: string;\n context: AssetRequestContext;\n options: TOptions;\n}\n\nexport class AssetRequest<TOptions extends AssetRequestOptions = AssetRequestOptions> {\n private data: AssetRequestData<TOptions>;\n\n constructor(data: AssetRequestData<TOptions>) {\n this.data = data;\n }\n\n getKey() {\n return this.data.key;\n }\n\n getOptions(): TOptions {\n return this.data.options;\n }\n\n setOptions(options: TOptions) {\n this.data.options = options;\n }\n\n getContext<T extends GenericRecord = GenericRecord>() {\n return this.data.context as AssetRequestContext<T>;\n }\n\n getExtension() {\n return this.data.key.split(\".\").pop();\n }\n}\n"],"names":["AssetRequest","data","options"],"mappings":"AAoBO,MAAMA;IAGT,YAAYC,IAAgC,CAAE;QAC1C,IAAI,CAAC,IAAI,GAAGA;IAChB;IAEA,SAAS;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG;IACxB;IAEA,aAAuB;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO;IAC5B;IAEA,WAAWC,OAAiB,EAAE;QAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,GAAGA;IACxB;IAEA,aAAsD;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO;IAC5B;IAEA,eAAe;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG;IACvC;AACJ"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { HttpRouteDefinition, HttpRouteHandler } from "@webiny/event-handler-core";
|
|
2
|
+
import type { Container } from "@webiny/di";
|
|
3
|
+
declare class AssetDeliveryRouteImpl implements HttpRouteHandler.Interface {
|
|
4
|
+
private container;
|
|
5
|
+
constructor(container: Container);
|
|
6
|
+
handle(request: HttpRouteHandler.Request, response: HttpRouteHandler.Response): Promise<import("@webiny/event-handler-core").IHttpResponseBuilder>;
|
|
7
|
+
}
|
|
8
|
+
export declare const AssetDeliveryRoute: typeof AssetDeliveryRouteImpl & {
|
|
9
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/event-handler-core").IHttpRoute>;
|
|
10
|
+
};
|
|
11
|
+
declare class AssetDeliveryRouteDefinitionImpl implements HttpRouteDefinition.Interface {
|
|
12
|
+
readonly name = "asset-delivery";
|
|
13
|
+
readonly method = "GET";
|
|
14
|
+
readonly path = "/files/*";
|
|
15
|
+
readonly handler: typeof AssetDeliveryRouteImpl & {
|
|
16
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/event-handler-core").IHttpRoute>;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/** What the router matches on. Zero dependencies, so building it costs nothing. */
|
|
20
|
+
export declare const AssetDeliveryRouteDefinition: typeof AssetDeliveryRouteDefinitionImpl & {
|
|
21
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/event-handler-core").IHttpRouteDefinition>;
|
|
22
|
+
};
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { HttpRouteDefinition, HttpRouteHandler, RequestContainer } from "@webiny/event-handler-core";
|
|
2
|
+
import { AssetOutputStrategy, AssetProcessor, AssetRequestResolver, AssetResolver } from "../features/assetDelivery/abstractions.js";
|
|
3
|
+
const NO_CACHE = "no-cache, no-store, must-revalidate";
|
|
4
|
+
class AssetDeliveryRouteImpl {
|
|
5
|
+
constructor(container){
|
|
6
|
+
this.container = container;
|
|
7
|
+
}
|
|
8
|
+
async handle(request, response) {
|
|
9
|
+
const requestResolver = this.container.resolve(AssetRequestResolver);
|
|
10
|
+
const assetResolver = this.container.resolve(AssetResolver);
|
|
11
|
+
const assetProcessor = this.container.resolve(AssetProcessor);
|
|
12
|
+
const outputStrategy = this.container.resolve(AssetOutputStrategy);
|
|
13
|
+
const fakeRequest = {
|
|
14
|
+
url: request.path,
|
|
15
|
+
params: {
|
|
16
|
+
"*": request.path.replace("/files/", "")
|
|
17
|
+
},
|
|
18
|
+
query: request.query ?? {},
|
|
19
|
+
headers: request.headers ?? {}
|
|
20
|
+
};
|
|
21
|
+
const resolvedRequest = await requestResolver.resolve(fakeRequest);
|
|
22
|
+
if (!resolvedRequest) return response.status(404).header("cache-control", NO_CACHE).json({
|
|
23
|
+
error: "Unable to resolve the request!"
|
|
24
|
+
});
|
|
25
|
+
const resolvedAsset = await assetResolver.resolve(resolvedRequest);
|
|
26
|
+
if (!resolvedAsset) return response.status(404).header("cache-control", NO_CACHE).json({
|
|
27
|
+
error: "Asset not found!"
|
|
28
|
+
});
|
|
29
|
+
resolvedAsset.setOutputStrategy(outputStrategy);
|
|
30
|
+
const processedAsset = await assetProcessor.process(resolvedRequest, resolvedAsset);
|
|
31
|
+
const assetReply = await processedAsset.output();
|
|
32
|
+
const rawHeaders = assetReply.getHeaders().getHeaders();
|
|
33
|
+
for (const [k, v] of Object.entries(rawHeaders))if (void 0 !== v) response.header(k, String(v));
|
|
34
|
+
const body = await assetReply.getBody();
|
|
35
|
+
return response.status(assetReply.getCode()).end(body ?? "");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const AssetDeliveryRoute = HttpRouteHandler.createImplementation({
|
|
39
|
+
implementation: AssetDeliveryRouteImpl,
|
|
40
|
+
dependencies: [
|
|
41
|
+
RequestContainer
|
|
42
|
+
]
|
|
43
|
+
});
|
|
44
|
+
class AssetDeliveryRouteDefinitionImpl {
|
|
45
|
+
constructor(){
|
|
46
|
+
this.name = "asset-delivery";
|
|
47
|
+
this.method = "GET";
|
|
48
|
+
this.path = "/files/*";
|
|
49
|
+
this.handler = AssetDeliveryRoute;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const AssetDeliveryRouteDefinition = HttpRouteDefinition.createImplementation({
|
|
53
|
+
implementation: AssetDeliveryRouteDefinitionImpl,
|
|
54
|
+
dependencies: []
|
|
55
|
+
});
|
|
56
|
+
export { AssetDeliveryRoute, AssetDeliveryRouteDefinition };
|
|
57
|
+
|
|
58
|
+
//# sourceMappingURL=AssetDeliveryRoute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery/AssetDeliveryRoute.js","sources":["../../src/delivery/AssetDeliveryRoute.ts"],"sourcesContent":["import {\n HttpRouteDefinition,\n HttpRouteHandler,\n RequestContainer\n} from \"@webiny/event-handler-core\";\nimport type { Container } from \"@webiny/di\";\nimport {\n AssetRequestResolver,\n AssetResolver,\n AssetProcessor,\n AssetOutputStrategy\n} from \"~/features/assetDelivery/abstractions.js\";\n\nconst NO_CACHE = \"no-cache, no-store, must-revalidate\";\n\nclass AssetDeliveryRouteImpl implements HttpRouteHandler.Interface {\n constructor(private container: Container) {}\n\n async handle(request: HttpRouteHandler.Request, response: HttpRouteHandler.Response) {\n // Resolve asset-delivery collaborators lazily (request time), not as constructor deps.\n // HttpRouter eagerly constructs every route to match paths, and AssetProcessor's\n // PrivateFilesAssetProcessor decorator pulls in GetFileUseCase -> CMS entry repositories\n // that depend on EntryFromStorageTransform, which is only registered while a CMS GraphQL\n // request is in flight. Resolving here keeps route construction cheap so non-asset\n // requests (e.g. /graphql) don't trigger that chain before it is registered.\n const requestResolver = this.container.resolve(AssetRequestResolver);\n const assetResolver = this.container.resolve(AssetResolver);\n const assetProcessor = this.container.resolve(AssetProcessor);\n const outputStrategy = this.container.resolve(AssetOutputStrategy);\n\n // Reconstruct a minimal request object compatible with IAssetRequestResolver\n const fakeRequest = {\n url: request.path,\n params: { \"*\": request.path.replace(\"/files/\", \"\") },\n query: request.query ?? {},\n headers: request.headers ?? {}\n };\n\n const resolvedRequest = await requestResolver.resolve(fakeRequest as any);\n if (!resolvedRequest) {\n return response\n .status(404)\n .header(\"cache-control\", NO_CACHE)\n .json({ error: \"Unable to resolve the request!\" });\n }\n\n const resolvedAsset = await assetResolver.resolve(resolvedRequest);\n if (!resolvedAsset) {\n return response\n .status(404)\n .header(\"cache-control\", NO_CACHE)\n .json({ error: \"Asset not found!\" });\n }\n\n resolvedAsset.setOutputStrategy(outputStrategy);\n\n const processedAsset = await assetProcessor.process(resolvedRequest, resolvedAsset);\n const assetReply = await processedAsset.output();\n\n const rawHeaders = assetReply.getHeaders().getHeaders();\n for (const [k, v] of Object.entries(rawHeaders)) {\n if (v !== undefined) {\n response.header(k, String(v));\n }\n }\n\n const body = await assetReply.getBody();\n\n // `end()` (not `send()`) so the raw body passes through untouched and the asset's OWN\n // Content-Type — set from `rawHeaders` above — is preserved. The transport translator\n // (e.g. httpResponseToApiGatewayResult) base64-encodes Buffers and sets isBase64Encoded so\n // API Gateway returns proper binary. Pre-encoding to a base64 STRING here defeated that —\n // the string passed through undecoded and browsers received base64 text, not an image.\n return response.status(assetReply.getCode()).end(body ?? \"\");\n }\n}\n\nexport const AssetDeliveryRoute = HttpRouteHandler.createImplementation({\n implementation: AssetDeliveryRouteImpl,\n dependencies: [RequestContainer]\n});\n\nclass AssetDeliveryRouteDefinitionImpl implements HttpRouteDefinition.Interface {\n readonly name = \"asset-delivery\";\n readonly method = \"GET\";\n readonly path = \"/files/*\";\n readonly handler = AssetDeliveryRoute;\n}\n\n/** What the router matches on. Zero dependencies, so building it costs nothing. */\nexport const AssetDeliveryRouteDefinition = HttpRouteDefinition.createImplementation({\n implementation: AssetDeliveryRouteDefinitionImpl,\n dependencies: []\n});\n"],"names":["NO_CACHE","AssetDeliveryRouteImpl","container","request","response","requestResolver","AssetRequestResolver","assetResolver","AssetResolver","assetProcessor","AssetProcessor","outputStrategy","AssetOutputStrategy","fakeRequest","resolvedRequest","resolvedAsset","processedAsset","assetReply","rawHeaders","k","v","Object","undefined","String","body","AssetDeliveryRoute","HttpRouteHandler","RequestContainer","AssetDeliveryRouteDefinitionImpl","AssetDeliveryRouteDefinition","HttpRouteDefinition"],"mappings":";;AAaA,MAAMA,WAAW;AAEjB,MAAMC;IACF,YAAoBC,SAAoB,CAAE;aAAtBA,SAAS,GAATA;IAAuB;IAE3C,MAAM,OAAOC,OAAiC,EAAEC,QAAmC,EAAE;QAOjF,MAAMC,kBAAkB,IAAI,CAAC,SAAS,CAAC,OAAO,CAACC;QAC/C,MAAMC,gBAAgB,IAAI,CAAC,SAAS,CAAC,OAAO,CAACC;QAC7C,MAAMC,iBAAiB,IAAI,CAAC,SAAS,CAAC,OAAO,CAACC;QAC9C,MAAMC,iBAAiB,IAAI,CAAC,SAAS,CAAC,OAAO,CAACC;QAG9C,MAAMC,cAAc;YAChB,KAAKV,QAAQ,IAAI;YACjB,QAAQ;gBAAE,KAAKA,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW;YAAI;YACnD,OAAOA,QAAQ,KAAK,IAAI,CAAC;YACzB,SAASA,QAAQ,OAAO,IAAI,CAAC;QACjC;QAEA,MAAMW,kBAAkB,MAAMT,gBAAgB,OAAO,CAACQ;QACtD,IAAI,CAACC,iBACD,OAAOV,SACF,MAAM,CAAC,KACP,MAAM,CAAC,iBAAiBJ,UACxB,IAAI,CAAC;YAAE,OAAO;QAAiC;QAGxD,MAAMe,gBAAgB,MAAMR,cAAc,OAAO,CAACO;QAClD,IAAI,CAACC,eACD,OAAOX,SACF,MAAM,CAAC,KACP,MAAM,CAAC,iBAAiBJ,UACxB,IAAI,CAAC;YAAE,OAAO;QAAmB;QAG1Ce,cAAc,iBAAiB,CAACJ;QAEhC,MAAMK,iBAAiB,MAAMP,eAAe,OAAO,CAACK,iBAAiBC;QACrE,MAAME,aAAa,MAAMD,eAAe,MAAM;QAE9C,MAAME,aAAaD,WAAW,UAAU,GAAG,UAAU;QACrD,KAAK,MAAM,CAACE,GAAGC,EAAE,IAAIC,OAAO,OAAO,CAACH,YAChC,IAAIE,AAAME,WAANF,GACAhB,SAAS,MAAM,CAACe,GAAGI,OAAOH;QAIlC,MAAMI,OAAO,MAAMP,WAAW,OAAO;QAOrC,OAAOb,SAAS,MAAM,CAACa,WAAW,OAAO,IAAI,GAAG,CAACO,QAAQ;IAC7D;AACJ;AAEO,MAAMC,qBAAqBC,iBAAiB,oBAAoB,CAAC;IACpE,gBAAgBzB;IAChB,cAAc;QAAC0B;KAAiB;AACpC;AAEA,MAAMC;;aACO,IAAI,GAAG;aACP,MAAM,GAAG;aACT,IAAI,GAAG;aACP,OAAO,GAAGH;;AACvB;AAGO,MAAMI,+BAA+BC,oBAAoB,oBAAoB,CAAC;IACjF,gBAAgBF;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const setupAssetDelivery: () =>
|
|
1
|
+
export declare const setupAssetDelivery: () => never[];
|
|
@@ -1,69 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import { AssetOutputStrategy, AssetProcessor, AssetRequestResolver, AssetResolver } from "../features/assetDelivery/abstractions.js";
|
|
3
|
-
const noCacheHeaders = ResponseHeaders.create({
|
|
4
|
-
"content-type": "application/json",
|
|
5
|
-
"cache-control": "no-cache, no-store, must-revalidate"
|
|
6
|
-
});
|
|
7
|
-
function assertAssetRequestWasResolved(request) {
|
|
8
|
-
if (void 0 === request) throw new Error("Not an AssetRequest!");
|
|
9
|
-
}
|
|
10
|
-
function assertAssetWasResolved(asset) {
|
|
11
|
-
if (void 0 === asset) throw new Error("Not an Asset!");
|
|
12
|
-
}
|
|
13
|
-
const setupAssetDelivery = ()=>{
|
|
14
|
-
const outputAsset = async (reply, asset)=>{
|
|
15
|
-
const assetReply = await asset.output();
|
|
16
|
-
const headers = assetReply.getHeaders();
|
|
17
|
-
headers.set("x-webiny-base64-encoded", "true");
|
|
18
|
-
reply.code(assetReply.getCode());
|
|
19
|
-
reply.headers(headers.getHeaders());
|
|
20
|
-
return reply.send(await assetReply.getBody());
|
|
21
|
-
};
|
|
22
|
-
return [
|
|
23
|
-
createModifyFastifyPlugin((app)=>{
|
|
24
|
-
const container = app.webiny.container;
|
|
25
|
-
let resolvedRequest;
|
|
26
|
-
let resolvedAsset;
|
|
27
|
-
const handlerOnRequest = createHandlerOnRequest(async (request, reply)=>{
|
|
28
|
-
const requestResolver = container.resolve(AssetRequestResolver);
|
|
29
|
-
resolvedRequest = await requestResolver.resolve(request);
|
|
30
|
-
if (!resolvedRequest) {
|
|
31
|
-
reply.code(404).headers(noCacheHeaders.getHeaders()).send({
|
|
32
|
-
error: "Unable to resolve the request!"
|
|
33
|
-
}).hijack();
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
const assetResolver = container.resolve(AssetResolver);
|
|
37
|
-
resolvedAsset = await assetResolver.resolve(resolvedRequest);
|
|
38
|
-
if (!resolvedAsset) {
|
|
39
|
-
reply.code(404).headers(noCacheHeaders.getHeaders()).send({
|
|
40
|
-
error: "Asset not found!"
|
|
41
|
-
}).hijack();
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
request.headers = {
|
|
45
|
-
...request.headers,
|
|
46
|
-
"x-tenant": resolvedAsset.getTenant()
|
|
47
|
-
};
|
|
48
|
-
});
|
|
49
|
-
const deliveryRoute = createRoute(({ onGet, context })=>{
|
|
50
|
-
onGet("*", async (_, reply)=>{
|
|
51
|
-
assertAssetRequestWasResolved(resolvedRequest);
|
|
52
|
-
assertAssetWasResolved(resolvedAsset);
|
|
53
|
-
const outputStrategy = context.container.resolve(AssetOutputStrategy);
|
|
54
|
-
resolvedAsset.setOutputStrategy(outputStrategy);
|
|
55
|
-
const assetProcessor = context.container.resolve(AssetProcessor);
|
|
56
|
-
const processedAsset = await assetProcessor.process(resolvedRequest, resolvedAsset);
|
|
57
|
-
console.log(`Output asset (size: ${processedAsset.getSize()} bytes).`);
|
|
58
|
-
return outputAsset(reply, processedAsset);
|
|
59
|
-
}, {
|
|
60
|
-
override: true
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
app.webiny.plugins.register(handlerOnRequest, deliveryRoute);
|
|
64
|
-
})
|
|
65
|
-
];
|
|
66
|
-
};
|
|
1
|
+
const setupAssetDelivery = ()=>[];
|
|
67
2
|
export { setupAssetDelivery };
|
|
68
3
|
|
|
69
4
|
//# sourceMappingURL=setupAssetDelivery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery/setupAssetDelivery.js","sources":["../../src/delivery/setupAssetDelivery.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"delivery/setupAssetDelivery.js","sources":["../../src/delivery/setupAssetDelivery.ts"],"sourcesContent":["// Legacy Fastify-based asset delivery setup — replaced by AssetDeliveryRoute in DI-native handlers.\nexport const setupAssetDelivery = (): never[] => [];\n"],"names":["setupAssetDelivery"],"mappings":"AACO,MAAMA,qBAAqB,IAAe,EAAE"}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import type { CmsModel } from "@webiny/api-headless-cms/types";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
* Provides the `fmFile` CMS model for the current request's tenant.
|
|
4
|
+
*
|
|
5
|
+
* Fetching a model is asynchronous and tenant-dependent, which is why this is a provider rather
|
|
6
|
+
* than the model itself: DI resolution is synchronous, so an already-resolved `CmsModel` could only
|
|
7
|
+
* be supplied by a per-request hook running before any consumer (what `FileModelContextualSchema`
|
|
8
|
+
* used to do). Consumers instead `await get()` at the point of use — by which time the tenant is
|
|
9
|
+
* established — and the provider memoizes for the rest of the request.
|
|
5
10
|
*/
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
11
|
+
export interface IFileModelProvider {
|
|
12
|
+
get(): Promise<CmsModel>;
|
|
13
|
+
}
|
|
14
|
+
export declare const FileModelProvider: import("@webiny/di").Abstraction<IFileModelProvider>;
|
|
15
|
+
export declare namespace FileModelProvider {
|
|
16
|
+
type Interface = IFileModelProvider;
|
|
9
17
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
-
const
|
|
3
|
-
export {
|
|
2
|
+
const FileModelProvider = createAbstraction("FileModelProvider");
|
|
3
|
+
export { FileModelProvider };
|
|
4
4
|
|
|
5
5
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain/file/abstractions.js","sources":["../../../src/domain/file/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { CmsModel } from \"@webiny/api-headless-cms/types\";\n\n/**\n *
|
|
1
|
+
{"version":3,"file":"domain/file/abstractions.js","sources":["../../../src/domain/file/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { CmsModel } from \"@webiny/api-headless-cms/types\";\n\n/**\n * Provides the `fmFile` CMS model for the current request's tenant.\n *\n * Fetching a model is asynchronous and tenant-dependent, which is why this is a provider rather\n * than the model itself: DI resolution is synchronous, so an already-resolved `CmsModel` could only\n * be supplied by a per-request hook running before any consumer (what `FileModelContextualSchema`\n * used to do). Consumers instead `await get()` at the point of use — by which time the tenant is\n * established — and the provider memoizes for the rest of the request.\n */\nexport interface IFileModelProvider {\n get(): Promise<CmsModel>;\n}\n\nexport const FileModelProvider = createAbstraction<IFileModelProvider>(\"FileModelProvider\");\n\nexport namespace FileModelProvider {\n export type Interface = IFileModelProvider;\n}\n"],"names":["FileModelProvider","createAbstraction"],"mappings":";AAgBO,MAAMA,oBAAoBC,kBAAsC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ModelFactory } from "@webiny/api-headless-cms/features/modelBuilder/index.js";
|
|
2
|
-
import {
|
|
2
|
+
import { FeatureFlags } from "@webiny/api-core/features/featureFlags/abstractions.js";
|
|
3
3
|
export declare const FILE_MODEL_ID: string;
|
|
4
4
|
declare class FilePrivateModelImpl implements ModelFactory.Interface {
|
|
5
|
-
private
|
|
6
|
-
constructor(
|
|
5
|
+
private featureFlags;
|
|
6
|
+
constructor(featureFlags: FeatureFlags.Interface);
|
|
7
7
|
execute(builder: ModelFactory.Builder): Promise<import("@webiny/api-headless-cms/features/modelBuilder/index.js").PrivateModelBuilder[]>;
|
|
8
8
|
}
|
|
9
9
|
export declare const FileModel: typeof FilePrivateModelImpl & {
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { ModelFactory } from "@webiny/api-headless-cms/features/modelBuilder/index.js";
|
|
2
|
-
import {
|
|
2
|
+
import { FeatureFlags } from "@webiny/api-core/features/featureFlags/abstractions.js";
|
|
3
3
|
const FILE_MODEL_ID = process.env.WEBINY_API_LEGACY_MODELS ? "fmFile" : "wbyFmFile";
|
|
4
4
|
class FilePrivateModelImpl {
|
|
5
|
-
constructor(
|
|
6
|
-
this.
|
|
5
|
+
constructor(featureFlags){
|
|
6
|
+
this.featureFlags = featureFlags;
|
|
7
7
|
}
|
|
8
8
|
async execute(builder) {
|
|
9
9
|
const model = builder.private({
|
|
10
10
|
modelId: FILE_MODEL_ID,
|
|
11
11
|
name: "FmFile"
|
|
12
12
|
});
|
|
13
|
-
const privateFiles = this.
|
|
13
|
+
const privateFiles = this.featureFlags.get().isEnabled("advancedAccessControlLayer.privateFiles");
|
|
14
14
|
model.fields((fields)=>({
|
|
15
15
|
name: fields.text().label("Name").required("Value is required."),
|
|
16
16
|
key: fields.text().label("Key").required("Value is required."),
|
|
@@ -21,7 +21,11 @@ class FilePrivateModelImpl {
|
|
|
21
21
|
width: fields.number().label("Width"),
|
|
22
22
|
height: fields.number().label("Height"),
|
|
23
23
|
format: fields.text().label("Format"),
|
|
24
|
-
orientation: fields.number().label("Orientation")
|
|
24
|
+
orientation: fields.number().label("Orientation"),
|
|
25
|
+
crop: fields.json().label("Crop"),
|
|
26
|
+
focalPoint: fields.json().label("Focal point"),
|
|
27
|
+
alt: fields.text().label("Alt text"),
|
|
28
|
+
caption: fields.text().label("Caption")
|
|
25
29
|
})),
|
|
26
30
|
exif: fields.searchableJson().label("EXIF Data"),
|
|
27
31
|
iptc: fields.searchableJson().label("IPTC Data")
|
|
@@ -57,7 +61,7 @@ class FilePrivateModelImpl {
|
|
|
57
61
|
const FileModel = ModelFactory.createImplementation({
|
|
58
62
|
implementation: FilePrivateModelImpl,
|
|
59
63
|
dependencies: [
|
|
60
|
-
|
|
64
|
+
FeatureFlags
|
|
61
65
|
]
|
|
62
66
|
});
|
|
63
67
|
export { FILE_MODEL_ID, FileModel };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain/file/file.model.js","sources":["../../../src/domain/file/file.model.ts"],"sourcesContent":["import { ModelFactory } from \"@webiny/api-headless-cms/features/modelBuilder/index.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"domain/file/file.model.js","sources":["../../../src/domain/file/file.model.ts"],"sourcesContent":["import { ModelFactory } from \"@webiny/api-headless-cms/features/modelBuilder/index.js\";\nimport { FeatureFlags } from \"@webiny/api-core/features/featureFlags/abstractions.js\";\n\nexport const FILE_MODEL_ID = process.env.WEBINY_API_LEGACY_MODELS ? \"fmFile\" : \"wbyFmFile\";\n\nclass FilePrivateModelImpl implements ModelFactory.Interface {\n public constructor(private featureFlags: FeatureFlags.Interface) {}\n\n public async execute(builder: ModelFactory.Builder) {\n const model = builder.private({\n modelId: FILE_MODEL_ID,\n name: \"FmFile\"\n });\n const privateFiles = this.featureFlags\n .get()\n .isEnabled(\"advancedAccessControlLayer.privateFiles\");\n\n model.fields(fields => ({\n name: fields.text().label(\"Name\").required(\"Value is required.\"),\n key: fields.text().label(\"Key\").required(\"Value is required.\"),\n type: fields.text().label(\"Type\").required(\"Value is required.\"),\n size: fields.number().label(\"Size\").required(\"Value is required.\"),\n metadata: fields\n .object()\n .label(\"Metadata\")\n .renderer(\"hidden\")\n .fields(fields => ({\n image: fields\n .object()\n .label(\"Image\")\n .fields(fields => ({\n width: fields.number().label(\"Width\"),\n height: fields.number().label(\"Height\"),\n format: fields.text().label(\"Format\"),\n orientation: fields.number().label(\"Orientation\"),\n crop: fields.json().label(\"Crop\"),\n focalPoint: fields.json().label(\"Focal point\"),\n alt: fields.text().label(\"Alt text\"),\n caption: fields.text().label(\"Caption\")\n })),\n // Store complete raw EXIF as JSON\n exif: fields.searchableJson().label(\"EXIF Data\"),\n // Store complete raw IPTC as JSON\n iptc: fields.searchableJson().label(\"IPTC Data\")\n })),\n tags: fields\n .text()\n .label(\"Tags\")\n .tags([\"$bulk-edit\"])\n .list()\n .required(\"Value is required.\"),\n description: fields.text().label(\"Description\").defaultValue(\"\")\n }));\n\n if (privateFiles) {\n model.fields(fields => ({\n accessControl: fields\n .object()\n .label(\"Access Control\")\n .tags([\"$bulk-edit\"])\n .fields(fields => ({\n type: fields\n .text()\n .label(\"Type\")\n .predefinedValues([\n {\n label: \"Public\",\n value: \"public\",\n selected: true\n },\n {\n label: \"Private\",\n value: \"private-authenticated\",\n selected: false\n }\n ])\n }))\n }));\n }\n\n return [model];\n }\n}\n\nexport const FileModel = ModelFactory.createImplementation({\n implementation: FilePrivateModelImpl,\n dependencies: [FeatureFlags]\n});\n"],"names":["FILE_MODEL_ID","process","FilePrivateModelImpl","featureFlags","builder","model","privateFiles","fields","FileModel","ModelFactory","FeatureFlags"],"mappings":";;AAGO,MAAMA,gBAAgBC,QAAQ,GAAG,CAAC,wBAAwB,GAAG,WAAW;AAE/E,MAAMC;IACF,YAA2BC,YAAoC,CAAE;aAAtCA,YAAY,GAAZA;IAAuC;IAElE,MAAa,QAAQC,OAA6B,EAAE;QAChD,MAAMC,QAAQD,QAAQ,OAAO,CAAC;YAC1B,SAASJ;YACT,MAAM;QACV;QACA,MAAMM,eAAe,IAAI,CAAC,YAAY,CACjC,GAAG,GACH,SAAS,CAAC;QAEfD,MAAM,MAAM,CAACE,CAAAA,SAAW;gBACpB,MAAMA,OAAO,IAAI,GAAG,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAC3C,KAAKA,OAAO,IAAI,GAAG,KAAK,CAAC,OAAO,QAAQ,CAAC;gBACzC,MAAMA,OAAO,IAAI,GAAG,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAC3C,MAAMA,OAAO,MAAM,GAAG,KAAK,CAAC,QAAQ,QAAQ,CAAC;gBAC7C,UAAUA,OACL,MAAM,GACN,KAAK,CAAC,YACN,QAAQ,CAAC,UACT,MAAM,CAACA,CAAAA,SAAW;wBACf,OAAOA,OACF,MAAM,GACN,KAAK,CAAC,SACN,MAAM,CAACA,CAAAA,SAAW;gCACf,OAAOA,OAAO,MAAM,GAAG,KAAK,CAAC;gCAC7B,QAAQA,OAAO,MAAM,GAAG,KAAK,CAAC;gCAC9B,QAAQA,OAAO,IAAI,GAAG,KAAK,CAAC;gCAC5B,aAAaA,OAAO,MAAM,GAAG,KAAK,CAAC;gCACnC,MAAMA,OAAO,IAAI,GAAG,KAAK,CAAC;gCAC1B,YAAYA,OAAO,IAAI,GAAG,KAAK,CAAC;gCAChC,KAAKA,OAAO,IAAI,GAAG,KAAK,CAAC;gCACzB,SAASA,OAAO,IAAI,GAAG,KAAK,CAAC;4BACjC;wBAEJ,MAAMA,OAAO,cAAc,GAAG,KAAK,CAAC;wBAEpC,MAAMA,OAAO,cAAc,GAAG,KAAK,CAAC;oBACxC;gBACJ,MAAMA,OACD,IAAI,GACJ,KAAK,CAAC,QACN,IAAI,CAAC;oBAAC;iBAAa,EACnB,IAAI,GACJ,QAAQ,CAAC;gBACd,aAAaA,OAAO,IAAI,GAAG,KAAK,CAAC,eAAe,YAAY,CAAC;YACjE;QAEA,IAAID,cACAD,MAAM,MAAM,CAACE,CAAAA,SAAW;gBACpB,eAAeA,OACV,MAAM,GACN,KAAK,CAAC,kBACN,IAAI,CAAC;oBAAC;iBAAa,EACnB,MAAM,CAACA,CAAAA,SAAW;wBACf,MAAMA,OACD,IAAI,GACJ,KAAK,CAAC,QACN,gBAAgB,CAAC;4BACd;gCACI,OAAO;gCACP,OAAO;gCACP,UAAU;4BACd;4BACA;gCACI,OAAO;gCACP,OAAO;gCACP,UAAU;4BACd;yBACH;oBACT;YACR;QAGJ,OAAO;YAACF;SAAM;IAClB;AACJ;AAEO,MAAMG,YAAYC,aAAa,oBAAoB,CAAC;IACvD,gBAAgBP;IAChB,cAAc;QAACQ;KAAa;AAChC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import zod from "zod";
|
|
2
|
-
import { ServiceDiscovery } from "@webiny/api";
|
|
2
|
+
import { ServiceDiscovery } from "@webiny/api-core/features/serviceDiscovery/index.js";
|
|
3
3
|
const MIN_FILE_SIZE = 0;
|
|
4
4
|
const MAX_FILE_SIZE = 10737418240;
|
|
5
5
|
const uploadMinFileSizeValidation = zod.number().min(MIN_FILE_SIZE, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain/settings/validation.js","sources":["../../../src/domain/settings/validation.ts"],"sourcesContent":["import zod from \"zod\";\nimport { ServiceDiscovery } from \"@webiny/api\";\n\nconst MIN_FILE_SIZE = 0;\nconst MAX_FILE_SIZE = 10737418240;\n\nconst uploadMinFileSizeValidation = zod\n .number()\n .min(MIN_FILE_SIZE, {\n message: `Value needs to be greater than or equal to ${MIN_FILE_SIZE}.`\n })\n .nullish()\n .transform(value => {\n return value || MIN_FILE_SIZE;\n })\n .optional();\n\nconst uploadMaxFileSizeValidation = zod\n .number()\n .max(MAX_FILE_SIZE, {\n message: `Value needs to be lesser than or equal to ${MAX_FILE_SIZE}.`\n })\n .nullish()\n .transform(value => {\n return value || MAX_FILE_SIZE;\n })\n .optional();\n\nexport const updateSettingsValidation = zod.object({\n uploadMinFileSize: uploadMinFileSizeValidation,\n uploadMaxFileSize: uploadMaxFileSizeValidation,\n srcPrefix: zod\n .string()\n .optional()\n .transform(async value => {\n if (!value) {\n const manifest = await ServiceDiscovery.load();\n if (!manifest || !manifest.api) {\n return \"\";\n }\n\n const { domain } = manifest.api.cloudfront;\n\n return `https://${domain}/files/`;\n }\n if (typeof value === \"string\") {\n return value.endsWith(\"/\") ? value : value + \"/\";\n }\n return value;\n })\n});\n"],"names":["MIN_FILE_SIZE","MAX_FILE_SIZE","uploadMinFileSizeValidation","zod","value","uploadMaxFileSizeValidation","updateSettingsValidation","manifest","ServiceDiscovery","domain"],"mappings":";;AAGA,MAAMA,gBAAgB;AACtB,MAAMC,gBAAgB;AAEtB,MAAMC,8BAA8BC,IAAAA,MACzB,GACN,GAAG,CAACH,eAAe;IAChB,SAAS,CAAC,2CAA2C,EAAEA,cAAc,CAAC,CAAC;AAC3E,GACC,OAAO,GACP,SAAS,CAACI,CAAAA,QACAA,SAASJ,eAEnB,QAAQ;AAEb,MAAMK,8BAA8BF,IAAAA,MACzB,GACN,GAAG,CAACF,eAAe;IAChB,SAAS,CAAC,0CAA0C,EAAEA,cAAc,CAAC,CAAC;AAC1E,GACC,OAAO,GACP,SAAS,CAACG,CAAAA,QACAA,SAASH,eAEnB,QAAQ;AAEN,MAAMK,2BAA2BH,IAAI,MAAM,CAAC;IAC/C,mBAAmBD;IACnB,mBAAmBG;IACnB,WAAWF,IAAAA,MACA,GACN,QAAQ,GACR,SAAS,CAAC,OAAMC;QACb,IAAI,CAACA,OAAO;YACR,MAAMG,WAAW,MAAMC,iBAAiB,IAAI;YAC5C,IAAI,CAACD,YAAY,CAACA,SAAS,GAAG,EAC1B,OAAO;YAGX,MAAM,EAAEE,MAAM,EAAE,GAAGF,SAAS,GAAG,CAAC,UAAU;YAE1C,OAAO,CAAC,QAAQ,EAAEE,OAAO,OAAO,CAAC;QACrC;QACA,IAAI,AAAiB,YAAjB,OAAOL,OACP,OAAOA,MAAM,QAAQ,CAAC,OAAOA,QAAQA,QAAQ;QAEjD,OAAOA;IACX;AACR"}
|
|
1
|
+
{"version":3,"file":"domain/settings/validation.js","sources":["../../../src/domain/settings/validation.ts"],"sourcesContent":["import zod from \"zod\";\nimport { ServiceDiscovery } from \"@webiny/api-core/features/serviceDiscovery/index.js\";\n\nconst MIN_FILE_SIZE = 0;\nconst MAX_FILE_SIZE = 10737418240;\n\nconst uploadMinFileSizeValidation = zod\n .number()\n .min(MIN_FILE_SIZE, {\n message: `Value needs to be greater than or equal to ${MIN_FILE_SIZE}.`\n })\n .nullish()\n .transform(value => {\n return value || MIN_FILE_SIZE;\n })\n .optional();\n\nconst uploadMaxFileSizeValidation = zod\n .number()\n .max(MAX_FILE_SIZE, {\n message: `Value needs to be lesser than or equal to ${MAX_FILE_SIZE}.`\n })\n .nullish()\n .transform(value => {\n return value || MAX_FILE_SIZE;\n })\n .optional();\n\nexport const updateSettingsValidation = zod.object({\n uploadMinFileSize: uploadMinFileSizeValidation,\n uploadMaxFileSize: uploadMaxFileSizeValidation,\n srcPrefix: zod\n .string()\n .optional()\n .transform(async value => {\n if (!value) {\n const manifest = await ServiceDiscovery.load();\n if (!manifest || !manifest.api) {\n return \"\";\n }\n\n const { domain } = manifest.api.cloudfront;\n\n return `https://${domain}/files/`;\n }\n if (typeof value === \"string\") {\n return value.endsWith(\"/\") ? value : value + \"/\";\n }\n return value;\n })\n});\n"],"names":["MIN_FILE_SIZE","MAX_FILE_SIZE","uploadMinFileSizeValidation","zod","value","uploadMaxFileSizeValidation","updateSettingsValidation","manifest","ServiceDiscovery","domain"],"mappings":";;AAGA,MAAMA,gBAAgB;AACtB,MAAMC,gBAAgB;AAEtB,MAAMC,8BAA8BC,IAAAA,MACzB,GACN,GAAG,CAACH,eAAe;IAChB,SAAS,CAAC,2CAA2C,EAAEA,cAAc,CAAC,CAAC;AAC3E,GACC,OAAO,GACP,SAAS,CAACI,CAAAA,QACAA,SAASJ,eAEnB,QAAQ;AAEb,MAAMK,8BAA8BF,IAAAA,MACzB,GACN,GAAG,CAACF,eAAe;IAChB,SAAS,CAAC,0CAA0C,EAAEA,cAAc,CAAC,CAAC;AAC1E,GACC,OAAO,GACP,SAAS,CAACG,CAAAA,QACAA,SAASH,eAEnB,QAAQ;AAEN,MAAMK,2BAA2BH,IAAI,MAAM,CAAC;IAC/C,mBAAmBD;IACnB,mBAAmBG;IACnB,WAAWF,IAAAA,MACA,GACN,QAAQ,GACR,SAAS,CAAC,OAAMC;QACb,IAAI,CAACA,OAAO;YACR,MAAMG,WAAW,MAAMC,iBAAiB,IAAI;YAC5C,IAAI,CAACD,YAAY,CAACA,SAAS,GAAG,EAC1B,OAAO;YAGX,MAAM,EAAEE,MAAM,EAAE,GAAGF,SAAS,GAAG,CAAC,UAAU;YAE1C,OAAO,CAAC,QAAQ,EAAEE,OAAO,OAAO,CAAC;QACrC;QACA,IAAI,AAAiB,YAAjB,OAAOL,OACP,OAAOA,MAAM,QAAQ,CAAC,OAAOA,QAAQA,QAAQ;QAEjD,OAAOA;IACX;AACR"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { Asset } from "../../../delivery/AssetDelivery/Asset.js";
|
|
2
|
+
export type { AssetData } from "../../../delivery/AssetDelivery/Asset.js";
|
|
3
|
+
export { AssetRequest } from "../../../delivery/AssetDelivery/AssetRequest.js";
|
|
4
|
+
export type { AssetRequestOptions } from "../../../delivery/AssetDelivery/AssetRequest.js";
|
|
5
|
+
export { AssetReply } from "../../../delivery/AssetDelivery/abstractions/AssetReply.js";
|
|
6
|
+
export { createAssetDeliveryPluginLoader } from "../../../delivery/AssetDelivery/createAssetDeliveryPluginLoader.js";
|
|
7
|
+
export { AssetRequestResolver, AssetResolver, AssetProcessor, AssetOutputStrategy, AssetTransformationStrategy, AssetContentsReader, AssetAuthorizer } from "../../../features/assetDelivery/abstractions.js";
|
|
8
|
+
export { AssetFactory } from "../../../features/assetDelivery/Asset/abstractions.js";
|
|
9
|
+
export { StreamAssetReply } from "../../../features/assetDelivery/StreamAssetReply/abstractions.js";
|
|
10
|
+
export { ObjectKey } from "../../../features/assetDelivery/ObjectKey/abstractions.js";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { Asset } from "../../../delivery/AssetDelivery/Asset.js";
|
|
2
|
+
export { AssetRequest } from "../../../delivery/AssetDelivery/AssetRequest.js";
|
|
3
|
+
export { AssetReply } from "../../../delivery/AssetDelivery/abstractions/AssetReply.js";
|
|
4
|
+
export { createAssetDeliveryPluginLoader } from "../../../delivery/AssetDelivery/createAssetDeliveryPluginLoader.js";
|
|
5
|
+
export { AssetAuthorizer, AssetContentsReader, AssetOutputStrategy, AssetProcessor, AssetRequestResolver, AssetResolver, AssetTransformationStrategy } from "../../../features/assetDelivery/abstractions.js";
|
|
6
|
+
export { AssetFactory } from "../../../features/assetDelivery/Asset/abstractions.js";
|
|
7
|
+
export { StreamAssetReply } from "../../../features/assetDelivery/StreamAssetReply/abstractions.js";
|
|
8
|
+
export { ObjectKey } from "../../../features/assetDelivery/ObjectKey/abstractions.js";
|
|
@@ -8,5 +8,6 @@ export { DeleteFileRepository, DeleteFileUseCase } from "../../../features/file/
|
|
|
8
8
|
export { FileAfterDeleteEventHandler, FileBeforeDeleteEventHandler } from "../../../features/file/DeleteFile/events.js";
|
|
9
9
|
export { FileUrlGenerator } from "../../../features/file/FileUrlGenerator/abstractions.js";
|
|
10
10
|
export { GetFileRepository, GetFileUseCase } from "../../../features/file/GetFile/abstractions.js";
|
|
11
|
+
export { GetFileByUrlUseCase } from "../../../features/file/GetFileByUrl/abstractions.js";
|
|
11
12
|
export { ListFilesRepository, ListFilesUseCase } from "../../../features/file/ListFiles/abstractions.js";
|
|
12
13
|
export { ListTagsRepository, ListTagsUseCase } from "../../../features/file/ListTags/abstractions.js";
|
|
@@ -8,5 +8,6 @@ export { DeleteFileRepository, DeleteFileUseCase } from "../../../features/file/
|
|
|
8
8
|
export { FileAfterDeleteEventHandler, FileBeforeDeleteEventHandler } from "../../../features/file/DeleteFile/events.js";
|
|
9
9
|
export { FileUrlGenerator } from "../../../features/file/FileUrlGenerator/abstractions.js";
|
|
10
10
|
export { GetFileRepository, GetFileUseCase } from "../../../features/file/GetFile/abstractions.js";
|
|
11
|
+
export { GetFileByUrlUseCase } from "../../../features/file/GetFileByUrl/abstractions.js";
|
|
11
12
|
export { ListFilesRepository, ListFilesUseCase } from "../../../features/file/ListFiles/abstractions.js";
|
|
12
13
|
export { ListTagsRepository, ListTagsUseCase } from "../../../features/file/ListTags/abstractions.js";
|
|
@@ -10,6 +10,9 @@ import { SettingsInstallerFeature } from "./settings/SettingsInstaller/feature.j
|
|
|
10
10
|
import { GetSettingsFeature } from "./settings/GetSettings/feature.js";
|
|
11
11
|
import { UpdateSettingsFeature } from "./settings/UpdateSettings/feature.js";
|
|
12
12
|
import { ListImagesByTagToolFeature } from "./file/ListImagesByTagTool/feature.js";
|
|
13
|
+
import { FileUrlGeneratorFeature } from "./file/FileUrlGenerator/feature.js";
|
|
14
|
+
import { GetFileByUrlFeature } from "./file/GetFileByUrl/feature.js";
|
|
15
|
+
import { FmGraphQLSchema } from "../graphql/FmGraphQLSchema.js";
|
|
13
16
|
const FileManagerFeature = createFeature({
|
|
14
17
|
name: "FileManager",
|
|
15
18
|
register (container) {
|
|
@@ -24,6 +27,9 @@ const FileManagerFeature = createFeature({
|
|
|
24
27
|
GetSettingsFeature.register(container);
|
|
25
28
|
UpdateSettingsFeature.register(container);
|
|
26
29
|
ListImagesByTagToolFeature.register(container);
|
|
30
|
+
FileUrlGeneratorFeature.register(container);
|
|
31
|
+
GetFileByUrlFeature.register(container);
|
|
32
|
+
container.register(FmGraphQLSchema);
|
|
27
33
|
}
|
|
28
34
|
});
|
|
29
35
|
export { FileManagerFeature };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/FileManagerFeature.js","sources":["../../src/features/FileManagerFeature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CreateFileFeature } from \"~/features/file/CreateFile/feature.js\";\nimport { CreateFilesInBatchFeature } from \"~/features/file/CreateFilesInBatch/feature.js\";\nimport { DeleteFileFeature } from \"~/features/file/DeleteFile/feature.js\";\nimport { GetFileFeature } from \"~/features/file/GetFile/feature.js\";\nimport { ListFilesFeature } from \"~/features/file/ListFiles/feature.js\";\nimport { ListTagsFeature } from \"~/features/file/ListTags/feature.js\";\nimport { UpdateFileFeature } from \"~/features/file/UpdateFile/feature.js\";\nimport { SettingsInstallerFeature } from \"~/features/settings/SettingsInstaller/feature.js\";\nimport { GetSettingsFeature } from \"~/features/settings/GetSettings/feature.js\";\nimport { UpdateSettingsFeature } from \"~/features/settings/UpdateSettings/feature.js\";\nimport { ListImagesByTagToolFeature } from \"~/features/file/ListImagesByTagTool/feature.js\";\n\nexport const FileManagerFeature = createFeature({\n name: \"FileManager\",\n register(container) {\n CreateFileFeature.register(container);\n CreateFilesInBatchFeature.register(container);\n UpdateFileFeature.register(container);\n DeleteFileFeature.register(container);\n GetFileFeature.register(container);\n ListFilesFeature.register(container);\n ListTagsFeature.register(container);\n SettingsInstallerFeature.register(container);\n GetSettingsFeature.register(container);\n UpdateSettingsFeature.register(container);\n ListImagesByTagToolFeature.register(container);\n }\n});\n"],"names":["FileManagerFeature","createFeature","container","CreateFileFeature","CreateFilesInBatchFeature","UpdateFileFeature","DeleteFileFeature","GetFileFeature","ListFilesFeature","ListTagsFeature","SettingsInstallerFeature","GetSettingsFeature","UpdateSettingsFeature","ListImagesByTagToolFeature"],"mappings":"
|
|
1
|
+
{"version":3,"file":"features/FileManagerFeature.js","sources":["../../src/features/FileManagerFeature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CreateFileFeature } from \"~/features/file/CreateFile/feature.js\";\nimport { CreateFilesInBatchFeature } from \"~/features/file/CreateFilesInBatch/feature.js\";\nimport { DeleteFileFeature } from \"~/features/file/DeleteFile/feature.js\";\nimport { GetFileFeature } from \"~/features/file/GetFile/feature.js\";\nimport { ListFilesFeature } from \"~/features/file/ListFiles/feature.js\";\nimport { ListTagsFeature } from \"~/features/file/ListTags/feature.js\";\nimport { UpdateFileFeature } from \"~/features/file/UpdateFile/feature.js\";\nimport { SettingsInstallerFeature } from \"~/features/settings/SettingsInstaller/feature.js\";\nimport { GetSettingsFeature } from \"~/features/settings/GetSettings/feature.js\";\nimport { UpdateSettingsFeature } from \"~/features/settings/UpdateSettings/feature.js\";\nimport { ListImagesByTagToolFeature } from \"~/features/file/ListImagesByTagTool/feature.js\";\nimport { FileUrlGeneratorFeature } from \"~/features/file/FileUrlGenerator/feature.js\";\nimport { GetFileByUrlFeature } from \"~/features/file/GetFileByUrl/feature.js\";\nimport { FmGraphQLSchema } from \"~/graphql/FmGraphQLSchema.js\";\n\nexport const FileManagerFeature = createFeature({\n name: \"FileManager\",\n register(container) {\n CreateFileFeature.register(container);\n CreateFilesInBatchFeature.register(container);\n UpdateFileFeature.register(container);\n DeleteFileFeature.register(container);\n GetFileFeature.register(container);\n ListFilesFeature.register(container);\n ListTagsFeature.register(container);\n SettingsInstallerFeature.register(container);\n GetSettingsFeature.register(container);\n UpdateSettingsFeature.register(container);\n ListImagesByTagToolFeature.register(container);\n FileUrlGeneratorFeature.register(container);\n GetFileByUrlFeature.register(container);\n\n /* GraphQL schema factory. */\n container.register(FmGraphQLSchema);\n }\n});\n"],"names":["FileManagerFeature","createFeature","container","CreateFileFeature","CreateFilesInBatchFeature","UpdateFileFeature","DeleteFileFeature","GetFileFeature","ListFilesFeature","ListTagsFeature","SettingsInstallerFeature","GetSettingsFeature","UpdateSettingsFeature","ListImagesByTagToolFeature","FileUrlGeneratorFeature","GetFileByUrlFeature","FmGraphQLSchema"],"mappings":";;;;;;;;;;;;;;;AAgBO,MAAMA,qBAAqBC,cAAc;IAC5C,MAAM;IACN,UAASC,SAAS;QACdC,kBAAkB,QAAQ,CAACD;QAC3BE,0BAA0B,QAAQ,CAACF;QACnCG,kBAAkB,QAAQ,CAACH;QAC3BI,kBAAkB,QAAQ,CAACJ;QAC3BK,eAAe,QAAQ,CAACL;QACxBM,iBAAiB,QAAQ,CAACN;QAC1BO,gBAAgB,QAAQ,CAACP;QACzBQ,yBAAyB,QAAQ,CAACR;QAClCS,mBAAmB,QAAQ,CAACT;QAC5BU,sBAAsB,QAAQ,CAACV;QAC/BW,2BAA2B,QAAQ,CAACX;QACpCY,wBAAwB,QAAQ,CAACZ;QACjCa,oBAAoB,QAAQ,CAACb;QAG7BA,UAAU,QAAQ,CAACc;IACvB;AACJ"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AssetFactory as AssetFactoryAbstraction, type IAssetFactory } from "./abstractions.js";
|
|
2
|
+
declare class AssetFactoryImpl implements IAssetFactory {
|
|
3
|
+
create(data: AssetFactoryAbstraction.AssetData): AssetFactoryAbstraction.Asset;
|
|
4
|
+
}
|
|
5
|
+
export declare const AssetFactory: typeof AssetFactoryImpl & {
|
|
6
|
+
__abstraction: import("@webiny/di").Abstraction<IAssetFactory>;
|
|
7
|
+
};
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Asset } from "../../../delivery/AssetDelivery/Asset.js";
|
|
2
|
+
import { AssetFactory } from "./abstractions.js";
|
|
3
|
+
class AssetFactoryImpl {
|
|
4
|
+
create(data) {
|
|
5
|
+
return new Asset(data);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
const Asset_AssetFactory = AssetFactory.createImplementation({
|
|
9
|
+
implementation: AssetFactoryImpl,
|
|
10
|
+
dependencies: []
|
|
11
|
+
});
|
|
12
|
+
export { Asset_AssetFactory as AssetFactory };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=Asset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/assetDelivery/Asset/Asset.js","sources":["../../../../src/features/assetDelivery/Asset/Asset.ts"],"sourcesContent":["import { Asset } from \"~/delivery/AssetDelivery/Asset.js\";\nimport { AssetFactory as AssetFactoryAbstraction, type IAssetFactory } from \"./abstractions.js\";\n\nclass AssetFactoryImpl implements IAssetFactory {\n create(data: AssetFactoryAbstraction.AssetData): AssetFactoryAbstraction.Asset {\n return new Asset(data);\n }\n}\n\nexport const AssetFactory = AssetFactoryAbstraction.createImplementation({\n implementation: AssetFactoryImpl,\n dependencies: []\n});\n"],"names":["AssetFactoryImpl","data","Asset","AssetFactory","AssetFactoryAbstraction"],"mappings":";;AAGA,MAAMA;IACF,OAAOC,IAAuC,EAAiC;QAC3E,OAAO,IAAIC,MAAMD;IACrB;AACJ;AAEO,MAAME,qBAAeC,aAAAA,oBAA4C,CAAC;IACrE,gBAAgBJ;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Asset as IAsset, AssetData as IAssetData } from "../../../delivery/AssetDelivery/Asset.js";
|
|
2
|
+
export interface IAssetFactory {
|
|
3
|
+
create(data: IAssetData): IAsset;
|
|
4
|
+
}
|
|
5
|
+
export declare const AssetFactory: import("@webiny/di").Abstraction<IAssetFactory>;
|
|
6
|
+
export declare namespace AssetFactory {
|
|
7
|
+
type Interface = IAssetFactory;
|
|
8
|
+
type Asset = IAsset;
|
|
9
|
+
type AssetData = IAssetData;
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/assetDelivery/Asset/abstractions.js","sources":["../../../../src/features/assetDelivery/Asset/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Asset as IAsset, AssetData as IAssetData } from \"~/delivery/AssetDelivery/Asset.js\";\n\nexport interface IAssetFactory {\n create(data: IAssetData): IAsset;\n}\n\nexport const AssetFactory = createAbstraction<IAssetFactory>(\"AssetDelivery/AssetFactory\");\n\nexport namespace AssetFactory {\n export type Interface = IAssetFactory;\n export type Asset = IAsset;\n export type AssetData = IAssetData;\n}\n"],"names":["AssetFactory","createAbstraction"],"mappings":";AAOO,MAAMA,eAAeC,kBAAiC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AssetFactory } from "./abstractions.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AssetFactory } from "./abstractions.js";
|
|
@@ -2,7 +2,7 @@ import { AssetRequest } from "../../delivery/AssetDelivery/AssetRequest.js";
|
|
|
2
2
|
import { AssetRequestResolver } from "./abstractions.js";
|
|
3
3
|
class FilesAssetRequestResolver {
|
|
4
4
|
async resolve(request) {
|
|
5
|
-
if (!request.url
|
|
5
|
+
if (!request.url?.startsWith("/files/")) return;
|
|
6
6
|
const params = request.params ?? {};
|
|
7
7
|
const query = request.query ?? {};
|
|
8
8
|
const path = params["*"];
|
|
@@ -14,7 +14,7 @@ class FilesAssetRequestResolver {
|
|
|
14
14
|
return new AssetRequest({
|
|
15
15
|
key: decodeURI(path).replace("/files/", ""),
|
|
16
16
|
context: {
|
|
17
|
-
url: request.url
|
|
17
|
+
url: request.url ?? ""
|
|
18
18
|
},
|
|
19
19
|
options
|
|
20
20
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/assetDelivery/FilesAssetRequestResolver.js","sources":["../../../src/features/assetDelivery/FilesAssetRequestResolver.ts"],"sourcesContent":["import type { Request } from \"@webiny/handler/types.js\";\nimport type { AssetRequestOptions } from \"~/delivery/AssetDelivery/AssetRequest.js\";\nimport { AssetRequest } from \"~/delivery/AssetDelivery/AssetRequest.js\";\nimport { AssetRequestResolver, type IAssetRequestResolver } from \"./abstractions.js\";\n\nexport class FilesAssetRequestResolver implements IAssetRequestResolver {\n async resolve(request: Request): Promise<AssetRequest | undefined> {\n if (!request.url
|
|
1
|
+
{"version":3,"file":"features/assetDelivery/FilesAssetRequestResolver.js","sources":["../../../src/features/assetDelivery/FilesAssetRequestResolver.ts"],"sourcesContent":["import type { Request } from \"@webiny/handler/types.js\";\nimport type { AssetRequestOptions } from \"~/delivery/AssetDelivery/AssetRequest.js\";\nimport { AssetRequest } from \"~/delivery/AssetDelivery/AssetRequest.js\";\nimport { AssetRequestResolver, type IAssetRequestResolver } from \"./abstractions.js\";\n\nexport class FilesAssetRequestResolver implements IAssetRequestResolver {\n async resolve(request: Request): Promise<AssetRequest | undefined> {\n if (!request.url?.startsWith(\"/files/\")) {\n return undefined;\n }\n\n const params = (request.params as Record<string, any>) ?? {};\n const query = (request.query as Record<string, any>) ?? {};\n\n const path = params[\"*\"];\n\n const options: AssetRequestOptions = {\n ...query,\n original: \"original\" in query\n };\n\n if (query.width) {\n options.width = parseInt(query.width);\n }\n\n return new AssetRequest({\n key: decodeURI(path).replace(\"/files/\", \"\"),\n context: {\n url: request.url ?? \"\"\n },\n options\n });\n }\n}\n\nexport const FilesAssetRequestResolverImpl = AssetRequestResolver.createImplementation({\n implementation: FilesAssetRequestResolver,\n dependencies: []\n});\n"],"names":["FilesAssetRequestResolver","request","params","query","path","options","parseInt","AssetRequest","decodeURI","FilesAssetRequestResolverImpl","AssetRequestResolver"],"mappings":";;AAKO,MAAMA;IACT,MAAM,QAAQC,OAAgB,EAAqC;QAC/D,IAAI,CAACA,QAAQ,GAAG,EAAE,WAAW,YACzB;QAGJ,MAAMC,SAAUD,QAAQ,MAAM,IAA4B,CAAC;QAC3D,MAAME,QAASF,QAAQ,KAAK,IAA4B,CAAC;QAEzD,MAAMG,OAAOF,MAAM,CAAC,IAAI;QAExB,MAAMG,UAA+B;YACjC,GAAGF,KAAK;YACR,UAAU,cAAcA;QAC5B;QAEA,IAAIA,MAAM,KAAK,EACXE,QAAQ,KAAK,GAAGC,SAASH,MAAM,KAAK;QAGxC,OAAO,IAAII,aAAa;YACpB,KAAKC,UAAUJ,MAAM,OAAO,CAAC,WAAW;YACxC,SAAS;gBACL,KAAKH,QAAQ,GAAG,IAAI;YACxB;YACAI;QACJ;IACJ;AACJ;AAEO,MAAMI,gCAAgCC,qBAAqB,oBAAoB,CAAC;IACnF,gBAAgBV;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type IObjectKey, type IObjectKeyInstance } from "./abstractions.js";
|
|
2
|
+
declare class ObjectKeyImpl implements IObjectKey {
|
|
3
|
+
from(key: string): IObjectKeyInstance;
|
|
4
|
+
}
|
|
5
|
+
export declare const ObjectKey: typeof ObjectKeyImpl & {
|
|
6
|
+
__abstraction: import("@webiny/di").Abstraction<IObjectKey>;
|
|
7
|
+
};
|
|
8
|
+
export {};
|