@webiny/api-file-manager 6.3.0 → 6.4.0-beta.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.
Files changed (251) hide show
  1. package/contants.js +2 -1
  2. package/contants.js.map +1 -1
  3. package/delivery/AssetDelivery/Asset.js +50 -56
  4. package/delivery/AssetDelivery/Asset.js.map +1 -1
  5. package/delivery/AssetDelivery/AssetDeliveryConfig.js +70 -83
  6. package/delivery/AssetDelivery/AssetDeliveryConfig.js.map +1 -1
  7. package/delivery/AssetDelivery/AssetRequest.js +20 -19
  8. package/delivery/AssetDelivery/AssetRequest.js.map +1 -1
  9. package/delivery/AssetDelivery/FilesAssetRequestResolver.js +19 -25
  10. package/delivery/AssetDelivery/FilesAssetRequestResolver.js.map +1 -1
  11. package/delivery/AssetDelivery/NullAssetOutputStrategy.js +5 -4
  12. package/delivery/AssetDelivery/NullAssetOutputStrategy.js.map +1 -1
  13. package/delivery/AssetDelivery/NullAssetReply.js +10 -9
  14. package/delivery/AssetDelivery/NullAssetReply.js.map +1 -1
  15. package/delivery/AssetDelivery/NullAssetResolver.js +5 -4
  16. package/delivery/AssetDelivery/NullAssetResolver.js.map +1 -1
  17. package/delivery/AssetDelivery/NullRequestResolver.js +5 -4
  18. package/delivery/AssetDelivery/NullRequestResolver.js.map +1 -1
  19. package/delivery/AssetDelivery/SetCacheControlHeaders.js +11 -14
  20. package/delivery/AssetDelivery/SetCacheControlHeaders.js.map +1 -1
  21. package/delivery/AssetDelivery/SetResponseHeaders.js +16 -15
  22. package/delivery/AssetDelivery/SetResponseHeaders.js.map +1 -1
  23. package/delivery/AssetDelivery/abstractions/AssetContentsReader.js +0 -3
  24. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js +0 -3
  25. package/delivery/AssetDelivery/abstractions/AssetProcessor.js +0 -3
  26. package/delivery/AssetDelivery/abstractions/AssetReply.js +28 -27
  27. package/delivery/AssetDelivery/abstractions/AssetReply.js.map +1 -1
  28. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js +0 -3
  29. package/delivery/AssetDelivery/abstractions/AssetResolver.js +0 -3
  30. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js +0 -3
  31. package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js +4 -5
  32. package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js.map +1 -1
  33. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js +0 -3
  34. package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js +15 -14
  35. package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js.map +1 -1
  36. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js +5 -4
  37. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js.map +1 -1
  38. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js +14 -16
  39. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js.map +1 -1
  40. package/delivery/AssetDelivery/privateFiles/PrivateCache.js +18 -17
  41. package/delivery/AssetDelivery/privateFiles/PrivateCache.js.map +1 -1
  42. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js +21 -25
  43. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js.map +1 -1
  44. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js +44 -51
  45. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +1 -1
  46. package/delivery/AssetDelivery/privateFiles/PublicCache.js +18 -17
  47. package/delivery/AssetDelivery/privateFiles/PublicCache.js.map +1 -1
  48. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js +16 -15
  49. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js.map +1 -1
  50. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js +16 -15
  51. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js.map +1 -1
  52. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js +5 -4
  53. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js.map +1 -1
  54. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js +5 -4
  55. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js.map +1 -1
  56. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js +12 -15
  57. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js.map +1 -1
  58. package/delivery/index.js +0 -2
  59. package/delivery/setupAssetDelivery.js +70 -101
  60. package/delivery/setupAssetDelivery.js.map +1 -1
  61. package/domain/file/abstractions.js +2 -5
  62. package/domain/file/abstractions.js.map +1 -1
  63. package/domain/file/errors.js +67 -76
  64. package/domain/file/errors.js.map +1 -1
  65. package/domain/file/file.model.js +57 -49
  66. package/domain/file/file.model.js.map +1 -1
  67. package/domain/file/types.js +0 -3
  68. package/domain/identity/Identity.js +9 -8
  69. package/domain/identity/Identity.js.map +1 -1
  70. package/domain/permissionsSchema.js +26 -15
  71. package/domain/permissionsSchema.js.map +1 -1
  72. package/domain/settings/constants.js +2 -1
  73. package/domain/settings/constants.js.map +1 -1
  74. package/domain/settings/errors.js +22 -24
  75. package/domain/settings/errors.js.map +1 -1
  76. package/domain/settings/types.js +0 -3
  77. package/domain/settings/validation.js +18 -27
  78. package/domain/settings/validation.js.map +1 -1
  79. package/exports/api/file-manager/file.js +0 -2
  80. package/exports/api/file-manager/permissions.js +0 -2
  81. package/exports/api/file-manager/settings.js +0 -2
  82. package/features/FileManagerFeature.js +16 -15
  83. package/features/FileManagerFeature.js.map +1 -1
  84. package/features/file/CreateFile/CreateFileRepository.js +20 -18
  85. package/features/file/CreateFile/CreateFileRepository.js.map +1 -1
  86. package/features/file/CreateFile/CreateFileUseCase.js +68 -75
  87. package/features/file/CreateFile/CreateFileUseCase.js.map +1 -1
  88. package/features/file/CreateFile/abstractions.js +3 -14
  89. package/features/file/CreateFile/abstractions.js.map +1 -1
  90. package/features/file/CreateFile/events.js +17 -26
  91. package/features/file/CreateFile/events.js.map +1 -1
  92. package/features/file/CreateFile/feature.js +7 -6
  93. package/features/file/CreateFile/feature.js.map +1 -1
  94. package/features/file/CreateFile/index.js +0 -2
  95. package/features/file/CreateFilesInBatch/CreateFilesInBatchRepository.js +15 -17
  96. package/features/file/CreateFilesInBatch/CreateFilesInBatchRepository.js.map +1 -1
  97. package/features/file/CreateFilesInBatch/CreateFilesInBatchUseCase.js +59 -70
  98. package/features/file/CreateFilesInBatch/CreateFilesInBatchUseCase.js.map +1 -1
  99. package/features/file/CreateFilesInBatch/abstractions.js +3 -14
  100. package/features/file/CreateFilesInBatch/abstractions.js.map +1 -1
  101. package/features/file/CreateFilesInBatch/events.js +17 -26
  102. package/features/file/CreateFilesInBatch/events.js.map +1 -1
  103. package/features/file/CreateFilesInBatch/feature.js +7 -6
  104. package/features/file/CreateFilesInBatch/feature.js.map +1 -1
  105. package/features/file/CreateFilesInBatch/index.js +0 -2
  106. package/features/file/DeleteFile/DeleteFileRepository.js +21 -20
  107. package/features/file/DeleteFile/DeleteFileRepository.js.map +1 -1
  108. package/features/file/DeleteFile/DeleteFileUseCase.js +31 -33
  109. package/features/file/DeleteFile/DeleteFileUseCase.js.map +1 -1
  110. package/features/file/DeleteFile/abstractions.js +3 -14
  111. package/features/file/DeleteFile/abstractions.js.map +1 -1
  112. package/features/file/DeleteFile/events.js +17 -26
  113. package/features/file/DeleteFile/events.js.map +1 -1
  114. package/features/file/DeleteFile/feature.js +7 -6
  115. package/features/file/DeleteFile/feature.js.map +1 -1
  116. package/features/file/DeleteFile/index.js +1 -3
  117. package/features/file/FileUrlGenerator/abstractions.js +2 -2
  118. package/features/file/FileUrlGenerator/abstractions.js.map +1 -1
  119. package/features/file/GetFile/GetFileRepository.js +22 -22
  120. package/features/file/GetFile/GetFileRepository.js.map +1 -1
  121. package/features/file/GetFile/GetFileUseCase.js +19 -21
  122. package/features/file/GetFile/GetFileUseCase.js.map +1 -1
  123. package/features/file/GetFile/abstractions.js +3 -14
  124. package/features/file/GetFile/abstractions.js.map +1 -1
  125. package/features/file/GetFile/feature.js +7 -6
  126. package/features/file/GetFile/feature.js.map +1 -1
  127. package/features/file/GetFile/index.js +0 -2
  128. package/features/file/GetFileContentsById/abstractions.d.ts +20 -0
  129. package/features/file/GetFileContentsById/abstractions.js +5 -0
  130. package/features/file/GetFileContentsById/abstractions.js.map +1 -0
  131. package/features/file/GetFileContentsById/index.d.ts +1 -0
  132. package/features/file/GetFileContentsById/index.js +1 -0
  133. package/features/file/GetFileContentsByKey/abstractions.d.ts +17 -0
  134. package/features/file/GetFileContentsByKey/abstractions.js +5 -0
  135. package/features/file/GetFileContentsByKey/abstractions.js.map +1 -0
  136. package/features/file/GetFileContentsByKey/index.d.ts +1 -0
  137. package/features/file/GetFileContentsByKey/index.js +1 -0
  138. package/features/file/ListFiles/ListFilesRepository.js +42 -40
  139. package/features/file/ListFiles/ListFilesRepository.js.map +1 -1
  140. package/features/file/ListFiles/ListFilesUseCase.js +33 -34
  141. package/features/file/ListFiles/ListFilesUseCase.js.map +1 -1
  142. package/features/file/ListFiles/abstractions.js +3 -14
  143. package/features/file/ListFiles/abstractions.js.map +1 -1
  144. package/features/file/ListFiles/feature.js +7 -6
  145. package/features/file/ListFiles/feature.js.map +1 -1
  146. package/features/file/ListFiles/index.js +0 -2
  147. package/features/file/ListImagesByTagTool/ListImagesByTagTool.js +31 -28
  148. package/features/file/ListImagesByTagTool/ListImagesByTagTool.js.map +1 -1
  149. package/features/file/ListImagesByTagTool/feature.js +6 -5
  150. package/features/file/ListImagesByTagTool/feature.js.map +1 -1
  151. package/features/file/ListTags/ListTagsRepository.js +31 -36
  152. package/features/file/ListTags/ListTagsRepository.js.map +1 -1
  153. package/features/file/ListTags/ListTagsUseCase.js +21 -21
  154. package/features/file/ListTags/ListTagsUseCase.js.map +1 -1
  155. package/features/file/ListTags/abstractions.js +3 -14
  156. package/features/file/ListTags/abstractions.js.map +1 -1
  157. package/features/file/ListTags/feature.js +7 -6
  158. package/features/file/ListTags/feature.js.map +1 -1
  159. package/features/file/ListTags/index.js +0 -2
  160. package/features/file/UpdateFile/UpdateFileRepository.js +26 -28
  161. package/features/file/UpdateFile/UpdateFileRepository.js.map +1 -1
  162. package/features/file/UpdateFile/UpdateFileUseCase.js +57 -65
  163. package/features/file/UpdateFile/UpdateFileUseCase.js.map +1 -1
  164. package/features/file/UpdateFile/abstractions.js +3 -14
  165. package/features/file/UpdateFile/abstractions.js.map +1 -1
  166. package/features/file/UpdateFile/events.js +17 -26
  167. package/features/file/UpdateFile/events.js.map +1 -1
  168. package/features/file/UpdateFile/feature.js +7 -6
  169. package/features/file/UpdateFile/feature.js.map +1 -1
  170. package/features/file/UpdateFile/index.js +1 -3
  171. package/features/file/shared/EntryToFileMapper.js +25 -24
  172. package/features/file/shared/EntryToFileMapper.js.map +1 -1
  173. package/features/file/shared/FileInputToEntryInputMapper.js +29 -28
  174. package/features/file/shared/FileInputToEntryInputMapper.js.map +1 -1
  175. package/features/file/shared/FileToEntryMapper.js +28 -27
  176. package/features/file/shared/FileToEntryMapper.js.map +1 -1
  177. package/features/permissions/abstractions.js +2 -1
  178. package/features/permissions/abstractions.js.map +1 -1
  179. package/features/permissions/feature.js +2 -1
  180. package/features/permissions/feature.js.map +1 -1
  181. package/features/settings/GetSettings/GetSettingsUseCase.js +19 -19
  182. package/features/settings/GetSettings/GetSettingsUseCase.js.map +1 -1
  183. package/features/settings/GetSettings/abstractions.js +2 -7
  184. package/features/settings/GetSettings/abstractions.js.map +1 -1
  185. package/features/settings/GetSettings/feature.js +6 -5
  186. package/features/settings/GetSettings/feature.js.map +1 -1
  187. package/features/settings/SettingsInstaller/SettingsInstaller.js +25 -24
  188. package/features/settings/SettingsInstaller/SettingsInstaller.js.map +1 -1
  189. package/features/settings/SettingsInstaller/feature.js +6 -5
  190. package/features/settings/SettingsInstaller/feature.js.map +1 -1
  191. package/features/settings/UpdateSettings/UpdateSettingsUseCase.js +41 -48
  192. package/features/settings/UpdateSettings/UpdateSettingsUseCase.js.map +1 -1
  193. package/features/settings/UpdateSettings/abstractions.js +2 -7
  194. package/features/settings/UpdateSettings/abstractions.js.map +1 -1
  195. package/features/settings/UpdateSettings/events.js +17 -26
  196. package/features/settings/UpdateSettings/events.js.map +1 -1
  197. package/features/settings/UpdateSettings/feature.js +6 -5
  198. package/features/settings/UpdateSettings/feature.js.map +1 -1
  199. package/features/settings/UpdateSettings/index.js +0 -2
  200. package/features/shared/abstractions.js +0 -2
  201. package/graphql/baseSchema.js +30 -33
  202. package/graphql/baseSchema.js.map +1 -1
  203. package/graphql/createFilesTypeDefs.js +49 -57
  204. package/graphql/createFilesTypeDefs.js.map +1 -1
  205. package/graphql/filesSchema.js +79 -99
  206. package/graphql/filesSchema.js.map +1 -1
  207. package/graphql/getFileByUrl.js +45 -53
  208. package/graphql/getFileByUrl.js.map +1 -1
  209. package/graphql/index.js +35 -42
  210. package/graphql/index.js.map +1 -1
  211. package/graphql/utils.js +9 -14
  212. package/graphql/utils.js.map +1 -1
  213. package/index.d.ts +2 -2
  214. package/index.js +25 -30
  215. package/index.js.map +1 -1
  216. package/modelModifier/CmsModelModifier.js +40 -43
  217. package/modelModifier/CmsModelModifier.js.map +1 -1
  218. package/package.json +18 -21
  219. package/types.js +0 -2
  220. package/delivery/AssetDelivery/abstractions/AssetContentsReader.js.map +0 -1
  221. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js.map +0 -1
  222. package/delivery/AssetDelivery/abstractions/AssetProcessor.js.map +0 -1
  223. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js.map +0 -1
  224. package/delivery/AssetDelivery/abstractions/AssetResolver.js.map +0 -1
  225. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js.map +0 -1
  226. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js.map +0 -1
  227. package/delivery/index.js.map +0 -1
  228. package/domain/file/types.js.map +0 -1
  229. package/domain/settings/types.js.map +0 -1
  230. package/exports/api/file-manager/file.js.map +0 -1
  231. package/exports/api/file-manager/permissions.js.map +0 -1
  232. package/exports/api/file-manager/settings.js.map +0 -1
  233. package/features/ai/AiImageEnrichmentAfterCreateHandler.d.ts +0 -11
  234. package/features/ai/AiImageEnrichmentAfterCreateHandler.js +0 -28
  235. package/features/ai/AiImageEnrichmentAfterCreateHandler.js.map +0 -1
  236. package/features/ai/AiImageEnrichmentFeature.d.ts +0 -4
  237. package/features/ai/AiImageEnrichmentFeature.js +0 -12
  238. package/features/ai/AiImageEnrichmentFeature.js.map +0 -1
  239. package/features/file/CreateFile/index.js.map +0 -1
  240. package/features/file/CreateFilesInBatch/index.js.map +0 -1
  241. package/features/file/DeleteFile/index.js.map +0 -1
  242. package/features/file/GetFile/index.js.map +0 -1
  243. package/features/file/ListFiles/index.js.map +0 -1
  244. package/features/file/ListTags/index.js.map +0 -1
  245. package/features/file/UpdateFile/index.js.map +0 -1
  246. package/features/settings/UpdateSettings/index.js.map +0 -1
  247. package/features/shared/abstractions.js.map +0 -1
  248. package/tasks/AiImageEnrichmentTask.d.ts +0 -35
  249. package/tasks/AiImageEnrichmentTask.js +0 -136
  250. package/tasks/AiImageEnrichmentTask.js.map +0 -1
  251. package/types.js.map +0 -1
