@webiny/api-file-manager 6.4.5 → 6.6.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/FileManagerAppFeature.d.ts +5 -0
  2. package/FileManagerAppFeature.js +21 -0
  3. package/FileManagerAppFeature.js.map +1 -0
  4. package/delivery/AssetDeliveryRoute.d.ts +14 -0
  5. package/delivery/AssetDeliveryRoute.js +65 -0
  6. package/delivery/AssetDeliveryRoute.js.map +1 -0
  7. package/delivery/setupAssetDelivery.d.ts +1 -1
  8. package/delivery/setupAssetDelivery.js +1 -66
  9. package/delivery/setupAssetDelivery.js.map +1 -1
  10. package/domain/settings/validation.js +1 -1
  11. package/domain/settings/validation.js.map +1 -1
  12. package/exports/api/file-manager/assetDelivery.d.ts +10 -0
  13. package/exports/api/file-manager/assetDelivery.js +8 -0
  14. package/exports/api/file-manager/file.d.ts +1 -0
  15. package/exports/api/file-manager/file.js +1 -0
  16. package/features/FileManagerFeature.js +6 -0
  17. package/features/FileManagerFeature.js.map +1 -1
  18. package/features/FileModelContextualSchema.d.ts +13 -0
  19. package/features/FileModelContextualSchema.js +31 -0
  20. package/features/FileModelContextualSchema.js.map +1 -0
  21. package/features/assetDelivery/Asset/Asset.d.ts +8 -0
  22. package/features/assetDelivery/Asset/Asset.js +14 -0
  23. package/features/assetDelivery/Asset/Asset.js.map +1 -0
  24. package/features/assetDelivery/Asset/abstractions.d.ts +10 -0
  25. package/features/assetDelivery/Asset/abstractions.js +5 -0
  26. package/features/assetDelivery/Asset/abstractions.js.map +1 -0
  27. package/features/assetDelivery/Asset/index.d.ts +1 -0
  28. package/features/assetDelivery/Asset/index.js +1 -0
  29. package/features/assetDelivery/FilesAssetRequestResolver.js +2 -2
  30. package/features/assetDelivery/FilesAssetRequestResolver.js.map +1 -1
  31. package/features/assetDelivery/ObjectKey/ObjectKey.d.ts +8 -0
  32. package/features/assetDelivery/ObjectKey/ObjectKey.js +28 -0
  33. package/features/assetDelivery/ObjectKey/ObjectKey.js.map +1 -0
  34. package/features/assetDelivery/ObjectKey/abstractions.d.ts +12 -0
  35. package/features/assetDelivery/ObjectKey/abstractions.js +5 -0
  36. package/features/assetDelivery/ObjectKey/abstractions.js.map +1 -0
  37. package/features/assetDelivery/ObjectKey/index.d.ts +1 -0
  38. package/features/assetDelivery/ObjectKey/index.js +1 -0
  39. package/features/assetDelivery/StreamAssetReply/StreamAssetReply.d.ts +8 -0
  40. package/features/assetDelivery/StreamAssetReply/StreamAssetReply.js +22 -0
  41. package/features/assetDelivery/StreamAssetReply/StreamAssetReply.js.map +1 -0
  42. package/features/assetDelivery/StreamAssetReply/abstractions.d.ts +11 -0
  43. package/features/assetDelivery/StreamAssetReply/abstractions.js +5 -0
  44. package/features/assetDelivery/StreamAssetReply/abstractions.js.map +1 -0
  45. package/features/assetDelivery/StreamAssetReply/index.d.ts +1 -0
  46. package/features/assetDelivery/StreamAssetReply/index.js +1 -0
  47. package/features/assetDelivery/abstractions.d.ts +23 -12
  48. package/features/assetDelivery/abstractions.js.map +1 -1
  49. package/features/assetDelivery/feature.js +6 -0
  50. package/features/assetDelivery/feature.js.map +1 -1
  51. package/features/assetDelivery/privateFiles/PrivateFileAssetRequestResolver.js +2 -2
  52. package/features/assetDelivery/privateFiles/PrivateFileAssetRequestResolver.js.map +1 -1
  53. package/features/assetDelivery/transformation/AssetKeyGenerator.d.ts +9 -0
  54. package/features/assetDelivery/transformation/AssetKeyGenerator.js +24 -0
  55. package/features/assetDelivery/transformation/AssetKeyGenerator.js.map +1 -0
  56. package/features/assetDelivery/transformation/CallableContentsReader.d.ts +11 -0
  57. package/features/assetDelivery/transformation/CallableContentsReader.js +14 -0
  58. package/features/assetDelivery/transformation/CallableContentsReader.js.map +1 -0
  59. package/features/assetDelivery/transformation/WidthCollection.d.ts +8 -0
  60. package/features/assetDelivery/transformation/WidthCollection.js +22 -0
  61. package/features/assetDelivery/transformation/WidthCollection.js.map +1 -0
  62. package/features/assetDelivery/transformation/index.d.ts +4 -0
  63. package/features/assetDelivery/transformation/index.js +4 -0
  64. package/features/assetDelivery/transformation/utils.d.ts +9 -0
  65. package/features/assetDelivery/transformation/utils.js +31 -0
  66. package/features/assetDelivery/transformation/utils.js.map +1 -0
  67. package/features/extractMetadata/ExtractMetadataHandler.d.ts +11 -0
  68. package/features/extractMetadata/ExtractMetadataHandler.js +25 -0
  69. package/features/extractMetadata/ExtractMetadataHandler.js.map +1 -0
  70. package/features/extractMetadata/ExtractMetadataInput.d.ts +3 -0
  71. package/features/extractMetadata/ExtractMetadataInput.js +0 -0
  72. package/features/file/FileUrlGenerator/FileUrlGenerator.d.ts +14 -0
  73. package/features/file/FileUrlGenerator/FileUrlGenerator.js +25 -0
  74. package/features/file/FileUrlGenerator/FileUrlGenerator.js.map +1 -0
  75. package/features/file/FileUrlGenerator/abstractions.d.ts +3 -3
  76. package/features/file/FileUrlGenerator/abstractions.js +1 -1
  77. package/features/file/FileUrlGenerator/abstractions.js.map +1 -1
  78. package/features/file/FileUrlGenerator/feature.d.ts +4 -0
  79. package/features/file/FileUrlGenerator/feature.js +11 -0
  80. package/features/file/FileUrlGenerator/feature.js.map +1 -0
  81. package/features/file/FileUrlGenerator/index.d.ts +1 -0
  82. package/features/file/FileUrlGenerator/index.js +1 -0
  83. package/features/file/GetFileByUrl/GetFileByUrlUseCase.d.ts +15 -0
  84. package/features/file/GetFileByUrl/GetFileByUrlUseCase.js +37 -0
  85. package/features/file/GetFileByUrl/GetFileByUrlUseCase.js.map +1 -0
  86. package/features/file/GetFileByUrl/abstractions.d.ts +18 -0
  87. package/features/file/GetFileByUrl/abstractions.js +5 -0
  88. package/features/file/GetFileByUrl/abstractions.js.map +1 -0
  89. package/features/file/GetFileByUrl/feature.d.ts +4 -0
  90. package/features/file/GetFileByUrl/feature.js +11 -0
  91. package/features/file/GetFileByUrl/feature.js.map +1 -0
  92. package/features/file/GetFileByUrl/index.d.ts +1 -0
  93. package/features/file/GetFileByUrl/index.js +1 -0
  94. package/features/settings/SettingsInstaller/SettingsInstaller.d.ts +3 -1
  95. package/features/settings/SettingsInstaller/SettingsInstaller.js +7 -4
  96. package/features/settings/SettingsInstaller/SettingsInstaller.js.map +1 -1
  97. package/features/upload/CompleteMultiPartUpload/abstractions.d.ts +12 -0
  98. package/features/upload/CompleteMultiPartUpload/abstractions.js +5 -0
  99. package/features/upload/CompleteMultiPartUpload/abstractions.js.map +1 -0
  100. package/features/upload/CompleteMultiPartUpload/index.d.ts +1 -0
  101. package/features/upload/CompleteMultiPartUpload/index.js +1 -0
  102. package/features/upload/CreateMultiPartUpload/abstractions.d.ts +14 -0
  103. package/features/upload/CreateMultiPartUpload/abstractions.js +5 -0
  104. package/features/upload/CreateMultiPartUpload/abstractions.js.map +1 -0
  105. package/features/upload/CreateMultiPartUpload/index.d.ts +1 -0
  106. package/features/upload/CreateMultiPartUpload/index.js +1 -0
  107. package/features/upload/GetUploadPayload/abstractions.d.ts +10 -0
  108. package/features/upload/GetUploadPayload/abstractions.js +5 -0
  109. package/features/upload/GetUploadPayload/abstractions.js.map +1 -0
  110. package/features/upload/GetUploadPayload/index.d.ts +1 -0
  111. package/features/upload/GetUploadPayload/index.js +1 -0
  112. package/features/upload/ReadFileMetadata/MetadataReader.d.ts +11 -0
  113. package/features/upload/ReadFileMetadata/MetadataReader.js +21 -0
  114. package/features/upload/ReadFileMetadata/MetadataReader.js.map +1 -0
  115. package/features/upload/ReadFileMetadata/abstractions.d.ts +15 -0
  116. package/features/upload/ReadFileMetadata/abstractions.js +5 -0
  117. package/features/upload/ReadFileMetadata/abstractions.js.map +1 -0
  118. package/features/upload/ReadFileMetadata/feature.d.ts +4 -0
  119. package/features/upload/ReadFileMetadata/feature.js +11 -0
  120. package/features/upload/ReadFileMetadata/feature.js.map +1 -0
  121. package/features/upload/ReadFileMetadata/index.d.ts +1 -0
  122. package/features/upload/ReadFileMetadata/index.js +1 -0
  123. package/features/upload/WriteFileMetadata/MetadataWriter.d.ts +14 -0
  124. package/features/upload/WriteFileMetadata/MetadataWriter.js +36 -0
  125. package/features/upload/WriteFileMetadata/MetadataWriter.js.map +1 -0
  126. package/features/upload/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.d.ts +11 -0
  127. package/features/upload/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.js +20 -0
  128. package/features/upload/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.js.map +1 -0
  129. package/features/upload/WriteFileMetadata/WriteMetadataAfterCreateHandler.d.ts +11 -0
  130. package/features/upload/WriteFileMetadata/WriteMetadataAfterCreateHandler.js +22 -0
  131. package/features/upload/WriteFileMetadata/WriteMetadataAfterCreateHandler.js.map +1 -0
  132. package/features/upload/WriteFileMetadata/abstractions.d.ts +9 -0
  133. package/features/upload/WriteFileMetadata/abstractions.js +5 -0
  134. package/features/upload/WriteFileMetadata/abstractions.js.map +1 -0
  135. package/features/upload/WriteFileMetadata/feature.d.ts +4 -0
  136. package/features/upload/WriteFileMetadata/feature.js +15 -0
  137. package/features/upload/WriteFileMetadata/feature.js.map +1 -0
  138. package/features/upload/index.d.ts +17 -0
  139. package/features/upload/index.js +10 -0
  140. package/features/upload/types.d.ts +28 -0
  141. package/features/upload/types.js +0 -0
  142. package/features/upload/utils/FileExtension.d.ts +6 -0
  143. package/features/upload/utils/FileExtension.js +16 -0
  144. package/features/upload/utils/FileExtension.js.map +1 -0
  145. package/features/upload/utils/FileKey.d.ts +11 -0
  146. package/features/upload/utils/FileKey.js +33 -0
  147. package/features/upload/utils/FileKey.js.map +1 -0
  148. package/features/upload/utils/FileNormalizer.d.ts +13 -0
  149. package/features/upload/utils/FileNormalizer.js +41 -0
  150. package/features/upload/utils/FileNormalizer.js.map +1 -0
  151. package/features/upload/utils/FileUploadModifier.d.ts +30 -0
  152. package/features/upload/utils/FileUploadModifier.js +39 -0
  153. package/features/upload/utils/FileUploadModifier.js.map +1 -0
  154. package/features/upload/utils/checkPermissions.d.ts +5 -0
  155. package/features/upload/utils/checkPermissions.js +22 -0
  156. package/features/upload/utils/checkPermissions.js.map +1 -0
  157. package/features/upload/utils/createFileNormalizerFromContext.d.ts +3 -0
  158. package/features/upload/utils/createFileNormalizerFromContext.js +9 -0
  159. package/features/upload/utils/createFileNormalizerFromContext.js.map +1 -0
  160. package/features/upload/utils/mimeTypes.d.ts +1 -0
  161. package/features/upload/utils/mimeTypes.js +9 -0
  162. package/features/upload/utils/mimeTypes.js.map +1 -0
  163. package/graphql/FmGraphQLSchema.d.ts +25 -0
  164. package/graphql/FmGraphQLSchema.js +451 -0
  165. package/graphql/FmGraphQLSchema.js.map +1 -0
  166. package/index.d.ts +3 -6
  167. package/index.js +3 -32
  168. package/index.js.map +1 -1
  169. package/package.json +24 -17
  170. package/graphql/baseSchema.d.ts +0 -3
  171. package/graphql/baseSchema.js +0 -100
  172. package/graphql/baseSchema.js.map +0 -1
  173. package/graphql/createFilesTypeDefs.d.ts +0 -8
  174. package/graphql/createFilesTypeDefs.js +0 -191
  175. package/graphql/createFilesTypeDefs.js.map +0 -1
  176. package/graphql/filesSchema.d.ts +0 -4
  177. package/graphql/filesSchema.js +0 -96
  178. package/graphql/filesSchema.js.map +0 -1
  179. package/graphql/getFileByUrl.d.ts +0 -3
  180. package/graphql/getFileByUrl.js +0 -61
  181. package/graphql/getFileByUrl.js.map +0 -1
  182. package/graphql/index.d.ts +0 -4
  183. package/graphql/index.js +0 -47
  184. package/graphql/index.js.map +0 -1
  185. package/graphql/utils.d.ts +0 -11
  186. package/graphql/utils.js +0 -12
  187. package/graphql/utils.js.map +0 -1
  188. package/modelModifier/CmsModelModifier.d.ts +0 -26
  189. package/modelModifier/CmsModelModifier.js +0 -51
  190. package/modelModifier/CmsModelModifier.js.map +0 -1
