@webiny/api-file-manager 6.3.0-beta.4 → 6.4.0-beta.0
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/contants.js +2 -1
- package/contants.js.map +1 -1
- package/delivery/AssetDelivery/Asset.js +50 -56
- package/delivery/AssetDelivery/Asset.js.map +1 -1
- package/delivery/AssetDelivery/AssetDeliveryConfig.js +70 -83
- package/delivery/AssetDelivery/AssetDeliveryConfig.js.map +1 -1
- package/delivery/AssetDelivery/AssetRequest.js +20 -19
- package/delivery/AssetDelivery/AssetRequest.js.map +1 -1
- package/delivery/AssetDelivery/FilesAssetRequestResolver.js +19 -25
- package/delivery/AssetDelivery/FilesAssetRequestResolver.js.map +1 -1
- package/delivery/AssetDelivery/NullAssetOutputStrategy.js +5 -4
- package/delivery/AssetDelivery/NullAssetOutputStrategy.js.map +1 -1
- package/delivery/AssetDelivery/NullAssetReply.js +10 -9
- package/delivery/AssetDelivery/NullAssetReply.js.map +1 -1
- package/delivery/AssetDelivery/NullAssetResolver.js +5 -4
- package/delivery/AssetDelivery/NullAssetResolver.js.map +1 -1
- package/delivery/AssetDelivery/NullRequestResolver.js +5 -4
- package/delivery/AssetDelivery/NullRequestResolver.js.map +1 -1
- package/delivery/AssetDelivery/SetCacheControlHeaders.js +11 -14
- package/delivery/AssetDelivery/SetCacheControlHeaders.js.map +1 -1
- package/delivery/AssetDelivery/SetResponseHeaders.js +16 -15
- package/delivery/AssetDelivery/SetResponseHeaders.js.map +1 -1
- package/delivery/AssetDelivery/abstractions/AssetContentsReader.js +0 -3
- package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js +0 -3
- package/delivery/AssetDelivery/abstractions/AssetProcessor.js +0 -3
- package/delivery/AssetDelivery/abstractions/AssetReply.js +28 -27
- package/delivery/AssetDelivery/abstractions/AssetReply.js.map +1 -1
- package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js +0 -3
- package/delivery/AssetDelivery/abstractions/AssetResolver.js +0 -3
- package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js +0 -3
- package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js +4 -5
- package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js +0 -3
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js +15 -14
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js +5 -4
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js +14 -16
- package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/PrivateCache.js +18 -17
- package/delivery/AssetDelivery/privateFiles/PrivateCache.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js +21 -25
- package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js +44 -51
- package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/PublicCache.js +18 -17
- package/delivery/AssetDelivery/privateFiles/PublicCache.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js +16 -15
- package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js +16 -15
- package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js.map +1 -1
- package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js +5 -4
- package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js.map +1 -1
- package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js +5 -4
- package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js.map +1 -1
- package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js +12 -15
- package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js.map +1 -1
- package/delivery/index.js +0 -2
- package/delivery/setupAssetDelivery.js +70 -101
- package/delivery/setupAssetDelivery.js.map +1 -1
- package/domain/file/abstractions.js +2 -5
- package/domain/file/abstractions.js.map +1 -1
- package/domain/file/errors.js +67 -76
- package/domain/file/errors.js.map +1 -1
- package/domain/file/file.model.js +57 -49
- package/domain/file/file.model.js.map +1 -1
- package/domain/file/types.js +0 -3
- package/domain/identity/Identity.js +9 -8
- package/domain/identity/Identity.js.map +1 -1
- package/domain/permissionsSchema.js +26 -15
- package/domain/permissionsSchema.js.map +1 -1
- package/domain/settings/constants.js +2 -1
- package/domain/settings/constants.js.map +1 -1
- package/domain/settings/errors.js +22 -24
- package/domain/settings/errors.js.map +1 -1
- package/domain/settings/types.js +0 -3
- package/domain/settings/validation.js +18 -27
- package/domain/settings/validation.js.map +1 -1
- package/exports/api/file-manager/file.js +0 -2
- package/exports/api/file-manager/permissions.js +0 -2
- package/exports/api/file-manager/settings.js +0 -2
- package/features/FileManagerFeature.js +16 -15
- package/features/FileManagerFeature.js.map +1 -1
- package/features/file/CreateFile/CreateFileRepository.js +20 -18
- package/features/file/CreateFile/CreateFileRepository.js.map +1 -1
- package/features/file/CreateFile/CreateFileUseCase.js +68 -75
- package/features/file/CreateFile/CreateFileUseCase.js.map +1 -1
- package/features/file/CreateFile/abstractions.js +3 -14
- package/features/file/CreateFile/abstractions.js.map +1 -1
- package/features/file/CreateFile/events.js +17 -26
- package/features/file/CreateFile/events.js.map +1 -1
- package/features/file/CreateFile/feature.js +7 -6
- package/features/file/CreateFile/feature.js.map +1 -1
- package/features/file/CreateFile/index.js +0 -2
- package/features/file/CreateFilesInBatch/CreateFilesInBatchRepository.js +15 -17
- package/features/file/CreateFilesInBatch/CreateFilesInBatchRepository.js.map +1 -1
- package/features/file/CreateFilesInBatch/CreateFilesInBatchUseCase.js +59 -70
- package/features/file/CreateFilesInBatch/CreateFilesInBatchUseCase.js.map +1 -1
- package/features/file/CreateFilesInBatch/abstractions.js +3 -14
- package/features/file/CreateFilesInBatch/abstractions.js.map +1 -1
- package/features/file/CreateFilesInBatch/events.js +17 -26
- package/features/file/CreateFilesInBatch/events.js.map +1 -1
- package/features/file/CreateFilesInBatch/feature.js +7 -6
- package/features/file/CreateFilesInBatch/feature.js.map +1 -1
- package/features/file/CreateFilesInBatch/index.js +0 -2
- package/features/file/DeleteFile/DeleteFileRepository.js +21 -20
- package/features/file/DeleteFile/DeleteFileRepository.js.map +1 -1
- package/features/file/DeleteFile/DeleteFileUseCase.js +31 -33
- package/features/file/DeleteFile/DeleteFileUseCase.js.map +1 -1
- package/features/file/DeleteFile/abstractions.js +3 -14
- package/features/file/DeleteFile/abstractions.js.map +1 -1
- package/features/file/DeleteFile/events.js +17 -26
- package/features/file/DeleteFile/events.js.map +1 -1
- package/features/file/DeleteFile/feature.js +7 -6
- package/features/file/DeleteFile/feature.js.map +1 -1
- package/features/file/DeleteFile/index.js +1 -3
- package/features/file/FileUrlGenerator/abstractions.js +2 -2
- package/features/file/FileUrlGenerator/abstractions.js.map +1 -1
- package/features/file/GetFile/GetFileRepository.js +22 -22
- package/features/file/GetFile/GetFileRepository.js.map +1 -1
- package/features/file/GetFile/GetFileUseCase.js +19 -21
- package/features/file/GetFile/GetFileUseCase.js.map +1 -1
- package/features/file/GetFile/abstractions.js +3 -14
- package/features/file/GetFile/abstractions.js.map +1 -1
- package/features/file/GetFile/feature.js +7 -6
- package/features/file/GetFile/feature.js.map +1 -1
- package/features/file/GetFile/index.js +0 -2
- package/features/file/GetFileContentsById/abstractions.d.ts +20 -0
- package/features/file/GetFileContentsById/abstractions.js +5 -0
- package/features/file/GetFileContentsById/abstractions.js.map +1 -0
- package/features/file/GetFileContentsById/index.d.ts +1 -0
- package/features/file/GetFileContentsById/index.js +1 -0
- package/features/file/GetFileContentsByKey/abstractions.d.ts +17 -0
- package/features/file/GetFileContentsByKey/abstractions.js +5 -0
- package/features/file/GetFileContentsByKey/abstractions.js.map +1 -0
- package/features/file/GetFileContentsByKey/index.d.ts +1 -0
- package/features/file/GetFileContentsByKey/index.js +1 -0
- package/features/file/ListFiles/ListFilesRepository.js +42 -40
- package/features/file/ListFiles/ListFilesRepository.js.map +1 -1
- package/features/file/ListFiles/ListFilesUseCase.js +33 -34
- package/features/file/ListFiles/ListFilesUseCase.js.map +1 -1
- package/features/file/ListFiles/abstractions.js +3 -14
- package/features/file/ListFiles/abstractions.js.map +1 -1
- package/features/file/ListFiles/feature.js +7 -6
- package/features/file/ListFiles/feature.js.map +1 -1
- package/features/file/ListFiles/index.js +0 -2
- package/features/file/ListImagesByTagTool/ListImagesByTagTool.js +31 -28
- package/features/file/ListImagesByTagTool/ListImagesByTagTool.js.map +1 -1
- package/features/file/ListImagesByTagTool/feature.js +6 -5
- package/features/file/ListImagesByTagTool/feature.js.map +1 -1
- package/features/file/ListTags/ListTagsRepository.js +31 -36
- package/features/file/ListTags/ListTagsRepository.js.map +1 -1
- package/features/file/ListTags/ListTagsUseCase.js +21 -21
- package/features/file/ListTags/ListTagsUseCase.js.map +1 -1
- package/features/file/ListTags/abstractions.js +3 -14
- package/features/file/ListTags/abstractions.js.map +1 -1
- package/features/file/ListTags/feature.js +7 -6
- package/features/file/ListTags/feature.js.map +1 -1
- package/features/file/ListTags/index.js +0 -2
- package/features/file/UpdateFile/UpdateFileRepository.js +26 -28
- package/features/file/UpdateFile/UpdateFileRepository.js.map +1 -1
- package/features/file/UpdateFile/UpdateFileUseCase.js +57 -65
- package/features/file/UpdateFile/UpdateFileUseCase.js.map +1 -1
- package/features/file/UpdateFile/abstractions.js +3 -14
- package/features/file/UpdateFile/abstractions.js.map +1 -1
- package/features/file/UpdateFile/events.js +17 -26
- package/features/file/UpdateFile/events.js.map +1 -1
- package/features/file/UpdateFile/feature.js +7 -6
- package/features/file/UpdateFile/feature.js.map +1 -1
- package/features/file/UpdateFile/index.js +1 -3
- package/features/file/shared/EntryToFileMapper.js +25 -24
- package/features/file/shared/EntryToFileMapper.js.map +1 -1
- package/features/file/shared/FileInputToEntryInputMapper.js +29 -28
- package/features/file/shared/FileInputToEntryInputMapper.js.map +1 -1
- package/features/file/shared/FileToEntryMapper.js +28 -27
- package/features/file/shared/FileToEntryMapper.js.map +1 -1
- package/features/permissions/abstractions.js +2 -1
- package/features/permissions/abstractions.js.map +1 -1
- package/features/permissions/feature.js +2 -1
- package/features/permissions/feature.js.map +1 -1
- package/features/settings/GetSettings/GetSettingsUseCase.js +19 -19
- package/features/settings/GetSettings/GetSettingsUseCase.js.map +1 -1
- package/features/settings/GetSettings/abstractions.js +2 -7
- package/features/settings/GetSettings/abstractions.js.map +1 -1
- package/features/settings/GetSettings/feature.js +6 -5
- package/features/settings/GetSettings/feature.js.map +1 -1
- package/features/settings/SettingsInstaller/SettingsInstaller.js +25 -24
- package/features/settings/SettingsInstaller/SettingsInstaller.js.map +1 -1
- package/features/settings/SettingsInstaller/feature.js +6 -5
- package/features/settings/SettingsInstaller/feature.js.map +1 -1
- package/features/settings/UpdateSettings/UpdateSettingsUseCase.js +41 -48
- package/features/settings/UpdateSettings/UpdateSettingsUseCase.js.map +1 -1
- package/features/settings/UpdateSettings/abstractions.js +2 -7
- package/features/settings/UpdateSettings/abstractions.js.map +1 -1
- package/features/settings/UpdateSettings/events.js +17 -26
- package/features/settings/UpdateSettings/events.js.map +1 -1
- package/features/settings/UpdateSettings/feature.js +6 -5
- package/features/settings/UpdateSettings/feature.js.map +1 -1
- package/features/settings/UpdateSettings/index.js +0 -2
- package/features/shared/abstractions.js +0 -2
- package/graphql/baseSchema.js +30 -33
- package/graphql/baseSchema.js.map +1 -1
- package/graphql/createFilesTypeDefs.js +49 -57
- package/graphql/createFilesTypeDefs.js.map +1 -1
- package/graphql/filesSchema.js +79 -99
- package/graphql/filesSchema.js.map +1 -1
- package/graphql/getFileByUrl.js +45 -53
- package/graphql/getFileByUrl.js.map +1 -1
- package/graphql/index.js +35 -42
- package/graphql/index.js.map +1 -1
- package/graphql/utils.js +9 -14
- package/graphql/utils.js.map +1 -1
- package/index.js +19 -30
- package/index.js.map +1 -1
- package/modelModifier/CmsModelModifier.js +40 -43
- package/modelModifier/CmsModelModifier.js.map +1 -1
- package/package.json +17 -20
- package/types.js +0 -2
- package/delivery/AssetDelivery/abstractions/AssetContentsReader.js.map +0 -1
- package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js.map +0 -1
- package/delivery/AssetDelivery/abstractions/AssetProcessor.js.map +0 -1
- package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js.map +0 -1
- package/delivery/AssetDelivery/abstractions/AssetResolver.js.map +0 -1
- package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js.map +0 -1
- package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js.map +0 -1
- package/delivery/index.js.map +0 -1
- package/domain/file/types.js.map +0 -1
- package/domain/settings/types.js.map +0 -1
- package/exports/api/file-manager/file.js.map +0 -1
- package/exports/api/file-manager/permissions.js.map +0 -1
- package/exports/api/file-manager/settings.js.map +0 -1
- package/features/ai/AiImageEnrichmentAfterCreateHandler.d.ts +0 -11
- package/features/ai/AiImageEnrichmentAfterCreateHandler.js +0 -28
- package/features/ai/AiImageEnrichmentAfterCreateHandler.js.map +0 -1
- package/features/ai/AiImageEnrichmentFeature.d.ts +0 -4
- package/features/ai/AiImageEnrichmentFeature.js +0 -12
- package/features/ai/AiImageEnrichmentFeature.js.map +0 -1
- package/features/file/CreateFile/index.js.map +0 -1
- package/features/file/CreateFilesInBatch/index.js.map +0 -1
- package/features/file/DeleteFile/index.js.map +0 -1
- package/features/file/GetFile/index.js.map +0 -1
- package/features/file/ListFiles/index.js.map +0 -1
- package/features/file/ListTags/index.js.map +0 -1
- package/features/file/UpdateFile/index.js.map +0 -1
- package/features/settings/UpdateSettings/index.js.map +0 -1
- package/features/shared/abstractions.js.map +0 -1
- package/tasks/AiImageEnrichmentTask.d.ts +0 -35
- package/tasks/AiImageEnrichmentTask.js +0 -136
- package/tasks/AiImageEnrichmentTask.js.map +0 -1
- package/types.js.map +0 -1
|
@@ -1,79 +1,71 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
|
-
import {
|
|
2
|
+
import { UpdateFileRepository, UpdateFileUseCase } from "./abstractions.js";
|
|
3
3
|
import { GetFileUseCase } from "../GetFile/abstractions.js";
|
|
4
4
|
import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
5
5
|
import { FileNotAuthorizedError } from "../../../domain/file/errors.js";
|
|
6
|
-
import {
|
|
6
|
+
import { FileAfterUpdateEvent, FileBeforeUpdateEvent } from "./events.js";
|
|
7
7
|
import { FmPermissions } from "../../shared/abstractions.js";
|
|
8
8
|
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
9
9
|
import { Identity } from "../../../domain/identity/Identity.js";
|
|
10
10
|
class UpdateFileUseCaseImpl {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
async execute(input) {
|
|
19
|
-
const hasPermission = await this.permissions.canEdit("file");
|
|
20
|
-
if (!hasPermission) {
|
|
21
|
-
return Result.fail(new FileNotAuthorizedError());
|
|
11
|
+
constructor(identityContext, permissions, getFile, repository, eventPublisher){
|
|
12
|
+
this.identityContext = identityContext;
|
|
13
|
+
this.permissions = permissions;
|
|
14
|
+
this.getFile = getFile;
|
|
15
|
+
this.repository = repository;
|
|
16
|
+
this.eventPublisher = eventPublisher;
|
|
22
17
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
const result = await this.repository.update(file);
|
|
63
|
-
if (result.isFail()) {
|
|
64
|
-
return Result.fail(result.error);
|
|
18
|
+
async execute(input) {
|
|
19
|
+
const hasPermission = await this.permissions.canEdit("file");
|
|
20
|
+
if (!hasPermission) return Result.fail(new FileNotAuthorizedError());
|
|
21
|
+
const getResult = await this.getFile.execute(input.id);
|
|
22
|
+
if (getResult.isFail()) return Result.fail(getResult.error);
|
|
23
|
+
const original = getResult.value;
|
|
24
|
+
const canEditFile = await this.permissions.canEdit("file", original);
|
|
25
|
+
if (!canEditFile) return Result.fail(new FileNotAuthorizedError());
|
|
26
|
+
const currentIdentity = this.identityContext.getIdentity();
|
|
27
|
+
const file = {
|
|
28
|
+
...original,
|
|
29
|
+
...input,
|
|
30
|
+
id: original.id,
|
|
31
|
+
key: original.key,
|
|
32
|
+
size: original.size,
|
|
33
|
+
type: original.type,
|
|
34
|
+
tags: void 0 !== input.tags ? input.tags : original.tags,
|
|
35
|
+
description: void 0 !== input.description ? input.description : original.description,
|
|
36
|
+
location: void 0 !== input.location ? input.location : original.location,
|
|
37
|
+
createdOn: input.createdOn ?? original.createdOn,
|
|
38
|
+
modifiedOn: input.modifiedOn ?? void 0,
|
|
39
|
+
savedOn: input.savedOn ?? original.savedOn,
|
|
40
|
+
createdBy: input.createdBy ? Identity.from(input.createdBy) : original.createdBy,
|
|
41
|
+
modifiedBy: input.modifiedBy ? Identity.from(input.modifiedBy) : Identity.from(currentIdentity),
|
|
42
|
+
savedBy: input.savedBy ? Identity.from(input.savedBy) : Identity.from(currentIdentity)
|
|
43
|
+
};
|
|
44
|
+
await this.eventPublisher.publish(new FileBeforeUpdateEvent({
|
|
45
|
+
original,
|
|
46
|
+
file,
|
|
47
|
+
input
|
|
48
|
+
}));
|
|
49
|
+
const result = await this.repository.update(file);
|
|
50
|
+
if (result.isFail()) return Result.fail(result.error);
|
|
51
|
+
await this.eventPublisher.publish(new FileAfterUpdateEvent({
|
|
52
|
+
original,
|
|
53
|
+
file,
|
|
54
|
+
input
|
|
55
|
+
}));
|
|
56
|
+
return Result.ok(file);
|
|
65
57
|
}
|
|
66
|
-
await this.eventPublisher.publish(new FileAfterUpdateEvent({
|
|
67
|
-
original,
|
|
68
|
-
file,
|
|
69
|
-
input
|
|
70
|
-
}));
|
|
71
|
-
return Result.ok(file);
|
|
72
|
-
}
|
|
73
58
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
59
|
+
const UpdateFileUseCase_UpdateFileUseCase = UpdateFileUseCase.createImplementation({
|
|
60
|
+
implementation: UpdateFileUseCaseImpl,
|
|
61
|
+
dependencies: [
|
|
62
|
+
IdentityContext,
|
|
63
|
+
FmPermissions,
|
|
64
|
+
GetFileUseCase,
|
|
65
|
+
UpdateFileRepository,
|
|
66
|
+
EventPublisher
|
|
67
|
+
]
|
|
77
68
|
});
|
|
69
|
+
export { UpdateFileUseCase_UpdateFileUseCase as UpdateFileUseCase };
|
|
78
70
|
|
|
79
71
|
//# sourceMappingURL=UpdateFileUseCase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/file/UpdateFile/UpdateFileUseCase.js","sources":["../../../../src/features/file/UpdateFile/UpdateFileUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n UpdateFileUseCase as UseCaseAbstraction,\n UpdateFileInput,\n UpdateFileRepository\n} from \"./abstractions.js\";\nimport { GetFileUseCase } from \"../GetFile/abstractions.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { File } from \"~/domain/file/types.js\";\nimport { FileNotAuthorizedError } from \"~/domain/file/errors.js\";\nimport { FileBeforeUpdateEvent, FileAfterUpdateEvent } from \"./events.js\";\nimport { FmPermissions } from \"~/features/shared/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { Identity } from \"~/domain/identity/Identity.js\";\n\nclass UpdateFileUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private permissions: FmPermissions.Interface,\n private getFile: GetFileUseCase.Interface,\n private repository: UpdateFileRepository.Interface,\n private eventPublisher: EventPublisher.Interface\n ) {}\n\n async execute(input: UpdateFileInput): Promise<Result<File, UseCaseAbstraction.Error>> {\n const hasPermission = await this.permissions.canEdit(\"file\");\n if (!hasPermission) {\n return Result.fail(new FileNotAuthorizedError());\n }\n\n // Get the original file (includes ownership check).\n const getResult = await this.getFile.execute(input.id);\n\n if (getResult.isFail()) {\n return Result.fail(getResult.error);\n }\n\n const original = getResult.value;\n\n // Check ownership-aware edit permission.\n const canEditFile = await this.permissions.canEdit(\"file\", original);\n if (!canEditFile) {\n return Result.fail(new FileNotAuthorizedError());\n }\n\n const currentIdentity = this.identityContext.getIdentity();\n\n const file: File = {\n ...original,\n ...input,\n // Preserve immutable fields.\n id: original.id,\n key: original.key,\n size: original.size,\n type: original.type,\n // Update mutable fields.\n tags: input.tags !== undefined ? input.tags : original.tags,\n description: input.description !== undefined ? input.description : original.description,\n location: input.location !== undefined ? input.location : original.location,\n // System fields.\n createdOn: input.createdOn ?? original.createdOn,\n modifiedOn: input.modifiedOn ?? undefined,\n savedOn: input.savedOn ?? original.savedOn,\n createdBy: input.createdBy ? Identity.from(input.createdBy) : original.createdBy,\n modifiedBy: input.modifiedBy\n ? Identity.from(input.modifiedBy)\n : Identity.from(currentIdentity),\n savedBy: input.savedBy ? Identity.from(input.savedBy) : Identity.from(currentIdentity)\n };\n\n await this.eventPublisher.publish(new FileBeforeUpdateEvent({ original, file, input }));\n\n const result = await this.repository.update(file);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n await this.eventPublisher.publish(new FileAfterUpdateEvent({ original, file, input }));\n\n return Result.ok(file);\n }\n}\n\nexport const UpdateFileUseCase = UseCaseAbstraction.createImplementation({\n implementation: UpdateFileUseCaseImpl,\n dependencies: [\n IdentityContext,\n FmPermissions,\n GetFileUseCase,\n UpdateFileRepository,\n EventPublisher\n ]\n});\n"],"names":["UpdateFileUseCaseImpl","identityContext","permissions","getFile","repository","eventPublisher","input","hasPermission","Result","FileNotAuthorizedError","getResult","original","canEditFile","currentIdentity","file","undefined","Identity","FileBeforeUpdateEvent","result","FileAfterUpdateEvent","UpdateFileUseCase","UseCaseAbstraction","IdentityContext","FmPermissions","GetFileUseCase","UpdateFileRepository","EventPublisher"],"mappings":";;;;;;;;;AAeA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,WAAoC,EACpCC,OAAiC,EACjCC,UAA0C,EAC1CC,cAAwC,CAClD;aALUJ,eAAe,GAAfA;aACAC,WAAW,GAAXA;aACAC,OAAO,GAAPA;aACAC,UAAU,GAAVA;aACAC,cAAc,GAAdA;IACT;IAEH,MAAM,QAAQC,KAAsB,EAAmD;QACnF,MAAMC,gBAAgB,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;QACrD,IAAI,CAACA,eACD,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAI3B,MAAMC,YAAY,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAACJ,MAAM,EAAE;QAErD,IAAII,UAAU,MAAM,IAChB,OAAOF,OAAO,IAAI,CAACE,UAAU,KAAK;QAGtC,MAAMC,WAAWD,UAAU,KAAK;QAGhC,MAAME,cAAc,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQD;QAC3D,IAAI,CAACC,aACD,OAAOJ,OAAO,IAAI,CAAC,IAAIC;QAG3B,MAAMI,kBAAkB,IAAI,CAAC,eAAe,CAAC,WAAW;QAExD,MAAMC,OAAa;YACf,GAAGH,QAAQ;YACX,GAAGL,KAAK;YAER,IAAIK,SAAS,EAAE;YACf,KAAKA,SAAS,GAAG;YACjB,MAAMA,SAAS,IAAI;YACnB,MAAMA,SAAS,IAAI;YAEnB,MAAML,AAAeS,WAAfT,MAAM,IAAI,GAAiBA,MAAM,IAAI,GAAGK,SAAS,IAAI;YAC3D,aAAaL,AAAsBS,WAAtBT,MAAM,WAAW,GAAiBA,MAAM,WAAW,GAAGK,SAAS,WAAW;YACvF,UAAUL,AAAmBS,WAAnBT,MAAM,QAAQ,GAAiBA,MAAM,QAAQ,GAAGK,SAAS,QAAQ;YAE3E,WAAWL,MAAM,SAAS,IAAIK,SAAS,SAAS;YAChD,YAAYL,MAAM,UAAU,IAAIS;YAChC,SAAST,MAAM,OAAO,IAAIK,SAAS,OAAO;YAC1C,WAAWL,MAAM,SAAS,GAAGU,SAAS,IAAI,CAACV,MAAM,SAAS,IAAIK,SAAS,SAAS;YAChF,YAAYL,MAAM,UAAU,GACtBU,SAAS,IAAI,CAACV,MAAM,UAAU,IAC9BU,SAAS,IAAI,CAACH;YACpB,SAASP,MAAM,OAAO,GAAGU,SAAS,IAAI,CAACV,MAAM,OAAO,IAAIU,SAAS,IAAI,CAACH;QAC1E;QAEA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAII,sBAAsB;YAAEN;YAAUG;YAAMR;QAAM;QAEpF,MAAMY,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAACJ;QAE5C,IAAII,OAAO,MAAM,IACb,OAAOV,OAAO,IAAI,CAACU,OAAO,KAAK;QAGnC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAIC,qBAAqB;YAAER;YAAUG;YAAMR;QAAM;QAEnF,OAAOE,OAAO,EAAE,CAACM;IACrB;AACJ;AAEO,MAAMM,sCAAoBC,kBAAAA,oBAAuC,CAAC;IACrE,gBAAgBrB;IAChB,cAAc;QACVsB;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
|
|
@@ -1,17 +1,6 @@
|
|
|
1
1
|
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/** Persist file metadata updates. */
|
|
8
|
-
export const UpdateFileRepository = createAbstraction("UpdateFileRepository");
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* UpdateFile use case interface
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/** Update file metadata. */
|
|
15
|
-
export const UpdateFileUseCase = createAbstraction("UpdateFileUseCase");
|
|
2
|
+
const UpdateFileRepository = createAbstraction("UpdateFileRepository");
|
|
3
|
+
const UpdateFileUseCase = createAbstraction("UpdateFileUseCase");
|
|
4
|
+
export { UpdateFileRepository, UpdateFileUseCase };
|
|
16
5
|
|
|
17
6
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/file/UpdateFile/abstractions.js","sources":["../../../../src/features/file/UpdateFile/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { CreatedBy, File } from \"~/domain/file/types.js\";\nimport {\n type FilePersistenceError,\n type FileNotFoundError,\n FileNotAuthorizedError\n} from \"~/domain/file/errors.js\";\n\nexport interface UpdateFileInput {\n id: string;\n name?: string;\n metadata?: Record<string, any>;\n tags?: string[];\n description?: string;\n location?: { folderId: string };\n createdOn?: string;\n modifiedOn?: string;\n savedOn?: string;\n createdBy?: CreatedBy;\n modifiedBy?: CreatedBy;\n savedBy?: CreatedBy;\n}\n\n/**\n * UpdateFile repository interface\n */\nexport interface IUpdateFileRepository {\n update(file: File): Promise<Result<void, RepositoryError>>;\n}\n\nexport interface IUpdateFileRepositoryErrors {\n notFound: FileNotFoundError;\n notAuthorized: FileNotAuthorizedError;\n persistence: FilePersistenceError;\n}\n\ntype RepositoryError = IUpdateFileRepositoryErrors[keyof IUpdateFileRepositoryErrors];\n\n/** Persist file metadata updates. */\nexport const UpdateFileRepository =\n createAbstraction<IUpdateFileRepository>(\"UpdateFileRepository\");\n\nexport namespace UpdateFileRepository {\n export type Interface = IUpdateFileRepository;\n export type Error = RepositoryError;\n}\n\n/**\n * UpdateFile use case interface\n */\nexport interface IUpdateFileUseCase {\n execute(input: UpdateFileInput): Promise<Result<File, UseCaseError>>;\n}\n\nexport interface IUpdateFileUseCaseErrors {\n notAuthorized: FileNotAuthorizedError;\n notFound: FileNotFoundError;\n persistence: FilePersistenceError;\n}\n\ntype UseCaseError = IUpdateFileUseCaseErrors[keyof IUpdateFileUseCaseErrors];\n\n/** Update file metadata. */\nexport const UpdateFileUseCase = createAbstraction<IUpdateFileUseCase>(\"UpdateFileUseCase\");\n\nexport namespace UpdateFileUseCase {\n export type Interface = IUpdateFileUseCase;\n export type Error = UseCaseError;\n}\n"],"names":["UpdateFileRepository","createAbstraction","UpdateFileUseCase"],"mappings":";AAwCO,MAAMA,uBACTC,kBAAyC;AAuBtC,MAAMC,oBAAoBD,kBAAsC"}
|
|
@@ -1,32 +1,23 @@
|
|
|
1
1
|
import { createAbstraction } from "@webiny/feature/api";
|
|
2
2
|
import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
getHandlerAbstraction() {
|
|
11
|
-
return FileBeforeUpdateEventHandler;
|
|
12
|
-
}
|
|
3
|
+
class FileBeforeUpdateEvent extends DomainEvent {
|
|
4
|
+
getHandlerAbstraction() {
|
|
5
|
+
return FileBeforeUpdateEventHandler;
|
|
6
|
+
}
|
|
7
|
+
constructor(...args){
|
|
8
|
+
super(...args), this.eventType = "FileManager/File/BeforeUpdate";
|
|
9
|
+
}
|
|
13
10
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
export class FileAfterUpdateEvent extends DomainEvent {
|
|
23
|
-
eventType = "FileManager/File/AfterUpdate";
|
|
24
|
-
getHandlerAbstraction() {
|
|
25
|
-
return FileAfterUpdateEventHandler;
|
|
26
|
-
}
|
|
11
|
+
const FileBeforeUpdateEventHandler = createAbstraction("FileBeforeUpdateEventHandler");
|
|
12
|
+
class FileAfterUpdateEvent extends DomainEvent {
|
|
13
|
+
getHandlerAbstraction() {
|
|
14
|
+
return FileAfterUpdateEventHandler;
|
|
15
|
+
}
|
|
16
|
+
constructor(...args){
|
|
17
|
+
super(...args), this.eventType = "FileManager/File/AfterUpdate";
|
|
18
|
+
}
|
|
27
19
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
export const FileAfterUpdateEventHandler = createAbstraction("FileAfterUpdateEventHandler");
|
|
20
|
+
const FileAfterUpdateEventHandler = createAbstraction("FileAfterUpdateEventHandler");
|
|
21
|
+
export { FileAfterUpdateEvent, FileAfterUpdateEventHandler, FileBeforeUpdateEvent, FileBeforeUpdateEventHandler };
|
|
31
22
|
|
|
32
23
|
//# sourceMappingURL=events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/file/UpdateFile/events.js","sources":["../../../../src/features/file/UpdateFile/events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { File } from \"~/domain/file/types.js\";\nimport type { UpdateFileInput } from \"./abstractions.js\";\n\n// ============================================================================\n// FileBeforeUpdate Event\n// ============================================================================\n\nexport interface FileBeforeUpdatePayload {\n original: File;\n file: File;\n input: UpdateFileInput;\n}\n\nexport class FileBeforeUpdateEvent extends DomainEvent<FileBeforeUpdatePayload> {\n eventType = \"FileManager/File/BeforeUpdate\" as const;\n\n getHandlerAbstraction() {\n return FileBeforeUpdateEventHandler;\n }\n}\n\n/** Hook into file lifecycle before a file is updated. */\nexport const FileBeforeUpdateEventHandler = createAbstraction<IEventHandler<FileBeforeUpdateEvent>>(\n \"FileBeforeUpdateEventHandler\"\n);\n\nexport namespace FileBeforeUpdateEventHandler {\n export type Interface = IEventHandler<FileBeforeUpdateEvent>;\n export type Event = FileBeforeUpdateEvent;\n}\n\n// ============================================================================\n// FileAfterUpdate Event\n// ============================================================================\n\nexport interface FileAfterUpdatePayload {\n original: File;\n file: File;\n input: UpdateFileInput;\n}\n\nexport class FileAfterUpdateEvent extends DomainEvent<FileAfterUpdatePayload> {\n eventType = \"FileManager/File/AfterUpdate\" as const;\n\n getHandlerAbstraction() {\n return FileAfterUpdateEventHandler;\n }\n}\n\n/** Hook into file lifecycle after a file is updated. */\nexport const FileAfterUpdateEventHandler = createAbstraction<IEventHandler<FileAfterUpdateEvent>>(\n \"FileAfterUpdateEventHandler\"\n);\n\nexport namespace FileAfterUpdateEventHandler {\n export type Interface = IEventHandler<FileAfterUpdateEvent>;\n export type Event = FileAfterUpdateEvent;\n}\n"],"names":["FileBeforeUpdateEvent","DomainEvent","FileBeforeUpdateEventHandler","createAbstraction","FileAfterUpdateEvent","FileAfterUpdateEventHandler"],"mappings":";;AAgBO,MAAMA,8BAA8BC;IAGvC,wBAAwB;QACpB,OAAOC;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB;AAGO,MAAMA,+BAA+BC,kBACxC;AAkBG,MAAMC,6BAA6BH;IAGtC,wBAAwB;QACpB,OAAOI;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB;AAGO,MAAMA,8BAA8BF,kBACvC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { createFeature } from "@webiny/feature/api";
|
|
2
2
|
import { UpdateFileRepository } from "./UpdateFileRepository.js";
|
|
3
3
|
import { UpdateFileUseCase } from "./UpdateFileUseCase.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
const UpdateFileFeature = createFeature({
|
|
5
|
+
name: "FileManager/UpdateFile",
|
|
6
|
+
register (container) {
|
|
7
|
+
container.register(UpdateFileUseCase);
|
|
8
|
+
container.register(UpdateFileRepository).inSingletonScope();
|
|
9
|
+
}
|
|
10
10
|
});
|
|
11
|
+
export { UpdateFileFeature };
|
|
11
12
|
|
|
12
13
|
//# sourceMappingURL=feature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/file/UpdateFile/feature.js","sources":["../../../../src/features/file/UpdateFile/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { UpdateFileRepository } from \"./UpdateFileRepository.js\";\nimport { UpdateFileUseCase } from \"./UpdateFileUseCase.js\";\n\nexport const UpdateFileFeature = createFeature({\n name: \"FileManager/UpdateFile\",\n register(container) {\n container.register(UpdateFileUseCase);\n container.register(UpdateFileRepository).inSingletonScope();\n }\n});\n"],"names":["UpdateFileFeature","createFeature","container","UpdateFileUseCase","UpdateFileRepository"],"mappings":";;;AAIO,MAAMA,oBAAoBC,cAAc;IAC3C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE,sBAAsB,gBAAgB;IAC7D;AACJ"}
|
|
@@ -1,4 +1,2 @@
|
|
|
1
1
|
export { UpdateFileUseCase } from "./abstractions.js";
|
|
2
|
-
export {
|
|
3
|
-
|
|
4
|
-
//# sourceMappingURL=index.js.map
|
|
2
|
+
export { FileAfterUpdateEventHandler, FileBeforeUpdateEventHandler } from "./events.js";
|
|
@@ -1,27 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
1
|
+
class EntryToFileMapper {
|
|
2
|
+
static toFile(entry) {
|
|
3
|
+
return {
|
|
4
|
+
id: entry.entryId,
|
|
5
|
+
createdOn: entry.createdOn,
|
|
6
|
+
modifiedOn: entry.modifiedOn ?? void 0,
|
|
7
|
+
savedOn: entry.savedOn,
|
|
8
|
+
createdBy: entry.createdBy,
|
|
9
|
+
modifiedBy: entry.modifiedBy ?? void 0,
|
|
10
|
+
savedBy: entry.savedBy,
|
|
11
|
+
name: entry.values.name,
|
|
12
|
+
key: entry.values.key,
|
|
13
|
+
size: entry.values.size,
|
|
14
|
+
type: entry.values.type,
|
|
15
|
+
metadata: entry.values.metadata || {},
|
|
16
|
+
accessControl: entry.values.accessControl,
|
|
17
|
+
location: {
|
|
18
|
+
folderId: entry.location?.folderId ?? "root"
|
|
19
|
+
},
|
|
20
|
+
tags: entry.values.tags || [],
|
|
21
|
+
description: entry.values.description ?? "",
|
|
22
|
+
extensions: entry.values.extensions
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
25
|
}
|
|
26
|
+
export { EntryToFileMapper };
|
|
26
27
|
|
|
27
28
|
//# sourceMappingURL=EntryToFileMapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/file/shared/EntryToFileMapper.js","sources":["../../../../src/features/file/shared/EntryToFileMapper.ts"],"sourcesContent":["import type { CmsEntry } from \"@webiny/api-headless-cms/types\";\nimport type { File } from \"~/domain/file/types.js\";\n\nexport class EntryToFileMapper {\n static toFile(entry: CmsEntry): File {\n return {\n id: entry.entryId,\n createdOn: entry.createdOn,\n modifiedOn: entry.modifiedOn ?? undefined,\n savedOn: entry.savedOn,\n createdBy: entry.createdBy,\n modifiedBy: entry.modifiedBy ?? undefined,\n savedBy: entry.savedBy,\n name: entry.values.name,\n key: entry.values.key,\n size: entry.values.size,\n type: entry.values.type,\n metadata: entry.values.metadata || {},\n accessControl: entry.values.accessControl,\n location: { folderId: entry.location?.folderId ?? \"root\" },\n tags: entry.values.tags || [],\n description: entry.values.description ?? \"\",\n extensions: entry.values.extensions\n };\n }\n}\n"],"names":["EntryToFileMapper","entry","undefined"],"mappings":"AAGO,MAAMA;IACT,OAAO,OAAOC,KAAe,EAAQ;QACjC,OAAO;YACH,IAAIA,MAAM,OAAO;YACjB,WAAWA,MAAM,SAAS;YAC1B,YAAYA,MAAM,UAAU,IAAIC;YAChC,SAASD,MAAM,OAAO;YACtB,WAAWA,MAAM,SAAS;YAC1B,YAAYA,MAAM,UAAU,IAAIC;YAChC,SAASD,MAAM,OAAO;YACtB,MAAMA,MAAM,MAAM,CAAC,IAAI;YACvB,KAAKA,MAAM,MAAM,CAAC,GAAG;YACrB,MAAMA,MAAM,MAAM,CAAC,IAAI;YACvB,MAAMA,MAAM,MAAM,CAAC,IAAI;YACvB,UAAUA,MAAM,MAAM,CAAC,QAAQ,IAAI,CAAC;YACpC,eAAeA,MAAM,MAAM,CAAC,aAAa;YACzC,UAAU;gBAAE,UAAUA,MAAM,QAAQ,EAAE,YAAY;YAAO;YACzD,MAAMA,MAAM,MAAM,CAAC,IAAI,IAAI,EAAE;YAC7B,aAAaA,MAAM,MAAM,CAAC,WAAW,IAAI;YACzC,YAAYA,MAAM,MAAM,CAAC,UAAU;QACvC;IACJ;AACJ"}
|
|
@@ -1,31 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
1
|
+
class FileInputToEntryInputMapper {
|
|
2
|
+
static toEntry(file) {
|
|
3
|
+
return {
|
|
4
|
+
id: file.id,
|
|
5
|
+
createdOn: file.createdOn,
|
|
6
|
+
modifiedOn: file.modifiedOn,
|
|
7
|
+
savedOn: file.savedOn,
|
|
8
|
+
createdBy: file.createdBy,
|
|
9
|
+
modifiedBy: file.modifiedBy,
|
|
10
|
+
savedBy: file.savedBy,
|
|
11
|
+
location: file.location || {
|
|
12
|
+
folderId: "root"
|
|
13
|
+
},
|
|
14
|
+
values: {
|
|
15
|
+
name: file.name,
|
|
16
|
+
key: file.key,
|
|
17
|
+
size: file.size,
|
|
18
|
+
type: file.type,
|
|
19
|
+
metadata: file.metadata || {},
|
|
20
|
+
accessControl: {
|
|
21
|
+
type: "public"
|
|
22
|
+
},
|
|
23
|
+
tags: file.tags || [],
|
|
24
|
+
description: file.description ?? "",
|
|
25
|
+
extensions: file.extensions
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
29
|
}
|
|
30
|
+
export { FileInputToEntryInputMapper };
|
|
30
31
|
|
|
31
32
|
//# sourceMappingURL=FileInputToEntryInputMapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/file/shared/FileInputToEntryInputMapper.js","sources":["../../../../src/features/file/shared/FileInputToEntryInputMapper.ts"],"sourcesContent":["import type { CreateCmsEntryInput } from \"@webiny/api-headless-cms/types\";\nimport type { FileInput } from \"~/domain/file/types.js\";\n\nexport class FileInputToEntryInputMapper {\n static toEntry(file: FileInput): CreateCmsEntryInput {\n return {\n id: file.id,\n createdOn: file.createdOn,\n modifiedOn: file.modifiedOn,\n savedOn: file.savedOn,\n createdBy: file.createdBy,\n modifiedBy: file.modifiedBy,\n savedBy: file.savedBy,\n location: file.location || { folderId: \"root\" },\n values: {\n name: file.name,\n key: file.key,\n size: file.size,\n type: file.type,\n metadata: file.metadata || {},\n accessControl: {\n type: \"public\"\n },\n tags: file.tags || [],\n description: file.description ?? \"\",\n extensions: file.extensions\n }\n };\n }\n}\n"],"names":["FileInputToEntryInputMapper","file"],"mappings":"AAGO,MAAMA;IACT,OAAO,QAAQC,IAAe,EAAuB;QACjD,OAAO;YACH,IAAIA,KAAK,EAAE;YACX,WAAWA,KAAK,SAAS;YACzB,YAAYA,KAAK,UAAU;YAC3B,SAASA,KAAK,OAAO;YACrB,WAAWA,KAAK,SAAS;YACzB,YAAYA,KAAK,UAAU;YAC3B,SAASA,KAAK,OAAO;YACrB,UAAUA,KAAK,QAAQ,IAAI;gBAAE,UAAU;YAAO;YAC9C,QAAQ;gBACJ,MAAMA,KAAK,IAAI;gBACf,KAAKA,KAAK,GAAG;gBACb,MAAMA,KAAK,IAAI;gBACf,MAAMA,KAAK,IAAI;gBACf,UAAUA,KAAK,QAAQ,IAAI,CAAC;gBAC5B,eAAe;oBACX,MAAM;gBACV;gBACA,MAAMA,KAAK,IAAI,IAAI,EAAE;gBACrB,aAAaA,KAAK,WAAW,IAAI;gBACjC,YAAYA,KAAK,UAAU;YAC/B;QACJ;IACJ;AACJ"}
|
|
@@ -1,30 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
1
|
+
class FileToEntryMapper {
|
|
2
|
+
static toEntry(file) {
|
|
3
|
+
return {
|
|
4
|
+
id: `${file.id}#0001`,
|
|
5
|
+
entryId: file.id,
|
|
6
|
+
createdOn: file.createdOn,
|
|
7
|
+
modifiedOn: file.modifiedOn,
|
|
8
|
+
savedOn: file.savedOn,
|
|
9
|
+
createdBy: file.createdBy,
|
|
10
|
+
modifiedBy: file.modifiedBy,
|
|
11
|
+
savedBy: file.savedBy,
|
|
12
|
+
location: file.location || {
|
|
13
|
+
folderId: "root"
|
|
14
|
+
},
|
|
15
|
+
values: {
|
|
16
|
+
name: file.name,
|
|
17
|
+
key: file.key,
|
|
18
|
+
size: file.size,
|
|
19
|
+
type: file.type,
|
|
20
|
+
metadata: file.metadata || {},
|
|
21
|
+
accessControl: file.accessControl,
|
|
22
|
+
tags: file.tags || [],
|
|
23
|
+
description: file.description ?? "",
|
|
24
|
+
extensions: file.extensions
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
28
|
}
|
|
29
|
+
export { FileToEntryMapper };
|
|
29
30
|
|
|
30
31
|
//# sourceMappingURL=FileToEntryMapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/file/shared/FileToEntryMapper.js","sources":["../../../../src/features/file/shared/FileToEntryMapper.ts"],"sourcesContent":["import type { CmsEntry } from \"@webiny/api-headless-cms/types\";\nimport type { File } from \"~/domain/file/types.js\";\n\nexport class FileToEntryMapper {\n static toEntry(file: File): Partial<CmsEntry> {\n return {\n id: `${file.id}#0001`,\n entryId: file.id,\n createdOn: file.createdOn,\n modifiedOn: file.modifiedOn,\n savedOn: file.savedOn,\n createdBy: file.createdBy,\n modifiedBy: file.modifiedBy,\n savedBy: file.savedBy,\n location: file.location || { folderId: \"root\" },\n values: {\n name: file.name,\n key: file.key,\n size: file.size,\n type: file.type,\n metadata: file.metadata || {},\n accessControl: file.accessControl,\n tags: file.tags || [],\n description: file.description ?? \"\",\n extensions: file.extensions\n }\n };\n }\n}\n"],"names":["FileToEntryMapper","file"],"mappings":"AAGO,MAAMA;IACT,OAAO,QAAQC,IAAU,EAAqB;QAC1C,OAAO;YACH,IAAI,GAAGA,KAAK,EAAE,CAAC,KAAK,CAAC;YACrB,SAASA,KAAK,EAAE;YAChB,WAAWA,KAAK,SAAS;YACzB,YAAYA,KAAK,UAAU;YAC3B,SAASA,KAAK,OAAO;YACrB,WAAWA,KAAK,SAAS;YACzB,YAAYA,KAAK,UAAU;YAC3B,SAASA,KAAK,OAAO;YACrB,UAAUA,KAAK,QAAQ,IAAI;gBAAE,UAAU;YAAO;YAC9C,QAAQ;gBACJ,MAAMA,KAAK,IAAI;gBACf,KAAKA,KAAK,GAAG;gBACb,MAAMA,KAAK,IAAI;gBACf,MAAMA,KAAK,IAAI;gBACf,UAAUA,KAAK,QAAQ,IAAI,CAAC;gBAC5B,eAAeA,KAAK,aAAa;gBACjC,MAAMA,KAAK,IAAI,IAAI,EAAE;gBACrB,aAAaA,KAAK,WAAW,IAAI;gBACjC,YAAYA,KAAK,UAAU;YAC/B;QACJ;IACJ;AACJ"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createPermissionsAbstraction } from "@webiny/api-core/features/security/permissions/index.js";
|
|
2
2
|
import { FM_PERMISSIONS_SCHEMA } from "../../domain/permissionsSchema.js";
|
|
3
|
-
|
|
3
|
+
const FmPermissions = createPermissionsAbstraction(FM_PERMISSIONS_SCHEMA);
|
|
4
|
+
export { FmPermissions };
|
|
4
5
|
|
|
5
6
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/permissions/abstractions.js","sources":["../../../src/features/permissions/abstractions.ts"],"sourcesContent":["import { createPermissionsAbstraction } from \"@webiny/api-core/features/security/permissions/index.js\";\nimport type { Permissions } from \"@webiny/api-core/features/security/permissions/index.js\";\nimport { FM_PERMISSIONS_SCHEMA } from \"~/domain/permissionsSchema.js\";\n\nexport const FmPermissions = createPermissionsAbstraction(FM_PERMISSIONS_SCHEMA);\n\nexport namespace FmPermissions {\n export type Interface = Permissions<typeof FM_PERMISSIONS_SCHEMA>;\n}\n"],"names":["FmPermissions","createPermissionsAbstraction","FM_PERMISSIONS_SCHEMA"],"mappings":";;AAIO,MAAMA,gBAAgBC,6BAA6BC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createPermissionsFeature } from "@webiny/api-core/exports/api/security.js";
|
|
2
2
|
import { FM_PERMISSIONS_SCHEMA } from "../../domain/permissionsSchema.js";
|
|
3
3
|
import { FmPermissions } from "./abstractions.js";
|
|
4
|
-
|
|
4
|
+
const FmPermissionsFeature = createPermissionsFeature(FM_PERMISSIONS_SCHEMA, FmPermissions);
|
|
5
|
+
export { FmPermissionsFeature };
|
|
5
6
|
|
|
6
7
|
//# sourceMappingURL=feature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/permissions/feature.js","sources":["../../../src/features/permissions/feature.ts"],"sourcesContent":["import { createPermissionsFeature } from \"@webiny/api-core/exports/api/security.js\";\nimport { FM_PERMISSIONS_SCHEMA } from \"~/domain/permissionsSchema.js\";\nimport { FmPermissions } from \"./abstractions.js\";\n\nexport const FmPermissionsFeature = createPermissionsFeature(FM_PERMISSIONS_SCHEMA, FmPermissions);\n"],"names":["FmPermissionsFeature","createPermissionsFeature","FM_PERMISSIONS_SCHEMA","FmPermissions"],"mappings":";;;AAIO,MAAMA,uBAAuBC,yBAAyBC,uBAAuBC"}
|