@@ -1,79 +1,71 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { UpdateFileUseCase as UseCaseAbstraction, UpdateFileRepository } from "./abstractions.js";
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 { FileBeforeUpdateEvent, FileAfterUpdateEvent } from "./events.js";
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
- 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;
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
- // Get the original file (includes ownership check).
25
- const getResult = await this.getFile.execute(input.id);
26
- if (getResult.isFail()) {
27
- return Result.fail(getResult.error);
28
- }
29
- const original = getResult.value;
30
-
31
- // Check ownership-aware edit permission.
32
- const canEditFile = await this.permissions.canEdit("file", original);
33
- if (!canEditFile) {
34
- return Result.fail(new FileNotAuthorizedError());
35
- }
36
- const currentIdentity = this.identityContext.getIdentity();
37
- const file = {
38
- ...original,
39
- ...input,
40
- // Preserve immutable fields.
41
- id: original.id,
42
- key: original.key,
43
- size: original.size,
44
- type: original.type,
45
- // Update mutable fields.
46
- tags: input.tags !== undefined ? input.tags : original.tags,
47
- description: input.description !== undefined ? input.description : original.description,
48
- location: input.location !== undefined ? input.location : original.location,
49
- // System fields.
50
- createdOn: input.createdOn ?? original.createdOn,
51
- modifiedOn: input.modifiedOn ?? undefined,
52
- savedOn: input.savedOn ?? original.savedOn,
53
- createdBy: input.createdBy ? Identity.from(input.createdBy) : original.createdBy,
54
- modifiedBy: input.modifiedBy ? Identity.from(input.modifiedBy) : Identity.from(currentIdentity),
55
- savedBy: input.savedBy ? Identity.from(input.savedBy) : Identity.from(currentIdentity)
56
- };
57
- await this.eventPublisher.publish(new FileBeforeUpdateEvent({
58
- original,
59
- file,
60
- input
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
- export const UpdateFileUseCase = UseCaseAbstraction.createImplementation({
75
- implementation: UpdateFileUseCaseImpl,
76
- dependencies: [IdentityContext, FmPermissions, GetFileUseCase, UpdateFileRepository, EventPublisher]
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,"names":["Result","UpdateFileUseCase","UseCaseAbstraction","UpdateFileRepository","GetFileUseCase","EventPublisher","FileNotAuthorizedError","FileBeforeUpdateEvent","FileAfterUpdateEvent","FmPermissions","IdentityContext","Identity","UpdateFileUseCaseImpl","constructor","identityContext","permissions","getFile","repository","eventPublisher","execute","input","hasPermission","canEdit","fail","getResult","id","isFail","error","original","value","canEditFile","currentIdentity","getIdentity","file","key","size","type","tags","undefined","description","location","createdOn","modifiedOn","savedOn","createdBy","from","modifiedBy","savedBy","publish","result","update","ok","createImplementation","implementation","dependencies"],"sources":["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"],"mappings":"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","ignoreList":[]}
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
- * UpdateFile repository interface
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,"names":["createAbstraction","UpdateFileRepository","UpdateFileUseCase"],"sources":["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"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAwBvD;AACA;AACA;;AAaA;AACA,OAAO,MAAMC,oBAAoB,GAC7BD,iBAAiB,CAAwB,sBAAsB,CAAC;;AAOpE;AACA;AACA;;AAaA;AACA,OAAO,MAAME,iBAAiB,GAAGF,iBAAiB,CAAqB,mBAAmB,CAAC","ignoreList":[]}
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
- // FileBeforeUpdate Event
6
- // ============================================================================
7
-
8
- export class FileBeforeUpdateEvent extends DomainEvent {
9
- eventType = "FileManager/File/BeforeUpdate";
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
- /** Hook into file lifecycle before a file is updated. */
16
- export const FileBeforeUpdateEventHandler = createAbstraction("FileBeforeUpdateEventHandler");
17
-
18
- // ============================================================================
19
- // FileAfterUpdate Event
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
- /** Hook into file lifecycle after a file is updated. */
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,"names":["createAbstraction","DomainEvent","FileBeforeUpdateEvent","eventType","getHandlerAbstraction","FileBeforeUpdateEventHandler","FileAfterUpdateEvent","FileAfterUpdateEventHandler"],"sources":["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"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW,QAAQ,mDAAmD;;AAK/E;AACA;AACA;;AAQA,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,+BAA+B;EAE3CC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,4BAA4B;EACvC;AACJ;;AAEA;AACA,OAAO,MAAMA,4BAA4B,GAAGL,iBAAiB,CACzD,8BACJ,CAAC;;AAOD;AACA;AACA;;AAQA,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,8BAA8B;EAE1CC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,2BAA2B;EACtC;AACJ;;AAEA;AACA,OAAO,MAAMA,2BAA2B,GAAGP,iBAAiB,CACxD,6BACJ,CAAC","ignoreList":[]}
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
- export const UpdateFileFeature = createFeature({
5
- name: "FileManager/UpdateFile",
6
- register(container) {
7
- container.register(UpdateFileUseCase);
8
- container.register(UpdateFileRepository).inSingletonScope();
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,"names":["createFeature","UpdateFileRepository","UpdateFileUseCase","UpdateFileFeature","name","register","container","inSingletonScope"],"sources":["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"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,oBAAoB;AAC7B,SAASC,iBAAiB;AAE1B,OAAO,MAAMC,iBAAiB,GAAGH,aAAa,CAAC;EAC3CI,IAAI,EAAE,wBAAwB;EAC9BC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,iBAAiB,CAAC;IACrCI,SAAS,CAACD,QAAQ,CAACJ,oBAAoB,CAAC,CAACM,gBAAgB,CAAC,CAAC;EAC/D;AACJ,CAAC,CAAC","ignoreList":[]}
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 { FileBeforeUpdateEventHandler, FileAfterUpdateEventHandler } from "./events.js";
3
-
4
- //# sourceMappingURL=index.js.map
2
+ export { FileAfterUpdateEventHandler, FileBeforeUpdateEventHandler } from "./events.js";
@@ -1,27 +1,28 @@
1
- export class EntryToFileMapper {
2
- static toFile(entry) {
3
- return {
4
- id: entry.entryId,
5
- createdOn: entry.createdOn,
6
- modifiedOn: entry.modifiedOn ?? undefined,
7
- savedOn: entry.savedOn,
8
- createdBy: entry.createdBy,
9
- modifiedBy: entry.modifiedBy ?? undefined,
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
- }
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,"names":["EntryToFileMapper","toFile","entry","id","entryId","createdOn","modifiedOn","undefined","savedOn","createdBy","modifiedBy","savedBy","name","values","key","size","type","metadata","accessControl","location","folderId","tags","description","extensions"],"sources":["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"],"mappings":"AAGA,OAAO,MAAMA,iBAAiB,CAAC;EAC3B,OAAOC,MAAMA,CAACC,KAAe,EAAQ;IACjC,OAAO;MACHC,EAAE,EAAED,KAAK,CAACE,OAAO;MACjBC,SAAS,EAAEH,KAAK,CAACG,SAAS;MAC1BC,UAAU,EAAEJ,KAAK,CAACI,UAAU,IAAIC,SAAS;MACzCC,OAAO,EAAEN,KAAK,CAACM,OAAO;MACtBC,SAAS,EAAEP,KAAK,CAACO,SAAS;MAC1BC,UAAU,EAAER,KAAK,CAACQ,UAAU,IAAIH,SAAS;MACzCI,OAAO,EAAET,KAAK,CAACS,OAAO;MACtBC,IAAI,EAAEV,KAAK,CAACW,MAAM,CAACD,IAAI;MACvBE,GAAG,EAAEZ,KAAK,CAACW,MAAM,CAACC,GAAG;MACrBC,IAAI,EAAEb,KAAK,CAACW,MAAM,CAACE,IAAI;MACvBC,IAAI,EAAEd,KAAK,CAACW,MAAM,CAACG,IAAI;MACvBC,QAAQ,EAAEf,KAAK,CAACW,MAAM,CAACI,QAAQ,IAAI,CAAC,CAAC;MACrCC,aAAa,EAAEhB,KAAK,CAACW,MAAM,CAACK,aAAa;MACzCC,QAAQ,EAAE;QAAEC,QAAQ,EAAElB,KAAK,CAACiB,QAAQ,EAAEC,QAAQ,IAAI;MAAO,CAAC;MAC1DC,IAAI,EAAEnB,KAAK,CAACW,MAAM,CAACQ,IAAI,IAAI,EAAE;MAC7BC,WAAW,EAAEpB,KAAK,CAACW,MAAM,CAACS,WAAW,IAAI,EAAE;MAC3CC,UAAU,EAAErB,KAAK,CAACW,MAAM,CAACU;IAC7B,CAAC;EACL;AACJ","ignoreList":[]}
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
- export 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
- }
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,"names":["FileInputToEntryInputMapper","toEntry","file","id","createdOn","modifiedOn","savedOn","createdBy","modifiedBy","savedBy","location","folderId","values","name","key","size","type","metadata","accessControl","tags","description","extensions"],"sources":["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"],"mappings":"AAGA,OAAO,MAAMA,2BAA2B,CAAC;EACrC,OAAOC,OAAOA,CAACC,IAAe,EAAuB;IACjD,OAAO;MACHC,EAAE,EAAED,IAAI,CAACC,EAAE;MACXC,SAAS,EAAEF,IAAI,CAACE,SAAS;MACzBC,UAAU,EAAEH,IAAI,CAACG,UAAU;MAC3BC,OAAO,EAAEJ,IAAI,CAACI,OAAO;MACrBC,SAAS,EAAEL,IAAI,CAACK,SAAS;MACzBC,UAAU,EAAEN,IAAI,CAACM,UAAU;MAC3BC,OAAO,EAAEP,IAAI,CAACO,OAAO;MACrBC,QAAQ,EAAER,IAAI,CAACQ,QAAQ,IAAI;QAAEC,QAAQ,EAAE;MAAO,CAAC;MAC/CC,MAAM,EAAE;QACJC,IAAI,EAAEX,IAAI,CAACW,IAAI;QACfC,GAAG,EAAEZ,IAAI,CAACY,GAAG;QACbC,IAAI,EAAEb,IAAI,CAACa,IAAI;QACfC,IAAI,EAAEd,IAAI,CAACc,IAAI;QACfC,QAAQ,EAAEf,IAAI,CAACe,QAAQ,IAAI,CAAC,CAAC;QAC7BC,aAAa,EAAE;UACXF,IAAI,EAAE;QACV,CAAC;QACDG,IAAI,EAAEjB,IAAI,CAACiB,IAAI,IAAI,EAAE;QACrBC,WAAW,EAAElB,IAAI,CAACkB,WAAW,IAAI,EAAE;QACnCC,UAAU,EAAEnB,IAAI,CAACmB;MACrB;IACJ,CAAC;EACL;AACJ","ignoreList":[]}
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
- export 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
- }
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,"names":["FileToEntryMapper","toEntry","file","id","entryId","createdOn","modifiedOn","savedOn","createdBy","modifiedBy","savedBy","location","folderId","values","name","key","size","type","metadata","accessControl","tags","description","extensions"],"sources":["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"],"mappings":"AAGA,OAAO,MAAMA,iBAAiB,CAAC;EAC3B,OAAOC,OAAOA,CAACC,IAAU,EAAqB;IAC1C,OAAO;MACHC,EAAE,EAAE,GAAGD,IAAI,CAACC,EAAE,OAAO;MACrBC,OAAO,EAAEF,IAAI,CAACC,EAAE;MAChBE,SAAS,EAAEH,IAAI,CAACG,SAAS;MACzBC,UAAU,EAAEJ,IAAI,CAACI,UAAU;MAC3BC,OAAO,EAAEL,IAAI,CAACK,OAAO;MACrBC,SAAS,EAAEN,IAAI,CAACM,SAAS;MACzBC,UAAU,EAAEP,IAAI,CAACO,UAAU;MAC3BC,OAAO,EAAER,IAAI,CAACQ,OAAO;MACrBC,QAAQ,EAAET,IAAI,CAACS,QAAQ,IAAI;QAAEC,QAAQ,EAAE;MAAO,CAAC;MAC/CC,MAAM,EAAE;QACJC,IAAI,EAAEZ,IAAI,CAACY,IAAI;QACfC,GAAG,EAAEb,IAAI,CAACa,GAAG;QACbC,IAAI,EAAEd,IAAI,CAACc,IAAI;QACfC,IAAI,EAAEf,IAAI,CAACe,IAAI;QACfC,QAAQ,EAAEhB,IAAI,CAACgB,QAAQ,IAAI,CAAC,CAAC;QAC7BC,aAAa,EAAEjB,IAAI,CAACiB,aAAa;QACjCC,IAAI,EAAElB,IAAI,CAACkB,IAAI,IAAI,EAAE;QACrBC,WAAW,EAAEnB,IAAI,CAACmB,WAAW,IAAI,EAAE;QACnCC,UAAU,EAAEpB,IAAI,CAACoB;MACrB;IACJ,CAAC;EACL;AACJ","ignoreList":[]}
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
- export const FmPermissions = createPermissionsAbstraction(FM_PERMISSIONS_SCHEMA);
3
+ const FmPermissions = createPermissionsAbstraction(FM_PERMISSIONS_SCHEMA);
4
+ export { FmPermissions };
4
5
 
5
6
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createPermissionsAbstraction","FM_PERMISSIONS_SCHEMA","FmPermissions"],"sources":["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"],"mappings":"AAAA,SAASA,4BAA4B,QAAQ,yDAAyD;AAEtG,SAASC,qBAAqB;AAE9B,OAAO,MAAMC,aAAa,GAAGF,4BAA4B,CAACC,qBAAqB,CAAC","ignoreList":[]}
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
- export const FmPermissionsFeature = createPermissionsFeature(FM_PERMISSIONS_SCHEMA, FmPermissions);
4
+ const FmPermissionsFeature = createPermissionsFeature(FM_PERMISSIONS_SCHEMA, FmPermissions);
5
+ export { FmPermissionsFeature };
5
6
 
6
7
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createPermissionsFeature","FM_PERMISSIONS_SCHEMA","FmPermissions","FmPermissionsFeature"],"sources":["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"],"mappings":"AAAA,SAASA,wBAAwB,QAAQ,0CAA0C;AACnF,SAASC,qBAAqB;AAC9B,SAASC,aAAa;AAEtB,OAAO,MAAMC,oBAAoB,GAAGH,wBAAwB,CAACC,qBAAqB,EAAEC,aAAa,CAAC","ignoreList":[]}
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"}