@@ -0,0 +1,451 @@
1
+ import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
2
+ import { ErrorResponse, ListResponse, NotFoundResponse, Response } from "@webiny/api-graphql";
3
+ import { renderFields } from "@webiny/api-headless-cms/utils/renderFields.js";
4
+ import { renderInputFields } from "@webiny/api-headless-cms/utils/renderInputFields.js";
5
+ import { renderListFilterFields } from "@webiny/api-headless-cms/utils/renderListFilterFields.js";
6
+ import { ListModelsUseCase } from "@webiny/api-headless-cms/features/contentModel/ListModels/index.js";
7
+ import { CmsModelFieldToGraphQLRegistry } from "@webiny/api-headless-cms/exports/api/cms/graphql.js";
8
+ import { IdentityContext } from "@webiny/api-core/exports/api/security.js";
9
+ import { GetFileUseCase } from "../features/file/GetFile/abstractions.js";
10
+ import { ListFilesUseCase } from "../features/file/ListFiles/abstractions.js";
11
+ import { ListTagsUseCase } from "../features/file/ListTags/abstractions.js";
12
+ import { CreateFileUseCase } from "../features/file/CreateFile/abstractions.js";
13
+ import { CreateFilesInBatchUseCase } from "../features/file/CreateFilesInBatch/abstractions.js";
14
+ import { UpdateFileUseCase } from "../features/file/UpdateFile/abstractions.js";
15
+ import { DeleteFileUseCase } from "../features/file/DeleteFile/abstractions.js";
16
+ import { GetFileByUrlUseCase } from "../features/file/GetFileByUrl/abstractions.js";
17
+ import { GetSettingsUseCase } from "../features/settings/GetSettings/abstractions.js";
18
+ import { UpdateSettingsUseCase } from "../features/settings/UpdateSettings/abstractions.js";
19
+ import { FileUrlGenerator } from "../features/file/FileUrlGenerator/abstractions.js";
20
+ import { FileModel } from "../domain/file/abstractions.js";
21
+ const removeFieldRequiredValidation = (field)=>{
22
+ if (field.validation) field.validation = field.validation.filter((validation)=>"required" !== validation.name);
23
+ if (field.listValidation) field.listValidation = field.listValidation.filter((v)=>"required" !== v.name);
24
+ return field;
25
+ };
26
+ const createUpdateFields = (fields)=>fields.reduce((collection, field)=>{
27
+ collection.push(removeFieldRequiredValidation({
28
+ ...field
29
+ }));
30
+ return collection;
31
+ }, []);
32
+ class FmGraphQLSchema_ {
33
+ constructor(identityContext, listModelsUseCase, fieldRegistry, fileModel, fileUrlGenerator){
34
+ this.identityContext = identityContext;
35
+ this.listModelsUseCase = listModelsUseCase;
36
+ this.fieldRegistry = fieldRegistry;
37
+ this.fileModel = fileModel;
38
+ this.fileUrlGenerator = fileUrlGenerator;
39
+ }
40
+ async execute(builder) {
41
+ if (this.fileUrlGenerator.init) await this.fileUrlGenerator.init();
42
+ this.addBaseTypeDefs(builder);
43
+ await this.addFileTypeDefs(builder);
44
+ this.addSettingsResolvers(builder);
45
+ this.addFileQueryResolvers(builder);
46
+ this.addFileMutationResolvers(builder);
47
+ return builder;
48
+ }
49
+ addBaseTypeDefs(builder) {
50
+ builder.addTypeDefs(`
51
+ type FmError {
52
+ code: String
53
+ message: String
54
+ data: JSON
55
+ stack: String
56
+ }
57
+
58
+ type FmCreatedBy {
59
+ id: ID
60
+ displayName: String
61
+ type: String
62
+ }
63
+
64
+ type FmListMeta {
65
+ cursor: String
66
+ totalCount: Int
67
+ hasMoreItems: Boolean
68
+ }
69
+
70
+ type FmBooleanResponse {
71
+ data: Boolean
72
+ error: FmError
73
+ }
74
+
75
+ type FmSettings {
76
+ uploadMinFileSize: Number
77
+ uploadMaxFileSize: Number
78
+ srcPrefix: String
79
+ }
80
+
81
+ input FmSettingsInput {
82
+ uploadMinFileSize: Number
83
+ uploadMaxFileSize: Number
84
+ srcPrefix: String
85
+ }
86
+
87
+ type FmSettingsResponse {
88
+ data: FmSettings
89
+ error: FmError
90
+ }
91
+
92
+ type FmDeleteResponse {
93
+ data: Boolean
94
+ error: FmError
95
+ }
96
+
97
+ type FmQuery {
98
+ getSettings: FmSettingsResponse
99
+ }
100
+
101
+ type FmMutation {
102
+ updateSettings(data: FmSettingsInput): FmSettingsResponse
103
+ }
104
+
105
+ extend type Query {
106
+ fileManager: FmQuery
107
+ }
108
+
109
+ extend type Mutation {
110
+ fileManager: FmMutation
111
+ }
112
+ `);
113
+ builder.addResolver({
114
+ path: "Query.fileManager",
115
+ resolver: ()=>()=>({})
116
+ });
117
+ builder.addResolver({
118
+ path: "Mutation.fileManager",
119
+ resolver: ()=>()=>({})
120
+ });
121
+ }
122
+ async addFileTypeDefs(builder) {
123
+ const models = await this.loadModels();
124
+ const { fields } = this.fileModel;
125
+ const fieldTypes = renderFields({
126
+ models,
127
+ model: this.fileModel,
128
+ fields,
129
+ type: "manage",
130
+ fieldRegistry: this.fieldRegistry
131
+ });
132
+ const inputCreateFields = renderInputFields({
133
+ models,
134
+ model: this.fileModel,
135
+ fields,
136
+ fieldRegistry: this.fieldRegistry
137
+ });
138
+ const inputUpdateFields = renderInputFields({
139
+ models,
140
+ model: this.fileModel,
141
+ fields: createUpdateFields(fields),
142
+ fieldRegistry: this.fieldRegistry
143
+ });
144
+ const listFilterFieldsRender = renderListFilterFields({
145
+ model: this.fileModel,
146
+ fields: this.fileModel.fields,
147
+ type: "manage",
148
+ fieldRegistry: this.fieldRegistry,
149
+ excludeFields: [
150
+ "entryId",
151
+ "status"
152
+ ]
153
+ });
154
+ builder.addTypeDefs(`
155
+ type FmFile_Location {
156
+ folderId: ID!
157
+ }
158
+
159
+ input FmFile_LocationInput {
160
+ folderId: ID!
161
+ }
162
+
163
+ input FmFile_LocationWhereInput {
164
+ folderId: ID
165
+ folderId_in: [ID!]
166
+ folderId_not: ID
167
+ folderId_not_in: [ID!]
168
+ }
169
+
170
+ ${fieldTypes.map((f)=>f.typeDefs).join("\n")}
171
+
172
+ type FmFile {
173
+ id: ID!
174
+ createdOn: DateTime!
175
+ modifiedOn: DateTime
176
+ savedOn: DateTime!
177
+ createdBy: FmCreatedBy!
178
+ modifiedBy: FmCreatedBy
179
+ savedBy: FmCreatedBy!
180
+ location: FmFile_Location!
181
+ src: String
182
+ ${fieldTypes.map((f)=>f.fields).join("\n")}
183
+ }
184
+
185
+ ${inputCreateFields.map((f)=>f.typeDefs).join("\n")}
186
+
187
+ input FmCreatedByInput {
188
+ id: ID!
189
+ displayName: String!
190
+ type: String!
191
+ }
192
+
193
+ input FmFileCreateInput {
194
+ id: ID!
195
+ createdOn: DateTime
196
+ modifiedOn: DateTime
197
+ savedOn: DateTime
198
+ createdBy: FmCreatedByInput
199
+ modifiedBy: FmCreatedByInput
200
+ savedBy: FmCreatedByInput
201
+ location: FmFile_LocationInput
202
+ ${inputCreateFields.map((f)=>f.fields).join("\n")}
203
+ }
204
+
205
+ input FmFileUpdateInput {
206
+ createdOn: DateTime
207
+ modifiedOn: DateTime
208
+ savedOn: DateTime
209
+ createdBy: FmCreatedByInput
210
+ modifiedBy: FmCreatedByInput
211
+ savedBy: FmCreatedByInput
212
+ location: FmFile_LocationInput
213
+ ${inputUpdateFields.map((f)=>f.fields).join("\n")}
214
+ }
215
+
216
+ type FmFileResponse {
217
+ data: FmFile
218
+ error: FmError
219
+ }
220
+
221
+ input FmFileListWhereInput {
222
+ ${listFilterFieldsRender.allFiltersAsString()}
223
+ location: FmFile_LocationWhereInput
224
+ AND: [FmFileListWhereInput!]
225
+ OR: [FmFileListWhereInput!]
226
+ }
227
+
228
+ type FmFileListResponse {
229
+ data: [FmFile!]
230
+ error: FmError
231
+ meta: FmListMeta
232
+ }
233
+
234
+ enum FmFileListSorter {
235
+ savedOn_ASC
236
+ savedOn_DESC
237
+ createdOn_ASC
238
+ createdOn_DESC
239
+ name_ASC
240
+ name_DESC
241
+ key_ASC
242
+ key_DESC
243
+ type_ASC
244
+ type_DESC
245
+ size_ASC
246
+ size_DESC
247
+ }
248
+
249
+ input FmTagsListWhereInput {
250
+ createdBy: String
251
+ tags_startsWith: String
252
+ tags_not_startsWith: String
253
+ }
254
+
255
+ type FmTag {
256
+ tag: String!
257
+ count: Number!
258
+ }
259
+
260
+ type FmTagsListResponse {
261
+ data: [FmTag!]
262
+ error: FmError
263
+ }
264
+
265
+ type FmCreateFilesResponse {
266
+ data: [FmFile!]
267
+ error: FmError
268
+ }
269
+
270
+ type FmFileModelResponse {
271
+ data: JSON
272
+ error: FmError
273
+ }
274
+
275
+ extend type FmQuery {
276
+ getFileModel: FmFileModelResponse!
277
+ getFile(id: ID!): FmFileResponse!
278
+ getFileByUrl(url: String!): FmFileResponse
279
+ listFiles(
280
+ search: String
281
+ where: FmFileListWhereInput
282
+ limit: Int
283
+ after: String
284
+ sort: [FmFileListSorter!]
285
+ ): FmFileListResponse!
286
+ listTags(where: FmTagsListWhereInput): FmTagsListResponse!
287
+ }
288
+
289
+ extend type FmMutation {
290
+ createFile(data: FmFileCreateInput!): FmFileResponse!
291
+ createFiles(data: [FmFileCreateInput!]!): FmCreateFilesResponse!
292
+ updateFile(id: ID!, data: FmFileUpdateInput!): FmFileResponse!
293
+ deleteFile(id: ID!): FmBooleanResponse!
294
+ }
295
+ `);
296
+ }
297
+ addSettingsResolvers(builder) {
298
+ builder.addResolver({
299
+ path: "FmQuery.getSettings",
300
+ dependencies: [
301
+ GetSettingsUseCase
302
+ ],
303
+ resolver: (getSettings)=>async ()=>{
304
+ const result = await getSettings.execute();
305
+ if (result.isFail()) return new ErrorResponse(result.error);
306
+ return new Response(result.value);
307
+ }
308
+ });
309
+ builder.addResolver({
310
+ path: "FmMutation.updateSettings",
311
+ dependencies: [
312
+ UpdateSettingsUseCase
313
+ ],
314
+ resolver: (updateSettings)=>async ({ args })=>{
315
+ const result = await updateSettings.execute(args.data);
316
+ if (result.isFail()) return new ErrorResponse(result.error);
317
+ return new Response(result.value);
318
+ }
319
+ });
320
+ }
321
+ addFileQueryResolvers(builder) {
322
+ builder.addResolver({
323
+ path: "FmFile.src",
324
+ dependencies: [
325
+ FileUrlGenerator
326
+ ],
327
+ resolver: (urlGenerator)=>({ parent })=>urlGenerator.generateUrl(parent)
328
+ });
329
+ builder.addResolver({
330
+ path: "FmQuery.getFileModel",
331
+ dependencies: [
332
+ FileModel
333
+ ],
334
+ resolver: (fileModel)=>()=>new Response(fileModel)
335
+ });
336
+ builder.addResolver({
337
+ path: "FmQuery.getFile",
338
+ dependencies: [
339
+ GetFileUseCase
340
+ ],
341
+ resolver: (getFile)=>async ({ args })=>{
342
+ const result = await getFile.execute(args.id);
343
+ if (result.isFail()) return new ErrorResponse(result.error);
344
+ return new Response(result.value);
345
+ }
346
+ });
347
+ builder.addResolver({
348
+ path: "FmQuery.listFiles",
349
+ dependencies: [
350
+ ListFilesUseCase
351
+ ],
352
+ resolver: (listFiles)=>async ({ args })=>{
353
+ const result = await listFiles.execute(args);
354
+ if (result.isFail()) return new ErrorResponse(result.error);
355
+ return new ListResponse(result.value.items, result.value.meta);
356
+ }
357
+ });
358
+ builder.addResolver({
359
+ path: "FmQuery.listTags",
360
+ dependencies: [
361
+ ListTagsUseCase
362
+ ],
363
+ resolver: (listTags)=>async ({ args })=>{
364
+ const result = await listTags.execute(args || {});
365
+ if (result.isFail()) return new ErrorResponse(result.error);
366
+ return new Response(result.value);
367
+ }
368
+ });
369
+ builder.addResolver({
370
+ path: "FmQuery.getFileByUrl",
371
+ dependencies: [
372
+ GetFileByUrlUseCase
373
+ ],
374
+ resolver: (getFileByUrl)=>async ({ args })=>{
375
+ const result = await getFileByUrl.execute(args.url);
376
+ if (result.isFail()) return new ErrorResponse(result.error);
377
+ if (!result.value) return new NotFoundResponse("File not found!");
378
+ return new Response(result.value);
379
+ }
380
+ });
381
+ }
382
+ addFileMutationResolvers(builder) {
383
+ builder.addResolver({
384
+ path: "FmMutation.createFile",
385
+ dependencies: [
386
+ CreateFileUseCase
387
+ ],
388
+ resolver: (createFile)=>async ({ args })=>{
389
+ const result = await createFile.execute(args.data);
390
+ if (result.isFail()) return new ErrorResponse(result.error);
391
+ return new Response(result.value);
392
+ }
393
+ });
394
+ builder.addResolver({
395
+ path: "FmMutation.createFiles",
396
+ dependencies: [
397
+ CreateFilesInBatchUseCase
398
+ ],
399
+ resolver: (createFilesInBatch)=>async ({ args })=>{
400
+ const result = await createFilesInBatch.execute({
401
+ files: args.data,
402
+ meta: args.meta
403
+ });
404
+ if (result.isFail()) return new ErrorResponse(result.error);
405
+ return new Response(result.value);
406
+ }
407
+ });
408
+ builder.addResolver({
409
+ path: "FmMutation.updateFile",
410
+ dependencies: [
411
+ UpdateFileUseCase
412
+ ],
413
+ resolver: (updateFile)=>async ({ args })=>{
414
+ const result = await updateFile.execute({
415
+ id: args.id,
416
+ ...args.data
417
+ });
418
+ if (result.isFail()) return new ErrorResponse(result.error);
419
+ return new Response(result.value);
420
+ }
421
+ });
422
+ builder.addResolver({
423
+ path: "FmMutation.deleteFile",
424
+ dependencies: [
425
+ DeleteFileUseCase
426
+ ],
427
+ resolver: (deleteFile)=>async ({ args })=>{
428
+ const result = await deleteFile.execute(args.id);
429
+ if (result.isFail()) return new ErrorResponse(result.error);
430
+ return new Response(true);
431
+ }
432
+ });
433
+ }
434
+ async loadModels() {
435
+ const modelsResult = await this.identityContext.withoutAuthorization(()=>this.listModelsUseCase.execute());
436
+ return modelsResult.value;
437
+ }
438
+ }
439
+ const FmGraphQLSchema = GraphQLSchemaFactory.createImplementation({
440
+ implementation: FmGraphQLSchema_,
441
+ dependencies: [
442
+ IdentityContext,
443
+ ListModelsUseCase,
444
+ CmsModelFieldToGraphQLRegistry,
445
+ FileModel,
446
+ FileUrlGenerator
447
+ ]
448
+ });
449
+ export { FmGraphQLSchema };
450
+
451
+ //# sourceMappingURL=FmGraphQLSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql/FmGraphQLSchema.js","sources":["../../src/graphql/FmGraphQLSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/api-graphql/graphql/abstractions.js\";\nimport { ErrorResponse } from \"@webiny/api-graphql\";\nimport { ListResponse } from \"@webiny/api-graphql\";\nimport { NotFoundResponse } from \"@webiny/api-graphql\";\nimport { Response } from \"@webiny/api-graphql\";\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 { ListModelsUseCase } from \"@webiny/api-headless-cms/features/contentModel/ListModels/index.js\";\nimport { CmsModelFieldToGraphQLRegistry } from \"@webiny/api-headless-cms/exports/api/cms/graphql.js\";\nimport { IdentityContext } from \"@webiny/api-core/exports/api/security.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 { GetFileByUrlUseCase } from \"~/features/file/GetFileByUrl/abstractions.js\";\nimport { GetSettingsUseCase } from \"~/features/settings/GetSettings/abstractions.js\";\nimport { UpdateSettingsUseCase } from \"~/features/settings/UpdateSettings/abstractions.js\";\nimport { FileUrlGenerator } from \"~/features/file/FileUrlGenerator/abstractions.js\";\nimport { FileModel } from \"~/domain/file/abstractions.js\";\nimport type { CmsModelField } from \"@webiny/api-headless-cms/types/index.js\";\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\nclass FmGraphQLSchema_ implements GraphQLSchemaFactory.Interface {\n public constructor(\n private readonly identityContext: IdentityContext.Interface,\n private readonly listModelsUseCase: ListModelsUseCase.Interface,\n private readonly fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface,\n private readonly fileModel: FileModel.Interface,\n private readonly fileUrlGenerator: FileUrlGenerator.Interface\n ) {}\n\n public async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n if (this.fileUrlGenerator.init) {\n await this.fileUrlGenerator.init();\n }\n\n this.addBaseTypeDefs(builder);\n await this.addFileTypeDefs(builder);\n this.addSettingsResolvers(builder);\n this.addFileQueryResolvers(builder);\n this.addFileMutationResolvers(builder);\n\n return builder;\n }\n\n private addBaseTypeDefs(builder: GraphQLSchemaFactory.SchemaBuilder): void {\n builder.addTypeDefs(/* GraphQL */ `\n type FmError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n\n type FmCreatedBy {\n id: ID\n displayName: String\n type: String\n }\n\n type FmListMeta {\n cursor: String\n totalCount: Int\n hasMoreItems: Boolean\n }\n\n type FmBooleanResponse {\n data: Boolean\n error: FmError\n }\n\n type FmSettings {\n uploadMinFileSize: Number\n uploadMaxFileSize: Number\n srcPrefix: String\n }\n\n input FmSettingsInput {\n uploadMinFileSize: Number\n uploadMaxFileSize: Number\n srcPrefix: String\n }\n\n type FmSettingsResponse {\n data: FmSettings\n error: FmError\n }\n\n type FmDeleteResponse {\n data: Boolean\n error: FmError\n }\n\n type FmQuery {\n getSettings: FmSettingsResponse\n }\n\n type FmMutation {\n updateSettings(data: FmSettingsInput): FmSettingsResponse\n }\n\n extend type Query {\n fileManager: FmQuery\n }\n\n extend type Mutation {\n fileManager: FmMutation\n }\n `);\n\n builder.addResolver({\n path: \"Query.fileManager\",\n resolver: () => {\n return () => ({});\n }\n });\n\n builder.addResolver({\n path: \"Mutation.fileManager\",\n resolver: () => {\n return () => ({});\n }\n });\n }\n\n private async addFileTypeDefs(builder: GraphQLSchemaFactory.SchemaBuilder): Promise<void> {\n const models = await this.loadModels();\n const { fields } = this.fileModel;\n\n const fieldTypes = renderFields({\n models,\n model: this.fileModel,\n fields,\n type: \"manage\",\n fieldRegistry: this.fieldRegistry\n });\n\n const inputCreateFields = renderInputFields({\n models,\n model: this.fileModel,\n fields,\n fieldRegistry: this.fieldRegistry\n });\n\n const inputUpdateFields = renderInputFields({\n models,\n model: this.fileModel,\n fields: createUpdateFields(fields),\n fieldRegistry: this.fieldRegistry\n });\n\n const listFilterFieldsRender = renderListFilterFields({\n model: this.fileModel,\n fields: this.fileModel.fields,\n type: \"manage\",\n fieldRegistry: this.fieldRegistry,\n excludeFields: [\"entryId\", \"status\"]\n });\n\n builder.addTypeDefs(/* 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 getFileByUrl(url: String!): 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\n private addSettingsResolvers(builder: GraphQLSchemaFactory.SchemaBuilder): void {\n builder.addResolver({\n path: \"FmQuery.getSettings\",\n dependencies: [GetSettingsUseCase],\n resolver: (getSettings: GetSettingsUseCase.Interface) => {\n return async () => {\n const result = await getSettings.execute();\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(result.value);\n };\n }\n });\n\n builder.addResolver({\n path: \"FmMutation.updateSettings\",\n dependencies: [UpdateSettingsUseCase],\n resolver: (updateSettings: UpdateSettingsUseCase.Interface) => {\n return async ({ args }) => {\n const result = await updateSettings.execute(args.data);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(result.value);\n };\n }\n });\n }\n\n private addFileQueryResolvers(builder: GraphQLSchemaFactory.SchemaBuilder): void {\n builder.addResolver({\n path: \"FmFile.src\",\n dependencies: [FileUrlGenerator],\n resolver: (urlGenerator: FileUrlGenerator.Interface) => {\n return ({ parent }) => {\n return urlGenerator.generateUrl(parent);\n };\n }\n });\n\n builder.addResolver({\n path: \"FmQuery.getFileModel\",\n dependencies: [FileModel],\n resolver: (fileModel: FileModel.Interface) => {\n return () => {\n return new Response(fileModel);\n };\n }\n });\n\n builder.addResolver<{ id: string }>({\n path: \"FmQuery.getFile\",\n dependencies: [GetFileUseCase],\n resolver: (getFile: GetFileUseCase.Interface) => {\n return async ({ args }) => {\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 }\n });\n\n builder.addResolver({\n path: \"FmQuery.listFiles\",\n dependencies: [ListFilesUseCase],\n resolver: (listFiles: ListFilesUseCase.Interface) => {\n return async ({ args }) => {\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 }\n });\n\n builder.addResolver({\n path: \"FmQuery.listTags\",\n dependencies: [ListTagsUseCase],\n resolver: (listTags: ListTagsUseCase.Interface) => {\n return async ({ args }) => {\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 });\n\n builder.addResolver<{ url: string }>({\n path: \"FmQuery.getFileByUrl\",\n dependencies: [GetFileByUrlUseCase],\n resolver: (getFileByUrl: GetFileByUrlUseCase.Interface) => {\n return async ({ args }) => {\n const result = await getFileByUrl.execute(args.url);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n if (!result.value) {\n return new NotFoundResponse(\"File not found!\");\n }\n\n return new Response(result.value);\n };\n }\n });\n }\n\n private addFileMutationResolvers(builder: GraphQLSchemaFactory.SchemaBuilder): void {\n builder.addResolver({\n path: \"FmMutation.createFile\",\n dependencies: [CreateFileUseCase],\n resolver: (createFile: CreateFileUseCase.Interface) => {\n return async ({ args }) => {\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 }\n });\n\n builder.addResolver({\n path: \"FmMutation.createFiles\",\n dependencies: [CreateFilesInBatchUseCase],\n resolver: (createFilesInBatch: CreateFilesInBatchUseCase.Interface) => {\n return async ({ args }) => {\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 }\n });\n\n builder.addResolver({\n path: \"FmMutation.updateFile\",\n dependencies: [UpdateFileUseCase],\n resolver: (updateFile: UpdateFileUseCase.Interface) => {\n return async ({ args }) => {\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 }\n });\n\n builder.addResolver({\n path: \"FmMutation.deleteFile\",\n dependencies: [DeleteFileUseCase],\n resolver: (deleteFile: DeleteFileUseCase.Interface) => {\n return async ({ args }) => {\n const result = await deleteFile.execute(args.id);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(true);\n };\n }\n });\n }\n\n private async loadModels() {\n const modelsResult = await this.identityContext.withoutAuthorization(() => {\n return this.listModelsUseCase.execute();\n });\n\n return modelsResult.value;\n }\n}\n\nexport const FmGraphQLSchema = GraphQLSchemaFactory.createImplementation({\n implementation: FmGraphQLSchema_,\n dependencies: [\n IdentityContext,\n ListModelsUseCase,\n CmsModelFieldToGraphQLRegistry,\n FileModel,\n FileUrlGenerator\n ]\n});\n"],"names":["removeFieldRequiredValidation","field","validation","v","createUpdateFields","fields","collection","FmGraphQLSchema_","identityContext","listModelsUseCase","fieldRegistry","fileModel","fileUrlGenerator","builder","models","fieldTypes","renderFields","inputCreateFields","renderInputFields","inputUpdateFields","listFilterFieldsRender","renderListFilterFields","f","GetSettingsUseCase","getSettings","result","ErrorResponse","Response","UpdateSettingsUseCase","updateSettings","args","FileUrlGenerator","urlGenerator","parent","FileModel","GetFileUseCase","getFile","ListFilesUseCase","listFiles","ListResponse","ListTagsUseCase","listTags","GetFileByUrlUseCase","getFileByUrl","NotFoundResponse","CreateFileUseCase","createFile","CreateFilesInBatchUseCase","createFilesInBatch","UpdateFileUseCase","updateFile","DeleteFileUseCase","deleteFile","modelsResult","FmGraphQLSchema","GraphQLSchemaFactory","IdentityContext","ListModelsUseCase","CmsModelFieldToGraphQLRegistry"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,7 +1,4 @@
1
- import type { ApiCoreContext } from "@webiny/api-core/types/core.js";
2
- import { ContextPlugin } from "@webiny/api";
3
- export * from "./modelModifier/CmsModelModifier.js";
4
1
  export * from "./delivery/index.js";
