@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,59 +1,50 @@
1
1
  import { renderFields } from "@webiny/api-headless-cms/utils/renderFields.js";
2
2
  import { renderInputFields } from "@webiny/api-headless-cms/utils/renderInputFields.js";
3
3
  import { renderListFilterFields } from "@webiny/api-headless-cms/utils/renderListFilterFields.js";
4
- const removeFieldRequiredValidation = field => {
5
- if (field.validation) {
6
- field.validation = field.validation.filter(validation => validation.name !== "required");
7
- }
8
- if (field.listValidation) {
9
- field.listValidation = field.listValidation.filter(v => v.name !== "required");
10
- }
11
- return field;
4
+ const removeFieldRequiredValidation = (field)=>{
5
+ if (field.validation) field.validation = field.validation.filter((validation)=>"required" !== validation.name);
6
+ if (field.listValidation) field.listValidation = field.listValidation.filter((v)=>"required" !== v.name);
7
+ return field;
12
8
  };
13
- const createUpdateFields = fields => {
14
- return fields.reduce((collection, field) => {
15
- collection.push(removeFieldRequiredValidation({
16
- ...field
17
- }));
18
- return collection;
19
- }, []);
20
- };
21
- export const createFilesTypeDefs = params => {
22
- const {
23
- model,
24
- models,
25
- fieldRegistry
26
- } = params;
27
- const {
28
- fields
29
- } = model;
30
- const fieldTypes = renderFields({
31
- models,
32
- model,
33
- fields,
34
- type: "manage",
35
- fieldRegistry
36
- });
37
- const inputCreateFields = renderInputFields({
38
- models,
39
- model,
40
- fields,
41
- fieldRegistry
42
- });
43
- const inputUpdateFields = renderInputFields({
44
- models,
45
- model,
46
- fields: createUpdateFields(fields),
47
- fieldRegistry
48
- });
49
- const listFilterFieldsRender = renderListFilterFields({
50
- model,
51
- fields: model.fields,
52
- type: "manage",
53
- fieldRegistry,
54
- excludeFields: ["entryId", "status"]
55
- });
56
- return /* GraphQL */`
9
+ const createUpdateFields = (fields)=>fields.reduce((collection, field)=>{
10
+ collection.push(removeFieldRequiredValidation({
11
+ ...field
12
+ }));
13
+ return collection;
14
+ }, []);
15
+ const createFilesTypeDefs = (params)=>{
16
+ const { model, models, fieldRegistry } = params;
17
+ const { fields } = model;
18
+ const fieldTypes = renderFields({
19
+ models,
20
+ model,
21
+ fields,
22
+ type: "manage",
23
+ fieldRegistry
24
+ });
25
+ const inputCreateFields = renderInputFields({
26
+ models,
27
+ model,
28
+ fields,
29
+ fieldRegistry
30
+ });
31
+ const inputUpdateFields = renderInputFields({
32
+ models,
33
+ model,
34
+ fields: createUpdateFields(fields),
35
+ fieldRegistry
36
+ });
37
+ const listFilterFieldsRender = renderListFilterFields({
38
+ model,
39
+ fields: model.fields,
40
+ type: "manage",
41
+ fieldRegistry,
42
+ excludeFields: [
43
+ "entryId",
44
+ "status"
45
+ ]
46
+ });
47
+ return `
57
48
  type FmFile_Location {
58
49
  folderId: ID!
59
50
  }
@@ -69,7 +60,7 @@ export const createFilesTypeDefs = params => {
69
60
  folderId_not_in: [ID!]
70
61
  }
71
62
 
72
- ${fieldTypes.map(f => f.typeDefs).join("\n")}
63
+ ${fieldTypes.map((f)=>f.typeDefs).join("\n")}
73
64
 
74
65
  type FmFile {
75
66
  id: ID!
@@ -81,10 +72,10 @@ export const createFilesTypeDefs = params => {
81
72
  savedBy: FmCreatedBy!
82
73
  location: FmFile_Location!
83
74
  src: String
84
- ${fieldTypes.map(f => f.fields).join("\n")}
75
+ ${fieldTypes.map((f)=>f.fields).join("\n")}
85
76
  }
86
77
 
87
- ${inputCreateFields.map(f => f.typeDefs).join("\n")}
78
+ ${inputCreateFields.map((f)=>f.typeDefs).join("\n")}
88
79
 
89
80
  input FmCreatedByInput {
90
81
  id: ID!
@@ -101,7 +92,7 @@ export const createFilesTypeDefs = params => {
101
92
  modifiedBy: FmCreatedByInput
102
93
  savedBy: FmCreatedByInput
103
94
  location: FmFile_LocationInput
104
- ${inputCreateFields.map(f => f.fields).join("\n")}
95
+ ${inputCreateFields.map((f)=>f.fields).join("\n")}
105
96
  }
106
97
 
107
98
  input FmFileUpdateInput {
@@ -112,7 +103,7 @@ export const createFilesTypeDefs = params => {
112
103
  modifiedBy: FmCreatedByInput
113
104
  savedBy: FmCreatedByInput
114
105
  location: FmFile_LocationInput
115
- ${inputUpdateFields.map(f => f.fields).join("\n")}
106
+ ${inputUpdateFields.map((f)=>f.fields).join("\n")}
116
107
  }
117
108
 
118
109
  type FmFileResponse {
@@ -195,5 +186,6 @@ export const createFilesTypeDefs = params => {
195
186
  }
196
187
  `;
197
188
  };
189
+ export { createFilesTypeDefs };
198
190
 
199
191
  //# sourceMappingURL=createFilesTypeDefs.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["renderFields","renderInputFields","renderListFilterFields","removeFieldRequiredValidation","field","validation","filter","name","listValidation","v","createUpdateFields","fields","reduce","collection","push","createFilesTypeDefs","params","model","models","fieldRegistry","fieldTypes","type","inputCreateFields","inputUpdateFields","listFilterFieldsRender","excludeFields","map","f","typeDefs","join","allFiltersAsString"],"sources":["createFilesTypeDefs.ts"],"sourcesContent":["import type { CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types/index.js\";\nimport { renderFields } from \"@webiny/api-headless-cms/utils/renderFields.js\";\nimport { renderInputFields } from \"@webiny/api-headless-cms/utils/renderInputFields.js\";\nimport { renderListFilterFields } from \"@webiny/api-headless-cms/utils/renderListFilterFields.js\";\nimport type { CmsModelFieldToGraphQLRegistry } from \"@webiny/api-headless-cms/exports/api/cms/graphql.js\";\n\nexport interface CreateFilesTypeDefsParams {\n model: CmsModel;\n models: CmsModel[];\n fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface;\n}\n\nconst removeFieldRequiredValidation = (field: CmsModelField) => {\n if (field.validation) {\n field.validation = field.validation.filter(validation => validation.name !== \"required\");\n }\n if (field.listValidation) {\n field.listValidation = field.listValidation.filter(v => v.name !== \"required\");\n }\n return field;\n};\n\nconst createUpdateFields = (fields: CmsModelField[]): CmsModelField[] => {\n return fields.reduce<CmsModelField[]>((collection, field) => {\n collection.push(removeFieldRequiredValidation({ ...field }));\n return collection;\n }, []);\n};\n\nexport const createFilesTypeDefs = (params: CreateFilesTypeDefsParams): string => {\n const { model, models, fieldRegistry } = params;\n const { fields } = model;\n\n const fieldTypes = renderFields({\n models,\n model,\n fields,\n type: \"manage\",\n fieldRegistry\n });\n const inputCreateFields = renderInputFields({\n models,\n model,\n fields,\n fieldRegistry\n });\n const inputUpdateFields = renderInputFields({\n models,\n model,\n fields: createUpdateFields(fields),\n fieldRegistry\n });\n const listFilterFieldsRender = renderListFilterFields({\n model,\n fields: model.fields,\n type: \"manage\",\n fieldRegistry,\n excludeFields: [\"entryId\", \"status\"]\n });\n\n return /* GraphQL */ `\n type FmFile_Location {\n folderId: ID!\n }\n\n input FmFile_LocationInput {\n folderId: ID!\n }\n\n input FmFile_LocationWhereInput {\n folderId: ID\n folderId_in: [ID!]\n folderId_not: ID\n folderId_not_in: [ID!]\n }\n \n ${fieldTypes.map(f => f.typeDefs).join(\"\\n\")}\n\n type FmFile {\n id: ID!\n createdOn: DateTime!\n modifiedOn: DateTime\n savedOn: DateTime!\n createdBy: FmCreatedBy!\n modifiedBy: FmCreatedBy\n savedBy: FmCreatedBy!\n location: FmFile_Location!\n src: String\n ${fieldTypes.map(f => f.fields).join(\"\\n\")}\n }\n\n ${inputCreateFields.map(f => f.typeDefs).join(\"\\n\")}\n \n input FmCreatedByInput {\n id: ID!\n displayName: String!\n type: String!\n }\n\n input FmFileCreateInput {\n id: ID!\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n createdBy: FmCreatedByInput\n modifiedBy: FmCreatedByInput\n savedBy: FmCreatedByInput\n location: FmFile_LocationInput\n ${inputCreateFields.map(f => f.fields).join(\"\\n\")}\n }\n\n input FmFileUpdateInput {\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n createdBy: FmCreatedByInput\n modifiedBy: FmCreatedByInput\n savedBy: FmCreatedByInput\n location: FmFile_LocationInput\n ${inputUpdateFields.map(f => f.fields).join(\"\\n\")}\n }\n\n type FmFileResponse {\n data: FmFile\n error: FmError\n }\n\n input FmFileListWhereInput {\n ${listFilterFieldsRender.allFiltersAsString()}\n location: FmFile_LocationWhereInput\n AND: [FmFileListWhereInput!]\n OR: [FmFileListWhereInput!]\n }\n\n type FmFileListResponse {\n data: [FmFile!]\n error: FmError\n meta: FmListMeta\n }\n\n enum FmFileListSorter {\n savedOn_ASC\n savedOn_DESC\n createdOn_ASC\n createdOn_DESC\n name_ASC\n name_DESC\n key_ASC\n key_DESC\n type_ASC\n type_DESC\n size_ASC\n size_DESC\n }\n\n input FmTagsListWhereInput {\n createdBy: String\n tags_startsWith: String\n tags_not_startsWith: String\n }\n\n type FmTag {\n tag: String!\n count: Number!\n }\n\n type FmTagsListResponse {\n data: [FmTag!]\n error: FmError\n }\n\n type FmCreateFilesResponse {\n data: [FmFile!]\n error: FmError\n }\n \n type FmFileModelResponse {\n data: JSON\n error: FmError\n }\n\n extend type FmQuery {\n getFileModel: FmFileModelResponse!\n getFile(id: ID!): FmFileResponse!\n listFiles(\n search: String\n where: FmFileListWhereInput\n limit: Int\n after: String\n sort: [FmFileListSorter!]\n ): FmFileListResponse!\n listTags(where: FmTagsListWhereInput): FmTagsListResponse!\n }\n\n extend type FmMutation {\n createFile(data: FmFileCreateInput!): FmFileResponse!\n createFiles(data: [FmFileCreateInput!]!): FmCreateFilesResponse!\n updateFile(id: ID!, data: FmFileUpdateInput!): FmFileResponse!\n deleteFile(id: ID!): FmBooleanResponse!\n }\n `;\n};\n"],"mappings":"AACA,SAASA,YAAY,QAAQ,gDAAgD;AAC7E,SAASC,iBAAiB,QAAQ,qDAAqD;AACvF,SAASC,sBAAsB,QAAQ,0DAA0D;AASjG,MAAMC,6BAA6B,GAAIC,KAAoB,IAAK;EAC5D,IAAIA,KAAK,CAACC,UAAU,EAAE;IAClBD,KAAK,CAACC,UAAU,GAAGD,KAAK,CAACC,UAAU,CAACC,MAAM,CAACD,UAAU,IAAIA,UAAU,CAACE,IAAI,KAAK,UAAU,CAAC;EAC5F;EACA,IAAIH,KAAK,CAACI,cAAc,EAAE;IACtBJ,KAAK,CAACI,cAAc,GAAGJ,KAAK,CAACI,cAAc,CAACF,MAAM,CAACG,CAAC,IAAIA,CAAC,CAACF,IAAI,KAAK,UAAU,CAAC;EAClF;EACA,OAAOH,KAAK;AAChB,CAAC;AAED,MAAMM,kBAAkB,GAAIC,MAAuB,IAAsB;EACrE,OAAOA,MAAM,CAACC,MAAM,CAAkB,CAACC,UAAU,EAAET,KAAK,KAAK;IACzDS,UAAU,CAACC,IAAI,CAACX,6BAA6B,CAAC;MAAE,GAAGC;IAAM,CAAC,CAAC,CAAC;IAC5D,OAAOS,UAAU;EACrB,CAAC,EAAE,EAAE,CAAC;AACV,CAAC;AAED,OAAO,MAAME,mBAAmB,GAAIC,MAAiC,IAAa;EAC9E,MAAM;IAAEC,KAAK;IAAEC,MAAM;IAAEC;EAAc,CAAC,GAAGH,MAAM;EAC/C,MAAM;IAAEL;EAAO,CAAC,GAAGM,KAAK;EAExB,MAAMG,UAAU,GAAGpB,YAAY,CAAC;IAC5BkB,MAAM;IACND,KAAK;IACLN,MAAM;IACNU,IAAI,EAAE,QAAQ;IACdF;EACJ,CAAC,CAAC;EACF,MAAMG,iBAAiB,GAAGrB,iBAAiB,CAAC;IACxCiB,MAAM;IACND,KAAK;IACLN,MAAM;IACNQ;EACJ,CAAC,CAAC;EACF,MAAMI,iBAAiB,GAAGtB,iBAAiB,CAAC;IACxCiB,MAAM;IACND,KAAK;IACLN,MAAM,EAAED,kBAAkB,CAACC,MAAM,CAAC;IAClCQ;EACJ,CAAC,CAAC;EACF,MAAMK,sBAAsB,GAAGtB,sBAAsB,CAAC;IAClDe,KAAK;IACLN,MAAM,EAAEM,KAAK,CAACN,MAAM;IACpBU,IAAI,EAAE,QAAQ;IACdF,aAAa;IACbM,aAAa,EAAE,CAAC,SAAS,EAAE,QAAQ;EACvC,CAAC,CAAC;EAEF,OAAO,aAAc;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAUL,UAAU,CAACM,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcT,UAAU,CAACM,GAAG,CAACC,CAAC,IAAIA,CAAC,CAAChB,MAAM,CAAC,CAACkB,IAAI,CAAC,IAAI,CAAC;AACtD;AACA;AACA,UAAUP,iBAAiB,CAACI,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcP,iBAAiB,CAACI,GAAG,CAACC,CAAC,IAAIA,CAAC,CAAChB,MAAM,CAAC,CAACkB,IAAI,CAAC,IAAI,CAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcN,iBAAiB,CAACG,GAAG,CAACC,CAAC,IAAIA,CAAC,CAAChB,MAAM,CAAC,CAACkB,IAAI,CAAC,IAAI,CAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcL,sBAAsB,CAACM,kBAAkB,CAAC,CAAC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"graphql/createFilesTypeDefs.js","sources":["../../src/graphql/createFilesTypeDefs.ts"],"sourcesContent":["import type { CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types/index.js\";\nimport { renderFields } from \"@webiny/api-headless-cms/utils/renderFields.js\";\nimport { renderInputFields } from \"@webiny/api-headless-cms/utils/renderInputFields.js\";\nimport { renderListFilterFields } from \"@webiny/api-headless-cms/utils/renderListFilterFields.js\";\nimport type { CmsModelFieldToGraphQLRegistry } from \"@webiny/api-headless-cms/exports/api/cms/graphql.js\";\n\nexport interface CreateFilesTypeDefsParams {\n model: CmsModel;\n models: CmsModel[];\n fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface;\n}\n\nconst removeFieldRequiredValidation = (field: CmsModelField) => {\n if (field.validation) {\n field.validation = field.validation.filter(validation => validation.name !== \"required\");\n }\n if (field.listValidation) {\n field.listValidation = field.listValidation.filter(v => v.name !== \"required\");\n }\n return field;\n};\n\nconst createUpdateFields = (fields: CmsModelField[]): CmsModelField[] => {\n return fields.reduce<CmsModelField[]>((collection, field) => {\n collection.push(removeFieldRequiredValidation({ ...field }));\n return collection;\n }, []);\n};\n\nexport const createFilesTypeDefs = (params: CreateFilesTypeDefsParams): string => {\n const { model, models, fieldRegistry } = params;\n const { fields } = model;\n\n const fieldTypes = renderFields({\n models,\n model,\n fields,\n type: \"manage\",\n fieldRegistry\n });\n const inputCreateFields = renderInputFields({\n models,\n model,\n fields,\n fieldRegistry\n });\n const inputUpdateFields = renderInputFields({\n models,\n model,\n fields: createUpdateFields(fields),\n fieldRegistry\n });\n const listFilterFieldsRender = renderListFilterFields({\n model,\n fields: model.fields,\n type: \"manage\",\n fieldRegistry,\n excludeFields: [\"entryId\", \"status\"]\n });\n\n return /* GraphQL */ `\n type FmFile_Location {\n folderId: ID!\n }\n\n input FmFile_LocationInput {\n folderId: ID!\n }\n\n input FmFile_LocationWhereInput {\n folderId: ID\n folderId_in: [ID!]\n folderId_not: ID\n folderId_not_in: [ID!]\n }\n \n ${fieldTypes.map(f => f.typeDefs).join(\"\\n\")}\n\n type FmFile {\n id: ID!\n createdOn: DateTime!\n modifiedOn: DateTime\n savedOn: DateTime!\n createdBy: FmCreatedBy!\n modifiedBy: FmCreatedBy\n savedBy: FmCreatedBy!\n location: FmFile_Location!\n src: String\n ${fieldTypes.map(f => f.fields).join(\"\\n\")}\n }\n\n ${inputCreateFields.map(f => f.typeDefs).join(\"\\n\")}\n \n input FmCreatedByInput {\n id: ID!\n displayName: String!\n type: String!\n }\n\n input FmFileCreateInput {\n id: ID!\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n createdBy: FmCreatedByInput\n modifiedBy: FmCreatedByInput\n savedBy: FmCreatedByInput\n location: FmFile_LocationInput\n ${inputCreateFields.map(f => f.fields).join(\"\\n\")}\n }\n\n input FmFileUpdateInput {\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n createdBy: FmCreatedByInput\n modifiedBy: FmCreatedByInput\n savedBy: FmCreatedByInput\n location: FmFile_LocationInput\n ${inputUpdateFields.map(f => f.fields).join(\"\\n\")}\n }\n\n type FmFileResponse {\n data: FmFile\n error: FmError\n }\n\n input FmFileListWhereInput {\n ${listFilterFieldsRender.allFiltersAsString()}\n location: FmFile_LocationWhereInput\n AND: [FmFileListWhereInput!]\n OR: [FmFileListWhereInput!]\n }\n\n type FmFileListResponse {\n data: [FmFile!]\n error: FmError\n meta: FmListMeta\n }\n\n enum FmFileListSorter {\n savedOn_ASC\n savedOn_DESC\n createdOn_ASC\n createdOn_DESC\n name_ASC\n name_DESC\n key_ASC\n key_DESC\n type_ASC\n type_DESC\n size_ASC\n size_DESC\n }\n\n input FmTagsListWhereInput {\n createdBy: String\n tags_startsWith: String\n tags_not_startsWith: String\n }\n\n type FmTag {\n tag: String!\n count: Number!\n }\n\n type FmTagsListResponse {\n data: [FmTag!]\n error: FmError\n }\n\n type FmCreateFilesResponse {\n data: [FmFile!]\n error: FmError\n }\n \n type FmFileModelResponse {\n data: JSON\n error: FmError\n }\n\n extend type FmQuery {\n getFileModel: FmFileModelResponse!\n getFile(id: ID!): FmFileResponse!\n listFiles(\n search: String\n where: FmFileListWhereInput\n limit: Int\n after: String\n sort: [FmFileListSorter!]\n ): FmFileListResponse!\n listTags(where: FmTagsListWhereInput): FmTagsListResponse!\n }\n\n extend type FmMutation {\n createFile(data: FmFileCreateInput!): FmFileResponse!\n createFiles(data: [FmFileCreateInput!]!): FmCreateFilesResponse!\n updateFile(id: ID!, data: FmFileUpdateInput!): FmFileResponse!\n deleteFile(id: ID!): FmBooleanResponse!\n }\n `;\n};\n"],"names":["removeFieldRequiredValidation","field","validation","v","createUpdateFields","fields","collection","createFilesTypeDefs","params","model","models","fieldRegistry","fieldTypes","renderFields","inputCreateFields","renderInputFields","inputUpdateFields","listFilterFieldsRender","renderListFilterFields","f"],"mappings":";;;AAYA,MAAMA,gCAAgC,CAACC;IACnC,IAAIA,MAAM,UAAU,EAChBA,MAAM,UAAU,GAAGA,MAAM,UAAU,CAAC,MAAM,CAACC,CAAAA,aAAcA,AAAoB,eAApBA,WAAW,IAAI;IAE5E,IAAID,MAAM,cAAc,EACpBA,MAAM,cAAc,GAAGA,MAAM,cAAc,CAAC,MAAM,CAACE,CAAAA,IAAKA,AAAW,eAAXA,EAAE,IAAI;IAElE,OAAOF;AACX;AAEA,MAAMG,qBAAqB,CAACC,SACjBA,OAAO,MAAM,CAAkB,CAACC,YAAYL;QAC/CK,WAAW,IAAI,CAACN,8BAA8B;YAAE,GAAGC,KAAK;QAAC;QACzD,OAAOK;IACX,GAAG,EAAE;AAGF,MAAMC,sBAAsB,CAACC;IAChC,MAAM,EAAEC,KAAK,EAAEC,MAAM,EAAEC,aAAa,EAAE,GAAGH;IACzC,MAAM,EAAEH,MAAM,EAAE,GAAGI;IAEnB,MAAMG,aAAaC,aAAa;QAC5BH;QACAD;QACAJ;QACA,MAAM;QACNM;IACJ;IACA,MAAMG,oBAAoBC,kBAAkB;QACxCL;QACAD;QACAJ;QACAM;IACJ;IACA,MAAMK,oBAAoBD,kBAAkB;QACxCL;QACAD;QACA,QAAQL,mBAAmBC;QAC3BM;IACJ;IACA,MAAMM,yBAAyBC,uBAAuB;QAClDT;QACA,QAAQA,MAAM,MAAM;QACpB,MAAM;QACNE;QACA,eAAe;YAAC;YAAW;SAAS;IACxC;IAEA,OAAqB,CAAC;;;;;;;;;;;;;;;;QAgBlB,EAAEC,WAAW,GAAG,CAACO,CAAAA,IAAKA,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM;;;;;;;;;;;;YAYzC,EAAEP,WAAW,GAAG,CAACO,CAAAA,IAAKA,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM;;;QAG/C,EAAEL,kBAAkB,GAAG,CAACK,CAAAA,IAAKA,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM;;;;;;;;;;;;;;;;;YAiBhD,EAAEL,kBAAkB,GAAG,CAACK,CAAAA,IAAKA,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM;;;;;;;;;;;YAWlD,EAAEH,kBAAkB,GAAG,CAACG,CAAAA,IAAKA,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM;;;;;;;;;YASlD,EAAEF,uBAAuB,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwEtD,CAAC;AACL"}
@@ -11,106 +11,86 @@ import { UpdateFileUseCase } from "../features/file/UpdateFile/abstractions.js";
11
11
  import { DeleteFileUseCase } from "../features/file/DeleteFile/abstractions.js";
12
12
  import { GetSettingsUseCase } from "../features/settings/GetSettings/abstractions.js";
13
13
  import { FileModel } from "../domain/file/abstractions.js";
14
- export const createFilesSchema = params => {
15
- const fileManagerGraphQL = new GraphQLSchemaPlugin({
16
- typeDefs: createFilesTypeDefs(params),
17
- resolvers: {
18
- Query: {
19
- fileManager: emptyResolver
20
- },
21
- Mutation: {
22
- fileManager: emptyResolver
23
- },
24
- FmFile: {
25
- async src(file, _, context) {
26
- // TODO: create `FileUrlGenerator` service to use here
27
- const getSettings = context.container.resolve(GetSettingsUseCase);
28
- const result = await getSettings.execute();
29
- const settings = result.value;
30
- return (settings?.srcPrefix || "") + file.key;
14
+ const createFilesSchema = (params)=>{
15
+ const fileManagerGraphQL = new GraphQLSchemaPlugin({
16
+ typeDefs: createFilesTypeDefs(params),
17
+ resolvers: {
18
+ Query: {
19
+ fileManager: emptyResolver
20
+ },
21
+ Mutation: {
22
+ fileManager: emptyResolver
23
+ },
24
+ FmFile: {
25
+ async src (file, _, context) {
26
+ const getSettings = context.container.resolve(GetSettingsUseCase);
27
+ const result = await getSettings.execute();
28
+ const settings = result.value;
29
+ return (settings?.srcPrefix || "") + file.key;
30
+ }
31
+ },
32
+ FmQuery: {
33
+ getFileModel (_, __, context) {
34
+ const identity = context.security.getIdentity();
35
+ if (!identity) return new NotAuthorizedResponse();
36
+ return resolve(async ()=>context.container.resolve(FileModel));
37
+ },
38
+ async getFile (_, args, context) {
39
+ const getFile = context.container.resolve(GetFileUseCase);
40
+ const result = await getFile.execute(args.id);
41
+ if (result.isFail()) return new ErrorResponse(result.error);
42
+ return new Response(result.value);
43
+ },
44
+ async listFiles (_, args, context) {
45
+ const listFiles = context.container.resolve(ListFilesUseCase);
46
+ const result = await listFiles.execute(args);
47
+ if (result.isFail()) return new ErrorResponse(result.error);
48
+ return new ListResponse(result.value.items, result.value.meta);
49
+ },
50
+ async listTags (_, args, context) {
51
+ const listTags = context.container.resolve(ListTagsUseCase);
52
+ const result = await listTags.execute(args || {});
53
+ if (result.isFail()) return new ErrorResponse(result.error);
54
+ return new Response(result.value);
55
+ }
56
+ },
57
+ FmMutation: {
58
+ async createFile (_, args, context) {
59
+ const createFile = context.container.resolve(CreateFileUseCase);
60
+ const result = await createFile.execute(args.data);
61
+ if (result.isFail()) return new ErrorResponse(result.error);
62
+ return new Response(result.value);
63
+ },
64
+ async createFiles (_, args, context) {
65
+ const createFilesInBatch = context.container.resolve(CreateFilesInBatchUseCase);
66
+ const result = await createFilesInBatch.execute({
67
+ files: args.data,
68
+ meta: args.meta
69
+ });
70
+ if (result.isFail()) return new ErrorResponse(result.error);
71
+ return new Response(result.value);
72
+ },
73
+ async updateFile (_, args, context) {
74
+ const updateFile = context.container.resolve(UpdateFileUseCase);
75
+ const result = await updateFile.execute({
76
+ id: args.id,
77
+ ...args.data
78
+ });
79
+ if (result.isFail()) return new ErrorResponse(result.error);
80
+ return new Response(result.value);
81
+ },
82
+ async deleteFile (_, args, context) {
83
+ const deleteFile = context.container.resolve(DeleteFileUseCase);
84
+ const result = await deleteFile.execute(args.id);
85
+ if (result.isFail()) return new ErrorResponse(result.error);
86
+ return new Response(true);
87
+ }
88
+ }
31
89
  }
32
- },
33
- FmQuery: {
34
- getFileModel(_, __, context) {
35
- const identity = context.security.getIdentity();
36
- if (!identity) {
37
- return new NotAuthorizedResponse();
38
- }
39
- return resolve(async () => {
40
- return context.container.resolve(FileModel);
41
- });
42
- },
43
- async getFile(_, args, context) {
44
- const getFile = context.container.resolve(GetFileUseCase);
45
- const result = await getFile.execute(args.id);
46
- if (result.isFail()) {
47
- return new ErrorResponse(result.error);
48
- }
49
- return new Response(result.value);
50
- },
51
- async listFiles(_, args, context) {
52
- const listFiles = context.container.resolve(ListFilesUseCase);
53
- const result = await listFiles.execute(args);
54
- if (result.isFail()) {
55
- return new ErrorResponse(result.error);
56
- }
57
- return new ListResponse(result.value.items, result.value.meta);
58
- },
59
- async listTags(_, args, context) {
60
- const listTags = context.container.resolve(ListTagsUseCase);
61
- const result = await listTags.execute(args || {});
62
- if (result.isFail()) {
63
- return new ErrorResponse(result.error);
64
- }
65
- return new Response(result.value);
66
- }
67
- },
68
- FmMutation: {
69
- async createFile(_, args, context) {
70
- const createFile = context.container.resolve(CreateFileUseCase);
71
- const result = await createFile.execute(args.data);
72
- if (result.isFail()) {
73
- return new ErrorResponse(result.error);
74
- }
75
- return new Response(result.value);
76
- },
77
- async createFiles(_, args, context) {
78
- const createFilesInBatch = context.container.resolve(CreateFilesInBatchUseCase);
79
- const result = await createFilesInBatch.execute({
80
- files: args.data,
81
- meta: args.meta
82
- });
83
- if (result.isFail()) {
84
- return new ErrorResponse(result.error);
85
- }
86
- return new Response(result.value);
87
- },
88
- async updateFile(_, args, context) {
89
- const updateFile = context.container.resolve(UpdateFileUseCase);
90
- const result = await updateFile.execute({
91
- id: args.id,
92
- ...args.data
93
- });
94
- if (result.isFail()) {
95
- return new ErrorResponse(result.error);
96
- }
97
- return new Response(result.value);
98
- },
99
- async deleteFile(_, args, context) {
100
- const deleteFile = context.container.resolve(DeleteFileUseCase);
101
- const result = await deleteFile.execute(args.id);
102
- if (result.isFail()) {
103
- return new ErrorResponse(result.error);
104
- }
105
-
106
- // TODO: deletion from Cloud storage should be implemented in the `api-file-manager-s3` as an event handler
107
- return new Response(true);
108
- }
109
- }
110
- }
111
- });
112
- fileManagerGraphQL.name = "fm.graphql.files";
113
- return fileManagerGraphQL;
90
+ });
91
+ fileManagerGraphQL.name = "fm.graphql.files";
92
+ return fileManagerGraphQL;
114
93
  };
94
+ export { createFilesSchema };
115
95
 
116
96
  //# sourceMappingURL=filesSchema.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ErrorResponse","GraphQLSchemaPlugin","ListResponse","Response","emptyResolver","resolve","createFilesTypeDefs","NotAuthorizedResponse","GetFileUseCase","ListFilesUseCase","ListTagsUseCase","CreateFileUseCase","CreateFilesInBatchUseCase","UpdateFileUseCase","DeleteFileUseCase","GetSettingsUseCase","FileModel","createFilesSchema","params","fileManagerGraphQL","typeDefs","resolvers","Query","fileManager","Mutation","FmFile","src","file","_","context","getSettings","container","result","execute","settings","value","srcPrefix","key","FmQuery","getFileModel","__","identity","security","getIdentity","getFile","args","id","isFail","error","listFiles","items","meta","listTags","FmMutation","createFile","data","createFiles","createFilesInBatch","files","updateFile","deleteFile","name"],"sources":["filesSchema.ts"],"sourcesContent":["import {\n ErrorResponse,\n GraphQLSchemaPlugin,\n ListResponse,\n Response\n} from \"@webiny/handler-graphql\";\nimport { emptyResolver, resolve } from \"./utils.js\";\nimport type { CreateFilesTypeDefsParams } from \"~/graphql/createFilesTypeDefs.js\";\nimport { createFilesTypeDefs } from \"~/graphql/createFilesTypeDefs.js\";\nimport NotAuthorizedResponse from \"@webiny/api-core/graphql/security/NotAuthorizedResponse.js\";\nimport { GetFileUseCase } from \"~/features/file/GetFile/abstractions.js\";\nimport { ListFilesUseCase } from \"~/features/file/ListFiles/abstractions.js\";\nimport { ListTagsUseCase } from \"~/features/file/ListTags/abstractions.js\";\nimport { CreateFileUseCase } from \"~/features/file/CreateFile/abstractions.js\";\nimport { CreateFilesInBatchUseCase } from \"~/features/file/CreateFilesInBatch/abstractions.js\";\nimport { UpdateFileUseCase } from \"~/features/file/UpdateFile/abstractions.js\";\nimport { DeleteFileUseCase } from \"~/features/file/DeleteFile/abstractions.js\";\nimport { GetSettingsUseCase } from \"~/features/settings/GetSettings/abstractions.js\";\nimport type { ApiCoreContext } from \"@webiny/api-core/types/core.js\";\nimport { FileModel } from \"~/domain/file/abstractions.js\";\n\nexport const createFilesSchema = (params: CreateFilesTypeDefsParams) => {\n const fileManagerGraphQL = new GraphQLSchemaPlugin<ApiCoreContext>({\n typeDefs: createFilesTypeDefs(params),\n resolvers: {\n Query: {\n fileManager: emptyResolver\n },\n Mutation: {\n fileManager: emptyResolver\n },\n FmFile: {\n async src(file, _, context) {\n // TODO: create `FileUrlGenerator` service to use here\n const getSettings = context.container.resolve(GetSettingsUseCase);\n const result = await getSettings.execute();\n const settings = result.value;\n return (settings?.srcPrefix || \"\") + file.key;\n }\n },\n FmQuery: {\n getFileModel(_, __, context) {\n const identity = context.security.getIdentity();\n if (!identity) {\n return new NotAuthorizedResponse();\n }\n\n return resolve(async () => {\n return context.container.resolve(FileModel);\n });\n },\n async getFile(_, args: any, context) {\n const getFile = context.container.resolve(GetFileUseCase);\n const result = await getFile.execute(args.id);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(result.value);\n },\n async listFiles(_, args, context) {\n const listFiles = context.container.resolve(ListFilesUseCase);\n const result = await listFiles.execute(args);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new ListResponse(result.value.items, result.value.meta);\n },\n async listTags(_, args: any, context) {\n const listTags = context.container.resolve(ListTagsUseCase);\n const result = await listTags.execute(args || {});\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(result.value);\n }\n },\n FmMutation: {\n async createFile(_, args: any, context) {\n const createFile = context.container.resolve(CreateFileUseCase);\n const result = await createFile.execute(args.data);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(result.value);\n },\n async createFiles(_, args: any, context) {\n const createFilesInBatch = context.container.resolve(CreateFilesInBatchUseCase);\n const result = await createFilesInBatch.execute({\n files: args.data,\n meta: args.meta\n });\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(result.value);\n },\n async updateFile(_, args: any, context) {\n const updateFile = context.container.resolve(UpdateFileUseCase);\n const result = await updateFile.execute({\n id: args.id,\n ...args.data\n });\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(result.value);\n },\n async deleteFile(_, args: any, context) {\n const deleteFile = context.container.resolve(DeleteFileUseCase);\n const result = await deleteFile.execute(args.id);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n // TODO: deletion from Cloud storage should be implemented in the `api-file-manager-s3` as an event handler\n return new Response(true);\n }\n }\n }\n });\n fileManagerGraphQL.name = \"fm.graphql.files\";\n\n return fileManagerGraphQL;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"graphql/filesSchema.js","sources":["../../src/graphql/filesSchema.ts"],"sourcesContent":["import {\n ErrorResponse,\n GraphQLSchemaPlugin,\n ListResponse,\n Response\n} from \"@webiny/handler-graphql\";\nimport { emptyResolver, resolve } from \"./utils.js\";\nimport type { CreateFilesTypeDefsParams } from \"~/graphql/createFilesTypeDefs.js\";\nimport { createFilesTypeDefs } from \"~/graphql/createFilesTypeDefs.js\";\nimport NotAuthorizedResponse from \"@webiny/api-core/graphql/security/NotAuthorizedResponse.js\";\nimport { GetFileUseCase } from \"~/features/file/GetFile/abstractions.js\";\nimport { ListFilesUseCase } from \"~/features/file/ListFiles/abstractions.js\";\nimport { ListTagsUseCase } from \"~/features/file/ListTags/abstractions.js\";\nimport { CreateFileUseCase } from \"~/features/file/CreateFile/abstractions.js\";\nimport { CreateFilesInBatchUseCase } from \"~/features/file/CreateFilesInBatch/abstractions.js\";\nimport { UpdateFileUseCase } from \"~/features/file/UpdateFile/abstractions.js\";\nimport { DeleteFileUseCase } from \"~/features/file/DeleteFile/abstractions.js\";\nimport { GetSettingsUseCase } from \"~/features/settings/GetSettings/abstractions.js\";\nimport type { ApiCoreContext } from \"@webiny/api-core/types/core.js\";\nimport { FileModel } from \"~/domain/file/abstractions.js\";\n\nexport const createFilesSchema = (params: CreateFilesTypeDefsParams) => {\n const fileManagerGraphQL = new GraphQLSchemaPlugin<ApiCoreContext>({\n typeDefs: createFilesTypeDefs(params),\n resolvers: {\n Query: {\n fileManager: emptyResolver\n },\n Mutation: {\n fileManager: emptyResolver\n },\n FmFile: {\n async src(file, _, context) {\n // TODO: create `FileUrlGenerator` service to use here\n const getSettings = context.container.resolve(GetSettingsUseCase);\n const result = await getSettings.execute();\n const settings = result.value;\n return (settings?.srcPrefix || \"\") + file.key;\n }\n },\n FmQuery: {\n getFileModel(_, __, context) {\n const identity = context.security.getIdentity();\n if (!identity) {\n return new NotAuthorizedResponse();\n }\n\n return resolve(async () => {\n return context.container.resolve(FileModel);\n });\n },\n async getFile(_, args: any, context) {\n const getFile = context.container.resolve(GetFileUseCase);\n const result = await getFile.execute(args.id);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(result.value);\n },\n async listFiles(_, args, context) {\n const listFiles = context.container.resolve(ListFilesUseCase);\n const result = await listFiles.execute(args);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new ListResponse(result.value.items, result.value.meta);\n },\n async listTags(_, args: any, context) {\n const listTags = context.container.resolve(ListTagsUseCase);\n const result = await listTags.execute(args || {});\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(result.value);\n }\n },\n FmMutation: {\n async createFile(_, args: any, context) {\n const createFile = context.container.resolve(CreateFileUseCase);\n const result = await createFile.execute(args.data);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(result.value);\n },\n async createFiles(_, args: any, context) {\n const createFilesInBatch = context.container.resolve(CreateFilesInBatchUseCase);\n const result = await createFilesInBatch.execute({\n files: args.data,\n meta: args.meta\n });\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(result.value);\n },\n async updateFile(_, args: any, context) {\n const updateFile = context.container.resolve(UpdateFileUseCase);\n const result = await updateFile.execute({\n id: args.id,\n ...args.data\n });\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(result.value);\n },\n async deleteFile(_, args: any, context) {\n const deleteFile = context.container.resolve(DeleteFileUseCase);\n const result = await deleteFile.execute(args.id);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n // TODO: deletion from Cloud storage should be implemented in the `api-file-manager-s3` as an event handler\n return new Response(true);\n }\n }\n }\n });\n fileManagerGraphQL.name = \"fm.graphql.files\";\n\n return fileManagerGraphQL;\n};\n"],"names":["createFilesSchema","params","fileManagerGraphQL","GraphQLSchemaPlugin","createFilesTypeDefs","emptyResolver","file","_","context","getSettings","GetSettingsUseCase","result","settings","__","identity","NotAuthorizedResponse","resolve","FileModel","args","getFile","GetFileUseCase","ErrorResponse","Response","listFiles","ListFilesUseCase","ListResponse","listTags","ListTagsUseCase","createFile","CreateFileUseCase","createFilesInBatch","CreateFilesInBatchUseCase","updateFile","UpdateFileUseCase","deleteFile","DeleteFileUseCase"],"mappings":"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"}
@@ -1,69 +1,61 @@
1
- import { ErrorResponse, GraphQLSchemaPlugin } from "@webiny/handler-graphql";
2
- import { Response, NotFoundResponse } from "@webiny/handler-graphql";
1
+ import { ErrorResponse, GraphQLSchemaPlugin, NotFoundResponse, Response } from "@webiny/handler-graphql";
3
2
  import { NotAuthorizedError } from "@webiny/api-core/features/security/shared/index.js";
4
3
  import { ListFilesUseCase } from "../features/file/ListFiles/index.js";
5
- export const getFileByUrl = () => {
6
- const fileManagerGraphQL = new GraphQLSchemaPlugin({
7
- typeDefs: /* GraphQL */`
4
+ const getFileByUrl = ()=>{
5
+ const fileManagerGraphQL = new GraphQLSchemaPlugin({
6
+ typeDefs: `
8
7
  extend type FmQuery {
9
8
  getFileByUrl(url: String!): FmFileResponse
10
9
  }
11
10
  `,
12
- resolvers: {
13
- FmQuery: {
14
- async getFileByUrl(_, args, context) {
15
- const {
16
- url
17
- } = args;
18
- const useCase = new SecureGetFileByUrl(context.security, new GetFileByUrlUseCase(context.container.resolve(ListFilesUseCase)));
19
- try {
20
- const file = await useCase.execute(url);
21
- if (file) {
22
- return new Response(file);
11
+ resolvers: {
12
+ FmQuery: {
13
+ async getFileByUrl (_, args, context) {
14
+ const { url } = args;
15
+ const useCase = new SecureGetFileByUrl(context.security, new GetFileByUrlUseCase(context.container.resolve(ListFilesUseCase)));
16
+ try {
17
+ const file = await useCase.execute(url);
18
+ if (file) return new Response(file);
19
+ return new NotFoundResponse("File not found!");
20
+ } catch (error) {
21
+ return new ErrorResponse(error);
22
+ }
23
+ }
23
24
  }
24
- return new NotFoundResponse("File not found!");
25
- } catch (error) {
26
- return new ErrorResponse(error);
27
- }
28
25
  }
29
- }
30
- }
31
- });
32
- fileManagerGraphQL.name = "fm.graphql.getFileByUrl";
33
- return fileManagerGraphQL;
26
+ });
27
+ fileManagerGraphQL.name = "fm.graphql.getFileByUrl";
28
+ return fileManagerGraphQL;
34
29
  };
35
30
  class GetFileByUrlUseCase {
36
- constructor(listFiles) {
37
- this.listFiles = listFiles;
38
- }
39
- async execute(url) {
40
- const {
41
- pathname
42
- } = new URL(url);
43
- const query = pathname.replace("/files/", "").replace("/private/", "");
44
- const filesResult = await this.listFiles.execute({
45
- where: {
46
- key: query
47
- },
48
- limit: 1
49
- });
50
- const files = filesResult.value.items;
51
- return files.length ? files[0] : undefined;
52
- }
31
+ constructor(listFiles){
32
+ this.listFiles = listFiles;
33
+ }
34
+ async execute(url) {
35
+ const { pathname } = new URL(url);
36
+ const query = pathname.replace("/files/", "").replace("/private/", "");
37
+ const filesResult = await this.listFiles.execute({
38
+ where: {
39
+ key: query
40
+ },
41
+ limit: 1
42
+ });
43
+ const files = filesResult.value.items;
44
+ return files.length ? files[0] : void 0;
45
+ }
53
46
  }
54
47
  class SecureGetFileByUrl {
55
- constructor(security, useCase) {
56
- this.security = security;
57
- this.useCase = useCase;
58
- }
59
- execute(url) {
60
- if (!this.security.getIdentity()) {
61
- throw new NotAuthorizedError({
62
- message: "You're not authorized to edit this file!"
63
- });
48
+ constructor(security, useCase){
49
+ this.security = security;
50
+ this.useCase = useCase;
51
+ }
52
+ execute(url) {
53
+ if (!this.security.getIdentity()) throw new NotAuthorizedError({
54
+ message: "You're not authorized to edit this file!"
55
+ });
56
+ return this.useCase.execute(url);
64
57
  }
65
- return this.useCase.execute(url);
66
- }
67
58
  }
59
+ export { getFileByUrl };
68
60
 
69
61
  //# sourceMappingURL=getFileByUrl.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ErrorResponse","GraphQLSchemaPlugin","Response","NotFoundResponse","NotAuthorizedError","ListFilesUseCase","getFileByUrl","fileManagerGraphQL","typeDefs","resolvers","FmQuery","_","args","context","url","useCase","SecureGetFileByUrl","security","GetFileByUrlUseCase","container","resolve","file","execute","error","name","constructor","listFiles","pathname","URL","query","replace","filesResult","where","key","limit","files","value","items","length","undefined","getIdentity","message"],"sources":["getFileByUrl.ts"],"sourcesContent":["import { ErrorResponse, GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { Response, NotFoundResponse } from \"@webiny/handler-graphql\";\nimport type { File } from \"~/domain/file/types.js\";\nimport type { Security } from \"@webiny/api-core/types/security.js\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/index.js\";\nimport type { ApiCoreContext } from \"@webiny/api-core/types/core.js\";\nimport { ListFilesUseCase } from \"~/features/file/ListFiles/index.js\";\n\nexport const getFileByUrl = () => {\n const fileManagerGraphQL = new GraphQLSchemaPlugin<ApiCoreContext>({\n typeDefs: /* GraphQL */ `\n extend type FmQuery {\n getFileByUrl(url: String!): FmFileResponse\n }\n `,\n resolvers: {\n FmQuery: {\n async getFileByUrl(_, args, context) {\n const { url } = args as { url: string };\n const useCase = new SecureGetFileByUrl(\n context.security,\n new GetFileByUrlUseCase(context.container.resolve(ListFilesUseCase))\n );\n try {\n const file = await useCase.execute(url);\n if (file) {\n return new Response(file);\n }\n return new NotFoundResponse(\"File not found!\");\n } catch (error) {\n return new ErrorResponse(error);\n }\n }\n }\n }\n });\n fileManagerGraphQL.name = \"fm.graphql.getFileByUrl\";\n\n return fileManagerGraphQL;\n};\n\ninterface IGetFileByUrl {\n execute(url: string): Promise<File | undefined>;\n}\n\nclass GetFileByUrlUseCase implements IGetFileByUrl {\n constructor(private listFiles: ListFilesUseCase.Interface) {}\n\n async execute(url: string): Promise<File | undefined> {\n const { pathname } = new URL(url);\n const query = pathname.replace(\"/files/\", \"\").replace(\"/private/\", \"\");\n\n const filesResult = await this.listFiles.execute({\n where: {\n key: query\n },\n limit: 1\n });\n\n const files = filesResult.value.items;\n\n return files.length ? files[0] : undefined;\n }\n}\n\nclass SecureGetFileByUrl implements IGetFileByUrl {\n private security: Security;\n private useCase: IGetFileByUrl;\n\n constructor(security: Security, useCase: IGetFileByUrl) {\n this.security = security;\n this.useCase = useCase;\n }\n\n execute(url: string): Promise<File | undefined> {\n if (!this.security.getIdentity()) {\n throw new NotAuthorizedError({ message: \"You're not authorized to edit this file!\" });\n }\n\n return this.useCase.execute(url);\n }\n}\n"],"mappings":"AAAA,SAASA,aAAa,EAAEC,mBAAmB,QAAQ,yBAAyB;AAC5E,SAASC,QAAQ,EAAEC,gBAAgB,QAAQ,yBAAyB;AAGpE,SAASC,kBAAkB,QAAQ,oDAAoD;AAEvF,SAASC,gBAAgB;AAEzB,OAAO,MAAMC,YAAY,GAAGA,CAAA,KAAM;EAC9B,MAAMC,kBAAkB,GAAG,IAAIN,mBAAmB,CAAiB;IAC/DO,QAAQ,EAAE,aAAc;AAChC;AACA;AACA;AACA,SAAS;IACDC,SAAS,EAAE;MACPC,OAAO,EAAE;QACL,MAAMJ,YAAYA,CAACK,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE;UACjC,MAAM;YAAEC;UAAI,CAAC,GAAGF,IAAuB;UACvC,MAAMG,OAAO,GAAG,IAAIC,kBAAkB,CAClCH,OAAO,CAACI,QAAQ,EAChB,IAAIC,mBAAmB,CAACL,OAAO,CAACM,SAAS,CAACC,OAAO,CAACf,gBAAgB,CAAC,CACvE,CAAC;UACD,IAAI;YACA,MAAMgB,IAAI,GAAG,MAAMN,OAAO,CAACO,OAAO,CAACR,GAAG,CAAC;YACvC,IAAIO,IAAI,EAAE;cACN,OAAO,IAAInB,QAAQ,CAACmB,IAAI,CAAC;YAC7B;YACA,OAAO,IAAIlB,gBAAgB,CAAC,iBAAiB,CAAC;UAClD,CAAC,CAAC,OAAOoB,KAAK,EAAE;YACZ,OAAO,IAAIvB,aAAa,CAACuB,KAAK,CAAC;UACnC;QACJ;MACJ;IACJ;EACJ,CAAC,CAAC;EACFhB,kBAAkB,CAACiB,IAAI,GAAG,yBAAyB;EAEnD,OAAOjB,kBAAkB;AAC7B,CAAC;AAMD,MAAMW,mBAAmB,CAA0B;EAC/CO,WAAWA,CAASC,SAAqC,EAAE;IAAA,KAAvCA,SAAqC,GAArCA,SAAqC;EAAG;EAE5D,MAAMJ,OAAOA,CAACR,GAAW,EAA6B;IAClD,MAAM;MAAEa;IAAS,CAAC,GAAG,IAAIC,GAAG,CAACd,GAAG,CAAC;IACjC,MAAMe,KAAK,GAAGF,QAAQ,CAACG,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;IAEtE,MAAMC,WAAW,GAAG,MAAM,IAAI,CAACL,SAAS,CAACJ,OAAO,CAAC;MAC7CU,KAAK,EAAE;QACHC,GAAG,EAAEJ;MACT,CAAC;MACDK,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,MAAMC,KAAK,GAAGJ,WAAW,CAACK,KAAK,CAACC,KAAK;IAErC,OAAOF,KAAK,CAACG,MAAM,GAAGH,KAAK,CAAC,CAAC,CAAC,GAAGI,SAAS;EAC9C;AACJ;AAEA,MAAMvB,kBAAkB,CAA0B;EAI9CS,WAAWA,CAACR,QAAkB,EAAEF,OAAsB,EAAE;IACpD,IAAI,CAACE,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACF,OAAO,GAAGA,OAAO;EAC1B;EAEAO,OAAOA,CAACR,GAAW,EAA6B;IAC5C,IAAI,CAAC,IAAI,CAACG,QAAQ,CAACuB,WAAW,CAAC,CAAC,EAAE;MAC9B,MAAM,IAAIpC,kBAAkB,CAAC;QAAEqC,OAAO,EAAE;MAA2C,CAAC,CAAC;IACzF;IAEA,OAAO,IAAI,CAAC1B,OAAO,CAACO,OAAO,CAACR,GAAG,CAAC;EACpC;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"graphql/getFileByUrl.js","sources":["../../src/graphql/getFileByUrl.ts"],"sourcesContent":["import { ErrorResponse, GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { Response, NotFoundResponse } from \"@webiny/handler-graphql\";\nimport type { File } from \"~/domain/file/types.js\";\nimport type { Security } from \"@webiny/api-core/types/security.js\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/index.js\";\nimport type { ApiCoreContext } from \"@webiny/api-core/types/core.js\";\nimport { ListFilesUseCase } from \"~/features/file/ListFiles/index.js\";\n\nexport const getFileByUrl = () => {\n const fileManagerGraphQL = new GraphQLSchemaPlugin<ApiCoreContext>({\n typeDefs: /* GraphQL */ `\n extend type FmQuery {\n getFileByUrl(url: String!): FmFileResponse\n }\n `,\n resolvers: {\n FmQuery: {\n async getFileByUrl(_, args, context) {\n const { url } = args as { url: string };\n const useCase = new SecureGetFileByUrl(\n context.security,\n new GetFileByUrlUseCase(context.container.resolve(ListFilesUseCase))\n );\n try {\n const file = await useCase.execute(url);\n if (file) {\n return new Response(file);\n }\n return new NotFoundResponse(\"File not found!\");\n } catch (error) {\n return new ErrorResponse(error);\n }\n }\n }\n }\n });\n fileManagerGraphQL.name = \"fm.graphql.getFileByUrl\";\n\n return fileManagerGraphQL;\n};\n\ninterface IGetFileByUrl {\n execute(url: string): Promise<File | undefined>;\n}\n\nclass GetFileByUrlUseCase implements IGetFileByUrl {\n constructor(private listFiles: ListFilesUseCase.Interface) {}\n\n async execute(url: string): Promise<File | undefined> {\n const { pathname } = new URL(url);\n const query = pathname.replace(\"/files/\", \"\").replace(\"/private/\", \"\");\n\n const filesResult = await this.listFiles.execute({\n where: {\n key: query\n },\n limit: 1\n });\n\n const files = filesResult.value.items;\n\n return files.length ? files[0] : undefined;\n }\n}\n\nclass SecureGetFileByUrl implements IGetFileByUrl {\n private security: Security;\n private useCase: IGetFileByUrl;\n\n constructor(security: Security, useCase: IGetFileByUrl) {\n this.security = security;\n this.useCase = useCase;\n }\n\n execute(url: string): Promise<File | undefined> {\n if (!this.security.getIdentity()) {\n throw new NotAuthorizedError({ message: \"You're not authorized to edit this file!\" });\n }\n\n return this.useCase.execute(url);\n }\n}\n"],"names":["getFileByUrl","fileManagerGraphQL","GraphQLSchemaPlugin","_","args","context","url","useCase","SecureGetFileByUrl","GetFileByUrlUseCase","ListFilesUseCase","file","Response","NotFoundResponse","error","ErrorResponse","listFiles","pathname","URL","query","filesResult","files","undefined","security","NotAuthorizedError"],"mappings":";;;AAQO,MAAMA,eAAe;IACxB,MAAMC,qBAAqB,IAAIC,oBAAoC;QAC/D,UAAwB,CAAC;;;;QAIzB,CAAC;QACD,WAAW;YACP,SAAS;gBACL,MAAM,cAAaC,CAAC,EAAEC,IAAI,EAAEC,OAAO;oBAC/B,MAAM,EAAEC,GAAG,EAAE,GAAGF;oBAChB,MAAMG,UAAU,IAAIC,mBAChBH,QAAQ,QAAQ,EAChB,IAAII,oBAAoBJ,QAAQ,SAAS,CAAC,OAAO,CAACK;oBAEtD,IAAI;wBACA,MAAMC,OAAO,MAAMJ,QAAQ,OAAO,CAACD;wBACnC,IAAIK,MACA,OAAO,IAAIC,SAASD;wBAExB,OAAO,IAAIE,iBAAiB;oBAChC,EAAE,OAAOC,OAAO;wBACZ,OAAO,IAAIC,cAAcD;oBAC7B;gBACJ;YACJ;QACJ;IACJ;IACAb,mBAAmB,IAAI,GAAG;IAE1B,OAAOA;AACX;AAMA,MAAMQ;IACF,YAAoBO,SAAqC,CAAE;aAAvCA,SAAS,GAATA;IAAwC;IAE5D,MAAM,QAAQV,GAAW,EAA6B;QAClD,MAAM,EAAEW,QAAQ,EAAE,GAAG,IAAIC,IAAIZ;QAC7B,MAAMa,QAAQF,SAAS,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,aAAa;QAEnE,MAAMG,cAAc,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7C,OAAO;gBACH,KAAKD;YACT;YACA,OAAO;QACX;QAEA,MAAME,QAAQD,YAAY,KAAK,CAAC,KAAK;QAErC,OAAOC,MAAM,MAAM,GAAGA,KAAK,CAAC,EAAE,GAAGC;IACrC;AACJ;AAEA,MAAMd;IAIF,YAAYe,QAAkB,EAAEhB,OAAsB,CAAE;QACpD,IAAI,CAAC,QAAQ,GAAGgB;QAChB,IAAI,CAAC,OAAO,GAAGhB;IACnB;IAEA,QAAQD,GAAW,EAA6B;QAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,IAC1B,MAAM,IAAIkB,mBAAmB;YAAE,SAAS;QAA2C;QAGvF,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAClB;IAChC;AACJ"}