5
- export declare const createFileManagerContext: () => (ContextPlugin<ApiCoreContext> | import("@webiny/handler").RegisterExtensionPlugin<import("@webiny/handler/types.js").Context>)[];
6
- export declare const createFileManagerGraphQL: () => (import("@webiny/handler-graphql/index.js").GraphQLSchemaPlugin<ApiCoreContext> | ContextPlugin<ApiCoreContext>)[];
7
- export declare const createAssetDelivery: () => (import("@webiny/handler").ModifyFastifyPlugin | import("@webiny/handler").RegisterExtensionPlugin<import("@webiny/handler/types.js").Context>)[];
2
+ export declare const createAssetDelivery: () => import("@webiny/handler").RegisterExtensionPlugin<import("@webiny/handler/types.js").Context>[];
3
+ export { FileManagerAppFeature } from "./FileManagerAppFeature.js";
4
+ export { AssetDeliveryRoute } from "./delivery/AssetDeliveryRoute.js";
package/index.js CHANGED
@@ -1,44 +1,15 @@
1
- import { ContextPlugin } from "@webiny/api";
2
1
  import { setupAssetDelivery } from "./delivery/setupAssetDelivery.js";
3
- import { createGraphQLSchemaPlugin } from "./graphql/index.js";
4
- import { FileManagerFeature } from "./features/FileManagerFeature.js";
5
- import { FmPermissionsFeature } from "./features/permissions/feature.js";
6
- import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
7
- import { FileModel } from "./domain/file/abstractions.js";
8
- import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
9
- import { FILE_MODEL_ID, FileModel as file_model_js_FileModel } from "./domain/file/file.model.js";
10
2
  import { createRegisterExtensionPlugin } from "@webiny/handler";
11
3
  import { AssetDeliveryFeature } from "./features/assetDelivery/feature.js";
12
- export * from "./modelModifier/CmsModelModifier.js";
13
4
  export * from "./delivery/index.js";
14
- const createFileManagerContext = ()=>{
15
- const fileManagerContextPlugin = new ContextPlugin(async (context)=>{
16
- const tenantContext = context.container.resolve(TenantContext);
17
- const getModel = context.container.resolve(GetModelUseCase);
18
- if (!tenantContext.getTenant()) return;
19
- await context.security.withoutAuthorization(async ()=>{
20
- const fileModel = await getModel.execute(FILE_MODEL_ID);
21
- context.container.registerInstance(FileModel, fileModel.value);
22
- });
23
- FmPermissionsFeature.register(context.container);
24
- FileManagerFeature.register(context.container);
25
- });
26
- fileManagerContextPlugin.name = "file-manager.createContext";
27
- const modelsPlugin = createRegisterExtensionPlugin((context)=>{
28
- context.container.register(file_model_js_FileModel);
29
- });
30
- return [
31
- fileManagerContextPlugin,
32
- modelsPlugin
33
- ];
34
- };
35
- const createFileManagerGraphQL = ()=>createGraphQLSchemaPlugin();
36
5
  const createAssetDelivery = ()=>[
37
6
  createRegisterExtensionPlugin((context)=>{
38
7
  AssetDeliveryFeature.register(context.container);
39
8
  }),
40
9
  ...setupAssetDelivery()
41
10
  ];
42
- export { createAssetDelivery, createFileManagerContext, createFileManagerGraphQL };
11
+ export { FileManagerAppFeature } from "./FileManagerAppFeature.js";
12
+ export { AssetDeliveryRoute } from "./delivery/AssetDeliveryRoute.js";
13
+ export { createAssetDelivery };
43
14
 
44
15
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import type { ApiCoreContext } from \"@webiny/api-core/types/core.js\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { setupAssetDelivery } from \"./delivery/setupAssetDelivery.js\";\nimport { createGraphQLSchemaPlugin } from \"./graphql/index.js\";\nimport { FileManagerFeature } from \"~/features/FileManagerFeature.js\";\nimport { FmPermissionsFeature } from \"~/features/permissions/feature.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { FileModel as FileModelAbstraction } from \"~/domain/file/abstractions.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { FileModel, FILE_MODEL_ID } from \"~/domain/file/file.model.js\";\nimport { createRegisterExtensionPlugin } from \"@webiny/handler\";\nimport { AssetDeliveryFeature } from \"~/features/assetDelivery/feature.js\";\n\nexport * from \"./modelModifier/CmsModelModifier.js\";\nexport * from \"./delivery/index.js\";\n\nexport const createFileManagerContext = () => {\n const fileManagerContextPlugin = new ContextPlugin<ApiCoreContext>(async context => {\n const tenantContext = context.container.resolve(TenantContext);\n const getModel = context.container.resolve(GetModelUseCase);\n\n if (!tenantContext.getTenant()) {\n return;\n }\n\n await context.security.withoutAuthorization(async () => {\n const fileModel = await getModel.execute(FILE_MODEL_ID);\n context.container.registerInstance(FileModelAbstraction, fileModel.value);\n });\n\n FmPermissionsFeature.register(context.container);\n FileManagerFeature.register(context.container);\n });\n\n fileManagerContextPlugin.name = \"file-manager.createContext\";\n\n const modelsPlugin = createRegisterExtensionPlugin(context => {\n context.container.register(FileModel);\n });\n\n return [fileManagerContextPlugin, modelsPlugin];\n};\n\nexport const createFileManagerGraphQL = () => {\n return createGraphQLSchemaPlugin();\n};\n\nexport const createAssetDelivery = () => {\n return [\n createRegisterExtensionPlugin(context => {\n AssetDeliveryFeature.register(context.container);\n }),\n ...setupAssetDelivery()\n ];\n};\n"],"names":["createFileManagerContext","fileManagerContextPlugin","ContextPlugin","context","tenantContext","TenantContext","getModel","GetModelUseCase","fileModel","FILE_MODEL_ID","FileModelAbstraction","FmPermissionsFeature","FileManagerFeature","modelsPlugin","createRegisterExtensionPlugin","FileModel","createFileManagerGraphQL","createGraphQLSchemaPlugin","createAssetDelivery","AssetDeliveryFeature","setupAssetDelivery"],"mappings":";;;;;;;;;;;;;AAgBO,MAAMA,2BAA2B;IACpC,MAAMC,2BAA2B,IAAIC,cAA8B,OAAMC;QACrE,MAAMC,gBAAgBD,QAAQ,SAAS,CAAC,OAAO,CAACE;QAChD,MAAMC,WAAWH,QAAQ,SAAS,CAAC,OAAO,CAACI;QAE3C,IAAI,CAACH,cAAc,SAAS,IACxB;QAGJ,MAAMD,QAAQ,QAAQ,CAAC,oBAAoB,CAAC;YACxC,MAAMK,YAAY,MAAMF,SAAS,OAAO,CAACG;YACzCN,QAAQ,SAAS,CAAC,gBAAgB,CAACO,WAAsBF,UAAU,KAAK;QAC5E;QAEAG,qBAAqB,QAAQ,CAACR,QAAQ,SAAS;QAC/CS,mBAAmB,QAAQ,CAACT,QAAQ,SAAS;IACjD;IAEAF,yBAAyB,IAAI,GAAG;IAEhC,MAAMY,eAAeC,8BAA8BX,CAAAA;QAC/CA,QAAQ,SAAS,CAAC,QAAQ,CAACY;IAC/B;IAEA,OAAO;QAACd;QAA0BY;KAAa;AACnD;AAEO,MAAMG,2BAA2B,IAC7BC;AAGJ,MAAMC,sBAAsB,IACxB;QACHJ,8BAA8BX,CAAAA;YAC1BgB,qBAAqB,QAAQ,CAAChB,QAAQ,SAAS;QACnD;WACGiB;KACN"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { setupAssetDelivery } from \"./delivery/setupAssetDelivery.js\";\nimport { createRegisterExtensionPlugin } from \"@webiny/handler\";\nimport { AssetDeliveryFeature } from \"~/features/assetDelivery/feature.js\";\n\nexport * from \"./delivery/index.js\";\n\nexport const createAssetDelivery = () => {\n return [\n createRegisterExtensionPlugin(context => {\n AssetDeliveryFeature.register(context.container);\n }),\n ...setupAssetDelivery()\n ];\n};\n\nexport { FileManagerAppFeature } from \"./FileManagerAppFeature.js\";\nexport { AssetDeliveryRoute } from \"./delivery/AssetDeliveryRoute.js\";\n"],"names":["createAssetDelivery","createRegisterExtensionPlugin","context","AssetDeliveryFeature","setupAssetDelivery"],"mappings":";;;;AAMO,MAAMA,sBAAsB,IACxB;QACHC,8BAA8BC,CAAAA;YAC1BC,qBAAqB,QAAQ,CAACD,QAAQ,SAAS;QACnD;WACGE;KACN"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-file-manager",
3
- "version": "6.4.5",
3
+ "version": "6.6.0-alpha.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./index.js",
@@ -22,28 +22,35 @@
22
22
  ],
23
23
  "license": "MIT",
24
24
  "dependencies": {
25
- "@webiny/api": "6.4.5",
26
- "@webiny/api-core": "6.4.5",
27
- "@webiny/api-headless-cms": "6.4.5",
28
- "@webiny/background-tasks": "6.4.5",
29
- "@webiny/build-tools": "6.4.5",
30
- "@webiny/error": "6.4.5",
31
- "@webiny/feature": "6.4.5",
32
- "@webiny/handler": "6.4.5",
33
- "@webiny/handler-graphql": "6.4.5",
34
- "@webiny/plugins": "6.4.5",
35
- "@webiny/wcp": "6.4.5",
25
+ "@webiny/api": "6.6.0-alpha.0",
26
+ "@webiny/api-core": "6.6.0-alpha.0",
27
+ "@webiny/api-graphql": "6.6.0-alpha.0",
28
+ "@webiny/api-headless-cms": "6.6.0-alpha.0",
29
+ "@webiny/background-tasks": "6.6.0-alpha.0",
30
+ "@webiny/build-tools": "6.6.0-alpha.0",
31
+ "@webiny/di": "1.0.2",
32
+ "@webiny/error": "6.6.0-alpha.0",
33
+ "@webiny/event-handler-core": "6.6.0-alpha.0",
34
+ "@webiny/feature": "6.6.0-alpha.0",
35
+ "@webiny/handler": "6.6.0-alpha.0",
36
+ "@webiny/plugins": "6.6.0-alpha.0",
37
+ "@webiny/wcp": "6.6.0-alpha.0",
36
38
  "cache-control-parser": "2.2.0",
39
+ "graphql": "16.14.2",
40
+ "mime": "4.1.0",
41
+ "object-hash": "3.0.0",
42
+ "p-reduce": "3.0.0",
43
+ "sanitize-filename": "1.6.4",
37
44
  "zod": "4.4.3"
38
45
  },
39
46
  "devDependencies": {
40
47
  "@types/object-hash": "3.0.6",
41
- "@webiny/handler-aws": "6.4.5",
42
- "@webiny/project-utils": "6.4.5",
43
- "@webiny/utils": "6.4.5",
44
- "@webiny/wcp": "6.4.5",
48
+ "@webiny/api-core-testing": "6.6.0-alpha.0",
49
+ "@webiny/project-utils": "6.6.0-alpha.0",
50
+ "@webiny/utils": "6.6.0-alpha.0",
51
+ "@webiny/wcp": "6.6.0-alpha.0",
45
52
  "rimraf": "6.1.3",
46
- "typescript": "6.0.3"
53
+ "typescript": "7.0.2"
47
54
  },
48
55
  "publishConfig": {
49
56
  "access": "public"
@@ -1,3 +0,0 @@
1
- import { GraphQLSchemaPlugin } from "@webiny/handler-graphql";
2
- import type { ApiCoreContext } from "@webiny/api-core/types/core.js";
3
- export declare const createBaseSchema: () => GraphQLSchemaPlugin<ApiCoreContext>;